WEBVTT

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

00:00:16.513 --> 00:00:17.533
<v Wes>My name is Wes.

00:00:17.753 --> 00:00:18.473
<v Brent>And my name is Brent.

00:00:19.033 --> 00:00:24.293
<v Chris>Hello, gentlemen. Coming up on this episode, it's time for a GitHub diet.

00:00:24.513 --> 00:00:28.253
<v Chris>We'll get into the tools helping us cut back. But first, our favorite features

00:00:28.253 --> 00:00:31.193
<v Chris>in Linux 7.0, and then we'll round the show out with some great boosts,

00:00:31.473 --> 00:00:33.193
<v Chris>some picks, and a lot more.

00:00:33.313 --> 00:00:37.213
<v Chris>So before we get into all of that, let's say time-appropriate greetings to our

00:00:37.213 --> 00:00:39.133
<v Chris>virtual lug. Hello, mumble room.

00:00:39.773 --> 00:00:42.553
<v Mumble>Hello. Hey, Chris. Hello, Brent.

00:00:42.833 --> 00:00:45.533
<v Chris>Hey, guys. Hello, all of you up there and quiet listening, too.

00:00:46.353 --> 00:00:47.273
<v Wes>What a crew we got.

00:00:47.473 --> 00:00:50.633
<v Chris>Thanks for being here. Of course, you can join our Mumble Room every Sunday.

00:00:51.453 --> 00:00:54.033
<v Chris>Details are on our website, and we'd love it if you join us.

00:00:54.133 --> 00:00:56.393
<v Chris>It's pretty great. And look at all these years, Mumble's still here.

00:00:57.033 --> 00:01:00.833
<v Chris>Show going strong for like 12-plus years, almost 13 years. Mumble Room's still

00:01:00.833 --> 00:01:02.233
<v Chris>here with us the whole way.

00:01:03.133 --> 00:01:06.533
<v Chris>Speaking of being with us, go check out Define.net slash Unplugged.

00:01:06.653 --> 00:01:10.973
<v Chris>Go meet Manage Nebula from Define Networking. It's a decentralized VPN built

00:01:10.973 --> 00:01:15.513
<v Chris>on the open-source Nebula platform, which we love.

00:01:16.033 --> 00:01:19.433
<v Chris>So it's more resilient than your average VPN out there.

00:01:19.553 --> 00:01:23.273
<v Chris>You get more control than anybody else. And it's a network design that doesn't

00:01:23.273 --> 00:01:24.693
<v Chris>depend on a single choke point.

00:01:25.433 --> 00:01:28.313
<v Chris>Nebula was originally engineered to secure Slack's global infrastructure.

00:01:28.313 --> 00:01:31.213
<v Chris>And now you can put that same architecture to work for yourself,

00:01:31.353 --> 00:01:33.393
<v Chris>for your enterprise or your home lab.

00:01:33.533 --> 00:01:35.773
<v Chris>Try out Manage Nebula for free on 100 hosts.

00:01:35.953 --> 00:01:39.713
<v Chris>No credit card required. You go to Define.net slash unplugged.

00:01:39.833 --> 00:01:44.533
<v Chris>Nothing else offers Nebula's level of resilience, speed, and scalability.

00:01:44.753 --> 00:01:47.913
<v Chris>Get started with 100 hosts, absolutely free, no credit card required.

00:01:48.113 --> 00:01:52.073
<v Chris>Visit Define.net slash unplugged. Go redefine your VPN experience.

00:01:52.253 --> 00:01:57.213
<v Chris>IOS and Android apps recently updated. Thank you to Define.net slash unplugged.

00:01:57.273 --> 00:01:58.153
<v Chris>Thank you to everybody who supports

00:01:58.153 --> 00:02:02.573
<v Chris>the show by going to Define.net slash unplugged. We do appreciate it.

00:02:05.133 --> 00:02:08.813
<v Chris>LinuxFest Northwest 2026, just a few days away.

00:02:09.173 --> 00:02:14.753
<v Chris>13 days away. April 24th to the 26th at the Bellingham Technical College.

00:02:15.653 --> 00:02:20.373
<v Chris>Oh, boy. And the calendar is live. The unplugged program is currently scheduled

00:02:20.373 --> 00:02:24.133
<v Chris>to be in HC108, which I think is that big classroom we did that one year.

00:02:24.673 --> 00:02:25.033
<v Brent>Hmm.

00:02:25.413 --> 00:02:29.233
<v Chris>I don't know, boys. We got to give that some thought.

00:02:29.653 --> 00:02:31.053
<v Wes>Yeah, you seem really unsure over there.

00:02:31.333 --> 00:02:36.033
<v Chris>Yeah, the vibe just hasn't been right in the classrooms. We're not professors giving a lecture.

00:02:36.233 --> 00:02:38.913
<v Brent>I thought all the construction the last couple of years in those sections we

00:02:38.913 --> 00:02:44.153
<v Brent>couldn't use was to build us like a brand new studio with an audience section in it.

00:02:44.233 --> 00:02:45.913
<v Chris>Right, of course. That's what they'd spend their money on.

00:02:46.073 --> 00:02:48.813
<v Wes>The first year we did a classroom was better than the second.

00:02:49.153 --> 00:02:50.173
<v Chris>Yeah, I agree.

00:02:50.593 --> 00:02:53.653
<v Wes>So there is some variable, but you're right. But one way or another,

00:02:53.653 --> 00:02:54.693
<v Wes>we had to make a show, right?

00:02:54.693 --> 00:02:56.853
<v Chris>We'll make a show. One way or another. We'd love it if you want to join us.

00:02:57.413 --> 00:03:00.573
<v Chris>You can get the details at linuxfestnorthwest.org.

00:03:01.033 --> 00:03:03.873
<v Chris>I don't know. I think it may be Joops isn't going to make it this year.

00:03:04.013 --> 00:03:05.633
<v Chris>I got baby chicks at home now.

00:03:06.373 --> 00:03:08.733
<v Wes>So maybe have you considered bringing the entire farm?

00:03:08.953 --> 00:03:12.313
<v Chris>I think we bring the van. The van goes to Joops. Yeah.

00:03:12.413 --> 00:03:17.193
<v Brent>The van will go to Joops instead. And the van will a hundred percent be there. Whether I am or not.

00:03:17.373 --> 00:03:17.533
<v Wes>Joops junior.

00:03:18.353 --> 00:03:22.353
<v Chris>All right. I have a question for the audience before we get into today's topics. Two things really.

00:03:22.813 --> 00:03:27.293
<v Chris>Number one, your question. Uh, I may become obvious why, but I'd like to know

00:03:27.293 --> 00:03:31.913
<v Chris>if your password manager disappeared tomorrow, which one would you switch to?

00:03:32.113 --> 00:03:35.533
<v Chris>Boost in and tell us if your password manager disappeared tomorrow which would

00:03:35.533 --> 00:03:37.973
<v Chris>you switch to? Alright? That's number one. Number two.

00:03:39.993 --> 00:03:47.833
<v Chris>The Elephant in the Room episode 666 is coming up and we have a new challenge.

00:03:48.133 --> 00:03:55.513
<v Chris>To celebrate episode 666 of the Unplugged program we are announcing the BSD challenge!

00:03:59.804 --> 00:04:03.284
<v Chris>And it's early days, so you have a chance to get in and help us form what we're

00:04:03.284 --> 00:04:06.664
<v Chris>going to do because obviously this is episode 662, so we have a few weeks.

00:04:07.124 --> 00:04:12.804
<v Chris>It's not a Linux versus BSD thing. It's can Linux users function on BSD.

00:04:13.804 --> 00:04:16.064
<v Chris>One fresh B install, four levels

00:04:16.064 --> 00:04:20.524
<v Chris>to climb, and hopefully your Linux muscle memory only gets you so far.

00:04:20.724 --> 00:04:23.284
<v Chris>This is what I have so far, and this is all subject to change,

00:04:23.304 --> 00:04:24.624
<v Chris>and I'd love the audience's input.

00:04:24.924 --> 00:04:28.424
<v Chris>I think we should have four levels to achieve. Level one is can you just get

00:04:28.424 --> 00:04:31.124
<v Chris>a usable system. Level two is can you get a daily driver?

00:04:31.504 --> 00:04:36.564
<v Chris>Level three is a power user. So can you do things like update packages,

00:04:36.824 --> 00:04:39.564
<v Chris>update the OS, set up SSH, restart and stop services?

00:04:39.784 --> 00:04:42.724
<v Chris>And then level four, and I think this is maybe where we have some debate.

00:04:43.404 --> 00:04:47.224
<v Chris>I was going to say get jails or containers working, but I think Wes and Brent

00:04:47.224 --> 00:04:49.864
<v Chris>think level four should be something more challenging.

00:04:50.484 --> 00:04:54.364
<v Chris>And then we have a scoring system. But that's the rough outline that we'll get into more.

00:04:54.484 --> 00:04:59.924
<v Chris>But let's settle this level four stuff. stuff so i i i guess i proposed level

00:04:59.924 --> 00:05:03.944
<v Chris>four is you get a jail going but you guys think that's probably more level three stuff.

00:05:03.944 --> 00:05:08.564
<v Wes>Yeah i mean it's just you know that'd be like saying it's not maybe it's not

00:05:08.564 --> 00:05:12.464
<v Wes>quite exactly the same but like if should level four for a bsd user on linux

00:05:12.464 --> 00:05:16.224
<v Wes>be running a docker container yeah that's.

00:05:16.224 --> 00:05:17.004
<v Brent>A good way to put it.

00:05:17.004 --> 00:05:22.564
<v Wes>Now what level four should be maybe it's like linux compatibility or getting

00:05:22.564 --> 00:05:25.744
<v Wes>full like docker on bs i don't know it should it feels like there should be

00:05:25.744 --> 00:05:28.184
<v Wes>a proper impressive stretch to it.

00:05:28.184 --> 00:05:31.124
<v Chris>Hmm you have any suggestions for a level four stretch brent.

00:05:31.977 --> 00:05:38.337
<v Brent>Uh, I have two. One would be, how long can you daily drive this thing?

00:05:38.437 --> 00:05:41.197
<v Brent>You know, you got it running, you got some of your applications on there.

00:05:41.357 --> 00:05:42.317
<v Chris>Can you make it a full week?

00:05:42.617 --> 00:05:46.237
<v Brent>Yeah. Are you using this as a desktop for a full week? Or is this like,

00:05:46.437 --> 00:05:49.537
<v Brent>you know, can you even use it as a server for a full week if that's your way to go?

00:05:50.257 --> 00:05:52.817
<v Brent>I have another twist though that might be interesting if you're,

00:05:52.917 --> 00:05:55.377
<v Brent>if you're up for it. You want more suggestions? Yeah. Yeah.

00:05:56.257 --> 00:06:00.237
<v Brent>What I want to know, like, what is the craziest place some of our audience members

00:06:00.237 --> 00:06:03.557
<v Brent>can run this BSD that they want to run for a week?

00:06:03.697 --> 00:06:07.797
<v Brent>Do you have some crazy device or like, are you running a, I don't know,

00:06:08.017 --> 00:06:11.917
<v Brent>phone network on your farm and there's some BSD components to it?

00:06:11.997 --> 00:06:16.597
<v Brent>Or so not something you're currently running, but like during the challenge,

00:06:16.597 --> 00:06:21.957
<v Brent>what is the craziest thing you're willing to do for this BSD challenge? Bonus points.

00:06:22.757 --> 00:06:24.397
<v Chris>Okay. Okay.

00:06:25.077 --> 00:06:29.277
<v Wes>See this is why we need the audience's help because uh clearly we're too nix

00:06:29.277 --> 00:06:32.797
<v Wes>os brained over here to really even be able to formulate a bsd challenge at this point.

00:06:32.797 --> 00:06:33.317
<v Brent>Isn't there a.

00:06:33.317 --> 00:06:38.757
<v Chris>Bsd yeah level four i mean i like the idea i like that as an idea for level

00:06:38.757 --> 00:06:40.897
<v Chris>four but we need to have a few other things level four because i don't know

00:06:40.897 --> 00:06:43.457
<v Chris>if i have any cool crazy hardware to put it on right now.

00:06:43.457 --> 00:06:44.397
<v Brent>Way better work at it.

00:06:44.397 --> 00:06:50.837
<v Chris>But i want to get all the points so level four is official beastie whisper and i want to get something.

00:06:50.837 --> 00:06:56.377
<v Wes>Fancy with like zfs like boot set boot environment set up so you.

00:06:56.377 --> 00:06:57.037
<v Chris>Get like you.

00:06:57.037 --> 00:06:59.597
<v Wes>Know rollbacks and stuff that might be too easy too though.

00:06:59.597 --> 00:07:03.877
<v Chris>Intro okay well please do boost in or go to the contact page and send us your

00:07:03.877 --> 00:07:08.137
<v Chris>suggestions for the bsd challenge we what we our idea would be is to kick it

00:07:08.137 --> 00:07:13.037
<v Chris>off in 665 officially or 664 depending what you guys tell us,

00:07:13.577 --> 00:07:17.117
<v Chris>and then have the conclusion in 666, right?

00:07:17.337 --> 00:07:21.217
<v Chris>I think that could be fun. So that's the idea. Let us know what you think for the BSD challenge.

00:07:24.310 --> 00:07:29.590
<v Chris>Well, as you're listening to this here podcast, Linux 7.0 should be landing.

00:07:30.030 --> 00:07:33.110
<v Chris>It is expected to release later today as we're recording.

00:07:33.410 --> 00:07:36.890
<v Chris>And even though Linus always says the major version numbers don't really mean

00:07:36.890 --> 00:07:41.550
<v Chris>much other than he doesn't like to get much beyond .19, there's always a bunch

00:07:41.550 --> 00:07:45.190
<v Chris>that ends up in these .0 releases every time.

00:07:45.270 --> 00:07:46.310
<v Wes>Funny how that works, huh?

00:07:46.370 --> 00:07:52.010
<v Chris>Yeah. So we thought we'd go through some of our favorite things in here. Surprise, surprise.

00:07:52.190 --> 00:07:55.650
<v Chris>Some of them are going to be file system related. but not all of them.

00:07:55.910 --> 00:07:59.290
<v Chris>Wes, I know you've been talking about for a little bit, the scheduler changes,

00:07:59.290 --> 00:08:01.410
<v Chris>some nice performance improvements there.

00:08:02.150 --> 00:08:03.530
<v Wes>Yeah. Which ones are you thinking of?

00:08:03.730 --> 00:08:05.510
<v Chris>Well, I don't know. You're the one that's been talking about them,

00:08:05.530 --> 00:08:08.550
<v Chris>but I think the one that I recall you mentioned is the time slice extension,

00:08:08.690 --> 00:08:12.090
<v Chris>although I don't really understand much about it, but I guess that sounds interesting.

00:08:12.510 --> 00:08:15.950
<v Chris>Notably less micro stutter and better desktop responsiveness with that one they

00:08:15.950 --> 00:08:19.410
<v Chris>have on there. And I remember you going on about scheduler changes recently. I just don't know.

00:08:19.550 --> 00:08:23.290
<v Wes>Oh yeah. I mean, there's been a lot in general, how much of that made it into 7.0.

00:08:23.430 --> 00:08:26.790
<v Wes>I mean, there is a lot of stuff. Some of that is coming also in 7.1,

00:08:26.850 --> 00:08:28.610
<v Wes>because there's always excitement around that.

00:08:28.790 --> 00:08:31.650
<v Wes>But yeah, one in particular is the Time Slice extension. And it,

00:08:32.501 --> 00:08:35.761
<v Wes>It's notable because, A, scheduling is hard.

00:08:35.881 --> 00:08:38.601
<v Wes>You know what I mean? Like, it's probably one of the hardest things that the

00:08:38.601 --> 00:08:43.181
<v Wes>kernel actually has to do in order to do it right, especially because just about

00:08:43.181 --> 00:08:44.341
<v Wes>everyone uses the Linux kernel.

00:08:44.341 --> 00:08:49.061
<v Wes>So, how do you get the right scheduling between a monster AI inference server

00:08:49.061 --> 00:08:52.441
<v Wes>or a Postgres database server and, you know, MyPixel?

00:08:52.661 --> 00:08:57.961
<v Wes>But this one has also been in the Time Slice extension, has been in development

00:08:57.961 --> 00:09:01.341
<v Wes>for, like, 10 years at this point, And it finally got merged,

00:09:01.761 --> 00:09:05.201
<v Wes>which is exciting just for the story of like open source kernel development.

00:09:05.201 --> 00:09:07.961
<v Chris>Something taking that long and finally make it in is always a big deal.

00:09:08.341 --> 00:09:12.341
<v Wes>Yeah, exactly. But it should help. Like there are times where you're in what

00:09:12.341 --> 00:09:15.821
<v Wes>are called critical sections as a process where you really don't want to be interrupted.

00:09:16.001 --> 00:09:17.861
<v Wes>You know, maybe you're doing something with the disk or, you know,

00:09:17.961 --> 00:09:19.981
<v Wes>some sort of critical part of your application.

00:09:20.601 --> 00:09:24.921
<v Wes>And this is trying to help so that like user space processes can sort of request

00:09:24.921 --> 00:09:29.101
<v Wes>a time slice where they won't get preempted without some of the full performance

00:09:29.101 --> 00:09:31.781
<v Wes>overheads of like actually fully blocking preemption,

00:09:32.021 --> 00:09:34.541
<v Wes>where the kernel might still need to do something ultimately to maintain,

00:09:34.541 --> 00:09:39.001
<v Wes>you know, acceptable latency elsewhere, but to try to provide more information

00:09:39.001 --> 00:09:43.501
<v Wes>and more mechanisms to allow user space processes to better actually share the

00:09:43.501 --> 00:09:45.641
<v Wes>available resources and meet their own deadlines.

00:09:45.861 --> 00:09:48.561
<v Chris>And so that's where the name time slicing comes from, is you can kind of,

00:09:48.761 --> 00:09:52.381
<v Chris>as I guess as a resource heavy application, you could say, hey,

00:09:52.501 --> 00:09:55.841
<v Chris>I'm going to need some time coming up soon, make it available for me.

00:09:56.321 --> 00:09:57.341
<v Wes>Yeah, exactly. Exactly.

00:09:57.758 --> 00:10:01.478
<v Wes>I mean, it gets more detailed than that, right? Because there's stuff called

00:10:01.478 --> 00:10:04.678
<v Wes>restartable sequences and all

00:10:04.678 --> 00:10:07.818
<v Wes>of the heuristics that kind of go into like fully optimizing this stuff.

00:10:08.158 --> 00:10:11.558
<v Wes>There's also been more work, which got some drama over,

00:10:11.838 --> 00:10:14.358
<v Wes>which we talked about, I think in a previous members episode,

00:10:14.518 --> 00:10:20.158
<v Wes>maybe around Postgres having benchmarks that were like 50% slower on some instances

00:10:20.158 --> 00:10:24.098
<v Wes>that also had to do with some changes happening to preemption in the kernel.

