WEBVTT

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

00:00:15.935 --> 00:00:16.585
<v Wes>My name is Wes.

00:00:16.585 --> 00:00:17.495
<v Brent>And my name is Brent.

00:00:18.221 --> 00:00:22.515
<v Chris>Hello, gentlemen. Well, coming up on the episode this week, the kernel release

00:00:22.515 --> 00:00:24.630
<v Chris>that deprecates our childhood has landed.

00:00:24.891 --> 00:00:27.825
<v Chris>There's a lot to like. There's one thing that really stings,

00:00:27.825 --> 00:00:31.805
<v Chris>but 7.3 is looking like such a banger. I'm not sure if I'm even going to care.

00:00:31.805 --> 00:00:32.757
<v Chris>We'll tell you more about that.

00:00:33.018 --> 00:00:36.658
<v Chris>Then, how sync things saved the day this week.

00:00:37.029 --> 00:00:39.328
<v Chris>Plus, we have some great boosts and picks that you're going to love.

00:00:39.984 --> 00:00:42.925
<v Chris>and a lot more. So before we get into all of that, let's say time-appropriate

00:00:42.925 --> 00:00:46.056
<v Chris>greetings to that virtual lug. Hello, my room.

00:00:46.747 --> 00:00:49.015
<v Mumble>Hey, Chris. Hello, Brent.

00:00:49.015 --> 00:00:51.843
<v Chris>Hello, and hello up there in the quiet listening. Nice to see you up there.

00:00:52.430 --> 00:00:55.885
<v Chris>You guys looking good up there. Handsome as ever. Go say good morning to our

00:00:55.885 --> 00:01:01.461
<v Chris>friends over at Define Networking as well. Define.net slash unplugged. Go meet Manage Nebula.

00:01:02.198 --> 00:01:06.029
<v Chris>Decentralized VPN built on the open-source Nebula platform that we love and use.

00:01:06.435 --> 00:01:11.045
<v Chris>Nebula is so awesome. Oh, I'm so, so grateful for Nebula, especially as I have

00:01:11.045 --> 00:01:16.475
<v Chris>been having issues with other mesh networks. It really is so superior and simple

00:01:16.475 --> 00:01:20.083
<v Chris>in its way and in its design too, yet extremely secure.

00:01:20.460 --> 00:01:26.172
<v Chris>And I love that I have my own lighthouse, so I completely control the infrastructure. I own everything.

00:01:26.556 --> 00:01:29.835
<v Chris>But like friends and family, I can hook them up with Define Networking's managed

00:01:29.835 --> 00:01:33.045
<v Chris>Nebula. They automatically provision a lighthouse now for people,

00:01:33.045 --> 00:01:34.131
<v Chris>but you can also run your own.

00:01:34.741 --> 00:01:36.871
<v Chris>It's really great. It's a great company. It's a great product.

00:01:37.126 --> 00:01:40.275
<v Chris>It's open source, independently audited, and it's built with modern encryption.

00:01:40.275 --> 00:01:43.901
<v Chris>So go get started. Up to 100 hosts, absolutely free. No credit card required.

00:01:44.290 --> 00:01:47.815
<v Chris>Go to defined.net slash unplugged. Redefine your VPN experience.

00:01:47.815 --> 00:01:52.579
<v Chris>See why I love it. Own your infrastructure. Defined.net slash unplugged.

00:01:52.974 --> 00:01:54.826
<v Chris>Thank you to Defined for sponsoring the Unplugged program.

00:01:57.803 --> 00:02:04.061
<v Chris>Well, with the release of Linux 7.2, it is the end of AppleTalk and it is the

00:02:04.061 --> 00:02:06.331
<v Chris>end of our sticker. We'll have to remove it from the store this week.

00:02:06.331 --> 00:02:10.620
<v Chris>So if you want to get your commemorate sticker, now's the time.

00:02:10.864 --> 00:02:12.901
<v Chris>It's like we're making a coin for AppleTalk, but it's a sticker.

00:02:14.111 --> 00:02:16.913
<v Chris>I'll not dwell on this. The audience knows how I feel about this.

00:02:17.284 --> 00:02:18.132
<v Wes>But get them while you can.

00:02:18.689 --> 00:02:23.721
<v Chris>Also, we wanted to make a mention of the passing of a longtime Samba contributor,

00:02:23.721 --> 00:02:27.007
<v Chris>Steve French. He passed away recently after dealing with an illness.

00:02:27.576 --> 00:02:30.816
<v Chris>He's been around forever. He's been contributing since 2002.

00:02:31.321 --> 00:02:34.391
<v Chris>He worked at Microsoft. He worked at IBM. He's worked in Azure.

00:02:35.001 --> 00:02:37.561
<v Chris>He worked on my favorite project, KSMBD.

00:02:39.105 --> 00:02:43.256
<v Chris>And so he had to step down for health reasons this week, and then he did pass away.

00:02:44.260 --> 00:02:45.141
<v Wes>Our condolences.

00:02:45.141 --> 00:02:51.400
<v Chris>Yeah, really. A longtime contributor. So our thoughts are with his family.

00:02:52.282 --> 00:02:55.972
<v Chris>And they do have a new maintainer stepping up for CIFS.

00:02:56.140 --> 00:03:00.861
<v Chris>So there will be. And I guess this individual has a history with NTFS, the rewrite.

00:03:00.861 --> 00:03:06.531
<v Wes>Yeah, we have Paulo Alcantara and someone we've mentioned multiple times on the show, Namjai Jian.

00:03:07.731 --> 00:03:13.911
<v Wes>Those folks are now co-maintaining CIFS, CIFS, which is Namjai's third file

00:03:13.911 --> 00:03:16.725
<v Wes>system, the NTFS rewrite, ex-fat, and now this.

00:03:17.207 --> 00:03:18.631
<v Chris>So it sounds like it's in pretty good hands.

00:03:19.151 --> 00:03:19.732
<v Wes>It does indeed.

00:03:20.254 --> 00:03:24.151
<v Chris>But we did want to note, because, you know, it's part of the community.

00:03:24.151 --> 00:03:26.936
<v Chris>And I think it's worth observing, and our thoughts are with the family.

00:03:27.522 --> 00:03:30.669
<v Chris>out there, and it is good to see the project continue to get support as well.

00:03:30.773 --> 00:03:32.761
<v Wes>This is how open source gets made.

00:03:32.761 --> 00:03:36.581
<v Chris>Mm-hmm. Mm-hmm. All right. Well, then, let's get into Linux,

00:03:36.581 --> 00:03:38.174
<v Chris>speaking of the kernel, Linux 7.2.

00:03:40.770 --> 00:03:45.307
<v Chris>So just as we finished up the live stream, I think Linus probably got done listening

00:03:45.307 --> 00:03:47.607
<v Chris>to the show, clearly. And then decided to release.

00:03:47.607 --> 00:03:48.597
<v Wes>Oh, better get some work done.

00:03:48.597 --> 00:03:51.777
<v Chris>Yeah. Pushed out Linux 7.2. I don't think he wants to push it out before the

00:03:51.777 --> 00:03:54.463
<v Chris>show's over because he doesn't want to be distracted. I understand that.

00:03:54.660 --> 00:03:55.827
<v Wes>It might distract us, too.

00:03:56.448 --> 00:04:00.857
<v Chris>And this was classified as a very busy kernel cycle release due to increased

00:04:00.857 --> 00:04:03.182
<v Chris>patch and reporting churn due to AI-assisted development.

00:04:04.117 --> 00:04:05.597
<v Chris>We do have a quote from Linus. You want to take it?

00:04:06.143 --> 00:04:10.317
<v Wes>Well, this last week of the release was, once again, bigger than I would have wished for.

00:04:10.657 --> 00:04:14.977
<v Wes>But hey, with the whole quote-unquote new normal thing, if I delayed releases

00:04:14.977 --> 00:04:17.957
<v Wes>for that reason, we'd probably never have a release at all.

00:04:18.477 --> 00:04:22.207
<v Wes>There are a number of fairly late reverts. The DRM scheduling reverts stand

00:04:22.207 --> 00:04:24.341
<v Wes>out, but there's a few other ones in here too.

00:04:24.695 --> 00:04:27.441
<v Wes>It may not be pretty, but it's the correct way to deal with,

00:04:27.836 --> 00:04:32.648
<v Wes>oh, that code wasn't ready and caused problems. People will be trying that again later.

00:04:33.095 --> 00:04:37.106
<v Wes>But while the DRM reverts stand out and are some of the bigger patches in here,

00:04:37.321 --> 00:04:40.457
<v Wes>there's a lot of small fixes all over, mostly in drivers, but networking remained

00:04:40.457 --> 00:04:42.076
<v Wes>fairly active this last week, too.

00:04:42.226 --> 00:04:45.466
<v Wes>And then there are a few random patches to architecture files and the perf core.

00:04:46.052 --> 00:04:49.512
<v Wes>With this, the merge window for 7.3 obviously opens tomorrow,

00:04:49.761 --> 00:04:52.111
<v Wes>and I already have 40 pending pull requests.

00:04:52.326 --> 00:04:55.083
<v Wes>I appreciate all the timely people. You know who you are.

00:04:55.310 --> 00:04:59.507
<v Chris>Yeah, we'll get into 7.3 here in just a moment. You know, when Linus calls out

00:04:59.507 --> 00:05:03.317
<v Chris>a subsystem, it's probably worth paying attention. When he calls out networking

00:05:03.317 --> 00:05:05.317
<v Chris>specifically, it's probably worth paying attention.

00:05:06.257 --> 00:05:09.777
<v Chris>So I think we'll get to that. But the thing that you and I have been watching, And,

00:05:11.313 --> 00:05:13.791
<v Chris>Something that I think we talked about before on the show, so we'll just give

00:05:13.791 --> 00:05:18.807
<v Chris>a brief mention, is there's been some real improvements to, quote-unquote, schedulers.

00:05:19.881 --> 00:05:21.661
<v Chris>CPU schedulers, GPU schedulers.

00:05:21.661 --> 00:05:23.641
<v Wes>The scheduling system, all kinds of stuff.

00:05:23.641 --> 00:05:30.777
<v Chris>Scheduling got a big work, a lot of work in 7.2. So we have a now more cache-aware CPU scheduler.

00:05:31.166 --> 00:05:34.545
<v Wes>Yeah. This is a pretty big deal.

00:05:34.812 --> 00:05:37.731
<v Wes>And it's almost surprising in a way that we haven't had it already,

00:05:37.731 --> 00:05:43.113
<v Wes>right? Like, caches are a huge part of CPU and computer performance, of course.

00:05:43.502 --> 00:05:47.091
<v Wes>And these days, especially on systems with, like, multiple dies,

00:05:47.091 --> 00:05:51.301
<v Wes>right, it's not just one giant CPU, right? It's, like, multiple CPUs,

00:05:51.301 --> 00:05:54.379
<v Wes>each with their own last-level cache right next to them.

00:05:54.658 --> 00:05:58.391
<v Wes>And so understanding, like, where is a process or a thread running,

00:05:58.391 --> 00:06:02.851
<v Wes>and then what caches is it near, and then what data is in those caches can be a big deal.

00:06:02.851 --> 00:06:05.151
<v Wes>So if you think about something like a database, right, maybe you're doing a

00:06:05.151 --> 00:06:08.741
<v Wes>query where you have a lot of working memory that is, the whole point is you

00:06:08.741 --> 00:06:11.691
<v Wes>want a query optimizer that can parallelize things, right? So you're not waiting

00:06:11.691 --> 00:06:13.315
<v Wes>on trying to seriously do stuff.

00:06:13.593 --> 00:06:15.654
<v Wes>So maybe you have a list of things you're trying to look up.

00:06:15.805 --> 00:06:19.561
<v Wes>Well, both subqueries are going to need to be accessing that data, right?

00:06:19.822 --> 00:06:23.299
<v Wes>So if one of the subquery threads is running on a different CPU core,

00:06:23.595 --> 00:06:27.891
<v Wes>suddenly it's got to do the inter-core communication to go get the data from the other cache.

00:06:28.239 --> 00:06:31.391
<v Wes>So you don't really want to do that. So now the goal is upgrade the scheduling

00:06:31.391 --> 00:06:35.701
<v Wes>system so that it can figure out, like it starts tracking stuff in a multiple

00:06:35.701 --> 00:06:38.404
<v Wes>way. So one is just obviously sort of threads of the same thing, right?

00:06:38.607 --> 00:06:42.391
<v Wes>But it can figure out when things that are running need to share the same cache

00:06:42.391 --> 00:06:45.041
<v Wes>and then try to schedule them on the same cores appropriately.

00:06:45.041 --> 00:06:45.474
<v Chris>Woo!

00:06:46.032 --> 00:06:47.396
<v Chris>That's a nice one.

00:06:48.096 --> 00:06:52.026
<v Wes>There's multiple steps to it. They're learning a lot, or they're taking advantage

00:06:52.026 --> 00:06:54.066
<v Wes>of a lot of neat stuff that happens.

00:06:54.066 --> 00:06:57.536
<v Wes>Like the hardware actually has cache monitoring stuff built in.

00:06:57.536 --> 00:07:01.846
<v Wes>So then the first level is basic structural stuff. It understands what the system

00:07:01.846 --> 00:07:05.581
<v Wes>has and the basic schedule threads together.

00:07:05.946 --> 00:07:10.046
<v Wes>But then it can actually go check to see what the layout the hardware tells

00:07:10.046 --> 00:07:13.506
<v Wes>it is doing in real time. And it can even go sample the misses to figure out

00:07:13.506 --> 00:07:17.476
<v Wes>like, oh, we tried to hit something in the cache, but that's actually on the other system.

00:07:17.476 --> 00:07:17.846
<v Chris>Really?

00:07:17.846 --> 00:07:22.486
<v Wes>We might need to start considering if this continues actually moving it to the other core.

00:07:22.486 --> 00:07:22.816
<v Brent>Wow.

00:07:23.116 --> 00:07:25.046
<v Wes>Now you don't want to do that too much, right? Because then you could just be

00:07:25.046 --> 00:07:28.516
<v Wes>bouncing around all the time. That could be a problem. So it's a delicate balance,

00:07:28.516 --> 00:07:30.196
<v Wes>as is everything in scheduling.

00:07:30.890 --> 00:07:34.014
<v Wes>But this is a huge upgrade for just it being really smart.

00:07:34.490 --> 00:07:39.176
<v Wes>Now, it will matter more on, you know, big systems with lots of CPU cores and

00:07:39.176 --> 00:07:43.816
<v Wes>that kind of thing. So you might not see as much of an impact on your single-core laptop or whatever.

00:07:44.356 --> 00:07:44.509
<v Chris>Yeah.

00:07:45.328 --> 00:07:47.783
<v Wes>But it's a big upgrade for our friend, the Colonel.

00:07:47.957 --> 00:07:52.384
<v Chris>Linus had made a comment that it may not be pretty, but it's the correct way

00:07:52.384 --> 00:07:55.494
<v Chris>to deal with, oh, that code wasn't ready and caused problems.

00:07:55.494 --> 00:07:57.175
<v Chris>People will probably try that again later.

00:07:57.698 --> 00:08:00.274
<v Chris>Is he referring to the GPU scheduler stuff that got reverted?

00:08:00.274 --> 00:08:00.884
<v Wes>Yes.

00:08:00.884 --> 00:08:01.544
<v Chris>Yeah, okay.

00:08:01.544 --> 00:08:09.621
<v Wes>7.2 was meant to switch the DRM scheduler from first in, first out to a new CFS-style FAIR policy.

00:08:09.946 --> 00:08:14.166
<v Wes>So we already have this on the CPU side. This was bringing it over to the GPU side.

00:08:15.094 --> 00:08:20.934
<v Wes>But then an RX 9070 XT owner hit a sustained 100% GPU load.

00:08:20.934 --> 00:08:21.304
<v Chris>Uh-oh.

00:08:21.304 --> 00:08:25.894
<v Wes>Yeah, games dropped to 10 FPS. The Wayland session froze. Had to reboot to recover.

00:08:27.074 --> 00:08:29.494
<v Wes>And then here's the part that maybe wasn't as good of an idea.

00:08:30.074 --> 00:08:33.427
<v Wes>When this happened, it wasn't just that the default was swapped.

00:08:33.752 --> 00:08:37.254
<v Wes>It was the only schedule. The other stuff was ripped out, and all you were left

00:08:37.254 --> 00:08:40.806
<v Wes>with was fair. So the first in, first out, and the RR policy,

00:08:41.374 --> 00:08:43.807
<v Wes>those weren't there. There was no runtime escape hatch.

00:08:44.454 --> 00:08:49.584
<v Wes>So five days before the release, someone from Egalia shipped a 20-patch revert,

00:08:49.584 --> 00:08:53.599
<v Wes>smoke-tested on a Steam Deck, and it ships first in, first out.

00:08:53.802 --> 00:08:58.457
<v Wes>As the defaults again, sort of unrips things out, but now it still adds fare

00:08:58.660 --> 00:09:02.823
<v Wes>as an opt-in experiment. So instead of doing a big change to making this default,

00:09:03.674 --> 00:09:05.226
<v Wes>now we're still in sort of test mode.

00:09:05.621 --> 00:09:07.854
<v Chris>All right. That makes sense. Thank you. Thank you.

00:09:08.314 --> 00:09:12.384
<v Wes>What is nice, though, is the reporter, AB, tested some of the fixes himself.

00:09:12.384 --> 00:09:17.643
<v Wes>This is a very active collaboration process, including, quote,

00:09:17.916 --> 00:09:19.309
<v Wes>the patch Claude gave me.

00:09:21.119 --> 00:09:24.524
<v Chris>Also, I think MongoDB users will be happy to hear this.

00:09:24.864 --> 00:09:29.044
<v Chris>There was some work in Linux's memory management. The multi-gen LRU memory reclaim

00:09:29.044 --> 00:09:30.140
<v Chris>system has been cleaned up.

00:09:30.506 --> 00:09:34.662
<v Chris>And as a result, kernel developers have reported performance improvements approaching,

00:09:34.830 --> 00:09:40.415
<v Chris>so, you know, results will vary, but approaching 30% in some MongoDB workloads,

00:09:40.984 --> 00:09:43.804
<v Chris>along with fewer unexpected out-of-memory situations.

00:09:43.804 --> 00:09:48.111
<v Wes>Ooh, I like that one. You know, some of us have a lot of tabs, and it gets dicey.

00:09:51.164 --> 00:09:55.181
<v Chris>I, my, my bet is not everybody's going to see that 30%, but heck,

00:09:55.565 --> 00:09:59.785
<v Chris>even a 10% is pretty great. Just by a better memory reclaim.

00:10:00.400 --> 00:10:03.244
<v Chris>And Brent, I know you're going to love to see this one. Faster,

00:10:03.584 --> 00:10:05.824
<v Chris>leaner swap in Linux now.

00:10:06.524 --> 00:10:07.064
<v Brent>Delicious.

00:10:08.243 --> 00:10:09.839
<v Chris>Are you guys still using the swap file?

00:10:10.390 --> 00:10:13.990
<v Wes>Well, I have one. I don't know that it gets used a ton.

00:10:14.297 --> 00:10:18.514
<v Chris>That's what I mean, really, is are you actually, uh, like when you install your

00:10:18.514 --> 00:10:23.173
<v Chris>Linux box, are you deploying a swap file? Not are you actively using it necessarily, but...

00:10:23.423 --> 00:10:26.624
<v Chris>I mean, any system that runs for a really long time generally swaps a few things out.

00:10:26.624 --> 00:10:31.654
<v Wes>Yeah. Yeah, I have 3.7 gigs used, 12 gigs free in MySwap right now.

00:10:32.194 --> 00:10:35.054
<v Brent>MySwap is zero currently, which is, I think, a little unusual,

00:10:35.054 --> 00:10:37.084
<v Brent>but I use it heavily for hibernation.

00:10:37.404 --> 00:10:40.489
<v Brent>Like, sometimes when I'm traveling with a laptop and stuff, I want to maintain,

00:10:40.982 --> 00:10:43.094
<v Brent>as much battery power as possible depending on what I'm doing.

00:10:43.094 --> 00:10:45.764
<v Brent>Maybe I'm going on a train at some point of the trip or something like that,

00:10:45.764 --> 00:10:51.082
<v Brent>And so having hibernate available for me is quite valuable. So that's the main reason I have it.

00:10:52.024 --> 00:10:55.104
<v Chris>Yeah. That's one of the reasons I have one too. Uh, I also find it better for

00:10:55.104 --> 00:10:57.444
<v Chris>crash debugging and also, um,

00:10:58.856 --> 00:11:02.702
<v Chris>Some of my systems only have 16 gigs of rewrite, so I do actually get the swap out.

00:11:04.642 --> 00:11:08.905
<v Chris>So it's good to see that there is ongoing rewrite of the swap table infrastructure in Linux 7.2.

00:11:09.386 --> 00:11:12.612
<v Chris>The improvements reduce the amount of static metadata Linux needs to keep around

00:11:12.612 --> 00:11:16.212
<v Chris>for swap and improves how that metadata itself is managed.

00:11:16.212 --> 00:11:21.092
<v Wes>Nice. Yeah, one example here. A system with a 1TB swap device can save roughly

00:11:21.092 --> 00:11:25.263
<v Wes>512 MB of RAM just from the reduced metadata overhead.

00:11:26.111 --> 00:11:29.564
<v Wes>Which is, you know, nice. It'll add up over time.

