β ΒΆ Intro
Hello, friends, and welcome back to your weekly Linux talk show. My name is Chris.
My name is Wes.
And my name is Brent.
Hello, gentlemen. Well, coming up on the show today, I'm going to talk about the self-hosted app that turned me into a family time lord and the perfect mobile server we found just a little too late. Then we're going to round it out with some boosts, some great picks, and I mean some great picks and a lot more. So before we get to all of that, let's do the right thing and say time-appropriate greetings to our virtual lug. Hello, Mumble Room.
Hey, Chris, hey, Wes, and hello, Brent.
Hello, hello.
Hello, handsome mumble room.
Yeah, and shout out to that packed, quiet listening, too. Nice to see you all up there. Whew! It's going to be a big show. And good morning to our friends over at Defined Networking. Go to defined.net slash unplugged and meet Managed Nebula. Defined Networking has Managed Nebula, and it's a decentralized VPN built on top of the open-source Nebula platform. We love it, and you're going to love it, too. And what really sells me is the long term story. This isn't like something to just shove away.
Like you should think about when you're building infrastructure, what really it looks like for you long term. Critical infrastructure shaped by endless VC rounds, you know, or shifting priorities to try to make the free version of funnel to the enterprise version that come with big tech log in dependencies, all of these things. It's not what I want when I'm building my infrastructure.
And Nebula gives you real control, operational, self-hosted lighthouse nodes that you can make sure your network is reliable.
β ΒΆ Wibbly Wobbly, Timey Wimey
And they have the resilience that you can stack on top of, build on top of, and run for years. And you can get started with 100 hosts for free at Define Network. You can go to defined.net slash unplugged. Redefine your VPN experience today and support the show at defined.net slash unplugged. Big thank you to our king chief sponsor of the show over there.
Yes.
Really, really big thank you.
Keeping our packets flowing.
So I want to talk about becoming a Time Lord. So I'll back up a little bit. Some people may be able to relate to this problem.
You hope.
I have too many calendars. You know, like, first of all, I've got accounts that have been around for 200 years that have got calendars on them. And then I've got, like, My personal calendar that has also shared with some family members and my ex-wife for the kids stuff. And then I've got a calendar with my wife and then my wife has her calendar. And then I've got the JB calendar and then I've got the show calendars.
Live streams.
It's actually, it's something like 12 or something. I don't know. It's a lot of calendars. And what inevitably happens is I'm checking one or I've got a couple of configured on a device or somebody books on one calendar, but somebody also books on the other calendar and the two conflict. and then I've got to sort it out if I even notice it, which sometimes I don't.
Well, that's the other part, right? It's like really most of your time is focused either on your family or- The shows. The shows, right, yeah. You don't really have a lot of sort of admin office time built into this schedule.
And so over the years, I've tried like having great calendar apps where I like pull in all the feeds from the various calendars and then I have one big meta calendar. That's sort of how I've solved this for a long time, but it doesn't solve it for the people that are trying to book with me.
Right. It gives you a single pane of glass, but they don't necessarily get the like, oh, nope, he's reserved here. Sorry. Yeah.
So also when you're trying to build like automations or you're trying to just look at your calendar in one snapshot, like it's never really easy outside this one meta calendar app that I've set up. So this is where it's kind of a newer app. They just hit version 2.0. It's called Keeper.sh. It's a simple self-hostable open source calendar syncing tool. It allows you to pull events from all your different iCal or ICS feeds and then push them into one feed with all of the details.
And the app also has a self-hosted version, or I mean a hosted version, if you would rather just use their service. I think it's pretty cheap, but they also offer multiple ways to host it, which I'll get into. And it's got a very simple UI. The app itself is not a calendar app. It's a feed management app, and it creates a source of truth for your calendars. So instead of having a calendar app where I have a ton of feeds now,
I have all my calendar apps with one feed. and it all comes from Keeper. And Keeper makes it simple now because when somebody books on one of my different calendars, I can now identify the conflicts and catch them quickly. And I can also provide my family a synchronized feed so they don't book or mistake gaps of time or whatever because of its cross calendars. It gives my family one source of truth or you guys, people I work with,
a single source of truth. And so it's so, so much a game changer when it comes to just planning and looking at availability. And then the other thing that if you want to push it even further that I really appreciate is it also provides a model context protocol server. So if you do the claw thing or whatever, it also gives you agentic access to your calendar. And that can be really powerful, too.
Yeah, right. Then you have a chat interface to go make new appointments.
And so the app itself is surprisingly straightforward. forward it keeps track of the different time slots and things like that uh it does i'd say there's the big limitation is it only supports iCal and ICS for ingest it does support a range of cloud accounts as well for publishing those so if you have a google calendar an outlook calendar or a bunch of other vendors you can have keeper published to those calendars which is not import yeah it just uses ICS or iCal for import
um and they do have a hosting offering and if you read through their GitHub readme document. They have a discount code in there. It's already cheap. But with the discount code, just read their readme and you'll find it. But I wanted to self-host. There's seven different options for self-hosting. Did you see this?
Not only is there like just a lot of containers involved in general, but then there's different versions of containers depending. It's almost like the next class situation.
That's a good, that's a good equivalent. What is it about calendaring and all of this that requires? It is a hard problem to solve, I guess. I mean, here we are. So there are seven images available, but two of them are really sort of the all-in-one kind of everything's included in a single stack.
Keeper standalone, everything you need. or if you want just redis and the database outside okay that's that's kind of nice actually so keep the stateful bits yourself this will run the rest of the app side okay yeah.
They're trying to accommodate people's different various hosting setups.
Or you can run the pieces yourself.
And then, of course, there's the MCP server in there as well, if you want, which is optional. So instead of going the Docker route with an environment file, I decided to kind of go the one really big Nix config route. This was kind of a monster, I'll admit. It ended up being a 234-line Nix config, which is one of my biggest ever. But it generates system-to-unit files. It sets up a Podman network. It sets up the NGINX virtual host, the TLS certification, and it manages all
of the secrets from one declarative source of truth. So that's really, really nice. And so instead of doing it with Docker Compose, I'm doing it with declarative Podman containers and then wiring it up through Nginx to do the reverse proxy to put it behind a nice pretty URL. And it's working really well because then it's a memorable URL. And so when I need to put the calendar feed into one of my calendar apps, it's really easy to boop, boop, boop, slash ICS, boom.
That's been fantastic. So I kind of went totally a different direction than the project, but used it as kind of a base.
And I guess since their coordination point was containers, that's all you needed, and set the right end vars or whatever else.
Yeah. And so the other, I'd say, limitation to be aware of this app is the MCP server is also read-only.
Oh. But the API is not just the MCP?
I haven't tried that because, for my age, and I can just also write to all the source calendars. So I've solved it already. The agent already has that. I just prefer a single source of truth feed for the actual calendars. But man, is this not just one of the small things you can do that's totally transparent in a way to the family, but just makes things so much nicer.
I do see that there are also some modules coming, applications coming through maybe, including CLI mobile and SSH.
Even more ways to use it.
Don't know what that means, but SSH into your calendar?
Yeah.
I don't know. I love it.
And also CLI. It's great.
I do have a usage question.
Uh-huh, yeah.
Like you need family approval more than just wife approval this time, and maybe you even need approval from the two of us. From their perspective, let's say they have right access. Let's say Wes has right access to the JB calendar, but you're providing him with Chris's everything calendar. Now, is he getting duplicate entries because you have the JB calendar on there and then he also has write access to it and all of a sudden you have double calendaring?
That's a good question. So you can generate feeds for folks. I'm trying to see if I can. I don't know if I can pull it up here at the studio because I don't know if I have. Oh, I do. You can generate feeds that exclude certain calendars.
Ah, that's brilliant.
But I actually find it really for everyone else. I don't really need to have them make any changes. They're just writing to the calendar they've always written to. They just have access to that calendar, which is fine. They don't, like, you guys don't really need to know when my kid appointments are. You just need to know if I'm available.
Uncle Brandon needs to know sometimes.
Well, yeah. So it's sort of, you can slice and dice it depending on how you want to use it.
Very nice.
Yeah. And they just hit version 2.0. It's been out, I think they're just over, like, maybe six, seven months. I can't quite recall. But it's very active. The developer, this is a Sunday morning. and the developer just committed uh something two hours ago uh it's agpl 3.0 and uh it's uh mostly written in typescript and then of course there's javascript in there and a little bit of shell and stuff but mostly a typescript application.
It does sound like um the developer was scratching an itch that the same one you had which is kind of funny it's had this working on some project three calendars across business work and personal and.
How did you find this, Chris? And why did you solve this problem? Because you've had this problem for a very long time. Why this week?
I was trolling GitHub and Reddit and X for a solution and came across.
Nice.
Yeah. And then I tracked down the developer's post on our self-hosted for the new 2.0 release. I was like, oh, it just came out. What a great time to talk about it now that the new 2.0 is out. And he just released 2.914 an hour ago. I already got an update, boys.
Wait another day to get 3.0.
Yeah. Yeah, it's not a big update. It's just a calendar off fix, which I didn't run into. But really nice. I mean, a guy's clearly dedicated to it as well. So very cool to say.
Let's not burn them out.
I'm not sure. It's Rita. I'm not sure. R-I-D-A is the developer's first name or handle. But great project. And if you've had this problem, I definitely recommend it. And if you solve this another way that you think might be even better, please do post that or boost us or emails because totally willing to even solve this a better way. It's been good, but perhaps a better solution exists. No sponsor right here, so we'll just say thank you for being a member.
And if you're not a member yet, you can go to linuxonplugged.com slash membership and become a core contributor or support the entire network at jupyter.party. You get access to the bootlegs, which is a lot more show. We're clocking in at 54 minutes, almost 55 minutes right now for the members.
We have so much more to go.
Yeah, yeah. And there's often really good conversations about making the main show, not intentionally it's just because it's a really organic discussion kind of.
It's a hangout.
β ΒΆ On Screen!
Yeah it's a hangout and so we've gotten in some really good conversations there and it's additional content and uh you also uh you also could get an ad-free version so when we do get some advertising support if you don't like it there's an ad-free version of the feed as well of course the ads aren't in the bootleg either but uh either way we appreciate your support it's linuxunplugged.com membership or jupiter.party for the whole gosh darn thing.
Well, you two have been up to a lot of things this week. I've only been getting little snapshots here and there. So last I heard, y'all have been working on not one, but I think two diesel heaters. And clearly, Brent must have the itch for embedded development. Because when I got to the studio today, he walks in and hands me a little black box with the radio. From CubeSail? What is this?
Ah, there's quite a story behind that. There is quite a story. So how would you describe that, Wes? What would you?
An industrial-looking sort of like professional metal case. It's got what I assume is a Wi-Fi antenna, good connectivity, USB-C for power, Ethernet, HDMI.
Full HDMI.
On the front, it says PiBox. And it's got that little screen. It's also got nice little indicators for disk CPU and power. It feels heavy, well-built. Is that a Noctua fan in there?
Yes. Good eye, Wes.
So, Wes, now you can just like kind of slide it like a clamshell.
Oh.
And it'll reveal itself. So maybe you can try to decipher what's in there.
I'd say it's as thick as like two, three and a half inch disc stacked, but shorter. So it's not, it's not particularly thin. You would notice it in the bag, but it's not huge either. And then Wes is now, Wes has taken the, uh, the back off.
Oh, okay. This looks like a Raspberry Pi.
Yeah. It's a CM4.
Oh yeah. The compute module four. And then with, um, a larger carrier board. Yeah.
Yeah.
Cube sale hat compatible GPIO. Ooh.
Yeah, that carrier board is very interesting. That's why you get the larger HDMI. You get a few additional features in there, including a backplane for SATA disks.
Yes, it's so great.
Proper storage?
Yes. In a tiny little box.
It has room for two 2.5 SATA SSDs.
Oh, and there's one in here.
Yes. So we did scrounge up a precious 480 gig SSD and stuck it in there.
Okay, CM4. So that's like Pi 4 era, but was the CM4 like slightly better?
Yeah, yeah, yeah. Slightly better. Depending on the model you got at the time, it came with up to 8 gigs of RAM and 32 gigabytes of eMMC storage built in. So you're not fussing about with an SD card. It's got built-in EMCC storage, eMMC. It has a gigabit Ethernet port. It has two USB 2.0, like you mentioned, a Type-C.
It's also got a micro SD card slot on there and then on the front of the box We'll put a link if you want to see this it has three LEDs and a little LCD screen as well as a GPIO connector on there and That lets you see what the system is up to while it's working away and then it has these two powered SATA SSD slots and at launch, The PiBox CubeSale was $299.
Whoa.
Yeah. It was initially a Kickstarter, which I think is maybe how I caught this. Unfortunately, they are no longer around. And it's one of these where we were both really disappointed when Brent and I discovered this. In 2025, they said so long and thanks for all the pods, and they announced they shut down. And they did the good guy thing, and they open-sourced their code. They open-sourced a lot of stuff.
Including their OS.
Oh, that's great.
I mean, sad, but best case, I guess.
The cube sale comes from they were using Kubernetes.
I was going to ask. Was this meant to be like a host to run Kubernetes on the Pi platform?
Yeah, and then deploy applications and install SSDs and have a tiny low power NAS. And looking back at it, they were just early. It's a really good idea. They started in 2019 and I think they just couldn't make it work.
How long do they go?
2025.
Oh, wow. So you just missed them.
Yeah. So they don't make it anymore, which is such a shame because we love it. It's neat.
The just hardware quality, I would say, and the thoughtfulness in their design, especially even of their PCB. They wrote like docs on their PCB about how to use this thing.
It's very well labeled. Yeah. What is this?
Oh, it's so nice.
It also has this, what's this switch on there?
Yeah. So that's on the carrier board.
One says normal. The other side says RPI boot.
There you go.
Well, this gets us into a fight that Wes had to break up between Chris and I about how to deploy to this thing. Because we have this big-brained idea of how to use this fancy little box that we somehow found in the corner of the studio.
We should talk about that and then talk about the fight.
Yeah, okay. Let's talk about the goal. So we've had a problem to solve for years now.
Yeah.
And just having come back from scale... It is obvious we still have this problem, despite my, let's say, efforts to solve it with the wrong hardware.
Yeah, Airbnb TVs suck. They suck so bad. And we're often there for a week, and we just want to watch Star Trek.
I feel like Hisense must be paying them to put these TVs in. It's the only reason you do it.
And Hisense just announced that these TVs are now going to, while they're booting, which takes forever, they're going to play advertisements.
Don't solve the problem of making a boot faster. Just take advantage of the slowness to sell you stuff.
And listeners, you need to understand that priority one, when we arrive at an Airbnb, is to get Star Trek going. A bench of an Airbnb, a benchmark is how fast can you get Star Trek? Because what you're actually, you're benchmarking the quality of the television, the quality of the Wi-Fi, the wiring job.
The instructions from the host.
Yeah, it's an interesting benchmark immediately. And so really before we've unpacked, before we've even picked rooms, we've got Star Trek going. and we want to get the window of time down on that and remove the frustration. And then additionally, Airbnb Wi-Fi is terrible, always terrible. I would say every other time the Wi-Fi is in the other building and we're getting scraps of signal.
Or this time we had one where the actual speed and signal was great, but they did client isolation. So we couldn't actually talk to anything else.
Yeah. And we've had one where the Wi-Fi went out and it was in the owner's house, which was next door, and the owner wasn't there. And so then we just didn't have Wi-Fi when we needed to do the show on Sunday at our night at our last Airbnb, which is right next to L.A., right next to Pasadena. The Wi-Fi was so bad from the area in the Internet that we did the show off of our cell phones.
So that's a problem we need to solve. So we want this device to be a media server as well as an AP that will either extend the Airbnb's Wi-Fi or connect to an LTE network. But the goal is, is that all of our client devices always are just attached to the same SSID. So when we arrive and the Wi-Fi becomes available, we don't have to play this game of, hey, what's the password? What's the password? Hey, did you get the password?
We all already have the Wi-Fi set up on our devices. It connects to this box. And then this box handles the actual Internet. And it has, on top of that, a jellyfin server with storage on this SSD that's built in now or slotted in. And maybe it runs a Samba server. Maybe it runs ersatz TV or tunar or something like that, which we'll come back to. And it becomes essentially a media NAS Wi-Fi repeater that gives us consistency everywhere we go.
But you want something that isn't as big as even a one liter PC is too big because it's going in the bag or the backpack.
It has to be super travel friendly. I started trying to investigate this problem by thinking, well, maybe a cell phone is an interesting way to solve this because you can have independent internet if you need it. You can throw up a hotspot. You can throw it in a bag anywhere. It's so gosh darn portable. And modern cell phones maybe can run like Linux containers.
And they have HDMI out through USB-C.
Also true. That's also true.
And you have a Jellyfin app.
And everybody's got a used cell phone in their closet.
It was not a bad idea.
Yeah, the problem is I picked the absolute worst device to showcase it at our last Airbnb. Wes will... I think, agree with me that we took a listener's device. It was a Bind phone, which turns out ancient, even when it was made first. But it ran Linux, which is, I thought, going to solve a lot of problems. So I deployed it. I worked many, many days and then deployed it at our Airbnb.
And how'd that go, Brent?
Well, it was very entertaining.
Yeah, it was. Yeah, it was.
It didn't go very well.
You may have harmed your...
Friendship with producer json yeah yeah that's true it started when you it took you 20 minutes to get it on the wi-fi there was that that was sort of a bad sign yeah.
I still don't know.
Why that was but.
Anyways it was a means of starting this wheel going and then having us solve this problem we've had for years and i think having that failed experiment got us to a point where i think maybe we got this.
Yeah so now we had the pie box we discovered it in the studio's archive and it was time to give it a little love. I probably talked about it years ago when it was brand new, but dusted it off and actually had a real use case for it now. And it really came down to, well, how do you deploy on this thing? I would love to see the Pi get a little easier to deploy on.
I assume you didn't even try to get the KubeSail software in Kubernetes running?
No, no, because it's also pretty old now at this point, Debian and whatnot.
Yeah.
And once you have an OS flash to the EMMC, it's a lot harder to just boot off external media. Because the way you change the boot order and whatnot is you modify the boot order on the installed OS. And you change hex codes in the boot order and stuff like that. And I just didn't want to play it.
Just the expression on your face, Chris, when you found out that's what you needed to do. So where we came to, where Chris and I were holding up fists and Wes had to solve us tearing each other's hair up.
There may have been some yelling.
Was how do you deploy to this thing?
Yeah.
So Chris had a method and I had an experimental method that I wanted to try because I read it on the PCB.
The irony is we probably should have reversed our attempts.
Really? But I'll get to that.
I'll get to that. So I advocated for just pulling down existing ARM binary images and flashing them to a USB stick and booting the thing with that. That was my approach, and I figured that would probably be a 20-minute gerb.
That's far too reasonable.
Brent over there wanted to go the route of, like, pulling down all the ARM packages on his x86 machine, spinning up an ARM VM, building them in the ARM VM, and then deploying a fully ready ARM image. as an image to the MMC, using this RPI boot mode that you can flip the carrier board into. So you've got to install the RPI boot app, and then it can flash and write. So the board, the carrier board for this and the CM4, they come out of the unit.
You have to unplug them from the SATA backplane, and then you connect them to your laptop or whatever over USB-C. So now it's getting powered from your laptop, and when it's in RPI boot mode, when that toggle switch is flipped, it shows up as a mass storage device of types.
Oh, interesting.
Not a regular mass storage device. But A-type. Yes. And then RPiBoot can write to it. And so what Brantley is going to do is build all these on his X86 PC in an ARM VM.
Sounds great.
And then flash them using RPiBoot.
To- This isn't his sort of factory assembly line that he turned your RV into?
You are not kidding. My wife's been out of town for a week. And if she was in town, my goodness, boy.
I would have never attempted to take over an eighth of the RV.
Oh, boy. Anyway, so my approach was pull down the images that are already built and flash them. But the irony was is that I was on an ARM laptop and Brent's on an x86 laptop and I'm doing the prepackaged route and he's doing the package build route.
Yeah. You should have been building the packages on your ARM laptop.
Although I did kind of want you to win. I think Wes ultimately sided with me a bit here. He didn't really take a side, but he's like, well, the prebuilt packages makes the most sense if you're on x86. That was good.
Well, I remember I tried the cross-compile path way back when I first tried getting NixOS on a Pi.
Yeah.
And just remembered that unless you had a fairly beefy rig, it was kind of painful.
Yeah, so I wanted to see it work, so Brent gave it a go.
Well, the reason I thought this might work more than you both seem to have any faith in me was that I deployed to a Raspberry Pi previously using this method. And then when I saw that nice little switch on the board, I thought, okay, this is the way they want this to be done. Maybe not the cross-compiling stuff or the cross-building. But I really wanted to try plugging this in and just having it be a mass storage device that I could write to.
Because, Chris, you ran into an issue of you had the image.
Yeah. I'd have to edit the OS to boot from the USB stick.
Yeah, and so it didn't seem necessarily that much simpler.
Yeah.
So I went down the crazy path and did the cross-building. and it turned out with a little bit of, you know, finessing that totally worked.
It did with one thing I would say people need to watch out for is the config that ended up in the image, which was great because Brent was able to set it up with user accounts and whatnot. So it just worked. But the downside, the first one, like you got to watch yourself because it'll do key-based SSH login. And if you don't set that up right, you can't get in.
You're locked out.
But the second gotcha is that now when it builds, even locally, it's like configured to do a remote build, but it's doing a remote build on itself.
Yeah.
So it's SSHing into itself and building.
Be careful which config you deploy to this thing. You can't just take what's on your laptop and send it over there.
Yeah, right. But that aside, we do have a provisioned system with Jellyfin and Samba and that 480 gigabyte drive. And Wes, get ready for this.
Hmm.
I went with XFS.
You know, I wonder, because I walked in the studio, and I guess this thing was booted up. I didn't know it at the time, but I just, I hadn't realized, because I guess I haven't watched the kernel boot XFS. It still says SGI XFS.
Yes, it's great, isn't it? Yeah, I don't know. It just, we had a moment, and Brent claims that he is a Bcache FS hater now. No, I'm kidding. No, I just wanted to try it, I guess. We could always reformat.
We tried Bcache FS first, and there was, I guess, an error in the current builds in NixOS. Yeah. So we just skipped over it. But it'll come.
I mean, you got NixOS, so you don't strictly need it unless you have plans for around what you need to snapshot.
Wes will fix it.
So what we're going to do is we're going to seed that thing with all like my Blu-ray rips of Star Trek and my DVD copies and put it on the hard drive. So we'll always have Star Trek. I think we'll put like season one or two of Baywatch on there. We should have put some staples that we always watch at Airbnbs.
And then Brent found a usb adapter that you can plug an mvme disc into that we took from an old busted laptop, um and so we're going to use that for like the more current stuff like the updated stuff so you want to just you just swap out right you plug it in your machine you update it and then when we boot that thing up you plug it in and you've got your extra new shows as well jellyfinal index oh.
I love this classics and currents.
The thing that's missing that we're working on and i don't know because brent was up till 2 a.m working on this i don't know how far he got well.
We're gonna need to join it to a Nebula network.
It's so true.
It is going to be, we're going to have it. We'll have a Nebula network for all of this. So it'll be able to route. That thing will become a Nebula router for us. That is definitely part of it. But you think about the big component that's missing that we haven't talked about yet. We'd need this thing to be able to actually plug into a television and display jellyfin.
Yeah. Can it do that?
Well, it's got a full-fledged HDMI port, and the docs say it supports up to 4K resolutions. So I bet, you know, all the TVs we go to are like 1080p crappers.
Yeah.
And, you know, worse. So, like, we just have to figure out how to do a super low-key, probably Wayland, I would imagine, on that hardware, like kiosk almost. So where did you get to on that?
Yeah, I found a little project. Kind of last minute, so I haven't told you about it yet.
All right.
Something called Cage or Cage Kiosk, which is a Wayland-based kiosk, which is fairly minimal, so good for these little compute modules. And it just gets you a Wayland session with the application that you want to run.
So we could just have it essentially start up and launch a Firefox? Yeah. Oh, and then if we had the Firefox homepage set to the Jellyfin web interface.
Exactly.
We could even have it probably launch with a flag for full screen.
Yeah.
Oh, boys. Oh, boys.
I think it does a single maximized application already. I don't know.
It's like the exact thing that we need to solve this problem. And it still looks like it's in active development. And I think we should just go with this plan. unless someone has a much better idea because I seem to be. Yeah, I choose a client.
I think the one thing we don't, I mean, Jellyfin gives you, it has like the cast sort of functionality, so we could control it from a phone or a laptop pretty easily, but we don't necessarily have like a remote style interface.
Yeah, we do need to.
I don't know if we care about that. Maybe we don't. We're all very technical savvy.
Well, but we think, I think we want a remote, man. We want to make this really easy. We want this to be a casual, low friction thing or like if my wife's with us, it's easy for her. We have a, you know, we want to make it hard for PJ.
We could use the get a better version of that um kind of janky presenter remote i have that is.
Fun that thing was so hard to.
Use yeah.
I would actually like listener input on a great remote control device one that we could travel with.
That's the thing ideally it would still work like on a plane even if we didn't drive so.
Here's my other question this cage wayland kiosk thing does look really good, But is there a kiosk mode for Plasma? Now, hear me out, because Plasma can be pretty lean, and there could be, I don't know, situations where maybe we want to bust out a full desktop to do something that we didn't think of.
We are always doing things we never thought of.
So if we could have, like, a Plasma session that's, like, kiosk mode by default single app, but we could, with a, like, if we hooked up a USB keyboard, we could break out, that might be also really nice. But I don't know if that's a thing or not. Or I don't know. Maybe you can do that with GNOME. I have no idea. Maybe that's another thing listeners could tell us.
I've got the feeling this might be a long-term project because we'll be taking it with us and changing it every time we use it, it seems, because we can't help ourselves.
Yeah, I think the other thing we're going to be spending time figuring out is what does this thing do DNS-wise and how do we set that up, especially with split networks and all of that.
It's a great point.
And then, like, where does it pull the media from if we want, say, maybe to connect to another Jellyfin server? That probably needsβwe need to make sure Nebula's running on the other Jellyfin server. So there's a few more things. So I guess the big ask to the audience would be, what would you use for kiosk mode would be up there? I guess I'd be up to x86 versions of this that are cheap, too, but we're kind of down this route now.
Use the hardware you have, I say.
Yeah, really. Tis the season, right?
How did you even β was this just on a shelf somewhere? How did this happen?
So this has been beside the fish tank in the living room, which we spend quite a lot of time in. for about the last four years i've had my eye on it and uh decided to just dig in.
Mm-hmm i mean it's pretty dang neat it is pretty dang neat so uh and it's i i think if we get the kiosk thing solved i think that's going to be a winner i think the question is can you do that in plasma that's another you know or is there a better route as long as we can get a full desktop that's lean and mean but we like to use west.
Might be a little disappointed because i also tried to upgrade our process because I don't want to, We always wanted to deploy to this thing remotely. So deploying to it with NixOS Anywhere and using Disco would be nice, especially if we changed to a different device, to just have a NixOS config that we can put on any device, really, or share with the audience so they can do it. But apparently, or at least I ran into this error, KExec does not work on the CM4.
It has been more hit or miss on ARM. I think there are definitely ARM devices that can do it, but I don't know which ones.
A KExec list device might not pass the OS sniff test.
I mean, this one's pretty cool, so I'm willing to have a minimal sort of exceptions list. There's probably a limit on the number on the size of the list.
But... Okay, maybe we can sort that out after the show.
Yeah, I think so.
All right, so we have one other question.
Maybe get Brent's lawyer involved.
β ΒΆ The Age-Old Question
While we're bringing up questions for the audience, so we want to talk about the technical side of some of the age verification stuff that's moving and i've been looking into this a bit we had a really great conversation on the pre-pre-show, 25 u.s states now have enacted laws requiring age verification usually government id or a third party age assurance to get access to adult websites most of these have been passed and went into effect in the last 24 months and now
we have two states that aim to enforce age verification at the os level california ab 1043 which was signed into law october 25th and goes into effect january 1st 2027 and then colorado sb 26051 which is in the works and slated to be on the schedule in 2028 the team at systemd has a patch in the works that adds a birth date field to the json user records which would be essentially a standardized age related logic that distributions could adopt,
And there is a group that is behind this that seems to be pushing it. We had a good conversation that seemed to indicate that this is also underway in New York. There is an early version in Washington State that hasn't gotten very far.
Some efforts in Illinois.
More and more widespread. And when you zoom outside the states, there's countries outside the states like Brazil and others that are also passing similar acetation requirements by the operating system. So we are very quickly as a community finding ourselves between an awful rock and an awful hard spot. And I think we're essentially there now. So System D might have a technical solution here. Do you think distributions, and I'm asking you, listener, do you think distributions
should adopt it or remain out? Should they opt out? Now, consider if they opt out, they are likely not going to be valid in certain markets, not without fines and legal process.
and consider who pays for their development where the money comes from in free software development it's often from enterprises who have contracts with government or companies that have contracts with government that have to make certain requirements so is this a line in the sand or should we have a technical solution for places that need to implement it is it something that all distributions should patch out should we fork system d.
Or does it make sense to implement? And if it doesn't make sense to implement, if you're against it, what real options do you think are out there right now? We'd like to have that conversation in next week's boost segment, so please do boost in. And we'll have some details about the systemd birthdate field, if you're curious. It's essentially a JSON user record that the distribution and the software that's on top of that would then read from.
At this point, no distribution has announced support for that, but you would imagine if they were forced to legally, then they would probably adopt that. There's some other options as well including the Debian project has looked at a potential route to solve this outside of Systemd. So it's a conversation that's happening and we want to know where you stand on it. We want to take your temperature. So please boost in and let us know. I think it'd be a great way to get a conversation going.
β ΒΆ Housekeeping
I also want to mention that LinuxFest Northwest 2026 is just around the corner, 33 days away as we record April 24th through the 26th at the Bellingham Technical College. We'll be doing a live show there. We are on the Sunday schedule, so you can join us for an in-person Linux unplugged.
Usually a riot.
It is a lot of fun. We don't know all the details yet. And then, let's just put it out there. You never know. You put something out in the universe, Brent, and sometimes the universe answers. and we thought, wouldn't it be interesting? Wouldn't it be fun if somebody out there in the audience is sitting with a van that needs a little rescue? Maybe it's in a rescuable state, needs a little love and get somebody out there to get it off your property. Well, Brent and I are itching. So let us know.
Email the show linuxunplugged or unplugged at jupiterbroadcasting.com or send us a boost. Maybe we'll put you on the schedule this year and go do a van rescue.
That would be amazing.
We do this thing now when we're out driving around. We're always spotting vans. It's like, oh, we should stop by and ask them. We should stop. I look at that van. It's just sitting there rotting away. We should ask them.
Yeah.
We could get that running.
Put it on the road.
Come on.
Someone could be using this.
Yeah. I don't know. I know it's crazy. Let us know. But we'd like to tech one out. You know, if we can get it running, it would be such an awesome tech project. Home Assistant, sensors all over that thing, leveling sensors, mobile internet, all of it.
You know, maybe we tweak it out. We install a super duper recording studio in there and then you just sell it to van influencers. Ready to go.
Yeah, there you go.
You know, Wes does need an RV solution. He's the only one of us that doesn't currently have sleeping on wheels.
Oh my God, we could go on a road trip together.
That would be pretty killer.
All right, so you see, let us know, okay?
Help us.
β ΒΆ Shout-Outs
Well, we got some feedback. Brentley, would you like to read Nix's, which is NYX? He wrote into the show.
Yeah, someone knows our taste. Nix, NYX says, Hey, you'll ask for the most underpowered thing in my stack, and I think the award probably goes to my Pentium 2 box.
Ho-ho-ho!
I got it for free from my doctor. He had it collecting dust in the office, and I brought it home, swapped out the old spinning drive for an SSD.
Whoa.
Nice.
Oh, no, sorry. I read that.
Oh, SD card.
Yeah. Swapped it out for an SD card.
Yeah, yeah. 64 gigabyte SD, still probably better than the spinning rest, though.
Yeah, and hosting a Luanti or MindTest server over on it. It's been hooked up to my tail net, and it can handle about five players with limited draw distance pretty well.
Wow.
Also use it as an MPD server. It's a bit stuttery if I try to do both at the same time. But for a zombie of tech, I'm pretty happy with it.
That's so great. And he's coming in from Ecuador, too. So hello, Ecuador.
Oh, yeah. We got a zip code here.
This is a binary zip code.
Do you want to go for it, Wes? Because, you know, I always think that zip codes are a better option if you want to go for it.
I do.
I do. All right. Let's break it up. Let's find where he's at. All right, so this is a unique one. It looks like something from the binars here.
I know, right? Binary, postal code, what is this?
What's going on, Wes?
Okay, so I could be wrong. We did obviously get the Ecuador hint, so that's a big helper.
Yeah.
I couldn't find 010100, but it does look like if you sort of interpret it subnet style where that last zero means like the first sort of digits. I love where this is going already. Then that kind of makes sense with how it seems like Ecuador's postal structure is, or postal code is structured. So I think it is in the Asue province and then maybe near the capital Cuenca or the province around there. That's my guess, which has stuff like, let's see, it's got like a beautiful
looking park in here, which seems really nice. Yeah.
Let's go.
El Cajas National Park, which is in a mountainous region. It's got some, the capital looks like it's got some pretty dope architecture going on.
Sure does. Wow. It's beautiful.
So I don't know if I found the right place. I'm sure I pronounced the names wrong, but either way, I want to visit.
Yeah, for sure. It's also really impressive that he can actually sustain five players. MineTest, for those that don't know, is like a Minecraft-free software implementation. And so for five players, that's really great. An MPD server would be a media server.
Yeah, I like seeing MPD still being used. That's a good solution.
When's the last time either of you used Appendium 2?
Really long.
I know.
That's what's so great about this is it keeps these things out of the landfill. they still have valid uses obviously here they maybe are you pay for it on the power but that depends on everybody's individual area so that's really neat thank you nix uh i think we i think we're pronouncing it nix let us know if we got that wrong.
Well we have a couple boosts here starting with a baller free go lay, Frigol A sent in 67,011 satoshis.
Oh, thank you, sir.
They simply say, great coverage with a thumbs up.
Aw.
Thank you very much. And I feel like 67,011 might be a message. I feel like it might be, but I'm not sure. Thank you very much, Frigol A. I really do appreciate that. It is your, you are our baller. Thank you, sir. KRHill94 comes in with 10,000 sats. Support if my AlbiHub node is working I'm having some troubles It works! We got it You got it! Congratulations on self-hosting an AlbiHub.
It's a big step And we're proud of you Mm-hmm Mm-hmm And our final boost today Spooky Satcom comes in with 2,000 sets, Brent, your splits is killing my transactions Uh-oh Boost!
We have to look into that I.
Think Satcom here has, you know, a good spirit about it.
Yeah, yeah.
And we appreciate that.
Oopsies.
Yeah, sorry about that. We'll have to look into that. Okay, so it's a light week. It's a light week. I guess, does that mean anything to we?
That's Signal? Not Signal?
I don't know. The world's on fire.
March break, right?
That's true. That's true. That's true. We're going to, we'll move on. But we got, we did get some stream stats as well. We had 90 a stream. 4,876. It almost makes me think there's a technical issue. That's so low. That's so low.
Well, maybe we can blame Brent. his splits causing everyone to give up on boosting I'm fine.
With that yeah maybe we I'll.
Yell at my administrator his name's Chris.
Oh Captain Chris dang it that doesn't that doesn't do me well and when you combine it together we had 83,887 sats for this episode thank you everybody who supports us, it is a very light advertising season and you can support each individual episode and your boosts go directly to me Wes Brent Editor Drew and the podcast app, But it really supports all of us and gets your message on the show when you boost above 2,000 cents. We'll read your message, and it's always a great conversation.
You can also support us with a membership at linuxunplugged.com slash membership.
β ΒΆ Picks
We have some really great picks. Let's start with a nerdy one, and then we'll get to a listener-contributed one. But you found FQ this week, Wes. I know about JQ, but that's for JSON.
Yeah, that's right. And it turns out there's more in the world than JSON. So enter FQ. The F is for file. It aims to be JQ, Hexdump, DD, and GDB, four files combined into one. It's written in Go. It's already in Nix packages, and it's MIT-licensed. And it supports a ton of different formats. Apple Bookmarks, ASN1, AAC, MP3, CSV, FLAC files, LuaJit, a bunch of stuff for Postgres protocols, RTMP, SafeTensors format, which is used, VP9, WASM, WebP, ZipFiles, YAML, JSON, JPEG.
And so basically it gives you, you know, like with JQ, you can do like dot key or like get the third item from a list and then get a key out of that and kind of easy syntax for manipulating JSON structures. So the idea is the same thing here. So I downloaded our most recent episode, and it has MP3 support.
Oh, cool.
And so I can do FQ, and then you do dot frames, and then sort of the bracket zero to get the first frame, and then dot tag, and that gives me a bunch of the tag information. And I can do, from there, dot encoder, and it tells me it was encoded with flame.
I can see also you could do that same thing with a PNG or an MP4, whatever, really.
And of course, there's better dedicated, right? Like if you're just doing MP3s, there's tools for that. But the handy here is one tool to explore, work with, basically make it PDFs. json files exactly make binaries more accessible queryable and sliceable it does nested formats and bit oriented decoding it shows it to you in a nice sort of hex viewer style along with a more structured data format on the right hand side so something to add to your tool belt.
Very cool nice find wes and it's mit licensed our next pick this week.
Is one thing oh go ahead uh they have given very the author has given a few different presentations about it too including at Fostum 2023, so if you are curious, there's a bunch of ways to find out more nerdy teats.
Our next one is under early development. It's called File Fridge. It's Apache 2.0 licensed, and it's created by one of our very own community members. Martino writes, Hey guys, I remember a couple of episodes back you were talking about storage, price supply issues, and what you were doing to try to use other methods to store your media. I was, and I still have Blue Vault to back up to Blu-ray.
I was thinking about this very thing. I worked on a tool that runs in my home lab to move media that isn't accessed as often. To an external drive, and then drops a sim link to the file. I did use AI to code this with two kids I don't have as much time as I used to for projects. So check it out when you have time. It is under active development, and it's called File Fridge.
And the idea is, I love this, and I wonder if there's other things out there, where you have, obviously, your more precious hot storage that's fast and available, but maybe you're archiving things that you haven't accessed for a very long time. Instead of buying more expensive fast storage, you kind of, you know, you have cloud storage, you have disks around the house, a little more colder storage, right? Higher capacity. And that's the idea of FileFridge here.
And I just think it's brilliant. I'm wondering if there's other projects out there like this. You can set up rules and let FileFridge handle the cleanup on a schedule. The assembling thing is a really great idea. Then it'll also give you reports back on how much space you've saved. You can stay organized by using different tags and automated rules to categorize data across storage locations for, like, this goes to cloud, this goes to another disk.
And it has a FileFridge progressive web app, so you can use it on mobile or desktop. FileFridge.
I love the name.
Yeah.
Put your files in the fridge. Keep them good for later.
It's a nice project, open source, by a community member of ours who's working our way on this. Looks like it's mostly Python.
I have a sneaky app I'd like to throw in here.
Ooh, a last-minute sneak? Go ahead.
It's an app pick I've been using all week to continue the project we talked about last week on your diesel heaters.
Reverse engineering the signal.
Reverse engineering the protocol that the diesel heater of unknown make and model.
Which could be any device. It could be a thermostat. I think people are sick of us talking about the diesel heaters. That's why I mentioned it. It's not specific to a diesel heater. It's any kind of proprietary device that has a communications protocol that you want to build a control.
True.
Thank you. All right. Just want to inject that.
So I use the tool that is actually really great because we flash some logic analyzers to an ESP to try to break down that protocol. And this one is called SIGROC. And I think it's quite well known in those circles. But for those of us who are new to it, great tool. You could just flash it to an ESP. And it has something called a sub tool here called PulseView.
And Chris, remember, I was able to show you the visual representation of the signal that was coming in on the data line on your diesel heater.
Well, this is the part where I was like, this should be a pick. So you got the ESP doing the analysis and the whatnots, but then it's got a GUI for the Linux desktop to actually give you a visual of the signal.
That's so great.
So you could actually see like the boop, boop, boop, boop in the actual signal.
Oh, which we didn't need. Like, we could do it itself, but it was so nice.
It was really cool.
And it has, like, the ability to auto-decode specific protocols. So then you could see the translated bits and bytes and messages that are being sent. Very cool.
Pulse view, sometimes abbreviated as PV. And then the GUI part is a cute-based application.
Logic analyzer, oscilloscope, and MSO GUI for Sigrock.
That's cool. The GUI is licensed under GPL 2, I believe. So I think maybe the other side of it is β I'm not positive on that part. Oh, my goodness. So cool to walk up. And I mean, it's a it's a full on technical. Well, of course, I'm a noob. What the hell do I know? But you listeners, you got to check out the link in the show notes because the visualization it gives you is so neat to be able to. And then once you've once you've unlocked this, it's no longer proprietary for you.
Right. It is under your no one else. Right. Well, you can publish it, I suppose.
But our goal here, because we made quite a lot of progress is now Chris can just hit a button in his home assistant. Turn it on, turn it off, turn the heat up, turn the heat down. And we're working on getting other things like chamber temperatures and stuff like that.
Which could be good for safety reasons.
Totally.
Very true. And for automations. And it's not done quite yet. We're sorry. But we will publish this to the JBE GitHub just to share it with the world.
Yeah, maybe you've got an AC unit that you've wanted to be able to control or a garage door that has proprietary. Like there's all these things. Now, there's certain levels it won't be able to defeat. But there's a lot that it will and can. it really opens up a whole new world of like, just open it up and put some open source in it and make it better. You know, like they didn't ship it that way, but we can make it that way.
And this opens it up to a whole new world of hardware, you know, pretty much anything that has control buttons and an LCD screen and with some power, you, I mean, that's what this thing's working with.
And that's kind of been the missing link in a lot of ways, right? Like I remember in years past you, you know, giving tips of like, buy the dumbest thing you can, so you can do the automation with just a power or whatever your mechanism. So this may be unlocked stuff that you want a better device, but it comes with more, doesn't have simple analog controls.
So much stuff now has like a digital control or soft buttons.
Maybe remote, but proprietary with their own little thing.
Yeah. Yeah. And no more. It is such an unlock when you start thinking about it. It's really been exciting. And so then to be able to see it work and see it graphically represented, it's like, oh, this is something else. And it's all free software. Pretty, pretty freaking cool. All right. We have some questions for you.
So please do boost in on your thoughts around like the system D or technical implementations for age gating and verification, or if it's a hard line for you and what the alternatives are. And we're also looking for your ideas for kiosk mode for this thing and kind of anything you got, anything you picked up in that segment that we could make this better.
Please do boost in. It'd be a great way to maybe make next episode a banger since this one was such a sleeper and also help us advance this project.
And boost in with any good Vans.
Yeah, let us know.
Yes, please. That's actually the priority for all the other questions.
Of course, you can always make it a live Tuesday on a Sunday. Join us Sundays at 10 a.m. Pacific, 1 p.m. Eastern. And if you want more show, remember that LUP plug gets together every single Sunday while we're streaming. And there is that bootleg version with twice the content. And Wes Pano, if they want more metadata information around the show, we got that too, don't we?
Yes, we do. We got JSON chapters hosted in the cloud. And for finer grain detail, VTT and SRT files for transcripts.
How enjoy that getting more and more useful every single day also very useful the links to everything we talked about those will be posted up at linuxunplugged.com slash 659 you also find out how to contact us our mumble and our matrix info and a bunch of great shows over there at jupiterbroadcasting.com thanks so much for joining us on this week's episode of your unplugged program and we'll see you back here next tuesday as in sunday.