00:10:24.098 --> 00:10:28.518
<v Wes>And that's where right the whole thing that we have a actual preemptible thing

00:10:28.518 --> 00:10:32.798
<v Wes>where tasks do get interrupted and we aren't just running one application anymore

00:10:32.798 --> 00:10:35.558
<v Wes>it's still having consequences 30 years later.

00:10:35.558 --> 00:10:38.518
<v Chris>Well here's the thing i've learned watching these kernel releases

00:10:38.518 --> 00:10:41.438
<v Chris>and it's very much so true with the 7.0 release

00:10:41.438 --> 00:10:44.678
<v Chris>you could kind of plan your next laptop or

00:10:44.678 --> 00:10:47.838
<v Chris>workstation upgrade around these so

00:10:47.838 --> 00:10:51.238
<v Chris>what's in 7.0 are a bunch

00:10:51.238 --> 00:10:54.698
<v Chris>of new drivers and what what

00:10:54.698 --> 00:10:58.738
<v Chris>gets called i guess the kernel developers call foundational drivers for the

00:10:58.738 --> 00:11:05.178
<v Chris>next gen cpu and gpus that are landing in the next amd in the intel and qualcomm

00:11:05.178 --> 00:11:10.098
<v Chris>platforms and a few others and so the nice thing is is that because these these

00:11:10.098 --> 00:11:13.858
<v Chris>types of kernels take a little bit to get out except for ubuntu is going to ship it pretty soon.

00:11:14.778 --> 00:11:18.758
<v Chris>It means brand new laptops and desktops are probably going to work out of the

00:11:18.758 --> 00:11:22.978
<v Chris>box with Linux 7.0 with everything functional day one.

00:11:23.098 --> 00:11:25.838
<v Chris>And you're going to be able to get these new platforms like an AMD Zen 6,

00:11:25.858 --> 00:11:28.038
<v Chris>which I am particularly looking forward to.

00:11:28.478 --> 00:11:31.538
<v Chris>And it's just going to work with 7.0. And what I mean by you could watch this

00:11:31.538 --> 00:11:34.978
<v Chris>and kind of plan your hardware releases is you can see, okay,

00:11:35.058 --> 00:11:36.638
<v Chris>this is landing now in 7.0.

00:11:37.178 --> 00:11:43.998
<v Chris>And so if I want to get an AMD Zen 6 system and I use XYZ distro then i just

00:11:43.998 --> 00:11:47.318
<v Chris>wait till xyz distro gets 7-0 and that's my window of time to upgrade to that

00:11:47.318 --> 00:11:51.278
<v Chris>new hardware you know and that that will just ensure it's a smooth process and it's,

00:11:52.657 --> 00:11:58.057
<v Chris>It's so much new hardware coming to Linux with new capabilities across x86,

00:11:58.457 --> 00:12:00.677
<v Chris>ARM64, RISC-V, and even Power.

00:12:02.157 --> 00:12:05.957
<v Chris>Like, this is a massive CPU architecture release, Linux 7.0.

00:12:06.257 --> 00:12:12.517
<v Wes>Yeah, there's SpaceMitK3, which is the first of the RVA23 profile specifications

00:12:12.517 --> 00:12:15.177
<v Wes>of actual RISC-V hardware being supported in the kernel,

00:12:15.257 --> 00:12:21.817
<v Wes>which I think also includes maybe some acceleration for some sorts of AI-type tasks.

00:12:21.817 --> 00:12:27.597
<v Wes>So maybe, I mean, it's still early days, but maybe, yeah, I think it's 8AI Accelerator Core.

00:12:27.737 --> 00:12:30.497
<v Wes>So what you can really do with it, how you get your hands on it,

00:12:30.537 --> 00:12:35.317
<v Wes>I don't know, but it's at least starting to look slightly less like only sort

00:12:35.317 --> 00:12:37.257
<v Wes>of developer machine enablement.

00:12:38.819 --> 00:12:42.179
<v Chris>Okay. Is there anything else we need to cover? I mean, I know there's a lot

00:12:42.179 --> 00:12:45.779
<v Chris>in this, and Feronix and Linux Newbies has done a great job,

00:12:45.919 --> 00:12:48.879
<v Chris>or kernel Newbies, has done a great job of rounding a lot of this up,

00:12:48.939 --> 00:12:53.099
<v Chris>but file system area is pretty big this release, and I think we should probably get to that.

00:12:53.099 --> 00:12:56.599
<v Wes>What, you're going to skip over the AI agent key support? Come on, the copilot key.

00:12:57.579 --> 00:12:57.939
<v Chris>What?

00:12:58.879 --> 00:12:59.239
<v Brent>Yeah.

00:12:59.739 --> 00:13:02.739
<v Chris>No, this did not make my list of features. Tell me about this.

00:13:02.739 --> 00:13:08.919
<v Wes>There's the co-pilot key, but beyond that, Linux 7.0 adds three additional standardized

00:13:08.919 --> 00:13:12.359
<v Wes>HID key codes for contextual AI interactions.

00:13:13.759 --> 00:13:18.779
<v Wes>Action on selection, contextual insertion, and contextual query.

00:13:19.219 --> 00:13:19.379
<v Chris>What?

00:13:19.679 --> 00:13:21.339
<v Brent>Chris, why is your face doing that?

00:13:21.539 --> 00:13:25.899
<v Chris>I don't even understand what this means. I literally don't. Brent,

00:13:26.059 --> 00:13:29.959
<v Chris>do you have a guess of what this means? I'm sure Wes knows, but...

00:13:29.959 --> 00:13:33.919
<v Brent>Sounds like maybe some buzzwords got into the mailing list here.

00:13:34.059 --> 00:13:38.419
<v Chris>I mean, is it like something for deploying? Is it to enable agents to deploy

00:13:38.419 --> 00:13:40.859
<v Chris>and identify systems on cloud infrastructure?

00:13:41.579 --> 00:13:43.419
<v Chris>Like, that's the only place I could go with this.

00:13:43.439 --> 00:13:46.379
<v Wes>I think it's for interactions, right? So that now you have, you could have something

00:13:46.379 --> 00:13:50.939
<v Wes>where it's like, select something and click a button, and you could have a universal,

00:13:50.939 --> 00:13:54.779
<v Wes>like, HID-level way to ask an assistant for help.

00:13:54.899 --> 00:13:57.899
<v Wes>Or we could remap it, whatever, because it's Linux, right? But like on Windows,

00:13:57.959 --> 00:14:01.919
<v Wes>you might have a copilot key, and then google got this more sort of fine-brained

00:14:01.919 --> 00:14:05.679
<v Wes>stuff so you can have like i want to ask the ai a question or i want the ai

00:14:05.679 --> 00:14:08.199
<v Wes>to insert or edit text here.

00:14:08.199 --> 00:14:08.699
<v Chris>Or yeah.

00:14:08.699 --> 00:14:09.059
<v Wes>That kind of.

00:14:09.059 --> 00:14:11.299
<v Brent>The word key is used for so many things these days.

00:14:11.299 --> 00:14:16.119
<v Chris>But like so you can have keyboard you could have like a keyboard key but this

00:14:16.119 --> 00:14:19.139
<v Chris>could probably also work if you were building one of those tubes that's constantly

00:14:19.139 --> 00:14:23.199
<v Chris>trying to sell you stuff probably work for that too you know i have a little

00:14:23.199 --> 00:14:26.619
<v Chris>button on there i can see that okay yeah that's true all right all right this

00:14:26.619 --> 00:14:29.679
<v Chris>is it's interesting the stuff that makes it at the kernel level okay now can

00:14:29.679 --> 00:14:31.259
<v Chris>we talk about file systems okay,

00:14:32.793 --> 00:14:33.333
<v Chris>So, Brent.

00:14:33.953 --> 00:14:34.313
<v Brent>Yes?

00:14:35.093 --> 00:14:37.273
<v Chris>I bet you would think if we were going to talk about file systems,

00:14:37.413 --> 00:14:40.673
<v Chris>you would assume we were going to talk about BcacheFS or ButterFS.

00:14:40.913 --> 00:14:44.513
<v Chris>But it turns out some of our traditional favorites got some nice updates as well.

00:14:44.833 --> 00:14:46.873
<v Brent>So the old is the modern now?

00:14:48.093 --> 00:14:52.053
<v Chris>Well, I mean, if you're using the older file system, quote unquote older,

00:14:52.273 --> 00:14:54.893
<v Chris>you still get good stuff, right?

00:14:54.953 --> 00:14:58.833
<v Chris>I think everybody knows XFS is one of our favorites.

00:14:58.893 --> 00:14:59.873
<v Brent>It's one of your darlings.

00:14:59.873 --> 00:15:03.233
<v Chris>But now one of Wes's predictions has come true.

00:15:03.493 --> 00:15:07.753
<v Brent>Yeah, it looks like ext4 is getting faster concurrent I.O.

00:15:07.833 --> 00:15:13.113
<v Brent>Rights, and there's a new standardized generic I.O. error reporting layer across file systems.

00:15:15.053 --> 00:15:22.593
<v Brent>And, well, that means that container creation is 40% faster thanks to OpenTree

00:15:22.593 --> 00:15:25.793
<v Brent>namespace improvements. Wes, how do you feel about this?

00:15:26.593 --> 00:15:29.933
<v Wes>I am pro. So you wouldn't be surprised by that, though.

00:15:30.153 --> 00:15:32.653
<v Wes>But yeah, we talked a little bit about it in the past. There's been a bunch

00:15:32.653 --> 00:15:38.933
<v Wes>of improvements tied to NOLFS being in this kernel and the OpenTree namespace

00:15:38.933 --> 00:15:42.893
<v Wes>stuff that means sort of the mount namespace handling,

00:15:43.173 --> 00:15:45.933
<v Wes>which is very important if you want to isolate a container or be able to pick

00:15:45.933 --> 00:15:47.753
<v Wes>and choose what mounts a container sees.

00:15:48.093 --> 00:15:52.193
<v Wes>All of that stuff can be a lot more sane without having to copy every single

00:15:52.193 --> 00:15:56.833
<v Wes>mount on the system and then just to remove 80% of those to get the actual mount

00:15:56.833 --> 00:15:57.773
<v Wes>tree that you really want.

00:15:57.833 --> 00:16:01.473
<v Wes>And so when you tie that into improved stuff like, you know,

00:16:02.233 --> 00:16:05.373
<v Wes>concurrent direct IO writes to multiple files, and there's often lots of tiny

00:16:05.373 --> 00:16:08.713
<v Wes>files involved with containers, you can see how some of these performance wins

00:16:08.713 --> 00:16:09.653
<v Wes>really start stacking together.

00:16:10.495 --> 00:16:11.335
<v Chris>That is good to see.

00:16:11.915 --> 00:16:14.575
<v Brent>I'm curious, what did you base your prediction on then?

00:16:15.215 --> 00:16:20.355
<v Chris>Oh, no. This was the prediction, Brent. And this is the one that made my list,

00:16:20.595 --> 00:16:23.755
<v Chris>is XFS has gained autonomous self-healing.

00:16:23.955 --> 00:16:24.355
<v Brent>No way.

00:16:24.355 --> 00:16:28.315
<v Chris>Real-time air monitoring plus automatic background repairs. This,

00:16:28.435 --> 00:16:31.635
<v Chris>I think, was one of your predictions, if I'm not mistaken, Mr. Payne.

00:16:31.995 --> 00:16:37.195
<v Wes>I mean, you know, there's a lot of excitement around a lot of the file systems that we talk about.

00:16:37.515 --> 00:16:42.055
<v Wes>But you shouldn't sleep on XFS, right? They've been adding like sneaky copy

00:16:42.055 --> 00:16:46.935
<v Wes>on write style features. They've been adding more like dynamic stuff at runtime,

00:16:47.455 --> 00:16:52.355
<v Wes>more monitoring, and now more live information about file system health events.

00:16:52.475 --> 00:16:55.735
<v Wes>And then that means you actually have the possibility to act on those and try

00:16:55.735 --> 00:17:00.255
<v Wes>to self-repair immediately instead of, you know, a month later when you notice and you run that FSCK.

00:17:00.655 --> 00:17:05.495
<v Chris>Yeah, the patch set is interesting. It's done by creating an anonymous file

00:17:05.495 --> 00:17:07.795
<v Chris>that can be read for events by user space programs.

00:17:07.795 --> 00:17:12.415
<v Chris>Events are captured by hooking various parts of XFS and IOMAP so that metadata

00:17:12.415 --> 00:17:16.695
<v Chris>health failures, file IO errors, and major changes in file system states like

00:17:16.695 --> 00:17:17.715
<v Chris>unmount, shutdown, etc.

00:17:18.055 --> 00:17:21.395
<v Chris>Can be observed by user space programs. When an event occurs,

00:17:21.495 --> 00:17:25.335
<v Chris>the hook functions queue an event object to each event for later processing.

00:17:25.515 --> 00:17:28.615
<v Chris>A program must have the ability to read it, yada, yada, yada, going on.

00:17:28.935 --> 00:17:31.295
<v Chris>In user space, we created a new, this is the part that is interesting,

00:17:31.415 --> 00:17:33.375
<v Chris>in user space, we created a new daemon program.

00:17:34.808 --> 00:17:39.308
<v Chris>It will read objects and initiate repairs automatically. This daemon is managed

00:17:39.308 --> 00:17:44.128
<v Chris>entirely by system D and will not block unmounting of the file system unless

00:17:44.128 --> 00:17:47.288
<v Chris>repairs are ongoing, which is interesting.

00:17:47.428 --> 00:17:48.988
<v Chris>So you can unmount it unless it's in the middle of a repair.

00:17:49.088 --> 00:17:50.208
<v Chris>It'll stop you from unmounting it.

00:17:50.748 --> 00:17:56.288
<v Chris>The daemons are auto started by a service that uses fan O notify.

00:17:56.868 --> 00:17:57.648
<v Wes>Yeah, F-A notify.

00:17:58.008 --> 00:17:58.988
<v Chris>Thank you. F-A notify.

00:17:58.988 --> 00:18:02.068
<v Wes>Yeah and that's what's so cool about this is it's not just

00:18:02.068 --> 00:18:06.408
<v Wes>the file system level kernel level functionality that like hey we have this

00:18:06.408 --> 00:18:10.308
<v Wes>new framework it'll be great once someone takes advantage of it no this is like

00:18:10.308 --> 00:18:14.588
<v Wes>actually also shipping a user space thing that can take immediate advantage

00:18:14.588 --> 00:18:17.908
<v Wes>of it i mean you know you got to get it shipped and packaged and available and

00:18:17.908 --> 00:18:21.308
<v Wes>configured in distros downstream and all of that but that'll happen.

00:18:21.308 --> 00:18:26.608
<v Chris>You will have to have system d as well Another noteworthy XFS change is a performance

00:18:26.608 --> 00:18:28.168
<v Chris>improvement for parent pointers.

00:18:28.548 --> 00:18:32.628
<v Chris>They're used for storing backlinks in a file extended attribute for a parent

00:18:32.628 --> 00:18:36.368
<v Chris>and directory in its file name. And I guess in some cases...

00:18:37.507 --> 00:18:41.907
<v Chris>Wait in times had increased by 56% in some scenarios, and now those times are

00:18:41.907 --> 00:18:46.607
<v Chris>down to 8% for writes and 19% for deletion.

00:18:47.347 --> 00:18:51.027
<v Wes>So, not bad. Yeah, it's kind of that boring level of optimization where you

00:18:51.027 --> 00:18:54.467
<v Wes>probably don't even know what the, why do we have these parent pointers and all of that?

00:18:54.547 --> 00:18:59.407
<v Wes>But, you know, file systems end up being a giant set of arrows pointing at different things, right?

00:18:59.407 --> 00:19:03.007
<v Wes>Unless you want to copy everything all of the time, you need ways,

00:19:03.107 --> 00:19:06.387
<v Wes>like if you're dealing with extended attributes, you need ways to know details

00:19:06.387 --> 00:19:09.767
<v Wes>about the parent directory, where you're at in the file system,

00:19:09.887 --> 00:19:11.127
<v Wes>the permissions that are there.

00:19:11.547 --> 00:19:15.367
<v Wes>And if you have to go try to search some data structure every time you want

00:19:15.367 --> 00:19:17.267
<v Wes>to do that, you're going to have a bad time.

00:19:17.387 --> 00:19:21.867
<v Wes>And so parent pointers help you go have back references, have links,

00:19:22.027 --> 00:19:25.707
<v Wes>have pointers, as the name implies, to be able to traverse around on the file

00:19:25.707 --> 00:19:27.407
<v Wes>system and get from here to there.

00:19:27.407 --> 00:19:32.327
<v Wes>And you know there's extra cost to those both size and then sometimes how they're

00:19:32.327 --> 00:19:35.447
<v Wes>implemented has performance and so the faster you can resolve all those sort

00:19:35.447 --> 00:19:38.827
<v Wes>of metadata relations in the file system the faster the whole thing will be.

00:19:38.827 --> 00:19:42.627
<v Chris>So there's a few other items on our on our shared list i have one other big

00:19:42.627 --> 00:19:46.967
<v Chris>one on my personal list we have some memory management changes anything in particular

00:19:46.967 --> 00:19:53.787
<v Chris>you want to touch on before we get to the big news regarding the horns if you know what i mean.

00:19:53.787 --> 00:19:57.527
<v Wes>Yeah uh there's some cool iou ring stuff going on i.

00:19:57.527 --> 00:19:59.287
<v Chris>Was hoping you would cover that okay good.

00:19:59.287 --> 00:20:02.907
<v Wes>Yeah iou ring security task level

00:20:02.907 --> 00:20:07.427
<v Wes>restrictions and there's a functionality called sec comp in the kernel that

00:20:07.427 --> 00:20:11.427
<v Wes>we use a lot for various sandbox and gets used in containers sec comp bbf is

00:20:11.427 --> 00:20:16.147
<v Wes>a thing it's a type of policy you can apply to filter the available system calls

00:20:16.147 --> 00:20:17.767
<v Wes>that can happen so you can say

00:20:17.767 --> 00:20:21.187
<v Wes>like hey this program doesn't need to use a bunch of these system calls.

00:20:21.287 --> 00:20:23.787
<v Wes>It only needs to read files and talk to the network in this way or whatever.

00:20:24.227 --> 00:20:26.707
<v Wes>So you can set up set comp to then secure a program.

00:20:27.815 --> 00:20:32.975
<v Wes>SecComp filters work on these system calls, but they don't see IOU ring.

00:20:33.195 --> 00:20:37.215
<v Wes>At least they didn't before kernel 7. And this is because IOU ring is this whole

00:20:37.215 --> 00:20:41.875
<v Wes>sort of asynchronous ring that's meant to help have this section of memory that

00:20:41.875 --> 00:20:45.235
<v Wes>both user space and the kernel can talk to and then share there without having

00:20:45.235 --> 00:20:48.995
<v Wes>to have constantly switching between user space and kernel space,