00:11:30.656 --> 00:11:33.372
<v Chris>That's a massive savings with how expensive RAM is right now.

00:11:33.372 --> 00:11:36.102
<v Chris>That's no joke. So again, a system with one terabyte swap device,

00:11:36.102 --> 00:11:37.355
<v Chris>which is a pretty big swap device.

00:11:38.980 --> 00:11:43.744
<v Chris>will save roughly 512 megabytes of RAM just from the reduced metadata overhead.

00:11:45.247 --> 00:11:48.736
<v Chris>Does anybody out there in the audience have a terabyte swap device?

00:11:48.980 --> 00:11:50.190
<v Chris>Boost.Jupyter Broadcasting.

00:11:50.190 --> 00:11:50.660
<v Brent>Yeah, right.

00:11:50.660 --> 00:11:52.340
<v Chris>You've got to tell them. And why?

00:11:52.340 --> 00:11:52.970
<v Brent>How'd you get there?

00:11:52.970 --> 00:11:57.119
<v Chris>Mm-hmm, mm-hmm, mm-hmm. All right, we've got a couple other items.

00:11:57.293 --> 00:12:00.990
<v Chris>There's one I really want to talk about. Is there a couple before we get to

00:12:00.990 --> 00:12:04.800
<v Chris>the file system stuff that you want to talk about? I know we have faster pipes.

00:12:06.500 --> 00:12:11.400
<v Wes>Yeah, we do have faster pipes. We covered a bit about this in 6.7.2.

00:12:11.400 --> 00:12:16.040
<v Wes>There was basically going to be improvements to make piping things between processes

00:12:16.040 --> 00:12:18.649
<v Wes>faster, kind of all around, especially on the right path.

00:12:19.021 --> 00:12:22.254
<v Wes>And now we have a few numbers under memory pressure in particular.

00:12:22.880 --> 00:12:28.800
<v Wes>Throughput is up 21 to 48% and right latency is down 17 to 33%.

00:12:28.800 --> 00:12:30.630
<v Chris>Whoa, this is a, yeah.

00:12:30.630 --> 00:12:35.390
<v Wes>Yeah, and I mean like pipes and, you know, FIFOs are used all over the place.

00:12:35.400 --> 00:12:35.989
<v Chris>Yeah, yeah.

00:12:36.134 --> 00:12:40.120
<v Brent>I find it so crazy how, you know, Linux isn't just a baby anymore,

00:12:40.120 --> 00:12:46.250
<v Brent>and yet we're getting insane numbers of performance upgrades in seemingly every

00:12:46.250 --> 00:12:48.782
<v Brent>single version. It's just bonkers.

00:12:49.223 --> 00:12:52.920
<v Chris>It really is like, I wonder, like, was this all just there for the taking all

00:12:52.920 --> 00:12:54.587
<v Chris>along? And you just, you work through it, I suppose.

00:12:55.579 --> 00:12:58.970
<v Chris>Brent, I'd like to see you test this next one somehow. USB 4.0 stream.

00:12:58.970 --> 00:13:03.640
<v Chris>So in 7.2, you now, two machines can send raw streams of data directly over

00:13:03.640 --> 00:13:05.378
<v Chris>USB 4.0 or a Thunderbolt cable.

00:13:05.523 --> 00:13:07.526
<v Brent>Well, who needs Ethernet anymore, I say?

00:13:08.042 --> 00:13:11.261
<v Chris>Well, it is actually pretty fast. It is quite fast, actually.

00:13:11.261 --> 00:13:14.051
<v Wes>It's neat, too, because before, you know, you could obviously do this and then,

00:13:14.051 --> 00:13:17.561
<v Wes>like, stand up your own little local network or whatever and set up IPs and,

00:13:17.561 --> 00:13:19.251
<v Wes>you know, get it going. You could do it.

00:13:19.448 --> 00:13:23.611
<v Wes>But this, you just get, like, a slash dev slash TB stream zero device.

00:13:24.051 --> 00:13:28.331
<v Wes>And you can just cat and read to write or DD or whatever, and it just shoots it across the USB cable.

00:13:28.891 --> 00:13:31.171
<v Chris>It's going to be so fast. That's going to be, you know, because you don't have

00:13:31.171 --> 00:13:32.541
<v Chris>the overhead of the protocol of Ethernet.

00:13:32.541 --> 00:13:34.011
<v Brent>Nice. Oh, my goodness.

00:13:34.011 --> 00:13:38.361
<v Wes>And it can also still coexist with normal Thunderbolt networking.

00:13:38.361 --> 00:13:40.305
<v Wes>So it's not like it's the only thing you can do on the cable.

00:13:40.815 --> 00:13:43.891
<v Chris>Okay. All right. Well, while we're talking about performance,

00:13:43.891 --> 00:13:47.241
<v Chris>I think the thing that I'm probably the most excited about because it'll have

00:13:47.241 --> 00:13:52.661
<v Chris>the biggest practical impact for all of us is ButterFS is getting faster in

00:13:52.661 --> 00:13:55.136
<v Chris>this release. ButterFS is getting faster.

00:13:55.636 --> 00:13:58.491
<v Chris>We talked about large folios in the last episode.

00:13:58.491 --> 00:14:04.186
<v Wes>They're enabled by default now. Yeah. There's also experimental support for huge folios up to 2 megs.

00:14:04.302 --> 00:14:07.561
<v Chris>But I think the big wins come from better direct I.O. performance,

00:14:07.561 --> 00:14:11.361
<v Chris>faster sequential writes, and a new interface that exposes the raw checksums

00:14:11.361 --> 00:14:14.251
<v Chris>to user space, so that way you can build tooling around that and all of that.

00:14:14.251 --> 00:14:18.304
<v Wes>Yeah, including things like perhaps deduplication, Brad. Oh, hello.

00:14:18.751 --> 00:14:22.426
<v Chris>So, you know, this is the beginning of an API, right? This is the beginning of an API.

00:14:23.231 --> 00:14:27.521
<v Chris>But the direct I.O. performance and the sequential writes are resulting in real

00:14:27.521 --> 00:14:29.011
<v Chris>performance improvements for ButterFS. Amazing.

00:14:29.431 --> 00:14:31.905
<v Chris>I think we'll probably see Laravel benchmark that pretty soon,

00:14:32.300 --> 00:14:34.831
<v Chris>and I'm going to keep an eye out for that. So I think that's probably the thing

00:14:34.831 --> 00:14:36.420
<v Chris>in 7.2 I'm the most excited about.

00:14:36.774 --> 00:14:40.651
<v Chris>So people upgrading soon on rolling releases, you know, do they?

00:14:40.651 --> 00:14:43.119
<v Chris>I don't know. You probably have to do something to upgrade your ButterFS format. I don't know.

00:14:43.241 --> 00:14:46.347
<v Chris>But it's something to keep an eye on. Something I'll probably play with, and I'll update you.

00:14:46.985 --> 00:14:49.870
<v Brent>There's one here I'm excited about, inline storage encryption.

00:14:51.001 --> 00:14:55.691
<v Brent>There's a new device mapper target called DMInlineCrypt.

00:14:55.691 --> 00:14:59.411
<v Brent>And it's designed to take advantage of hardware that can perform inline block

00:14:59.411 --> 00:15:04.963
<v Brent>device encryption rather than doing all of that encryption through the traditional DM crypt path.

00:15:05.916 --> 00:15:08.865
<v Brent>Based partly on work that happened in Android, of all things,

00:15:08.865 --> 00:15:12.965
<v Brent>and could eventually become a useful alternative to DMCrypt on hardware with

00:15:12.965 --> 00:15:16.882
<v Brent>dedicated encryption support. You know how I like that encryption. You make sense on it.

00:15:17.505 --> 00:15:21.605
<v Wes>On mobile, you probably do have the opportunity to have custom stuff and not

00:15:21.605 --> 00:15:22.919
<v Wes>as much CPU as you might want.

00:15:23.151 --> 00:15:26.975
<v Chris>And they have been tested in the fire. Android did not start super strong in

00:15:26.975 --> 00:15:28.788
<v Chris>this area, and they've made a lot of progress.

00:15:28.945 --> 00:15:32.705
<v Wes>And, hey, look, it turns out that having Linux on your phone actually pays dividends

00:15:32.705 --> 00:15:36.228
<v Wes>that the whole kernel could use, proving out the entire model that we've been saying all along.

00:15:36.390 --> 00:15:38.305
<v Chris>It's also worth pointing out, not that you guys don't know this,

00:15:38.305 --> 00:15:41.665
<v Chris>but it's worth just reminding us all that these tools like this,

00:15:41.665 --> 00:15:44.651
<v Chris>if they're being actively supported and contributed to by a large,

00:15:44.883 --> 00:15:46.285
<v Chris>well-financed group of people,

00:15:46.925 --> 00:15:51.085
<v Chris>it's probably something to consider just because you want tools in this category

00:15:51.085 --> 00:15:52.871
<v Chris>that are being actively supported and maintained.

00:15:53.862 --> 00:15:56.419
<v Chris>Um, there's a few other things in here, but the one that really jumped out to

00:15:56.419 --> 00:16:00.765
<v Chris>me is faster proc. Like when we're talking about, this is really the performance kernel.

00:16:01.619 --> 00:16:02.719
<v Wes>Yeah, it really is, right?

00:16:02.719 --> 00:16:05.909
<v Chris>This is silly, but like, what? Faster slash proc? What?

00:16:05.909 --> 00:16:07.133
<v Brent>I didn't know that was an issue.

00:16:07.809 --> 00:16:08.089
<v Chris>Yeah.

00:16:08.089 --> 00:16:12.029
<v Wes>Proc exposes a whole bunch of metadata and info about like the running kernel

00:16:12.029 --> 00:16:16.639
<v Wes>and all that. And there's, um, there's a bunch of programs, especially command

00:16:16.639 --> 00:16:19.294
<v Wes>line programs that want to go read that stuff to actually go.

00:16:19.492 --> 00:16:22.209
<v Wes>Right. Cause it's a way that you don't have to have use this calls to try to

00:16:22.209 --> 00:16:24.829
<v Wes>get the same information. you can get it right out of the file system.

00:16:24.829 --> 00:16:27.154
<v Wes>It's super handy. It's standard Unix. Yeah, right?

00:16:28.455 --> 00:16:32.379
<v Wes>So there's a bunch of stuff that uses it. And so if you make that faster,

00:16:32.379 --> 00:16:33.529
<v Wes>you make all those things faster.

00:16:33.529 --> 00:16:37.619
<v Chris>Yeah, absolutely. It's like Brent said. It's like we're just seeing these optimizations

00:16:37.619 --> 00:16:38.729
<v Chris>in areas after all these years.

00:16:39.429 --> 00:16:42.838
<v Brent>But who thinks Steven go down there and be like, huh, what can I do here?

00:16:42.960 --> 00:16:46.819
<v Chris>A clanker? I don't know. Maybe a clanker? I don't know. Some autist,

00:16:46.819 --> 00:16:48.789
<v Chris>I don't know. Maybe like somebody who's really passionate?

00:16:48.789 --> 00:16:51.779
<v Wes>I don't know. I've got a few Pats and such rock I can tell you guys about.

00:16:51.779 --> 00:16:52.109
<v Brent>There you go.

00:16:52.209 --> 00:16:53.269
<v Chris>Uh-huh, uh-huh.

00:16:54.749 --> 00:16:59.009
<v Wes>Well, we should probably mention we now have the safer open at command because

00:16:59.009 --> 00:17:00.279
<v Wes>we have a sticker based on it.

00:17:00.279 --> 00:17:00.719
<v Chris>Right.

00:17:00.719 --> 00:17:02.959
<v Wes>Or we only open it if it's a regular file.

00:17:02.959 --> 00:17:06.249
<v Chris>That's right. Only regular files here. Only regular files.

00:17:06.249 --> 00:17:10.029
<v Wes>And this has shown up in a few different vulnerabilities. This prevents an application

00:17:10.029 --> 00:17:14.159
<v Wes>from unexpectedly being redirected to something like a pipe or a device node

00:17:14.159 --> 00:17:15.880
<v Wes>when what you want is like a text file.

00:17:16.541 --> 00:17:18.519
<v Chris>Yeah. I think that's a good thing

00:17:18.519 --> 00:17:21.809
<v Chris>to call out. There's so many things we could get into here with this.

00:17:22.129 --> 00:17:27.049
<v Chris>It's like this kernel isn't a headliner banger feature. This is the kernel feature.

00:17:27.049 --> 00:17:32.679
<v Chris>It's all these things from like CPU schedulers to GPU schedulers to file systems

00:17:32.679 --> 00:17:35.296
<v Chris>to drivers and networking that have seen improvements.

00:17:36.312 --> 00:17:39.209
<v Chris>Or just new little features like the fact that if you had Thunderbolt or USB

00:17:39.209 --> 00:17:42.808
<v Chris>4, you can now plug machines directly into them. Like that just kind of got a little bit better.

00:17:43.336 --> 00:17:45.879
<v Chris>So it's, I mean, 7.2 is a really good release.

00:17:47.049 --> 00:17:49.977
<v Chris>Is there any word if there's LTS talk around this one?

00:17:50.959 --> 00:17:55.694
<v Wes>I don't know. That's a good question. I've seen discussion around a few possibilities

00:17:55.694 --> 00:17:59.484
<v Wes>from this one, or maybe 7.3 or 7.4, perhaps.

00:17:59.484 --> 00:18:02.654
<v Chris>Well, 7.3 would be a wild one to make an LTS.

00:18:02.654 --> 00:18:03.774
<v Wes>There's a lot going on.

00:18:03.774 --> 00:18:06.434
<v Chris>Let's just talk about this really quick, because it's an early development.

00:18:06.434 --> 00:18:08.995
<v Chris>The merge window just opened last Sunday, obviously.

00:18:09.489 --> 00:18:12.824
<v Chris>But there's a lot more scheduler work in here. A lot more scheduler work.

00:18:13.564 --> 00:18:19.474
<v Wes>Yeah. Right now, there's some focus, particularly on how scheduling interacts

00:18:19.474 --> 00:18:23.554
<v Wes>with C groups, because, of course, the control group mechanism is involved in

00:18:23.554 --> 00:18:27.174
<v Wes>maintaining a lot of access to different resources, which impacts how you want to schedule things.

00:18:27.174 --> 00:18:30.873
<v Wes>So instead of having to traverse a bunch of hierarchical run queues,

00:18:31.895 --> 00:18:36.475
<v Wes>it's moving to a single run queue with new methods for distributing C group weights.

00:18:36.695 --> 00:18:44.544
<v Wes>there's also a new c group mode knob um you can do smp up max concur tasks uh

00:18:44.544 --> 00:18:48.724
<v Wes>concurs the new default and this is basically a mode you can choose so that you pick how,

00:18:49.264 --> 00:18:52.824
<v Wes>how much cpu weight right like how much your share of the cpu is going to be

00:18:53.224 --> 00:18:56.324
<v Wes>gets but divided between the different okay that seems great,

00:18:57.094 --> 00:18:59.794
<v Wes>especially if you care a lot about you know scheduling things and especially

00:18:59.794 --> 00:19:01.624
<v Wes>c groups are used a lot in our buddy containers.

00:19:02.424 --> 00:19:03.244
<v Chris>Yes in our friend.

00:19:04.184 --> 00:19:07.634
<v Wes>Yeah the hierarchical version had a lot of long-standing oddities,

00:19:07.634 --> 00:19:12.714
<v Wes>including how nice, you know, the nice command priorities got handled across

00:19:12.714 --> 00:19:14.594
<v Wes>groups. So that might improve from some of this work, too.

00:19:14.594 --> 00:19:15.084
<v Chris>Oh, okay.

00:19:15.084 --> 00:19:20.114
<v Wes>Yeah. Early testing on an old Sandy Bridge machine paired with an RX 580 showed

00:19:20.114 --> 00:19:21.074
<v Wes>enough improvement that the

00:19:21.074 --> 00:19:24.364
<v Wes>work has been pitched partly as a win for gaming on lower-end hardware.

00:19:24.364 --> 00:19:25.074
<v Brent>Nice.

00:19:25.074 --> 00:19:28.174
<v Wes>So you might not start thinking about gaming on lower-end hardware,

00:19:28.174 --> 00:19:29.854
<v Wes>but that's where it ends up with the kernel sometimes.

00:19:29.854 --> 00:19:32.444
<v Chris>Well, I mean, a lot of those handheld devices, those little built,

00:19:32.444 --> 00:19:35.905
<v Chris>you know, purpose-built, run on Linux. Makes sense. Hmm.

00:19:36.456 --> 00:19:41.919
<v Chris>Okay. Now this next one, I can't even believe. So I'm going to say it out loud,

00:19:42.941 --> 00:19:44.184
<v Chris>but I still don't believe it. Okay.

00:19:46.029 --> 00:19:51.938
<v Chris>In Linux 7.3, in speaking of schedulers, there appears to be up to a 90%,

00:19:52.083 --> 00:19:57.408
<v Chris>I'm going to say that figure again, around 90% reduction in a nasty source of

00:19:57.408 --> 00:20:00.042
<v Chris>x86 scheduling latency.

00:20:00.836 --> 00:20:04.471
<v Chris>Here's what strikes me about this. Number one, 90% is a big number.

00:20:04.721 --> 00:20:10.708
<v Chris>Number two, x86 is a big platform. This isn't ARM. This isn't like some sort

00:20:10.708 --> 00:20:13.161
<v Chris>of maybe risk chip that nobody's using.

00:20:13.835 --> 00:20:19.187
<v Chris>This is x86. What? A 90% reduction in a nasty source of scheduling latency?

00:20:19.791 --> 00:20:22.352
<v Chris>Now, I realize this must be an edge case here or something, right?

00:20:22.352 --> 00:20:23.402
<v Chris>Because this is massive.

00:20:23.862 --> 00:20:26.162
<v Wes>Yeah, and part of it is just sort of how we've been doing things.

00:20:26.162 --> 00:20:30.642
<v Wes>So, like, back to, you know, you have multiple cores and you have multiple caches.

00:20:30.642 --> 00:20:33.352
<v Wes>And one of those things is the page cache, right? Sort of like how do you have

00:20:33.352 --> 00:20:37.151
<v Wes>the files, what you've copied off the disk to memory for working with.

00:20:37.862 --> 00:20:42.732
<v Wes>Well, those different page caches can get out of sync. And so you need to maintain

00:20:42.732 --> 00:20:44.471
<v Wes>coherence across all of these things.

00:20:44.837 --> 00:20:49.202
<v Wes>So you do what's called a TLB shootdown, which is where the one that figures

00:20:49.202 --> 00:20:52.632
<v Wes>out that something needs to be invalidated sends out interprocessor interrupts

00:20:52.632 --> 00:20:55.912
<v Wes>to all the other cores to say like, hey, you got to take this out of your cache

00:20:55.912 --> 00:20:57.462
<v Wes>and go get it fresh because it's no longer valid.

00:20:58.159 --> 00:21:03.812
<v Wes>Well, the calling CPU can wind up sitting with preemption disabled while waiting

00:21:03.812 --> 00:21:06.153
<v Wes>for the remote CPUs to finish that operation.

00:21:06.350 --> 00:21:10.562
<v Wes>And so ByteDance actually observed weights causing up to 16 milliseconds of

00:21:10.562 --> 00:21:13.972
<v Wes>scheduling latency on a 16-core system just from this.

00:21:14.662 --> 00:21:20.861
<v Wes>So Linux 7.3 changes that mechanism so CPUs can now be preempted while waiting in these situations.

00:21:21.210 --> 00:21:25.511
<v Wes>And in ByteDance further testing, the P99 maximum preemption-disabled interval

00:21:25.639 --> 00:21:30.922
<v Wes>fell to roughly 1.5 milliseconds, which the patch series described as producing

00:21:30.922 --> 00:21:35.202
<v Wes>as much as a 90% latency reduction. So there's your 90% in the affected workload.

00:21:36.142 --> 00:21:41.172
<v Wes>With one particular workload, which may not be yours, but it is aimed in particular

00:21:41.172 --> 00:21:45.620
<v Wes>at latency-sensitive and real-time style workloads, which you know Linux is doing more and more of.

00:21:45.887 --> 00:21:50.757
<v Wes>And it removes an architectural source of scheduler stalls that can affect ordinary machines, too.

00:21:51.059 --> 00:21:55.492
<v Chris>So you heard Wes there, too. He mentioned this is patchwork from ByteDance,

00:21:55.492 --> 00:22:01.572
<v Chris>and this is now merged for Linux 7.3 after 10 rounds of patch reviews.

00:22:02.036 --> 00:22:05.182
<v Chris>But I don't think this is the only set of patches that ByteDance has committed

00:22:05.182 --> 00:22:09.867
<v Chris>recently. It seems like their contribution to the kernel is kicking up. And is ByteDance...

00:22:10.947 --> 00:22:12.358
<v Chris>Are they the TikTok company?

00:22:12.561 --> 00:22:12.803
<v Wes>Yeah.

00:22:12.803 --> 00:22:16.053
<v Chris>Right? The TikTok company? What?

00:22:16.393 --> 00:22:20.563
<v Wes>I mean, you know, we've said it in the cliche way of, right,

00:22:20.563 --> 00:22:23.723
<v Wes>like, I don't know, meta runs Linux servers or whatever. But I think there's

