Skip to main content
LawHub
Search

The GitHub Diet

Apr 12, 2026
Listen to this episode

Is it time to replace GitHub in our workflow? We git into it. Plus, our favorite features in the new Linux 7.0 release.

Sponsored By:

Support LINUX Unplugged

Links:

  • 💥 Gets Sats Quick and Easy with Strike
  • 📻 LINUX Unplugged on Fountain.FM
  • LinuxFest Northwest 2026 — April 24-26, 2026 - Bellingham, Washington
  • LFNW2026 Schedule
  • Linux 7.0: Btrfs — A translation layer of logical block addresses that allows changes without moving or rewriting blocks for relocation
  • Linux 7.0: XFS — Autonomous self-healing; delivers live filesystem health events to userspace for automatic repairs
  • Linux 7.0: EXT4 — Improves write performance for concurrent direct I/O writes
  • Linux 7.0: IO-uring — Adds support for BPF filtering to IO_uring for high performance async I/O
  • Linux 7.0: Scheduler — Scheduler updates land with time slice extension, performance and scalability work for high core count systems
  • Linux 7.0: Rust — Formally concluding the 'Rust experiment'; Rust for the Linux kernel is here to stay
  • Linux 7.1: i486 — Begins phasing out Intel 486 CPU support; no known Linux distributions still ship with i486 support
  • Give Up GitHub — We realize this is not an easy task; GitHub is ubiquitous. Through their effective marketing, GitHub has convinced FOSS developers that GitHub is the best (and even the only) place for FOSS development.
  • opengist — Self-hosted pastebin powered by Git, open-source alternative to Github Gist.
  • Forgejo on Codeberg — Beyond coding. We forge.
  • Forgejo — Self-hosted alternative to GitHub; liberate your software from proprietary shackles with a familiar environment
  • NixOS Wiki: Forgejo — Lightweight software forge; completely free software and a fork of Gitea
  • Forgejo Actions — Reusable pieces of code for CI workflows; compatible with GitHub Actions
  • NixOS Forgejo Actions Runner — NixOS configuration for turnkey deployment of Forgejo Actions runners
  • Forgejo Federation (PR #10453) — Work-in-progress for federated repositories; enabling decentralized software development
  • Forgejo Snippets (Issue #1069) — Create a shareable piece of text, be it code or plain text, publicly or privately
  • Git Novice Guide — Free interactive tutorial; learn version control with Git from scratch
  • Pick: sshroute — Network-aware SSH router - routes connections to different IPs/ports/keys/jump hosts based on active VPN or network
  • Pick: rendercv — Resume builder for academics and engineers
  • Pick: ESPHome Starter Kit — DIY sensor kit for Home Assistant with ESPHome; build your own smart home devices

Transcript

WEBVTT 00:00:11.333 --> 00:00:16.193 Hello, friends, and welcome back to your weekly Linux talk show. My name is Chris. 00:00:16.513 --> 00:00:17.533 My name is Wes. 00:00:17.753 --> 00:00:18.473 And my name is Brent. 00:00:19.033 --> 00:00:24.293 Hello, gentlemen. Coming up on this episode, it's time for a GitHub diet. 00:00:24.513 --> 00:00:28.253 We'll get into the tools helping us cut back. But first, our favorite features 00:00:28.253 --> 00:00:31.193 in Linux 7.0, and then we'll round the show out with some great boosts, 00:00:31.473 --> 00:00:33.193 some picks, and a lot more. 00:00:33.313 --> 00:00:37.213 So before we get into all of that, let's say time-appropriate greetings to our 00:00:37.213 --> 00:00:39.133 virtual lug. Hello, mumble room. 00:00:39.773 --> 00:00:42.553 Hello. Hey, Chris. Hello, Brent. 00:00:42.833 --> 00:00:45.533 Hey, guys. Hello, all of you up there and quiet listening, too. 00:00:46.353 --> 00:00:47.273 What a crew we got. 00:00:47.473 --> 00:00:50.633 Thanks for being here. Of course, you can join our Mumble Room every Sunday. 00:00:51.453 --> 00:00:54.033 Details are on our website, and we'd love it if you join us. 00:00:54.133 --> 00:00:56.393 It's pretty great. And look at all these years, Mumble's still here. 00:00:57.033 --> 00:01:00.833 Show going strong for like 12-plus years, almost 13 years. Mumble Room's still 00:01:00.833 --> 00:01:02.233 here with us the whole way. 00:01:03.133 --> 00:01:06.533 Speaking of being with us, go check out Define.net slash Unplugged. 00:01:06.653 --> 00:01:10.973 Go meet Manage Nebula from Define Networking. It's a decentralized VPN built 00:01:10.973 --> 00:01:15.513 on the open-source Nebula platform, which we love. 00:01:16.033 --> 00:01:19.433 So it's more resilient than your average VPN out there. 00:01:19.553 --> 00:01:23.273 You get more control than anybody else. And it's a network design that doesn't 00:01:23.273 --> 00:01:24.693 depend on a single choke point. 00:01:25.433 --> 00:01:28.313 Nebula was originally engineered to secure Slack's global infrastructure. 00:01:28.313 --> 00:01:31.213 And now you can put that same architecture to work for yourself, 00:01:31.353 --> 00:01:33.393 for your enterprise or your home lab. 00:01:33.533 --> 00:01:35.773 Try out Manage Nebula for free on 100 hosts. 00:01:35.953 --> 00:01:39.713 No credit card required. You go to Define.net slash unplugged. 00:01:39.833 --> 00:01:44.533 Nothing else offers Nebula's level of resilience, speed, and scalability. 00:01:44.753 --> 00:01:47.913 Get started with 100 hosts, absolutely free, no credit card required. 00:01:48.113 --> 00:01:52.073 Visit Define.net slash unplugged. Go redefine your VPN experience. 00:01:52.253 --> 00:01:57.213 IOS and Android apps recently updated. Thank you to Define.net slash unplugged. 00:01:57.273 --> 00:01:58.153 Thank you to everybody who supports 00:01:58.153 --> 00:02:02.573 the show by going to Define.net slash unplugged. We do appreciate it. 00:02:05.133 --> 00:02:08.813 LinuxFest Northwest 2026, just a few days away. 00:02:09.173 --> 00:02:14.753 13 days away. April 24th to the 26th at the Bellingham Technical College. 00:02:15.653 --> 00:02:20.373 Oh, boy. And the calendar is live. The unplugged program is currently scheduled 00:02:20.373 --> 00:02:24.133 to be in HC108, which I think is that big classroom we did that one year. 00:02:24.673 --> 00:02:25.033 Hmm. 00:02:25.413 --> 00:02:29.233 I don't know, boys. We got to give that some thought. 00:02:29.653 --> 00:02:31.053 Yeah, you seem really unsure over there. 00:02:31.333 --> 00:02:36.033 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 I thought all the construction the last couple of years in those sections we 00:02:38.913 --> 00:02:44.153 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 Right, of course. That's what they'd spend their money on. 00:02:46.073 --> 00:02:48.813 The first year we did a classroom was better than the second. 00:02:49.153 --> 00:02:50.173 Yeah, I agree. 00:02:50.593 --> 00:02:53.653 So there is some variable, but you're right. But one way or another, 00:02:53.653 --> 00:02:54.693 we had to make a show, right? 00:02:54.693 --> 00:02:56.853 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 You can get the details at linuxfestnorthwest.org. 00:03:01.033 --> 00:03:03.873 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 I got baby chicks at home now. 00:03:06.373 --> 00:03:08.733 So maybe have you considered bringing the entire farm? 00:03:08.953 --> 00:03:12.313 I think we bring the van. The van goes to Joops. Yeah. 00:03:12.413 --> 00:03:17.193 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 Joops junior. 00:03:18.353 --> 00:03:22.353 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 Number one, your question. Uh, I may become obvious why, but I'd like to know 00:03:27.293 --> 00:03:31.913 if your password manager disappeared tomorrow, which one would you switch to? 00:03:32.113 --> 00:03:35.533 Boost in and tell us if your password manager disappeared tomorrow which would 00:03:35.533 --> 00:03:37.973 you switch to? Alright? That's number one. Number two. 00:03:39.993 --> 00:03:47.833 The Elephant in the Room episode 666 is coming up and we have a new challenge. 00:03:48.133 --> 00:03:55.513 To celebrate episode 666 of the Unplugged program we are announcing the BSD challenge! 00:03:59.804 --> 00:04:03.284 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 going to do because obviously this is episode 662, so we have a few weeks. 00:04:07.124 --> 00:04:12.804 It's not a Linux versus BSD thing. It's can Linux users function on BSD. 00:04:13.804 --> 00:04:16.064 One fresh B install, four levels 00:04:16.064 --> 00:04:20.524 to climb, and hopefully your Linux muscle memory only gets you so far. 00:04:20.724 --> 00:04:23.284 This is what I have so far, and this is all subject to change, 00:04:23.304 --> 00:04:24.624 and I'd love the audience's input. 00:04:24.924 --> 00:04:28.424 I think we should have four levels to achieve. Level one is can you just get 00:04:28.424 --> 00:04:31.124 a usable system. Level two is can you get a daily driver? 00:04:31.504 --> 00:04:36.564 Level three is a power user. So can you do things like update packages, 00:04:36.824 --> 00:04:39.564 update the OS, set up SSH, restart and stop services? 00:04:39.784 --> 00:04:42.724 And then level four, and I think this is maybe where we have some debate. 00:04:43.404 --> 00:04:47.224 I was going to say get jails or containers working, but I think Wes and Brent 00:04:47.224 --> 00:04:49.864 think level four should be something more challenging. 00:04:50.484 --> 00:04:54.364 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 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 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 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 quite exactly the same but like if should level four for a bsd user on linux 00:05:12.464 --> 00:05:16.224 be running a docker container yeah that's. 00:05:16.224 --> 00:05:17.004 A good way to put it. 00:05:17.004 --> 00:05:22.564 Now what level four should be maybe it's like linux compatibility or getting 00:05:22.564 --> 00:05:25.744 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 a proper impressive stretch to it. 00:05:28.184 --> 00:05:31.124 Hmm you have any suggestions for a level four stretch brent. 00:05:31.977 --> 00:05:38.337 Uh, I have two. One would be, how long can you daily drive this thing? 00:05:38.437 --> 00:05:41.197 You know, you got it running, you got some of your applications on there. 00:05:41.357 --> 00:05:42.317 Can you make it a full week? 00:05:42.617 --> 00:05:46.237 Yeah. Are you using this as a desktop for a full week? Or is this like, 00:05:46.437 --> 00:05:49.537 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 I have another twist though that might be interesting if you're, 00:05:52.917 --> 00:05:55.377 if you're up for it. You want more suggestions? Yeah. Yeah. 00:05:56.257 --> 00:06:00.237 What I want to know, like, what is the craziest place some of our audience members 00:06:00.237 --> 00:06:03.557 can run this BSD that they want to run for a week? 00:06:03.697 --> 00:06:07.797 Do you have some crazy device or like, are you running a, I don't know, 00:06:08.017 --> 00:06:11.917 phone network on your farm and there's some BSD components to it? 00:06:11.997 --> 00:06:16.597 Or so not something you're currently running, but like during the challenge, 00:06:16.597 --> 00:06:21.957 what is the craziest thing you're willing to do for this BSD challenge? Bonus points. 00:06:22.757 --> 00:06:24.397 Okay. Okay. 00:06:25.077 --> 00:06:29.277 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 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 Isn't there a. 00:06:33.317 --> 00:06:38.757 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 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 if i have any cool crazy hardware to put it on right now. 00:06:43.457 --> 00:06:44.397 Way better work at it. 00:06:44.397 --> 00:06:50.837 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 Fancy with like zfs like boot set boot environment set up so you. 00:06:56.377 --> 00:06:57.037 Get like you. 00:06:57.037 --> 00:06:59.597 Know rollbacks and stuff that might be too easy too though. 00:06:59.597 --> 00:07:03.877 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 suggestions for the bsd challenge we what we our idea would be is to kick it 00:07:08.137 --> 00:07:13.037 off in 665 officially or 664 depending what you guys tell us, 00:07:13.577 --> 00:07:17.117 and then have the conclusion in 666, right? 00:07:17.337 --> 00:07:21.217 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 Well, as you're listening to this here podcast, Linux 7.0 should be landing. 00:07:30.030 --> 00:07:33.110 It is expected to release later today as we're recording. 00:07:33.410 --> 00:07:36.890 And even though Linus always says the major version numbers don't really mean 00:07:36.890 --> 00:07:41.550 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 that ends up in these .0 releases every time. 00:07:45.270 --> 00:07:46.310 Funny how that works, huh? 00:07:46.370 --> 00:07:52.010 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 Some of them are going to be file system related. but not all of them. 00:07:55.910 --> 00:07:59.290 Wes, I know you've been talking about for a little bit, the scheduler changes, 00:07:59.290 --> 00:08:01.410 some nice performance improvements there. 00:08:02.150 --> 00:08:03.530 Yeah. Which ones are you thinking of? 00:08:03.730 --> 00:08:05.510 Well, I don't know. You're the one that's been talking about them, 00:08:05.530 --> 00:08:08.550 but I think the one that I recall you mentioned is the time slice extension, 00:08:08.690 --> 00:08:12.090 although I don't really understand much about it, but I guess that sounds interesting. 00:08:12.510 --> 00:08:15.950 Notably less micro stutter and better desktop responsiveness with that one they 00:08:15.950 --> 00:08:19.410 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 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 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 because there's always excitement around that. 00:08:28.790 --> 00:08:31.650 But yeah, one in particular is the Time Slice extension. And it, 00:08:32.501 --> 00:08:35.761 It's notable because, A, scheduling is hard. 00:08:35.881 --> 00:08:38.601 You know what I mean? Like, it's probably one of the hardest things that the 00:08:38.601 --> 00:08:43.181 kernel actually has to do in order to do it right, especially because just about 00:08:43.181 --> 00:08:44.341 everyone uses the Linux kernel. 00:08:44.341 --> 00:08:49.061 So, how do you get the right scheduling between a monster AI inference server 00:08:49.061 --> 00:08:52.441 or a Postgres database server and, you know, MyPixel? 00:08:52.661 --> 00:08:57.961 But this one has also been in the Time Slice extension, has been in development 00:08:57.961 --> 00:09:01.341 for, like, 10 years at this point, And it finally got merged, 00:09:01.761 --> 00:09:05.201 which is exciting just for the story of like open source kernel development. 00:09:05.201 --> 00:09:07.961 Something taking that long and finally make it in is always a big deal. 00:09:08.341 --> 00:09:12.341 Yeah, exactly. But it should help. Like there are times where you're in what 00:09:12.341 --> 00:09:15.821 are called critical sections as a process where you really don't want to be interrupted. 00:09:16.001 --> 00:09:17.861 You know, maybe you're doing something with the disk or, you know, 00:09:17.961 --> 00:09:19.981 some sort of critical part of your application. 00:09:20.601 --> 00:09:24.921 And this is trying to help so that like user space processes can sort of request 00:09:24.921 --> 00:09:29.101 a time slice where they won't get preempted without some of the full performance 00:09:29.101 --> 00:09:31.781 overheads of like actually fully blocking preemption, 00:09:32.021 --> 00:09:34.541 where the kernel might still need to do something ultimately to maintain, 00:09:34.541 --> 00:09:39.001 you know, acceptable latency elsewhere, but to try to provide more information 00:09:39.001 --> 00:09:43.501 and more mechanisms to allow user space processes to better actually share the 00:09:43.501 --> 00:09:45.641 available resources and meet their own deadlines. 00:09:45.861 --> 00:09:48.561 And so that's where the name time slicing comes from, is you can kind of, 00:09:48.761 --> 00:09:52.381 as I guess as a resource heavy application, you could say, hey, 00:09:52.501 --> 00:09:55.841 I'm going to need some time coming up soon, make it available for me. 00:09:56.321 --> 00:09:57.341 Yeah, exactly. Exactly. 00:09:57.758 --> 00:10:01.478 I mean, it gets more detailed than that, right? Because there's stuff called 00:10:01.478 --> 00:10:04.678 restartable sequences and all 00:10:04.678 --> 00:10:07.818 of the heuristics that kind of go into like fully optimizing this stuff. 00:10:08.158 --> 00:10:11.558 There's also been more work, which got some drama over, 00:10:11.838 --> 00:10:14.358 which we talked about, I think in a previous members episode, 00:10:14.518 --> 00:10:20.158 maybe around Postgres having benchmarks that were like 50% slower on some instances 00:10:20.158 --> 00:10:24.098 that also had to do with some changes happening to preemption in the kernel. 00:10:24.098 --> 00:10:28.518 And that's where right the whole thing that we have a actual preemptible thing 00:10:28.518 --> 00:10:32.798 where tasks do get interrupted and we aren't just running one application anymore 00:10:32.798 --> 00:10:35.558 it's still having consequences 30 years later. 00:10:35.558 --> 00:10:38.518 Well here's the thing i've learned watching these kernel releases 00:10:38.518 --> 00:10:41.438 and it's very much so true with the 7.0 release 00:10:41.438 --> 00:10:44.678 you could kind of plan your next laptop or 00:10:44.678 --> 00:10:47.838 workstation upgrade around these so 00:10:47.838 --> 00:10:51.238 what's in 7.0 are a bunch 00:10:51.238 --> 00:10:54.698 of new drivers and what what 00:10:54.698 --> 00:10:58.738 gets called i guess the kernel developers call foundational drivers for the 00:10:58.738 --> 00:11:05.178 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 platforms and a few others and so the nice thing is is that because these these 00:11:10.098 --> 00:11:13.858 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 It means brand new laptops and desktops are probably going to work out of the 00:11:18.758 --> 00:11:22.978 box with Linux 7.0 with everything functional day one. 00:11:23.098 --> 00:11:25.838 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 which I am particularly looking forward to. 00:11:28.478 --> 00:11:31.538 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 and kind of plan your hardware releases is you can see, okay, 00:11:35.058 --> 00:11:36.638 this is landing now in 7.0. 00:11:37.178 --> 00:11:43.998 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 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 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 It's so much new hardware coming to Linux with new capabilities across x86, 00:11:58.457 --> 00:12:00.677 ARM64, RISC-V, and even Power. 00:12:02.157 --> 00:12:05.957 Like, this is a massive CPU architecture release, Linux 7.0. 00:12:06.257 --> 00:12:12.517 Yeah, there's SpaceMitK3, which is the first of the RVA23 profile specifications 00:12:12.517 --> 00:12:15.177 of actual RISC-V hardware being supported in the kernel, 00:12:15.257 --> 00:12:21.817 which I think also includes maybe some acceleration for some sorts of AI-type tasks. 00:12:21.817 --> 00:12:27.597 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 So what you can really do with it, how you get your hands on it, 00:12:30.537 --> 00:12:35.317 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 of developer machine enablement. 00:12:38.819 --> 00:12:42.179 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 in this, and Feronix and Linux Newbies has done a great job, 00:12:45.919 --> 00:12:48.879 or kernel Newbies, has done a great job of rounding a lot of this up, 00:12:48.939 --> 00:12:53.099 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 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 What? 00:12:58.879 --> 00:12:59.239 Yeah. 00:12:59.739 --> 00:13:02.739 No, this did not make my list of features. Tell me about this. 00:13:02.739 --> 00:13:08.919 There's the co-pilot key, but beyond that, Linux 7.0 adds three additional standardized 00:13:08.919 --> 00:13:12.359 HID key codes for contextual AI interactions. 00:13:13.759 --> 00:13:18.779 Action on selection, contextual insertion, and contextual query. 00:13:19.219 --> 00:13:19.379 What? 00:13:19.679 --> 00:13:21.339 Chris, why is your face doing that? 00:13:21.539 --> 00:13:25.899 I don't even understand what this means. I literally don't. Brent, 00:13:26.059 --> 00:13:29.959 do you have a guess of what this means? I'm sure Wes knows, but... 00:13:29.959 --> 00:13:33.919 Sounds like maybe some buzzwords got into the mailing list here. 00:13:34.059 --> 00:13:38.419 I mean, is it like something for deploying? Is it to enable agents to deploy 00:13:38.419 --> 00:13:40.859 and identify systems on cloud infrastructure? 00:13:41.579 --> 00:13:43.419 Like, that's the only place I could go with this. 00:13:43.439 --> 00:13:46.379 I think it's for interactions, right? So that now you have, you could have something 00:13:46.379 --> 00:13:50.939 where it's like, select something and click a button, and you could have a universal, 00:13:50.939 --> 00:13:54.779 like, HID-level way to ask an assistant for help. 00:13:54.899 --> 00:13:57.899 Or we could remap it, whatever, because it's Linux, right? But like on Windows, 00:13:57.959 --> 00:14:01.919 you might have a copilot key, and then google got this more sort of fine-brained 00:14:01.919 --> 00:14:05.679 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 to insert or edit text here. 00:14:08.199 --> 00:14:08.699 Or yeah. 00:14:08.699 --> 00:14:09.059 That kind of. 00:14:09.059 --> 00:14:11.299 The word key is used for so many things these days. 00:14:11.299 --> 00:14:16.119 But like so you can have keyboard you could have like a keyboard key but this 00:14:16.119 --> 00:14:19.139 could probably also work if you were building one of those tubes that's constantly 00:14:19.139 --> 00:14:23.199 trying to sell you stuff probably work for that too you know i have a little 00:14:23.199 --> 00:14:26.619 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 is it's interesting the stuff that makes it at the kernel level okay now can 00:14:29.679 --> 00:14:31.259 we talk about file systems okay, 00:14:32.793 --> 00:14:33.333 So, Brent. 00:14:33.953 --> 00:14:34.313 Yes? 00:14:35.093 --> 00:14:37.273 I bet you would think if we were going to talk about file systems, 00:14:37.413 --> 00:14:40.673 you would assume we were going to talk about BcacheFS or ButterFS. 00:14:40.913 --> 00:14:44.513 But it turns out some of our traditional favorites got some nice updates as well. 00:14:44.833 --> 00:14:46.873 So the old is the modern now? 00:14:48.093 --> 00:14:52.053 Well, I mean, if you're using the older file system, quote unquote older, 00:14:52.273 --> 00:14:54.893 you still get good stuff, right? 00:14:54.953 --> 00:14:58.833 I think everybody knows XFS is one of our favorites. 00:14:58.893 --> 00:14:59.873 It's one of your darlings. 00:14:59.873 --> 00:15:03.233 But now one of Wes's predictions has come true. 00:15:03.493 --> 00:15:07.753 Yeah, it looks like ext4 is getting faster concurrent I.O. 00:15:07.833 --> 00:15:13.113 Rights, and there's a new standardized generic I.O. error reporting layer across file systems. 00:15:15.053 --> 00:15:22.593 And, well, that means that container creation is 40% faster thanks to OpenTree 00:15:22.593 --> 00:15:25.793 namespace improvements. Wes, how do you feel about this? 00:15:26.593 --> 00:15:29.933 I am pro. So you wouldn't be surprised by that, though. 00:15:30.153 --> 00:15:32.653 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 of improvements tied to NOLFS being in this kernel and the OpenTree namespace 00:15:38.933 --> 00:15:42.893 stuff that means sort of the mount namespace handling, 00:15:43.173 --> 00:15:45.933 which is very important if you want to isolate a container or be able to pick 00:15:45.933 --> 00:15:47.753 and choose what mounts a container sees. 00:15:48.093 --> 00:15:52.193 All of that stuff can be a lot more sane without having to copy every single 00:15:52.193 --> 00:15:56.833 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 tree that you really want. 00:15:57.833 --> 00:16:01.473 And so when you tie that into improved stuff like, you know, 00:16:02.233 --> 00:16:05.373 concurrent direct IO writes to multiple files, and there's often lots of tiny 00:16:05.373 --> 00:16:08.713 files involved with containers, you can see how some of these performance wins 00:16:08.713 --> 00:16:09.653 really start stacking together. 00:16:10.495 --> 00:16:11.335 That is good to see. 00:16:11.915 --> 00:16:14.575 I'm curious, what did you base your prediction on then? 00:16:15.215 --> 00:16:20.355 Oh, no. This was the prediction, Brent. And this is the one that made my list, 00:16:20.595 --> 00:16:23.755 is XFS has gained autonomous self-healing. 00:16:23.955 --> 00:16:24.355 No way. 00:16:24.355 --> 00:16:28.315 Real-time air monitoring plus automatic background repairs. This, 00:16:28.435 --> 00:16:31.635 I think, was one of your predictions, if I'm not mistaken, Mr. Payne. 00:16:31.995 --> 00:16:37.195 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 But you shouldn't sleep on XFS, right? They've been adding like sneaky copy 00:16:42.055 --> 00:16:46.935 on write style features. They've been adding more like dynamic stuff at runtime, 00:16:47.455 --> 00:16:52.355 more monitoring, and now more live information about file system health events. 00:16:52.475 --> 00:16:55.735 And then that means you actually have the possibility to act on those and try 00:16:55.735 --> 00:17:00.255 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 Yeah, the patch set is interesting. It's done by creating an anonymous file 00:17:05.495 --> 00:17:07.795 that can be read for events by user space programs. 00:17:07.795 --> 00:17:12.415 Events are captured by hooking various parts of XFS and IOMAP so that metadata 00:17:12.415 --> 00:17:16.695 health failures, file IO errors, and major changes in file system states like 00:17:16.695 --> 00:17:17.715 unmount, shutdown, etc. 00:17:18.055 --> 00:17:21.395 Can be observed by user space programs. When an event occurs, 00:17:21.495 --> 00:17:25.335 the hook functions queue an event object to each event for later processing. 00:17:25.515 --> 00:17:28.615 A program must have the ability to read it, yada, yada, yada, going on. 00:17:28.935 --> 00:17:31.295 In user space, we created a new, this is the part that is interesting, 00:17:31.415 --> 00:17:33.375 in user space, we created a new daemon program. 00:17:34.808 --> 00:17:39.308 It will read objects and initiate repairs automatically. This daemon is managed 00:17:39.308 --> 00:17:44.128 entirely by system D and will not block unmounting of the file system unless 00:17:44.128 --> 00:17:47.288 repairs are ongoing, which is interesting. 00:17:47.428 --> 00:17:48.988 So you can unmount it unless it's in the middle of a repair. 00:17:49.088 --> 00:17:50.208 It'll stop you from unmounting it. 00:17:50.748 --> 00:17:56.288 The daemons are auto started by a service that uses fan O notify. 00:17:56.868 --> 00:17:57.648 Yeah, F-A notify. 00:17:58.008 --> 00:17:58.988 Thank you. F-A notify. 00:17:58.988 --> 00:18:02.068 Yeah and that's what's so cool about this is it's not just 00:18:02.068 --> 00:18:06.408 the file system level kernel level functionality that like hey we have this 00:18:06.408 --> 00:18:10.308 new framework it'll be great once someone takes advantage of it no this is like 00:18:10.308 --> 00:18:14.588 actually also shipping a user space thing that can take immediate advantage 00:18:14.588 --> 00:18:17.908 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 configured in distros downstream and all of that but that'll happen. 00:18:21.308 --> 00:18:26.608 You will have to have system d as well Another noteworthy XFS change is a performance 00:18:26.608 --> 00:18:28.168 improvement for parent pointers. 00:18:28.548 --> 00:18:32.628 They're used for storing backlinks in a file extended attribute for a parent 00:18:32.628 --> 00:18:36.368 and directory in its file name. And I guess in some cases... 00:18:37.507 --> 00:18:41.907 Wait in times had increased by 56% in some scenarios, and now those times are 00:18:41.907 --> 00:18:46.607 down to 8% for writes and 19% for deletion. 00:18:47.347 --> 00:18:51.027 So, not bad. Yeah, it's kind of that boring level of optimization where you 00:18:51.027 --> 00:18:54.467 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 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 Unless you want to copy everything all of the time, you need ways, 00:19:03.107 --> 00:19:06.387 like if you're dealing with extended attributes, you need ways to know details 00:19:06.387 --> 00:19:09.767 about the parent directory, where you're at in the file system, 00:19:09.887 --> 00:19:11.127 the permissions that are there. 00:19:11.547 --> 00:19:15.367 And if you have to go try to search some data structure every time you want 00:19:15.367 --> 00:19:17.267 to do that, you're going to have a bad time. 00:19:17.387 --> 00:19:21.867 And so parent pointers help you go have back references, have links, 00:19:22.027 --> 00:19:25.707 have pointers, as the name implies, to be able to traverse around on the file 00:19:25.707 --> 00:19:27.407 system and get from here to there. 00:19:27.407 --> 00:19:32.327 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 implemented has performance and so the faster you can resolve all those sort 00:19:35.447 --> 00:19:38.827 of metadata relations in the file system the faster the whole thing will be. 00:19:38.827 --> 00:19:42.627 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 one on my personal list we have some memory management changes anything in particular 00:19:46.967 --> 00:19:53.787 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 Yeah uh there's some cool iou ring stuff going on i. 00:19:57.527 --> 00:19:59.287 Was hoping you would cover that okay good. 00:19:59.287 --> 00:20:02.907 Yeah iou ring security task level 00:20:02.907 --> 00:20:07.427 restrictions and there's a functionality called sec comp in the kernel that 00:20:07.427 --> 00:20:11.427 we use a lot for various sandbox and gets used in containers sec comp bbf is 00:20:11.427 --> 00:20:16.147 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 that can happen so you can say 00:20:17.767 --> 00:20:21.187 like hey this program doesn't need to use a bunch of these system calls. 00:20:21.287 --> 00:20:23.787 It only needs to read files and talk to the network in this way or whatever. 00:20:24.227 --> 00:20:26.707 So you can set up set comp to then secure a program. 00:20:27.815 --> 00:20:32.975 SecComp filters work on these system calls, but they don't see IOU ring. 00:20:33.195 --> 00:20:37.215 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 sort of asynchronous ring that's meant to help have this section of memory that 00:20:41.875 --> 00:20:45.235 both user space and the kernel can talk to and then share there without having 00:20:45.235 --> 00:20:48.995 to have constantly switching between user space and kernel space, 00:20:49.115 --> 00:20:52.195 which can be an expensive operation like when you do a system call. 00:20:52.355 --> 00:20:55.695 But the problem is now you've created this whole other way to effectively make 00:20:55.695 --> 00:20:59.595 at least a subset of system calls, which is using IOU ring to do it. 00:21:00.055 --> 00:21:04.215 And sec comp previously had no visibility. So you could do all this nice security 00:21:04.215 --> 00:21:07.295 work to filter the available system calls for an application with sec comp, 00:21:07.455 --> 00:21:12.655 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 So essentially now, you know, the limitations basically were containers and 00:21:17.872 --> 00:21:20.592 systemd that do apply these filters essentially couldn't. 00:21:20.772 --> 00:21:26.772 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 But yes, we have CBPF and eBPF in the kernel for these IOU ring operations and 00:21:32.072 --> 00:21:33.872 their task level restrictions. 00:21:33.872 --> 00:21:38.592 They persist across fork. BPF filters can also examine sort of the arguments 00:21:38.592 --> 00:21:42.912 that are going into the filtering operation, which means they're strictly more 00:21:42.912 --> 00:21:45.552 capable than SecComp in that regard. 00:21:45.972 --> 00:21:50.772 And you might wonder why CPPF, why classic BPF Berkeley packet filter and not 00:21:50.772 --> 00:21:53.492 extended Berkeley packet filter with eBPF. 00:21:53.772 --> 00:21:58.472 That's actually because in containers, often eBPF for security reasons gets disabled. 00:21:58.652 --> 00:22:01.972 So they needed some kind of way to do this with a bytecode, flexible bytecode 00:22:01.972 --> 00:22:06.052 format that could work both in containers and with IOUring's model. 00:22:06.592 --> 00:22:08.712 And thus, this patch set was born. 00:22:08.932 --> 00:22:12.152 Wow, that feels like a pretty serious amount of constraints. 00:22:12.332 --> 00:22:13.112 That's very impressive. 00:22:13.472 --> 00:22:17.612 And as usual, it was Jens Expo, who does just incredible work in file system 00:22:17.612 --> 00:22:20.852 performance and security work and IOUring in particular. 00:22:21.352 --> 00:22:25.892 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 using day-to-day all of the time, the folks doing really performance and latency 00:22:31.412 --> 00:22:34.932 sensitive work on linux and security work definitely will care. 00:22:34.932 --> 00:22:39.932 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 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 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 Playing with that and getting the jupiter rocket on there another big deal for 00:22:51.652 --> 00:22:55.612 7.0 is the rust experiment is over. 00:22:57.200 --> 00:23:03.400 It is official. Rust is now considered part of the Linux kernel and has moved 00:23:03.400 --> 00:23:05.280 to a new stage of recognition. 00:23:05.600 --> 00:23:09.340 The experiment is done, i.e. Rust is here to stay. 00:23:09.780 --> 00:23:13.300 Miguel Ojeda said, the experiment is done. Rust is here to stay. 00:23:13.440 --> 00:23:17.320 I hope this signals commitment from the kernel to companies and other entities 00:23:17.320 --> 00:23:19.660 to invest more into it, e.g. 00:23:19.780 --> 00:23:24.580 Into giving time to their kernel developers to train themselves in Rust. 00:23:24.780 --> 00:23:28.700 Thanks to the many kernel maintainers that gave this project the support and 00:23:28.700 --> 00:23:31.440 patience throughout these years, and to the many other developers, 00:23:31.700 --> 00:23:35.760 whether in the kernel or in other projects, that have made this possible. 00:23:35.860 --> 00:23:41.100 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 the support into the kernel. 00:23:43.100 --> 00:23:47.460 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 one. But again, thanks a lot, everybody. 00:23:51.020 --> 00:23:53.960 Wow how long have we been following that this. 00:23:53.960 --> 00:23:54.900 Has been a journey. 00:23:54.900 --> 00:23:59.060 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 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 Will uh will they pull it out in a couple months or what. 00:24:06.460 --> 00:24:08.760 Yeah no. 00:24:08.760 --> 00:24:09.780 We're moving to zig yeah. 00:24:09.780 --> 00:24:14.540 Yeah right it's moments like this that you just reflect all this and go gosh 00:24:14.540 --> 00:24:17.140 this has been a real journey you know this has been something we've watched 00:24:17.140 --> 00:24:18.940 for years, and it's finally landed. 00:24:19.100 --> 00:24:22.980 How long did we spend, like, will they, won't they? Is Rust the right fit? 00:24:23.260 --> 00:24:25.100 How do you get agreement? What? 00:24:27.024 --> 00:24:31.124 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 at everything the kernel is doing, all of the complexity that goes into the 00:24:36.764 --> 00:24:39.264 kernel, how much it changes even on a daily basis. 00:24:39.584 --> 00:24:43.164 And yet we get to just run it on whatever device we want to. 00:24:43.284 --> 00:24:46.724 And it works quite beautifully for the most part. Like it's astonishing. 00:24:47.124 --> 00:24:51.824 I think it's important to be reminded of that and to thank everyone for all 00:24:51.824 --> 00:24:56.104 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 Maybe a few less systems will be supported, though. 00:24:59.524 --> 00:25:04.884 Linux 7.1, the next version, is the end of the beginning. 00:25:05.004 --> 00:25:08.044 The beginning of the end, I guess, for i486 support. 00:25:08.244 --> 00:25:12.244 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 to start the removal of Intel i486 CPU support from the upstream Linux kernel. 00:25:17.244 --> 00:25:21.264 Linus Torvalds has reportedly said that there is, quote, zero reason to keep 00:25:21.264 --> 00:25:24.184 i486 support since almost nobody is still using it. 00:25:24.504 --> 00:25:24.764 Ooh. 00:25:25.444 --> 00:25:28.384 Uh-huh. And no modern Linux distribution ships with support. 00:25:28.624 --> 00:25:33.504 They say users who rely on 486 hardware are pointed towards using the existing 00:25:33.504 --> 00:25:36.124 LTS kernels that remain, for now. 00:25:37.004 --> 00:25:41.404 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 kernel for the 486 build. So the kernel will no longer build a 486 image. 00:25:47.004 --> 00:25:50.724 And then the steps further down the road will be full code removal, 00:25:50.744 --> 00:25:55.384 which will likely come in following kernel series, assuming there's no major objections. 00:25:55.764 --> 00:25:59.464 You know, it's really kind of a salt in the wound because in 7.0, 00:25:59.644 --> 00:26:02.904 they dropped the last remaining parallel port Ethernet driver. 00:26:03.404 --> 00:26:07.764 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 gigabit networking, I guess. 00:26:09.344 --> 00:26:13.264 I will admit, the first thing that popped into my head when I saw this story 00:26:13.264 --> 00:26:15.924 was, should I fire up a 486 machine just one last time? 00:26:15.924 --> 00:26:21.724 Yeah, I was thinking like, oh, stay tuned. You'll see a 486 challenge in Linux 00:26:21.724 --> 00:26:23.544 Unplugged in any time now. 00:26:24.104 --> 00:26:25.004 I mean... 00:26:25.004 --> 00:26:27.744 Level 4 BSD. Is he getting it to work on 486? 00:26:27.864 --> 00:26:28.584 Watch it, E-Bag. 00:26:32.926 --> 00:26:35.986 Thank you to our members. Thank you very much for making this possible. 00:26:36.286 --> 00:26:39.186 We don't have a sponsor for this segment, but we're still here. 00:26:39.746 --> 00:26:40.986 Linuxunplugged.com slash membership. 00:26:41.226 --> 00:26:43.526 And if you want to support the whole network, it's jupyter.party. 00:26:43.686 --> 00:26:46.806 You get two options for the Unplugged program. You get the ad-free version still 00:26:46.806 --> 00:26:50.106 produced by Editor Drew, or you get the bootleg clocking in at about an hour 00:26:50.106 --> 00:26:52.326 12 right now with lots of extra content. 00:26:52.706 --> 00:26:55.646 Stuff we really should put in the show, but we want to make something great 00:26:55.646 --> 00:26:57.266 for our members too, so that's the bootleg feed. 00:26:57.666 --> 00:27:01.126 Both available with the direct membership or the jupyter.party membership. 00:27:01.126 --> 00:27:04.926 And of course a boost will directly support each episode the splits are set 00:27:04.926 --> 00:27:09.006 up automatically go to myself editor drew and the developer of the podcast app 00:27:09.006 --> 00:27:12.166 and you can support each episode with a boost and send a message on the show 00:27:12.166 --> 00:27:16.226 as well and that's one of our favorite moments so we appreciate that thank you 00:27:16.226 --> 00:27:17.386 members and thank you boosters. 00:27:20.766 --> 00:27:25.526 Well with some recent workflow changes on my end i've been using git more now 00:27:25.526 --> 00:27:30.386 than i ever have It seems almost every folder on my system now has a little 00:27:30.386 --> 00:27:31.646 Git repository hidden in it. 00:27:32.166 --> 00:27:36.466 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 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 But we got us thinking, like, can we do Git in a different way? 00:27:47.506 --> 00:27:50.346 Because GitHub has certainly been ubiquitous. 00:27:51.086 --> 00:27:52.166 But can we do better? 00:27:52.766 --> 00:27:55.946 Yeah. I feel it creeping into more and more of my workflow, too. 00:27:55.946 --> 00:27:59.146 You know at first it was like oh this is great for sharing projects with 00:27:59.146 --> 00:28:02.086 the audience and that it is good for but then 00:28:02.086 --> 00:28:04.726 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 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 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 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 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 github and yeah I thought. 00:28:23.565 --> 00:28:26.045 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 offline for about a year, if we should build our own GitLab or something like that. 00:28:32.385 --> 00:28:36.425 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 gist. And I don't have like big requirements here. 00:28:39.685 --> 00:28:43.425 I want like kind of like a prompt library. I want a command library, 00:28:44.005 --> 00:28:46.785 you know, useful Nix OS commands or useful commands for a router, 00:28:46.965 --> 00:28:48.225 whatever it might be that I'm working on. 00:28:48.545 --> 00:28:52.125 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 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 So I looked into OpenGIST, which is a self-hosted pastebin powered by Git. 00:29:03.265 --> 00:29:07.845 And as you would expect, you can just run it as a Docker container or whatever 00:29:07.845 --> 00:29:10.205 on your machine. And OpenGIST is pretty great. 00:29:10.405 --> 00:29:12.645 It's a AGPL 3.0 licensed. 00:29:12.985 --> 00:29:17.525 It is mostly written in Go and a little bit of TypeScript. 00:29:17.785 --> 00:29:22.665 And the interface is really nice and simple. and it's pretty, pretty good. 00:29:24.155 --> 00:29:29.655 Didn't quite solve my needs, especially because I think I don't need just gist. 00:29:29.775 --> 00:29:32.535 I think I might need actions and might as well. 00:29:32.715 --> 00:29:38.155 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 And maybe it's useful to frame sort of the capabilities because there's, 00:29:42.075 --> 00:29:44.535 you know, we're talking about a lot of different technologies, right? 00:29:44.615 --> 00:29:50.635 There's Git itself, the Merkle tree directed acyclic graph that like stores 00:29:50.635 --> 00:29:53.955 all of the wonderful details. That's totally open source. Then there's like 00:29:53.955 --> 00:29:57.415 GitHub as a proprietary service and UI and interface. 00:29:57.795 --> 00:30:01.735 And then there's like the sub features, right? So like GISTs on GitHub are sort 00:30:01.735 --> 00:30:07.295 of like a pastebin snippet, but with GIST support or with Git support under the hood. 00:30:07.455 --> 00:30:11.055 And that's where I think OpenGIST is very interesting because it is like, 00:30:11.215 --> 00:30:13.235 there's a lot of pastebin things, right? 00:30:13.255 --> 00:30:16.895 We already run several, I think, between various people as part of the network, 00:30:16.895 --> 00:30:22.275 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 It is only really directly targeting that one use case of like, 00:30:26.255 --> 00:30:27.795 I want a get back to paste bin. 00:30:28.375 --> 00:30:30.875 It's a little narrow for what I, I, I, this is where I started. 00:30:30.995 --> 00:30:34.555 I might want something more broad than this. I'm not sure. 00:30:34.995 --> 00:30:37.775 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 want to have several tools I string together? You know what I mean? 00:30:40.415 --> 00:30:43.355 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 Not everyone is on GitHub, but it has a social networking effect to it. 00:30:49.529 --> 00:30:50.349 And there's that aspect. 00:30:50.689 --> 00:30:53.109 And then there's just the question of like, what are you doing? 00:30:54.169 --> 00:30:56.709 There's different activities that you do in Git. There's stuff that's totally 00:30:56.709 --> 00:31:00.749 private, that's part of your own mesh network and backend infrastructure. 00:31:01.229 --> 00:31:04.629 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 and shared with the audience or us. 00:31:07.209 --> 00:31:09.129 Oh yeah, you too. Yeah, exactly. 00:31:09.589 --> 00:31:13.169 And so maybe to that extent, it does make sense to have multiple tools. 00:31:13.169 --> 00:31:18.629 But then you also don't want to make even more crazy, complicated setups when 00:31:18.629 --> 00:31:22.049 the whole point was just to be able to like easily share or easily have, 00:31:22.069 --> 00:31:24.749 you know, backups and change control and change management. 00:31:25.609 --> 00:31:30.889 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 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 Yeah. 00:31:35.049 --> 00:31:38.709 I feel like I could pause here and kind of. 00:31:39.849 --> 00:31:42.889 Take some guidance. And I know you've been playing with a self-hosted setup, 00:31:42.969 --> 00:31:47.149 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 So I'm curious to know what you've been building, Wes. 00:31:50.469 --> 00:31:52.389 Brent, I'm curious to know if you've looked into this at all. 00:31:52.449 --> 00:31:54.449 And obviously I want to know what the audience is hosting. So, 00:31:54.509 --> 00:31:55.289 Brent, I'll start with you. 00:31:55.549 --> 00:32:00.409 Have you looked into any kind of self-hosted Git, Lab, 4GEO? 00:32:01.640 --> 00:32:02.540 Type solutions at all. 00:32:02.540 --> 00:32:10.640 When we started with the website project to rebuild jupiterbroadcasting.com 00:32:10.640 --> 00:32:15.960 using the community and using you know best practices which meant i had to learn git, 00:32:16.600 --> 00:32:20.820 as you'll remember i was like for a couple weeks there just like deep diving 00:32:20.820 --> 00:32:24.860 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 hadn't necessarily had the experience before yeah. 00:32:28.300 --> 00:32:29.640 That was one of my favorite weeks ever. 00:32:29.640 --> 00:32:32.540 Now it's just a daily tool things seem to happen. 00:32:33.020 --> 00:32:38.640 And back then, I remember thinking, well, given my deep lean to privacy and 00:32:38.640 --> 00:32:45.020 hesitation around trusting Microsoft, certainly I looked into what can I self-host myself. 00:32:45.400 --> 00:32:51.580 And these days, I am not putting any of my personal stuff on GitHub, 00:32:51.580 --> 00:32:55.740 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 So I have looked into alternatives forge 00:33:00.020 --> 00:33:03.320 joe and at the time get t and those options 00:33:03.320 --> 00:33:06.940 it felt at that point a little too 00:33:06.940 --> 00:33:11.000 powerful for what i was looking for which is just a little bit of hosting of 00:33:11.000 --> 00:33:14.660 some code but these days i think 00:33:14.660 --> 00:33:18.420 i need to revisit that i determined back then that i probably didn't 00:33:18.420 --> 00:33:21.520 need it but given workflow changes recently 00:33:21.520 --> 00:33:24.320 and using it daily and how that might 00:33:24.320 --> 00:33:29.520 solve some problems for me i haven't been looking actively at changing it but 00:33:29.520 --> 00:33:34.680 i've been thinking actively about the implications of using github on the daily 00:33:34.680 --> 00:33:41.240 yeah and so i'm looking forward to hearing what wes can implement for us really 00:33:41.240 --> 00:33:43.600 is what it comes down to i'm. 00:33:43.600 --> 00:33:46.600 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 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 On github. 00:33:50.340 --> 00:33:54.200 In particular and some of my systems like my servers i just use Git locally, 00:33:54.200 --> 00:33:56.820 it's fine because I have a different backup strategy for that, 00:33:56.940 --> 00:33:59.940 but more and more of my projects have been drifting to GitHub. 00:34:00.660 --> 00:34:03.640 Alright, so what have you been cooking on in the background there, Mr. Payne? 00:34:04.496 --> 00:34:07.916 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 in Git, and I've used, you know, GitLab and various things. 00:34:11.276 --> 00:34:15.556 And there's a bunch of simple, you know, backend options for this simple web 00:34:15.556 --> 00:34:17.836 UIs just on top of Git or that kind of thing. 00:34:17.916 --> 00:34:21.536 But for me, it got more serious, because I had been mirroring stuff to GitHub, 00:34:21.656 --> 00:34:25.996 and they, you know, and I had my own backups of a bunch of my repos. 00:34:25.996 --> 00:34:29.096 Sure yeah you know they added more easier private 00:34:29.096 --> 00:34:31.896 repo support without having to pay a few years ago so 00:34:31.896 --> 00:34:34.676 that was one thing but when we 00:34:34.676 --> 00:34:37.676 started playing more with open claw like that project is just such 00:34:37.676 --> 00:34:41.156 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 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 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 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 going to want to be like reviewing its changes and that kind of stuff. 00:34:57.276 --> 00:35:01.416 I wanted something that had the features of a forge, you know, 00:35:01.536 --> 00:35:06.836 not just code, but like actually something where I could do PRs and go review 00:35:06.836 --> 00:35:11.116 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 I like all of those things. Yeah, you're right. Something where you could have 00:35:14.596 --> 00:35:15.996 pull requests because why not? 00:35:16.096 --> 00:35:20.016 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 And something that has an API means that you can integrate it with agent workflow. 00:35:24.669 --> 00:35:27.969 Uh so how are you running it and how far have you gotten with it. 00:35:27.969 --> 00:35:30.849 Yeah so i've been running for a little while the bare for 00:35:30.849 --> 00:35:33.809 joe stuff's been working great it has really nice nix os support 00:35:33.809 --> 00:35:37.309 so like the abbreviated history is there's 00:35:37.309 --> 00:35:40.889 like a really simple tool called gogs uh gogs that 00:35:40.889 --> 00:35:44.049 is super small tiny like just a clean little ui and 00:35:44.049 --> 00:35:46.949 then at some point like 10 years ago that got 00:35:46.949 --> 00:35:49.789 forked into getia um or get t however you're 00:35:49.789 --> 00:35:52.669 supposed to say that and then there's been drama there with like 00:35:52.669 --> 00:35:55.389 the company and the people behind it and so 00:35:55.389 --> 00:35:59.669 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 is powering and developed by the codeberg folks and then at some point that 00:36:04.349 --> 00:36:08.749 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 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 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 If you go with something like GitHub or GitLab, it's very enterprise-y. 00:36:23.969 --> 00:36:27.609 And Forgeo felt kind of just right for HomeLab, self-hosted, 00:36:27.769 --> 00:36:32.269 maybe a bit of actual infrastructure, it could scale up. 00:36:32.489 --> 00:36:35.909 I mean, it sounds like the Fedora team is moving from, or some of Fedora at 00:36:35.909 --> 00:36:40.169 least, is moving from Azure, their own Forge, to Forgeo. 00:36:40.269 --> 00:36:43.149 So it can scale up to pretty reasonable-sized organizations, 00:36:43.149 --> 00:36:48.849 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 to like being deployed like I'm doing it with Postgres and a NixOS module because 00:36:52.469 --> 00:36:54.109 it has great NixOS support built in too. 00:36:55.087 --> 00:36:58.467 I mean, the interface, as you're speaking, I'm kind of going through it, 00:36:58.647 --> 00:37:03.507 it looks like you're looking at a GitHub project when you go to somebody with 00:37:03.507 --> 00:37:04.947 a proper readme and all of that. 00:37:05.607 --> 00:37:09.427 Yeah, and if you're used to using GitHub, you'll have no problems adapting. 00:37:10.087 --> 00:37:15.387 It doesn't have everything. Like, in particular, it does not have guests or snippets. 00:37:15.487 --> 00:37:18.767 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 So, you don't get everything. 00:37:20.527 --> 00:37:23.587 Well, OpenGist is simple enough that I can still see running that as a side 00:37:23.587 --> 00:37:25.927 service. The big one for me would be actions. 00:37:26.807 --> 00:37:31.427 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 somewhat just this week. So I finally got it going. 00:37:33.987 --> 00:37:38.147 What's cool is you have, they're like, they're not necessarily GitHub compatible, 00:37:38.187 --> 00:37:42.647 but they are very GitHub familiar. So they are similar into the actions format, 00:37:42.847 --> 00:37:46.167 similar YAML files, and they have a similar runner concept. 00:37:46.427 --> 00:37:48.027 So I guess... 00:37:48.899 --> 00:37:54.659 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 or Forgeo, or however you say it, or on GitHub, right? 00:37:57.379 --> 00:38:01.359 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 quick before we get too far? 00:38:02.199 --> 00:38:06.979 And so this is connects to sort of the CI, CD, continuous integration, continuous delivery. 00:38:07.639 --> 00:38:11.379 And GitLab probably like gets some credit for being one of the first forges 00:38:11.379 --> 00:38:14.759 that really built this in with their own GitLab CI stuff. 00:38:15.039 --> 00:38:19.099 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 the source of truth, then it makes sense to drive stuff as events off the code. 00:38:23.599 --> 00:38:26.779 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 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 Or maybe you have a lot of contributors of different levels or different knowledge, 00:38:34.059 --> 00:38:37.259 and you want to have, you know, run some linting and formatting checks to make 00:38:37.259 --> 00:38:39.939 sure that random PRs meet the standards of the project. 00:38:40.099 --> 00:38:43.859 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 your official package, and you push it to, or your container, 00:38:46.739 --> 00:38:50.759 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 Or that can all go all the way to trigger the deployment code, right? 00:38:54.139 --> 00:38:56.819 And so this is how a lot of the community website, Brent, you 00:38:56.819 --> 00:39:00.039 were talking about our great community powered website and it uses 00:39:00.039 --> 00:39:02.879 actions right so it'll go when we have our 00:39:02.879 --> 00:39:05.579 scraper run it pulls it goes and scrapes and if it finds 00:39:05.579 --> 00:39:09.839 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 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 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 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 go do stateful deploys, depending on what you want to do. 00:39:24.439 --> 00:39:28.519 But that's the little hook is basically you have some kind of way to trigger 00:39:28.519 --> 00:39:32.099 it, be that a push or a code change or some action in the repo, 00:39:32.279 --> 00:39:34.259 or a manual trigger or web hook. 00:39:34.519 --> 00:39:39.579 And it is an automation that is instantiated with the state from your repo, 00:39:39.579 --> 00:39:42.579 so that it already has the code and it can do stuff with it. 00:39:42.975 --> 00:39:46.995 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 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 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 packages for them using a GitHub action. 00:39:57.915 --> 00:40:01.815 So then when I update my local system, it just pulls from my repository instead 00:40:01.815 --> 00:40:05.075 of the upstream one, which has like all this other, all these other dependencies 00:40:05.075 --> 00:40:06.835 and crap that it auto installs that I don't need. 00:40:07.015 --> 00:40:09.475 But it just helps with, you know, just small things like that. 00:40:09.555 --> 00:40:11.935 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 twice a day. That's kind of what I'm looking for. 00:40:14.275 --> 00:40:18.235 Exactly. And you can go, right, like, I have one that abuses it like a cron 00:40:18.235 --> 00:40:22.375 job to go scrape bookmarks I do and ping a Slack channel. 00:40:22.835 --> 00:40:26.595 But yeah, you can also have it where, like, this is super useful for Nix packages 00:40:26.595 --> 00:40:30.075 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 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 So yeah, I was looking for something like that, especially because I've been 00:40:38.155 --> 00:40:39.235 playing more with setting up. 00:40:39.795 --> 00:40:43.955 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 If you combine those things, then you could have a Nix cache that your systems 00:40:47.715 --> 00:40:52.235 are on, and maybe you have a powerful system, and you can register on that system 00:40:52.235 --> 00:40:54.875 a runner for your CI system. 00:40:54.875 --> 00:40:58.395 So it can run on whatever's running the Forgeo instance, but it can also run 00:40:58.395 --> 00:41:01.675 on whatever other system that has access over the network to be able to dispatch it. 00:41:01.695 --> 00:41:04.895 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 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 because for some Nix stuff, like Nix can be the sandbox. 00:41:12.835 --> 00:41:15.915 They don't necessarily need a whole build container. But for other stuff, 00:41:16.055 --> 00:41:20.015 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 container. So it can do both. 00:41:21.675 --> 00:41:25.095 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 on some other networked host. 00:41:26.735 --> 00:41:29.195 And so you can set up a workflow, which is what I've been working on. 00:41:29.275 --> 00:41:30.195 It doesn't totally work yet. 00:41:30.295 --> 00:41:33.235 This hopefully will be finished somewhat soon, but I got distracted by other 00:41:33.235 --> 00:41:36.275 projects, as you guys well know. but the idea would be, 00:41:37.057 --> 00:41:40.977 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 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 And I make all the changes in code anyway. So why not go have something that 00:41:49.557 --> 00:41:54.317 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 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 or tell a bot or whatever, then on the next rebuild, not only has it already 00:42:03.457 --> 00:42:06.157 been validated, but then it can just go pull the build files. 00:42:07.737 --> 00:42:11.357 So, this topic, I think, is coming up more and more. 00:42:11.577 --> 00:42:17.717 And I think one of the reasons it's growing is because there is a discomfort 00:42:17.717 --> 00:42:21.397 with this dichotomy of forces that are at play with GitHub. 00:42:22.197 --> 00:42:25.197 And there is this network effect that github benefits 00:42:25.197 --> 00:42:28.797 from that is extremely strong and you see it in community you 00:42:28.797 --> 00:42:31.957 see it in tool adoption etc etc etc right and 00:42:31.957 --> 00:42:36.257 then on the other side of that there's this equally strong force if not becoming 00:42:36.257 --> 00:42:40.997 stronger of in shitification and it's always it goes this way with all of these 00:42:40.997 --> 00:42:45.377 commercial platforms they you know they always kind of start at the really good 00:42:45.377 --> 00:42:49.037 end of the spectrum and then over time due to corporate strategy taxes, 00:42:49.337 --> 00:42:51.697 they tend to bend towards inshittification. 00:42:51.877 --> 00:42:56.937 And I think there's a lot of people concerned that GitHub is going that direction. 00:42:57.017 --> 00:42:59.937 And you mentioned there was drama in the past with 4G0, 00:43:00.769 --> 00:43:03.189 Do you feel like that stuff is settled? So like if I'm moving, 00:43:03.389 --> 00:43:08.369 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 Yeah, I think so. I would say you should think about like which pieces you're 00:43:14.369 --> 00:43:15.689 trying to replace and for what. 00:43:15.829 --> 00:43:20.289 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 own stuff on my own private infrastructure and mesh. 00:43:23.209 --> 00:43:27.389 But there are some things like you could obviously expose it publicly with a 00:43:27.389 --> 00:43:29.229 proxy or a port or whatever you want to do. 00:43:29.229 --> 00:43:32.969 And they're working on some kinds of federation uh 00:43:32.969 --> 00:43:36.109 they even have some nlnet sponsorship on this i think to like be 00:43:36.109 --> 00:43:39.149 able to federate for joe instances so that's you 00:43:39.149 --> 00:43:42.209 know that's something that's coming and you can do custom actions 00:43:42.209 --> 00:43:45.369 but they have some there's like a forge uh for joe 00:43:45.369 --> 00:43:48.389 sync or something where you can at least do one-way sync 00:43:48.389 --> 00:43:51.209 so like you can do your primary development in your private forge 00:43:51.209 --> 00:43:54.169 but then push to github as sort 00:43:54.169 --> 00:43:57.709 of a secondary thing whether you want to share that more publicly or as a sort 00:43:57.709 --> 00:44:00.429 of cheap backup because that was one of the things is like there are some things 00:44:00.429 --> 00:44:04.349 i might keep on github because it's primarily dominated about sharing or the 00:44:04.349 --> 00:44:07.549 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 easy access or for reference but like i could do all the primary stuff locally 00:44:12.009 --> 00:44:13.009 and then just sync it later. 00:44:13.009 --> 00:44:16.849 That sounds like quite a nice workflow actually yeah. 00:44:16.849 --> 00:44:20.269 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 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 lot of folks experimenting with these types of workflows. 00:44:25.929 --> 00:44:30.029 And it seems like there's between Codeberg itself and Private Forgeo and the 00:44:30.029 --> 00:44:32.309 possible Federation, there's just a lot cooking there right now. 00:44:33.111 --> 00:44:37.811 Brent, on that topic of it seems like we're entering this, where we're bending 00:44:37.811 --> 00:44:42.171 more and more towards incentivification, there was an article that the Software 00:44:42.171 --> 00:44:46.731 Conservancy published, and they start with something that I thought maybe we 00:44:46.731 --> 00:44:47.951 probably could have opened with, 00:44:48.251 --> 00:44:50.491 you know, if I were to plan this a little better. 00:44:50.651 --> 00:44:54.031 But moving off of GitHub for some people, it's not an easy task. 00:44:54.171 --> 00:44:55.651 Like there's some people in the chat room, like PJ, he's like, 00:44:55.691 --> 00:44:58.191 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 That is easy. But other people. 00:45:00.031 --> 00:45:00.911 Are deeply entrenched. 00:45:01.271 --> 00:45:04.871 That is a deeper problem. And the Conservancy is trying to make a pitch here. 00:45:05.291 --> 00:45:08.231 Yeah, I would call this almost a call to action this day here. 00:45:08.471 --> 00:45:15.371 Since June 2022, we've been encouraging and helping FOSS developers to give up on GitHub. 00:45:16.151 --> 00:45:19.971 We realize, though, this is not an easy task. GitHub is ubiquitous, 00:45:20.091 --> 00:45:23.951 though through their effective marketing, GitHub has convinced free and open 00:45:23.951 --> 00:45:29.731 source software developers that GitHub is the best and even the only place for FOSS development. 00:45:29.731 --> 00:45:37.271 However, as a proprietary trade secret tool, GitHub itself is the very opposite of FOSS. 00:45:37.531 --> 00:45:41.691 By contrast, Git was designed specifically to replace a proprietary tool, 00:45:41.831 --> 00:45:48.751 BitKeeper, and to make FOSS development distributed using FOSS tools and without a centralized site. 00:45:49.031 --> 00:45:54.291 GitHub has distorted Git, creating add-ons and features that turn a distributed, 00:45:54.551 --> 00:45:59.431 egalitarian, and FOSS system into a centralized proprietary site. 00:45:59.731 --> 00:46:05.491 And all those add-on features are controlled by a single for-profit company, Microsoft. 00:46:05.971 --> 00:46:10.851 By staying on GitHub, established FOSS communities bring newcomers to this proprietary 00:46:10.851 --> 00:46:16.591 platform, expanding GitHub's reach and limiting the imaginations of the next 00:46:16.591 --> 00:46:18.911 generation of FOSS developers. 00:46:20.817 --> 00:46:26.517 They give other reasons here in this article for why a lot of the anti-GitHub 00:46:26.517 --> 00:46:29.637 community wants to stay away from Microsoft. 00:46:29.757 --> 00:46:36.377 And there's one in particular that I think our audience would really feel hits home. 00:46:37.137 --> 00:46:40.277 And I wonder if this hit for you both as well. 00:46:40.457 --> 00:46:45.417 They say Microsoft has escalated the incorporation of its for-profit Copilot 00:46:45.417 --> 00:46:49.977 product. The Copilot banner now incorporates many different proprietary so-called 00:46:49.977 --> 00:46:51.717 artificial intelligence products. 00:46:52.017 --> 00:46:56.657 However, the first Copilot product was designed to automatically generate code 00:46:56.657 --> 00:47:01.337 interactively for developers, and that feature is still pushed on GitHub users. 00:47:01.617 --> 00:47:06.097 Copilot AI model was trained, according to GitHub's own statements, 00:47:06.777 --> 00:47:11.477 exclusively with projects that were hosted on GitHub, including many licensed 00:47:11.477 --> 00:47:13.317 under copy left licenses. 00:47:14.077 --> 00:47:18.397 Microsoft even admits that there was one document that they encountered and 00:47:18.397 --> 00:47:25.117 ignored a whopping 700,000 different times during training, and that was the 00:47:25.117 --> 00:47:27.617 GNU General Public License. 00:47:28.077 --> 00:47:33.017 Most of these projects are not in the public domain. They are licensed under FOSS licenses. 00:47:33.017 --> 00:47:37.617 These licenses have requirements, including proper author attribution, 00:47:37.877 --> 00:47:42.997 and in cases of copyleft licenses, they sometimes require the works based on 00:47:42.997 --> 00:47:48.057 it, or then incorporate that software to be licensed under the exact same copyleft 00:47:48.057 --> 00:47:49.817 license as the prior work. 00:47:49.917 --> 00:47:56.117 Microsoft and GitHub have been ignoring these license requirements for quite a few years now. 00:47:56.117 --> 00:48:01.797 Their only defense of these actions was a still-unretracted statement by their 00:48:01.797 --> 00:48:07.917 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 In addition to the legal issues, the ethical implications of GitHub's choice 00:48:13.037 --> 00:48:19.017 to use copyleft code in the service of creating proprietary software is a grave 00:48:19.017 --> 00:48:20.997 one. So the debate here is. 00:48:22.333 --> 00:48:29.633 Is it okay to use over 700,000 open source projects to fund their, 00:48:29.633 --> 00:48:32.413 well, business model at this point? 00:48:32.653 --> 00:48:37.593 And this is something when Microsoft first bought GitHub, many of us imagined 00:48:37.593 --> 00:48:44.333 the dark ways that that could go negatively against open source ethos. 00:48:44.533 --> 00:48:48.673 And at the time, we didn't really have answers. But I think you could argue 00:48:48.673 --> 00:48:51.093 this is one of the reasons that we were hesitant back then. 00:48:51.533 --> 00:48:55.593 I think maybe an interesting way to frame this, a model to use, 00:48:55.693 --> 00:49:03.553 would be if they were properly doing attribution, would that solve the majority of the problem? 00:49:03.733 --> 00:49:07.873 Is the issue not that they're using code that's open source and copyleft, 00:49:07.913 --> 00:49:11.653 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 original code, they're not attributing it? 00:49:13.733 --> 00:49:16.453 I don't want to get nuanced into like, well, if it's changed by 25%, 00:49:16.453 --> 00:49:20.233 but I just wonder if that is the problem. If it's just simply, 00:49:20.233 --> 00:49:21.873 is the core issue attribution? 00:49:22.013 --> 00:49:28.513 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 All of this code into. 00:49:32.276 --> 00:49:35.956 Well, but that doesn't make sense, right? Because if you post a free software 00:49:35.956 --> 00:49:41.656 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 I think Brent means what gets output from, not runs Copilot. 00:49:45.696 --> 00:49:47.276 Okay. All right. What do you think, Wes? 00:49:47.476 --> 00:49:50.496 I mean, there's certainly like license fights to be had for sure, 00:49:50.536 --> 00:49:53.356 but there is that whole uncomfortable question of like, well, 00:49:53.416 --> 00:49:56.896 how much learning and what counts as learning do we allow, right? 00:49:56.996 --> 00:50:01.616 Because just about every single person who's ever contributed to copyleft went 00:50:01.616 --> 00:50:04.216 on to contribute to other differently licensed projects. 00:50:04.516 --> 00:50:09.056 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 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 But I think for us, right, there's one thing on the giant scale, 00:50:17.876 --> 00:50:24.116 but as individual users, the VEM training on my open source or public code was 00:50:24.116 --> 00:50:25.956 not Not the thing that I cared about necessarily. 00:50:26.356 --> 00:50:30.236 I think for me, it'd be more about control and knowing when that was happening. 00:50:30.556 --> 00:50:35.536 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 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 on the available internet, it will be ingested for purposes unknown and uncontrollable to you. 00:50:44.076 --> 00:50:48.336 But then for people like me who are not paying GitHub, but still have some stuff 00:50:48.336 --> 00:50:50.796 that's private on there, that's where it gets murkier for me. 00:50:50.876 --> 00:50:54.556 Because like if I'm a company that has like an actual contract with them, 00:50:54.716 --> 00:50:55.696 that's a whole other thing. 00:50:55.836 --> 00:51:00.776 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 But for me, without that and with no lawyers to deploy, it's sort of like, 00:51:05.016 --> 00:51:08.536 well, I want to have better boundaries of what do I consider I'm just sending 00:51:08.536 --> 00:51:10.216 off into the ether in the commons? 00:51:10.356 --> 00:51:12.636 What do I think is actually private and under my control? 00:51:12.916 --> 00:51:14.876 So that's the framework I'm currently using. 00:51:15.856 --> 00:51:20.816 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 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 Does that solve that problem? I mean, these don't seem like particularly unsolvable problems. 00:51:30.065 --> 00:51:32.685 Well, no, so for that, I think that's the trust thing, right? 00:51:32.685 --> 00:51:33.825 That would go to the contract. 00:51:34.085 --> 00:51:36.605 Because I don't have any audits. I don't have any enforcement mechanisms there. 00:51:36.625 --> 00:51:37.445 Oh, so for me. 00:51:37.565 --> 00:51:42.005 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 Yeah, that I agree with. Yeah, that's... 00:51:44.305 --> 00:51:47.745 I mean, I'm totally down for them adding that. I think that might help, right? 00:51:47.825 --> 00:51:52.125 They're giving people more control or at least the illusion or some level of 00:51:52.125 --> 00:51:56.025 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 of good faith what it actually does in terms of real consequences and how it 00:51:59.445 --> 00:52:00.945 changes things. I don't know. 00:52:01.165 --> 00:52:04.285 I agree. And I think the best solution is to just move off the platform. 00:52:04.285 --> 00:52:08.405 If this is a concern of yours and for private stuff, I think that does make 00:52:08.405 --> 00:52:10.785 sense for stuff that I was going to share publicly with the audience. 00:52:10.905 --> 00:52:14.505 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 I also find that the, 00:52:17.059 --> 00:52:21.859 The co-pilot on the GitHub site has not actually been that annoying to me. 00:52:21.999 --> 00:52:24.059 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 it's constantly injected in when I go look at GitHub or use it. 00:52:27.399 --> 00:52:31.859 I'm sorry. People are editing code directly on the GitHub.com website. 00:52:32.439 --> 00:52:32.999 Oh, yeah. 00:52:33.239 --> 00:52:34.399 They deserve to be annoying. 00:52:34.679 --> 00:52:35.559 They have a whole editor. 00:52:36.039 --> 00:52:39.359 I guess I've seen that, but I didn't think anybody actually used it. 00:52:39.539 --> 00:52:40.819 That just seems crazy to me. 00:52:41.639 --> 00:52:46.459 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 still requiring a login to be way more 00:52:48.779 --> 00:52:51.119 annoying than anything that they're injecting over on the GitHub side. 00:52:51.259 --> 00:52:54.059 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 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 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 back for us back then, where we're sitting here and we're preening about intellectual 00:53:08.979 --> 00:53:12.539 property and protecting our licenses and our copyrights. 00:53:12.619 --> 00:53:16.819 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 the Tivos and used to be about sharing, you know, sharing things. 00:53:23.239 --> 00:53:27.099 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 this community engage in those activities and have since the days of Napster 00:53:31.399 --> 00:53:33.399 and have no qualms about it. 00:53:33.899 --> 00:53:36.879 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 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 I just find it ironic, especially from a community that in the past has been 00:53:44.619 --> 00:53:49.639 sort of anti-copyright, anti-licenses that prevent them from hacking things, 00:53:50.139 --> 00:53:53.039 you know, proprietary blobs and things like that. And now all of a sudden, 00:53:54.045 --> 00:53:56.405 We're like the people that are like pro-proprietary information. 00:53:56.405 --> 00:53:57.485 I just think it's pretty ironic. 00:53:58.365 --> 00:54:01.325 But people have the right to, you know, do it, choose whatever they want. 00:54:01.385 --> 00:54:05.325 And I think that's why some solutions around self-hosting your own GitHub alternative 00:54:05.325 --> 00:54:10.185 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 Could be about- For Geo. I guess it's Esperanto for Forge. So there you go. 00:54:14.845 --> 00:54:15.005 Okay. 00:54:15.065 --> 00:54:18.145 And yeah, I do think there are some arguments to be made around the scale and 00:54:18.145 --> 00:54:23.105 the like, I think a lot of the uncomfortableness is from the asymmetry of scale 00:54:23.105 --> 00:54:25.285 and resources and this feeling of like, 00:54:25.405 --> 00:54:30.005 I am doing this stuff and I wanted to benefit humanity and the commons or other 00:54:30.005 --> 00:54:34.565 people or whatever, but I didn't necessarily want to have that be underwriting 00:54:34.565 --> 00:54:38.145 your entire business model without you giving back. And so there's totally legitimate 00:54:38.145 --> 00:54:38.985 things there, but you're right. 00:54:39.245 --> 00:54:43.145 We should also probably strive to make sure that we can find consistent frameworks 00:54:43.145 --> 00:54:46.825 to evaluate this stuff because it's changing fast and we want to figure out 00:54:46.825 --> 00:54:47.725 how to think about it well. 00:54:47.725 --> 00:54:50.205 I agree. I don't think we should lose sight though, that even though they, 00:54:50.345 --> 00:54:52.305 if they have indexed and they've rolled over and all of this, 00:54:52.425 --> 00:54:56.905 that information has been made available to all of us extremely reasonably. 00:54:57.125 --> 00:55:00.365 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 of us faster builders and we're building more things. 00:55:03.665 --> 00:55:07.685 So if your effort was towards making humanity better and making more information 00:55:07.685 --> 00:55:10.285 freely available to the people, that has been achieved. 00:55:10.385 --> 00:55:14.425 And now more people are accessing and utilizing it, maybe not directly through 00:55:14.425 --> 00:55:16.265 you and the way you want them to consume it. 00:55:16.365 --> 00:55:20.185 But it is happening at a much larger scale than it was even six months ago. 00:55:20.265 --> 00:55:24.105 And the amount of free software that is being produced and published on platforms 00:55:24.105 --> 00:55:27.305 like GitHub is growing exponentially like a hockey stick right now. 00:55:27.745 --> 00:55:31.945 And so in a way, it has made that information more accessible to people. 00:55:31.945 --> 00:55:34.945 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 as free software is improve the information and access to humanity that is being 00:55:39.645 --> 00:55:42.565 achieved, you may not like the means in which it's being achieved. 00:55:43.494 --> 00:55:47.734 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 say there's two sides to all of this. 00:55:49.414 --> 00:55:52.514 And people should have their options to opt out and not participate. 00:55:52.814 --> 00:55:54.614 And I'd like to hear what the audience suggests. 00:55:55.274 --> 00:55:58.394 If there's something better than we've come up with, please let us know. 00:55:58.534 --> 00:56:01.854 Because I think this is going to become a bigger and bigger deal as people make 00:56:01.854 --> 00:56:04.374 their decisions here. Because this ain't slowing down, right? 00:56:04.554 --> 00:56:06.934 That bend is continuing. 00:56:07.254 --> 00:56:09.534 And the corporate strategy won't slow down. 00:56:14.934 --> 00:56:19.594 We have an extra special baller booster here, our dear, lovable, 00:56:19.934 --> 00:56:23.034 squishy PJ, Producer Jeff. 00:56:28.654 --> 00:56:33.994 Producer Jeff sent in 22,222 Satoshis. 00:56:34.814 --> 00:56:39.674 Says, I am a forgetful booster. Pin your tabs, Brent. 00:56:40.214 --> 00:56:42.694 Yeah, Brantley, how come you won't ever pin your tabs over there? 00:56:42.694 --> 00:56:46.394 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 Oh, I meant to tell you earlier, I pinned my first tab in years this week. 00:56:59.272 --> 00:57:00.252 What? What? What? 00:57:00.332 --> 00:57:00.932 I did. 00:57:01.112 --> 00:57:02.832 What was it? Are you willing to share? 00:57:03.032 --> 00:57:06.072 The song really got me inspired to change my ways. 00:57:06.232 --> 00:57:11.652 And I pinned an OpenCode web UI tab because I figured that would be useful. 00:57:12.452 --> 00:57:15.592 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 Huh. Okay. All right. 00:57:17.672 --> 00:57:20.332 He's going to make us radically rethink our relationship with pinned tabs. 00:57:20.472 --> 00:57:21.732 I don't know if I'm ready for it. 00:57:21.912 --> 00:57:26.292 I don't. Oh, geez. I got to have lunch first, I think. Speaking of lunch, 00:57:26.432 --> 00:57:29.752 Derivation Dengus came in with 21,633 sats. 00:57:32.192 --> 00:57:35.232 I'm loving these AI episodes, especially the practical AI tips. 00:57:35.372 --> 00:57:38.752 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 systems that agents can safely take on some of the maintenance for. 00:57:42.252 --> 00:57:45.372 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 to work out, but these episodes always give me good ideas. Keep them coming. 00:57:48.992 --> 00:57:53.032 We did get a good amount of feedback. We did. On the emails, 00:57:53.432 --> 00:57:58.592 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 it so much side on the AI stuff. 00:58:00.952 --> 00:58:03.712 So it was good feedback, and we're still reviewing it all. 00:58:03.932 --> 00:58:06.752 Please do keep telling us your opinions on it. If you're catching this after 00:58:06.752 --> 00:58:07.572 the fact, we still want to know. 00:58:08.612 --> 00:58:11.892 Yeah, and I like how Dingus here points out, too, I think, something that is 00:58:11.892 --> 00:58:14.992 relevant to our last topic, which is whatever you think about how they were 00:58:14.992 --> 00:58:18.592 made, they're here now, and you can use these tools to improve your own open 00:58:18.592 --> 00:58:23.252 source work, your own home lab, and or easier escape from proprietary services. 00:58:23.712 --> 00:58:26.972 Nothing like an LLM script to help you do your Google takeout, that kind of thing. 00:58:27.312 --> 00:58:27.792 There you go. 00:58:28.012 --> 00:58:31.012 That has been my entire week. I will just divulge. 00:58:31.712 --> 00:58:40.252 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 Two males in a row. Nice. 00:58:45.303 --> 00:58:49.943 And a Knicks Book Machine giveaway follow-up. I love this. 00:58:50.143 --> 00:58:53.063 I finally got my wife to sit down and use it. 00:58:53.223 --> 00:58:55.843 There wasn't that much information that I could glean from the experience, 00:58:55.843 --> 00:58:59.383 but that's mostly because there wasn't anything that she ran into. 00:58:59.643 --> 00:59:02.783 Wow. I gave her the prompt of, imagine you're someone who needs a job, 00:59:02.863 --> 00:59:05.603 and this just got set down in front of you as a laptop. 00:59:05.803 --> 00:59:06.683 Gave her the prompt. 00:59:07.203 --> 00:59:10.943 She immediately just went to Indeed.com. I can't even say she was impressed, 00:59:11.123 --> 00:59:16.143 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 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 Best report I could give, up next, grandma. 00:59:23.743 --> 00:59:24.043 Oh! 00:59:24.343 --> 00:59:25.223 Oh, yeah. 00:59:25.643 --> 00:59:29.323 Let us know how that goes. Interesting. You know, that is probably the best 00:59:29.323 --> 00:59:30.823 report possible, I suppose. 00:59:31.963 --> 00:59:34.003 Thank you, Mr. Mayhem. Appreciate that. 00:59:34.923 --> 00:59:39.703 Well, we have a couple boosts here from Elray. El Rey 741, 00:59:42.475 --> 00:59:46.715 While I can appreciate other listeners' sentiments, and initially for a little 00:59:46.715 --> 00:59:50.995 while I agreed, that there was too much AI conversation in Linux Unplugged, 00:59:51.975 --> 00:59:56.275 but then I reflected on it a while back, and I have really appreciated the pragmatic 00:59:56.275 --> 00:59:59.975 and fun approach JBS has taken to the AI topic. 01:00:00.215 --> 01:00:03.035 For a while, you've used it in the background and not brought it up much, 01:00:03.035 --> 01:00:06.535 because I'm assuming it wasn't as applicable to the wider audience, 01:00:06.915 --> 01:00:09.115 for example, the song generation that we do. 01:00:09.835 --> 01:00:14.135 But as you found things had greater impact to your day life, 01:00:14.295 --> 01:00:17.415 you've brought more intentional topics to us, the audience. 01:00:17.815 --> 01:00:18.875 Oh, thank you. I think that's fair. 01:00:19.015 --> 01:00:23.435 I also wanted to throw out there that I've loved the members bootleg feed update 01:00:23.435 --> 01:00:25.075 having the video enclosure. 01:00:25.495 --> 01:00:29.075 Life has been crazy busy, so being able to see the amazing studio, 01:00:29.355 --> 01:00:33.875 your facial reactions, and friendly faces has been awesome when I get some downtime. 01:00:35.355 --> 01:00:37.915 It's so nice to hear from LRA, too. Hope you're doing well. 01:00:37.915 --> 01:00:38.535 Yeah, me too. 01:00:38.615 --> 01:00:38.835 Agree? 01:00:39.775 --> 01:00:41.015 And thank you for the feedback. 01:00:41.435 --> 01:00:45.115 FYI, since you've chatted with Fountain a lot in the past, when rotating to 01:00:45.115 --> 01:00:47.795 landscape mode, oh, this is a bug report, I think. 01:00:47.975 --> 01:00:51.335 When rotating to landscape mode using the video version in full screen, 01:00:51.955 --> 01:00:54.575 the Fountain logo cuts off part of Chris's head. 01:00:54.915 --> 01:00:57.795 So when you go to the third person shot, since Chris is on top, 01:00:58.195 --> 01:01:00.835 not a big deal, but you know, Chris's face. 01:01:00.975 --> 01:01:04.575 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 You got to have that wide screen. 01:01:06.035 --> 01:01:10.295 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 User 266 is here with 4,709 sats. Woo-hoo! 01:01:18.031 --> 01:01:20.131 Long-time listener, first-time booster. 01:01:20.931 --> 01:01:21.291 Nice. 01:01:24.191 --> 01:01:27.731 That's great. Maybe my last, since I'm switching away from Fountain, 01:01:27.891 --> 01:01:30.951 though. Too many bugs for me. Some people hit them, man, you know? 01:01:32.351 --> 01:01:36.391 It's really gotten very, very good, but in terms of some of the other apps, 01:01:36.431 --> 01:01:37.611 they still have like a decade on them. 01:01:38.211 --> 01:01:41.771 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 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 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 we try to take on as we can. 01:01:50.051 --> 01:01:53.791 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 the FOSS world that's exciting. 01:01:55.391 --> 01:01:56.131 It says greetings from Italy. 01:01:56.131 --> 01:01:56.611 Because we don't see it all. 01:01:57.411 --> 01:02:00.111 Greetings from Italy to you too, or at least back from us. 01:02:01.151 --> 01:02:02.451 Italy meetup, let's go. 01:02:02.591 --> 01:02:04.831 Let's go. All right, I like that. 01:02:05.251 --> 01:02:09.091 All right, well Ensign Nix comes in with 2,048 sats. 01:02:12.691 --> 01:02:16.131 I'm not a fan of AI, but I acknowledge that it's a useful tool. 01:02:16.131 --> 01:02:20.311 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 by the big tech companies and advertised as the answer to all of humanity's problems. 01:02:26.031 --> 01:02:30.251 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 I actually want the AI bubble to burst so we can shape its future instead of 01:02:34.411 --> 01:02:36.691 greedy corporations who only care about profit. 01:02:37.331 --> 01:02:38.091 I will say. 01:02:38.091 --> 01:02:39.751 That's a fun, refreshing take. I like it. 01:02:39.951 --> 01:02:40.271 I agree. 01:02:41.471 --> 01:02:45.971 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 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 But it is the silly part of the curve, for sure. 01:02:54.811 --> 01:02:58.151 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 Yeah, it often is, though. It often is. 01:03:01.291 --> 01:03:04.211 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 We need it. Oh, man. 01:03:07.331 --> 01:03:12.571 Adversaries 17 boosted in 4,220 satoshis, 01:03:15.028 --> 01:03:19.508 Well, I think you guys are balancing AI and non-AI topics very well indeed. 01:03:19.788 --> 01:03:23.468 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 fresh and highlight the lesser hyped things. Please keep it up. 01:03:27.548 --> 01:03:28.208 Oh, thank you, sir. 01:03:28.628 --> 01:03:29.188 Thank you. 01:03:31.028 --> 01:03:37.208 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 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 Could chapters help those wanting to skip the subject? I think the current ratio 01:03:45.648 --> 01:03:49.748 between AI and not is good. So keep up the good work. Thank you. 01:03:50.168 --> 01:03:54.508 Do we have chapters in our feed that people can use? 01:03:54.848 --> 01:03:55.728 We do have chapters. 01:03:56.028 --> 01:04:00.008 It does bring up, you know, that could perhaps, and I'm failing at this all 01:04:00.008 --> 01:04:04.788 the time, but kind of like with Nick's, perhaps then if we do think consciously 01:04:04.788 --> 01:04:06.088 about keeping, you know, 01:04:06.688 --> 01:04:11.268 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 It did take a drinking challenge to get us to behave a little bit. 01:04:14.808 --> 01:04:15.328 Yeah. 01:04:16.928 --> 01:04:17.648 Hopefully it doesn't get that bad. 01:04:17.648 --> 01:04:18.508 So hopefully we can avoid that. 01:04:22.948 --> 01:04:28.108 Well, Kiwi Bitcoin Guide comes in with 4,567 cents. 01:04:31.043 --> 01:04:34.563 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 Linux and FOSS world, and now I have to weave AI into it all, 01:04:37.703 --> 01:04:40.243 so I appreciate the way you bring it into the Linux ecosystem. 01:04:40.523 --> 01:04:44.183 Give examples of practical use cases and also potential hooks to be aware of. 01:04:44.623 --> 01:04:47.783 AI seems to be here to stay, and everyone needs to understand how to use it, 01:04:47.963 --> 01:04:50.303 so keep the content coming. That's my vote. 01:04:50.463 --> 01:04:50.923 Thank you. 01:04:51.283 --> 01:04:51.563 Thank you. 01:04:51.643 --> 01:04:55.163 Yeah, that has, so, I mean, I do really appreciate all the positive feedback, 01:04:55.303 --> 01:04:57.463 because it does sort of balance out some of the negative feedback. 01:04:57.883 --> 01:05:01.643 I think the takeaway is when we talk about it, talk about it in a practical 01:05:01.643 --> 01:05:05.083 useful context that uh you know and i think that's what something we've been 01:05:05.083 --> 01:05:07.143 good at with with an open source focus. 01:05:07.143 --> 01:05:12.083 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 the the technology is really just 01:05:14.503 --> 01:05:19.283 the means to doing something bigger and greater and i think that helps me. 01:05:19.283 --> 01:05:20.963 I think to buy a. 01:05:20.963 --> 01:05:22.363 More positive relationship with it. 01:05:22.363 --> 01:05:25.543 Like you were mentioning one of the models you were you were leaning into this 01:05:25.543 --> 01:05:29.253 past week uh is an open source one and um and. 01:05:29.253 --> 01:05:30.473 They're quite capable these days. 01:05:30.473 --> 01:05:32.173 Yeah that's been really fun to explore too. 01:05:33.413 --> 01:05:37.433 Well turd ferguson boosted in 10 000 satoshis, 01:05:40.309 --> 01:05:46.929 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 I don't know about you, but I have been noticing a slowly but growing trend 01:05:51.409 --> 01:05:56.469 of people reluctantly accepting and then really beginning to embrace this technology. 01:05:56.669 --> 01:06:00.829 This reminds me of a meme I saw on social media. 01:06:01.129 --> 01:06:06.289 Somebody screenshotted their blog headlines, you know, just like the RSS feed 01:06:06.289 --> 01:06:12.229 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 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 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 anymore. This is incredible. 01:06:27.429 --> 01:06:30.589 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 something that's useful for it, it begins to crack that kind of assumption that 01:06:34.969 --> 01:06:37.529 you've made about it I think I think there is something to that. 01:06:38.049 --> 01:06:41.709 It's also just wild because everything changes so fast between the capabilities. 01:06:41.709 --> 01:06:42.589 How you can use. 01:06:42.589 --> 01:06:45.809 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 always jive well with our human level speed. 01:06:48.349 --> 01:06:53.069 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 know a lot of noise it's very confusing all of that too, 01:06:57.213 --> 01:07:01.913 Thank you, Turd. Appreciate that. Forward Humor comes in with 4,444 stats. 01:07:03.233 --> 01:07:06.293 Hey, guys. I just wanted to say thank you for all the variety in the show, 01:07:06.393 --> 01:07:08.253 including the AI and tech news. 01:07:08.473 --> 01:07:11.673 I always appreciate a show that entertains me and keeps me up to date. 01:07:11.813 --> 01:07:13.733 Not enough time in the day to stay current on my own. 01:07:13.893 --> 01:07:16.393 The show continues to dive deep on interesting and helpful topics. 01:07:16.513 --> 01:07:18.653 Keep up the good work. Wow, Forward Humor, thank you. 01:07:19.433 --> 01:07:23.073 We did not pay these people. We did not pay them to say that. 01:07:23.173 --> 01:07:23.533 They're paying us for some reason. 01:07:23.533 --> 01:07:27.813 They're paying us, and we didn't know. Thank you, guys. Appreciate that. 01:07:29.353 --> 01:07:31.313 Tomato comes in with a row of ducks. 01:07:32.273 --> 01:07:33.493 I think it's tomato. 01:07:34.793 --> 01:07:36.833 Hey, you say potato, I'll say. 01:07:38.973 --> 01:07:44.813 I'm simultaneously sick to death of hearing about AI and enjoying Love's AI coverage. 01:07:45.073 --> 01:07:45.273 Wow. 01:07:45.433 --> 01:07:48.873 You are all on a very, very short list of exceptions because you strike a good 01:07:48.873 --> 01:07:52.773 balance, both in terms of the amount of coverage, but also being neither cheerleaders 01:07:52.773 --> 01:07:53.913 nor thought-free haters. 01:07:54.413 --> 01:07:57.913 I'm pretty much aligned with Brent, and like he clearly is, I'm enjoying hearing 01:07:57.913 --> 01:07:59.413 Chris and Wes's AI adventures. 01:08:00.273 --> 01:08:04.093 I just watch from a small distance and keep my detective shield up. 01:08:04.093 --> 01:08:05.593 He lets us burn the tokens on the agents. 01:08:06.853 --> 01:08:07.933 Then I can be more efficient. 01:08:07.973 --> 01:08:10.173 You're watching from your hardware hacking lab, buddy. 01:08:10.693 --> 01:08:12.473 Yeah, it's more of a bug lab at this point. 01:08:14.753 --> 01:08:18.093 SpookySatCom came in with 1, 2, 3, 4, 5 satoshis. 01:08:22.722 --> 01:08:28.262 For someone who isn't completely sold on the overall value of all the AI development, 01:08:28.582 --> 01:08:32.682 I do find value in your approach to covering the use cases for it. 01:08:32.842 --> 01:08:34.402 So keep up that great work. 01:08:35.162 --> 01:08:38.602 Wow. Thank you. All right. That's great, Spooky. Appreciate that. 01:08:38.762 --> 01:08:40.462 That's a good amount of signal there. 01:08:40.842 --> 01:08:43.702 And, of course, you're always welcome to counterbalance or add your own. 01:08:43.902 --> 01:08:48.462 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 Thank you, everybody, who streams stats as well. 15 of you collectively stacked. 01:08:53.542 --> 01:08:58.482 24,874 sats. When you combine that with our boosters, that brings this episode 01:08:58.482 --> 01:09:00.802 to a humble but very appreciative and thankful, 01:09:02.842 --> 01:09:06.922 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 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 Fountain FM does make it easy. They make a lot of easy ways, 01:09:14.642 --> 01:09:17.862 including self-hosted or fiat channels or whatever it might be to boost. 01:09:18.042 --> 01:09:21.542 But then there is a galaxy of options when you go to AlbiHub, 01:09:21.542 --> 01:09:25.302 from self-hosted to apps on your phone and whatnot to participate including 01:09:25.302 --> 01:09:26.802 just boosting from the podcast index. 01:09:27.322 --> 01:09:31.242 Go check it out. And thank you everybody who supports with a boost or a membership. 01:09:31.462 --> 01:09:33.902 Keeps the show going. Coming on Lucky 13. 01:09:34.402 --> 01:09:37.402 How about that boys? That's crazy. So crazy. Wow. 01:09:39.699 --> 01:09:42.639 All right, to make up for last week following the rules and only having one 01:09:42.639 --> 01:09:45.179 pick, we are really breaking the rules. 01:09:45.519 --> 01:09:46.719 It's a blowout. 01:09:46.879 --> 01:09:51.799 It's a pick blowout this week, and both Wes and I came across SSH Route, 01:09:52.059 --> 01:09:56.399 a network-aware SSH router that routes connections to different IPs or ports, 01:09:56.519 --> 01:10:01.579 keys, jump hosts, etc., based on your active VPN or network. 01:10:01.759 --> 01:10:06.939 So if you're moving between networks or VPNs, this is for you. 01:10:06.939 --> 01:10:10.539 It detects your active network or VPN, automatically selects the right host, 01:10:10.639 --> 01:10:12.899 the right port, the right identity file, the right jump host, 01:10:12.999 --> 01:10:18.979 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 You make a few definitions in there, and you're good to go. 01:10:23.039 --> 01:10:27.199 Every connection SSH route detects which network you're on, if it's your office 01:10:27.199 --> 01:10:31.999 LAN, a wire guard peer, a mesh network, and then it resolves the correct SSH 01:10:31.999 --> 01:10:36.619 parameters before handing off to the real SSH binary. Pretty cool. 01:10:36.939 --> 01:10:37.519 That is slick. 01:10:37.519 --> 01:10:41.339 I think this one confused some folks who saw it after it was getting promoted 01:10:41.339 --> 01:10:44.839 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 you don't need, you know? 01:10:46.539 --> 01:10:50.679 Like in a sense of, if you have a sane universe and really well-architected 01:10:50.679 --> 01:10:55.879 networks and like super modern tools and really coherent thought about infrastructure, 01:10:56.019 --> 01:10:57.399 then maybe you don't need something like this. 01:10:57.499 --> 01:11:01.719 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 And you get, like, the main part is you can keep all of this stuff declarative, 01:11:06.079 --> 01:11:09.619 keep it in a yaml file something tells me that would make it pretty easy to 01:11:09.619 --> 01:11:12.699 wrap into a nix os config if you needed to that kind of thing. 01:11:12.699 --> 01:11:17.499 Interesting yeah you know wherever i go i can just ssh into my machines no problem 01:11:17.499 --> 01:11:22.679 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 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 That's me actually i hate creating. 01:11:31.799 --> 01:11:32.279 Yeah well. 01:11:32.279 --> 01:11:33.459 Computers and resumes really. 01:11:33.459 --> 01:11:35.559 Well yeah Who doesn't hate creating resumes? 01:11:36.491 --> 01:11:41.571 I have been actively looking for work. So if anybody has something that seems 01:11:41.571 --> 01:11:43.811 interesting for a Brent, I'm all ears. 01:11:44.371 --> 01:11:48.991 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 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 I wanted to do it programmatically because, come on, I wanted to put that thing 01:11:57.111 --> 01:11:58.731 in Git and keep track of it. 01:11:58.811 --> 01:12:02.331 Different branches for a different job. I'm like, come on. 01:12:03.051 --> 01:12:07.051 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 many, many, many options for this, which is a good thing. 01:12:10.351 --> 01:12:15.211 But the one I ultimately settled on way too late at night was RenderCV. 01:12:16.091 --> 01:12:20.231 This is basically a resume builder. It says for academics and engineers. 01:12:20.431 --> 01:12:23.831 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 your CV, which is quite obvious and super useful. 01:12:26.771 --> 01:12:30.031 It is a JSON. I think it might be JSON. 01:12:30.531 --> 01:12:33.631 So it's relatively easy to edit. 01:12:33.631 --> 01:12:39.671 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 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 You just treat your resume like your infrastructure. 01:12:49.591 --> 01:12:53.731 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 can work with a YAML file, that's all you need. 01:12:56.471 --> 01:12:59.251 Is it YAML? See, I didn't even need to care. It's just text. 01:13:00.111 --> 01:13:03.431 You're technically still right because YAML is a superset of JSON, it turns out. 01:13:03.631 --> 01:13:04.391 Wes. Damn it. 01:13:04.691 --> 01:13:07.671 Thanks Wes. At least someone loves me. That is the worst. 01:13:07.671 --> 01:13:08.771 Well, actually of the episode. 01:13:08.951 --> 01:13:12.731 What I really loved about this approach is, 01:13:12.871 --> 01:13:17.131 of course I mentioned I could track different resumes and different branches 01:13:17.131 --> 01:13:19.571 and keep track of them over time, 01:13:19.691 --> 01:13:25.631 which is what quite obviously useful, but also I can just have a variety of 01:13:25.631 --> 01:13:30.251 different versions that I'm working on concurrently and interface with it the 01:13:30.251 --> 01:13:33.771 way I interfaced with it was basically using my favorite AI tool. 01:13:34.091 --> 01:13:35.511 And that meant that I could, 01:13:37.424 --> 01:13:42.384 I have it check my silly ways of trying to promote myself, 01:13:42.624 --> 01:13:46.764 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 way of talking about myself because I feel this entire process is very uncomfortable for me. 01:13:52.764 --> 01:13:56.564 And so it turned it into more of like an infrastructure project than it did 01:13:56.564 --> 01:14:01.864 me just talking about myself, which was a good way to break into like. 01:14:01.904 --> 01:14:05.984 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 talk about myself in the structure of a Word document in paragraphs. 01:14:09.544 --> 01:14:09.724 Right. 01:14:09.964 --> 01:14:14.524 But for some reason, a structured YAML document that's just like, 01:14:14.704 --> 01:14:16.604 that does make sense because it's just attributes. 01:14:16.904 --> 01:14:21.204 That to me, I could work with, ironically. And it looks like what it produces 01:14:21.204 --> 01:14:23.264 is a pretty good, clean looking resume. 01:14:23.424 --> 01:14:27.604 Oh, yeah. I was really impressed. I was super impressed. So I would highly recommend it. 01:14:27.704 --> 01:14:30.544 You don't necessarily have to use this particular tool. There's a bunch of them 01:14:30.544 --> 01:14:31.624 out there that do different things. 01:14:32.704 --> 01:14:41.564 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 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 time and you could keep those iterations and get if you'd like. 01:14:49.084 --> 01:14:50.924 If you don't you're doing it wrong. 01:14:50.924 --> 01:14:55.324 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 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 information out there right And it did really well. 01:15:01.964 --> 01:15:06.444 I was super impressed. I said, like, make sure you grab some, you know, GitHub. 01:15:08.803 --> 01:15:13.523 Stats because this particular application i was looking at was pretty like git 01:15:13.523 --> 01:15:18.423 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 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 I have nerdy thoughts on this yeah just because i took a 01:15:26.283 --> 01:15:29.003 look because actually i've been working on my own sort of version of 01:15:29.003 --> 01:15:32.163 this before even seeing the render cv existed so i 01:15:32.163 --> 01:15:35.123 really approve of your find here because i i took a look 01:15:35.123 --> 01:15:38.003 into the code and the spirit is great because 01:15:38.003 --> 01:15:40.703 it's purely this like data oriented pipeline as you 01:15:40.703 --> 01:15:45.623 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 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 as well but types is a modern rust based really nice type setting and layout 01:15:56.543 --> 01:15:59.083 engine so that's why the pdfs look so nice as they do. 01:15:59.773 --> 01:16:03.533 Plus, it uses Pydantic, which is a great Python. There's a lot of Python under 01:16:03.533 --> 01:16:07.213 the hood. And Pydantic is a great validation and schema library for Python. 01:16:07.453 --> 01:16:13.413 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 And that tells editors or AI helpers what the schema and the keys are. 01:16:17.993 --> 01:16:21.693 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 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 And then on the backside, and this is something I'm looking at copying or implementing 01:16:30.973 --> 01:16:34.553 my own version of or running at render CV stuff on the side or whatever, 01:16:34.793 --> 01:16:40.313 they have a whole set of tools used to parse the resulting PDF and essentially 01:16:40.313 --> 01:16:44.993 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 of get it back to a YAML-y state, 01:16:47.273 --> 01:16:51.353 which helps if you're going to submit to these automatic systems that look at 01:16:51.353 --> 01:16:54.353 your PDF and do that in their own sort of HR backend system. 01:16:54.353 --> 01:16:55.493 You want to make sure that your 01:16:55.493 --> 01:17:00.093 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 So super professional grade. You don't have to like pick the nerdy fun data 01:17:05.893 --> 01:17:09.433 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 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 And I enjoyed how I could treat it almost like building my next config where 01:17:18.673 --> 01:17:23.093 everything gets, you know, during build time, it tells me if I made any mistakes, 01:17:23.253 --> 01:17:27.253 which I made plenty of, and I got all that fixed up. 01:17:27.413 --> 01:17:30.473 So instead of, you know, exporting a PDF, checking it and be like, 01:17:30.633 --> 01:17:33.213 oh, that didn't work or didn't get formatted the way I wanted, 01:17:33.333 --> 01:17:37.613 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 instead of wasting all my time. 01:17:39.873 --> 01:17:43.133 You know what you could do? Stretch goal. See if your helper can help. 01:17:43.133 --> 01:17:45.833 You could turn it into a totally Nixified build. 01:17:46.013 --> 01:17:49.093 So you did Nix build and you got out a PDF on the other side. 01:17:49.273 --> 01:17:53.153 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 Incredible. 01:17:54.273 --> 01:17:55.073 Stay tuned next week. 01:17:55.413 --> 01:18:02.373 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 But you often hear us referring to these ESP devices. We're loving these things. 01:18:08.061 --> 01:18:09.581 We talk about them more and more on the show. 01:18:09.741 --> 01:18:13.101 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 it to physical hardware. 01:18:14.601 --> 01:18:17.881 But it can be intimidating to start physical hardware projects, 01:18:17.941 --> 01:18:20.681 especially when you don't know anything about where to start. 01:18:21.261 --> 01:18:25.801 This past week, the Open Home Foundation had their State of the Open Home presentation. 01:18:26.321 --> 01:18:30.281 And along with that, they announced the ESP Home Starter Kit. 01:18:30.281 --> 01:18:34.361 It's an official ESPM Home Starter Kit, and they call it the easiest way to 01:18:34.361 --> 01:18:36.121 start building your own smart devices. 01:18:36.341 --> 01:18:39.381 No soldering, no breadboards, no coding experience needed. 01:18:39.621 --> 01:18:43.561 Plug-in modules. They have a visual YAML editor, and you're up and running. 01:18:43.701 --> 01:18:48.581 It integrates with Home Assistant or standalone right away. $39.99. 01:18:49.321 --> 01:18:53.721 The majority of the profit supports the Open Home Foundation and funds future 01:18:53.721 --> 01:18:58.601 ESP Home and Home Assistant and other Open Home Foundation projects. 01:18:58.601 --> 01:18:59.661 This looks fun. 01:18:59.661 --> 01:19:00.521 Yeah, it does. 01:19:00.661 --> 01:19:06.381 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 And it includes in the box, you get enough to actually build something useful with it. 01:19:12.441 --> 01:19:15.661 You get a motion sensor, you get a temperature and humidity sensor. 01:19:15.661 --> 01:19:22.321 You get a 10 X RGB LED board to play around with, with a buzzer module. 01:19:22.641 --> 01:19:23.161 Huh? What's that? 01:19:23.541 --> 01:19:24.361 And a physical button. 01:19:25.685 --> 01:19:29.005 So, I mean, obviously you could use this to control lights, monitor bedroom 01:19:29.005 --> 01:19:32.265 temperature and humidity. You could trigger automations with the physical button module. 01:19:32.485 --> 01:19:35.625 You get audible notifications with the RGB. 01:19:36.165 --> 01:19:42.505 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 And it comes in cool little cases and whatnot, too. And it's $40. 01:19:47.985 --> 01:19:53.565 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 went immediately since it was on the live stream. 01:19:55.685 --> 01:19:59.265 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 that turns into like an ecosystem that keeps getting developed in future models and versions? 01:20:03.565 --> 01:20:08.065 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 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 a third party and they kind of see how it goes. 01:20:13.805 --> 01:20:17.825 And if there's a strong response, I would not be surprised if the foundation 01:20:17.825 --> 01:20:19.685 started doing more starter kits like this. 01:20:20.245 --> 01:20:23.585 Home assistant has gotten to the point that if you if you 01:20:23.585 --> 01:20:26.685 utilize all of their features it's just as easy to get 01:20:26.685 --> 01:20:29.965 something working with home assistant as it would be with home kit or any 01:20:29.965 --> 01:20:33.125 other i mean even to the point of on your phone it'll slide 01:20:33.125 --> 01:20:35.825 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 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 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 to be really exciting because it's also a really you know two three hour saturday 01:20:47.125 --> 01:20:50.845 project could be a really fun thing and a great learning experience too. 01:20:50.965 --> 01:20:55.525 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 Automation and I'll put a link to it in the show notes, of course, 01:21:00.105 --> 01:21:04.045 which you can find those show notes at linuxunplugged.com slash 666. 01:21:05.286 --> 01:21:11.386 No, we definitely want your input on how to shape and do this BSD challenge 01:21:11.386 --> 01:21:14.446 because our hope would be that you participate along with us. 01:21:14.806 --> 01:21:21.086 And we want to kick it off in episode 665 and conclude in episode 666. 01:21:21.846 --> 01:21:25.126 So we've got a couple of weeks to set the ground rules. 01:21:25.206 --> 01:21:29.026 So please go to the contact page or boost in your thoughts on a BSD challenge 01:21:29.026 --> 01:21:32.326 and what you would like to accomplish, what you'd like to see us accomplish. 01:21:32.326 --> 01:21:38.166 Any thoughts on the scoring a level four challenge anything like that please 01:21:38.166 --> 01:21:41.766 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 just around the corner 13 days scary. 01:21:45.466 --> 01:21:48.726 Yeah how's the audio stack on freebsd because uh you know yeah. 01:21:48.726 --> 01:21:50.426 We're gonna end up running oh my god. 01:21:51.206 --> 01:21:52.666 That's whatever you're done. 01:21:52.666 --> 01:21:58.086 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 We're doing it live. 01:22:00.866 --> 01:22:01.786 People. We're doing it live. 01:22:02.886 --> 01:22:05.846 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 a Tuesday on a Sunday at 10 a.m. Pacific, 1 p.m. Eastern. 01:22:13.434 --> 01:22:18.034 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 in your browser or whatever you want. 01:22:20.134 --> 01:22:22.354 VLC on Android? Great for that. 01:22:22.514 --> 01:22:27.554 Great for that. Wes Pano, there are extra levels of detail around the show. 01:22:27.574 --> 01:22:29.094 It's not just an audio podcast. 01:22:29.154 --> 01:22:31.374 You could say there's different types of metadata, even. 01:22:32.014 --> 01:22:38.674 Yeah, that's right. We have lovingly crafted Editor Drew Blast titles in JSON 01:22:38.674 --> 01:22:42.914 format, hosted on the cloud for easy access, dynamic updates. 01:22:43.314 --> 01:22:47.134 Jump right to the content you want, skip the AI section, go right to the stupid 01:22:47.134 --> 01:22:49.754 AI section, whatever you like. We don't care. We don't judge. 01:22:49.754 --> 01:22:50.274 We don't care. 01:22:50.654 --> 01:22:52.674 Just download the MP3 file and we're all good. 01:22:52.974 --> 01:22:53.694 No, I'm kidding. 01:22:54.454 --> 01:22:59.334 But we also then take the wonderful stems that Editor Drew produces and we run 01:22:59.334 --> 01:23:04.714 that through some wizardry to produce diarized transcripts that, you know, 01:23:04.834 --> 01:23:08.834 aren't maybe 100% perfect but are pretty darn good and at least help you furthermore 01:23:08.834 --> 01:23:11.414 find out exactly what we said or jump to the content you want. 01:23:11.514 --> 01:23:15.554 I hope the best transcripts in the business because we feed the thing individualized 01:23:15.554 --> 01:23:17.874 stems of each of our tracks so there's no crosstalk. 01:23:18.154 --> 01:23:22.514 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 Thank you so much for listening to this week's episode of Your Unplugged Program. 01:23:26.774 --> 01:23:29.734 You're welcome to join our virtual lug in Mumble next week. 01:23:29.834 --> 01:23:33.454 And, of course, as we do the BSD Challenge, links to everything we talked about 01:23:33.454 --> 01:23:37.514 today, our contact page, our Mumble info, our matrix info, our membership, all of it. 01:23:38.374 --> 01:23:39.354 LinuxUnplugged.com and a bunch 01:23:39.354 --> 01:23:42.994 of great shows over at jupiterbroadcasting.com. Okay, that's it for us. 01:23:43.074 --> 01:23:46.314 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 Tuesday. And you know when that actually is. That's on a Sunday.
Previous episode Next episode

Related episodes

Search

Search