00:20:49.115 --> 00:20:52.195
<v Wes>which can be an expensive operation like when you do a system call.

00:20:52.355 --> 00:20:55.695
<v Wes>But the problem is now you've created this whole other way to effectively make

00:20:55.695 --> 00:20:59.595
<v Wes>at least a subset of system calls, which is using IOU ring to do it.

00:21:00.055 --> 00:21:04.215
<v Wes>And sec comp previously had no visibility. So you could do all this nice security

00:21:04.215 --> 00:21:07.295
<v Wes>work to filter the available system calls for an application with sec comp,

00:21:07.455 --> 00:21:12.655
<v Wes>only to then have IOU ring be a big gaping hole in that because it was effectively out of base.

00:21:13.472 --> 00:21:17.872
<v Wes>So essentially now, you know, the limitations basically were containers and

00:21:17.872 --> 00:21:20.592
<v Wes>systemd that do apply these filters essentially couldn't.

00:21:20.772 --> 00:21:26.772
<v Wes>So they've added classic BPF filters or CBPF, which that's a whole other thing here.

00:21:26.852 --> 00:21:32.072
<v Wes>But yes, we have CBPF and eBPF in the kernel for these IOU ring operations and

00:21:32.072 --> 00:21:33.872
<v Wes>their task level restrictions.

00:21:33.872 --> 00:21:38.592
<v Wes>They persist across fork. BPF filters can also examine sort of the arguments

00:21:38.592 --> 00:21:42.912
<v Wes>that are going into the filtering operation, which means they're strictly more

00:21:42.912 --> 00:21:45.552
<v Wes>capable than SecComp in that regard.

00:21:45.972 --> 00:21:50.772
<v Wes>And you might wonder why CPPF, why classic BPF Berkeley packet filter and not

00:21:50.772 --> 00:21:53.492
<v Wes>extended Berkeley packet filter with eBPF.

00:21:53.772 --> 00:21:58.472
<v Wes>That's actually because in containers, often eBPF for security reasons gets disabled.

00:21:58.652 --> 00:22:01.972
<v Wes>So they needed some kind of way to do this with a bytecode, flexible bytecode

00:22:01.972 --> 00:22:06.052
<v Wes>format that could work both in containers and with IOUring's model.

00:22:06.592 --> 00:22:08.712
<v Wes>And thus, this patch set was born.

00:22:08.932 --> 00:22:12.152
<v Chris>Wow, that feels like a pretty serious amount of constraints.

00:22:12.332 --> 00:22:13.112
<v Chris>That's very impressive.

00:22:13.472 --> 00:22:17.612
<v Wes>And as usual, it was Jens Expo, who does just incredible work in file system

00:22:17.612 --> 00:22:20.852
<v Wes>performance and security work and IOUring in particular.

00:22:21.352 --> 00:22:25.892
<v Wes>So yeah, a very impressive change. And while it might be stuff you and I aren't

00:22:25.892 --> 00:22:31.412
<v Wes>using day-to-day all of the time, the folks doing really performance and latency

00:22:31.412 --> 00:22:34.932
<v Wes>sensitive work on linux and security work definitely will care.

00:22:34.932 --> 00:22:39.932
<v Chris>Yeah and of course the biggest news of the 7.0 release is the tux logo is now

00:22:39.932 --> 00:22:44.912
<v Chris>customizable via a new k config option forgot that that's bearing the lead sorry about that everybody.

00:22:44.912 --> 00:22:47.432
<v Wes>Oh yeah that's actually going to be most of our episode next week we'll be.

00:22:47.432 --> 00:22:51.652
<v Chris>Playing with that and getting the jupiter rocket on there another big deal for

00:22:51.652 --> 00:22:55.612
<v Chris>7.0 is the rust experiment is over.

00:22:57.200 --> 00:23:03.400
<v Chris>It is official. Rust is now considered part of the Linux kernel and has moved

00:23:03.400 --> 00:23:05.280
<v Chris>to a new stage of recognition.

00:23:05.600 --> 00:23:09.340
<v Chris>The experiment is done, i.e. Rust is here to stay.

00:23:09.780 --> 00:23:13.300
<v Chris>Miguel Ojeda said, the experiment is done. Rust is here to stay.

00:23:13.440 --> 00:23:17.320
<v Chris>I hope this signals commitment from the kernel to companies and other entities

00:23:17.320 --> 00:23:19.660
<v Chris>to invest more into it, e.g.

00:23:19.780 --> 00:23:24.580
<v Chris>Into giving time to their kernel developers to train themselves in Rust.

00:23:24.780 --> 00:23:28.700
<v Chris>Thanks to the many kernel maintainers that gave this project the support and

00:23:28.700 --> 00:23:31.440
<v Chris>patience throughout these years, and to the many other developers,

00:23:31.700 --> 00:23:35.760
<v Chris>whether in the kernel or in other projects, that have made this possible.

00:23:35.860 --> 00:23:41.100
<v Chris>I had a long list of 173 names in the credits for the original poll that merged

00:23:41.100 --> 00:23:42.880
<v Chris>the support into the kernel.

00:23:43.100 --> 00:23:47.460
<v Chris>And now such a list would be way longer, so I'm not even going to try to compose

00:23:47.460 --> 00:23:49.800
<v Chris>one. But again, thanks a lot, everybody.

00:23:51.020 --> 00:23:53.960
<v Chris>Wow how long have we been following that this.

00:23:53.960 --> 00:23:54.900
<v Brent>Has been a journey.

00:23:54.900 --> 00:23:59.060
<v Wes>Somehow i don't think this is really going to be the end of the drama but it

00:23:59.060 --> 00:24:03.960
<v Wes>is at least a very notable moment in that conversation right it's it's it's a turning point.

00:24:03.960 --> 00:24:06.460
<v Brent>Will uh will they pull it out in a couple months or what.

00:24:06.460 --> 00:24:08.760
<v Chris>Yeah no.

00:24:08.760 --> 00:24:09.780
<v Wes>We're moving to zig yeah.

00:24:09.780 --> 00:24:14.540
<v Chris>Yeah right it's moments like this that you just reflect all this and go gosh

00:24:14.540 --> 00:24:17.140
<v Chris>this has been a real journey you know this has been something we've watched

00:24:17.140 --> 00:24:18.940
<v Chris>for years, and it's finally landed.

00:24:19.100 --> 00:24:22.980
<v Wes>How long did we spend, like, will they, won't they? Is Rust the right fit?

00:24:23.260 --> 00:24:25.100
<v Wes>How do you get agreement? What?

00:24:27.024 --> 00:24:31.124
<v Brent>I think every time we do a segment like this, you just have to stop and marvel

00:24:31.124 --> 00:24:36.764
<v Brent>at everything the kernel is doing, all of the complexity that goes into the

00:24:36.764 --> 00:24:39.264
<v Brent>kernel, how much it changes even on a daily basis.

00:24:39.584 --> 00:24:43.164
<v Brent>And yet we get to just run it on whatever device we want to.

00:24:43.284 --> 00:24:46.724
<v Brent>And it works quite beautifully for the most part. Like it's astonishing.

00:24:47.124 --> 00:24:51.824
<v Brent>I think it's important to be reminded of that and to thank everyone for all

00:24:51.824 --> 00:24:56.104
<v Brent>the crazy amount of work that they put into it that we get to take advantage of. So thank you.

00:24:56.104 --> 00:24:59.024
<v Chris>Maybe a few less systems will be supported, though.

00:24:59.524 --> 00:25:04.884
<v Chris>Linux 7.1, the next version, is the end of the beginning.

00:25:05.004 --> 00:25:08.044
<v Chris>The beginning of the end, I guess, for i486 support.

00:25:08.244 --> 00:25:12.244
<v Chris>And this has, I guess, been in the works for a while. But Linux 7.1 is expected

00:25:12.244 --> 00:25:16.404
<v Chris>to start the removal of Intel i486 CPU support from the upstream Linux kernel.

00:25:17.244 --> 00:25:21.264
<v Chris>Linus Torvalds has reportedly said that there is, quote, zero reason to keep

00:25:21.264 --> 00:25:24.184
<v Chris>i486 support since almost nobody is still using it.

00:25:24.504 --> 00:25:24.764
<v Wes>Ooh.

00:25:25.444 --> 00:25:28.384
<v Chris>Uh-huh. And no modern Linux distribution ships with support.

00:25:28.624 --> 00:25:33.504
<v Chris>They say users who rely on 486 hardware are pointed towards using the existing

00:25:33.504 --> 00:25:36.124
<v Chris>LTS kernels that remain, for now.

00:25:37.004 --> 00:25:41.404
<v Chris>This is the first step, and it's a patch that removes the config option in the

00:25:41.404 --> 00:25:46.804
<v Chris>kernel for the 486 build. So the kernel will no longer build a 486 image.

00:25:47.004 --> 00:25:50.724
<v Chris>And then the steps further down the road will be full code removal,

00:25:50.744 --> 00:25:55.384
<v Chris>which will likely come in following kernel series, assuming there's no major objections.

00:25:55.764 --> 00:25:59.464
<v Wes>You know, it's really kind of a salt in the wound because in 7.0,

00:25:59.644 --> 00:26:02.904
<v Wes>they dropped the last remaining parallel port Ethernet driver.

00:26:03.404 --> 00:26:07.764
<v Wes>So what's happening here? Yeah. And we got to make room for Wi-Fi 8 and 800

00:26:07.764 --> 00:26:09.144
<v Wes>gigabit networking, I guess.

00:26:09.344 --> 00:26:13.264
<v Chris>I will admit, the first thing that popped into my head when I saw this story

00:26:13.264 --> 00:26:15.924
<v Chris>was, should I fire up a 486 machine just one last time?

00:26:15.924 --> 00:26:21.724
<v Brent>Yeah, I was thinking like, oh, stay tuned. You'll see a 486 challenge in Linux

00:26:21.724 --> 00:26:23.544
<v Brent>Unplugged in any time now.

00:26:24.104 --> 00:26:25.004
<v Chris>I mean...

00:26:25.004 --> 00:26:27.744
<v Wes>Level 4 BSD. Is he getting it to work on 486?

00:26:27.864 --> 00:26:28.584
<v Chris>Watch it, E-Bag.

00:26:32.926 --> 00:26:35.986
<v Chris>Thank you to our members. Thank you very much for making this possible.

00:26:36.286 --> 00:26:39.186
<v Chris>We don't have a sponsor for this segment, but we're still here.

00:26:39.746 --> 00:26:40.986
<v Chris>Linuxunplugged.com slash membership.

00:26:41.226 --> 00:26:43.526
<v Chris>And if you want to support the whole network, it's jupyter.party.

00:26:43.686 --> 00:26:46.806
<v Chris>You get two options for the Unplugged program. You get the ad-free version still

00:26:46.806 --> 00:26:50.106
<v Chris>produced by Editor Drew, or you get the bootleg clocking in at about an hour

00:26:50.106 --> 00:26:52.326
<v Chris>12 right now with lots of extra content.

00:26:52.706 --> 00:26:55.646
<v Chris>Stuff we really should put in the show, but we want to make something great

00:26:55.646 --> 00:26:57.266
<v Chris>for our members too, so that's the bootleg feed.

00:26:57.666 --> 00:27:01.126
<v Chris>Both available with the direct membership or the jupyter.party membership.

00:27:01.126 --> 00:27:04.926
<v Chris>And of course a boost will directly support each episode the splits are set

00:27:04.926 --> 00:27:09.006
<v Chris>up automatically go to myself editor drew and the developer of the podcast app

00:27:09.006 --> 00:27:12.166
<v Chris>and you can support each episode with a boost and send a message on the show

00:27:12.166 --> 00:27:16.226
<v Chris>as well and that's one of our favorite moments so we appreciate that thank you

00:27:16.226 --> 00:27:17.386
<v Chris>members and thank you boosters.

00:27:20.766 --> 00:27:25.526
<v Brent>Well with some recent workflow changes on my end i've been using git more now

00:27:25.526 --> 00:27:30.386
<v Brent>than i ever have It seems almost every folder on my system now has a little

00:27:30.386 --> 00:27:31.646
<v Brent>Git repository hidden in it.

00:27:32.166 --> 00:27:36.466
<v Brent>Chris, you recently leaned into Git as well this year. This is like your year of Git.

00:27:37.126 --> 00:27:41.246
<v Brent>And, well, Wes, you've been using it forever, and you showed us the way. Thank you.

00:27:42.126 --> 00:27:47.506
<v Brent>But we got us thinking, like, can we do Git in a different way?

00:27:47.506 --> 00:27:50.346
<v Brent>Because GitHub has certainly been ubiquitous.

00:27:51.086 --> 00:27:52.166
<v Brent>But can we do better?

00:27:52.766 --> 00:27:55.946
<v Chris>Yeah. I feel it creeping into more and more of my workflow, too.

00:27:55.946 --> 00:27:59.146
<v Chris>You know at first it was like oh this is great for sharing projects with

00:27:59.146 --> 00:28:02.086
<v Chris>the audience and that it is good for but then

00:28:02.086 --> 00:28:04.726
<v Chris>it's like well I'm already all set up and I'm authorized and I've

00:28:04.726 --> 00:28:08.506
<v Chris>got the command line tools and every app has a built-in so next thing you know

00:28:08.506 --> 00:28:13.066
<v Chris>I've got like 15 repositories and I'm checking stuff in every day and now I'm

00:28:13.066 --> 00:28:16.246
<v Chris>starting to look at making gists and I'm starting to put those up on get having

00:28:16.246 --> 00:28:19.686
<v Chris>just go home using an action and all these things I'm using more and more of

00:28:19.686 --> 00:28:22.286
<v Chris>github and yeah I thought.

00:28:23.565 --> 00:28:26.045
<v Chris>I got to tap the brakes here a little bit. And we've been talking about this

00:28:26.045 --> 00:28:31.865
<v Chris>offline for about a year, if we should build our own GitLab or something like that.

00:28:32.385 --> 00:28:36.425
<v Chris>And so for me, this week, it came to a head when I was creating yet another

00:28:36.425 --> 00:28:39.165
<v Chris>gist. And I don't have like big requirements here.

00:28:39.685 --> 00:28:43.425
<v Chris>I want like kind of like a prompt library. I want a command library,

00:28:44.005 --> 00:28:46.785
<v Chris>you know, useful Nix OS commands or useful commands for a router,

00:28:46.965 --> 00:28:48.225
<v Chris>whatever it might be that I'm working on.

00:28:48.545 --> 00:28:52.125
<v Chris>I want to just have like a library of these kinds of things I can go to and share with people.

00:28:52.645 --> 00:28:58.625
<v Chris>And GIST is a lazy way to do it on GitHub, but there's got to be other things in other ways.

00:28:58.745 --> 00:29:02.765
<v Chris>So I looked into OpenGIST, which is a self-hosted pastebin powered by Git.

00:29:03.265 --> 00:29:07.845
<v Chris>And as you would expect, you can just run it as a Docker container or whatever

00:29:07.845 --> 00:29:10.205
<v Chris>on your machine. And OpenGIST is pretty great.

00:29:10.405 --> 00:29:12.645
<v Chris>It's a AGPL 3.0 licensed.

00:29:12.985 --> 00:29:17.525
<v Chris>It is mostly written in Go and a little bit of TypeScript.

00:29:17.785 --> 00:29:22.665
<v Chris>And the interface is really nice and simple. and it's pretty, pretty good.

00:29:24.155 --> 00:29:29.655
<v Chris>Didn't quite solve my needs, especially because I think I don't need just gist.

00:29:29.775 --> 00:29:32.535
<v Chris>I think I might need actions and might as well.

00:29:32.715 --> 00:29:38.155
<v Wes>That was going to be my first question for you was, like, I think you have been using a lot of them.

00:29:38.295 --> 00:29:41.935
<v Wes>And maybe it's useful to frame sort of the capabilities because there's,

00:29:42.075 --> 00:29:44.535
<v Wes>you know, we're talking about a lot of different technologies, right?

00:29:44.615 --> 00:29:50.635
<v Wes>There's Git itself, the Merkle tree directed acyclic graph that like stores

00:29:50.635 --> 00:29:53.955
<v Wes>all of the wonderful details. That's totally open source. Then there's like

00:29:53.955 --> 00:29:57.415
<v Wes>GitHub as a proprietary service and UI and interface.

00:29:57.795 --> 00:30:01.735
<v Wes>And then there's like the sub features, right? So like GISTs on GitHub are sort

00:30:01.735 --> 00:30:07.295
<v Wes>of like a pastebin snippet, but with GIST support or with Git support under the hood.

00:30:07.455 --> 00:30:11.055
<v Wes>And that's where I think OpenGIST is very interesting because it is like,

00:30:11.215 --> 00:30:13.235
<v Wes>there's a lot of pastebin things, right?

00:30:13.255 --> 00:30:16.895
<v Wes>We already run several, I think, between various people as part of the network,

00:30:16.895 --> 00:30:22.275
<v Wes>but not a lot of them also have Git under the hood, which is a pretty big upgrade.

00:30:22.575 --> 00:30:26.115
<v Wes>It is only really directly targeting that one use case of like,

00:30:26.255 --> 00:30:27.795
<v Wes>I want a get back to paste bin.

00:30:28.375 --> 00:30:30.875
<v Chris>It's a little narrow for what I, I, I, this is where I started.

00:30:30.995 --> 00:30:34.555
<v Chris>I might want something more broad than this. I'm not sure.

00:30:34.995 --> 00:30:37.775
<v Chris>I'm not, I guess what I'm trying to decide is do I want to go all in or do I

00:30:37.775 --> 00:30:39.875
<v Chris>want to have several tools I string together? You know what I mean?

00:30:40.415 --> 00:30:43.355
<v Wes>Yeah, I do. Cause you kind of already, right? There's, that's where it's like.

00:30:44.069 --> 00:30:49.469
<v Wes>Not everyone is on GitHub, but it has a social networking effect to it.

00:30:49.529 --> 00:30:50.349
<v Wes>And there's that aspect.

00:30:50.689 --> 00:30:53.109
<v Wes>And then there's just the question of like, what are you doing?

00:30:54.169 --> 00:30:56.709
<v Wes>There's different activities that you do in Git. There's stuff that's totally

00:30:56.709 --> 00:31:00.749
<v Wes>private, that's part of your own mesh network and backend infrastructure.

00:31:01.229 --> 00:31:04.629
<v Wes>There's stuff that's a mix where it is your stuff, but you want to have it available

00:31:04.629 --> 00:31:07.009
<v Wes>and shared with the audience or us.

00:31:07.209 --> 00:31:09.129
<v Chris>Oh yeah, you too. Yeah, exactly.

00:31:09.589 --> 00:31:13.169
<v Wes>And so maybe to that extent, it does make sense to have multiple tools.

00:31:13.169 --> 00:31:18.629
<v Wes>But then you also don't want to make even more crazy, complicated setups when

00:31:18.629 --> 00:31:22.049
<v Wes>the whole point was just to be able to like easily share or easily have,