00:22:23.723 --> 00:22:27.263
<v Wes>a real component where, like, if you're trying to do media distribution at scale,

00:22:27.263 --> 00:22:29.053
<v Wes>you really push what computers can do.

00:22:29.053 --> 00:22:29.458
<v Chris>Yeah.

00:22:29.574 --> 00:22:33.123
<v Wes>And that means you might need to interface with the kernel. Whether you like

00:22:33.123 --> 00:22:34.343
<v Wes>the content or not is up to you.

00:22:34.343 --> 00:22:37.840
<v Chris>So this is the world we live in now. And, I mean, that's a serious contribution.

00:22:37.980 --> 00:22:39.251
<v Chris>That's a real contribution.

00:22:40.093 --> 00:22:43.503
<v Chris>Something we've talked about on and off for a little while now,

00:22:43.503 --> 00:22:48.440
<v Chris>but really seems like it's coming together in Linux 7.3, is this subscheduler idea.

00:22:48.887 --> 00:22:49.723
<v Wes>So cool.

00:22:49.723 --> 00:22:55.603
<v Chris>So cool. So I think this could be one of the more consequential long-term changes

00:22:55.603 --> 00:22:57.612
<v Chris>because you're going to see vendors take advantage of this.

00:22:58.533 --> 00:23:02.203
<v Chris>Network vendors, hardware vendors. So they have now, I guess,

00:23:02.203 --> 00:23:07.101
<v Chris>like a subscheduler system where you can build your own subscheduler for Linux.

00:23:07.101 --> 00:23:11.703
<v Wes>Yeah. Yeah, so you have a root scheduler, and that can now give a C-group subtree,

00:23:11.703 --> 00:23:17.143
<v Wes>back to the C-groups, to another scheduler, including with revocable access

00:23:17.143 --> 00:23:19.844
<v Wes>to individual CPUs so you can control what it's scheduling over.

00:23:20.227 --> 00:23:23.073
<v Wes>So in practical terms, you could imagine different scheduling policies for a

00:23:23.073 --> 00:23:25.492
<v Wes>few different workloads on the same machine, right?

00:23:25.777 --> 00:23:28.673
<v Wes>So maybe you're trying to do latency-sensitive audio capturing,

00:23:29.013 --> 00:23:31.923
<v Wes>but you've also got a background job doing some transcription in bulk, right?

00:23:31.923 --> 00:23:33.803
<v Chris>Or syncing, or whatever you just have running.

00:23:33.803 --> 00:23:36.763
<v Wes>Or you're trying to do games, but you've got containers that are running that

00:23:36.763 --> 00:23:38.743
<v Wes>are doing image processing at the same time.

00:23:38.743 --> 00:23:39.293
<v Chris>As one does.

00:23:39.953 --> 00:23:42.913
<v Wes>Or I could see this a lot, right? You might have, you're running a web server,

00:23:42.913 --> 00:23:45.913
<v Wes>right? And you might want a particular scheduler for your database that's different

00:23:45.913 --> 00:23:47.983
<v Wes>from how you want to run it for the Nginx reverse proxy.

00:23:47.983 --> 00:23:51.703
<v Chris>Or, you know, to bring it to the desktop, my kid, right? Constantly,

00:23:51.703 --> 00:23:55.583
<v Chris>he's got the Discord going with like 15 people in the call. He's got the game

00:23:55.583 --> 00:23:58.586
<v Chris>going. He's got OBS recording and streaming to the call.

00:23:59.062 --> 00:24:01.646
<v Chris>And, you know, and then you want the game to perform well at the same time.

00:24:02.006 --> 00:24:05.433
<v Chris>And like that, that seriously taxes the system when you're doing all those things.

00:24:05.933 --> 00:24:10.121
<v Chris>So you could see a world where there's a SteamOS scheduler, subscheduler.

00:24:10.880 --> 00:24:13.107
<v Wes>And this sort of scales with how much investment you want to put,

00:24:13.107 --> 00:24:17.457
<v Wes>right? Like with this SketchX stuff, that of course is built on being able to

00:24:17.457 --> 00:24:21.937
<v Wes>write like BPF programs that can do scheduling, which is furthermore means you

00:24:21.937 --> 00:24:23.047
<v Wes>can take a standard Linux kernel.

00:24:23.047 --> 00:24:25.587
<v Wes>You don't have to build your own modular. You don't have to do potentially dangerous

00:24:25.587 --> 00:24:30.180
<v Wes>and, you know, require lots of testing changes on general scheduler algorithm changes.

00:24:30.516 --> 00:24:35.437
<v Wes>You get to implement your own, just, you know, adding it in from user space

00:24:35.437 --> 00:24:39.659
<v Wes>and then get that attached to particular programs and workloads that you need to run.

00:24:39.810 --> 00:24:40.077
<v Chris>Yeah.

00:24:40.456 --> 00:24:41.013
<v Wes>That's powerful.

00:24:41.354 --> 00:24:46.789
<v Chris>What other OS is doing that? All right. So, Brent, you know, how much would you pay?

00:24:47.235 --> 00:24:50.677
<v Chris>We told you you're going to get performance updates to ButterFS and Linux 7.2.

00:24:50.677 --> 00:24:51.127
<v Brent>Delicious.

00:24:51.127 --> 00:24:56.187
<v Chris>But how much would you pay for a whole other round of large performance wins

00:24:56.187 --> 00:24:58.091
<v Chris>in ButterFS and Linux 7.3?

00:24:58.352 --> 00:25:01.227
<v Chris>Because, buddy, I'm going to give it to you for the price of free.

00:25:01.227 --> 00:25:01.607
<v Brent>Yeah.

00:25:02.927 --> 00:25:07.132
<v Chris>Another round of ButterFS optimizations will be coming in Linux 7.3,

00:25:07.132 --> 00:25:08.575
<v Chris>and some of them are kind of a big deal.

00:25:10.212 --> 00:25:13.392
<v Chris>I mean, I'm sure you went through this, Wes, but DirectIO, again, gets some attention.

00:25:14.212 --> 00:25:18.902
<v Chris>ButterFS can now use IOMAP to bounce buffers instead of failing back to a buffered

00:25:18.902 --> 00:25:23.857
<v Chris>I.O. Don't know what that means at all, but it seems good.

00:25:24.211 --> 00:25:27.192
<v Wes>Yeah, well, it's, you know, buffered I.O. has buffers, right?

00:25:27.192 --> 00:25:29.112
<v Chris>I mean, I know that. I know what a buffer is.

00:25:29.112 --> 00:25:33.812
<v Wes>Well, and so, and DirectIO is unbuffered, right? And so now it's basically a

00:25:33.812 --> 00:25:36.482
<v Wes>setup where in some situations, direct IO didn't really work.

00:25:36.482 --> 00:25:38.944
<v Wes>You had to fall back to using the slower buffered stuff.

00:25:39.281 --> 00:25:44.052
<v Wes>Now, in that same situation, Butterfest is internally using an IO map bounce

00:25:44.052 --> 00:25:47.135
<v Wes>buffer of its own that lets it stay on the more direct IO path.

00:25:47.292 --> 00:25:49.632
<v Chris>But gives like direct IO a little buff if it needs it?

00:25:49.632 --> 00:25:50.082
<v Wes>I think so.

00:25:50.082 --> 00:25:52.569
<v Chris>Huh. Okay, thank you. All right. See, now I get it.

00:25:53.512 --> 00:25:57.932
<v Wes>And that's why the case that was sort of the study for this reportedly goes

00:25:57.932 --> 00:26:02.132
<v Wes>from roughly 50% of theoretical throughput up to about 90%.

00:26:02.132 --> 00:26:02.559
<v Brent>What?

00:26:02.664 --> 00:26:03.162
<v Chris>I'm sorry?

00:26:03.162 --> 00:26:04.527
<v Brent>That's massive again.

00:26:05.272 --> 00:26:06.408
<v Wes>So a 45% increase.

00:26:06.744 --> 00:26:09.421
<v Brent>Are they using the same math that we're using?

00:26:10.129 --> 00:26:13.572
<v Chris>This is really something. I mean, just in the next couple releases,

00:26:13.572 --> 00:26:15.422
<v Chris>there are so many performance wins.

00:26:15.782 --> 00:26:22.510
<v Wes>Yeah, really. I mean, there's more removing an unnecessary one Jiffy delay in a non-SSD logging path.

00:26:22.666 --> 00:26:26.902
<v Wes>That's like a 5x throughput improvement in one test. And then another is interesting.

00:26:26.902 --> 00:26:30.972
<v Wes>it replaces the use of an x-array data structure with a local least recently

00:26:30.972 --> 00:26:36.279
<v Wes>used lru list for inhibited extent buffers that one's a 3x improvement.

00:26:36.772 --> 00:26:40.598
<v Chris>All right i mean it's funny that a three it says three to five x by the way

00:26:40.940 --> 00:26:46.641
<v Chris>but it's funny that a 3x improvement seems kind of tame at this point i know just so great still,

00:26:47.471 --> 00:26:51.929
<v Chris>ah i mean like where you at butter fs haters time to update time to update,

00:26:53.236 --> 00:26:55.550
<v Chris>All right, there's several other things in here we could talk about.

00:26:55.640 --> 00:26:58.222
<v Wes>Yeah, how do you like the name FailFS?

00:26:59.407 --> 00:27:00.010
<v Chris>I love it.

00:27:00.010 --> 00:27:02.360
<v Brent>Seems like one of our challenges is coming up.

00:27:02.360 --> 00:27:06.400
<v Chris>I feel an episode already. I hear the name, and I'm already picturing the episode.

00:27:06.400 --> 00:27:09.010
<v Wes>Yeah, it's great, right? So you know what you love about file systems?

00:27:09.010 --> 00:27:11.320
<v Wes>They let you open and write to files and do stuff with files, right?

00:27:11.320 --> 00:27:12.050
<v Chris>Definitely, very handy.

00:27:12.050 --> 00:27:15.579
<v Wes>Yeah, well, FailFS is a file system where every possible operation fails.

00:27:16.229 --> 00:27:16.630
<v Brent>What?

00:27:16.630 --> 00:27:17.860
<v Wes>Okay.

00:27:18.440 --> 00:27:19.940
<v Chris>All right, all right, cool.

00:27:19.940 --> 00:27:23.630
<v Wes>So what's cool about this is it's a security idea, right? So what you do is

00:27:23.630 --> 00:27:27.467
<v Wes>you open a file and you get a file descriptor, which is basically like a handle to the file, right?

00:27:27.820 --> 00:27:30.730
<v Wes>And after that, like you've done the security checks, the kernel scene,

00:27:30.730 --> 00:27:33.180
<v Wes>if you have permissions, all of that stuff has already happened.

00:27:33.580 --> 00:27:36.250
<v Wes>And then you have a handle you can use to read and write from the file.

00:27:36.656 --> 00:27:40.168
<v Wes>What FailFS lets you do for a security system perspective is you can,

00:27:40.324 --> 00:27:43.559
<v Wes>if you know all of the files that something needs to access,

00:27:43.820 --> 00:27:48.487
<v Wes>you pre-open them and then you launch something and you give it a FailFS file system.

00:27:48.701 --> 00:27:52.110
<v Wes>And that means there's no way to ever escape its sandbox. All it can ever use

00:27:52.110 --> 00:27:55.104
<v Wes>is whatever FDs you pass it when you spawn it.

00:27:56.120 --> 00:27:59.121
<v Wes>So it's an idea to pre-restrict it. So it's not in a true root.

00:27:59.260 --> 00:28:03.290
<v Wes>It's not stuck in some folder. It's not in a weird mount. It's just the only

00:28:03.290 --> 00:28:06.419
<v Wes>file system it knows about is not the root file system at all. It's fail.fs.

00:28:06.661 --> 00:28:07.899
<v Chris>That's so funny.

00:28:08.954 --> 00:28:10.921
<v Chris>It's such a funny way to solve the problem.

00:28:11.421 --> 00:28:14.141
<v Wes>It's interesting because it builds on a few, I think in 6.7.2 maybe,

00:28:14.141 --> 00:28:18.291
<v Wes>we talked about null FS, which was something cleaning up sort of early pivot

00:28:18.291 --> 00:28:21.611
<v Wes>routes, switch routes stuff, where you had like a, just a super minimal file

00:28:21.611 --> 00:28:24.791
<v Wes>system that can be the root of the whole tree of file systems.

00:28:24.791 --> 00:28:25.071
<v Chris>Right.

00:28:25.071 --> 00:28:28.331
<v Wes>So fail FS is kind of a similar, like not really quite a, it's like more of

00:28:28.331 --> 00:28:31.599
<v Wes>an abstract file system, but they play important roles in the kernel.

00:28:31.965 --> 00:28:33.281
<v Chris>That's a good one.

00:28:33.281 --> 00:28:35.521
<v Brent>We've been talking about file systems a lot this year because there's been a

00:28:35.521 --> 00:28:40.061
<v Brent>lot of really great news. And I've got to say, FailFS seems like the easiest,

00:28:40.521 --> 00:28:46.631
<v Brent>file system to implement. You just make a lot of mistakes for every single implementation of a file.

00:28:46.631 --> 00:28:47.301
<v Chris>Easy testing.

00:28:47.301 --> 00:28:48.101
<v Brent>Exactly.

00:28:48.101 --> 00:28:51.116
<v Wes>In this case, if you don't implement a bug, it's itself a bug.

00:28:51.586 --> 00:29:00.151
<v Chris>I see BPF is getting some new fancy BPF-MT-MISC. Is this a mount?

00:29:00.151 --> 00:29:03.541
<v Wes>No. Okay, so it's bin format MISC, which is maybe you're familiar.

00:29:03.541 --> 00:29:07.371
<v Wes>their bin format is what lets you basically register different types of binary

00:29:07.371 --> 00:29:10.021
<v Wes>files. Like you can do this with an app image, right? Or you could do it with,

00:29:10.682 --> 00:29:14.061
<v Wes>a wine or you do it with like a jar file to launch a Java application.

00:29:14.357 --> 00:29:17.648
<v Wes>And so this is where the kernel looks at the magic bytes at the start of a file.

00:29:18.245 --> 00:29:25.271
<v Wes>That helps it determine what that is. And then you can register executions or run times for that.

00:29:25.431 --> 00:29:25.831
<v Chris>For BPF.

00:29:26.211 --> 00:29:29.391
<v Wes>Well, so there's two pieces. There's actually a NixOS angle here.

00:29:30.111 --> 00:29:33.151
<v Wes>Oh. Uh-huh, yeah. So right now it's all fixed, right? And maybe you know with

00:29:33.151 --> 00:29:39.770
<v Wes>NixOS, you have to embed the dynamic library interpreter, the LD,

00:29:40.165 --> 00:29:43.681
<v Wes>in basically it has to hard code that in all of the binaries it produces.

00:29:43.681 --> 00:29:46.191
<v Wes>And this is where the patch elf stuff comes in and all that kind of stuff.

00:29:46.191 --> 00:29:50.491
<v Wes>And it means you can't really relocate that stuff. It needs this fixed, hard-coded path.

00:29:51.107 --> 00:29:55.351
<v Wes>What's coming in 7.3 is a bunch of that's being made more dynamic.

00:29:55.351 --> 00:29:58.108
<v Wes>And in particular, you could implement an algorithm that was like,

00:29:58.427 --> 00:30:03.741
<v Wes>hey, wherever I am, go look up in like dot dot lib from me and just find the

00:30:03.741 --> 00:30:04.391
<v Wes>interpreter right there.

00:30:04.591 --> 00:30:05.031
<v Chris>Oh, that would be really nice.

00:30:05.031 --> 00:30:08.401
<v Wes>So then you could start shipping the interpreter that you need to run sort of

00:30:08.401 --> 00:30:10.951
<v Wes>hermetically sealed in with the rest of your NixOS closure.

00:30:10.951 --> 00:30:11.423
<v Chris>Oh, boy.

00:30:11.586 --> 00:30:15.081
<v Wes>And then, so that's one level of dynamic stuff. And then on top of that,

00:30:15.202 --> 00:30:19.821
<v Wes>you're now also going to be able to attach BPF programs to do that role of figuring

00:30:19.821 --> 00:30:21.274
<v Wes>out what interpreter to run.

00:30:23.167 --> 00:30:24.392
<v Chris>So you could make your own interpreter?

00:30:24.757 --> 00:30:28.141
<v Wes>Yeah, you can have your own interpreter and you can choose very dynamically

00:30:28.141 --> 00:30:30.528
<v Wes>at runtime which interpreter is selected.

00:30:31.752 --> 00:30:33.341
<v Chris>Wow. Dang.

00:30:33.341 --> 00:30:36.811
<v Wes>It's pretty early and like this is going to be this is like the kernel opens

00:30:36.811 --> 00:30:39.771
<v Wes>the features. It doesn't actually add the stuff you do. So this will be downstream

00:30:39.771 --> 00:30:43.791
<v Wes>dependent on distros and users and stuff to actually register the interpreters

00:30:43.791 --> 00:30:44.854
<v Wes>and like write them and all of that.

00:30:45.214 --> 00:30:47.581
<v Wes>But I certainly expect we'll see an XOS at least.

00:30:47.581 --> 00:30:50.791
<v Chris>This is the stuff that makes the Linux kernel the king.

00:30:50.791 --> 00:30:51.171
<v Brent>Oh, yeah.

00:30:51.171 --> 00:30:55.483
<v Chris>It is the king. And the other kernels, they can't even with this stuff. It's really something.

00:30:55.930 --> 00:31:00.561
<v Chris>I suppose in order for the king to maintain its reign, it must shed some older

00:31:00.561 --> 00:31:01.962
<v Chris>projects from time to time.

00:31:02.554 --> 00:31:06.081
<v Chris>And in the upcoming Linux 7.3, not 7.2, those were just released,

00:31:06.081 --> 00:31:10.981
<v Chris>but 7.3, which is coming out in October, 32-bit ARM support has been deprecated.

00:31:10.981 --> 00:31:11.591
<v Brent>Whoa.

00:31:12.526 --> 00:31:16.212
<v Chris>Yeah. So I believe it will survive through 7.3, but it's officially deprecated,

00:31:16.212 --> 00:31:20.421
<v Chris>which doesn't mean it's gone, but it means it's now marked deprecated. So there's that.

00:31:20.688 --> 00:31:25.152
<v Wes>One thing we maybe should mention, too, is, which I don't know if it will be

00:31:25.152 --> 00:31:31.952
<v Wes>fixed in 7.3 or not, but presumably it would be, there's a NTFS vulnerability going around right now.

00:31:33.172 --> 00:31:37.093
<v Wes>Essentially, not the newer NTFS, but the older Paragon NTFS,

00:31:37.314 --> 00:31:38.777
<v Wes>this seems to be live now.

00:31:39.452 --> 00:31:44.532
<v Wes>Essentially, you can set basically a version of Unix security model permissions,

00:31:44.532 --> 00:31:46.770
<v Wes>you know, CHMOD stuff on NTFS files.

00:31:47.345 --> 00:31:49.475
<v Wes>And that includes the set UID bit.

00:31:50.108 --> 00:31:54.452
<v Wes>And the old driver in a lot of configurations for desktops will mount,

00:31:54.452 --> 00:31:58.182
<v Wes>will like auto mount an NTFS thumb drive with that set.

00:31:58.182 --> 00:31:58.712
<v Brent>Oh, no.

00:31:59.032 --> 00:32:03.702
<v Wes>Yeah, so you can have a specially crafted NTFS thumb drive that gets you root just by plugging it in.

00:32:04.428 --> 00:32:06.198
<v Brent>Well, I mean, that could be handy sometimes.

00:32:07.603 --> 00:32:13.152
<v Chris>You know, that's really something. But I think the largest change,

00:32:13.152 --> 00:32:16.276
<v Chris>maybe, it's not a feature that's being added to Linux 7.3.

00:32:17.312 --> 00:32:22.992
<v Chris>A third to a half of the patches look like they are AI-generated low-priority

00:32:22.992 --> 00:32:25.709
<v Chris>fixes that are queued up in Linus' next-next patch set.

00:32:26.365 --> 00:32:30.405
<v Chris>And going through that, they say, quote, we are completely overwhelmed.

00:32:30.515 --> 00:32:32.032
<v Wes>Yeah, these are the networking maintainers.

00:32:32.032 --> 00:32:34.149
<v Chris>Yeah, the networking maintainers say we're completely overwhelmed.

00:32:34.968 --> 00:32:38.732
<v Chris>Their counter move is AI reviewing AI with meta-funding a multi-model review

00:32:38.732 --> 00:32:39.954
<v Chris>for every networking patch.

00:32:40.204 --> 00:32:45.032
<v Chris>But the practical result seems to be really just a lot of trimming from the

00:32:45.032 --> 00:32:48.392
<v Chris>kernel of older network drivers that are not really maintained because they're

00:32:48.392 --> 00:32:49.927
<v Chris>getting poked at by clankers.

00:32:50.984 --> 00:32:55.601
<v Chris>And so they have a whole AI reviewing, AI submissions process now,

00:32:55.601 --> 00:32:57.771
<v Chris>thanks to just a ton of compute contributed by Meta.

00:32:57.771 --> 00:33:01.441
<v Wes>Yeah, they describe it as managing patchwork, automating common process complaints,

00:33:01.441 --> 00:33:05.721
<v Wes>editing commit messages, and maybe applying patches, which already got reviewed

00:33:05.721 --> 00:33:08.421
<v Wes>by tags from people we trust. So they're experimenting actively.

