Skip to main content
LawHub
Search

Speeding Up Mistakes

Feb 22, 2026
Listen to this episode

Planet Nix and SCaLE are just days away, and we're getting a head start with two guests, the tech, and the trends shaping open source. Our trip starts here!

Sponsored By:

Support LINUX Unplugged

Links:

Transcript

WEBVTT 00:00:00.005 --> 00:00:02.965 I just about drank all my Red Bull. Oh, I did drink all my Red Bull. 00:00:03.205 --> 00:00:03.945 Uh-oh. 00:00:04.565 --> 00:00:05.205 Uh-oh. 00:00:05.485 --> 00:00:08.605 Wes brought me a winter iced edition. 00:00:08.745 --> 00:00:09.305 They're pretty nice. 00:00:09.525 --> 00:00:14.345 The iced vanilla berry. It's quite pleasant. It's a nice winter treat. 00:00:14.505 --> 00:00:17.525 Do you think they'll have this in the summer? Because I think it could be refreshing all year round. 00:00:17.585 --> 00:00:20.305 I think you're right. Maybe pour it over a little ice in the summer while you're sitting on the deck. 00:00:20.425 --> 00:00:22.465 I think it could be our drink of choice on the road trip. 00:00:22.845 --> 00:00:24.025 Do you think they'll sponsor us? 00:00:24.945 --> 00:00:28.065 You know, B-Rent's talking about flying into Vancouver and then coming down 00:00:28.065 --> 00:00:32.885 with us in the car to California I support that I know wouldn't that be nice I. 00:00:32.885 --> 00:00:34.985 Know that wasn't plan A, B or C but plan. 00:00:34.985 --> 00:00:39.045 A sounds fabulous boys trip I'll miss the van but it'll be a solid boys trip well I know. 00:00:39.665 --> 00:00:43.945 I know I know if it wasn't like so many mountain passes that are really snowy 00:00:43.945 --> 00:00:46.385 to get there plus like a five day trek. 00:00:46.385 --> 00:00:48.125 I understand of course we. 00:00:48.125 --> 00:00:48.805 Do want you fresh. 00:00:48.805 --> 00:00:53.765 Every Airbnb we booked is only for two people so you will have to sleep in the car but that's fun, 00:01:05.445 --> 00:01:10.285 Hello, friends, and welcome back to your weekly Linux talk show. My name is Chris. 00:01:10.445 --> 00:01:11.065 My name is Wes. 00:01:11.265 --> 00:01:12.205 And my name is Brent. 00:01:12.545 --> 00:01:15.885 Hello, gentlemen. Well, as we prepare to hit the road for Planet Nix, 00:01:15.985 --> 00:01:19.285 we're going to chat with two individuals who have seen some major shifts and 00:01:19.285 --> 00:01:24.325 transition in Linux over the years, and we're going to get their take on where we stand right now. 00:01:24.525 --> 00:01:27.345 Then we're going to round out the show with some great booths and picks and 00:01:27.345 --> 00:01:31.765 a lot more. It's a big episode, so before we get there, we've got to say time-appropriate 00:01:31.765 --> 00:01:34.885 greetings to our virtual lug, which is PJ. Hello, PJ! 00:01:37.124 --> 00:01:39.904 No shade to all the folks up on quiet listening. To be honest with you, 00:01:40.144 --> 00:01:42.764 if I was listening to the show live, that's how I'd be doing it. 00:01:42.904 --> 00:01:43.804 I'd be up there in the quiet listening. 00:01:44.464 --> 00:01:46.904 No risk of accidentally showing up on stream. 00:01:47.184 --> 00:01:49.904 Yeah. That way I can make my fart noises and stuff and it doesn't want it. 00:01:50.184 --> 00:01:52.464 And we get to see it, right? That is true. Everyone else watching, 00:01:52.544 --> 00:01:55.044 it's a little hard to tell. We know you're there, but it's a little hard. 00:01:55.224 --> 00:01:55.624 It's nice for us. 00:01:55.644 --> 00:01:56.424 With Mumble, it's right there. 00:01:56.464 --> 00:02:01.564 It gives it the live vibe. We are live every single Sunday over at jblive.tv. Is that what it is? 00:02:02.024 --> 00:02:02.664 Jblive.tv. 00:02:02.904 --> 00:02:03.144 Is that where you go? 00:02:03.144 --> 00:02:07.164 Or jblive.fm if you just want a tight little HTTP MP3 stream. 00:02:07.264 --> 00:02:08.884 Wes, what if I just want to do it in my podcast app? 00:02:09.144 --> 00:02:09.964 You can do that. 00:02:10.084 --> 00:02:10.364 I can? 00:02:10.504 --> 00:02:15.604 Both live audio and live video if it supports an alternate enclosure. 00:02:15.864 --> 00:02:17.304 Whoa, in the podcast app? 00:02:17.384 --> 00:02:18.964 That's crazy. It's got to be 2.0. 00:02:19.224 --> 00:02:22.484 Okay. Well, let's say good morning to our friends over at Define.net. 00:02:22.584 --> 00:02:27.184 Go to Define.net slash unplugged and meet Manage Nebula from Define Networking. 00:02:27.324 --> 00:02:32.624 It's a decentralized VPN built on the open source Nebula platform that we love. 00:02:33.144 --> 00:02:36.824 And it's optimized for speed, simplicity, and security. 00:02:37.064 --> 00:02:42.324 And unlike the other systems out there, there isn't a central provider or a 00:02:42.324 --> 00:02:44.544 central control plane that can knock you offline. 00:02:44.764 --> 00:02:47.784 In fact, you can build out the network as resilient as you like. 00:02:47.784 --> 00:02:51.804 You can let them manage it entirely. You can have one system to talk into another 00:02:51.804 --> 00:02:55.364 system for backups, or you can have a worldwide enterprise system. 00:02:55.744 --> 00:02:59.584 It's best in class. It's very impressive. It's one of the projects that we have 00:02:59.584 --> 00:03:04.904 followed from the very beginning, and we're super excited to have them on the show because we love it. 00:03:05.004 --> 00:03:08.744 We've been, like, totally dialed into where this thing's going, and we're using it. 00:03:09.124 --> 00:03:12.324 Nebula was built in 2017. That's how long we have been fanboys. 00:03:12.684 --> 00:03:15.964 So go check it out because you can get started, 100 hosts for free, 00:03:16.064 --> 00:03:17.084 no credit card required. 00:03:17.244 --> 00:03:21.944 You go to defined.net slash unplugged, and you deserve a better VPN experience, 00:03:21.944 --> 00:03:25.224 one that you fully control, especially when it's your infrastructure and you're 00:03:25.224 --> 00:03:29.124 going to use it for a while. Defined.net slash Unplugged. 00:03:29.164 --> 00:03:31.624 And thank you to Defined for supporting the Unplugged program, 00:03:31.884 --> 00:03:33.904 our one and only sponsor right now. 00:03:35.990 --> 00:03:40.130 Well, Planet Nix is just one episode away. We will be in studio, 00:03:40.350 --> 00:03:44.390 although I was thinking it would be fun to just hit the road early and do one 00:03:44.390 --> 00:03:45.510 show from- You're right. 00:03:45.730 --> 00:03:46.410 Just to do it. 00:03:46.730 --> 00:03:52.390 Just to do it, but then I think about what a pain in our behind that would be, and I think- No. 00:03:52.470 --> 00:03:53.650 It's a lot more work for no reason. 00:03:53.690 --> 00:03:57.790 We'll just drive harder and faster. So we have one more episode in studio, 00:03:57.990 --> 00:04:02.390 and then we're hitting the road to Pasadena for Planet Nix and, of course, Scale. 00:04:02.890 --> 00:04:06.270 Planet Nix is bringing engineers from Anthropics, Spotify, Microsoft, 00:04:06.650 --> 00:04:12.570 and AWS for just practical getting things done Nix talks, nerd workshops. 00:04:12.850 --> 00:04:16.530 The agenda is live March 5th through the 6th. Check it out. Planet Nix. 00:04:16.730 --> 00:04:17.450 It's going to be amazing. 00:04:18.430 --> 00:04:21.730 Phlox is sending us there. I'm very, very grateful for that because this is 00:04:21.730 --> 00:04:25.150 something that we would have so much FOMO on if we couldn't make it. 00:04:25.150 --> 00:04:26.090 Oh, my gosh. I know. So much. 00:04:26.190 --> 00:04:30.110 It would be so intense. And Phlox is the perfect company to do this. 00:04:30.230 --> 00:04:33.250 They're in the right position. they're trying to make reproducible dev environments 00:04:33.250 --> 00:04:36.230 that are actually usable for everyday folks they're kind of you know in the 00:04:36.230 --> 00:04:38.310 mix here so we're going to have a meetup, 00:04:38.810 --> 00:04:42.630 it's going to be great meetup.com slash jupiter broadcasting the details aren't 00:04:42.630 --> 00:04:46.070 necessarily final there but we will get them locked in we do appreciate if you're 00:04:46.070 --> 00:04:50.970 going to make it if you can sign up because it lets the venue know one more unplugged boys. 00:04:51.470 --> 00:04:52.250 I'm getting nervous. 00:04:52.250 --> 00:04:53.470 Hopefully the weather's great, 00:04:54.516 --> 00:04:55.076 I hope so. 00:04:55.396 --> 00:04:57.556 Why do you say things like that? You're just setting us up. 00:04:57.556 --> 00:04:58.096 I know, right? 00:04:58.236 --> 00:05:01.116 If you can't make it too, we would appreciate any support you can provide. 00:05:01.816 --> 00:05:05.376 A boost or becoming a member would be a big help because the show is running 00:05:05.376 --> 00:05:08.936 hyper lean at the beginning of the year. And these are pretty expensive for us. 00:05:09.136 --> 00:05:12.896 And maybe also let us know what you want to see out of some of our coverage. 00:05:12.976 --> 00:05:15.196 The things you're curious about, stuff we can check in on. 00:05:15.436 --> 00:05:21.136 We're going to be at scale too. And that is the largest Linux event in the Northern American area. 00:05:21.316 --> 00:05:24.316 And so there's a lot there. We will be on the ground. 00:05:24.896 --> 00:05:28.776 We do have a promo code. You can use unpludge, U-N-P-L-G, to sign up and get 00:05:28.776 --> 00:05:30.116 40% off your tickets to scale. 00:05:30.656 --> 00:05:34.496 And if you're nowhere in the area, you're not going, you're just sick and tired 00:05:34.496 --> 00:05:37.296 of us talking about this, the good news is we're almost done. 00:05:37.616 --> 00:05:39.356 And then you won't have to hear us go on about this anymore. 00:05:39.696 --> 00:05:42.116 And we do appreciate your patience. Really, we do. 00:05:47.876 --> 00:05:51.736 Well, we had a chance to sit down with Michael Stonke, the VP of Engineering at Phlox. 00:05:51.736 --> 00:05:54.556 And i did a little of my 00:05:54.556 --> 00:05:58.216 internet stalking before we sat down with michael and 00:05:58.216 --> 00:06:02.576 i discovered that he's been responsible for some projects that we have all used 00:06:02.576 --> 00:06:07.216 and benefited from in one form or another so he joins us now he'll be at planet 00:06:07.216 --> 00:06:11.956 nix in just a couple of weeks as well giving a talk yep giving a talk a good 00:06:11.956 --> 00:06:15.436 talk we'll have that linked in the show notes so let's welcome michael to the program. 00:06:19.172 --> 00:06:23.232 A.K.A. Stonkey, welcome to the Unplugged program. It's great to have you, sir. 00:06:23.972 --> 00:06:27.972 No, thanks for having me. So you are the VP of Engineering at Phlox, 00:06:28.032 --> 00:06:31.012 and I think that is particularly interesting. 00:06:31.152 --> 00:06:34.132 I'm just going to get right into it because this is my bad. 00:06:34.272 --> 00:06:37.792 I didn't realize that you were the co-founder of the extra packages for Enterprise 00:06:37.792 --> 00:06:40.352 Linux back in the day in 2005. 00:06:41.512 --> 00:06:45.912 And now here you are all these days later at Phlox doing Nick stuff. 00:06:46.112 --> 00:06:49.992 Still involved in packaging, turns out. Yeah, I mean, that was kind of how it 00:06:49.992 --> 00:06:52.912 came full circle was when Flux kind of reached out to me. 00:06:53.012 --> 00:06:58.312 I was like, wait, that was me to run a whole business based on packaging? Hell yeah, I'm so in. 00:06:59.912 --> 00:07:03.392 So yeah, I mean, I've loved packaging my entire life. It was just one of the 00:07:03.392 --> 00:07:05.372 coolest things I have ever gotten to do and work on. 00:07:05.512 --> 00:07:08.252 And so why would I not want to keep doing it? 00:07:08.772 --> 00:07:10.632 And, you know, there's different ways, there's different theories, 00:07:10.792 --> 00:07:13.852 but I've packaged for basically every Unix and Linux under the sun. 00:07:14.212 --> 00:07:17.412 And they all have advantages and disadvantages. advantages and nix 00:07:17.412 --> 00:07:20.272 was actually something i had looked at first in i'm 00:07:20.272 --> 00:07:22.952 gonna say 2007 2008 somewhere in there 00:07:22.952 --> 00:07:25.992 and and i just thought okay a bunch of haskell people decided packaging 00:07:25.992 --> 00:07:28.792 just wasn't difficult enough um and they made 00:07:28.792 --> 00:07:33.532 nix and so i kind of dismissed it for a long time and you know obviously kind 00:07:33.532 --> 00:07:35.852 of sitting on the sidelines i saw things mature and stuff like that but i really 00:07:35.852 --> 00:07:38.532 hadn't given it a shot until flox had reached out and i started playing with 00:07:38.532 --> 00:07:42.072 it again i was like oh there's actually a lot here that i really like so yeah 00:07:42.072 --> 00:07:46.612 and looking back on it i would have changed my career completely if I'd have known Nix, 00:07:46.692 --> 00:07:52.072 because some of the work that I was hiring dozens of people to do probably could have been removed. 00:07:52.352 --> 00:07:54.692 Oh, yeah. 00:07:55.252 --> 00:08:00.092 So I guess also for a little bit of background, you spent some real interesting 00:08:00.092 --> 00:08:03.652 time at Puppet during a real key moment in history and CircleCI. 00:08:04.012 --> 00:08:07.992 So that really feels like a very interesting background to now bring to Nix, 00:08:08.072 --> 00:08:14.292 because it's a totally, totally different world and sort of almost a 20-year 00:08:14.292 --> 00:08:17.772 journey to kind of bring you to this point. It still must have been quite the leap, though. 00:08:17.892 --> 00:08:20.892 I have to imagine from that background, going to what you're doing today, 00:08:20.992 --> 00:08:23.212 that must have been a bit of a mental learning process. 00:08:24.930 --> 00:08:28.230 The tech wasn't too bad. I mean, there's, there's new words, 00:08:28.330 --> 00:08:30.670 you know, you hear things like derivation or you hear things, 00:08:30.850 --> 00:08:34.790 you know, like provenance, you know, spoken about so regularly and things like 00:08:34.790 --> 00:08:36.490 that. And like, that's, that's fine. 00:08:37.030 --> 00:08:40.990 And it, but so there was new vocabulary to learn, but most of the principles 00:08:40.990 --> 00:08:44.410 were basically the same, you know, it was like, why do I chatter the immutable 00:08:44.410 --> 00:08:45.530 bit of my distribution server? 00:08:45.690 --> 00:08:48.590 Well, because it should be read only. So you can't ship the same thing with 00:08:48.590 --> 00:08:51.830 the same version with a different shah sum. And it's like, well, 00:08:51.950 --> 00:08:53.730 it just handles that internally. 00:08:54.010 --> 00:08:58.170 Like, you know, so there's a lot of those principles made total sense once I unpacked them. 00:08:58.250 --> 00:09:02.350 And there were other things that didn't make sense and frankly still don't to a lot of degrees. 00:09:03.050 --> 00:09:06.370 You know, there's just choices that are made. I'm like, I have no idea why this 00:09:06.370 --> 00:09:08.750 decision was made or for whom this was made. 00:09:08.870 --> 00:09:13.470 You know, was it made to make one developer's life easier or every user of Nix easier? 00:09:13.630 --> 00:09:17.690 You know, things like that. And I'm, you know, and again, there's just not, 00:09:18.190 --> 00:09:21.310 every technology has these moments. So it's like, this is not unique to Nix. 00:09:21.910 --> 00:09:26.130 Yeah. But, you know, kind of from the puppet world, where we wanted to declare 00:09:26.130 --> 00:09:28.770 the state, we wanted to have, you know, state enforcement and all of that. 00:09:28.910 --> 00:09:33.430 Looking at Nix, you actually end up in a very similar kind of CSE, 00:09:33.450 --> 00:09:37.110 you know, graph theory, I'm going to walk my dependencies kind of mode. 00:09:37.410 --> 00:09:39.970 It's almost the same stuff. It's just applied through a, you know, 00:09:40.070 --> 00:09:42.810 different language lens, different client server models and, 00:09:42.930 --> 00:09:45.350 you know, things like that. So, yeah, maybe you flip it a bit, 00:09:45.430 --> 00:09:47.830 right, where you can the system's working with you instead of sort of having 00:09:47.830 --> 00:09:50.690 to impose item potency from afar after the fact. 00:09:51.665 --> 00:09:55.105 Right, right. It does make me, it does kind of stand out to me that, 00:09:55.265 --> 00:09:59.445 you know, between Apple and Puppet and Circle, like, you've been involved clearly 00:09:59.445 --> 00:10:02.465 with a lot of the different lifecycle in software, not just, 00:10:02.605 --> 00:10:04.545 you know, building a backend service that runs a SaaS. 00:10:04.705 --> 00:10:08.305 It's like actually having to do good builds and get them out there on infrastructure 00:10:08.305 --> 00:10:11.005 and get them configured and running properly on end machines, 00:10:11.005 --> 00:10:14.025 which I think probably connects a bit to Fox's mission, too. 00:10:14.785 --> 00:10:19.185 Yeah, I mean, you know, at Puppet, it was built basically a whole distribution 00:10:19.185 --> 00:10:21.525 of this thing called Puppet Enterprise. that had to run on all these different 00:10:21.525 --> 00:10:24.025 platforms. We're testing on 100 different targets or whatever. 00:10:24.225 --> 00:10:26.825 And so through that testing, we had to build custom CI systems because there 00:10:26.825 --> 00:10:29.585 was nothing off the shelf that did anything that we needed it to do. 00:10:30.405 --> 00:10:33.985 And eventually that's where CircleCI comes in. They see me give presentations 00:10:33.985 --> 00:10:36.405 on the way we build and test Puppet and they're like, we'd love to have you. 00:10:36.505 --> 00:10:39.665 And so I get to go do that, which is super fun because the cost of being wrong 00:10:39.665 --> 00:10:42.385 at Puppet was you had to ship a new version. 00:10:42.585 --> 00:10:44.805 You had to wait for your customer to take it up. And that might be a change 00:10:44.805 --> 00:10:47.825 window that's nine months from now before they even get it installed and all that. 00:10:48.245 --> 00:10:51.225 You go to CircleCI and it's like, Like we can ship literally 85 times. 00:10:52.225 --> 00:10:56.245 And it was just awesome. You know, like that is so cool. And then at Flux, 00:10:56.365 --> 00:10:58.645 there's a little bit of both because it's like a client piece and a server piece. 00:10:58.705 --> 00:11:01.385 And the servers, we can be moving all around and we can be updating and, 00:11:01.405 --> 00:11:04.585 you know, adding new observability capabilities or, you know, whatever all the time. 00:11:05.145 --> 00:11:08.485 And then on the client, we ship it every two weeks and roughly, 00:11:08.705 --> 00:11:11.025 I mean, almost always every two weeks, but every now and then we take a week 00:11:11.025 --> 00:11:13.225 break if it's like a holiday week or we're all at an offsite or something. 00:11:13.445 --> 00:11:17.565 But, you know, and that gives you that client on your computers, 00:11:17.745 --> 00:11:20.725 whether it's, you know, client, server, laptop, whatever, but, 00:11:20.845 --> 00:11:24.365 and, and so it has a little bit of both of those like backgrounds that I really, 00:11:24.385 --> 00:11:25.665 you know, got to, got to work in. 00:11:25.745 --> 00:11:29.485 And so it, I would say, generally, it leverages a lot of my background pretty well. 00:11:30.405 --> 00:11:34.105 So then, okay, where is the gap now for regular enterprise adoption? 00:11:34.265 --> 00:11:38.885 Because you kind of just made a great case, but it still seems a little slow. I mean, it's picking up. 00:11:39.852 --> 00:11:46.252 Yeah, I think that a lot of the friction is, it's like socio-technical, 00:11:46.352 --> 00:11:47.032 it's not just technical. 00:11:47.232 --> 00:11:50.652 And so you have, you know, I think Nix is, it's cool. 00:11:51.432 --> 00:11:54.812 It's, it's, well, the documentation and the getting started guides are still 00:11:54.812 --> 00:11:57.772 a little bit esoteric, or maybe you're like, this one's weird if you're doing 00:11:57.772 --> 00:11:59.252 it in this way versus that way. 00:11:59.252 --> 00:12:02.132 But a lot of companies end up evaluating nicks for 00:12:02.132 --> 00:12:04.792 using it and what we find is there's kind of one person who's the 00:12:04.792 --> 00:12:08.052 champion of the nicks you know experience and if 00:12:08.052 --> 00:12:10.792 that champion is no longer available for whatever reason you 00:12:10.792 --> 00:12:14.512 know they win the lottery they leave they get hit by a bus they are on pto they 00:12:14.512 --> 00:12:20.332 have a baby whatever it is the nicks effort kind of stagnates and then basically 00:12:20.332 --> 00:12:23.112 gets a bad rap because people like oh this nicks stuff no one understands it 00:12:23.112 --> 00:12:26.652 but like we rely on it this sucks it's always broken no one knows how to fix 00:12:26.652 --> 00:12:29.112 it why do i have to learn all this that That doesn't get totally different. 00:12:29.512 --> 00:12:34.632 Yeah, right, right. And so, you know, when Michael, our founder. 00:12:35.732 --> 00:12:38.652 You know, was at D.E. Shaw, which is a giant hedge fund, you know, 00:12:38.692 --> 00:12:41.592 big financial services. Cost being rung there, very high, by the way. 00:12:42.152 --> 00:12:44.192 You know, you're talking millions of dollars a minute at times. 00:12:44.472 --> 00:12:47.932 So, and so for them, they needed a lot of precision, which meant they need to 00:12:47.932 --> 00:12:51.272 know where software came from and everything. And so they found Nix as this build system. 00:12:51.512 --> 00:12:55.452 And he was, this is awesome. My developers can't use this. And so, 00:12:55.592 --> 00:12:58.852 he started working on what are the abstraction layers, what are the patterns, 00:12:58.972 --> 00:13:01.912 what are the workflows that people need, and that was eventually spun out to become Phlox. 00:13:02.092 --> 00:13:05.932 And as we've been developing Phlox, it's been, well, how do we work on team 00:13:05.932 --> 00:13:11.112 collaboration and team usage and team understanding versus kind of that superhuman 00:13:11.112 --> 00:13:14.632 individual that maybe eats, sleeps, and breathes this stuff and sees it more 00:13:14.632 --> 00:13:16.572 religiously than probably pragmatically. 00:13:17.272 --> 00:13:22.792 And I think for us, if you're religious and love Nix about it, cool, that's fine. 00:13:23.659 --> 00:13:26.419 I think a lot of people just want to get their work done and move on and that's 00:13:26.419 --> 00:13:29.119 cool too and so we want to help you do that with these principles that are 00:13:29.119 --> 00:13:32.139 awesome from nix yeah kind of it kind of reminds me of of editors you 00:13:32.139 --> 00:13:34.899 know you could do something where you have a custom neovim setup and it really 00:13:34.899 --> 00:13:38.059 fits you and you've like made it bespoke and it's great and it works really 00:13:38.059 --> 00:13:40.799 well but you can't really onboard someone to that and it's kind of nix is the 00:13:40.799 --> 00:13:44.579 same way right it's a it's a private superpower it's incredible but yeah trying 00:13:44.579 --> 00:13:48.199 to make sure everyone else is on the same page with your particular way of injecting 00:13:48.199 --> 00:13:50.699 the right uh modules different story. 00:13:52.046 --> 00:13:55.086 For us, like, one of the more interesting things I would say about, 00:13:55.086 --> 00:13:59.466 like, Flox right now is we're not just trying to be, like, Nix++ or Nix with a veneer. 00:13:59.646 --> 00:14:02.326 You know, like, there are other capabilities within Flox that are more about 00:14:02.326 --> 00:14:06.526 portability of usage and about acceleration of environments and, 00:14:06.606 --> 00:14:09.506 like, all these kind of environmental things that are, I would say, 00:14:09.566 --> 00:14:12.466 more Flox primitives than, like, Nix primitives at this point. 00:14:12.506 --> 00:14:15.266 And that's really important to us as well because we don't just want to be, 00:14:15.386 --> 00:14:17.366 like, Nix++ because if all you're going to do is make Nix better, 00:14:17.546 --> 00:14:20.086 just go work upstream and make Nix better. Like, that's the right thing to do. 00:14:20.546 --> 00:14:24.566 But we were trying to build it more with a commercial eye toward adoption from, 00:14:24.566 --> 00:14:27.766 you know, businesses that actually want to want to get work done and have a 00:14:27.766 --> 00:14:28.746 build system that's consistent. 00:14:29.086 --> 00:14:31.666 Any of those primitives stand out? I'm just kind of curious. 00:14:31.786 --> 00:14:35.326 I've dabbled with Phlox, but I haven't used it in part of a shipping team yet or anything. 00:14:35.646 --> 00:14:40.166 Yeah, I mean, I think the Phlox environment is kind of the thing that we would say is different. 00:14:40.286 --> 00:14:43.606 You know, in a lot of ways, it resembles a Nix profile, but it's like a Nix 00:14:43.606 --> 00:14:46.606 profile that is a big superset of what a Nix profile can do. 00:14:46.606 --> 00:14:48.826 You know, we have service management within there. 00:14:48.926 --> 00:14:53.246 So you can have developer services kind of into, you know, you could say flock 00:14:53.246 --> 00:14:56.346 services start or flock services status and kind of get, you know, 00:14:56.406 --> 00:14:58.006 I have my Postgres running, I have my Redis running. 00:14:58.166 --> 00:15:01.086 So the second I can clone the thing I'm going to go work on, 00:15:01.266 --> 00:15:03.026 I can just clone, activate, start services. 00:15:03.066 --> 00:15:06.606 And now I've basically got a working developer setup, you know, within moments. 00:15:06.786 --> 00:15:10.546 And then more on the runtime side or, you know, builder side, 00:15:10.706 --> 00:15:13.706 you can build custom packages. You can add them in there. you can activate things 00:15:13.706 --> 00:15:16.886 where you have libraries enabled to compile against or you only have binaries 00:15:16.886 --> 00:15:19.626 in the bin path. It works with ZSH and not just Bash. 00:15:19.786 --> 00:15:23.426 So there's all sorts of enhancements that we've done there but some of them 00:15:23.426 --> 00:15:27.826 are also just not things that a Nix shell sets out to do and that's totally fine. 00:15:29.266 --> 00:15:32.446 For us, we want the Flux environment to be the unit of change. 00:15:32.606 --> 00:15:35.786 It's got history, it's got generations, you can roll back to previous versions 00:15:35.786 --> 00:15:39.186 of it, everything like that so that it's more of an enterprise capability. 00:15:39.786 --> 00:15:43.546 Yeah, that makes a lot a sense of kind of taking some of the ideas in the broader 00:15:43.546 --> 00:15:48.966 ecosystem in ways Nix gets right and maybe applying them to a broader scope of ideas. That's neat. 00:15:49.829 --> 00:15:53.389 Yeah, if you kind of think about like a thing that was a unit of work and all 00:15:53.389 --> 00:15:57.449 the CNCF workflows and, you know, we built all sorts of tooling around it and everything. 00:15:57.609 --> 00:16:00.749 And it's kind of similar like that. And we just we use the Phlox environment. 00:16:00.869 --> 00:16:03.429 It's not to say we can't work with containers, by the way. We totally work with 00:16:03.429 --> 00:16:05.989 containers, but you don't have to. It's optional. Yeah. 00:16:06.709 --> 00:16:09.989 OK, so I want to shift gears and talk a little bit about another gap that I 00:16:09.989 --> 00:16:12.489 think maybe you're bringing up in a talk on Friday. 00:16:13.169 --> 00:16:15.649 So I kind of wanted to get a sense of, oh, I don't have a picture. 00:16:15.649 --> 00:16:17.929 I kind of want to get a sense of what you'll be talking about, 00:16:18.449 --> 00:16:21.509 Nix and AI, are we there yet? 00:16:21.669 --> 00:16:26.489 And then you have a line in here, why aren't more ML teams using Nix? 00:16:27.482 --> 00:16:31.002 Yeah, well, so there's like so many threads to pull on in that topic. 00:16:31.342 --> 00:16:38.162 And I mean, I think part of it is model distribution is, it's expensive and 00:16:38.162 --> 00:16:40.442 it's bespoke to a large degree. 00:16:40.602 --> 00:16:44.582 It's like your home directory has a dot, you know, olama directory or whatever. 00:16:44.922 --> 00:16:47.982 And it's just got gigabytes and gigabytes of stuff in there. 00:16:48.142 --> 00:16:51.782 And if you have another user on the same system, they have this same thing. 00:16:52.282 --> 00:16:54.402 They also have gigabytes and gigabytes of stuff in there. It's just like, 00:16:54.882 --> 00:16:56.982 I mean, just from an efficiency standpoint, it makes me angry. 00:16:56.982 --> 00:17:01.282 But like also is it versioned is it packaged like how do you know what's in 00:17:01.282 --> 00:17:04.262 it where did it come from was it from hugging face was it you know did you get 00:17:04.262 --> 00:17:06.942 it straight from somewhere else did you just go download it off github like 00:17:06.942 --> 00:17:11.042 there's all sorts of needs there for those ai and ml teams and i think you can 00:17:11.042 --> 00:17:13.782 just look at it as well what if they were just packaged and like you know 00:17:14.202 --> 00:17:17.682 they should be read only like those models shouldn't be being written to so 00:17:17.682 --> 00:17:21.522 like a lot of the things that nix does by default you kind of want those those 00:17:21.522 --> 00:17:26.222 those defaults and And so packaging some of that, but also, you know, 00:17:26.342 --> 00:17:27.802 just being able to pass it around and be like, 00:17:27.962 --> 00:17:30.662 you know, we, a lot of those models also don't care what architecture they run on. 00:17:30.742 --> 00:17:33.962 So you don't need like a package specific, like this is on AR64 and this is 00:17:33.962 --> 00:17:37.322 on, you know, PowerPC or whatever. It's like, it's, it's just inputs. 00:17:37.602 --> 00:17:41.182 So not all of them depends on the model exactly, but like, you know, 00:17:41.562 --> 00:17:42.802 there's just different ways of doing that stuff. 00:17:42.822 --> 00:17:46.502 And so I think that's part of it, but also one of my favorite things I've been 00:17:46.502 --> 00:17:50.242 doing since I've worked at Phlox is I have a program that I like to throw and 00:17:50.242 --> 00:17:52.922 say, generating expression to build this program. 00:17:53.842 --> 00:17:58.822 And I'll throw it at an LLM. It's a really, really simple Go program, I'll be honest. 00:17:58.922 --> 00:18:02.882 Like it's maybe got, I don't know, maybe 15 dependencies and like most of those 00:18:02.882 --> 00:18:07.942 are really well-known Go stuff, like nothing esoteric. And when I first did it, 00:18:08.747 --> 00:18:11.767 i'd iterate with chat tpt 30 35 times to 00:18:11.767 --> 00:18:15.407 get a build that worked yeah and it was like crappy and 00:18:15.407 --> 00:18:18.467 like now you know if you pull up like anti-gravity or 00:18:18.467 --> 00:18:21.967 claude or whatever and just be like hey yeah give me a nix expression that 00:18:21.967 --> 00:18:24.907 it one shots it yeah and like that is a huge difference and 00:18:24.907 --> 00:18:27.967 so now when it one shots it's like is this the best nix expression 00:18:27.967 --> 00:18:30.707 i've ever seen no that's right um you know does it 00:18:30.707 --> 00:18:34.067 do everything the way that i would prefer it to be done no but 00:18:34.067 --> 00:18:36.887 does it give me the package it does i'm like that's huge and 00:18:36.887 --> 00:18:39.867 so some of this is you want of look at like evals over time 00:18:39.867 --> 00:18:42.687 and the way that most models are are kind of scored is they 00:18:42.687 --> 00:18:45.367 have these things called formal evaluations and we've never built one of those 00:18:45.367 --> 00:18:48.147 for nicks i just had this program that i've been using for three years and like 00:18:48.147 --> 00:18:50.487 that's what i've been doing that's been my eval and so i'll probably end up 00:18:50.487 --> 00:18:56.347 talking about that i love that yeah that is really okay i'll be there um yeah 00:18:56.347 --> 00:19:00.327 all right so i have i have a question unrelated but i have to ask you before 00:19:00.327 --> 00:19:04.327 we let you go because you know i was doing my due diligence and uh i always 00:19:04.327 --> 00:19:06.707 like to check out a guy's GitHub before he comes on the show. 00:19:07.307 --> 00:19:12.247 And I noticed that you have a project called Mandatory Fun, a repository called 00:19:12.247 --> 00:19:14.367 Mandatory Fun. What's this about? 00:19:15.367 --> 00:19:19.227 So it's basically this idea that I had with a buddy of mine, 00:19:19.307 --> 00:19:24.587 or maybe a couple buddies of mine, that was, we love to make different collaboration software. 00:19:24.887 --> 00:19:27.487 And basically, you can think of it as like shitposting at scale. 00:19:27.747 --> 00:19:32.447 I don't know if I can say that, but I will. You can beep it out, I guess. So, but, 00:19:33.036 --> 00:19:36.396 Like some of it was, we wanted a pipeline where you could shoot your AI generated 00:19:36.396 --> 00:19:39.376 images as fast as you can and it would drop it into a channel in Slack. 00:19:39.556 --> 00:19:44.876 And like, it's just fun that way. Or like we had, you know, like I think a lot 00:19:44.876 --> 00:19:46.336 of my Hubot extensions are in there. 00:19:46.556 --> 00:19:49.836 We have a lot, you know, a lot of like bot related activities in there. 00:19:51.276 --> 00:19:53.616 And then some of the stuff I was also playing with how does a monorepo work? 00:19:53.756 --> 00:19:56.036 Because that is a giant monorepo with several subprojects. 00:19:56.236 --> 00:19:59.056 And honestly, the more that I played with it, the less I like monorepos again. 00:19:59.296 --> 00:20:00.936 I go back and forth every time. 00:20:01.496 --> 00:20:04.216 Just like the industry. Yeah, the grass is always greener where I'm not standing. 00:20:06.896 --> 00:20:10.096 But, I mean, generally, I also have a thing where, like, if you have, 00:20:10.116 --> 00:20:13.036 like, a permanent Zoom meeting and somebody joins, they can throw a webhook 00:20:13.036 --> 00:20:15.016 and, like, notify you through Slack so that you can say, hey, 00:20:15.036 --> 00:20:15.856 somebody's joined the Zoom. 00:20:15.916 --> 00:20:18.416 And so, like, my buddies and I have, like, a standing Zoom. And if somebody's 00:20:18.416 --> 00:20:21.216 there, you get a notification, and you can be like, I have time to join right 00:20:21.216 --> 00:20:22.136 now and say hi or whatever. 00:20:22.356 --> 00:20:27.096 And so it's just stuff like that where it's a bunch of how do you collaborate with your friends? 00:20:27.336 --> 00:20:30.056 And, I mean, not to say that it wouldn't work in a work setting, 00:20:30.096 --> 00:20:33.396 but it certainly wasn't designed that way. And that's why we pulled the name 00:20:33.396 --> 00:20:34.836 Mandatory Fun as just an idea. 00:20:35.156 --> 00:20:39.116 So I think just it's a great it's a great just a great title. 00:20:39.416 --> 00:20:42.036 Mandatory Fun. That's that's always that's always how it works. 00:20:42.156 --> 00:20:47.056 And a nice mix of, you know, right. These sort of collaboration, corporate workflows. 00:20:47.456 --> 00:20:50.836 But yeah, like real people want to do it in a more casual way to get fun stuff done. 00:20:51.536 --> 00:20:53.696 Yeah. Yeah. Well, and there's no rule that says you can't have fun while you're 00:20:53.696 --> 00:20:55.916 working. So I encourage people to do that. 00:20:56.356 --> 00:20:58.196 Well, I think we're going to have a lot of fun at Planet Nix. 00:20:58.336 --> 00:20:59.376 I'm really looking forward to it. 00:20:59.816 --> 00:21:03.616 Yeah, I certainly hope so. you know I think we have we have several hundred 00:21:03.616 --> 00:21:06.056 people registered right now and we usually get about several hundred more during 00:21:06.056 --> 00:21:10.036 the last week so you know it should be should be four or five hundred people which is, 00:21:11.492 --> 00:21:15.832 And there's so much going on this year. It's going to be just like the energy 00:21:15.832 --> 00:21:17.232 there, I think is going to be crazy. 00:21:17.372 --> 00:21:19.812 People are going to be laptops, open building stuff. 00:21:20.312 --> 00:21:25.352 Yeah. We, I mean, we have work areas. We have, you know, kind of workshop tables. We have talks. 00:21:25.652 --> 00:21:27.212 We're going to have stickers. We're going to have giveaways, 00:21:27.392 --> 00:21:29.212 trivias, all sorts of stuff. 00:21:29.952 --> 00:21:31.712 Gosh, we got to get ourselves to California. 00:21:34.272 --> 00:21:37.332 Mike, thank you for coming on and chatting with us. And I look forward to seeing 00:21:37.332 --> 00:21:41.032 you in California in just a few days. All right. Well, thank you so much. Thank you, sir. 00:21:44.312 --> 00:21:47.772 Well, if you would like to support this here production, you can do so directly, 00:21:47.872 --> 00:21:49.912 linuxunplugged.com slash membership, 00:21:50.192 --> 00:21:53.952 and you get access to the bootleg feed, which is nice and long. 00:21:54.492 --> 00:21:58.112 Or you can get the ad-free, which is tight and, you know, great, 00:21:58.212 --> 00:22:00.572 I guess. It's still got Drew's touches, which is really the best part. 00:22:00.732 --> 00:22:04.112 Yeah, you get it clean, super well-produced, well-mastered. 00:22:04.352 --> 00:22:07.992 You get all the shows, ad-free and bootleg, at jupyter.party if you want to 00:22:07.992 --> 00:22:10.632 support the whole network and help us get down to scale. 00:22:10.772 --> 00:22:15.572 And, of course, you can send us a boost to get us down there as well. Appreciate that. 00:22:18.923 --> 00:22:22.143 Well, Kelsey Hightower is back. He joined us about a year ago. 00:22:22.203 --> 00:22:25.843 He's a software engineer who calls himself retired, although for somebody who's 00:22:25.843 --> 00:22:30.043 retired, he still works quite a bit. He hits the speaker scene a lot. 00:22:30.263 --> 00:22:34.003 He is known renownedly for his Kubernetes work, open source advocacy, 00:22:34.563 --> 00:22:36.643 really an insightful speaker. 00:22:36.883 --> 00:22:40.143 And he's going to be joining us at Planet Nix, but we had a chance to sit down 00:22:40.143 --> 00:22:42.123 and talk with him before Planet Nix. 00:22:45.063 --> 00:22:49.703 Kelsey welcome back to the unplugged program and happy pre-planet nix to you. 00:22:49.703 --> 00:22:51.723 Oh happy to be here you guys have 00:22:51.723 --> 00:22:55.443 that whole broadcast studio i'm glad i broke out the re20 today like i. 00:22:55.443 --> 00:22:56.163 Was literally gonna. 00:22:56.163 --> 00:22:57.183 Go pure ipods. 00:22:57.183 --> 00:22:58.583 Oh my. 00:22:58.583 --> 00:23:00.443 God now now i understand why i. 00:23:00.443 --> 00:23:00.683 Got the. 00:23:00.683 --> 00:23:01.583 Mixed pre out for you all. 00:23:01.583 --> 00:23:04.483 You fit in you look good right yeah we got the same leg yeah 00:23:04.483 --> 00:23:07.423 we appreciate it so the last time we talked it was 00:23:07.423 --> 00:23:10.523 just before planet nix and of course we saw you at planet nix last year um 00:23:10.523 --> 00:23:13.763 but it feels like since then there has 00:23:13.763 --> 00:23:17.083 been a just next level 00:23:17.083 --> 00:23:19.943 of i'm trying not to use the word hype kelsey but 00:23:19.943 --> 00:23:22.923 it's all i can think of hype around ai system 00:23:22.923 --> 00:23:28.063 management agentic development and management of systems and it strikes me you 00:23:28.063 --> 00:23:31.543 made a really i think keen observation in an interview you had with jet brains 00:23:31.543 --> 00:23:36.543 back in december and you said that you spent your whole career trying to make 00:23:36.543 --> 00:23:40.003 these systems as determinate as possible, right? 00:23:40.083 --> 00:23:43.023 To know exactly what they're going to produce every single time. 00:23:43.723 --> 00:23:49.463 And this is, in this last year or two, it's kind of flipping that on its head a little bit. 00:23:49.543 --> 00:23:52.523 And I wanted to know if you could expand on that comment you made in that JetBrains 00:23:52.523 --> 00:23:53.843 interview, because I thought that was pretty insightful. 00:23:54.423 --> 00:23:57.403 Yeah, I think for a lot of people who have been doing either software development, 00:23:57.623 --> 00:24:04.423 IT operations, even the lights in your home, When you push the button to turn 00:24:04.423 --> 00:24:06.383 the lights off, you want the lights to turn off. 00:24:06.923 --> 00:24:09.903 You don't want to push the button and the lights like, I'm thinking about turning 00:24:09.903 --> 00:24:13.223 off your lights, but given that you haven't eaten dinner yet, 00:24:13.443 --> 00:24:14.823 I'm going to keep the lights on. 00:24:15.625 --> 00:24:20.325 Like, that's not what you're expecting. We expect these systems to be deterministic. 00:24:20.445 --> 00:24:22.225 So these are machines first and foremost. 00:24:22.705 --> 00:24:27.065 And when we build machines, we kind of want them to do exactly what they're 00:24:27.065 --> 00:24:29.745 designed to do. Light switch on, light switch off. 00:24:29.985 --> 00:24:33.625 And so when you turn that into the software world, anytime we get behavior that 00:24:33.625 --> 00:24:38.845 we ourselves didn't intentionally design, we call those bugs or defects or security 00:24:38.845 --> 00:24:40.565 vulnerabilities if they're ever exploited. 00:24:41.005 --> 00:24:44.465 And so we've been spending the last, I don't know, couple of decades trying 00:24:44.465 --> 00:24:48.405 to build reproducible software, deterministic software, right? 00:24:48.445 --> 00:24:49.785 We want these things to be predictable. 00:24:50.085 --> 00:24:54.885 So then we can make promises. Like we have SLA as a whole discipline around 00:24:54.885 --> 00:24:58.485 observability is saying that if this thing doesn't do what it's supposed to 00:24:58.485 --> 00:25:00.665 do, then we have a problem. 00:25:01.005 --> 00:25:05.425 And so what you get with an LLM, so let's say you take away some of the deterministic 00:25:05.425 --> 00:25:11.885 work. So to me, the value of an LLM is just somewhat of a human persona that 00:25:11.885 --> 00:25:13.285 we can lay on top of these systems. 00:25:13.505 --> 00:25:15.945 So instead of just telling people what the temperature is today, 00:25:16.205 --> 00:25:20.865 maybe this thing can say it in a very polite way or maybe in a kind way. 00:25:21.005 --> 00:25:23.305 It's like, oh, that was a fun interaction. 00:25:23.805 --> 00:25:28.205 But it also does another thing that I remember for the first time when I wrote a regular expression. 00:25:29.056 --> 00:25:33.536 I want to write a regular expression to filter out all the email addresses. 00:25:33.956 --> 00:25:38.776 And so you craft this like you think is the best regular expression in the world. 00:25:39.176 --> 00:25:43.636 And then you find out that it's not actually capturing all the email addresses. 00:25:44.056 --> 00:25:47.436 Because either A, you didn't understand what's a valid email address, 00:25:47.536 --> 00:25:49.436 or it's a really hard problem to solve. 00:25:49.936 --> 00:25:54.336 And so now, what was the saying back then? If you use regular expressions to 00:25:54.336 --> 00:25:56.056 solve a problem, now you have two problems. 00:25:56.056 --> 00:25:56.596 Exactly. 00:25:57.296 --> 00:26:00.236 And so I think the regular expression was the first time I think a lot of us 00:26:00.236 --> 00:26:02.736 have ran into something that just looking at the regular expression, 00:26:02.976 --> 00:26:05.456 you can't really tell what it's going to do. 00:26:05.696 --> 00:26:09.356 But there's a lot of power in this kind of Swiss army knife approach. 00:26:09.536 --> 00:26:14.176 And LLM can say, look, maybe you didn't write your software to create XML output 00:26:14.176 --> 00:26:17.036 and JSON output and YAML output. 00:26:17.456 --> 00:26:21.936 If you just code the data structure, you now have this universal tool that can 00:26:21.936 --> 00:26:23.696 convert between these different formats, 00:26:23.956 --> 00:26:29.896 making a JPEG or an MPEG or a PDF out of an invoice, that is an amazing capability 00:26:29.896 --> 00:26:35.516 that is in some ways subjective on how to format a PDF from an HTML doc. 00:26:35.816 --> 00:26:40.236 And so the LLM allows you to do all of that. So I understand why people are super excited. 00:26:40.656 --> 00:26:44.256 But at the same time, though, then we see ourselves now with the flexibility, 00:26:44.556 --> 00:26:50.476 building a bunch of guardrails to make sure that it doesn't generate something 00:26:50.476 --> 00:26:52.276 that's out of bounds from our expectations. 00:26:52.276 --> 00:26:56.476 So that's kind of what I meant by we spent our whole careers making these deterministic, 00:26:56.616 --> 00:27:00.196 predictable systems, and now we're letting them a little bit more loose. 00:27:00.336 --> 00:27:02.836 And then we're all like crossing our fingers that they don't turn off the Internet. 00:27:03.396 --> 00:27:06.776 It does surprise me. And we're kind of rushing into it, too, in a way. 00:27:06.996 --> 00:27:10.496 You touched on some of the like how it can manipulate outputs or transform data 00:27:10.496 --> 00:27:13.876 or maybe, you know, shuffle things on a pipeline or between deterministic tools. 00:27:14.056 --> 00:27:18.996 And I've also heard you touch on maybe thinking of AI as a like a surface level 00:27:18.996 --> 00:27:20.956 interface. I wonder if you could maybe expand on that. 00:27:20.956 --> 00:27:24.436 So this part I think is very important. If you just take a timeout, 00:27:24.616 --> 00:27:27.976 you don't want to bash the technology. We don't even have to take a position 00:27:27.976 --> 00:27:29.116 on whether it's helpful or not. 00:27:30.000 --> 00:27:34.080 But the reality is the CPU architecture is the same. 00:27:34.680 --> 00:27:39.060 The programming languages are the same. So that means the things that you could 00:27:39.060 --> 00:27:42.640 do, you could have always done given these particular tools. 00:27:42.860 --> 00:27:47.380 And for me, that takes the magic out of all of this. So then if you use an LLM 00:27:47.380 --> 00:27:49.720 to write code, what is the LLM doing? 00:27:50.000 --> 00:27:54.280 Well, the LLM is producing syntax in the way that you would have produced syntax. 00:27:54.540 --> 00:27:59.360 So that means it sits at the surface, Meaning what it outputs is still targeting 00:27:59.360 --> 00:28:02.980 the same output you would have done, which is also at the surface. 00:28:03.380 --> 00:28:06.980 Now, what would a below-the-surface technology look like? 00:28:07.180 --> 00:28:10.460 It would look like, let's just bypass Golang and the JVM. 00:28:10.520 --> 00:28:16.000 Let's go straight to assembly, right? Let's just go and program the logic gates directly. 00:28:16.500 --> 00:28:19.800 And that's not really what most people are doing. Most people are literally 00:28:19.800 --> 00:28:24.160 just providing themselves with a better user experience. And I'll give you another 00:28:24.160 --> 00:28:26.800 example, which is, I think, more applicable to the average person. 00:28:27.620 --> 00:28:33.980 If you ask an LLM to give me a summary of this particular document or in my 00:28:33.980 --> 00:28:37.980 database, the customer that spent the most money in June of last year. 00:28:38.480 --> 00:28:42.580 Now, you could have done that with SQL, but SQL is very cumbersome. 00:28:42.660 --> 00:28:44.580 It's very strict. You have to know the dialect. 00:28:44.840 --> 00:28:48.320 And sometimes the SQL is very far away from your intent. 00:28:48.320 --> 00:28:53.980 And so the ability just to make that one statement and then have the LLM at 00:28:53.980 --> 00:28:59.680 the surface translate that into the correct SQL query and then return a response, 00:28:59.960 --> 00:29:04.380 that is the perfect level of abstraction for what most people want to do, 00:29:04.500 --> 00:29:09.400 which makes it highly effective on being able to interface to lots of existing systems. 00:29:09.400 --> 00:29:14.520 And I think this is why LLMs in some ways are deserving of some of the hype 00:29:14.520 --> 00:29:19.200 and the attention that they're getting because they can be very useful in many domains. 00:29:20.693 --> 00:29:26.173 So I wonder with this established and your thoughts on going from very deterministic 00:29:26.173 --> 00:29:30.993 systems to sort of not so deterministic, you don't really always know what you're going to get. 00:29:31.453 --> 00:29:36.173 Is there a layer here at the environment level to kind of manage this? 00:29:36.273 --> 00:29:39.373 Is this an area where you think maybe particularly NICS could have some strengths? 00:29:39.773 --> 00:29:43.733 Curious on your thoughts on almost solving it from a different direction in this instance. 00:29:44.473 --> 00:29:47.613 So we were to talk about NICS in particular. So what does NICS represent? 00:29:48.193 --> 00:29:53.633 Below the surface, Nix has tried to work really hard to give you at least a reproducible outcome. 00:29:54.413 --> 00:29:58.253 If your app that you're building requires a specific set of libraries, 00:29:59.193 --> 00:30:04.193 we've tried for a long time to get away with semantic versioning, like this is 1.1.2. 00:30:05.113 --> 00:30:08.793 But it turns out those are just suggestions, right? Nothing stops a developer 00:30:08.793 --> 00:30:12.993 from re-releasing 1.1.2 that does something totally different. 00:30:13.073 --> 00:30:15.133 Your version of a miner is not mine. 00:30:15.273 --> 00:30:21.133 Right? Exactly. So in that world, it's almost like, ah, you can't really trust these labels. 00:30:21.293 --> 00:30:26.033 So I think what Nix does really good is it says, look, let's just turn our file 00:30:26.033 --> 00:30:29.273 system into a data store and, you know, make these things predictable. 00:30:29.473 --> 00:30:32.433 Sometimes you need a different version of Ruby on the same system. 00:30:32.873 --> 00:30:35.993 And the fact that it acknowledges that and leans into that and just gives us 00:30:35.993 --> 00:30:38.253 a tool to deal with that kind of complexity. 00:30:38.713 --> 00:30:43.153 So we take that diamond problem and we just try to give it an honest solution. 00:30:43.693 --> 00:30:47.093 These are the things you depend on. Here's the things that make it work. 00:30:47.233 --> 00:30:50.293 And just give you a way to articulate that, express that, discover that. 00:30:50.613 --> 00:30:54.793 And so if you think about it from the AI perspective, then what you have is guardrails. 00:30:55.533 --> 00:30:58.733 So if you want to express a build, if you want to express output, 00:30:59.293 --> 00:31:02.573 what you have now is at least a framework where you're not starting from scratch 00:31:02.573 --> 00:31:06.453 and say, hey, at the surface, I would like you to build my application. 00:31:06.833 --> 00:31:11.093 Well, if you were to target maybe the next ecosystem, you get something super 00:31:11.093 --> 00:31:14.453 reproducible. And I always like to think about the quality of these tools as 00:31:14.453 --> 00:31:17.573 if I were to remove the LLM, what am I left with? 00:31:18.645 --> 00:31:21.765 And I think you're left with something that's still usable, even if you chose 00:31:21.765 --> 00:31:25.545 not to use an LLM again, maybe downstream, your build system, 00:31:25.865 --> 00:31:28.245 your deployment systems, generating S-bombs. 00:31:28.405 --> 00:31:32.145 Those things can be done without the magic of AI and all of its complexities, 00:31:32.145 --> 00:31:35.685 because you've kind of targeted something that's going to be a little bit more 00:31:35.685 --> 00:31:37.285 strict and domain driven. 00:31:37.425 --> 00:31:40.865 So that's where I see tools like Nextill having a ton of value. 00:31:41.025 --> 00:31:44.445 And this is why I think the explosion of things like skills and MCP, 00:31:44.625 --> 00:31:48.185 where you can just say, hey, let's not invent package management or build systems. 00:31:48.705 --> 00:31:51.565 Let's just teach these tools how to leverage them. 00:31:51.825 --> 00:31:54.465 Something else I saw you talking about recently with our other guest today, 00:31:54.645 --> 00:31:59.465 Michael Stonke from Phlox, is you're looking back at the original Borg paper 00:31:59.465 --> 00:32:03.305 and kind of pointing out that, you know, they weren't really using Docker for 00:32:03.305 --> 00:32:05.425 Borg, even though Kubernetes these days does, right? 00:32:05.465 --> 00:32:09.745 They were using a package manager that turns out kind of shared a lot of properties with Nix. 00:32:09.785 --> 00:32:11.945 And you've been also making the point, which I really like that, 00:32:12.605 --> 00:32:16.425 you know, okay, I can do this stuff at the surface, but if we haven't necessarily 00:32:16.425 --> 00:32:20.125 mastered 20-year-old tech, from Nix to just a lot of other things, 00:32:20.345 --> 00:32:22.365 like maybe we need to be looking at that too. 00:32:23.665 --> 00:32:27.125 You make it a really important point. I mean, I have this thing now where I 00:32:27.125 --> 00:32:30.245 just try to take all my technology offline from like eight to eight. 00:32:31.505 --> 00:32:35.925 12 hours of uncomputer-assisted thinking. 00:32:37.065 --> 00:32:40.965 And so those are the shower thoughts, the prep time before you go to bed, 00:32:41.185 --> 00:32:42.045 you know, while you're cleaning. 00:32:42.565 --> 00:32:46.745 And I thought about it. It's like, you know, most companies have struggled with 00:32:46.745 --> 00:32:48.305 even deciding what to build. 00:32:50.001 --> 00:32:54.121 And a lot of times when you ship something, you can't just go take it back. 00:32:55.041 --> 00:32:58.821 And the part where you say, hey, now AI lets us move 10 times faster. 00:32:59.681 --> 00:33:05.861 Sometimes I hear 10 times more tech debt, 10 times more bugs, 00:33:06.721 --> 00:33:09.841 10 times more things you shouldn't have shipped in the first place. 00:33:10.861 --> 00:33:14.941 And so when I think about our ability to understand what's available in our 00:33:14.941 --> 00:33:17.281 tool, I'm looking at, I'm staring at a collection of tools. 00:33:18.501 --> 00:33:22.281 And a lot of times, I think people never really understood the core decision 00:33:22.281 --> 00:33:23.381 that happened with Docker. 00:33:23.841 --> 00:33:25.881 Docker comes after decades of 00:33:25.881 --> 00:33:32.401 decisions around trying to reinvent package managers, RPM, Debian files. 00:33:32.601 --> 00:33:35.681 It's just so many of them, Jim, and they're all kind of solving the same problem. 00:33:36.141 --> 00:33:40.121 There is nothing you can do with one programming language on its own. 00:33:40.301 --> 00:33:44.441 At some point, you're going to have a form function interface to some C library, 00:33:45.041 --> 00:33:47.421 SQLite, LibC. It's just something's going to happen. 00:33:47.701 --> 00:33:52.121 And we all try to pretend that that wasn't real or that Debian and RPM could get us there. 00:33:52.321 --> 00:33:56.761 And so we just kept rebuilding these package managers trying to solve problems we've created. 00:33:57.281 --> 00:33:59.241 Docker is born from that world. 00:34:00.295 --> 00:34:04.055 Docker just says, well, if that's what it's going to be, let us just let you 00:34:04.055 --> 00:34:06.815 keep doing that. And look, it was fun. 00:34:07.075 --> 00:34:11.615 It did speed things up. But in many ways, it sped up the mistakes. 00:34:12.015 --> 00:34:15.815 There are now far more things to scan than before. 00:34:16.075 --> 00:34:20.455 So before we were scanning servers and VMs. Now we're scanning apps. 00:34:20.655 --> 00:34:22.695 We're literally scanning apps for OS vulnerabilities. 00:34:23.315 --> 00:34:27.095 We're scanning apps for all of these things that now are getting packaged because 00:34:27.095 --> 00:34:29.475 we're still doing the same mentality as before. 00:34:30.315 --> 00:34:33.795 I think if you rewind the clock back 20 years and say, hey, what's the real 00:34:33.795 --> 00:34:37.595 problem? The real problem is we don't really even know what our dependencies are. 00:34:38.515 --> 00:34:41.595 The real problem, we don't even know what we're linking out to these days. 00:34:42.395 --> 00:34:46.095 And the vendoring approach, it just kind of created a mess. So that original 00:34:46.095 --> 00:34:47.975 Borg paper was like, you know what? 00:34:48.215 --> 00:34:50.935 The best way to think about software is in a holistic way. 00:34:51.375 --> 00:34:55.115 You can't think about the Ruby ecosystem independently of the C ecosystem. 00:34:55.555 --> 00:34:59.295 And so what you do is you just say at some point, this is just how computers work. 00:34:59.475 --> 00:35:03.675 Apps will start, and then they will reach out across the file system loading 00:35:03.675 --> 00:35:05.555 things that they need in order to run. 00:35:06.315 --> 00:35:12.115 So that NPM package is much closer to the NICS philosophy around intentionality 00:35:12.115 --> 00:35:16.235 around what's on your machines, intentionality around what we link to, 00:35:16.355 --> 00:35:18.795 and then you manage the system from that regard. 00:35:18.955 --> 00:35:22.555 And then I think it's a little easier to think about secure software supply 00:35:22.555 --> 00:35:28.355 chains, but you need to know what the software supply is before you can secure it. 00:35:28.875 --> 00:35:30.395 And so I think it's just thinking of what we're dealing with. 00:35:30.495 --> 00:35:34.375 And again, and I said this at the Nix event, there's nothing stopping someone 00:35:34.375 --> 00:35:38.695 from saying, hey, Docker is a really awesome way to package and distribute things. 00:35:39.275 --> 00:35:43.475 What if I was using Nix inside of a Docker image? So I still get the portability. 00:35:43.735 --> 00:35:48.395 I still get access to things like Heroku and, you know, Lambda and all of these 00:35:48.395 --> 00:35:49.815 container only platforms. 00:35:50.195 --> 00:35:53.415 But that container image, when combined with intentionality, 00:35:53.655 --> 00:35:57.495 I do think gets us there much faster than starting over from scratch. 00:35:58.927 --> 00:36:02.767 Well said. Kelsey, I'm really looking forward to Planet Nix and your talk. 00:36:03.627 --> 00:36:07.227 First up, first up, you and Ron, and we're going to be there. 00:36:07.227 --> 00:36:07.667 I think you mean chat. 00:36:07.967 --> 00:36:11.527 Chat, right. It's going to be a chat. Thank you so much for taking a little 00:36:11.527 --> 00:36:15.087 bit of time and joining us on a Sunday to talk about this and get us in the 00:36:15.087 --> 00:36:18.987 mood and the mindset for Planet Nix. I hope we get a chance to talk at the event, too. 00:36:19.547 --> 00:36:20.767 I'll be around. Thanks for having me. 00:36:20.927 --> 00:36:21.527 Yeah, thanks, Kelsey. 00:36:26.667 --> 00:36:32.647 And now it is time for le boost we have a row of grandpa ducks 22 000. 00:36:34.350 --> 00:36:35.290 You said it. I had to do it. 00:36:37.850 --> 00:36:41.370 Starting us off, we've got a row of, what are these, Grandpa Ducks? 00:36:41.530 --> 00:36:47.250 22,222 Satoshis from Chuck Runamuck. 00:36:49.570 --> 00:36:52.710 Chuck says, how are you now? Good? 00:36:52.870 --> 00:36:54.950 Hey, how are you? Fine, and you? 00:36:56.270 --> 00:37:02.010 I was building a new VM server the other day. What's your go-to remote desktop app? 00:37:02.370 --> 00:37:06.330 It used to be VNC for me. I use it all through my corporate career. 00:37:06.490 --> 00:37:09.410 Then X2Go was the new hotness for a while. 00:37:09.690 --> 00:37:16.270 That got janky, though, so I switched to No Machine, which I think is the proprietary mother of X2Go. 00:37:16.570 --> 00:37:19.030 What do you use now to connect to your headless desktops? 00:37:19.310 --> 00:37:26.290 You mean besides my psychic intuition? I got to give a shout-out for my old buddy KRDC. 00:37:26.790 --> 00:37:28.310 Are you guys familiar with this one, KRDC? 00:37:28.550 --> 00:37:30.110 Yeah, I haven't used it in a minute. 00:37:31.030 --> 00:37:34.530 It's nice. You can get them all on there in a list. It'll still do RDP. It'll do VNC. 00:37:35.470 --> 00:37:39.770 It'll do what you need. A lot of days, people are using themselves some kind 00:37:39.770 --> 00:37:41.710 of VM that has a web interface as well. 00:37:41.790 --> 00:37:44.810 So you've got yourself like a cockpit option if you're going with your natives 00:37:44.810 --> 00:37:49.070 or, you know, the Proxmox type thing where you get yourself a console interface. 00:37:50.210 --> 00:37:54.030 That's pretty popular. Right? Is that good? You think that's good? You got any? You have it? 00:37:54.430 --> 00:38:00.110 In a different flavor, you know, we've used Rust Desk quite a lot to do remote 00:38:00.110 --> 00:38:03.330 access. It's not quite, you know, for a virtual machine necessarily, 00:38:03.330 --> 00:38:07.330 but that can work in a pinch if you need to do that kind of thing. 00:38:07.810 --> 00:38:10.790 Yeah, I still like Rustisk. And they've updated for Wayland quite a while ago 00:38:10.790 --> 00:38:12.050 now, so that's been working, which is really good. 00:38:12.130 --> 00:38:15.010 And we've seen a lot of Wayland improvement generally, I think, 00:38:15.050 --> 00:38:19.470 in terms of remote desktop, both like in GNOME and Plasma, but more broadly, too. 00:38:20.410 --> 00:38:25.370 Well, thank you, Mr. Runamuck. We appreciate you. Distro Stu's here with Spaceballs 00:38:25.370 --> 00:38:27.650 Boost. That's 1, 2, 3, 4, 5 sats. 00:38:32.506 --> 00:38:36.946 Chris, you mentioned Uptime Kuma in your network setup. I've been using Gatis, 00:38:37.046 --> 00:38:42.086 which is similar, but has a declarative config for endpoint monitors. 00:38:42.586 --> 00:38:45.426 Here you go. Here's my Nix setup. It links me to that. Side note, 00:38:45.686 --> 00:38:48.366 I set the service up to debug some networking issues. 00:38:48.786 --> 00:38:54.406 Turned out my switch by switching my router to OpenSense to Nix was the solution. Hey, we've been there. 00:38:54.586 --> 00:38:55.106 Very nice. 00:38:55.566 --> 00:39:00.246 You know what? Honestly, Linux makes a great router. Why do you think all these 00:39:00.246 --> 00:39:01.526 embedded systems are based on Linux? 00:39:01.526 --> 00:39:04.766 Especially, right, you're not trying to push, like, tens of gigabits per second 00:39:04.766 --> 00:39:07.026 where you need some, like, hardware offload or something in, 00:39:07.026 --> 00:39:08.306 like, an enterprise use case. 00:39:08.446 --> 00:39:11.806 Like, you just have a gigabit or something. Like, modern Linux will be fine. 00:39:12.966 --> 00:39:15.306 More than fine. It'll be fantastic. 00:39:16.206 --> 00:39:18.466 And so Nick's boosts in with 5,000 cents. 00:39:20.561 --> 00:39:24.901 I'm glad to hear you're doubling down on Matrix. You had me going for a moment there, Chris. 00:39:25.181 --> 00:39:29.461 I thought you were going to announce a switch to Discord. You might have thought that too. 00:39:29.641 --> 00:39:30.041 Yeah, I did. 00:39:30.401 --> 00:39:33.661 It does make me wonder though, why don't you just use Mattermost? 00:39:33.761 --> 00:39:37.841 After the glowing review in the previous episode, is it not a better, more stable fit? 00:39:38.221 --> 00:39:42.161 You could even use your AI minions to set up a separate instance for the community. 00:39:43.361 --> 00:39:47.641 Mattermost has sort of a Slack vibe. It doesn't really seem to be the right 00:39:47.641 --> 00:39:50.081 tool for the job. Do you have that impression as well? It's a good tool. 00:39:50.081 --> 00:39:54.341 Yeah, I think maybe for some communities, you know, I've seen some folks kind of do that where... 00:39:54.341 --> 00:39:55.541 Well, you use Slack for some communities. 00:39:55.561 --> 00:39:58.881 Right, yes, exactly. But I think for the style we're going for, 00:39:59.061 --> 00:40:01.981 especially with the amount of, like, self-hosting, interop, like, 00:40:02.061 --> 00:40:04.421 something like Matrix and the Federation and the ability for other, 00:40:04.421 --> 00:40:06.801 you know, people to run their own servers or use ours or, like, 00:40:06.961 --> 00:40:10.501 another community one and be able to all connect together is pretty killer. 00:40:11.381 --> 00:40:15.141 You know, there are maybe other options. XMPP, we used IRC for a long time, 00:40:15.221 --> 00:40:18.001 but those had at least closer to some of that. 00:40:18.661 --> 00:40:22.701 You know, I'm surprised XMPP hasn't come up more recently with the discussions 00:40:22.701 --> 00:40:24.961 of agents and agent-to-agent communication. 00:40:25.041 --> 00:40:28.061 Seems like XMPP should be getting a little bit more love than it is. 00:40:28.781 --> 00:40:32.261 Yeah, I think, don't you think, Brent, the federating aspect is pretty big for us? 00:40:32.621 --> 00:40:35.861 I think it's big and it's also quite fun. Like, as an audience member, 00:40:36.001 --> 00:40:39.621 to have your servers federated to other audience members and the studio, 00:40:39.761 --> 00:40:43.001 it's just a really fun networking paradigm. 00:40:43.381 --> 00:40:50.141 I'm going to say paradigm. mm-hmm well kiwi bitcoin guide boosted in 2500 satoshis, 00:40:52.368 --> 00:40:58.008 I got an OpenClaw question. What are the pros and cons of self-hosting OpenClaw 00:40:58.008 --> 00:40:59.448 on a server in a homeland? 00:40:59.848 --> 00:41:04.148 After looking at my options, I thought I'd try hosting the agent on a Pi at home. 00:41:04.308 --> 00:41:09.348 But a friend pointed out malware and security vulnerabilities and suggested a VPS instead. 00:41:09.868 --> 00:41:14.688 What would you suggest? And can you recommend a good VPS service suitable for this particular task? 00:41:14.888 --> 00:41:17.408 We've sort of been debating this very question behind the scenes. 00:41:18.028 --> 00:41:23.168 It depends a lot on what you task it to do and what you allow it to do and are 00:41:23.168 --> 00:41:26.008 hoping that it does and what it can reach out to. 00:41:26.668 --> 00:41:30.508 Like on the VBS side, a lot could be suitable because it depends on your workload. 00:41:30.948 --> 00:41:34.048 You know, especially if you're using a LLM provider that's not you, 00:41:34.368 --> 00:41:35.828 that stuff's all offloaded. 00:41:36.168 --> 00:41:40.688 So besides just like the OpenClock gateway, which is a node service running 00:41:40.688 --> 00:41:44.288 a server, it's only ever doing what other commands it needs to do from the work 00:41:44.288 --> 00:41:49.468 you're putting into it. on the LAN side, it might depend on like what access do you want it to have. 00:41:49.608 --> 00:41:52.808 It can be really useful if maybe you want it to be able to run scripts to make 00:41:52.808 --> 00:41:56.028 reports or control your audio bookshelf or your jellyfin or something, 00:41:56.028 --> 00:41:58.808 or maybe you want to do some network segmentation. 00:41:58.948 --> 00:42:02.708 So all it can do is reach the outside network, except for some blessed paths 00:42:02.708 --> 00:42:05.608 that you allow with tightly controlled API keys. 00:42:05.768 --> 00:42:08.388 So there's a lot of different ways you could, but you need to kind of understand 00:42:08.388 --> 00:42:11.208 what you want it to do and what you're willing to accept the risk for. 00:42:11.368 --> 00:42:15.088 I think there's a couple of easy yes, no branches on this path. 00:42:15.508 --> 00:42:17.888 If you have a machine that can run a local model, 00:42:18.736 --> 00:42:22.816 Run it locally because then you don't have a cloud dependency when it comes to the LLM reasoning. 00:42:23.496 --> 00:42:27.716 I think also there is an argument to be made to run it local if your intention 00:42:27.716 --> 00:42:32.176 is to have it interact with Jellyfin and Home Assistant and your RAR stack and things like that. 00:42:32.396 --> 00:42:36.196 If a lot of its work is going to be executing local APIs, it will have to still 00:42:36.196 --> 00:42:38.216 do reasoning and instructions with the LLM. 00:42:38.336 --> 00:42:41.656 But then a lot of that execution can actually take place via scripts that it 00:42:41.656 --> 00:42:43.456 creates and those run persistently local. 00:42:44.016 --> 00:42:48.696 And a lot of us actually have systems that are capable of running models that 00:42:48.696 --> 00:42:51.136 can at least be used for memory systems and things like that. 00:42:51.276 --> 00:42:53.516 So it's something that I think we're both debating. 00:42:53.776 --> 00:42:57.536 It really, like Wes said, comes down to a big depends. But there are a couple 00:42:57.536 --> 00:43:01.476 of yes-no paths. And the number one yes path is if you can run a local model. 00:43:01.856 --> 00:43:05.656 If you don't intend to integrate with local self-hosted services on your LAN 00:43:05.656 --> 00:43:08.236 a lot, I think that's another vote for going with a VPS. 00:43:08.536 --> 00:43:12.036 Yeah, and it might depend, like, is it mostly pulling strings on APIs? 00:43:12.036 --> 00:43:15.636 Is it doing research and making reports for you? There's a lot of different 00:43:15.636 --> 00:43:17.076 modalities you can use with this stuff. 00:43:17.636 --> 00:43:18.596 Yeah, good question. 00:43:18.836 --> 00:43:19.756 Let us know what you do. 00:43:19.936 --> 00:43:23.316 I'm going to go the complete other way as a suggestion and suggest that you 00:43:23.316 --> 00:43:25.656 install this on an ESP32. 00:43:25.996 --> 00:43:32.136 I saw two projects that's, one of them's called Mimi Claw and used an ESP32 to get this running. 00:43:32.496 --> 00:43:36.956 And there's another project out there, OpenClaw ESP32. So if you want to go 00:43:36.956 --> 00:43:39.076 the Jeff route, we will send this your way. 00:43:39.296 --> 00:43:40.056 Wow, that's crazy. 00:43:40.556 --> 00:43:42.756 Yeah, that way it's not powerful enough to really harm anything. 00:43:43.696 --> 00:43:46.136 That's something else, isn't it? Or at least you can catch up to it, 00:43:46.176 --> 00:43:50.596 right? All right, I'll take the next cue. McEwitt comes in with 2,048 sats. 00:43:51.828 --> 00:43:55.148 Just says, keep up the good work. Thank you very much. Appreciate that value. 00:43:55.488 --> 00:43:59.868 And Sam H comes in with a row of duckariskies. That's 2,222 sats. 00:44:00.988 --> 00:44:03.568 I'm definitely interested in hearing you talk about the clause. 00:44:03.808 --> 00:44:05.748 I'm very conscious of the security concerns. 00:44:05.948 --> 00:44:09.868 But I thought your basics in LUP 654, isolated setup, dedicated accounts, 00:44:09.988 --> 00:44:11.908 etc., were a helpful starting point. 00:44:12.088 --> 00:44:17.448 It'd be nice to see open-claw variants that defaulted to local models and an open chat platform. 00:44:18.368 --> 00:44:18.508 True. 00:44:18.508 --> 00:44:22.508 Yeah, a lot of these are based around Discord or Telegram or Slack. 00:44:22.948 --> 00:44:26.588 Like I was saying just a moment ago, I think XMPP has been left out in this. 00:44:26.788 --> 00:44:26.868 Yeah. 00:44:27.208 --> 00:44:31.128 There are some other solutions out there, and there are plug-in systems available. 00:44:31.508 --> 00:44:35.228 But I agree. I think the two other projects that haven't really solved this 00:44:35.228 --> 00:44:38.588 but I'm watching with some interest are IronClaw and Nanoclaw. 00:44:39.448 --> 00:44:41.828 IronClaw is, surprise, surprise, Rust-based. 00:44:43.348 --> 00:44:46.548 And Nanoclaw is Python-based, but a nice, tight little Python project. 00:44:47.108 --> 00:44:51.428 And they're doing different things security-wise. And so we're seeing several of these now develop. 00:44:51.648 --> 00:44:54.788 You know, the other thing maybe to think about is, Kelsey touched on this, 00:44:54.948 --> 00:44:59.028 is consider what you have the agents do and what you make deterministic. 00:44:59.228 --> 00:45:02.328 Because if they're just triggering scripts that you've already blessed and aren't 00:45:02.328 --> 00:45:05.768 going to surprisingly call the delete API, you'll probably have a better time 00:45:05.768 --> 00:45:09.248 than if it just has full access to everything and you expect it to kind of do 00:45:09.248 --> 00:45:10.308 that dynamically every time. 00:45:11.848 --> 00:45:16.088 Pete Zinger boosts in with the 7,680 cents. 00:45:20.414 --> 00:45:23.354 I'm relatively new to the show and only started listening last year. 00:45:23.594 --> 00:45:25.194 Well, welcome. Thanks for listening. 00:45:25.714 --> 00:45:29.934 A few weeks back, I got talking to Abe, and he showed me a concept video from 00:45:29.934 --> 00:45:37.034 1967 called 1999 AD, where the home computer would talk to other computers to do things. 00:45:37.174 --> 00:45:39.734 He's also been helping me run my own Abe's. 00:45:40.234 --> 00:45:44.214 I have two, and I just let them be, I don't call them Pete's because Petiverse 00:45:44.214 --> 00:45:46.074 doesn't have the same zing to it. 00:45:46.494 --> 00:45:50.074 I am more sure than ever that this separation of duty is the way to go. 00:45:50.414 --> 00:45:53.714 Separate AIs that have, oh, no, the boost got cut off. 00:45:53.794 --> 00:45:57.754 Yeah, cut off there. Yeah. But I'm imagining you saying that they have separate tasks or jobs, right? 00:45:57.874 --> 00:46:02.114 Because if you keep them relatively focused, they don't wander off and get lost 00:46:02.114 --> 00:46:03.574 in the context and whatnot like that. 00:46:03.634 --> 00:46:07.034 And you can also then scope the permissions and things like that. 00:46:07.254 --> 00:46:09.474 And probably easier to manage the context window. 00:46:09.694 --> 00:46:12.634 Yeah. Yeah. And memories and all kinds of things. Yeah, absolutely. 00:46:13.034 --> 00:46:16.594 Thanks for the report. And that's exciting. Let the Abe spread. 00:46:16.754 --> 00:46:19.434 I've thought about that, too. I wish I could call mine Chris's and have a Chris 00:46:19.434 --> 00:46:22.734 first, but it just, it just doesn't have the same ring, does it? 00:46:23.254 --> 00:46:28.834 Southern fried sassaboo sin with a row of ducks. Condolences to Brent. 00:46:29.394 --> 00:46:31.234 Silver is a nice consolation prize. 00:46:31.434 --> 00:46:33.214 Oh, this is a sports ball reference, isn't it? 00:46:33.574 --> 00:46:37.614 This is a hockey reference in both genders. 00:46:38.154 --> 00:46:42.574 We played the U.S. and lost both games in overtime to you folk. 00:46:42.974 --> 00:46:46.654 So darn you. Shaking fist. Shaking fist over there at you both. 00:46:46.654 --> 00:46:49.874 Yeah, well, we personally had something to do with it, so feeling pretty good 00:46:49.874 --> 00:46:53.274 about that. Didn't even know about it. Actually, I did. I saw the cheating, at least. 00:46:55.514 --> 00:46:58.094 I saw the embarrassing, disgraceful cheating. 00:46:59.014 --> 00:47:00.714 His friend didn't bring up on his own. 00:47:00.794 --> 00:47:01.634 No, interesting, huh? 00:47:01.974 --> 00:47:02.934 I didn't see any of that. 00:47:03.414 --> 00:47:06.054 All right, well, thank you, everybody, who streamed or boosted, 00:47:06.154 --> 00:47:07.294 even below the 2,000-set cutoff. 00:47:07.754 --> 00:47:13.114 You sat streamers, 22 of you collectively, sent in a nice, a little bit more than a row of McDuck's. 00:47:14.719 --> 00:47:19.479 22,649 sats sent in by our sats streamers. And you combine that with our boosters. 00:47:19.679 --> 00:47:23.399 It's a pretty light week, and we are getting ready for some big trips, 00:47:23.559 --> 00:47:25.899 big coverage, and very light on the sponsors. 00:47:26.419 --> 00:47:29.619 So we'd love to see some support from you next week if you are in the mood. 00:47:29.739 --> 00:47:34.599 We got 80,388 sats this week. It's all right. 00:47:36.519 --> 00:47:40.999 It's okay. It's all right. It's all right. Don't cry. It's okay. Are you all right? 00:47:41.259 --> 00:47:42.079 So sad. 00:47:42.879 --> 00:47:45.519 It's all right. It's all right. These happen, especially because we had a great 00:47:45.519 --> 00:47:47.599 New Year's and end of year. We really do appreciate that. 00:47:48.219 --> 00:47:52.959 But your boys are getting ready to head off into, what do you call it, 00:47:53.319 --> 00:47:55.519 the rough? It's not a battlefield. 00:47:56.259 --> 00:47:58.579 It's a nerd field, really. We're getting ready for it either way. 00:47:58.719 --> 00:47:59.899 And the boys could use some support. 00:47:59.999 --> 00:48:01.119 The great conference cloud. 00:48:01.379 --> 00:48:05.579 Yeah. We sacrifice our health so you don't have to. Actually, 00:48:05.619 --> 00:48:07.419 I think we've been really lucky the last couple of days. 00:48:07.419 --> 00:48:08.679 We have done very well. It's not. 00:48:09.079 --> 00:48:09.759 That California brings. 00:48:09.759 --> 00:48:11.439 You've got a whole regiment, I think, is helping. 00:48:11.859 --> 00:48:15.299 You know what? I should think more about that. I should get that locked in is 00:48:15.299 --> 00:48:17.599 what I should do. Thank you, everybody who does support us. And, 00:48:17.659 --> 00:48:19.739 of course, thank you to our members who put that on autopilot. 00:48:20.399 --> 00:48:22.119 Keeps us going. Means the world to us. 00:48:23.799 --> 00:48:26.799 Well, we got too many picks this week. Most of it's my fault, 00:48:26.799 --> 00:48:29.339 but you boys also found some really good ones. 00:48:29.879 --> 00:48:35.199 And let's talk about WebSocket Cam. It's an app for Android that exposes your camera. 00:48:35.799 --> 00:48:39.199 That's right. Access Android camera via WebSocket client API. 00:48:39.619 --> 00:48:43.379 You can also run AI and computer vision tests with ease from a live camera. 00:48:43.659 --> 00:48:50.579 Stream written in a hundred percent colin gpl3.0 and you can get it on obtainium i. 00:48:50.579 --> 00:48:55.439 Think you should be their ad man you know written in 100 pure cotton. 00:48:55.439 --> 00:48:59.879 I have yet i can't full disclosure i haven't had a chance to try this yet but 00:48:59.879 --> 00:49:03.199 as someone who's used droid cam more than a handful of times over the years 00:49:03.199 --> 00:49:07.199 having more options of taking advantage of a probably decent camera you've already 00:49:07.199 --> 00:49:09.419 paid for and is in your pocket i think is really neat. 00:49:10.039 --> 00:49:13.539 I agree with you, Wes Payne. Good pick. Stay tuned for Brent's fantastic pick 00:49:13.539 --> 00:49:15.579 in a moment. Well, I don't know if it was Brent's, but I'm giving it to him. 00:49:15.959 --> 00:49:18.759 I want to just mention that I have created a couple of projects. 00:49:18.759 --> 00:49:22.259 If you are playing around with the claws, one of the things that OpenClaw doesn't 00:49:22.259 --> 00:49:24.599 have built in, which is a little disappointing, and I'd love to see him fixed 00:49:24.599 --> 00:49:28.459 one day, is an MCP bridge or an MCP client. 00:49:28.579 --> 00:49:30.959 But you can add one via a plugin. 00:49:31.239 --> 00:49:36.019 So I have built one, an OpenClaw plugin that bridges any MCP HTTP server as 00:49:36.019 --> 00:49:37.599 a native tool to OpenClaw. 00:49:38.119 --> 00:49:42.819 They don't have one yet, but MCPs are big. The model context protocols out there, they're big. 00:49:43.299 --> 00:49:47.039 And OpenClaw is kind of not really built to solve it directly. 00:49:47.039 --> 00:49:51.159 They recommend you use MCP Importer, which uses a CLI interface. 00:49:51.599 --> 00:49:57.419 So I created a plugin that lets you use MCPs directly in OpenClaw. 00:49:57.559 --> 00:49:59.659 And you're already running it in production, is my understanding. 00:49:59.799 --> 00:50:05.159 I am. It's working well. And to that end, then I created a MCP server for fresh 00:50:05.159 --> 00:50:09.559 RSS, which definitely should have one. But since they don't have one, well, now we have one. 00:50:09.899 --> 00:50:14.539 So it's an MCP server I created that sits in front of the Fresh RSS Google Reader 00:50:14.539 --> 00:50:19.199 API, exposing the feed management as tools for your AI agent. 00:50:19.419 --> 00:50:21.499 It supports streamable HTTP transport. 00:50:22.519 --> 00:50:25.879 And it's very easy to get going on Nix. Flake is ready for you. 00:50:26.019 --> 00:50:29.599 The details on how to set it up in your config are all there for you. 00:50:29.719 --> 00:50:32.999 It just requires a password that you set up on the Fresh RSS server. 00:50:33.319 --> 00:50:35.519 And then you plug it into your gateway once you have my other thing working. 00:50:35.519 --> 00:50:38.959 And there's even a guide on there for your agent if you're too lazy to do it for yourself. 00:50:40.019 --> 00:50:43.919 And you should see significant token savings when you do this because it uses 00:50:43.919 --> 00:50:48.499 a lot less reasoning, pulling down the whole XML feed and going through it and 00:50:48.499 --> 00:50:49.939 just sorting out the few things that you want. 00:50:50.379 --> 00:50:55.099 Because the MCP server exposes in particular options and tools and makes it 00:50:55.099 --> 00:50:58.099 a lot more efficient. So it's a great way to get like a daily briefing. 00:50:59.386 --> 00:51:00.546 Without burning a bunch of tokens. 00:51:00.766 --> 00:51:03.306 Yeah. Do you have any workflows you're willing to share around like what you 00:51:03.306 --> 00:51:05.926 have your agent using these tools to pull from fresh RSS? 00:51:06.366 --> 00:51:09.426 So mostly on demand stuff for when I'm prepping a show, I can be like, 00:51:09.486 --> 00:51:11.766 hey, what are the headlines in this category? Because I've broken the shows 00:51:11.766 --> 00:51:13.246 down into individual categories now. 00:51:13.566 --> 00:51:17.326 And then a supplement to that in my morning brief, which has a lot of stuff in it. 00:51:17.886 --> 00:51:21.326 I have headlines from each. I have the top headlines from each category for 00:51:21.326 --> 00:51:24.026 each show that shows up in a morning brief that's pulling from fresh RSS. 00:51:24.166 --> 00:51:24.646 Very nice. 00:51:24.646 --> 00:51:28.546 And the thing that's really great about that is all I have to do is add and 00:51:28.546 --> 00:51:35.346 delete feeds in Fresh RSS, and it won't show me the stories I've already read in Fresh RSS. 00:51:35.546 --> 00:51:39.086 So I'm only seeing the stuff that's unread that's been exposed to me because 00:51:39.086 --> 00:51:41.146 all of that is just in Fresh RSS already. 00:51:41.426 --> 00:51:43.986 So it's really cool. And I like it a lot. 00:51:44.406 --> 00:51:48.706 All right. Who wants to tell us about this utility that promises to replace 00:51:48.706 --> 00:51:50.446 your home folder? Tell me about this. 00:51:51.906 --> 00:51:52.946 Wessel? Wessel? 00:51:53.206 --> 00:51:54.446 What is it, Brentley? Did you find this? 00:51:54.646 --> 00:51:57.486 Is it a WESH project? WESH, did you make this one? 00:51:57.786 --> 00:52:00.406 This is great. Why would I want to replace my home folder? 00:52:00.486 --> 00:52:05.906 Yeah, I think I've found this, and I'm not sure if it's a great idea or not, but I love it. 00:52:06.066 --> 00:52:09.966 It's super inventive. It's a clever idea, and for some folks' workflow, 00:52:10.106 --> 00:52:11.246 maybe it is the right idea. 00:52:11.486 --> 00:52:13.926 Yeah, okay, give us an example, a little tastier why you might want to use this. 00:52:13.926 --> 00:52:18.026 Well, organize your computer by replacing user folders with SimLinks project folders. 00:52:18.206 --> 00:52:18.386 Okay. 00:52:18.486 --> 00:52:22.246 It's a tool that helps you by creating individual download, desktop, 00:52:22.506 --> 00:52:26.386 et cetera, right, like the XDG standard folders you're used to from like your home der, right? 00:52:26.906 --> 00:52:30.646 For each project, it replaces the original folders with symlinks to the folders 00:52:30.646 --> 00:52:32.186 of the current active project. 00:52:32.406 --> 00:52:36.086 Now the random files you download will be placed in the download folder they belong to. 00:52:36.206 --> 00:52:40.626 Also, all the like .config files you might have for project specific settings, 00:52:40.826 --> 00:52:44.426 maybe for IDEs or tools or whatever, those all get sandboxed too. 00:52:44.826 --> 00:52:46.966 Brent, I think you ought to set this up right before the trip. 00:52:47.186 --> 00:52:48.966 So that way you could give us a report on how it goes. 00:52:49.146 --> 00:52:55.326 You know, we could talk about it while you're on the trip I don't think anything's going to go wrong It. 00:52:55.326 --> 00:52:59.766 Is written in Rust and has the MIT license so maybe that makes you feel better. 00:53:00.919 --> 00:53:01.859 What do you think, Brent? You give it a go? 00:53:02.679 --> 00:53:07.119 The hardest decision is to decide what a project is. 00:53:07.219 --> 00:53:12.239 Because I feel like our trip is like a meta project and there are multi-projects within it. Yeah, yeah. 00:53:12.439 --> 00:53:14.139 That's the most Brent answer possible. 00:53:14.299 --> 00:53:17.459 Isn't it? Well, I'm true to form. True to form. 00:53:18.559 --> 00:53:21.099 Yeah, I feel like the hard question is where do you sim link to? 00:53:21.759 --> 00:53:25.639 You know? Do you put it on your scary raid? That's probably not a good idea. But it's fast. 00:53:25.639 --> 00:53:28.179 I think it might already have a spot that it uses. 00:53:28.419 --> 00:53:29.059 Oh, that's lame. 00:53:29.439 --> 00:53:30.559 But you can probably configure that. 00:53:30.559 --> 00:53:34.239 Well, see, what I like about being able to do it myself is I won't be consistent 00:53:34.239 --> 00:53:35.419 over the years that I use this. 00:53:35.619 --> 00:53:38.759 So I'll start with one spot, and then a couple years go by, I'll start doing 00:53:38.759 --> 00:53:42.879 it in another spot. And you give me four or five years, and I'll have symlinks all over the place. 00:53:43.679 --> 00:53:49.119 It's really kind of, it's like a web of knowledge on my file system via symlinks. 00:53:49.239 --> 00:53:51.479 You can't find anything, but it's all there. 00:53:51.639 --> 00:53:55.139 Yeah, it's all linked. It's all there. Somebody could probably put it together, 00:53:55.159 --> 00:53:56.919 you know, if they came back and pieced it all together. 00:53:57.579 --> 00:54:00.459 All right just one more episode before we hit the 00:54:00.459 --> 00:54:04.179 road meetup.com slash jupiter broadcasting is where you go if you're going to 00:54:04.179 --> 00:54:09.339 be there we want to see you and don't forget you can get 40 percent off your 00:54:09.339 --> 00:54:16.319 scale registration when you use our promo code on pledge you n p l g 40 that 00:54:16.319 --> 00:54:18.679 ain't that ain't nothing that ain't nothing, 00:54:20.533 --> 00:54:27.073 With that, links over at linuxunplugged.com slash 655, if you can believe it. 00:54:27.213 --> 00:54:30.973 You got any pro tips for people before we get here? Like maybe fancy JSON chapters 00:54:30.973 --> 00:54:32.593 or transcripts, things like that? 00:54:32.653 --> 00:54:33.813 We have both those things. 00:54:33.933 --> 00:54:34.053 What? 00:54:34.053 --> 00:54:37.913 Yeah, that's right. We have cloud chapters. So it's a JSON file that your podcatcher 00:54:37.913 --> 00:54:39.573 can download or you or your agent. 00:54:40.033 --> 00:54:42.993 And it tells you where we talked about the things in the show. 00:54:43.133 --> 00:54:46.733 But if you need more granularity than all of the words that we said, 00:54:47.133 --> 00:54:49.453 you know, up to some possible error rate. 00:54:49.673 --> 00:54:53.513 Never, never. Those are included in SRT and VTT format that you can get in the feed. 00:54:53.733 --> 00:54:57.953 And these days we're trying, not always, you know, new, but we're adding an 00:54:57.953 --> 00:55:00.293 MP4 in an alternate enclosure as well. 00:55:00.513 --> 00:55:03.193 You know, we ought to start, we ought to just advertise to sponsors. 00:55:03.293 --> 00:55:05.593 Hey, yeah, we're the agentic ready podcast. 00:55:05.833 --> 00:55:06.033 That's right. 00:55:06.133 --> 00:55:09.313 We've got our chapters in JSON and we have our transcripts in two formats. 00:55:10.173 --> 00:55:13.653 And we have rich podcasting 2.0 metadata via the tags. 00:55:13.873 --> 00:55:15.093 That's right. And that also means. 00:55:18.733 --> 00:55:23.753 That means we're lit. We are live every single Sunday using the live item tag, 00:55:23.753 --> 00:55:27.133 so you can listen to your podcast app of choice, or you can go to jblive.tv. 00:55:27.273 --> 00:55:31.613 If you're on the go, check out that clean audio feed over at jblive.fm. 00:55:32.013 --> 00:55:35.513 Links to everything over at linuxunplugged.com. That's the source of truth, 00:55:35.553 --> 00:55:37.933 and I'll give one more shout to our virtual lug. 00:55:38.353 --> 00:55:40.613 Details at jupyterbroadcasting.com slash mumble. 00:55:41.193 --> 00:55:43.693 You never know, when we're on the road, it can be hit and miss. 00:55:43.793 --> 00:55:45.953 So you probably want to join next week, just so you can try it out, 00:55:45.993 --> 00:55:47.753 because you know if we're in studio, there will be a mumble room. 00:55:47.933 --> 00:55:50.313 So you probably ought to join us. Next week. 00:55:51.313 --> 00:55:55.013 Make it a Tuesday on a Sunday. All right. Thank you so much for joining us on 00:55:55.013 --> 00:55:56.653 this week's episode of the Unplugged program. 00:55:56.853 --> 00:55:59.473 And we'll see you right back here next Sunday.
Previous episode Next episode

Search

Search