00:31:22.069 --> 00:31:24.749
<v Wes>you know, backups and change control and change management.

00:31:25.609 --> 00:31:30.889
<v Chris>So this is kind of my I guess you could say I'm at a bit of a fork in the road

00:31:30.889 --> 00:31:33.689
<v Chris>in a way. It's like I could I feel like I could. Yeah. You like that?

00:31:34.049 --> 00:31:34.189
<v Brent>Yeah.

00:31:35.049 --> 00:31:38.709
<v Chris>I feel like I could pause here and kind of.

00:31:39.849 --> 00:31:42.889
<v Chris>Take some guidance. And I know you've been playing with a self-hosted setup,

00:31:42.969 --> 00:31:47.149
<v Chris>but I'm not quite clear on what you've been working on and how far you've taken it.

00:31:47.249 --> 00:31:49.989
<v Chris>So I'm curious to know what you've been building, Wes.

00:31:50.469 --> 00:31:52.389
<v Chris>Brent, I'm curious to know if you've looked into this at all.

00:31:52.449 --> 00:31:54.449
<v Chris>And obviously I want to know what the audience is hosting. So,

00:31:54.509 --> 00:31:55.289
<v Chris>Brent, I'll start with you.

00:31:55.549 --> 00:32:00.409
<v Chris>Have you looked into any kind of self-hosted Git, Lab, 4GEO?

00:32:01.640 --> 00:32:02.540
<v Chris>Type solutions at all.

00:32:02.540 --> 00:32:10.640
<v Brent>When we started with the website project to rebuild jupiterbroadcasting.com

00:32:10.640 --> 00:32:15.960
<v Brent>using the community and using you know best practices which meant i had to learn git,

00:32:16.600 --> 00:32:20.820
<v Brent>as you'll remember i was like for a couple weeks there just like deep diving

00:32:20.820 --> 00:32:24.860
<v Brent>into how git works on the back end how best to use it because i felt like i

00:32:24.860 --> 00:32:28.300
<v Brent>hadn't necessarily had the experience before yeah.

00:32:28.300 --> 00:32:29.640
<v Wes>That was one of my favorite weeks ever.

00:32:29.640 --> 00:32:32.540
<v Brent>Now it's just a daily tool things seem to happen.

00:32:33.020 --> 00:32:38.640
<v Brent>And back then, I remember thinking, well, given my deep lean to privacy and

00:32:38.640 --> 00:32:45.020
<v Brent>hesitation around trusting Microsoft, certainly I looked into what can I self-host myself.

00:32:45.400 --> 00:32:51.580
<v Brent>And these days, I am not putting any of my personal stuff on GitHub,

00:32:51.580 --> 00:32:55.740
<v Brent>mostly because I don't trust myself to not throw keys in there and stuff at this point.

00:32:56.120 --> 00:33:00.020
<v Brent>So I have looked into alternatives forge

00:33:00.020 --> 00:33:03.320
<v Brent>joe and at the time get t and those options

00:33:03.320 --> 00:33:06.940
<v Brent>it felt at that point a little too

00:33:06.940 --> 00:33:11.000
<v Brent>powerful for what i was looking for which is just a little bit of hosting of

00:33:11.000 --> 00:33:14.660
<v Brent>some code but these days i think

00:33:14.660 --> 00:33:18.420
<v Brent>i need to revisit that i determined back then that i probably didn't

00:33:18.420 --> 00:33:21.520
<v Brent>need it but given workflow changes recently

00:33:21.520 --> 00:33:24.320
<v Brent>and using it daily and how that might

00:33:24.320 --> 00:33:29.520
<v Brent>solve some problems for me i haven't been looking actively at changing it but

00:33:29.520 --> 00:33:34.680
<v Brent>i've been thinking actively about the implications of using github on the daily

00:33:34.680 --> 00:33:41.240
<v Brent>yeah and so i'm looking forward to hearing what wes can implement for us really

00:33:41.240 --> 00:33:43.600
<v Brent>is what it comes down to i'm.

00:33:43.600 --> 00:33:46.600
<v Chris>On the i'm on the same path it's like well i'm only using it for this well i'm

00:33:46.600 --> 00:33:49.700
<v Chris>only using it for this well now i'm only i'm only using it for these three or four things.

00:33:49.700 --> 00:33:50.340
<v Brent>On github.

00:33:50.340 --> 00:33:54.200
<v Chris>In particular and some of my systems like my servers i just use Git locally,

00:33:54.200 --> 00:33:56.820
<v Chris>it's fine because I have a different backup strategy for that,

00:33:56.940 --> 00:33:59.940
<v Chris>but more and more of my projects have been drifting to GitHub.

00:34:00.660 --> 00:34:03.640
<v Chris>Alright, so what have you been cooking on in the background there, Mr. Payne?

00:34:04.496 --> 00:34:07.916
<v Wes>Yeah, well, it started, I mean, I've done multiple, I've had a lot of stuff

00:34:07.916 --> 00:34:11.136
<v Wes>in Git, and I've used, you know, GitLab and various things.

00:34:11.276 --> 00:34:15.556
<v Wes>And there's a bunch of simple, you know, backend options for this simple web

00:34:15.556 --> 00:34:17.836
<v Wes>UIs just on top of Git or that kind of thing.

00:34:17.916 --> 00:34:21.536
<v Wes>But for me, it got more serious, because I had been mirroring stuff to GitHub,

00:34:21.656 --> 00:34:25.996
<v Wes>and they, you know, and I had my own backups of a bunch of my repos.

00:34:25.996 --> 00:34:29.096
<v Wes>Sure yeah you know they added more easier private

00:34:29.096 --> 00:34:31.896
<v Wes>repo support without having to pay a few years ago so

00:34:31.896 --> 00:34:34.676
<v Wes>that was one thing but when we

00:34:34.676 --> 00:34:37.676
<v Wes>started playing more with open claw like that project is just such

00:34:37.676 --> 00:34:41.156
<v Wes>a mess especially just as fast as it moves and things change i was like there's

00:34:41.156 --> 00:34:45.316
<v Wes>no way not only do i need to have this running on nix os but i it just all needs

00:34:45.316 --> 00:34:49.836
<v Wes>to be in git or i'm going to drive myself insane but i didn't want all of that

00:34:49.836 --> 00:34:54.276
<v Wes>to be public because it was going to be like an agent doing stuff and I was

00:34:54.276 --> 00:34:57.116
<v Wes>going to want to be like reviewing its changes and that kind of stuff.

00:34:57.276 --> 00:35:01.416
<v Wes>I wanted something that had the features of a forge, you know,

00:35:01.536 --> 00:35:06.836
<v Wes>not just code, but like actually something where I could do PRs and go review

00:35:06.836 --> 00:35:11.116
<v Wes>code and maybe in a way that had a structured API. And so I started looking into Forge.

00:35:11.276 --> 00:35:14.596
<v Chris>I like all of those things. Yeah, you're right. Something where you could have

00:35:14.596 --> 00:35:15.996
<v Chris>pull requests because why not?

00:35:16.096 --> 00:35:20.016
<v Chris>I mean, if you're going to lean into a workflow to manage your infrastructure, might as well.

00:35:20.196 --> 00:35:23.516
<v Chris>And something that has an API means that you can integrate it with agent workflow.

00:35:24.669 --> 00:35:27.969
<v Chris>Uh so how are you running it and how far have you gotten with it.

00:35:27.969 --> 00:35:30.849
<v Wes>Yeah so i've been running for a little while the bare for

00:35:30.849 --> 00:35:33.809
<v Wes>joe stuff's been working great it has really nice nix os support

00:35:33.809 --> 00:35:37.309
<v Wes>so like the abbreviated history is there's

00:35:37.309 --> 00:35:40.889
<v Wes>like a really simple tool called gogs uh gogs that

00:35:40.889 --> 00:35:44.049
<v Wes>is super small tiny like just a clean little ui and

00:35:44.049 --> 00:35:46.949
<v Wes>then at some point like 10 years ago that got

00:35:46.949 --> 00:35:49.789
<v Wes>forked into getia um or get t however you're

00:35:49.789 --> 00:35:52.669
<v Wes>supposed to say that and then there's been drama there with like

00:35:52.669 --> 00:35:55.389
<v Wes>the company and the people behind it and so

00:35:55.389 --> 00:35:59.669
<v Wes>that eventually led to a soft fork of for joe um which is also the thing that

00:35:59.669 --> 00:36:04.349
<v Wes>is powering and developed by the codeberg folks and then at some point that

00:36:04.349 --> 00:36:08.749
<v Wes>soft fork became a hard folk hard fork so there's a lot of sort of vague compatibility

00:36:08.749 --> 00:36:13.929
<v Wes>um but all kind of going in their own direction i see um but what's neat about it is it is,

00:36:14.689 --> 00:36:19.889
<v Wes>it really is kind of just like as close to an open source github in a box as i think you could want.

00:36:20.009 --> 00:36:23.549
<v Wes>If you go with something like GitHub or GitLab, it's very enterprise-y.

00:36:23.969 --> 00:36:27.609
<v Wes>And Forgeo felt kind of just right for HomeLab, self-hosted,

00:36:27.769 --> 00:36:32.269
<v Wes>maybe a bit of actual infrastructure, it could scale up.

00:36:32.489 --> 00:36:35.909
<v Wes>I mean, it sounds like the Fedora team is moving from, or some of Fedora at

00:36:35.909 --> 00:36:40.169
<v Wes>least, is moving from Azure, their own Forge, to Forgeo.

00:36:40.269 --> 00:36:43.149
<v Wes>So it can scale up to pretty reasonable-sized organizations,

00:36:43.149 --> 00:36:48.849
<v Wes>but it's also still just a Go binary that can use SQLite, or it can scale up

00:36:48.849 --> 00:36:52.469
<v Wes>to like being deployed like I'm doing it with Postgres and a NixOS module because

00:36:52.469 --> 00:36:54.109
<v Wes>it has great NixOS support built in too.

00:36:55.087 --> 00:36:58.467
<v Chris>I mean, the interface, as you're speaking, I'm kind of going through it,

00:36:58.647 --> 00:37:03.507
<v Chris>it looks like you're looking at a GitHub project when you go to somebody with

00:37:03.507 --> 00:37:04.947
<v Chris>a proper readme and all of that.

00:37:05.607 --> 00:37:09.427
<v Wes>Yeah, and if you're used to using GitHub, you'll have no problems adapting.

00:37:10.087 --> 00:37:15.387
<v Wes>It doesn't have everything. Like, in particular, it does not have guests or snippets.

00:37:15.487 --> 00:37:18.767
<v Wes>I think there's a PR that's in progress, but I don't think it's merged yet.

00:37:19.087 --> 00:37:20.307
<v Wes>So, you don't get everything.

00:37:20.527 --> 00:37:23.587
<v Chris>Well, OpenGist is simple enough that I can still see running that as a side

00:37:23.587 --> 00:37:25.927
<v Chris>service. The big one for me would be actions.

00:37:26.807 --> 00:37:31.427
<v Wes>Yes, and so it does have actions, and I've been working on setting that up actually

00:37:31.427 --> 00:37:33.707
<v Wes>somewhat just this week. So I finally got it going.

00:37:33.987 --> 00:37:38.147
<v Wes>What's cool is you have, they're like, they're not necessarily GitHub compatible,

00:37:38.187 --> 00:37:42.647
<v Wes>but they are very GitHub familiar. So they are similar into the actions format,

00:37:42.847 --> 00:37:46.167
<v Wes>similar YAML files, and they have a similar runner concept.

00:37:46.427 --> 00:37:48.027
<v Chris>So I guess...

00:37:48.899 --> 00:37:54.659
<v Chris>So Action is, it's like a reusable piece of code that runs on the Forgeo server,

00:37:54.939 --> 00:37:57.179
<v Chris>or Forgeo, or however you say it, or on GitHub, right?

00:37:57.379 --> 00:38:01.359
<v Chris>So could you, do I have that right? Like, can we explain what an Action is real

00:38:01.359 --> 00:38:02.199
<v Chris>quick before we get too far?

00:38:02.199 --> 00:38:06.979
<v Wes>And so this is connects to sort of the CI, CD, continuous integration, continuous delivery.

00:38:07.639 --> 00:38:11.379
<v Wes>And GitLab probably like gets some credit for being one of the first forges

00:38:11.379 --> 00:38:14.759
<v Wes>that really built this in with their own GitLab CI stuff.

00:38:15.039 --> 00:38:19.099
<v Wes>And the idea is there's just a lot of automation. If you want the code to be

00:38:19.099 --> 00:38:23.459
<v Wes>the source of truth, then it makes sense to drive stuff as events off the code.

00:38:23.599 --> 00:38:26.779
<v Wes>And so if you want to push, then, you know, maybe you're pushing to a new PR

00:38:26.779 --> 00:38:30.359
<v Wes>and you want it to go run the tests for you automatically and let you know if they pass.

00:38:30.359 --> 00:38:34.039
<v Wes>Or maybe you have a lot of contributors of different levels or different knowledge,

00:38:34.059 --> 00:38:37.259
<v Wes>and you want to have, you know, run some linting and formatting checks to make

00:38:37.259 --> 00:38:39.939
<v Wes>sure that random PRs meet the standards of the project.

00:38:40.099 --> 00:38:43.859
<v Wes>And that can scale all the way to, you've merged your PR, and now you build

00:38:43.859 --> 00:38:46.559
<v Wes>your official package, and you push it to, or your container,

00:38:46.739 --> 00:38:50.759
<v Wes>and you push it to the registry, or you release it as like a release or a tag.

00:38:51.139 --> 00:38:54.079
<v Wes>Or that can all go all the way to trigger the deployment code, right?

00:38:54.139 --> 00:38:56.819
<v Wes>And so this is how a lot of the community website, Brent, you

00:38:56.819 --> 00:39:00.039
<v Wes>were talking about our great community powered website and it uses

00:39:00.039 --> 00:39:02.879
<v Wes>actions right so it'll go when we have our

00:39:02.879 --> 00:39:05.579
<v Wes>scraper run it pulls it goes and scrapes and if it finds

00:39:05.579 --> 00:39:09.839
<v Wes>new episodes it makes a pr with that and the pr can kick off actions to go build

00:39:09.839 --> 00:39:13.379
<v Wes>the site and make sure it builds properly and on on some of them it can even

00:39:13.379 --> 00:39:16.839
<v Wes>go spin up a whole preview website that you can go look at so you can really

00:39:16.839 --> 00:39:21.359
<v Wes>scale it from just run like a basic linter on your code all the way up to like

00:39:21.359 --> 00:39:24.299
<v Wes>go do stateful deploys, depending on what you want to do.

00:39:24.439 --> 00:39:28.519
<v Wes>But that's the little hook is basically you have some kind of way to trigger

00:39:28.519 --> 00:39:32.099
<v Wes>it, be that a push or a code change or some action in the repo,

00:39:32.279 --> 00:39:34.259
<v Wes>or a manual trigger or web hook.

00:39:34.519 --> 00:39:39.579
<v Wes>And it is an automation that is instantiated with the state from your repo,

00:39:39.579 --> 00:39:42.579
<v Wes>so that it already has the code and it can do stuff with it.

00:39:42.975 --> 00:39:46.995
<v Chris>And I have like a basic one that I've been using a couple of things that I haven't,

00:39:46.995 --> 00:39:50.335
<v Chris>I really haven't explored it much, but I've been finding it very useful in that

00:39:50.335 --> 00:39:55.735
<v Chris>I have a couple of projects that I'm downstream of and I pull them and I build

00:39:55.735 --> 00:39:57.695
<v Chris>packages for them using a GitHub action.

00:39:57.915 --> 00:40:01.815
<v Chris>So then when I update my local system, it just pulls from my repository instead

00:40:01.815 --> 00:40:05.075
<v Chris>of the upstream one, which has like all this other, all these other dependencies

00:40:05.075 --> 00:40:06.835
<v Chris>and crap that it auto installs that I don't need.

00:40:07.015 --> 00:40:09.475
<v Chris>But it just helps with, you know, just small things like that.

00:40:09.555 --> 00:40:11.935
<v Chris>So I have a package ready for me to go when I do an update and it runs like

00:40:11.935 --> 00:40:13.935
<v Chris>twice a day. That's kind of what I'm looking for.

00:40:14.275 --> 00:40:18.235
<v Wes>Exactly. And you can go, right, like, I have one that abuses it like a cron

00:40:18.235 --> 00:40:22.375
<v Wes>job to go scrape bookmarks I do and ping a Slack channel.

00:40:22.835 --> 00:40:26.595
<v Wes>But yeah, you can also have it where, like, this is super useful for Nix packages

00:40:26.595 --> 00:40:30.075
<v Wes>where you can have it automatically go check and see if there's been a new released

00:40:30.075 --> 00:40:35.255
<v Wes>version upstream and go make a PR that automatically does the update and updates all the pins for you.

00:40:35.435 --> 00:40:38.155
<v Wes>So yeah, I was looking for something like that, especially because I've been

00:40:38.155 --> 00:40:39.235
<v Wes>playing more with setting up.

00:40:39.795 --> 00:40:43.955
<v Wes>Well, there's a lot of ways to do it, but some kind of Nix build host or a Nix cache.

00:40:44.415 --> 00:40:47.715
<v Wes>If you combine those things, then you could have a Nix cache that your systems

00:40:47.715 --> 00:40:52.235
<v Wes>are on, and maybe you have a powerful system, and you can register on that system

00:40:52.235 --> 00:40:54.875
<v Wes>a runner for your CI system.

00:40:54.875 --> 00:40:58.395
<v Wes>So it can run on whatever's running the Forgeo instance, but it can also run

00:40:58.395 --> 00:41:01.675
<v Wes>on whatever other system that has access over the network to be able to dispatch it.

00:41:01.695 --> 00:41:04.895
<v Chris>Cool. Is that just like a container or something, or an agent you run on another machine?

00:41:05.075 --> 00:41:10.095
<v Wes>Exactly, yes. You can have it run native if you want. So that's kind of neat

00:41:10.095 --> 00:41:12.655
<v Wes>because for some Nix stuff, like Nix can be the sandbox.

00:41:12.835 --> 00:41:15.915
<v Wes>They don't necessarily need a whole build container. But for other stuff,

00:41:16.055 --> 00:41:20.015
<v Wes>you might want it to have an Ubuntu base or a Nix OS base or use your own custom

00:41:20.015 --> 00:41:21.435
<v Wes>container. So it can do both.

00:41:21.675 --> 00:41:25.095
<v Wes>And so you can do that on the host that's running the forge or you can do that

00:41:25.095 --> 00:41:26.555
<v Wes>on some other networked host.

00:41:26.735 --> 00:41:29.195
<v Wes>And so you can set up a workflow, which is what I've been working on.

00:41:29.275 --> 00:41:30.195
<v Wes>It doesn't totally work yet.

00:41:30.295 --> 00:41:33.235
<v Wes>This hopefully will be finished somewhat soon, but I got distracted by other