00:33:08.421 --> 00:33:10.761
<v Chris>Yeah, I suppose they have to with the volume they're going to get,

00:33:10.761 --> 00:33:13.811
<v Chris>right? Because the Linux kernel has to be the one everybody thinks of when they

00:33:13.811 --> 00:33:15.571
<v Chris>all of a sudden I can build software.

00:33:16.191 --> 00:33:20.831
<v Chris>I'm going to go to the Linux kernel, right? A lot of people think that, but it's interesting.

00:33:21.289 --> 00:33:27.741
<v Chris>that 7.2 was widely impacted by AI-assisted development and 7.3 is both in contributions

00:33:27.741 --> 00:33:30.188
<v Chris>and again in pull requests and things like that.

00:33:30.699 --> 00:33:33.961
<v Chris>So it's essentially continuing to escalate. And so they're responding by adding

00:33:33.961 --> 00:33:36.781
<v Chris>more compute on their side. I think that's going to be a story worth following.

00:33:36.781 --> 00:33:40.961
<v Wes>We also saw Andrew Morton talking about using Gemini to not write the code,

00:33:40.961 --> 00:33:44.781
<v Wes>but write some of his memory management subsystem patch summaries this cycle.

00:33:44.781 --> 00:33:45.670
<v Chris>Look at that.

00:33:54.773 --> 00:33:58.617
<v Brent>Well, for years, we've had the project of, well, thinking about first,

00:33:58.617 --> 00:34:02.283
<v Brent>and then also just tightening up our production infrastructure behind the shows.

00:34:02.892 --> 00:34:06.417
<v Brent>Big dreams. Some of it's actually happening recently. And Chris,

00:34:07.188 --> 00:34:10.707
<v Brent>Dropbox has been a big part of that, but I know we've had issues with cloud

00:34:10.707 --> 00:34:13.475
<v Brent>syncing in the last several years.

00:34:13.986 --> 00:34:18.548
<v Brent>And nobody's excited about cloud stuff anymore, and you're making some changes.

00:34:19.262 --> 00:34:20.807
<v Brent>What did you replace?

00:34:20.807 --> 00:34:26.177
<v Chris>Well, so, you know, I'm a fan of SyncThing. I want to be clear, I've used it for years.

00:34:26.817 --> 00:34:30.677
<v Chris>When it first launched, I started using it. I was initially with BitTorrent

00:34:30.677 --> 00:34:33.457
<v Chris>Sync, and I was sad when that went away, but I happily Those were the days.

00:34:33.457 --> 00:34:35.929
<v Chris>It was. It was great. But SyncThing has served me well.

00:34:36.451 --> 00:34:39.197
<v Chris>And I've mostly used it for, like, back-end large file transfer media,

00:34:39.197 --> 00:34:45.277
<v Chris>stuff like that. And I've held on to Dropbox because we got this sweet 15-terabyte deal.

00:34:45.277 --> 00:34:46.217
<v Brent>Yeah, yeah, yeah.

00:34:46.217 --> 00:34:50.650
<v Chris>It's crazy cheap. And how do you say no to 15 terabytes these days?

00:34:51.056 --> 00:34:54.621
<v Chris>But I hate Dropbox client. I don't really like Dropbox the company.

00:34:54.911 --> 00:35:00.967
<v Chris>So I kind of compensated and got by for a while by using the Mistral open source

00:35:00.967 --> 00:35:03.861
<v Chris>sync client that was really lightweight.

00:35:04.777 --> 00:35:07.917
<v Chris>You could run it headless. You could declaratively configure it.

00:35:09.161 --> 00:35:12.647
<v Chris>And it gave me Dropbox like back in the OG days of Dropbox again.

00:35:12.647 --> 00:35:15.204
<v Chris>And it just ran headless in the background and synced my damn files.

00:35:15.355 --> 00:35:15.737
<v Wes>That's all you want.

00:35:15.737 --> 00:35:20.667
<v Chris>And used their storage, right? And that worked well for a couple of years.

00:35:20.667 --> 00:35:23.517
<v Chris>And then Mistral announced that they're shutting down. And I thought,

00:35:23.517 --> 00:35:24.747
<v Chris>okay, I'm going to have to migrate soon.

00:35:25.455 --> 00:35:28.117
<v Wes>Right. So either you have to go back to the standard clients or...

00:35:29.517 --> 00:35:33.587
<v Chris>And then, as sort of like to really poke me to get going, I don't know,

00:35:33.587 --> 00:35:36.560
<v Chris>like an old machine joined the Dropbox. I have my suspicions. Yeah.

00:35:37.738 --> 00:35:41.430
<v Chris>All of the files got a sync conflict in my Dropbox. No.

00:35:41.848 --> 00:35:42.838
<v Wes>That doesn't sound good.

00:35:42.838 --> 00:35:46.048
<v Chris>A little bug in how the exclusion folders work with Mistral,

00:35:46.048 --> 00:35:49.313
<v Chris>and it started syncing to all my systems. Like, you know, terabytes of data.

00:35:49.679 --> 00:35:53.086
<v Chris>Terabytes of data. So all my hard drives started filling up, and I realized it.

00:35:53.574 --> 00:35:57.741
<v Chris>So at first I shut down the sync client on my workstation upstairs because I'm sitting there.

00:35:58.501 --> 00:36:03.288
<v Chris>And then it dawns on me, every other computer is also doing this same thing right now.

00:36:03.468 --> 00:36:03.928
<v Brent>Oh, my goodness.

00:36:05.078 --> 00:36:07.578
<v Chris>So then it's like a mad dash before it fills up their hard.

00:36:07.578 --> 00:36:08.488
<v Brent>Drive right.

00:36:09.136 --> 00:36:09.598
<v Chris>Or whatever it.

00:36:09.598 --> 00:36:10.854
<v Brent>Might been there been there.

00:36:11.133 --> 00:36:15.988
<v Chris>Yeah yeah that's a nightmare you've been looking at sync stuff this or the last couple of weeks too.

00:36:16.308 --> 00:36:19.848
<v Brent>Yeah i uh i guess a similar problem actually i've been,

00:36:20.528 --> 00:36:26.198
<v Brent>trusting cloud syncing less and thought geez with these new mesh networks certainly

00:36:26.198 --> 00:36:29.748
<v Brent>there's something better we could do right and not have to rely about it with

00:36:29.748 --> 00:36:32.478
<v Brent>a always on uh system in the in the cloud.

00:36:32.478 --> 00:36:37.662
<v Brent>So you pushed me towards sync thing. I've complained for years that I can never wrap my head around,

00:36:38.712 --> 00:36:43.312
<v Brent>it how it works and how to configure it and stuff like that but somehow on my

00:36:43.312 --> 00:36:47.855
<v Brent>third try around i got over that and it's actually quite simple.

00:36:48.412 --> 00:36:51.959
<v Chris>I think that i don't know what the issue was well the biggest head shift right

00:36:52.121 --> 00:36:59.702
<v Chris>is um like with next cloud sync or dropbox sync it's user login and then you

00:36:59.702 --> 00:37:01.931
<v Chris>have these folders and you sync these folders down,

00:37:02.390 --> 00:37:06.182
<v Chris>and with sync thing there's no user right i mean you can pass protect the dashboard

00:37:06.182 --> 00:37:10.512
<v Chris>but it's these keys that you exchange and then they discover themselves and

00:37:10.512 --> 00:37:13.251
<v Chris>they sync and you share these keys and that's how you set it up,

00:37:13.802 --> 00:37:16.672
<v Chris>which is actually great because it's accountless which means anybody that has

00:37:16.672 --> 00:37:19.172
<v Chris>sync thing can just grab that you can share that key with them and they can

00:37:19.172 --> 00:37:20.873
<v Chris>sync they don't have to go create an account anywhere,

00:37:21.331 --> 00:37:24.240
<v Chris>but it's a total flip of the traditional file sync model

00:37:24.663 --> 00:37:27.982
<v Chris>where you have an account you log in and it just syncs down your files but like

00:37:28.302 --> 00:37:31.072
<v Chris>i think both you and i have found recently that next cloud isn't working for

00:37:31.072 --> 00:37:34.262
<v Chris>us that might have been the direction i would have gone on for these files because

00:37:34.262 --> 00:37:37.522
<v Chris>I do really like having a web interface. I think that's really nice.

00:37:37.522 --> 00:37:40.319
<v Brent>Yeah, I share a bunch of stuff with other people too.

00:37:40.679 --> 00:37:42.142
<v Chris>Yeah, sharing is also a big one.

00:37:42.502 --> 00:37:46.552
<v Brent>Yeah, it's a tricky one. The other thing that got me with SyncThing,

00:37:46.552 --> 00:37:48.638
<v Brent>I think, was the configs for each client.

00:37:49.294 --> 00:37:53.552
<v Brent>You have to kind of put your head into different perspectives when you're configuring

00:37:53.552 --> 00:37:56.717
<v Brent>stuff. And also there's this concept of like,

00:37:57.897 --> 00:38:01.867
<v Brent>I forget what they call it now, maybe Wes, you'll remember, but of like the

00:38:01.867 --> 00:38:05.477
<v Brent>quote unquote cloud, but it's really just the amalgamation of all the files

00:38:05.477 --> 00:38:07.597
<v Brent>of all of the devices into this

00:38:07.597 --> 00:38:12.517
<v Brent>one like virtual file system almost that you can think of it that way.

00:38:12.817 --> 00:38:16.917
<v Brent>And you get to pick and choose which folders you bring down into this particular,

00:38:17.837 --> 00:38:21.434
<v Brent>device. So it's interesting, very powerful when you start learning the config.

00:38:22.200 --> 00:38:25.597
<v Chris>It just sort of slips into the background too. It does have a web UI.

00:38:25.597 --> 00:38:28.157
<v Chris>There are some desktop clients, but it just sort of slips into the background.

00:38:28.157 --> 00:38:32.227
<v Chris>So you're not really thinking about it. It's just like you just have these files

00:38:32.227 --> 00:38:34.896
<v Chris>that persist across all your machines. And it just sort of does it.

00:38:35.657 --> 00:38:37.811
<v Wes>It's best when it's at the layer of infrastructure magic.

00:38:38.286 --> 00:38:41.127
<v Chris>So I had this problem happening, right, where all my systems are getting blasted

00:38:41.127 --> 00:38:44.288
<v Chris>with files to the point where it was going to affect production.

00:38:44.816 --> 00:38:49.737
<v Chris>So I shut it all down and figured I got to redo this. And I wanted to replace

00:38:49.737 --> 00:38:51.055
<v Chris>it at that point with SyncThing.

00:38:51.624 --> 00:38:53.621
<v Chris>I just felt like it's been the most reliable.

00:38:54.277 --> 00:38:59.397
<v Chris>and it was probably my safest bet now that I'm also not using Nextcloud. Sort of the way to go.

00:38:59.519 --> 00:39:04.024
<v Wes>That's a big change though, right? Because you kind of get, it's a very different architecture.

00:39:04.291 --> 00:39:09.667
<v Wes>And in particular, if you don't have a cloud relay, you're going to need a way

00:39:09.667 --> 00:39:10.961
<v Wes>for these things to talk to each other.

00:39:11.530 --> 00:39:16.807
<v Chris>That is a thing. That is a thing. I will say, I think, at first I thought it

00:39:16.807 --> 00:39:18.699
<v Chris>was going to be a downgrade because of that.

00:39:19.744 --> 00:39:22.681
<v Chris>Because I don't have a web UI, I thought this is not going to be as functional.

00:39:23.192 --> 00:39:28.718
<v Chris>But what I realized is that with SyncThing, because it has an API,

00:39:29.903 --> 00:39:33.239
<v Chris>There's actually a lot more visibility into it than I have with Dropbox.

00:39:33.239 --> 00:39:36.899
<v Chris>So with sync thing, I can see which peers are connected, what folders are caught

00:39:36.899 --> 00:39:38.895
<v Chris>up, what's still outstanding in the sync.

00:39:39.261 --> 00:39:43.789
<v Chris>And I can see, does this particular host have that file or not?

00:39:44.346 --> 00:39:48.438
<v Chris>And I can expose that in a way that an agent can read or a script can check

00:39:48.687 --> 00:39:50.609
<v Chris>or Prometheus endpoint can monitor.

00:39:51.289 --> 00:39:55.049
<v Chris>And so then it starts to become a lot more like kind of like this black box

00:39:55.049 --> 00:39:57.923
<v Chris>of sync and like this production monitor thing.

00:39:58.527 --> 00:40:01.499
<v Chris>which is even better than i had with dropbox so then it becomes like oh i'm

00:40:01.499 --> 00:40:06.829
<v Chris>not just replacing dropbox i'm like improving the functionality here so i leaned in on that,

00:40:07.289 --> 00:40:10.543
<v Chris>i i really i wanted to lean in on making sure my hermes agents,

00:40:10.990 --> 00:40:14.019
<v Chris>could understand where files were at and where they're needed to be reviewed

00:40:14.019 --> 00:40:17.159
<v Chris>because it's something my hermes agents can do because i put this on that system

00:40:17.159 --> 00:40:21.479
<v Chris>as well they can write a file to a folder for them and then they know when the

00:40:21.479 --> 00:40:25.589
<v Chris>workstation i'm at has receive that file. That's really powerful.

00:40:25.589 --> 00:40:25.949
<v Brent>Yeah, yeah, yeah.

00:40:26.329 --> 00:40:29.789
<v Wes>Especially when you want, you really need to be, you know, the number of times

00:40:29.789 --> 00:40:32.109
<v Wes>where we've tried to sync something at the studio and we've assumed that it

00:40:32.109 --> 00:40:34.999
<v Wes>synced and then we discover later after we've left the studio that in fact it

00:40:34.999 --> 00:40:38.999
<v Wes>did not fully sync or like one file out of the seven we needed wasn't there or whatever.

00:40:38.999 --> 00:40:39.272
<v Chris>Yeah.

00:40:39.591 --> 00:40:40.648
<v Wes>You just don't want that. Yeah.

00:40:40.851 --> 00:40:43.119
<v Chris>It's come up. I mean, it's come up recently too and, you know,

00:40:43.119 --> 00:40:44.630
<v Chris>you need to be able to change these things.

00:40:44.810 --> 00:40:47.979
<v Chris>You need to be able to make it flexible too and all of that and Dropbox didn't

00:40:47.979 --> 00:40:48.907
<v Chris>really meet that requirement.

00:40:49.116 --> 00:40:52.431
<v Chris>It didn't really do it for me. So that part feels like a huge upgrade now.

00:40:53.272 --> 00:40:59.029
<v Chris>So I think the trickier part, really, was all of the systems are different.

00:40:59.029 --> 00:41:03.369
<v Chris>I mean, I have my NIC systems, but then my Aurora host here is running,

00:41:03.369 --> 00:41:04.772
<v Chris>you know, UBlue, SilverBlue.

00:41:05.231 --> 00:41:09.359
<v Chris>The soundboard machine over here is an old Mac, you know, so that's a totally

00:41:09.359 --> 00:41:11.289
<v Chris>different system. So that part...

00:41:11.309 --> 00:41:13.739
<v Wes>So it's not one platform that you have to build across.

00:41:13.739 --> 00:41:14.079
<v Chris>Yeah.

00:41:14.079 --> 00:41:17.247
<v Wes>You got to make this work across a disparate set of platforms with different hardware.

00:41:17.392 --> 00:41:17.689
<v Chris>Yeah.

00:41:17.689 --> 00:41:19.528
<v Brent>Did that mean you also had, like,

00:41:20.556 --> 00:41:24.260
<v Brent>like disparate folder structures across those systems as well like how did you.

00:41:24.260 --> 00:41:29.590
<v Chris>Implement this in a way that was quote-unquote smooth yes it was you know like

00:41:29.590 --> 00:41:30.529
<v Chris>especially like on the mac oh,

00:41:31.220 --> 00:41:35.280
<v Chris>yeah like slash users slash username like the whole path is totally different

00:41:35.280 --> 00:41:39.380
<v Chris>but then on some of my systems i have those scary raids and so i put the sinks

00:41:39.740 --> 00:41:43.110
<v Chris>on the scary raid several of them and then and then like the laptops they're

00:41:43.110 --> 00:41:46.938
<v Chris>just in the home folder because i don't have more than one hard drive and a laptop usually usually

00:41:47.362 --> 00:41:52.615
<v Chris>so it's just in my home folder so like literally And then you have my Hermes agent's host,

00:41:53.295 --> 00:41:56.621
<v Chris>which stores that in a completely different location too. So literally all my hosts.

00:41:58.229 --> 00:42:00.283
<v Wes>That guy's probably the only one who knows where all the paths are.

00:42:00.405 --> 00:42:04.279
<v Chris>Well, that's the thing. So I focused on the main folders that I use,

00:42:04.279 --> 00:42:06.469
<v Chris>not all of them, just the main ones I use today.

00:42:06.469 --> 00:42:13.009
<v Chris>And then I had the agent figure out where they all need to go and which systems

00:42:13.009 --> 00:42:16.319
<v Chris>we could just hot swap and take over the existing Dropbox location.

00:42:16.319 --> 00:42:19.999
<v Wes>Nice, right. Because you were working from like a unified pre-model mostly.

00:42:19.999 --> 00:42:21.829
<v Chris>Why sync everything again if I don't have to?

00:42:21.829 --> 00:42:22.144
<v Wes>Yeah.

00:42:22.371 --> 00:42:26.079
<v Chris>But that could also go very wrong on some systems. So on some systems,

00:42:26.079 --> 00:42:28.689
<v Chris>I had to make the call not to do that. And I had to create a new folder pattern.

00:42:28.689 --> 00:42:29.339
<v Wes>Start from scratch.

00:42:29.339 --> 00:42:30.219
<v Chris>Yeah, yeah, yeah.

00:42:30.219 --> 00:42:32.564
<v Wes>Okay, well, that sounds like maybe you ran into some issues.

00:42:34.529 --> 00:42:36.929
<v Wes>Some of this sounds like you've handled it. You've obviously been using the

00:42:36.929 --> 00:42:40.689
<v Wes>same thing for years. But I'm wondering, did anything go wrong?

00:42:40.689 --> 00:42:43.949
<v Wes>Did you have any scary moments? What was the process like?

00:42:43.949 --> 00:42:47.221
<v Chris>I think the scariest moment was I forgot to include the Mac.

00:42:47.889 --> 00:42:48.569
<v Chris>I don't think about the Mac.

00:42:50.354 --> 00:42:52.129
<v Wes>But you need a lot of soundboard files.

00:42:52.129 --> 00:42:56.999
<v Chris>That's the soundboard files. Yeah, exactly. said i was like oh right but what

00:42:56.999 --> 00:43:00.827
<v Chris>is really fantastic with this setup is everything's documented all the endpoints

00:43:01.239 --> 00:43:04.263
<v Chris>i mean the clanker can even connect in and read the database yeah

00:43:04.689 --> 00:43:09.488
<v Chris>so it is really straightforward for for just you go in there and say deploy it on a new host,

00:43:10.039 --> 00:43:13.899
<v Chris>and it uh i have some guidance in there like it caught okay well this folder

00:43:13.899 --> 00:43:17.519
<v Chris>is your backups folder that's 20 gigabytes do you want to sync that to the soundboard

00:43:17.519 --> 00:43:22.206
<v Chris>machine i do not i do not want to sync that so that was kind of nice so i kind of i have,

00:43:23.042 --> 00:43:26.829
<v Chris>i'm really only dealing with 10 folders that i actively use and i'm considering

00:43:26.829 --> 00:43:31.479
<v Chris>just keeping everything else on dropbox removing all the dropbox clients and

00:43:31.479 --> 00:43:35.867
<v Chris>then using our clone to mount it when i do need something from the archive,

00:43:36.534 --> 00:43:40.089
<v Chris>because i'm paying such a cheap price it's like 50 a year or something for 15

00:43:40.089 --> 00:43:43.959
<v Chris>i got like this grandfather deal it's a cloud backup i mean so nuts for 15 terabytes

00:43:43.959 --> 00:43:47.509
<v Chris>of cloud backup So our clone could be a good way to interface with that.

00:43:48.109 --> 00:43:48.779
<v Brent>Can I get access?

00:43:48.779 --> 00:43:49.866
<v Chris>So the Mac was tricky.

00:43:50.882 --> 00:43:51.478
<v Chris>Yeah, right?

00:43:51.478 --> 00:43:51.778
<v Brent>Yeah.

00:43:51.778 --> 00:43:55.415
<v Chris>The Mac was the scary part because I almost completely forgot it.

00:43:56.019 --> 00:43:57.138
<v Chris>I just totally blanked it out.

00:43:57.138 --> 00:43:59.874
<v Brent>Did it, was it smooth for you going cross-platform?

00:44:01.908 --> 00:44:04.831
<v Chris>It wasn't too bad. Yeah, I mean, you know, the nice thing is you got Homebrew

00:44:05.023 --> 00:44:06.028
<v Chris>on the Mac. You can use that.

00:44:06.988 --> 00:44:10.228
<v Chris>I think Aurora. So Aurora is a, like I said, it's a silver blue,

00:44:10.228 --> 00:44:12.192
<v Chris>uBluehost, and I went Podman.

00:44:12.888 --> 00:44:15.472
<v Chris>I just did a Podman container on that, a rootless Podman container.

00:44:16.122 --> 00:44:18.318
<v Chris>And I don't think Syncthing cares.