00:41:33.235 --> 00:41:36.275
<v Wes>projects, as you guys well know. but the idea would be,

00:41:37.057 --> 00:41:40.977
<v Wes>There are some stuff like some of my VPSs that it's like, I just don't really

00:41:40.977 --> 00:41:44.357
<v Wes>need to be building them on there. It works. It's fine. It's just not particularly fast.

00:41:44.517 --> 00:41:49.557
<v Wes>And I make all the changes in code anyway. So why not go have something that

00:41:49.557 --> 00:41:54.317
<v Wes>spins up, tests it, I can add more tests over time. If all that works, then go push it.

00:41:54.677 --> 00:41:58.817
<v Wes>And then either the CI can trigger it automatically, or if I want to do it myself,

00:41:59.077 --> 00:42:03.457
<v Wes>or tell a bot or whatever, then on the next rebuild, not only has it already

00:42:03.457 --> 00:42:06.157
<v Wes>been validated, but then it can just go pull the build files.

00:42:07.737 --> 00:42:11.357
<v Chris>So, this topic, I think, is coming up more and more.

00:42:11.577 --> 00:42:17.717
<v Chris>And I think one of the reasons it's growing is because there is a discomfort

00:42:17.717 --> 00:42:21.397
<v Chris>with this dichotomy of forces that are at play with GitHub.

00:42:22.197 --> 00:42:25.197
<v Chris>And there is this network effect that github benefits

00:42:25.197 --> 00:42:28.797
<v Chris>from that is extremely strong and you see it in community you

00:42:28.797 --> 00:42:31.957
<v Chris>see it in tool adoption etc etc etc right and

00:42:31.957 --> 00:42:36.257
<v Chris>then on the other side of that there's this equally strong force if not becoming

00:42:36.257 --> 00:42:40.997
<v Chris>stronger of in shitification and it's always it goes this way with all of these

00:42:40.997 --> 00:42:45.377
<v Chris>commercial platforms they you know they always kind of start at the really good

00:42:45.377 --> 00:42:49.037
<v Chris>end of the spectrum and then over time due to corporate strategy taxes,

00:42:49.337 --> 00:42:51.697
<v Chris>they tend to bend towards inshittification.

00:42:51.877 --> 00:42:56.937
<v Chris>And I think there's a lot of people concerned that GitHub is going that direction.

00:42:57.017 --> 00:42:59.937
<v Chris>And you mentioned there was drama in the past with 4G0,

00:43:00.769 --> 00:43:03.189
<v Chris>Do you feel like that stuff is settled? So like if I'm moving,

00:43:03.389 --> 00:43:08.369
<v Chris>like if I'm packing my bags, is this somewhere I can move into long term, do you think, Wes?

00:43:09.029 --> 00:43:14.369
<v Wes>Yeah, I think so. I would say you should think about like which pieces you're

00:43:14.369 --> 00:43:15.689
<v Wes>trying to replace and for what.

00:43:15.829 --> 00:43:20.289
<v Wes>So like right now, I'm just using it as like a private backend forge for my

00:43:20.289 --> 00:43:22.949
<v Wes>own stuff on my own private infrastructure and mesh.

00:43:23.209 --> 00:43:27.389
<v Wes>But there are some things like you could obviously expose it publicly with a

00:43:27.389 --> 00:43:29.229
<v Wes>proxy or a port or whatever you want to do.

00:43:29.229 --> 00:43:32.969
<v Wes>And they're working on some kinds of federation uh

00:43:32.969 --> 00:43:36.109
<v Wes>they even have some nlnet sponsorship on this i think to like be

00:43:36.109 --> 00:43:39.149
<v Wes>able to federate for joe instances so that's you

00:43:39.149 --> 00:43:42.209
<v Wes>know that's something that's coming and you can do custom actions

00:43:42.209 --> 00:43:45.369
<v Wes>but they have some there's like a forge uh for joe

00:43:45.369 --> 00:43:48.389
<v Wes>sync or something where you can at least do one-way sync

00:43:48.389 --> 00:43:51.209
<v Wes>so like you can do your primary development in your private forge

00:43:51.209 --> 00:43:54.169
<v Wes>but then push to github as sort

00:43:54.169 --> 00:43:57.709
<v Wes>of a secondary thing whether you want to share that more publicly or as a sort

00:43:57.709 --> 00:44:00.429
<v Wes>of cheap backup because that was one of the things is like there are some things

00:44:00.429 --> 00:44:04.349
<v Wes>i might keep on github because it's primarily dominated about sharing or the

00:44:04.349 --> 00:44:07.549
<v Wes>social thing but there's a lot of stuff where it's like i want it on there for

00:44:07.549 --> 00:44:12.009
<v Wes>easy access or for reference but like i could do all the primary stuff locally

00:44:12.009 --> 00:44:13.009
<v Wes>and then just sync it later.

00:44:13.009 --> 00:44:16.849
<v Brent>That sounds like quite a nice workflow actually yeah.

00:44:16.849 --> 00:44:20.269
<v Wes>I don't have it all ironed out to be clear but uh it seems like a lot of other

00:44:20.269 --> 00:44:23.129
<v Wes>people which is where i'm pulling a lot of this from is just there's been a

00:44:23.129 --> 00:44:25.709
<v Wes>lot of folks experimenting with these types of workflows.

00:44:25.929 --> 00:44:30.029
<v Wes>And it seems like there's between Codeberg itself and Private Forgeo and the

00:44:30.029 --> 00:44:32.309
<v Wes>possible Federation, there's just a lot cooking there right now.

00:44:33.111 --> 00:44:37.811
<v Chris>Brent, on that topic of it seems like we're entering this, where we're bending

00:44:37.811 --> 00:44:42.171
<v Chris>more and more towards incentivification, there was an article that the Software

00:44:42.171 --> 00:44:46.731
<v Chris>Conservancy published, and they start with something that I thought maybe we

00:44:46.731 --> 00:44:47.951
<v Chris>probably could have opened with,

00:44:48.251 --> 00:44:50.491
<v Chris>you know, if I were to plan this a little better.

00:44:50.651 --> 00:44:54.031
<v Chris>But moving off of GitHub for some people, it's not an easy task.

00:44:54.171 --> 00:44:55.651
<v Chris>Like there's some people in the chat room, like PJ, he's like,

00:44:55.691 --> 00:44:58.191
<v Chris>oh, not really, wouldn't be hard for me to move. I'm not using it at all.

00:44:58.351 --> 00:44:59.831
<v Chris>That is easy. But other people.

00:45:00.031 --> 00:45:00.911
<v Brent>Are deeply entrenched.

00:45:01.271 --> 00:45:04.871
<v Chris>That is a deeper problem. And the Conservancy is trying to make a pitch here.

00:45:05.291 --> 00:45:08.231
<v Brent>Yeah, I would call this almost a call to action this day here.

00:45:08.471 --> 00:45:15.371
<v Brent>Since June 2022, we've been encouraging and helping FOSS developers to give up on GitHub.

00:45:16.151 --> 00:45:19.971
<v Brent>We realize, though, this is not an easy task. GitHub is ubiquitous,

00:45:20.091 --> 00:45:23.951
<v Brent>though through their effective marketing, GitHub has convinced free and open

00:45:23.951 --> 00:45:29.731
<v Brent>source software developers that GitHub is the best and even the only place for FOSS development.

00:45:29.731 --> 00:45:37.271
<v Brent>However, as a proprietary trade secret tool, GitHub itself is the very opposite of FOSS.

00:45:37.531 --> 00:45:41.691
<v Brent>By contrast, Git was designed specifically to replace a proprietary tool,

00:45:41.831 --> 00:45:48.751
<v Brent>BitKeeper, and to make FOSS development distributed using FOSS tools and without a centralized site.

00:45:49.031 --> 00:45:54.291
<v Brent>GitHub has distorted Git, creating add-ons and features that turn a distributed,

00:45:54.551 --> 00:45:59.431
<v Brent>egalitarian, and FOSS system into a centralized proprietary site.

00:45:59.731 --> 00:46:05.491
<v Brent>And all those add-on features are controlled by a single for-profit company, Microsoft.

00:46:05.971 --> 00:46:10.851
<v Brent>By staying on GitHub, established FOSS communities bring newcomers to this proprietary

00:46:10.851 --> 00:46:16.591
<v Brent>platform, expanding GitHub's reach and limiting the imaginations of the next

00:46:16.591 --> 00:46:18.911
<v Brent>generation of FOSS developers.

00:46:20.817 --> 00:46:26.517
<v Brent>They give other reasons here in this article for why a lot of the anti-GitHub

00:46:26.517 --> 00:46:29.637
<v Brent>community wants to stay away from Microsoft.

00:46:29.757 --> 00:46:36.377
<v Brent>And there's one in particular that I think our audience would really feel hits home.

00:46:37.137 --> 00:46:40.277
<v Brent>And I wonder if this hit for you both as well.

00:46:40.457 --> 00:46:45.417
<v Brent>They say Microsoft has escalated the incorporation of its for-profit Copilot

00:46:45.417 --> 00:46:49.977
<v Brent>product. The Copilot banner now incorporates many different proprietary so-called

00:46:49.977 --> 00:46:51.717
<v Brent>artificial intelligence products.

00:46:52.017 --> 00:46:56.657
<v Brent>However, the first Copilot product was designed to automatically generate code

00:46:56.657 --> 00:47:01.337
<v Brent>interactively for developers, and that feature is still pushed on GitHub users.

00:47:01.617 --> 00:47:06.097
<v Brent>Copilot AI model was trained, according to GitHub's own statements,

00:47:06.777 --> 00:47:11.477
<v Brent>exclusively with projects that were hosted on GitHub, including many licensed

00:47:11.477 --> 00:47:13.317
<v Brent>under copy left licenses.

00:47:14.077 --> 00:47:18.397
<v Brent>Microsoft even admits that there was one document that they encountered and

00:47:18.397 --> 00:47:25.117
<v Brent>ignored a whopping 700,000 different times during training, and that was the

00:47:25.117 --> 00:47:27.617
<v Brent>GNU General Public License.

00:47:28.077 --> 00:47:33.017
<v Brent>Most of these projects are not in the public domain. They are licensed under FOSS licenses.

00:47:33.017 --> 00:47:37.617
<v Brent>These licenses have requirements, including proper author attribution,

00:47:37.877 --> 00:47:42.997
<v Brent>and in cases of copyleft licenses, they sometimes require the works based on

00:47:42.997 --> 00:47:48.057
<v Brent>it, or then incorporate that software to be licensed under the exact same copyleft

00:47:48.057 --> 00:47:49.817
<v Brent>license as the prior work.

00:47:49.917 --> 00:47:56.117
<v Brent>Microsoft and GitHub have been ignoring these license requirements for quite a few years now.

00:47:56.117 --> 00:48:01.797
<v Brent>Their only defense of these actions was a still-unretracted statement by their

00:48:01.797 --> 00:48:07.917
<v Brent>former CEO in which he falsely claims that unsettled law on this topic is actually quite settled.

00:48:08.677 --> 00:48:13.037
<v Brent>In addition to the legal issues, the ethical implications of GitHub's choice

00:48:13.037 --> 00:48:19.017
<v Brent>to use copyleft code in the service of creating proprietary software is a grave

00:48:19.017 --> 00:48:20.997
<v Brent>one. So the debate here is.

00:48:22.333 --> 00:48:29.633
<v Brent>Is it okay to use over 700,000 open source projects to fund their,

00:48:29.633 --> 00:48:32.413
<v Brent>well, business model at this point?

00:48:32.653 --> 00:48:37.593
<v Brent>And this is something when Microsoft first bought GitHub, many of us imagined

00:48:37.593 --> 00:48:44.333
<v Brent>the dark ways that that could go negatively against open source ethos.

00:48:44.533 --> 00:48:48.673
<v Brent>And at the time, we didn't really have answers. But I think you could argue

00:48:48.673 --> 00:48:51.093
<v Brent>this is one of the reasons that we were hesitant back then.

00:48:51.533 --> 00:48:55.593
<v Chris>I think maybe an interesting way to frame this, a model to use,

00:48:55.693 --> 00:49:03.553
<v Chris>would be if they were properly doing attribution, would that solve the majority of the problem?

00:49:03.733 --> 00:49:07.873
<v Chris>Is the issue not that they're using code that's open source and copyleft,

00:49:07.913 --> 00:49:11.653
<v Chris>but the issue is that when they generate that code, if it's close to the exact

00:49:11.653 --> 00:49:13.593
<v Chris>original code, they're not attributing it?

00:49:13.733 --> 00:49:16.453
<v Chris>I don't want to get nuanced into like, well, if it's changed by 25%,

00:49:16.453 --> 00:49:20.233
<v Chris>but I just wonder if that is the problem. If it's just simply,

00:49:20.233 --> 00:49:21.873
<v Chris>is the core issue attribution?

00:49:22.013 --> 00:49:28.513
<v Brent>I think the argument would be the issue is the licensing of the product that they're using.

00:49:30.536 --> 00:49:31.856
<v Brent>All of this code into.

00:49:32.276 --> 00:49:35.956
<v Chris>Well, but that doesn't make sense, right? Because if you post a free software

00:49:35.956 --> 00:49:41.656
<v Chris>code on Stack Exchange, it doesn't matter if the Stack Exchange backend is running on Windows or not.

00:49:41.996 --> 00:49:45.476
<v Wes>I think Brent means what gets output from, not runs Copilot.

00:49:45.696 --> 00:49:47.276
<v Chris>Okay. All right. What do you think, Wes?

00:49:47.476 --> 00:49:50.496
<v Wes>I mean, there's certainly like license fights to be had for sure,

00:49:50.536 --> 00:49:53.356
<v Wes>but there is that whole uncomfortable question of like, well,

00:49:53.416 --> 00:49:56.896
<v Wes>how much learning and what counts as learning do we allow, right?

00:49:56.996 --> 00:50:01.616
<v Wes>Because just about every single person who's ever contributed to copyleft went

00:50:01.616 --> 00:50:04.216
<v Wes>on to contribute to other differently licensed projects.

00:50:04.516 --> 00:50:09.056
<v Wes>That's just how it works, right? And so we can argue if the scale of this matters,

00:50:09.056 --> 00:50:14.396
<v Wes>we can argue if LLMs count as learning when we're doing the statistical modeling with them or not.

00:50:14.496 --> 00:50:17.796
<v Wes>But I think for us, right, there's one thing on the giant scale,

00:50:17.876 --> 00:50:24.116
<v Wes>but as individual users, the VEM training on my open source or public code was

00:50:24.116 --> 00:50:25.956
<v Wes>not Not the thing that I cared about necessarily.

00:50:26.356 --> 00:50:30.236
<v Wes>I think for me, it'd be more about control and knowing when that was happening.

00:50:30.556 --> 00:50:35.536
<v Wes>And where GitHub in particular is in an awkward spot is like there's the stuff in public.

00:50:35.756 --> 00:50:38.496
<v Wes>And I think at this point, you just sort of have to accept that if you put something

00:50:38.496 --> 00:50:43.636
<v Wes>on the available internet, it will be ingested for purposes unknown and uncontrollable to you.

00:50:44.076 --> 00:50:48.336
<v Wes>But then for people like me who are not paying GitHub, but still have some stuff

00:50:48.336 --> 00:50:50.796
<v Wes>that's private on there, that's where it gets murkier for me.

00:50:50.876 --> 00:50:54.556
<v Wes>Because like if I'm a company that has like an actual contract with them,

00:50:54.716 --> 00:50:55.696
<v Wes>that's a whole other thing.

00:50:55.836 --> 00:51:00.776
<v Wes>That has its own sort of risk and uncertainty that's quantifiable by lawyers I employ and all that.

00:51:00.896 --> 00:51:04.956
<v Wes>But for me, without that and with no lawyers to deploy, it's sort of like,

00:51:05.016 --> 00:51:08.536
<v Wes>well, I want to have better boundaries of what do I consider I'm just sending

00:51:08.536 --> 00:51:10.216
<v Wes>off into the ether in the commons?

00:51:10.356 --> 00:51:12.636
<v Wes>What do I think is actually private and under my control?

00:51:12.916 --> 00:51:14.876
<v Wes>So that's the framework I'm currently using.

00:51:15.856 --> 00:51:20.816
<v Chris>So would like a user toggle satisfy you? You know, if you could go and say like

00:51:20.816 --> 00:51:24.056
<v Chris>a checkbox, because maybe they have this, I don't know, they just don't train on my data.

00:51:25.585 --> 00:51:29.925
<v Chris>Does that solve that problem? I mean, these don't seem like particularly unsolvable problems.

00:51:30.065 --> 00:51:32.685
<v Wes>Well, no, so for that, I think that's the trust thing, right?

00:51:32.685 --> 00:51:33.825
<v Brent>That would go to the contract.

00:51:34.085 --> 00:51:36.605
<v Wes>Because I don't have any audits. I don't have any enforcement mechanisms there.

00:51:36.625 --> 00:51:37.445
<v Chris>Oh, so for me.

00:51:37.565 --> 00:51:42.005
<v Wes>That's where I, if I don't want them to train on it, I don't want it on their platform.

00:51:42.205 --> 00:51:44.305
<v Chris>Yeah, that I agree with. Yeah, that's...

00:51:44.305 --> 00:51:47.745
<v Wes>I mean, I'm totally down for them adding that. I think that might help, right?

00:51:47.825 --> 00:51:52.125
<v Wes>They're giving people more control or at least the illusion or some level of

00:51:52.125 --> 00:51:56.025
<v Wes>control to have more say in that, I think would be helpful and would be an act

00:51:56.025 --> 00:51:59.445
<v Wes>of good faith what it actually does in terms of real consequences and how it

00:51:59.445 --> 00:52:00.945
<v Wes>changes things. I don't know.

00:52:01.165 --> 00:52:04.285
<v Chris>I agree. And I think the best solution is to just move off the platform.

00:52:04.285 --> 00:52:08.405
<v Chris>If this is a concern of yours and for private stuff, I think that does make

00:52:08.405 --> 00:52:10.785
<v Chris>sense for stuff that I was going to share publicly with the audience.

00:52:10.905 --> 00:52:14.505
<v Chris>Anyways, I don't really care if they train on it. It's just not really been my complaint.

00:52:14.725 --> 00:52:15.825
<v Wes>I also find that the,

00:52:17.059 --> 00:52:21.859
<v Wes>The co-pilot on the GitHub site has not actually been that annoying to me.

00:52:21.999 --> 00:52:24.059
<v Wes>I don't actually edit that much code on there or anything, but it's not like

00:52:24.059 --> 00:52:27.279
<v Wes>it's constantly injected in when I go look at GitHub or use it.

00:52:27.399 --> 00:52:31.859
<v Chris>I'm sorry. People are editing code directly on the GitHub.com website.

00:52:32.439 --> 00:52:32.999
<v Wes>Oh, yeah.

00:52:33.239 --> 00:52:34.399
<v Chris>They deserve to be annoying.