00:44:18.318 --> 00:44:22.208
<v Wes>And then I assume it's just riding back on the back of your existing mesh infrastructure.

00:44:22.208 --> 00:44:22.408
<v Chris>Right?

00:44:22.408 --> 00:44:25.352
<v Wes>So a container plus mesh, and there you go.

00:44:26.205 --> 00:44:31.068
<v Chris>It's really good. I'm really liking it. I find it to be such an upgrade,

00:44:31.068 --> 00:44:33.998
<v Chris>and I thought it was going to be a downgrade. Screw that Dropbox.

00:44:33.998 --> 00:44:38.628
<v Brent>Are you using Dropbox and sync thing looking at the same folders?

00:44:38.628 --> 00:44:42.088
<v Brent>Because I would assume that's going to cause you some issues.

00:44:43.073 --> 00:44:47.208
<v Chris>Yeah, yeah, yeah, yeah. No, I had to be careful about that. But it took me a

00:44:47.208 --> 00:44:49.801
<v Chris>second to realize I had to shut it down on one of my hosts.

00:44:50.271 --> 00:44:50.808
<v Brent>That's all it takes.

00:44:50.808 --> 00:44:54.567
<v Chris>But when I scrambled, I didn't just stop this thing. I'm like,

00:44:54.927 --> 00:44:58.468
<v Chris>all right, disable the service, rebuild. This thing's gone.

00:44:58.808 --> 00:45:01.231
<v Chris>I did not want. So I just removed the client.

00:45:01.632 --> 00:45:04.296
<v Chris>So I don't have to worry about that except for I think it was the Mac.

00:45:04.801 --> 00:45:06.746
<v Chris>In fact, I think Dropbox is actually running right now.

00:45:08.048 --> 00:45:12.188
<v Chris>I even disabled it from starting, and it still starts. I hate macOS so much.

00:45:14.861 --> 00:45:17.938
<v Chris>so yeah it's still this it's it's such a pain in the butt and i don't think

00:45:17.938 --> 00:45:21.778
<v Chris>about the mac so the mac is an issue for sure i'm just gonna uninstall it after

00:45:21.778 --> 00:45:25.588
<v Chris>the show off of here and i don't know i don't really need to access the archive

00:45:25.588 --> 00:45:28.048
<v Chris>from from this thing one you know what i realized.

00:45:28.048 --> 00:45:29.252
<v Wes>I think i got our clone on the mac.

00:45:29.623 --> 00:45:33.678
<v Chris>We could put linux on this i've been waiting to replace this with a linux box

00:45:33.678 --> 00:45:37.616
<v Chris>right an actual but we could just put linux on this because it's an intel mac.

00:45:38.521 --> 00:45:38.849
<v Wes>Yeah.

00:45:39.389 --> 00:45:42.409
<v Brent>There's the whole soundboard thing. Isn't that the reason?

00:45:42.409 --> 00:45:44.109
<v Chris>Yeah, we have to, no, we have to build a soundboard.

00:45:44.109 --> 00:45:45.119
<v Wes>But we need to do that anyway.

00:45:45.119 --> 00:45:45.849
<v Chris>We have to do that anyway.

00:45:45.849 --> 00:45:47.299
<v Brent>We've been saying it for like, what, 10 years?

00:45:47.299 --> 00:45:50.219
<v Chris>Well, like, what's the point of starting the project if you don't have any hardware to run it on?

00:45:50.219 --> 00:45:53.115
<v Brent>Fair enough, fair enough. Well, let's do that after the show.

00:45:53.642 --> 00:45:54.555
<v Chris>Right, right.

00:45:55.349 --> 00:45:55.849
<v Brent>Hmm.

00:45:57.846 --> 00:46:00.989
<v Chris>So that's been an issue. You know, but being able to run it in Podman worked

00:46:00.989 --> 00:46:03.825
<v Chris>out great. And then it's just installed natively on the Nix systems.

00:46:05.049 --> 00:46:07.535
<v Brent>So are you managing your configs through Nix as well?

00:46:08.876 --> 00:46:10.106
<v Chris>Yeah, for those hosts. Yeah.

00:46:10.350 --> 00:46:11.101
<v Brent>Yeah, for all those hosts.

00:46:11.101 --> 00:46:11.341
<v Chris>Everything.

00:46:11.341 --> 00:46:14.261
<v Brent>That's how I started doing it. It's so nice. I even...

00:46:14.381 --> 00:46:15.174
<v Chris>It is very nice.

00:46:15.487 --> 00:46:15.831
<v Brent>Yeah.

00:46:15.831 --> 00:46:18.558
<v Wes>And it's positive pressure to use NixOS for more and more things.

00:46:19.421 --> 00:46:22.431
<v Brent>I would... One recommendation, if you're going to throw, like,

00:46:22.431 --> 00:46:24.317
<v Brent>a mobile device in the mix,

00:46:24.874 --> 00:46:29.521
<v Brent>which I don't know if you want to at this point, but I found it really nice

00:46:29.521 --> 00:46:35.181
<v Brent>to have the clanker just, like, make a config file for the Android system and just suck it in.

00:46:35.981 --> 00:46:36.482
<v Chris>You can import it?

00:46:36.825 --> 00:46:40.381
<v Brent>Yeah, you can import them pretty nicely. And that keeps you from like having

00:46:40.381 --> 00:46:43.256
<v Brent>to thumb all the config options and stuff on the phone.

00:46:43.623 --> 00:46:45.968
<v Brent>So that would be one of my recommendations if you get there.

00:46:46.484 --> 00:46:47.561
<v Wes>I wonder, presumably you could

00:46:47.561 --> 00:46:51.453
<v Wes>also maybe get some port forwards going on your Android and have it API.

00:46:52.941 --> 00:46:54.601
<v Chris>You're right. Or just it'd be on the mesh too.

00:46:54.601 --> 00:46:55.111
<v Wes>Yeah, right.

00:46:55.111 --> 00:46:56.648
<v Chris>Yeah. So I think,

00:46:58.941 --> 00:47:04.051
<v Chris>if you do dabble in the clankers, I really want to make a strong recommendation

00:47:04.051 --> 00:47:06.751
<v Chris>that if you need to solve a sync problem, you look at sync thing.

00:47:06.751 --> 00:47:12.439
<v Chris>because my favorite part of this is I built a wrapper called Hermes sync thing.

00:47:13.101 --> 00:47:17.861
<v Chris>And so the agents are not doing like raw credential passes over the network

00:47:17.861 --> 00:47:19.921
<v Chris>and like looking things up in the LLM every single time.

00:47:20.490 --> 00:47:24.401
<v Chris>So the agents aren't using like the raw credentials and connecting to the API

00:47:24.401 --> 00:47:25.661
<v Chris>without instruction every single time.

00:47:25.661 --> 00:47:28.031
<v Chris>And the LLM is just kind of figuring out how to do it every time when I want

00:47:28.031 --> 00:47:31.334
<v Chris>to check on the status of stuff. I've created this little wrapper and this wrapper,

00:47:31.983 --> 00:47:35.031
<v Chris>automatically has all the presets to go see if all the hosts is connected,

00:47:35.031 --> 00:47:38.751
<v Chris>if the folders are caught up, what might be outstanding from any individual hosts.

00:47:39.621 --> 00:47:41.901
<v Chris>You know, like, for example, what does Aurora still need before we can go on

00:47:41.901 --> 00:47:43.701
<v Chris>air? Because we've got to get the clip synced up.

00:47:44.541 --> 00:47:45.121
<v Wes>I like that.

00:47:45.121 --> 00:47:49.401
<v Chris>And I can ask it, did this file reach this host? And all the clinker is doing

00:47:49.401 --> 00:47:52.149
<v Chris>in the background is calling this Hermes sync thing.

00:47:52.990 --> 00:47:55.240
<v Wes>And that's a wrapper that just has the endpoints you want.

00:47:55.240 --> 00:47:58.720
<v Chris>Yes, predefined setup. And so it's not, and the advantage there,

00:47:58.720 --> 00:48:02.005
<v Chris>it isn't creating the workflow every single time. So you're saving tokens,

00:48:02.238 --> 00:48:06.170
<v Chris>you're reducing the impact of hallucination because it's fairly straightforward.

00:48:06.170 --> 00:48:09.150
<v Wes>You can do like a multi-stage, right? So it's like you have a skill describing

00:48:09.150 --> 00:48:12.600
<v Wes>this, how to work with it, and telling it how to use your wrapper.

00:48:12.809 --> 00:48:15.250
<v Wes>And then the wrapper can embed all of the implicit knowledge of like how to

00:48:15.250 --> 00:48:16.440
<v Wes>get those core tasks done.

00:48:16.440 --> 00:48:21.540
<v Chris>And the wrapper can query the destination machine's own sync thing database.

00:48:21.540 --> 00:48:22.220
<v Wes>Nice.

00:48:22.220 --> 00:48:25.700
<v Chris>And see, okay, is it present? Is it valid? Is it synced? Was it ignored?

00:48:25.700 --> 00:48:29.420
<v Chris>Was it not deleted? Whatever. So like you get beyond just proof of delivery,

00:48:29.420 --> 00:48:31.697
<v Chris>you can get proof of removal and all of that.

00:48:31.935 --> 00:48:35.010
<v Chris>And it's just using the wrapper every single time, which I could go down on

00:48:35.010 --> 00:48:37.386
<v Chris>the command line and run myself if I wanted to.

00:48:37.513 --> 00:48:40.520
<v Chris>But the nice thing is, is when you do something like that in that wrapper is

00:48:40.520 --> 00:48:42.808
<v Chris>you can use a free model, a cheaper model.

00:48:43.173 --> 00:48:46.060
<v Chris>It doesn't have to be like a big, you know, frontier class model.

00:48:46.060 --> 00:48:48.642
<v Chris>It can be an open source, even eventually self-hosted model,

00:48:48.967 --> 00:48:51.610
<v Chris>but it can execute these little queries for me and tell me if everything synced.

00:48:51.610 --> 00:48:54.510
<v Wes>There's no debugging, there's no code writing, it's just column tools.

00:48:54.510 --> 00:48:56.211
<v Chris>Yeah, it's pretty great.

00:48:56.720 --> 00:48:59.760
<v Wes>So I was going to ask if you were going to try and come up with a web interface

00:48:59.760 --> 00:49:03.514
<v Wes>replacement, but it sounds like for the most part, this is good enough.

00:49:03.932 --> 00:49:08.400
<v Chris>Yeah, I still toyed with the idea of putting some sort of web file manager in

00:49:08.400 --> 00:49:09.300
<v Chris>front of the sync thing directly.

00:49:09.300 --> 00:49:10.800
<v Wes>Just for like upload-download or something like that.

00:49:10.800 --> 00:49:12.550
<v Chris>Yeah, or this one-off machine.

00:49:12.550 --> 00:49:12.840
<v Wes>Right.

00:49:12.840 --> 00:49:16.450
<v Chris>Or mobile, that could be another way to do it on mobile. I don't know what sort

00:49:16.450 --> 00:49:18.000
<v Chris>of state of the art there is.

00:49:18.607 --> 00:49:23.107
<v Chris>Like, I don't think it's PHP file manager anymore. So if anybody has recommendations

00:49:23.107 --> 00:49:26.077
<v Chris>for that, I would definitely like them. Because I do think that could be useful,

00:49:26.077 --> 00:49:30.488
<v Chris>but I don't think it's as necessary as this. It's been pretty nice.

00:49:31.133 --> 00:49:34.737
<v Wes>So are you done? I mean, is there anything left that you need to build in this

00:49:34.737 --> 00:49:36.891
<v Wes>thing besides the web interface?

00:49:37.135 --> 00:49:39.367
<v Wes>Are you happy with the deployment? Is it on all your machines?

00:49:39.367 --> 00:49:42.907
<v Chris>Yeah, everything's deployed. It's gotten really nice. You know,

00:49:42.907 --> 00:49:46.077
<v Chris>I think the trick was is deploying from one central machine and just having

00:49:46.077 --> 00:49:51.578
<v Chris>it reach out over SSH and just blast it onto everything with their various esoteric setups.

00:49:52.757 --> 00:49:55.723
<v Chris>I think the missing piece still, like I mentioned might be the R clone mount.

00:49:56.048 --> 00:49:56.535
<v Wes>Right.

00:49:57.110 --> 00:50:00.349
<v Chris>And just coming up with a better way to take advantage of that 15 terabytes while I have it.

00:50:01.499 --> 00:50:04.747
<v Chris>Not sure. But I think there's, that's the work still to be done.

00:50:04.747 --> 00:50:06.572
<v Chris>There's no errors. Everything seems to be sinking.

00:50:07.530 --> 00:50:09.817
<v Chris>And then I do have a couple like this machine. I got to go clean up Dropbox

00:50:09.817 --> 00:50:12.226
<v Chris>on. Same thing is just, it feels like this,

00:50:13.771 --> 00:50:16.813
<v Chris>a sleeper of a project that we don't talk about, that we take for granted.

00:50:17.469 --> 00:50:21.388
<v Brent>I think it's just assumed that we've all implemented it.

00:50:21.544 --> 00:50:24.765
<v Brent>Like that's the feeling I get is that it's been around forever.

00:50:24.765 --> 00:50:26.984
<v Brent>It's been really stable for a long time.

00:50:27.458 --> 00:50:31.895
<v Brent>It's just kind of, it's like SSH. It's just there when you need it.

00:50:32.655 --> 00:50:40.205
<v Brent>But for anybody who hasn't tried it, you have any suggestions or tips or pitfalls

00:50:40.205 --> 00:50:41.563
<v Brent>to avoid or anything like that?

00:50:41.953 --> 00:50:47.039
<v Chris>And if you have SyncThing, do yourself a favor. Seriously, listen to Chris's hot tip here.

00:50:47.695 --> 00:50:51.905
<v Chris>Download OpenCode. Use the free aux model that's in there. Use any of the free

00:50:51.905 --> 00:50:56.483
<v Chris>models. Point it at your URL for your SyncThing and have it tell you what this API can do.

00:50:57.238 --> 00:51:02.908
<v Chris>Because this is where it really exceeds what Dropbox can do for you.

00:51:03.374 --> 00:51:07.975
<v Chris>And it becomes a complete system that you have observability over that doesn't

00:51:07.975 --> 00:51:10.160
<v Chris>have a cloud, doesn't have any big tech login.

00:51:10.653 --> 00:51:14.636
<v Chris>And I think so many times we deploy things like Home Assistant,

00:51:15.036 --> 00:51:17.125
<v Chris>Plex, Jellyfin, and SyncThing.

00:51:17.567 --> 00:51:21.205
<v Chris>And then a lot of us, and I'm definitely guilty of this for a long time,

00:51:21.205 --> 00:51:26.025
<v Chris>just ignore that there is this beautiful API that allows us to do everything

00:51:26.025 --> 00:51:31.445
<v Chris>we could do through the UI with our Clanker or OpenCode or whatever through this API.

00:51:32.182 --> 00:51:37.545
<v Chris>And so you can start writing little scripts or automations or check on the sync status of things.

00:51:37.545 --> 00:51:41.371
<v Wes>Think of the poor developers who implemented these APIs. They want you to call them.

00:51:41.371 --> 00:51:41.679
<v Chris>They do.

00:51:41.888 --> 00:51:43.645
<v Wes>Don't let them atrophy just there on the side.

00:51:43.645 --> 00:51:48.425
<v Chris>Take advantage of those APIs. Because I stopped thinking of sync thing as just

00:51:48.425 --> 00:51:50.467
<v Chris>this thing I self-host and it moves my files.

00:51:50.787 --> 00:51:52.825
<v Chris>And now a full system I can manage.

00:51:52.825 --> 00:51:53.965
<v Wes>It's a sync architecture.

00:51:53.965 --> 00:51:54.975
<v Chris>It's a framework.

00:51:54.975 --> 00:51:55.704
<v Brent>Nice.

00:51:56.495 --> 00:52:00.195
<v Chris>That's what it is. That's what it is. And it's way better than any stuff you

00:52:00.195 --> 00:52:03.665
<v Chris>could get with the commercial stuff. And really it's taking advantage of that API to its fullest.

00:52:03.665 --> 00:52:06.245
<v Wes>And you can craft it to fit in with whatever you need it to be.

00:52:14.360 --> 00:52:18.470
<v Brent>Well, as usual, we got a little feedback this week. Alex sends in a little note.

00:52:18.470 --> 00:52:20.322
<v Brent>Hey, Chris, Wes, and Brent.

00:52:20.931 --> 00:52:21.450
<v Chris>I'm Alex.

00:52:21.870 --> 00:52:27.950
<v Brent>I'm Alex. That's A-L-E-K-S for, you know, that's a much cooler way to do it. I'm Alex.

00:52:27.950 --> 00:52:28.819
<v Chris>Alex with a K?

00:52:29.946 --> 00:52:31.512
<v Chris>I don't know, an X is pretty cool, dude.

00:52:31.512 --> 00:52:32.772
<v Brent>Well, that's true.

00:52:33.692 --> 00:52:37.832
<v Chris>X is pretty cool. K is different. I like it because it's unique.

00:52:37.832 --> 00:52:38.712
<v Brent>Yeah, yeah, yeah.

00:52:39.147 --> 00:52:41.399
<v Chris>I mean, it's pretty rare to get an X in your name.

00:52:42.485 --> 00:52:48.464
<v Brent>So Alex with a K says, I'm a solar developer working on Local Comet,

00:52:48.789 --> 00:52:56.121
<v Brent>an open source Windows-first local AI app built with Llama CPP, Tori, and Rust.

00:52:56.945 --> 00:52:58.932
<v Chris>All right. Oh, you don't know.

00:53:00.972 --> 00:53:05.222
<v Brent>It gives people a simple desktop way to run local models with more privacy and

00:53:05.222 --> 00:53:07.932
<v Brent>control without depending on a cloud service.

00:53:07.932 --> 00:53:12.552
<v Brent>I'm actively developing it and would be grateful if you'd consider mentioning

00:53:12.552 --> 00:53:18.232
<v Brent>this on this here podcast and sends a little repository.

00:53:19.236 --> 00:53:20.850
<v Chris>Well, this is right up our alley.

00:53:20.960 --> 00:53:26.002
<v Wes>Yeah, we got Python, TypeScripts, Felt, and yes, Rust. Neat,

00:53:26.002 --> 00:53:28.492
<v Wes>a private local first Windows AI assistant.

00:53:28.492 --> 00:53:30.392
<v Chris>Yeah, and you don't see Windows getting a lot of love in this camera.

00:53:30.392 --> 00:53:33.702
<v Wes>That's what I was going to say. I'm not about to go make myself an EXE,

00:53:33.702 --> 00:53:35.576
<v Wes>but it's clearly out there.

00:53:35.901 --> 00:53:40.852
<v Wes>And the people, I mean, if we're going to be using these models to help us with

00:53:40.852 --> 00:53:43.552
<v Wes>our sync thing, I mean, as we already talked about on the show,

00:53:43.952 --> 00:53:45.782
<v Wes>do you want to be touching Windows or do you want your model to do it?

00:53:45.782 --> 00:53:49.712
<v Chris>I mean, honestly, why not, right? And then there's probably somebody out there

00:53:49.712 --> 00:53:53.212
<v Chris>listening to this show that has WSL and has all this running and then they use

00:53:53.212 --> 00:53:55.441
<v Chris>Windows MCP and all of that.

00:53:56.212 --> 00:53:59.292
<v Chris>But if you're just getting started, something like Local Comet could actually

00:53:59.292 --> 00:54:02.962
<v Chris>probably help you get WSL up and going. I mean, I don't know what these things

00:54:02.962 --> 00:54:05.054
<v Chris>can do on a Windows platform, but it is really nice to see it.

00:54:05.773 --> 00:54:08.182
<v Wes>And maybe it's an easy way, like if you have a Windows gaming machine that does

00:54:08.182 --> 00:54:11.340
<v Wes>have a GPU, then maybe it's an easy way to go experiment with some local models too.

00:54:11.515 --> 00:54:13.407
<v Chris>Yeah, I bet a lot of Windows, you know, that's a great point.

00:54:13.952 --> 00:54:16.592
<v Wes>Don't lock them away in the Windows world. You can still get to play with the fun tech.

00:54:16.712 --> 00:54:18.442
<v Chris>They've invested in those GPUs after all, right?

00:54:18.452 --> 00:54:18.952
<v Wes>That's right.

00:54:18.952 --> 00:54:22.532
<v Chris>So they might as well use them. Yeah. Local Comet. So there you go.

00:54:22.532 --> 00:54:25.622
<v Chris>We'll put a link to that in the show notes. If you got a Windows box with a

00:54:25.622 --> 00:54:31.030
<v Chris>Goopoo and you want to play around with it, you'll find it at linuxunplugged.com slash 681.

00:54:36.120 --> 00:54:40.624
<v Chris>Oh, our first boost comes from the one, the only Greg, the lawyer.

00:54:40.624 --> 00:54:43.484
<v Chris>He was in our mumble room for a little bit earlier today. He's often on the

00:54:43.484 --> 00:54:46.277
<v Chris>live streams and frequently a big supporter of the show.

00:54:46.737 --> 00:54:51.839
<v Chris>And he comes in with a baller boost of 33,333 Satoshis.

00:54:55.770 --> 00:54:59.924
<v Chris>And Greg says, inspired by the release of Oma Archie Atra or Quattro,

00:55:00.264 --> 00:55:02.804
<v Chris>I have been clanking my own Nix OS Senate.

00:55:02.804 --> 00:55:06.254
<v Brent>Wait, wait, wait. I got to stop you there. clanking as a.

00:55:06.254 --> 00:55:07.324
<v Chris>Verb i've.

00:55:07.884 --> 00:55:09.364
<v Brent>Not seen till now i like it.

00:55:10.207 --> 00:55:14.824
<v Chris>I do like it uh i've converted from kde to hyperland and quickshell nice making

00:55:14.824 --> 00:55:17.144
<v Chris>my own desktop so much more fun oh,

00:55:17.904 --> 00:55:24.334
<v Chris>this is i love seeing reports like this greg um we are entering a new era of customization on linux,

00:55:25.019 --> 00:55:29.844
<v Chris>and uh hyperland is just so far it's so right i'll speaking of oma archie and

00:55:29.844 --> 00:55:32.948
<v Chris>hyperland um an oma archie foundation of types,

00:55:33.430 --> 00:55:37.824
<v Chris>was launched with eight million dollars of backing by jack dorsey the ceo of

00:55:37.824 --> 00:55:42.634
<v Chris>dell and many others whoa and um one of their first expenses as a foundation

00:55:42.634 --> 00:55:43.542
<v Chris>if you can call that i'm not sure,

00:55:44.053 --> 00:55:47.734
<v Chris>is they're backing vaxery the hyperland developer for the next three to five years.

00:55:47.734 --> 00:55:48.574
<v Wes>Oh that's that's.

00:55:48.584 --> 00:55:51.434
<v Chris>Incredible that's huge yeah at least the next couple years i mean i don't know

00:55:51.434 --> 00:55:55.304
<v Chris>how much vaxery is going to take as a paycheck but um that's massive so he can

00:55:55.304 --> 00:55:57.962
<v Chris>focus on the hyperland desktop which i think is going to be really good.

00:55:58.206 --> 00:56:03.104
<v Wes>A quick shell i was looking like quite the yes toolkit kit as well so i put

00:56:03.104 --> 00:56:06.966
<v Wes>a show note a link in the show notes to a great lwn write-up of that recently.

00:56:07.894 --> 00:56:10.936
<v Chris>Very good thank you greg appreciate hearing from you appreciate the support too.

00:56:11.105 --> 00:56:15.011
<v Wes>Tomato boots in with 22 222 sats,

00:56:17.268 --> 00:56:21.015
<v Wes>Catching up with the missed episodes from this summer. Loved the backwards episode.

00:56:21.015 --> 00:56:22.735
<v Wes>And how it broke your brains.

00:56:23.615 --> 00:56:27.075
<v Wes>Regarding virtual machines in the kernel, I'll just lean into my recent NetBSD

00:56:27.075 --> 00:56:30.469
<v Wes>trolling here and point out that kernel already has a Lua VM in it.

00:56:30.995 --> 00:56:32.239
<v Wes>It's honestly pretty fun.

00:56:32.477 --> 00:56:33.743
<v Chris>That is fun. That does sound fun.

00:56:34.455 --> 00:56:37.365
<v Wes>Great show on entropy and the cold card mess. I tried looking into their firmware

00:56:37.365 --> 00:56:41.265
<v Wes>before moving my BTC to it and found the whole thing overly complicated and

00:56:41.265 --> 00:56:43.275
<v Wes>confusing, so I decided I didn't trust it.

00:56:43.275 --> 00:56:43.872
<v Chris>Nice dodge.

00:56:44.012 --> 00:56:48.085
<v Wes>Despite having bought one, my coins are still on a Sparrow-created wallet on an offline machine.

00:56:48.085 --> 00:56:49.370
<v Chris>Yep, turned out to be a better call.

00:56:49.631 --> 00:56:52.845
<v Wes>Wish I'd shared my discomfort publicly, and I hope all the JB listeners got

00:56:52.845 --> 00:56:55.958
<v Wes>their coins out in time. Especially in this new era of clanker-assisted hacking,

00:56:56.284 --> 00:56:59.065
<v Wes>those of us in free software who have the expertise to autocode should really

00:56:59.065 --> 00:57:00.495
<v Wes>speak up if something smells funny.

00:57:00.855 --> 00:57:02.635
<v Chris>Yeah, there's something to think about there.

00:57:02.635 --> 00:57:03.345
<v Brent>That's a great point.

00:57:03.345 --> 00:57:06.075
<v Chris>Definitely worth checking your own stuff, too. And at least checking the stuff

00:57:06.075 --> 00:57:08.425
<v Chris>you're going to use, even if you don't go file a clanker report.

00:57:08.425 --> 00:57:10.256
<v Chris>Although, if you find something serious, you probably should consider it.

00:57:11.051 --> 00:57:13.519
<v Chris>Yeah. Thank you, sir. Appreciate that boost.

00:57:14.482 --> 00:57:20.054
<v Brent>Turt Ferguson also sent in a row of McDuck's 22,222 sets.

00:57:24.060 --> 00:57:30.167
<v Brent>I enjoy the peek into the future of IT defense, but you did not answer a key question that I have.

00:57:30.742 --> 00:57:35.096
<v Brent>Do you think AI security tools are actually useful for regular Linux admins

00:57:35.096 --> 00:57:38.586
<v Brent>yet, or are they still too unreliable to trust?

00:57:38.886 --> 00:57:42.856
<v Chris>I think that depends, maybe, because you experimented with a meta model that

00:57:42.856 --> 00:57:46.166
<v Chris>did hallucinate some of the reporting, which maybe would be like,

00:57:46.166 --> 00:57:48.226
<v Chris>okay, that's an example of when you can't fully trust.

00:57:48.691 --> 00:57:53.406
<v Wes>Yeah, I think it's kind of like a lot of things, you know, defense in depth.

00:57:53.406 --> 00:57:58.326
<v Wes>So you probably want to have, that's where you like a diversity of models or

00:57:58.326 --> 00:58:01.486
<v Wes>harnesses or processes so that you do have some way to have a,

00:58:01.486 --> 00:58:03.366
<v Wes>like, you know, grounding is very important here.

00:58:03.598 --> 00:58:06.816
<v Wes>And so if you have a way that you can actually do some fact checks or you have

00:58:06.816 --> 00:58:10.239
<v Wes>a council of several models, each doing it with different unrelated contexts,

00:58:10.500 --> 00:58:13.297
<v Wes>things like that to try to be able to figure out when that's happening.

00:58:13.552 --> 00:58:18.046
<v Chris>I think the biggest barrier right now to getting actually good results out of

00:58:18.046 --> 00:58:22.946
<v Chris>these tools would be paying the cost for the higher-end uncensored models that

00:58:23.246 --> 00:58:24.849
<v Chris>you've got to pay kind of per token for.

00:58:25.261 --> 00:58:30.146
<v Chris>So that's the gating factor right now, right? For them to do anything more advanced, really, I think.

00:58:30.915 --> 00:58:34.146
<v Wes>And that, yeah, that kind of pattern, too. You can have a grunt model and then

00:58:34.146 --> 00:58:37.886
<v Wes>another model that sort of checks on things, does its due diligence,

00:58:37.886 --> 00:58:42.078
<v Wes>and has a little more intelligence but doesn't have to do all of the original work.

00:58:43.425 --> 00:58:47.390
<v Wes>Nathan from Brissy Boosin, 4,102 cents.

00:58:50.221 --> 00:58:52.172
<v Wes>Come on, Lions. Hat trick time.

00:58:53.670 --> 00:58:56.710
<v Chris>Yeah, that probably works. You're getting a few people thinking about it.

00:58:56.710 --> 00:58:58.470
<v Chris>That puts it in a good direction, I think.

00:58:59.270 --> 00:59:03.103
<v Chris>All right. Thank you, Nathan. Appreciate you. Right, you want to take Monty there?

00:59:03.207 --> 00:59:05.802
<v Brent>Yeah, Monty sent in a row of ducks.

00:59:06.214 --> 00:59:06.980
<v Chris>Ah.

00:59:08.414 --> 00:59:14.230
<v Brent>As for the Frigate system overview, I have been running Frigate for several

00:59:14.230 --> 00:59:17.335
<v Brent>years, and I haven't touched the config in a very long while.

00:59:17.874 --> 00:59:23.825
<v Brent>So very interested in some of the newer features, including how to drain your own detections.

00:59:24.271 --> 00:59:28.540
<v Chris>Yeah. And Friggin has recently added more detection capabilities in the freer

00:59:28.540 --> 00:59:30.730
<v Chris>stuff. That's something I'll play around with, you know, and maybe we'll do

00:59:30.730 --> 00:59:32.033
<v Chris>an updated segment. I'll dig into that.

00:59:32.411 --> 00:59:36.140
<v Chris>One of the things I have recently done is I've expanded beyond person identification

00:59:36.140 --> 00:59:39.840
<v Chris>to animal identification. Because again, keep an eye out for coyotes and yeah,

00:59:39.840 --> 00:59:42.065
<v Chris>the birds and stuff like that. And that's been interesting.

00:59:43.010 --> 00:59:45.310
<v Chris>So, all right. Thank you, Monty. That's good feedback.

00:59:45.850 --> 00:59:46.630
<v Wes>Quick interruption.

00:59:46.630 --> 00:59:46.890
<v Chris>Yes, sir.

00:59:46.890 --> 00:59:50.400
<v Wes>I think you'll love this. You should go pull up our live chat. Our Matrix.

00:59:50.400 --> 00:59:51.370
<v Brent>I'm going over there right now.

00:59:51.410 --> 00:59:53.302
<v Wes>Because check out what Greg the lawyer just did.

00:59:54.695 --> 00:59:58.730
<v Chris>While I was listening about SingThing, I clanked a QuickShell SingThing widget for my system.

00:59:59.810 --> 01:00:00.750
<v Brent>That's so great.

01:00:01.290 --> 01:00:02.190
<v Chris>I clanked it, he says.

01:00:03.370 --> 01:00:06.040
<v Wes>And look at this lovely little widget, right? It shows devices connected.

01:00:06.040 --> 01:00:09.750
<v Wes>It's got some folders there. Web UI rescan, refresh stop buttons.

01:00:09.750 --> 01:00:10.907
<v Chris>QuickShell is so cool.

01:00:11.279 --> 01:00:12.393
<v Wes>And clearly it is quick.

01:00:12.579 --> 01:00:15.910
<v Chris>Yeah. And it's not going to break with Hyperland desktop update,

01:00:15.910 --> 01:00:18.402
<v Chris>which is nice, too. So you can build that and it's going to work for a while.

01:00:19.040 --> 01:00:21.500
<v Chris>Well done, Greg. That's why you dropped out of the mumble room.

01:00:21.500 --> 01:00:23.430
<v Chris>You had to go work on that. Plank that up.

01:00:24.967 --> 01:00:31.323
<v Chris>I'll take Thomas. Thomas English comes in with 16,345 Satoshis.

01:00:36.172 --> 01:00:42.157
<v Chris>What are the best methods to get my agent to do my entire NixOS setup for me? Because I am clueless.

01:00:42.859 --> 01:00:46.796
<v Chris>I've only ever Vive slopped Linux servers together, but going to take the plunge

01:00:46.796 --> 01:00:48.652
<v Chris>and smash out this Windows box.

01:00:49.117 --> 01:00:54.144
<v Chris>NixOS for me. Any tips for a sailor that can't swim? I've never seen a line of code in my life.

01:00:55.549 --> 01:01:00.076
<v Chris>Agent first NixOS setup. What say you? I'm going to paste in your YoloPie and close my eyes.

01:01:00.076 --> 01:01:00.556
<v Brent>Oh, my goodness.

01:01:00.656 --> 01:01:01.916
<v Chris>I'm going to paste it into YoloPie.

01:01:01.916 --> 01:01:04.166
<v Wes>It's like a prompt request via Boost.

01:01:04.166 --> 01:01:04.976
<v Brent>It sure is.

01:01:06.496 --> 01:01:09.206
<v Chris>I mean, you could, I mean, I don't know if you'd want to have it,

01:01:09.206 --> 01:01:11.006
<v Chris>you could point a clinker at Hypervibe.

01:01:11.163 --> 01:01:14.316
<v Wes>I was going to say, and we've had some, the whole collection of listeners who

01:01:14.316 --> 01:01:16.590
<v Wes>have shared in past show notes.

01:01:17.067 --> 01:01:20.096
<v Wes>So you could perhaps the first prompt is go get it to harvest some links from that.

01:01:20.096 --> 01:01:20.426
<v Brent>Yeah.

01:01:20.426 --> 01:01:22.696
<v Wes>And then from there, it could go build out a config for you.

01:01:22.696 --> 01:01:28.366
<v Chris>I think that's a good starting spot. I would, I'd start probably in a web chat

01:01:28.366 --> 01:01:32.086
<v Chris>with one of the free models to just sort of build out a plan.

01:01:32.086 --> 01:01:36.745
<v Chris>talk about, you know, kind of ramble about your intentions, build out a plan, link it to Hypervibe.

01:01:37.134 --> 01:01:39.946
<v Chris>I think there's a re-spin of Fedora that looks really good. You can even point

01:01:39.946 --> 01:01:42.596
<v Chris>it at Oma Archie and see if there's some, you know, design tips you want to

01:01:42.596 --> 01:01:45.736
<v Chris>pull from there and application ideas because it can look at all that stuff

01:01:45.736 --> 01:01:47.176
<v Chris>and sort of build you a master list.

01:01:47.176 --> 01:01:51.036
<v Chris>And then you could have it from there, produce a master prompt that you then

01:01:51.036 --> 01:01:53.330
<v Chris>put into the final clanker on your machine that does the work.

01:01:53.812 --> 01:01:55.449
<v Chris>And you probably get pretty good results with that.

01:01:56.192 --> 01:02:00.246
<v Wes>Yeah. And, you know, the main kind of things too is once you get like the installing

01:02:00.246 --> 01:02:03.596
<v Wes>Nix OS part It can be just pretty much like installing a normal,

01:02:03.596 --> 01:02:04.996
<v Wes>any old Linux distribution.

01:02:05.596 --> 01:02:10.726
<v Wes>It's just getting the, once you have it running and you have a way for a clinker

01:02:10.726 --> 01:02:12.916
<v Wes>to control it, then you're off to the races.

01:02:12.916 --> 01:02:14.586
<v Chris>You are. You are indeed.

01:02:14.586 --> 01:02:17.617
<v Brent>I think I would recommend a very different approach, actually.

01:02:18.656 --> 01:02:21.512
<v Brent>I think you should definitely use a clinker to help you.

01:02:21.959 --> 01:02:27.340
<v Brent>But point it at some of the documentation and then just have it almost like

01:02:27.602 --> 01:02:29.956
<v Brent>interview you about what you want the system to do.

01:02:30.516 --> 01:02:35.317
<v Brent>what kind of things you want in it, and have it explain what it's doing.

01:02:36.854 --> 01:02:39.702
<v Brent>I think the long-term benefit of understanding what's happening under the hood

01:02:39.702 --> 01:02:43.732
<v Brent>for NixOS is really good, even though you don't have to worry about the implementation

01:02:43.732 --> 01:02:48.324
<v Brent>details, like all the syntax and stuff like that. It's really good to understand what's possible.

01:02:48.859 --> 01:02:52.362
<v Brent>And I think starting with some of the documentation, or at least projects that

01:02:52.362 --> 01:02:54.188
<v Brent>are well-regarded, is a good way to go.

01:02:55.308 --> 01:02:58.535
<v Chris>Two more tips. When it's done or when you're at a stopping point,

01:02:58.866 --> 01:03:03.336
<v Chris>have it create like an agents MD that explains your system so that the next

01:03:03.539 --> 01:03:07.312
<v Chris>fresh LM context, when it starts up, it kind of knows your system.

01:03:07.312 --> 01:03:10.692
<v Chris>So a basic layout of where your config's at, where your preferences are,

01:03:10.692 --> 01:03:14.412
<v Chris>the desktop choices, the things you prefer the clanker do, you put all that

01:03:14.412 --> 01:03:17.422
<v Chris>into like an agents MD or some sort of description file about your system.

01:03:17.422 --> 01:03:19.728
<v Chris>And then when you start a new session, you have a point at that.

01:03:20.030 --> 01:03:23.642
<v Chris>So that way it's not rediscovering your next config where it's at every single time and all of that.

01:03:23.642 --> 01:03:25.731
<v Wes>It knows the rebuild command. It knows all the, yeah.

01:03:25.835 --> 01:03:31.572
<v Chris>Yeah, so I think that's probably maybe the most important tip is just have it build one of those.

01:03:31.572 --> 01:03:36.168
<v Chris>And like, yeah, the other thing that would maybe be good for you to consider is,

01:03:36.632 --> 01:03:41.922
<v Chris>second tip, you could ask it to document in a human reviewable format decisions

01:03:41.922 --> 01:03:45.812
<v Chris>that are being made and just kind of it could append and update a markdown file

01:03:45.812 --> 01:03:48.702
<v Chris>or a text file for you that you could review at the end.

01:03:48.702 --> 01:03:52.622
<v Chris>You could have another LLM review, something you could have it also produce

01:03:52.622 --> 01:03:53.702
<v Chris>two documents if you want.

01:03:53.702 --> 01:03:57.002
<v Chris>You could have it produce a technical document for an LLM with no context,

01:03:57.275 --> 01:04:00.833
<v Chris>a fresh LLM session with no context, a technical document that explains everything,

01:04:01.129 --> 01:04:04.132
<v Chris>a fresh LLM with no context needs to get started and work from the beginning

01:04:04.132 --> 01:04:07.368
<v Chris>to modify, change, upgrade, anything to my system.

01:04:07.583 --> 01:04:10.672
<v Chris>And then a second document that's for a human audience that needs to understand

01:04:10.672 --> 01:04:12.767
<v Chris>the decisions that are made and the design choices that were made.

01:04:13.063 --> 01:04:17.498
<v Chris>And it will just continue to update both of those documents for you as it works in that session.

01:04:17.696 --> 01:04:20.652
<v Wes>As long as you maintain the consistency and it sees that every session.

01:04:20.652 --> 01:04:21.231
<v Chris>So remember that.

01:04:21.462 --> 01:04:24.312
<v Wes>Yeah, a devlog is one word you can use for some of those concepts.

01:04:24.312 --> 01:04:24.737
<v Chris>Ooh, okay.

01:04:24.923 --> 01:04:31.001
<v Brent>I have two more quick tips that I think are good for someone starting out. If you are...

01:04:32.115 --> 01:04:35.616
<v Brent>comfortable enough to install things, uh, like in open code,

01:04:36.092 --> 01:04:38.742
<v Brent>having an MCP, uh, is really helpful here.

01:04:38.742 --> 01:04:43.562
<v Brent>So there's MCP dash Nix OS, which is a really great program just to help like

01:04:43.562 --> 01:04:48.562
<v Brent>query what's even available in Nix OS. And it saves a lot of time and mistakes

01:04:48.562 --> 01:04:50.691
<v Brent>and just like querying the internet.

01:04:50.964 --> 01:04:55.283
<v Brent>So, uh, I would recommend that. And then if you are up for it,

01:04:55.608 --> 01:04:59.259
<v Brent>writing yourself just a little skill for NixOS with like,

01:04:59.997 --> 01:05:04.002
<v Brent>common patterns that you particularly like once you get down the road is really

01:05:04.002 --> 01:05:06.386
<v Brent>really helpful or at least has been for me.

01:05:06.722 --> 01:05:10.062
<v Chris>Yeah and if it's not obvious what they might be they will become obvious to

01:05:10.062 --> 01:05:11.602
<v Chris>you as you use it they will become.

01:05:11.602 --> 01:05:13.662
<v Wes>Obvious if you keep having to tell it the same thing yeah.

01:05:13.662 --> 01:05:15.032
<v Chris>There you go if you tell it three times.

01:05:15.032 --> 01:05:16.138
<v Brent>Then you should put it in a skill.

01:05:17.242 --> 01:05:19.712
<v Chris>Moon Knight comes in with two thank you very much for the boost good luck let

01:05:19.712 --> 01:05:25.262
<v Chris>us know how it goes Moon Knight comes in with a boost to 2500 sats and he says

01:05:25.262 --> 01:05:29.048
<v Chris>to all the new Fiat boosters you now have boost power,

01:05:31.522 --> 01:05:35.683
<v Chris>nice i like that that's true thank you moon and i thanks for the sound clip too.

01:05:36.990 --> 01:05:40.368
<v Wes>Uh pabby boosts in with 7108 sats,

01:05:43.961 --> 01:05:44.722
<v Wes>time travel.

01:05:44.722 --> 01:05:48.240
<v Chris>Boost episode 671 love hearing from the time travelers.

01:05:48.512 --> 01:05:52.872
<v Wes>Thanks for the ulanzi smart pixel watch tip i've been looking for one to integrate

01:05:52.872 --> 01:05:57.602
<v Wes>into Home Assistant since I'm not getting around to building the Autrix kit I've had for years.

01:05:58.682 --> 01:06:02.772
<v Wes>Also, on 1.5 speed, Forescan sure sounded a lot like Forescan,

01:06:02.772 --> 01:06:05.652
<v Wes>which had me quite confused for the segment. Had to look at the show notes.

01:06:05.652 --> 01:06:06.629
<v Chris>Yeah, not a great name.