00:52:34.679 --> 00:52:35.559
<v Wes>They have a whole editor.

00:52:36.039 --> 00:52:39.359
<v Chris>I guess I've seen that, but I didn't think anybody actually used it.

00:52:39.539 --> 00:52:40.819
<v Chris>That just seems crazy to me.

00:52:41.639 --> 00:52:46.459
<v Wes>So what I was going to say is I find the copilot being built into VS Code but

00:52:46.459 --> 00:52:48.779
<v Wes>still requiring a login to be way more

00:52:48.779 --> 00:52:51.119
<v Wes>annoying than anything that they're injecting over on the GitHub side.

00:52:51.259 --> 00:52:54.059
<v Chris>True, true. Yeah, there's a lot of strategy taxes around GitHub that I find very annoying.

00:52:54.319 --> 00:52:58.579
<v Chris>I will just as a quick aside, maybe I should leave it, but I'll just say.

00:52:58.579 --> 00:53:03.439
<v Chris>I just think if you were to go back in time 13 years ago and play this segment

00:53:03.439 --> 00:53:08.979
<v Chris>back for us back then, where we're sitting here and we're preening about intellectual

00:53:08.979 --> 00:53:12.539
<v Chris>property and protecting our licenses and our copyrights.

00:53:12.619 --> 00:53:16.819
<v Chris>I just think it's so funny coming from a community that used to be about breaking

00:53:16.819 --> 00:53:23.239
<v Chris>the Tivos and used to be about sharing, you know, sharing things.

00:53:23.239 --> 00:53:27.099
<v Chris>I don't want to say pirating music and TV and movies, but a lot of people in

00:53:27.099 --> 00:53:31.399
<v Chris>this community engage in those activities and have since the days of Napster

00:53:31.399 --> 00:53:33.399
<v Chris>and have no qualms about it.

00:53:33.899 --> 00:53:36.879
<v Chris>But then this topic comes up and all of a sudden now this is where they've decided

00:53:36.879 --> 00:53:41.339
<v Chris>this is the hill they're going to die on after a decade plus of stealing music, TV shows and movies.

00:53:41.499 --> 00:53:44.619
<v Chris>I just find it ironic, especially from a community that in the past has been

00:53:44.619 --> 00:53:49.639
<v Chris>sort of anti-copyright, anti-licenses that prevent them from hacking things,

00:53:50.139 --> 00:53:53.039
<v Chris>you know, proprietary blobs and things like that. And now all of a sudden,

00:53:54.045 --> 00:53:56.405
<v Chris>We're like the people that are like pro-proprietary information.

00:53:56.405 --> 00:53:57.485
<v Chris>I just think it's pretty ironic.

00:53:58.365 --> 00:54:01.325
<v Chris>But people have the right to, you know, do it, choose whatever they want.

00:54:01.385 --> 00:54:05.325
<v Chris>And I think that's why some solutions around self-hosting your own GitHub alternative

00:54:05.325 --> 00:54:10.185
<v Chris>are viable. And I think it sounds like for me, for Geo, if I can figure out how to say it.

00:54:10.765 --> 00:54:14.625
<v Wes>Could be about- For Geo. I guess it's Esperanto for Forge. So there you go.

00:54:14.845 --> 00:54:15.005
<v Chris>Okay.

00:54:15.065 --> 00:54:18.145
<v Wes>And yeah, I do think there are some arguments to be made around the scale and

00:54:18.145 --> 00:54:23.105
<v Wes>the like, I think a lot of the uncomfortableness is from the asymmetry of scale

00:54:23.105 --> 00:54:25.285
<v Wes>and resources and this feeling of like,

00:54:25.405 --> 00:54:30.005
<v Wes>I am doing this stuff and I wanted to benefit humanity and the commons or other

00:54:30.005 --> 00:54:34.565
<v Wes>people or whatever, but I didn't necessarily want to have that be underwriting

00:54:34.565 --> 00:54:38.145
<v Wes>your entire business model without you giving back. And so there's totally legitimate

00:54:38.145 --> 00:54:38.985
<v Wes>things there, but you're right.

00:54:39.245 --> 00:54:43.145
<v Wes>We should also probably strive to make sure that we can find consistent frameworks

00:54:43.145 --> 00:54:46.825
<v Wes>to evaluate this stuff because it's changing fast and we want to figure out

00:54:46.825 --> 00:54:47.725
<v Wes>how to think about it well.

00:54:47.725 --> 00:54:50.205
<v Chris>I agree. I don't think we should lose sight though, that even though they,

00:54:50.345 --> 00:54:52.305
<v Chris>if they have indexed and they've rolled over and all of this,

00:54:52.425 --> 00:54:56.905
<v Chris>that information has been made available to all of us extremely reasonably.

00:54:57.125 --> 00:55:00.365
<v Chris>And we have access to it through a lot of free tools now that are making all

00:55:00.365 --> 00:55:03.025
<v Chris>of us faster builders and we're building more things.

00:55:03.665 --> 00:55:07.685
<v Chris>So if your effort was towards making humanity better and making more information

00:55:07.685 --> 00:55:10.285
<v Chris>freely available to the people, that has been achieved.

00:55:10.385 --> 00:55:14.425
<v Chris>And now more people are accessing and utilizing it, maybe not directly through

00:55:14.425 --> 00:55:16.265
<v Chris>you and the way you want them to consume it.

00:55:16.365 --> 00:55:20.185
<v Chris>But it is happening at a much larger scale than it was even six months ago.

00:55:20.265 --> 00:55:24.105
<v Chris>And the amount of free software that is being produced and published on platforms

00:55:24.105 --> 00:55:27.305
<v Chris>like GitHub is growing exponentially like a hockey stick right now.

00:55:27.745 --> 00:55:31.945
<v Chris>And so in a way, it has made that information more accessible to people.

00:55:31.945 --> 00:55:34.945
<v Chris>And so if at the core of what you're trying to do when you create something

00:55:34.945 --> 00:55:39.645
<v Chris>as free software is improve the information and access to humanity that is being

00:55:39.645 --> 00:55:42.565
<v Chris>achieved, you may not like the means in which it's being achieved.

00:55:43.494 --> 00:55:47.734
<v Chris>But you can't deny it's happening. Just not justifying it. I'm just trying to

00:55:47.734 --> 00:55:49.214
<v Chris>say there's two sides to all of this.

00:55:49.414 --> 00:55:52.514
<v Chris>And people should have their options to opt out and not participate.

00:55:52.814 --> 00:55:54.614
<v Chris>And I'd like to hear what the audience suggests.

00:55:55.274 --> 00:55:58.394
<v Chris>If there's something better than we've come up with, please let us know.

00:55:58.534 --> 00:56:01.854
<v Chris>Because I think this is going to become a bigger and bigger deal as people make

00:56:01.854 --> 00:56:04.374
<v Chris>their decisions here. Because this ain't slowing down, right?

00:56:04.554 --> 00:56:06.934
<v Chris>That bend is continuing.

00:56:07.254 --> 00:56:09.534
<v Chris>And the corporate strategy won't slow down.

00:56:14.934 --> 00:56:19.594
<v Brent>We have an extra special baller booster here, our dear, lovable,

00:56:19.934 --> 00:56:23.034
<v Brent>squishy PJ, Producer Jeff.

00:56:28.654 --> 00:56:33.994
<v Brent>Producer Jeff sent in 22,222 Satoshis.

00:56:34.814 --> 00:56:39.674
<v Brent>Says, I am a forgetful booster. Pin your tabs, Brent.

00:56:40.214 --> 00:56:42.694
<v Chris>Yeah, Brantley, how come you won't ever pin your tabs over there?

00:56:42.694 --> 00:56:46.394
<v Chris>You know what? We just want you to gosh darn pin your tabs. Oh, yeah. All right?

00:56:54.372 --> 00:56:59.272
<v Brent>Oh, I meant to tell you earlier, I pinned my first tab in years this week.

00:56:59.272 --> 00:57:00.252
<v Chris>What? What? What?

00:57:00.332 --> 00:57:00.932
<v Brent>I did.

00:57:01.112 --> 00:57:02.832
<v Wes>What was it? Are you willing to share?

00:57:03.032 --> 00:57:06.072
<v Brent>The song really got me inspired to change my ways.

00:57:06.232 --> 00:57:11.652
<v Brent>And I pinned an OpenCode web UI tab because I figured that would be useful.

00:57:12.452 --> 00:57:15.592
<v Brent>I have many, many questions. Maybe we'll get into that at some point in the future.

00:57:16.072 --> 00:57:17.672
<v Chris>Huh. Okay. All right.

00:57:17.672 --> 00:57:20.332
<v Wes>He's going to make us radically rethink our relationship with pinned tabs.

00:57:20.472 --> 00:57:21.732
<v Wes>I don't know if I'm ready for it.

00:57:21.912 --> 00:57:26.292
<v Chris>I don't. Oh, geez. I got to have lunch first, I think. Speaking of lunch,

00:57:26.432 --> 00:57:29.752
<v Chris>Derivation Dengus came in with 21,633 sats.

00:57:32.192 --> 00:57:35.232
<v Chris>I'm loving these AI episodes, especially the practical AI tips.

00:57:35.372 --> 00:57:38.752
<v Chris>I've been pretty extensive on my NixOS home lab, so I've been trying to build

00:57:38.752 --> 00:57:41.932
<v Chris>systems that agents can safely take on some of the maintenance for.

00:57:42.252 --> 00:57:45.372
<v Chris>And, you know, things like that. There's still a lot of work to do and a lot

00:57:45.372 --> 00:57:48.492
<v Chris>to work out, but these episodes always give me good ideas. Keep them coming.

00:57:48.992 --> 00:57:53.032
<v Chris>We did get a good amount of feedback. We did. On the emails,

00:57:53.432 --> 00:57:58.592
<v Chris>it was almost 50-50 split with one extra email coming in to the don't talk about

00:57:58.592 --> 00:58:00.812
<v Chris>it so much side on the AI stuff.

00:58:00.952 --> 00:58:03.712
<v Chris>So it was good feedback, and we're still reviewing it all.

00:58:03.932 --> 00:58:06.752
<v Chris>Please do keep telling us your opinions on it. If you're catching this after

00:58:06.752 --> 00:58:07.572
<v Chris>the fact, we still want to know.

00:58:08.612 --> 00:58:11.892
<v Wes>Yeah, and I like how Dingus here points out, too, I think, something that is

00:58:11.892 --> 00:58:14.992
<v Wes>relevant to our last topic, which is whatever you think about how they were

00:58:14.992 --> 00:58:18.592
<v Wes>made, they're here now, and you can use these tools to improve your own open

00:58:18.592 --> 00:58:23.252
<v Wes>source work, your own home lab, and or easier escape from proprietary services.

00:58:23.712 --> 00:58:26.972
<v Wes>Nothing like an LLM script to help you do your Google takeout, that kind of thing.

00:58:27.312 --> 00:58:27.792
<v Chris>There you go.

00:58:28.012 --> 00:58:31.012
<v Brent>That has been my entire week. I will just divulge.

00:58:31.712 --> 00:58:40.252
<v Wes>Ooh, I didn't even know that. Well, our dear Magnolia Mayhem comes in with 2,345 SATs.

00:58:42.583 --> 00:58:44.643
<v Chris>Two males in a row. Nice.

00:58:45.303 --> 00:58:49.943
<v Wes>And a Knicks Book Machine giveaway follow-up. I love this.

00:58:50.143 --> 00:58:53.063
<v Wes>I finally got my wife to sit down and use it.

00:58:53.223 --> 00:58:55.843
<v Wes>There wasn't that much information that I could glean from the experience,

00:58:55.843 --> 00:58:59.383
<v Wes>but that's mostly because there wasn't anything that she ran into.

00:58:59.643 --> 00:59:02.783
<v Wes>Wow. I gave her the prompt of, imagine you're someone who needs a job,

00:59:02.863 --> 00:59:05.603
<v Wes>and this just got set down in front of you as a laptop.

00:59:05.803 --> 00:59:06.683
<v Chris>Gave her the prompt.

00:59:07.203 --> 00:59:10.943
<v Wes>She immediately just went to Indeed.com. I can't even say she was impressed,

00:59:11.123 --> 00:59:16.143
<v Wes>because to her, it was just a computer, which I think is maybe the best response I could have gotten.

00:59:16.323 --> 00:59:20.043
<v Wes>From her perspective, Linux is my i3 desktop. She didn't even know she was on Linux.

00:59:20.303 --> 00:59:23.443
<v Wes>Best report I could give, up next, grandma.

00:59:23.743 --> 00:59:24.043
<v Chris>Oh!

00:59:24.343 --> 00:59:25.223
<v Brent>Oh, yeah.

00:59:25.643 --> 00:59:29.323
<v Chris>Let us know how that goes. Interesting. You know, that is probably the best

00:59:29.323 --> 00:59:30.823
<v Chris>report possible, I suppose.

00:59:31.963 --> 00:59:34.003
<v Chris>Thank you, Mr. Mayhem. Appreciate that.

00:59:34.923 --> 00:59:39.703
<v Brent>Well, we have a couple boosts here from Elray. El Rey 741,

00:59:42.475 --> 00:59:46.715
<v Brent>While I can appreciate other listeners' sentiments, and initially for a little

00:59:46.715 --> 00:59:50.995
<v Brent>while I agreed, that there was too much AI conversation in Linux Unplugged,

00:59:51.975 --> 00:59:56.275
<v Brent>but then I reflected on it a while back, and I have really appreciated the pragmatic

00:59:56.275 --> 00:59:59.975
<v Brent>and fun approach JBS has taken to the AI topic.

01:00:00.215 --> 01:00:03.035
<v Brent>For a while, you've used it in the background and not brought it up much,

01:00:03.035 --> 01:00:06.535
<v Brent>because I'm assuming it wasn't as applicable to the wider audience,

01:00:06.915 --> 01:00:09.115
<v Brent>for example, the song generation that we do.

01:00:09.835 --> 01:00:14.135
<v Brent>But as you found things had greater impact to your day life,

01:00:14.295 --> 01:00:17.415
<v Brent>you've brought more intentional topics to us, the audience.

01:00:17.815 --> 01:00:18.875
<v Chris>Oh, thank you. I think that's fair.

01:00:19.015 --> 01:00:23.435
<v Brent>I also wanted to throw out there that I've loved the members bootleg feed update

01:00:23.435 --> 01:00:25.075
<v Brent>having the video enclosure.

01:00:25.495 --> 01:00:29.075
<v Brent>Life has been crazy busy, so being able to see the amazing studio,

01:00:29.355 --> 01:00:33.875
<v Brent>your facial reactions, and friendly faces has been awesome when I get some downtime.

01:00:35.355 --> 01:00:37.915
<v Wes>It's so nice to hear from LRA, too. Hope you're doing well.

01:00:37.915 --> 01:00:38.535
<v Chris>Yeah, me too.

01:00:38.615 --> 01:00:38.835
<v Brent>Agree?

01:00:39.775 --> 01:00:41.015
<v Chris>And thank you for the feedback.

01:00:41.435 --> 01:00:45.115
<v Brent>FYI, since you've chatted with Fountain a lot in the past, when rotating to

01:00:45.115 --> 01:00:47.795
<v Brent>landscape mode, oh, this is a bug report, I think.

01:00:47.975 --> 01:00:51.335
<v Brent>When rotating to landscape mode using the video version in full screen,

01:00:51.955 --> 01:00:54.575
<v Brent>the Fountain logo cuts off part of Chris's head.

01:00:54.915 --> 01:00:57.795
<v Brent>So when you go to the third person shot, since Chris is on top,

01:00:58.195 --> 01:01:00.835
<v Brent>not a big deal, but you know, Chris's face.

01:01:00.975 --> 01:01:04.575
<v Chris>Yeah, I do like to be on top and that is something I'll talk to them about.

01:01:04.695 --> 01:01:05.875
<v Chris>You got to have that wide screen.

01:01:06.035 --> 01:01:10.295
<v Chris>I mean, it's just a 16 by nine video. Thank you. It's good to hear from you, sir.

01:01:11.495 --> 01:01:16.435
<v Chris>User 266 is here with 4,709 sats. Woo-hoo!

01:01:18.031 --> 01:01:20.131
<v Chris>Long-time listener, first-time booster.

01:01:20.931 --> 01:01:21.291
<v Brent>Nice.

01:01:24.191 --> 01:01:27.731
<v Chris>That's great. Maybe my last, since I'm switching away from Fountain,

01:01:27.891 --> 01:01:30.951
<v Chris>though. Too many bugs for me. Some people hit them, man, you know?

01:01:32.351 --> 01:01:36.391
<v Chris>It's really gotten very, very good, but in terms of some of the other apps,

01:01:36.431 --> 01:01:37.611
<v Chris>they still have like a decade on them.

01:01:38.211 --> 01:01:41.771
<v Chris>But he says, all the talk about AI has been okay with me, but not whole episodes.

01:01:41.771 --> 01:01:44.971
<v Chris>There's so much more going on in the FOSS world. Well, that is, there is a lot.

01:01:45.371 --> 01:01:48.351
<v Chris>True. It doesn't get as much coverage as it should, So that's one of the things

01:01:48.351 --> 01:01:49.931
<v Chris>we try to take on as we can.

01:01:50.051 --> 01:01:53.791
<v Wes>And feel free to boost or email in too if there's something we have missed in

01:01:53.791 --> 01:01:55.131
<v Wes>the FOSS world that's exciting.

01:01:55.391 --> 01:01:56.131
<v Chris>It says greetings from Italy.

01:01:56.131 --> 01:01:56.611
<v Wes>Because we don't see it all.

01:01:57.411 --> 01:02:00.111
<v Chris>Greetings from Italy to you too, or at least back from us.

01:02:01.151 --> 01:02:02.451
<v Wes>Italy meetup, let's go.

01:02:02.591 --> 01:02:04.831
<v Chris>Let's go. All right, I like that.

01:02:05.251 --> 01:02:09.091
<v Wes>All right, well Ensign Nix comes in with 2,048 sats.

01:02:12.691 --> 01:02:16.131
<v Wes>I'm not a fan of AI, but I acknowledge that it's a useful tool.

01:02:16.131 --> 01:02:20.311
<v Wes>The thing I dislike the most is that it's been placed on too high of a pedestal

01:02:20.311 --> 01:02:25.811
<v Wes>by the big tech companies and advertised as the answer to all of humanity's problems.

01:02:26.031 --> 01:02:30.251
<v Wes>And as a result, now I can't buy memory or a hard drive without breaking the bank.

01:02:30.411 --> 01:02:34.411
<v Wes>I actually want the AI bubble to burst so we can shape its future instead of

01:02:34.411 --> 01:02:36.691
<v Wes>greedy corporations who only care about profit.

01:02:37.331 --> 01:02:38.091
<v Chris>I will say.

01:02:38.091 --> 01:02:39.751
<v Wes>That's a fun, refreshing take. I like it.

01:02:39.951 --> 01:02:40.271
<v Brent>I agree.

01:02:41.471 --> 01:02:45.971
<v Chris>It's a nuance in that you can't blame the tech for the way the corporations

01:02:45.971 --> 01:02:50.871
<v Chris>around it decide to make purchases even before they have the money to pay for it all.

01:02:51.471 --> 01:02:54.611
<v Chris>But it is the silly part of the curve, for sure.

01:02:54.811 --> 01:02:58.151
<v Brent>I think what Chris is trying to say is, it's not the tech, it's the people.

01:02:58.711 --> 01:03:00.811
<v Chris>Yeah, it often is, though. It often is.

01:03:01.291 --> 01:03:04.211
<v Wes>And boost in and we'll send you the studio address and you can send your RAM here.

01:03:05.391 --> 01:03:07.331
<v Chris>We need it. Oh, man.

01:03:07.331 --> 01:03:12.571
<v Brent>Adversaries 17 boosted in 4,220 satoshis,

01:03:15.028 --> 01:03:19.508
<v Brent>Well, I think you guys are balancing AI and non-AI topics very well indeed.

01:03:19.788 --> 01:03:23.468
<v Brent>I can definitely tell there's a lot of work put in each week to keep topics

01:03:23.468 --> 01:03:27.148
<v Brent>fresh and highlight the lesser hyped things. Please keep it up.

01:03:27.548 --> 01:03:28.208
<v Chris>Oh, thank you, sir.

01:03:28.628 --> 01:03:29.188
<v Wes>Thank you.

01:03:31.028 --> 01:03:37.208
<v Chris>I like the adversaries. NK of comes in with five, you think I got that right, 5,000 sets.

01:03:38.848 --> 01:03:42.188
<v Chris>Another one, I like the AI coverage, but I know it's not everyone's cup of tea.

01:03:42.408 --> 01:03:45.648
<v Chris>Could chapters help those wanting to skip the subject? I think the current ratio

01:03:45.648 --> 01:03:49.748
<v Chris>between AI and not is good. So keep up the good work. Thank you.

01:03:50.168 --> 01:03:54.508
<v Brent>Do we have chapters in our feed that people can use?

01:03:54.848 --> 01:03:55.728
<v Chris>We do have chapters.

01:03:56.028 --> 01:04:00.008
<v Wes>It does bring up, you know, that could perhaps, and I'm failing at this all

01:04:00.008 --> 01:04:04.788
<v Wes>the time, but kind of like with Nick's, perhaps then if we do think consciously

01:04:04.788 --> 01:04:06.088
<v Wes>about keeping, you know,

01:04:06.688 --> 01:04:11.268
<v Wes>not an absolute ban or anything, but just keep, don't inject AI into every chapter when we don't need to.

01:04:11.408 --> 01:04:14.508
<v Chris>It did take a drinking challenge to get us to behave a little bit.

01:04:14.808 --> 01:04:15.328
<v Brent>Yeah.

01:04:16.928 --> 01:04:17.648
<v Chris>Hopefully it doesn't get that bad.

01:04:17.648 --> 01:04:18.508
<v Wes>So hopefully we can avoid that.

01:04:22.948 --> 01:04:28.108
<v Wes>Well, Kiwi Bitcoin Guide comes in with 4,567 cents.

01:04:31.043 --> 01:04:34.563
<v Wes>I enjoy the AI subject matter and the way you cover it. I'm fairly new to the

01:04:34.563 --> 01:04:37.623
<v Wes>Linux and FOSS world, and now I have to weave AI into it all,

01:04:37.703 --> 01:04:40.243
<v Wes>so I appreciate the way you bring it into the Linux ecosystem.

01:04:40.523 --> 01:04:44.183
<v Wes>Give examples of practical use cases and also potential hooks to be aware of.

01:04:44.623 --> 01:04:47.783
<v Wes>AI seems to be here to stay, and everyone needs to understand how to use it,

01:04:47.963 --> 01:04:50.303
<v Wes>so keep the content coming. That's my vote.

01:04:50.463 --> 01:04:50.923
<v Chris>Thank you.

01:04:51.283 --> 01:04:51.563
<v Brent>Thank you.

01:04:51.643 --> 01:04:55.163
<v Chris>Yeah, that has, so, I mean, I do really appreciate all the positive feedback,

01:04:55.303 --> 01:04:57.463
<v Chris>because it does sort of balance out some of the negative feedback.

01:04:57.883 --> 01:05:01.643
<v Chris>I think the takeaway is when we talk about it, talk about it in a practical

01:05:01.643 --> 01:05:05.083
<v Chris>useful context that uh you know and i think that's what something we've been

01:05:05.083 --> 01:05:07.143
<v Chris>good at with with an open source focus.

01:05:07.143 --> 01:05:12.083
<v Brent>The way i've been approaching that tool is like what can i do with it you know

01:05:12.083 --> 01:05:14.503
<v Brent>the the technology is really just

01:05:14.503 --> 01:05:19.283
<v Brent>the means to doing something bigger and greater and i think that helps me.

01:05:19.283 --> 01:05:20.963
<v Chris>I think to buy a.

01:05:20.963 --> 01:05:22.363
<v Brent>More positive relationship with it.

01:05:22.363 --> 01:05:25.543
<v Chris>Like you were mentioning one of the models you were you were leaning into this

01:05:25.543 --> 01:05:29.253
<v Chris>past week uh is an open source one and um and.

01:05:29.253 --> 01:05:30.473
<v Brent>They're quite capable these days.

01:05:30.473 --> 01:05:32.173
<v Chris>Yeah that's been really fun to explore too.

01:05:33.413 --> 01:05:37.433
<v Brent>Well turd ferguson boosted in 10 000 satoshis,

01:05:40.309 --> 01:05:46.929
<v Brent>As someone a bit more seasoned than you boys, I've been appreciating the light but practical AI talk.

01:05:47.109 --> 01:05:51.409
<v Brent>I don't know about you, but I have been noticing a slowly but growing trend

01:05:51.409 --> 01:05:56.469
<v Brent>of people reluctantly accepting and then really beginning to embrace this technology.

01:05:56.669 --> 01:06:00.829
<v Chris>This reminds me of a meme I saw on social media.

01:06:01.129 --> 01:06:06.289
<v Chris>Somebody screenshotted their blog headlines, you know, just like the RSS feed

01:06:06.289 --> 01:06:12.229
<v Chris>of their headlines. and a year ago it was why I will never use AI or Vibe code.

01:06:12.769 --> 01:06:18.309
<v Chris>And then like six months later it was some of the things I'm finding it kind of useful for.

01:06:18.709 --> 01:06:24.509
<v Chris>And then three months after that his blog post was I don't write a line of code

01:06:24.509 --> 01:06:25.669
<v Chris>anymore. This is incredible.

01:06:27.429 --> 01:06:30.589
<v Chris>And it is funny how you see people start on a journey. It's like when you find

01:06:30.589 --> 01:06:34.969
<v Chris>something that's useful for it, it begins to crack that kind of assumption that

01:06:34.969 --> 01:06:37.529
<v Chris>you've made about it I think I think there is something to that.

01:06:38.049 --> 01:06:41.709
<v Wes>It's also just wild because everything changes so fast between the capabilities.

01:06:41.709 --> 01:06:42.589
<v Chris>How you can use.

01:06:42.589 --> 01:06:45.809
<v Wes>Them and how easy or hard they are to use and all of that too which does not

01:06:45.809 --> 01:06:48.349
<v Wes>always jive well with our human level speed.

01:06:48.349 --> 01:06:53.069
<v Chris>And like many people have pointed out there's a lot of noise out there too you

01:06:53.069 --> 01:06:55.269
<v Chris>know a lot of noise it's very confusing all of that too,

01:06:57.213 --> 01:07:01.913
<v Chris>Thank you, Turd. Appreciate that. Forward Humor comes in with 4,444 stats.

01:07:03.233 --> 01:07:06.293
<v Chris>Hey, guys. I just wanted to say thank you for all the variety in the show,

01:07:06.393 --> 01:07:08.253
<v Chris>including the AI and tech news.

01:07:08.473 --> 01:07:11.673
<v Chris>I always appreciate a show that entertains me and keeps me up to date.

01:07:11.813 --> 01:07:13.733
<v Chris>Not enough time in the day to stay current on my own.

01:07:13.893 --> 01:07:16.393
<v Chris>The show continues to dive deep on interesting and helpful topics.

01:07:16.513 --> 01:07:18.653
<v Chris>Keep up the good work. Wow, Forward Humor, thank you.

01:07:19.433 --> 01:07:23.073
<v Chris>We did not pay these people. We did not pay them to say that.

01:07:23.173 --> 01:07:23.533
<v Wes>They're paying us for some reason.

01:07:23.533 --> 01:07:27.813
<v Chris>They're paying us, and we didn't know. Thank you, guys. Appreciate that.

01:07:29.353 --> 01:07:31.313
<v Wes>Tomato comes in with a row of ducks.

01:07:32.273 --> 01:07:33.493
<v Brent>I think it's tomato.

01:07:34.793 --> 01:07:36.833
<v Wes>Hey, you say potato, I'll say.

01:07:38.973 --> 01:07:44.813
<v Wes>I'm simultaneously sick to death of hearing about AI and enjoying Love's AI coverage.

01:07:45.073 --> 01:07:45.273
<v Brent>Wow.

01:07:45.433 --> 01:07:48.873
<v Wes>You are all on a very, very short list of exceptions because you strike a good

01:07:48.873 --> 01:07:52.773
<v Wes>balance, both in terms of the amount of coverage, but also being neither cheerleaders

01:07:52.773 --> 01:07:53.913
<v Wes>nor thought-free haters.

01:07:54.413 --> 01:07:57.913
<v Wes>I'm pretty much aligned with Brent, and like he clearly is, I'm enjoying hearing

01:07:57.913 --> 01:07:59.413
<v Wes>Chris and Wes's AI adventures.

01:08:00.273 --> 01:08:04.093
<v Brent>I just watch from a small distance and keep my detective shield up.

01:08:04.093 --> 01:08:05.593
<v Chris>He lets us burn the tokens on the agents.

01:08:06.853 --> 01:08:07.933
<v Brent>Then I can be more efficient.

01:08:07.973 --> 01:08:10.173
<v Wes>You're watching from your hardware hacking lab, buddy.

01:08:10.693 --> 01:08:12.473
<v Brent>Yeah, it's more of a bug lab at this point.

01:08:14.753 --> 01:08:18.093
<v Brent>SpookySatCom came in with 1, 2, 3, 4, 5 satoshis.

01:08:22.722 --> 01:08:28.262
<v Brent>For someone who isn't completely sold on the overall value of all the AI development,

01:08:28.582 --> 01:08:32.682
<v Brent>I do find value in your approach to covering the use cases for it.

01:08:32.842 --> 01:08:34.402
<v Brent>So keep up that great work.

01:08:35.162 --> 01:08:38.602
<v Chris>Wow. Thank you. All right. That's great, Spooky. Appreciate that.

01:08:38.762 --> 01:08:40.462
<v Chris>That's a good amount of signal there.

01:08:40.842 --> 01:08:43.702
<v Chris>And, of course, you're always welcome to counterbalance or add your own.

01:08:43.902 --> 01:08:48.462
<v Chris>It's going to be a topic of consideration for a while as we find that balance.

01:08:48.662 --> 01:08:51.922
<v Chris>Thank you, everybody, who streams stats as well. 15 of you collectively stacked.

01:08:53.542 --> 01:08:58.482
<v Chris>24,874 sats. When you combine that with our boosters, that brings this episode

01:08:58.482 --> 01:09:00.802
<v Chris>to a humble but very appreciative and thankful,

01:09:02.842 --> 01:09:06.922
<v Chris>124,185 sats. Now, this is a value-for-value show, which means we put it out

01:09:06.922 --> 01:09:10.942
<v Chris>there for free, and if you got value from it, you can send it back with a membership or a boost.

01:09:11.442 --> 01:09:14.582
<v Chris>Fountain FM does make it easy. They make a lot of easy ways,

01:09:14.642 --> 01:09:17.862
<v Chris>including self-hosted or fiat channels or whatever it might be to boost.

01:09:18.042 --> 01:09:21.542
<v Chris>But then there is a galaxy of options when you go to AlbiHub,

01:09:21.542 --> 01:09:25.302
<v Chris>from self-hosted to apps on your phone and whatnot to participate including

01:09:25.302 --> 01:09:26.802
<v Chris>just boosting from the podcast index.

01:09:27.322 --> 01:09:31.242
<v Chris>Go check it out. And thank you everybody who supports with a boost or a membership.

01:09:31.462 --> 01:09:33.902
<v Chris>Keeps the show going. Coming on Lucky 13.

01:09:34.402 --> 01:09:37.402
<v Chris>How about that boys? That's crazy. So crazy. Wow.

01:09:39.699 --> 01:09:42.639
<v Chris>All right, to make up for last week following the rules and only having one

01:09:42.639 --> 01:09:45.179
<v Chris>pick, we are really breaking the rules.

01:09:45.519 --> 01:09:46.719
<v Wes>It's a blowout.

01:09:46.879 --> 01:09:51.799
<v Chris>It's a pick blowout this week, and both Wes and I came across SSH Route,

01:09:52.059 --> 01:09:56.399
<v Chris>a network-aware SSH router that routes connections to different IPs or ports,

01:09:56.519 --> 01:10:01.579
<v Chris>keys, jump hosts, etc., based on your active VPN or network.

01:10:01.759 --> 01:10:06.939
<v Chris>So if you're moving between networks or VPNs, this is for you.

01:10:06.939 --> 01:10:10.539
<v Chris>It detects your active network or VPN, automatically selects the right host,

01:10:10.639 --> 01:10:12.899
<v Chris>the right port, the right identity file, the right jump host,

01:10:12.999 --> 01:10:18.979
<v Chris>et cetera, for each connection without you having to touch your .ssh slash config like an animal.

01:10:19.159 --> 01:10:22.559
<v Chris>You make a few definitions in there, and you're good to go.

01:10:23.039 --> 01:10:27.199
<v Chris>Every connection SSH route detects which network you're on, if it's your office

01:10:27.199 --> 01:10:31.999
<v Chris>LAN, a wire guard peer, a mesh network, and then it resolves the correct SSH

01:10:31.999 --> 01:10:36.619
<v Chris>parameters before handing off to the real SSH binary. Pretty cool.

01:10:36.939 --> 01:10:37.519
<v Brent>That is slick.

01:10:37.519 --> 01:10:41.339
<v Wes>I think this one confused some folks who saw it after it was getting promoted

01:10:41.339 --> 01:10:44.839
<v Wes>on Reddit and a few other places, just because it might be a tool that you hope

01:10:44.839 --> 01:10:46.439
<v Wes>you don't need, you know?

01:10:46.539 --> 01:10:50.679
<v Wes>Like in a sense of, if you have a sane universe and really well-architected

01:10:50.679 --> 01:10:55.879
<v Wes>networks and like super modern tools and really coherent thought about infrastructure,

01:10:56.019 --> 01:10:57.399
<v Wes>then maybe you don't need something like this.

01:10:57.499 --> 01:11:01.719
<v Wes>But for the rest of us who do have all of that mess, maybe it's helpful.

01:11:02.199 --> 01:11:05.919
<v Wes>And you get, like, the main part is you can keep all of this stuff declarative,

01:11:06.079 --> 01:11:09.619
<v Wes>keep it in a yaml file something tells me that would make it pretty easy to

01:11:09.619 --> 01:11:12.699
<v Wes>wrap into a nix os config if you needed to that kind of thing.

01:11:12.699 --> 01:11:17.499
<v Chris>Interesting yeah you know wherever i go i can just ssh into my machines no problem

01:11:17.499 --> 01:11:22.679
<v Chris>i don't need it but uh i figured somebody out there might now uh tell me about

01:11:22.679 --> 01:11:29.559
<v Chris>render cv i have a feeling this could be useful for people out there that hate creating resumes oh.

01:11:29.559 --> 01:11:31.799
<v Brent>That's me actually i hate creating.

01:11:31.799 --> 01:11:32.279
<v Chris>Yeah well.

01:11:32.279 --> 01:11:33.459
<v Brent>Computers and resumes really.

01:11:33.459 --> 01:11:35.559
<v Chris>Well yeah Who doesn't hate creating resumes?

01:11:36.491 --> 01:11:41.571
<v Brent>I have been actively looking for work. So if anybody has something that seems

01:11:41.571 --> 01:11:43.811
<v Brent>interesting for a Brent, I'm all ears.

01:11:44.371 --> 01:11:48.991
<v Brent>But that said, this week, I was like, I should probably update that old resume of mine.

01:11:49.251 --> 01:11:53.211
<v Brent>And I did not want to do it the same way I've done it in the past.

01:11:53.471 --> 01:11:57.111
<v Brent>I wanted to do it programmatically because, come on, I wanted to put that thing

01:11:57.111 --> 01:11:58.731
<v Brent>in Git and keep track of it.

01:11:58.811 --> 01:12:02.331
<v Brent>Different branches for a different job. I'm like, come on.

01:12:03.051 --> 01:12:07.051
<v Brent>I'm a better me than I was in the past. And I found there are many,

01:12:07.131 --> 01:12:10.291
<v Brent>many, many, many options for this, which is a good thing.

01:12:10.351 --> 01:12:15.211
<v Brent>But the one I ultimately settled on way too late at night was RenderCV.

01:12:16.091 --> 01:12:20.231
<v Brent>This is basically a resume builder. It says for academics and engineers.

01:12:20.431 --> 01:12:23.831
<v Brent>I don't know if I fit into either of those. But you can basically version control

01:12:23.831 --> 01:12:26.491
<v Brent>your CV, which is quite obvious and super useful.

01:12:26.771 --> 01:12:30.031
<v Brent>It is a JSON. I think it might be JSON.

01:12:30.531 --> 01:12:33.631
<v Brent>So it's relatively easy to edit.

01:12:33.631 --> 01:12:39.671
<v Brent>But the thing I loved the most about it is that it's really quite handy to use

01:12:39.671 --> 01:12:45.891
<v Brent>with your favorite AI companion because it's just a heck of a lot of text similar to an XOS.

01:12:46.471 --> 01:12:48.931
<v Brent>You just treat your resume like your infrastructure.

01:12:49.591 --> 01:12:53.731
<v Chris>Right. The source file, it's a YAML file. And so if you've got something that

01:12:53.731 --> 01:12:56.271
<v Chris>can work with a YAML file, that's all you need.

01:12:56.471 --> 01:12:59.251
<v Brent>Is it YAML? See, I didn't even need to care. It's just text.

01:13:00.111 --> 01:13:03.431
<v Wes>You're technically still right because YAML is a superset of JSON, it turns out.

01:13:03.631 --> 01:13:04.391
<v Chris>Wes. Damn it.

01:13:04.691 --> 01:13:07.671
<v Brent>Thanks Wes. At least someone loves me. That is the worst.

01:13:07.671 --> 01:13:08.771
<v Chris>Well, actually of the episode.