01:06:06.971 --> 01:06:07.302
<v Brent>It's the Ford scanner.

01:06:07.642 --> 01:06:11.462
<v Wes>But, you know, that is the risk you take with the 1.6X.

01:06:11.462 --> 01:06:14.062
<v Chris>I think it's, what could else, yeah, that's right. What else could,

01:06:14.382 --> 01:06:16.613
<v Chris>what did they do? Ford would come after them if they put the D in there.

01:06:16.857 --> 01:06:18.952
<v Chris>They can't put the D in there, so they just had to go with Forescan.

01:06:18.952 --> 01:06:20.332
<v Wes>Forescan? No, that doesn't help.

01:06:20.332 --> 01:06:24.601
<v Chris>Yeah, it doesn't work either. yeah it doesn't work thank you though appreciate it pappy.

01:06:24.961 --> 01:06:27.817
<v Brent>Well zach attack sent in 6 000 sets,

01:06:30.737 --> 01:06:32.774
<v Brent>Loved the episode on hacking yourself.

01:06:33.250 --> 01:06:36.527
<v Brent>I did dislike the episode where everything was in reverse, though.

01:06:37.487 --> 01:06:42.427
<v Brent>Need to still watch your Clanker Therapy video? Yes, that's linked at every

01:06:42.807 --> 01:06:45.667
<v Brent>episode recently, right at the top of the links. For now.

01:06:45.667 --> 01:06:47.258
<v Chris>For now. Almost done linking that, too.

01:06:47.374 --> 01:06:52.817
<v Brent>Something you could take a look at is Rockbox. I'm running it on a SureFans

01:06:52.817 --> 01:06:59.617
<v Brent>F20 for podcast and music. It has better audio than the phone and increased privacy, too.

01:06:59.617 --> 01:07:02.847
<v Chris>That's true. I haven't heard of Rockbox in a hundred years. That's really cool.

01:07:02.847 --> 01:07:07.667
<v Brent>This sounds vaguely familiar. Is that a piece of software you can throw on some

01:07:07.667 --> 01:07:09.787
<v Brent>MP3 devices? I believe so.

01:07:10.027 --> 01:07:10.127
<v Wes>Yeah.

01:07:10.726 --> 01:07:11.007
<v Chris>Yeah.

01:07:11.007 --> 01:07:14.797
<v Brent>I think I might've tried to play with this a long time ago. Long,

01:07:14.797 --> 01:07:16.757
<v Brent>long time. It's still around. There you go.

01:07:16.995 --> 01:07:20.577
<v Chris>Zach, thanks for the memories. Appreciate that. Appreciate that.

01:07:20.577 --> 01:07:23.300
<v Chris>Thank you very much. Sir, I'm here with a row of ducks.

01:07:23.921 --> 01:07:26.887
<v Chris>It's pretty fitting. Thanks for breaking our brains with the reverse episode.

01:07:27.288 --> 01:07:30.187
<v Chris>I was about to blame my podcast app, But how dare you skip the hello,

01:07:30.187 --> 01:07:33.367
<v Chris>friends, and welcome back intro. Anyways, here's some value for the show.

01:07:33.967 --> 01:07:34.457
<v Wes>Thanks.

01:07:34.683 --> 01:07:37.927
<v Chris>Hey, if it got a boost, maybe it was worth it after all. But I think we're done

01:07:37.927 --> 01:07:39.815
<v Chris>doing that. I think we're done doing that.

01:07:41.057 --> 01:07:44.647
<v Wes>Our pal Magnolia, ma'am, comes in with a double row at ducks.

01:07:44.647 --> 01:07:45.028
<v Chris>Hey-oh.

01:07:45.881 --> 01:07:51.027
<v Wes>Two of the same message, but it says, just going off of the title here on 680

01:07:51.027 --> 01:07:55.882
<v Wes>Go Hack Yourself, but I just got started with syncing myself after a Git workflow of mine failed.

01:07:56.323 --> 01:07:58.807
<v Wes>Can't wait to see what the show's about. Ah, that must have been to the pending.

01:07:58.807 --> 01:07:59.287
<v Chris>Yeah, the live one.

01:07:59.287 --> 01:08:00.265
<v Brent>Live boost.

01:08:00.474 --> 01:08:04.157
<v Chris>Well done. Well done. Boosting one before we even started the show,

01:08:04.157 --> 01:08:07.823
<v Chris>man. Well done. Yeah, let us know how it goes with your sync thing set up.

01:08:07.991 --> 01:08:10.127
<v Chris>That should be very interesting.

01:08:11.764 --> 01:08:16.420
<v Chris>Blackhost comes in with a fiat boost of $1,000?

01:08:18.365 --> 01:08:21.067
<v Chris>What? What?

01:08:21.067 --> 01:08:21.627
<v Brent>Wow. What?

01:08:24.987 --> 01:08:25.319
<v Chris>What?

01:08:27.478 --> 01:08:28.726
<v Chris>When did that get in there?

01:08:28.726 --> 01:08:30.826
<v Wes>I don't know. I'm just seeing it.

01:08:31.326 --> 01:08:31.966
<v Chris>When did that come in?

01:08:32.586 --> 01:08:33.936
<v Wes>10, 21 a.m. this morning.

01:08:33.936 --> 01:08:35.386
<v Chris>Wow, we were already on the air.

01:08:35.386 --> 01:08:36.576
<v Wes>That is crazy.

01:08:36.576 --> 01:08:39.766
<v Chris>Wow, Blackhost. Thank you. That's really, that's...

01:08:43.581 --> 01:08:46.206
<v Brent>I got to pick up my jaw here this week. Yeah, thank you.

01:08:46.646 --> 01:08:47.826
<v Chris>No ads placeholder.

01:08:47.826 --> 01:08:48.956
<v Wes>Thank you, Blackhost. That's so sweet.

01:08:48.956 --> 01:08:53.306
<v Chris>That is really amazing. Wow. Wow, wow, wow. Really do appreciate that,

01:08:53.666 --> 01:08:55.730
<v Chris>and it definitely will make a difference. Thank you.

01:08:56.746 --> 01:08:59.726
<v Wes>David from Burlington comes in with $10 fiat Hey.

01:08:59.726 --> 01:09:03.676
<v Chris>You know what? We have a boost sound for that now, right? Should we roll it

01:09:03.676 --> 01:09:06.208
<v Chris>up? Let's try it What do you think? You ready? See if it feels good,

01:09:08.606 --> 01:09:11.616
<v Chris>That's not bad It's not bad Hey folks.

01:09:11.616 --> 01:09:15.456
<v Wes>It occurred to me that while y'all have extensive tech backgrounds I don't know

01:09:15.456 --> 01:09:20.026
<v Wes>if I've ever heard where it all came from Oh boy Can you guys give a quick summary

01:09:20.026 --> 01:09:21.326
<v Wes>of your past work history?

01:09:21.326 --> 01:09:22.009
<v Chris>Oh boy,

01:09:23.415 --> 01:09:24.538
<v Chris>Oh, boy.

01:09:24.538 --> 01:09:26.798
<v Brent>It's basically a virus that infected all of us.

01:09:28.663 --> 01:09:31.518
<v Chris>Could we do like some special on that? Or is that worth it?

01:09:32.078 --> 01:09:34.520
<v Wes>Like in a members we put in the show? I don't know.

01:09:34.648 --> 01:09:35.048
<v Chris>I don't know.

01:09:35.048 --> 01:09:37.448
<v Wes>We'll have to think about that. Thank you for asking, though.

01:09:37.448 --> 01:09:37.758
<v Chris>Yeah.

01:09:38.304 --> 01:09:39.158
<v Wes>And for the support.

01:09:39.158 --> 01:09:41.544
<v Chris>The reason why we don't have time to do it now is because we're old.

01:09:42.020 --> 01:09:43.538
<v Chris>And so there's a lot to it.

01:09:44.098 --> 01:09:45.091
<v Wes>We only remember so much.

01:09:45.898 --> 01:09:49.113
<v Chris>I remember before Linux. I was alive.

01:09:49.276 --> 01:09:51.308
<v Chris>Yeah. So, yeah, that's a great, that could be a great topic.

01:09:51.308 --> 01:09:53.378
<v Chris>We haven't really recapped that in a long time. I suppose some people have some

01:09:53.378 --> 01:09:54.406
<v Chris>questions on that. Thank you, David.

01:09:54.951 --> 01:09:57.028
<v Chris>From Burlington? My Burlington?

01:09:57.028 --> 01:09:57.588
<v Wes>Yeah, which Burlington?

01:09:57.598 --> 01:09:58.258
<v Brent>There's one in Ontario.

01:09:58.278 --> 01:09:59.555
<v Wes>Maybe a zip code boost in there.

01:09:59.967 --> 01:10:04.678
<v Chris>Yeah. I'm not getting beers with them then. But all right, we have some member

01:10:04.678 --> 01:10:07.735
<v Chris>boosts that we'd like to get to. Our buddy Anonymous is back.

01:10:07.989 --> 01:10:12.378
<v Chris>Do you guys really use Firefox? You talk about a record number of tabs.

01:10:12.378 --> 01:10:13.556
<v Chris>Have we mentioned that? I don't know that.

01:10:13.928 --> 01:10:16.638
<v Chris>But I don't believe it. I've used it on and off for years, and I keep having

01:10:16.638 --> 01:10:20.987
<v Chris>to bail back to Chrome. I'm trying again, but after a day, too, it just hangs on me.

01:10:21.405 --> 01:10:25.364
<v Chris>I have to kill all Firefox. I got 90 gigs of RAM, a 22-core Xeon,

01:10:25.544 --> 01:10:26.977
<v Chris>50 tabs really shouldn't hang.

01:10:27.680 --> 01:10:28.278
<v Brent>Wow.

01:10:29.258 --> 01:10:33.554
<v Wes>I never have it hang. And it's probably open the entire time my laptop is online.

01:10:33.723 --> 01:10:36.859
<v Chris>I have in the past had issues, but it's been years.

01:10:37.032 --> 01:10:38.130
<v Wes>Yeah, interesting.

01:10:38.582 --> 01:10:42.358
<v Brent>For the question of if we, you know, do we actually use Firefox,

01:10:42.358 --> 01:10:45.558
<v Brent>I'd say it's my permanent first choice.

01:10:46.038 --> 01:10:50.808
<v Brent>I mostly only use Chromium when something goes wrong and the website's not built

01:10:50.808 --> 01:10:54.927
<v Brent>for Firefox or for the show because I need multiple browsers.

01:10:55.734 --> 01:10:59.918
<v Brent>And I would say I probably have the most tabs and windows open out of all of

01:10:59.918 --> 01:11:01.558
<v Brent>us, probably out of you guys combined.

01:11:01.898 --> 01:11:08.268
<v Brent>So there's that. But I only really used to have issues on low-end hardware where

01:11:08.268 --> 01:11:09.213
<v Brent>I didn't have enough RAM.

01:11:09.422 --> 01:11:15.218
<v Brent>But never experienced the slowness or anything like that unless I was filling

01:11:15.218 --> 01:11:20.394
<v Brent>up the RAM. So not sure what your issue is. Hopefully you can figure it out.

01:11:21.497 --> 01:11:25.452
<v Chris>I love this. On my home desktop, I do a boot, Garuda, and Arch for daily driver

01:11:25.452 --> 01:11:28.631
<v Chris>and Windows 11 for occasional work applications that, well, I couldn't port to wine.

01:11:29.008 --> 01:11:31.512
<v Chris>My 15-year-old plays video games, Minecraft, Steam on Garuda.

01:11:31.512 --> 01:11:33.989
<v Chris>Yesterday, my six-year-old came up to me while I was working and said,

01:11:34.198 --> 01:11:36.439
<v Chris>Dad, can you boot into Linux? Windows is boring.

01:11:37.622 --> 01:11:39.572
<v Brent>That's amazing. Nice.

01:11:39.572 --> 01:11:40.062
<v Wes>Aw.

01:11:40.496 --> 01:11:44.612
<v Chris>He says, with all of the success with the reverse episode, how about a randomness

01:11:44.612 --> 01:11:46.602
<v Chris>episode? You could do the segments in random order.

01:11:46.602 --> 01:11:47.022
<v Brent>Whoa.

01:11:47.022 --> 01:11:47.486
<v Chris>Good luck.

01:11:48.062 --> 01:11:49.102
<v Brent>Yeah, that won't be harder at all.

01:11:49.302 --> 01:11:52.082
<v Wes>Curse on the show. I don't know. You really want to melt our brains.

01:11:52.082 --> 01:11:54.772
<v Chris>It'd be fun, too, if we just literally rolled a dice or something and we didn't

01:11:54.772 --> 01:11:57.904
<v Chris>even know it just totally ran out. There's something to that.

01:11:58.502 --> 01:12:01.122
<v Wes>Or each MP3 that gets generated is a unique order.

01:12:01.362 --> 01:12:03.102
<v Chris>Different order. Boy, if we could pull that off.

01:12:03.742 --> 01:12:05.637
<v Brent>Why do we do this to ourselves? Dynamic segments.

01:12:08.782 --> 01:12:12.912
<v Wes>Anton member boosts in. For the Web Boost anonymous username issue,

01:12:12.912 --> 01:12:16.812
<v Wes>the quickest fix might be a small confirmation pop-up when the username field

01:12:16.812 --> 01:12:20.242
<v Wes>is left blank or default and the user clicks the member boost or checkout button.

01:12:20.242 --> 01:12:23.597
<v Wes>the pop-up could confirm that they meant to send it anonymously.

01:12:23.777 --> 01:12:26.362
<v Chris>I don't love a pop-up, but that is not a bad idea.

01:12:27.282 --> 01:12:29.234
<v Wes>Thank you for thinking there, Anton.

01:12:29.994 --> 01:12:35.962
<v Brent>Well, Jimmy's here with a free members boost, which you could do at boost.jupiterbroadcasting.com

01:12:35.962 --> 01:12:36.896
<v Brent>if you're so interested.

01:12:37.367 --> 01:12:42.372
<v Brent>How do you reconcile the privacy considerations of AI? It can be amazingly helpful,

01:12:42.372 --> 01:12:45.848
<v Brent>of course, but they get a lot of sensitive personal info.

01:12:46.758 --> 01:12:49.352
<v Brent>That's what's holding me back. A local model would fix that,

01:12:49.352 --> 01:12:53.097
<v Brent>but of course the VRAM required for good models is quite prohibitive.

01:12:54.088 --> 01:12:59.388
<v Brent>How can you be running graphene, but pumping configs into the AI machine?

01:12:59.806 --> 01:13:03.550
<v Chris>I guess it, I mean, do you consider Nix configs to be confidential information?

01:13:03.915 --> 01:13:04.816
<v Wes>I generally don't.

01:13:04.816 --> 01:13:05.196
<v Chris>No, I don't either.

01:13:05.196 --> 01:13:06.936
<v Wes>Especially for something I might consider putting on.

01:13:07.436 --> 01:13:08.606
<v Chris>I post them on GitHub, yeah.

01:13:08.606 --> 01:13:11.996
<v Brent>You guys don't keep your bank account information in your Nix OS config?

01:13:11.996 --> 01:13:12.636
<v Wes>Not anymore.

01:13:13.596 --> 01:13:16.276
<v Chris>No, now I don't know. Declarative banking.

01:13:18.574 --> 01:13:23.656
<v Chris>So, like, if I were putting in personal information, I suppose that would be one thing.

01:13:24.616 --> 01:13:28.151
<v Wes>Yeah, you know, health stuff, addresses, account number, you know.

01:13:28.303 --> 01:13:32.406
<v Wes>So there can be ways you want to have concerns about that. And some information

01:13:32.406 --> 01:13:36.106
<v Wes>will leak, right, if you ask it questions about how do I set up X thing or I'm

01:13:36.106 --> 01:13:37.156
<v Wes>trying to solve this problem.

01:13:37.576 --> 01:13:41.906
<v Wes>But the question is what risks – how does that fit into your model of – Right.

01:13:41.906 --> 01:13:46.343
<v Chris>In my model, while that is a risk, it's actually less of a risk than like,

01:13:46.465 --> 01:13:50.076
<v Chris>you know, data brokers that are monitoring all of my transactions or,

01:13:50.076 --> 01:13:53.206
<v Chris>you know, government surveillance or Google surveillance.

01:13:53.206 --> 01:13:58.082
<v Chris>or, you know, like those are actually more prevalent in my day-to-day life that I already live with.

01:13:58.684 --> 01:14:05.058
<v Chris>I actually wouldn't mind if they did train on my Nix configs and they got better at it.

01:14:05.743 --> 01:14:10.006
<v Chris>So in a way, I kind of want them to, I don't think the models I'm using are

01:14:10.006 --> 01:14:13.646
<v Chris>using my data for training, but if they wanted to become better at Nix,

01:14:13.646 --> 01:14:15.136
<v Chris>I really would not have any problem with that.

01:14:15.495 --> 01:14:18.056
<v Wes>I think of it too as sort of like a controller agency thing.

01:14:18.056 --> 01:14:21.676
<v Wes>Like for me, I mean, yes, the Graphene OS sort of privacy stuff,

01:14:22.376 --> 01:14:26.026
<v Wes>is great, but i really like that it makes me actually feel like i control the

01:14:26.026 --> 01:14:28.316
<v Wes>android phone that's it and that's where it's like with the ai

01:14:28.716 --> 01:14:33.046
<v Wes>i might make mistakes or whatever um or be lazy but it's ultimately my choice

01:14:33.046 --> 01:14:36.216
<v Wes>of like do i engage with it what do i put into that prompt before i hit enter

01:14:36.596 --> 01:14:38.716
<v Wes>and stock android didn't really feel like that.

01:14:39.592 --> 01:14:45.152
<v Brent>I have uh hmm yeah various categories like you say chris um nix west configs,

01:14:45.616 --> 01:14:47.851
<v Brent>totally good to send those out i think they're,

01:14:48.763 --> 01:14:53.183
<v Brent>not private really at all. Um, but I do hesitate on some topics.

01:14:53.183 --> 01:14:58.113
<v Brent>Like there's a couple topics that I have that like accounting automations and

01:14:58.113 --> 01:15:02.538
<v Brent>stuff that I have sitting in the queue for when I feel like,

01:15:03.293 --> 01:15:08.749
<v Brent>there's some great option for like privacy, local AI stuff. So I can't wait.

01:15:09.202 --> 01:15:13.383
<v Brent>But the other thing I would say is, um, there are a couple of things you could do about that.

01:15:13.383 --> 01:15:18.533
<v Brent>Like I, I don't trust myself completely to to keep myself safe so i put a couple

01:15:18.533 --> 01:15:23.173
<v Brent>layers like there's uh an mcp that you can add i'm trying to see it here that

01:15:23.173 --> 01:15:26.187
<v Brent>i've added to my open code just to like

01:15:26.623 --> 01:15:33.467
<v Brent>pull out um secrets and bank out and credit card numbers so it just goes through and,

01:15:34.239 --> 01:15:38.223
<v Brent>sees if you've accidentally you know put anything like that in there and so

01:15:38.223 --> 01:15:41.663
<v Brent>there's a couple things you can do just for peace of mind maybe before.

01:15:41.663 --> 01:15:42.493
<v Chris>It hits the model.

01:15:42.493 --> 01:15:42.973
<v Brent>Yeah uh.

01:15:43.873 --> 01:15:47.223
<v Chris>Wes has talked about also like at the injector level if you have an injector

01:15:47.223 --> 01:15:51.780
<v Chris>sitting between your client and the cloud service you can have something that's,

01:15:52.500 --> 01:15:56.413
<v Chris>looks like it's the it looks like the api to the client but it's actually sitting

01:15:56.413 --> 01:16:00.063
<v Chris>between the cloud model and the client and it's looking for sensitive information yeah.

01:16:00.063 --> 01:16:02.983
<v Wes>We've talked about a few of these uh key g proxies another one there's a few

01:16:02.983 --> 01:16:06.213
<v Wes>options out there now and you could also consider this is a lot more technical

01:16:06.213 --> 01:16:10.443
<v Wes>setup but if you do uh entertain something like renting a cloud GPU and then

01:16:10.443 --> 01:16:14.323
<v Wes>running your own self-hosted models, that has a lot of nice privacy implications too.

01:16:14.323 --> 01:16:17.183
<v Chris>And maybe if you only need it for certain batch work or you want to build a

01:16:17.183 --> 01:16:19.963
<v Chris>certain thing and you're not going on day-to-day stuff, you're not running an

01:16:19.963 --> 01:16:22.223
<v Chris>agent or something like that, you're just using it for that type of work,

01:16:22.223 --> 01:16:26.506
<v Chris>a rented GPU with a self-hosted model, well, then you've got full control.

01:16:27.833 --> 01:16:30.198
<v Chris>You've got out of it. So that's a good question. Thank you, Jimmy.

01:16:30.842 --> 01:16:35.013
<v Chris>Pabby comes in with a free time travel member boost.

01:16:35.713 --> 01:16:37.953
<v Chris>So great. This is now possible, Pabby writes. Thank you, Pabby,

01:16:37.953 --> 01:16:40.393
<v Chris>and I love the time travel boost. But you've got to say what episode you're

01:16:40.393 --> 01:16:43.037
<v Chris>at when you time travel. Otherwise, we don't know from what time you're at.

01:16:45.053 --> 01:16:48.361
<v Wes>Digital Jolt comes in with a member boost.

01:16:48.361 --> 01:16:48.821
<v Chris>All right.