01:13:08.951 --> 01:13:12.731
<v Brent>What I really loved about this approach is,

01:13:12.871 --> 01:13:17.131
<v Brent>of course I mentioned I could track different resumes and different branches

01:13:17.131 --> 01:13:19.571
<v Brent>and keep track of them over time,

01:13:19.691 --> 01:13:25.631
<v Brent>which is what quite obviously useful, but also I can just have a variety of

01:13:25.631 --> 01:13:30.251
<v Brent>different versions that I'm working on concurrently and interface with it the

01:13:30.251 --> 01:13:33.771
<v Brent>way I interfaced with it was basically using my favorite AI tool.

01:13:34.091 --> 01:13:35.511
<v Brent>And that meant that I could,

01:13:37.424 --> 01:13:42.384
<v Brent>I have it check my silly ways of trying to promote myself,

01:13:42.624 --> 01:13:46.764
<v Brent>which I am very bad at and just be like, hey, give me some kind of objective

01:13:46.764 --> 01:13:52.584
<v Brent>way of talking about myself because I feel this entire process is very uncomfortable for me.

01:13:52.764 --> 01:13:56.564
<v Brent>And so it turned it into more of like an infrastructure project than it did

01:13:56.564 --> 01:14:01.864
<v Brent>me just talking about myself, which was a good way to break into like.

01:14:01.904 --> 01:14:05.984
<v Chris>Okay, let's get this done. Like I, like you, cannot conceive of a way to like

01:14:05.984 --> 01:14:09.204
<v Chris>talk about myself in the structure of a Word document in paragraphs.

01:14:09.544 --> 01:14:09.724
<v Brent>Right.

01:14:09.964 --> 01:14:14.524
<v Chris>But for some reason, a structured YAML document that's just like,

01:14:14.704 --> 01:14:16.604
<v Chris>that does make sense because it's just attributes.

01:14:16.904 --> 01:14:21.204
<v Chris>That to me, I could work with, ironically. And it looks like what it produces

01:14:21.204 --> 01:14:23.264
<v Chris>is a pretty good, clean looking resume.

01:14:23.424 --> 01:14:27.604
<v Brent>Oh, yeah. I was really impressed. I was super impressed. So I would highly recommend it.

01:14:27.704 --> 01:14:30.544
<v Brent>You don't necessarily have to use this particular tool. There's a bunch of them

01:14:30.544 --> 01:14:31.624
<v Brent>out there that do different things.

01:14:32.704 --> 01:14:41.564
<v Brent>But if you haven't leaned into this way of taking care of your resume i highly highly recommend cv.

01:14:41.564 --> 01:14:45.424
<v Chris>And it seems like a great way like you say where you could iterate on it over

01:14:45.424 --> 01:14:49.084
<v Chris>time and you could keep those iterations and get if you'd like.

01:14:49.084 --> 01:14:50.924
<v Wes>If you don't you're doing it wrong.

01:14:50.924 --> 01:14:55.324
<v Brent>It really also comes down to me having just been lazy and i said go find everything

01:14:55.324 --> 01:14:58.544
<v Brent>you can about me on the internet and like compile a cv for me because there's

01:14:58.544 --> 01:15:01.744
<v Brent>information out there right And it did really well.

01:15:01.964 --> 01:15:06.444
<v Brent>I was super impressed. I said, like, make sure you grab some, you know, GitHub.

01:15:08.803 --> 01:15:13.523
<v Brent>Stats because this particular application i was looking at was pretty like git

01:15:13.523 --> 01:15:18.423
<v Brent>heavy and i was like go go pull some insights from github go like you know so

01:15:18.423 --> 01:15:23.603
<v Brent>very impressed i'm sure you can ask your favorite ai buddy to do the same thing for you.

01:15:23.603 --> 01:15:26.283
<v Wes>I have nerdy thoughts on this yeah just because i took a

01:15:26.283 --> 01:15:29.003
<v Wes>look because actually i've been working on my own sort of version of

01:15:29.003 --> 01:15:32.163
<v Wes>this before even seeing the render cv existed so i

01:15:32.163 --> 01:15:35.123
<v Wes>really approve of your find here because i i took a look

01:15:35.123 --> 01:15:38.003
<v Wes>into the code and the spirit is great because

01:15:38.003 --> 01:15:40.703
<v Wes>it's purely this like data oriented pipeline as you

01:15:40.703 --> 01:15:45.623
<v Wes>noticed right you put in yaml and then you get out pdf or it can do markdown

01:15:45.623 --> 01:15:50.983
<v Wes>and it can do html and under the hood it uses types and i think it can do latex

01:15:50.983 --> 01:15:56.543
<v Wes>as well but types is a modern rust based really nice type setting and layout

01:15:56.543 --> 01:15:59.083
<v Wes>engine so that's why the pdfs look so nice as they do.

01:15:59.773 --> 01:16:03.533
<v Wes>Plus, it uses Pydantic, which is a great Python. There's a lot of Python under

01:16:03.533 --> 01:16:07.213
<v Wes>the hood. And Pydantic is a great validation and schema library for Python.

01:16:07.453 --> 01:16:13.413
<v Wes>And as a result, they export a JSON schema, which then can be applied to the YAML config.

01:16:13.653 --> 01:16:17.913
<v Wes>And that tells editors or AI helpers what the schema and the keys are.

01:16:17.993 --> 01:16:21.693
<v Wes>So if you open it in VS Code, you can get sort of an autocomplete or a helper

01:16:21.693 --> 01:16:24.913
<v Wes>to show you what's allowed in this field and what are the valid keys and stuff.

01:16:25.473 --> 01:16:30.973
<v Wes>And then on the backside, and this is something I'm looking at copying or implementing

01:16:30.973 --> 01:16:34.553
<v Wes>my own version of or running at render CV stuff on the side or whatever,

01:16:34.793 --> 01:16:40.313
<v Wes>they have a whole set of tools used to parse the resulting PDF and essentially

01:16:40.313 --> 01:16:44.993
<v Wes>a test to make sure that it can parse out all the details it expects and sort

01:16:44.993 --> 01:16:47.113
<v Wes>of get it back to a YAML-y state,

01:16:47.273 --> 01:16:51.353
<v Wes>which helps if you're going to submit to these automatic systems that look at

01:16:51.353 --> 01:16:54.353
<v Wes>your PDF and do that in their own sort of HR backend system.

01:16:54.353 --> 01:16:55.493
<v Wes>You want to make sure that your

01:16:55.493 --> 01:17:00.093
<v Wes>PDF isn't going to be opaque to those and render CV has that all baked in.

01:17:00.333 --> 01:17:05.893
<v Wes>So super professional grade. You don't have to like pick the nerdy fun data

01:17:05.893 --> 01:17:09.433
<v Wes>and get route and then feel like you're losing out to the people who have the

01:17:09.433 --> 01:17:13.713
<v Wes>word resumes because that's what everyone else set up to support. So I really like that.

01:17:13.713 --> 01:17:18.673
<v Brent>And I enjoyed how I could treat it almost like building my next config where

01:17:18.673 --> 01:17:23.093
<v Brent>everything gets, you know, during build time, it tells me if I made any mistakes,

01:17:23.253 --> 01:17:27.253
<v Brent>which I made plenty of, and I got all that fixed up.

01:17:27.413 --> 01:17:30.473
<v Brent>So instead of, you know, exporting a PDF, checking it and be like,

01:17:30.633 --> 01:17:33.213
<v Brent>oh, that didn't work or didn't get formatted the way I wanted,

01:17:33.333 --> 01:17:37.613
<v Brent>all of that got checked, let's call it at build time when it was doing the exports

01:17:37.613 --> 01:17:39.393
<v Brent>instead of wasting all my time.

01:17:39.873 --> 01:17:43.133
<v Wes>You know what you could do? Stretch goal. See if your helper can help.

01:17:43.133 --> 01:17:45.833
<v Wes>You could turn it into a totally Nixified build.

01:17:46.013 --> 01:17:49.093
<v Wes>So you did Nix build and you got out a PDF on the other side.

01:17:49.273 --> 01:17:53.153
<v Wes>And you could have the resume stuff that's in YAML be in Nix if you wanted.

01:17:53.433 --> 01:17:53.813
<v Chris>Incredible.

01:17:54.273 --> 01:17:55.073
<v Brent>Stay tuned next week.

01:17:55.413 --> 01:18:02.373
<v Chris>All right. So the last one, it has been a very, very long time since we have done a hardware pick.

01:18:04.581 --> 01:18:07.981
<v Chris>But you often hear us referring to these ESP devices. We're loving these things.

01:18:08.061 --> 01:18:09.581
<v Chris>We talk about them more and more on the show.

01:18:09.741 --> 01:18:13.101
<v Chris>And it's a great way to take a lot of your Linux hackery knowledge and apply

01:18:13.101 --> 01:18:13.961
<v Chris>it to physical hardware.

01:18:14.601 --> 01:18:17.881
<v Chris>But it can be intimidating to start physical hardware projects,

01:18:17.941 --> 01:18:20.681
<v Chris>especially when you don't know anything about where to start.

01:18:21.261 --> 01:18:25.801
<v Chris>This past week, the Open Home Foundation had their State of the Open Home presentation.

01:18:26.321 --> 01:18:30.281
<v Chris>And along with that, they announced the ESP Home Starter Kit.

01:18:30.281 --> 01:18:34.361
<v Chris>It's an official ESPM Home Starter Kit, and they call it the easiest way to

01:18:34.361 --> 01:18:36.121
<v Chris>start building your own smart devices.

01:18:36.341 --> 01:18:39.381
<v Chris>No soldering, no breadboards, no coding experience needed.

01:18:39.621 --> 01:18:43.561
<v Chris>Plug-in modules. They have a visual YAML editor, and you're up and running.

01:18:43.701 --> 01:18:48.581
<v Chris>It integrates with Home Assistant or standalone right away. $39.99.

01:18:49.321 --> 01:18:53.721
<v Chris>The majority of the profit supports the Open Home Foundation and funds future

01:18:53.721 --> 01:18:58.601
<v Chris>ESP Home and Home Assistant and other Open Home Foundation projects.

01:18:58.601 --> 01:18:59.661
<v Wes>This looks fun.

01:18:59.661 --> 01:19:00.521
<v Brent>Yeah, it does.

01:19:00.661 --> 01:19:06.381
<v Chris>It's a really neat bit of kit. It's, it, it also just has a really cool visual appeal to it.

01:19:06.621 --> 01:19:12.141
<v Chris>And it includes in the box, you get enough to actually build something useful with it.

01:19:12.441 --> 01:19:15.661
<v Chris>You get a motion sensor, you get a temperature and humidity sensor.

01:19:15.661 --> 01:19:22.321
<v Chris>You get a 10 X RGB LED board to play around with, with a buzzer module.

01:19:22.641 --> 01:19:23.161
<v Wes>Huh? What's that?

01:19:23.541 --> 01:19:24.361
<v Chris>And a physical button.

01:19:25.685 --> 01:19:29.005
<v Chris>So, I mean, obviously you could use this to control lights, monitor bedroom

01:19:29.005 --> 01:19:32.265
<v Chris>temperature and humidity. You could trigger automations with the physical button module.

01:19:32.485 --> 01:19:35.625
<v Chris>You get audible notifications with the RGB.

01:19:36.165 --> 01:19:42.505
<v Chris>And it's really easy to get started. And everything just plugs in together. Just all connects.

01:19:43.585 --> 01:19:47.165
<v Chris>And it comes in cool little cases and whatnot, too. And it's $40.

01:19:47.985 --> 01:19:53.565
<v Chris>It is expected to ship mid-May. I've put my hat in because the pre-sales just

01:19:53.565 --> 01:19:55.465
<v Chris>went immediately since it was on the live stream.

01:19:55.685 --> 01:19:59.265
<v Wes>So did you get a sense, like, is this going to be a one-off or hopefully something

01:19:59.265 --> 01:20:03.265
<v Wes>that turns into like an ecosystem that keeps getting developed in future models and versions?

01:20:03.565 --> 01:20:08.065
<v Chris>I would bet if it's successful that the latter. So the way that I've noticed,

01:20:08.185 --> 01:20:10.985
<v Chris>they kind of dip their toes in with these kinds of things and they sell it through

01:20:10.985 --> 01:20:13.785
<v Chris>a third party and they kind of see how it goes.

01:20:13.805 --> 01:20:17.825
<v Chris>And if there's a strong response, I would not be surprised if the foundation

01:20:17.825 --> 01:20:19.685
<v Chris>started doing more starter kits like this.

01:20:20.245 --> 01:20:23.585
<v Chris>Home assistant has gotten to the point that if you if you

01:20:23.585 --> 01:20:26.685
<v Chris>utilize all of their features it's just as easy to get

01:20:26.685 --> 01:20:29.965
<v Chris>something working with home assistant as it would be with home kit or any

01:20:29.965 --> 01:20:33.125
<v Chris>other i mean even to the point of on your phone it'll slide

01:20:33.125 --> 01:20:35.825
<v Chris>up and say a new device is detected would you like to add it to home assistant

01:20:35.825 --> 01:20:38.685
<v Chris>you just hit a button and it just adds it i mean it's gotten really good so

01:20:38.685 --> 01:20:42.585
<v Chris>easy and this this is going to work like that and i just i think it's going

01:20:42.585 --> 01:20:47.125
<v Chris>to be really exciting because it's also a really you know two three hour saturday

01:20:47.125 --> 01:20:50.845
<v Chris>project could be a really fun thing and a great learning experience too.

01:20:50.965 --> 01:20:55.525
<v Chris>So it is called the ESP Home Starter Kit and it's currently being sold by Apollo

01:20:55.525 --> 01:20:59.865
<v Chris>Automation and I'll put a link to it in the show notes, of course,

01:21:00.105 --> 01:21:04.045
<v Chris>which you can find those show notes at linuxunplugged.com slash 666.

01:21:05.286 --> 01:21:11.386
<v Chris>No, we definitely want your input on how to shape and do this BSD challenge

01:21:11.386 --> 01:21:14.446
<v Chris>because our hope would be that you participate along with us.

01:21:14.806 --> 01:21:21.086
<v Chris>And we want to kick it off in episode 665 and conclude in episode 666.

01:21:21.846 --> 01:21:25.126
<v Chris>So we've got a couple of weeks to set the ground rules.

01:21:25.206 --> 01:21:29.026
<v Chris>So please go to the contact page or boost in your thoughts on a BSD challenge

01:21:29.026 --> 01:21:32.326
<v Chris>and what you would like to accomplish, what you'd like to see us accomplish.

01:21:32.326 --> 01:21:38.166
<v Chris>Any thoughts on the scoring a level four challenge anything like that please

01:21:38.166 --> 01:21:41.766
<v Chris>help us out we'd love to see that and don't forget linux fest northwest also

01:21:41.766 --> 01:21:45.466
<v Chris>just around the corner 13 days scary.

01:21:45.466 --> 01:21:48.726
<v Wes>Yeah how's the audio stack on freebsd because uh you know yeah.

01:21:48.726 --> 01:21:50.426
<v Chris>We're gonna end up running oh my god.

01:21:51.206 --> 01:21:52.666
<v Brent>That's whatever you're done.

01:21:52.666 --> 01:21:58.086
<v Chris>No no we gotta do the math on that we better do the math on that I hope we dodged that one.

01:21:59.886 --> 01:22:00.666
<v Chris>We're doing it live.

01:22:00.866 --> 01:22:01.786
<v Brent>People. We're doing it live.

01:22:02.886 --> 01:22:05.846
<v Chris>Speaking of live, we'd love it if you joined us live. We do it on a Sunday,

01:22:06.186 --> 01:22:09.706
<v Chris>a Tuesday on a Sunday at 10 a.m. Pacific, 1 p.m. Eastern.

01:22:13.434 --> 01:22:18.034
<v Chris>Yeah, that's over at jblive.tv, or if you're on the go, just tune in jblive.fm

01:22:18.034 --> 01:22:19.714
<v Chris>in your browser or whatever you want.

01:22:20.134 --> 01:22:22.354
<v Wes>VLC on Android? Great for that.

01:22:22.514 --> 01:22:27.554
<v Chris>Great for that. Wes Pano, there are extra levels of detail around the show.

01:22:27.574 --> 01:22:29.094
<v Chris>It's not just an audio podcast.

01:22:29.154 --> 01:22:31.374
<v Chris>You could say there's different types of metadata, even.

01:22:32.014 --> 01:22:38.674
<v Wes>Yeah, that's right. We have lovingly crafted Editor Drew Blast titles in JSON

01:22:38.674 --> 01:22:42.914
<v Wes>format, hosted on the cloud for easy access, dynamic updates.

01:22:43.314 --> 01:22:47.134
<v Wes>Jump right to the content you want, skip the AI section, go right to the stupid

01:22:47.134 --> 01:22:49.754
<v Wes>AI section, whatever you like. We don't care. We don't judge.

01:22:49.754 --> 01:22:50.274
<v Brent>We don't care.

01:22:50.654 --> 01:22:52.674
<v Wes>Just download the MP3 file and we're all good.

01:22:52.974 --> 01:22:53.694
<v Chris>No, I'm kidding.

01:22:54.454 --> 01:22:59.334
<v Wes>But we also then take the wonderful stems that Editor Drew produces and we run

01:22:59.334 --> 01:23:04.714
<v Wes>that through some wizardry to produce diarized transcripts that, you know,

01:23:04.834 --> 01:23:08.834
<v Wes>aren't maybe 100% perfect but are pretty darn good and at least help you furthermore

01:23:08.834 --> 01:23:11.414
<v Wes>find out exactly what we said or jump to the content you want.

01:23:11.514 --> 01:23:15.554
<v Chris>I hope the best transcripts in the business because we feed the thing individualized

01:23:15.554 --> 01:23:17.874
<v Chris>stems of each of our tracks so there's no crosstalk.

01:23:18.154 --> 01:23:22.514
<v Chris>It's as clean and crisp as it can get because we care about that kind of thing.

01:23:22.514 --> 01:23:26.514
<v Chris>Thank you so much for listening to this week's episode of Your Unplugged Program.

01:23:26.774 --> 01:23:29.734
<v Chris>You're welcome to join our virtual lug in Mumble next week.

01:23:29.834 --> 01:23:33.454
<v Chris>And, of course, as we do the BSD Challenge, links to everything we talked about

01:23:33.454 --> 01:23:37.514
<v Chris>today, our contact page, our Mumble info, our matrix info, our membership, all of it.

01:23:38.374 --> 01:23:39.354
<v Chris>LinuxUnplugged.com and a bunch

01:23:39.354 --> 01:23:42.994
<v Chris>of great shows over at jupiterbroadcasting.com. Okay, that's it for us.

01:23:43.074 --> 01:23:46.314
<v Chris>Thank you so much for joining us. And we'll see you right back here next Linux

01:23:46.314 --> 01:23:49.754
<v Chris>Tuesday. And you know when that actually is. That's on a Sunday.