01:16:49.181 --> 01:16:53.221
<v Wes>I'm a bit late, but just wanted to say I really enjoyed the Reverso episode.

01:16:53.661 --> 01:16:56.341
<v Wes>It took me a minute to remember that you'd mentioned it a few weeks ago,

01:16:56.661 --> 01:17:00.021
<v Wes>but I smiled every time I heard one of the jingles appear in the wrong place.

01:17:00.021 --> 01:17:00.231
<v Chris>Good.

01:17:00.231 --> 01:17:00.741
<v Wes>All right.

01:17:00.741 --> 01:17:01.081
<v Chris>I'm glad.

01:17:01.381 --> 01:17:01.741
<v Wes>Love that.

01:17:02.729 --> 01:17:08.721
<v Brent>Well, Paul member boosted in. Where are you on the ad block is privacy topic.

01:17:09.101 --> 01:17:12.881
<v Brent>I don't like giving money to corporate overlords. This is the main thing holding

01:17:12.881 --> 01:17:15.784
<v Brent>me back from YouTube Premium right now, for instance.

01:17:16.318 --> 01:17:21.971
<v Brent>I prefer to support a few selected creators. My willingness to spend money is

01:17:21.971 --> 01:17:23.952
<v Brent>limited, leaving many creators out.

01:17:25.618 --> 01:17:32.481
<v Chris>Yeah, that's a tricky one because the ad blocking, at least in the browser, it's not just about ads.

01:17:32.481 --> 01:17:37.761
<v Chris>It's also about performance and readability, obnoxiousness with the pop-ups.

01:17:37.761 --> 01:17:40.811
<v Chris>So there's other things now that are also a factor there. So it's not just like

01:17:40.811 --> 01:17:42.798
<v Chris>a statement on trying to get the content for free.

01:17:43.693 --> 01:17:46.868
<v Chris>And I do tend to agree. I think I kind of align with you, Paul.

01:17:47.461 --> 01:17:51.379
<v Chris>Like I think Pharaonics is a great membership. LWN in our space is a great membership.

01:17:52.801 --> 01:17:57.254
<v Chris>We try to make the Jupiter signal and unplugged core contribution a,

01:17:57.608 --> 01:18:00.870
<v Chris>you know, really as much high signal as we can worth it membership.

01:18:01.520 --> 01:18:05.851
<v Chris>But I have over the years decided because I have a family that watches YouTube,

01:18:05.851 --> 01:18:10.361
<v Chris>I did subscribe for YouTube premium to avoid that. and the YouTube experience is notably better.

01:18:11.001 --> 01:18:11.361
<v Wes>For sure.

01:18:11.361 --> 01:18:14.411
<v Chris>When you sit down on an account that doesn't have it, I cannot believe how much

01:18:14.411 --> 01:18:17.101
<v Chris>ads they're slamming in there now. And I just don't want my kids seeing all that.

01:18:18.281 --> 01:18:21.161
<v Wes>As for the sort of, is it piracy or not? I think it's one of those,

01:18:21.161 --> 01:18:23.181
<v Wes>like, you know, it's sort of a spectrum.

01:18:24.067 --> 01:18:27.700
<v Wes>The world exists where both people are dependent on ads and,

01:18:28.581 --> 01:18:31.411
<v Wes>one, local control of what your computer does is important.

01:18:31.411 --> 01:18:34.421
<v Wes>And, you know, ad blockers are a known technology that exists.

01:18:34.421 --> 01:18:39.187
<v Wes>So I think it is true that choosing that perhaps has a moral dimension, but...

01:18:39.981 --> 01:18:43.490
<v Wes>The idea that, you know, you only need to make one choice for every single creator

01:18:43.810 --> 01:18:44.740
<v Wes>doesn't seem right to me either.

01:18:44.740 --> 01:18:46.470
<v Chris>Yeah, it is a nuanced problem.

01:18:47.173 --> 01:18:51.817
<v Brent>I think for me, this is a really good one. I think about this all the time.

01:18:52.108 --> 01:18:57.720
<v Brent>I've kind of landed on ad blocking everything because I feel like very naively,

01:18:57.720 --> 01:19:04.010
<v Brent>actually, I feel like we could find a better way to fund things instead of using ads.

01:19:04.010 --> 01:19:09.650
<v Brent>So if they're not making money on ads, maybe they can find a better way.

01:19:09.650 --> 01:19:11.636
<v Brent>but I'm sure it would just be more draconian.

01:19:12.239 --> 01:19:15.270
<v Chris>The problem is it's always kind of eventually a race to the bottom.

01:19:15.270 --> 01:19:18.080
<v Chris>You always have to add more ads. It's just the way it goes.

01:19:18.080 --> 01:19:23.570
<v Brent>Yeah. I would say one option is, let's say you're using Adblock Plus or something

01:19:23.570 --> 01:19:28.801
<v Brent>like that, you could disable it on websites that you want to get the revenue.

01:19:29.990 --> 01:19:30.937
<v Chris>I do that on Photopea.

01:19:32.030 --> 01:19:32.190
<v Brent>Yeah.

01:19:34.090 --> 01:19:37.350
<v Chris>They ask, and I think it's worth it. Photopea, they deserve my ad revenue.

01:19:37.350 --> 01:19:38.330
<v Chris>That's another one I should probably...

01:19:38.330 --> 01:19:40.730
<v Wes>It does give you a chance to find out, too, like how far did they go?

01:19:41.490 --> 01:19:44.370
<v Wes>Are these like horrible ads or is it a reasonable sort of ad placement that

01:19:44.370 --> 01:19:45.640
<v Wes>isn't actually that bad in practice?

01:19:45.640 --> 01:19:46.280
<v Chris>Good question.

01:19:46.280 --> 01:19:49.040
<v Brent>The last thing I would add is like the internet is completely unusable without

01:19:49.040 --> 01:19:51.190
<v Brent>it. So there's that, right?

01:19:51.710 --> 01:19:55.680
<v Chris>Yeah, it's bad. All right. I'll wrap us up. Senior Smile comes in with a free

01:19:55.680 --> 01:19:58.748
<v Chris>member boost. Papa John was correct. I forgot to put my username last time.

01:19:59.073 --> 01:20:02.620
<v Chris>I said a USD boost referencing my previous anonymous boost about K8s.

01:20:02.620 --> 01:20:05.030
<v Chris>But you read them in reverse order. Oh, sorry.

01:20:05.030 --> 01:20:05.720
<v Brent>We didn't catch that.

01:20:05.720 --> 01:20:06.770
<v Wes>We don't always get that right.

01:20:07.130 --> 01:20:10.334
<v Chris>Yeah. Sorry, Senior Smile. And then Bearded Zero wraps us up.

01:20:10.938 --> 01:20:14.690
<v Chris>I enjoyed the backwards episode, and I got to say, I think doing the boost and

01:20:14.690 --> 01:20:16.215
<v Chris>feedback may have been a good option.

01:20:16.586 --> 01:20:19.540
<v Chris>It lets it bring the feedback into the show and kind of feels like a bookend

01:20:19.540 --> 01:20:21.004
<v Chris>for the last episode. Just a thought.

01:20:21.439 --> 01:20:25.213
<v Chris>I also felt it was kind of nice to warm up with the feedback and the boost.

01:20:25.830 --> 01:20:30.010
<v Chris>And I think if I were going to always do the show in the order that felt the

01:20:30.010 --> 01:20:31.771
<v Chris>best, that might be the order I'd do it in.

01:20:32.391 --> 01:20:35.321
<v Chris>But if you think about it, you see that, you know, it's like if you're new to

01:20:35.321 --> 01:20:39.071
<v Chris>the show and it takes us 30 minutes or whatever to get to the actual content.

01:20:39.071 --> 01:20:39.911
<v Wes>Not everyone loves that.

01:20:39.911 --> 01:20:43.791
<v Chris>Not a good impression. But I liked it too, Bearded Zero. I liked it too.

01:20:43.791 --> 01:20:47.310
<v Chris>Thank you, everybody, and everybody who boosted below the 2,000 sat cutoff and all of that.

01:20:47.718 --> 01:20:52.991
<v Chris>We really appreciate you. We really had a banger. So we had 124,000 sat sent in.

01:20:52.991 --> 01:20:57.461
<v Chris>But then when you bring in that fiat boost, I mean, we should take a moment

01:20:57.461 --> 01:21:00.981
<v Chris>again. I mean, that was really something. That was really something.

01:21:00.981 --> 01:21:04.921
<v Chris>And $1,000 came into the show today from one single contributor, and we needed it.

01:21:05.541 --> 01:21:07.741
<v Chris>It has been tight behind the scenes. It was.

01:21:09.231 --> 01:21:13.221
<v Brent>That works out to be 1.29 million Satoshis.

01:21:14.454 --> 01:21:16.819
<v Chris>Wow. Look at you doing the math.

01:21:16.991 --> 01:21:20.241
<v Brent>No, it wasn't me. It was hybrid sarcasm. Thank you, hybrid sarcasm in the chat.

01:21:20.241 --> 01:21:23.451
<v Chris>I mean, that's got to put Blackhost on the leaderboard for the year.

01:21:23.451 --> 01:21:24.471
<v Brent>I mean, there you go.

01:21:24.471 --> 01:21:24.841
<v Chris>Right there.

01:21:24.841 --> 01:21:27.051
<v Wes>Yeah, maybe we'll have to do like a Boosties preview sometime soon.

01:21:27.051 --> 01:21:30.321
<v Chris>Yeah. So when you bring it all together and you take the fiat boost and you

01:21:30.321 --> 01:21:33.941
<v Chris>convert them to the current Satoshi value and you just smash it all to one line

01:21:33.941 --> 01:21:36.281
<v Chris>item, we had 16 of your stream stats.

01:21:36.281 --> 01:21:41.151
<v Chris>That's 27,485 Satoshis. When you combine it all together, it gives us,

01:21:41.151 --> 01:21:49.121
<v Chris>I mean, a very impressive grand total of 1,458,305 Satoshis.

01:21:49.501 --> 01:21:50.081
<v Wes>That's crazy.

01:21:50.401 --> 01:21:50.881
<v Brent>What?

01:22:03.570 --> 01:22:06.268
<v Chris>If you'd like to support the show, you can become a member, put it on autopilot.

01:22:06.268 --> 01:22:09.978
<v Chris>You get the bootleg or the ad-free version of the show, and you get a free boost

01:22:09.978 --> 01:22:12.290
<v Chris>every single week. Or support us one-off.

01:22:12.406 --> 01:22:14.758
<v Chris>Like a particular show, want to get your thought on here, just support us.

01:22:14.758 --> 01:22:18.901
<v Chris>Go to boost.jupiterbroadcasting.com. You can send a boost with Fiat or Sats.

01:22:22.100 --> 01:22:23.494
<v Chris>It's crazy. Wow!

01:22:26.802 --> 01:22:30.128
<v Chris>All right. And thank you, everyone, who supported the show. We really appreciate

01:22:30.128 --> 01:22:33.075
<v Chris>it all. With that, it's time for some screaming picks.

01:22:34.812 --> 01:22:39.584
<v Chris>All right. Buckle up, boys, because this week we're talking about SSH Clipboard,

01:22:39.803 --> 01:22:41.864
<v Chris>and this could change your life.

01:22:42.212 --> 01:22:47.443
<v Chris>A peer-to-peer Clipboard sync server over SSH. Copy anything on one machine, paste it on another.

01:22:48.151 --> 01:22:51.309
<v Chris>A picture, a block of code, it doesn't matter.

01:22:51.558 --> 01:22:55.668
<v Chris>You copy here, you paste there. Rich text content doesn't matter.

01:22:55.668 --> 01:22:59.538
<v Chris>It keeps the native formats intact. Native formats, not just text,

01:22:59.538 --> 01:23:04.158
<v Chris>preserving images, rich content, things like screenshots, something you might

01:23:04.158 --> 01:23:07.116
<v Chris>want to put into a ticket maybe. You want to take it from one machine and put it on the other.

01:23:07.389 --> 01:23:09.998
<v Chris>Maybe you've got a clanker that's working on something and doesn't have to save

01:23:09.998 --> 01:23:13.432
<v Chris>it to the file system anymore. It can actually just put it right in your freaking clipboard. Or...

01:23:14.587 --> 01:23:17.923
<v Chris>Or if you put it on multiple machines, the Clanker could put it on the machine's

01:23:17.923 --> 01:23:19.016
<v Chris>clipboard you tell it to.

01:23:19.167 --> 01:23:21.923
<v Wes>You're saying I should be using this instead of netcatting things around.

01:23:21.923 --> 01:23:25.727
<v Chris>This is actually an option to reduce your netcat dependency.

01:23:25.970 --> 01:23:27.163
<v Wes>It looks pretty new, huh?

01:23:27.163 --> 01:23:28.853
<v Chris>It is very new, I should mention.

01:23:28.853 --> 01:23:32.363
<v Wes>From Justin Schroeder and Andrew Boyer, the contributors so far.

01:23:32.363 --> 01:23:35.008
<v Chris>Yeah, yeah, yeah. It is very new. It is very new.

01:23:35.449 --> 01:23:38.563
<v Wes>But I think there's been several attempts at various tools like these over the

01:23:38.563 --> 01:23:41.776
<v Wes>years. I think when I was first getting into Linux, I remember trying to roll something myself.

01:23:42.553 --> 01:23:45.933
<v Wes>It's nice to see something that looks like a structured, well-thought-out approach.

01:23:45.933 --> 01:23:48.373
<v Chris>Yeah, I went through it. I dug through it, and I was very impressed.

01:23:48.373 --> 01:23:52.743
<v Chris>It's early days, but very, very, very impressed with what they've done so far.

01:23:52.743 --> 01:23:56.393
<v Chris>And, of course, if you've got SSH keys set up, just you reuse those,

01:23:56.393 --> 01:23:57.810
<v Chris>so it handles all of that for you.

01:23:58.448 --> 01:24:01.233
<v Chris>It's cross-platforms. You can move stuff between Mac and Linux.

01:24:01.233 --> 01:24:04.713
<v Chris>You can reuse the copy-paste mechanism there.

01:24:04.713 --> 01:24:07.763
<v Wes>It won't break your other clipboard managers. That's good. Right,

01:24:07.763 --> 01:24:12.133
<v Wes>it's using Rust and Ratatouille, which is just turning out to be such a great library.

01:24:12.133 --> 01:24:12.533
<v Brent>Yes.

01:24:12.953 --> 01:24:15.713
<v Chris>I think it'll be packaged in multiple ways right now. Like, they're kind of

01:24:15.713 --> 01:24:17.634
<v Chris>the recommended path is NPM.

01:24:18.513 --> 01:24:22.707
<v Chris>I did look into it. You could probably package this in NIC. It's pretty straightforward.

01:24:23.253 --> 01:24:27.832
<v Chris>So it is very doable. And it is MIT licensed. MIT licensed.

01:24:28.459 --> 01:24:30.183
<v Wes>Well, that has been Blackhost Pick of the Week.

01:24:30.409 --> 01:24:33.653
<v Chris>Yeah. Brought to you by Blackhost.

01:24:36.293 --> 01:24:36.940
<v Chris>I had another one.

01:24:37.276 --> 01:24:40.113
<v Wes>Oh, a sneaky pic, you didn't even put it in the dog.

01:24:40.113 --> 01:24:41.963
<v Chris>I didn't put it in the dog, so I don't remember what it was.

01:24:41.963 --> 01:24:42.513
<v Wes>Though.

01:24:45.493 --> 01:24:46.973
<v Wes>So you're saying you have a pic for next week?

01:24:47.073 --> 01:24:47.873
<v Brent>It's in his clipboard.

01:24:47.873 --> 01:24:49.473
<v Wes>It's been a long time since we've done it.

01:24:49.473 --> 01:24:51.773
<v Chris>Yeah, you should have set it up. It probably is in my clipboard.

01:24:51.773 --> 01:24:53.893
<v Chris>Oh my god, that's hilarious.

01:24:54.353 --> 01:24:56.053
<v Wes>It's been a while since we've had a single pic pic.

01:24:56.573 --> 01:25:01.293
<v Chris>I know. Well, that is a banger of a pic. I just can't remember what my other

01:25:01.293 --> 01:25:02.873
<v Chris>pic was. I can't remember what it was.

01:25:02.873 --> 01:25:03.813
<v Brent>It's probably a single pic.

01:25:07.752 --> 01:25:10.141
<v Chris>No, I was pretty proud of it. It's funny that I can't remember it now.

01:25:10.141 --> 01:25:13.918
<v Chris>That's what I get for editing a text editor first. So we'll sneak it in the next episode.

01:25:14.311 --> 01:25:16.581
<v Chris>And if you've got a banger pick, you can always let us know too.

01:25:16.581 --> 01:25:18.791
<v Chris>We love it when we feature an audience pick. We'll put it in the feedback or

01:25:18.791 --> 01:25:20.163
<v Chris>we might even put it in the main pick segment.

01:25:20.698 --> 01:25:26.449
<v Chris>So you can boost.jupiterbroadcasting.com that or go to linuxunplugged.com slash contact for that.

01:25:26.785 --> 01:25:29.611
<v Chris>All right. Well, that wraps us up. Links to everything we talked about today

01:25:29.611 --> 01:25:34.131
<v Chris>over at the website, linuxunplugged.com slash 681 or jupiterbroadcasting.com

01:25:34.131 --> 01:25:36.340
<v Chris>for the links. and all the shows.

01:25:36.833 --> 01:25:39.301
<v Chris>And if you want to just, you know, chew away at some extra stuff,

01:25:39.301 --> 01:25:41.291
<v Chris>you want to know what we talked about, anything like that, tell them,

01:25:41.291 --> 01:25:43.581
<v Chris>Wes. Tell them about these fancy metadatas that we got.

01:25:43.961 --> 01:25:47.341
<v Wes>Yeah, well, the first level is Cloud Chapters. Yeah, that's right,

01:25:47.341 --> 01:25:50.783
<v Wes>a JSON file with all the information about where our segments are and what they are.

01:25:51.143 --> 01:25:55.771
<v Wes>And you know what? If you look in that, you get custom Drew-made chapters.

01:25:55.771 --> 01:25:56.041
<v Chris>They're great.

01:25:56.041 --> 01:25:57.621
<v Wes>Using all that editor cleverness.

01:25:57.621 --> 01:25:58.141
<v Chris>They are great.

01:25:58.841 --> 01:26:04.023
<v Wes>But if you need more details, check out the VTT file, or if you must, the SRT file.

01:26:04.343 --> 01:26:07.798
<v Wes>We have subtitles, transcripts, right? Available in the RSS feed itself.

01:26:08.366 --> 01:26:12.251
<v Wes>And if you want to see our ugly mugs, there might even be an MP4.

01:26:12.251 --> 01:26:15.809
<v Chris>There could be with screencast stuff and all that of what we're talking about.

01:26:16.203 --> 01:26:19.181
<v Chris>I'll just say again, thank you to Blackhost. You know, it strikes me.

01:26:19.181 --> 01:26:22.731
<v Chris>I was thinking about it this week, like all four of us, the three of us here

01:26:22.731 --> 01:26:25.931
<v Chris>on the show and also Drew, you know, we really have shaped our lives around

01:26:25.931 --> 01:26:28.857
<v Chris>the show. It's that level of dedication. It really drives our life.

01:26:29.661 --> 01:26:32.481
<v Chris>It's the defining clock and heartbeat of our day-to-day life.

01:26:32.481 --> 01:26:35.799
<v Chris>And so when you see support by folks, like we saw this week,

01:26:36.188 --> 01:26:38.731
<v Chris>it really does validate putting that kind of effort and energy and building

01:26:38.731 --> 01:26:41.491
<v Chris>a life around the show to make it possible. So that way we're here every single

01:26:41.491 --> 01:26:43.949
<v Chris>week going on like, what, 13 or something years?

01:26:44.192 --> 01:26:44.591
<v Wes>Crazy.

01:26:44.591 --> 01:26:48.332
<v Chris>Not missing a beat. So we really do appreciate the support. Thank you, everybody.

01:26:48.772 --> 01:26:51.691
<v Chris>Like I said, links at the website. And of course, we'd love it if you joined

01:26:51.691 --> 01:26:53.540
<v Chris>us live. Make it a live vibe on a Sunday.

01:26:57.308 --> 01:27:01.733
<v Chris>Get past the Sunday blues by making it a Tuesday on a Sunday over at jblive.tv

01:27:01.733 --> 01:27:04.963
<v Chris>in your local time at jupyterbroadcasting.com slash calendar or stream live

01:27:04.963 --> 01:27:07.721
<v Chris>in your podcasting 2.0 app of choice.

01:27:08.018 --> 01:27:10.543
<v Chris>And, of course, the Mumble Room's going. We've got details on the website.

01:27:10.543 --> 01:27:15.865
<v Chris>The Mumble Room gets a low latency, high quality Opus stream.

01:27:16.464 --> 01:27:19.813
<v Chris>It's pretty nice. Shout out to our members for making the show possible and

01:27:19.813 --> 01:27:22.975
<v Chris>keeping us going. Everybody who supports us at boost.jupyterbroadcasting.com.

01:27:23.359 --> 01:27:26.103
<v Chris>But that's it for this week's episode. Thank you so much for joining us,

01:27:26.103 --> 01:27:29.234
<v Chris>and we'll see you back here next Tuesday, as in Sunday.

