LINUX Unplugged - 659: Truth Trapper Keepers
Episode Date: March 23, 2026The self-hosted app that turned Chris into a family Time Lord, then we iterate on a long-desired hardware hack.Sponsored By:Jupiter Party Annual Membership: Put your support on automatic with our annu...al plan, and get one month of membership for free!Managed Nebula: Meet Managed Nebula from Defined Networking. A decentralized VPN built on the open-source Nebula platform that we love.Support LINUX UnpluggedLinks:💥 Gets Sats Quick and Easy with Strike📻 LINUX Unplugged on Fountain.FMLinuxFest Northwest 2026 - Back to Root — April 24-26, 2026 - Bellingham, WashingtonKeeper.sh — Keeper is a simple & open-source calendar syncing tool. It allows you to pull events from remotely hosted iCal or ICS links, and push them to one or many calendars so the time slots can align across them all.Keeper.sh: Calendar Syncing, V2 ReleaseOneCalPiBox Overview - KubeSail DocsPiBox: A Modular Raspberry Pi Storage Server by Dan Pastusek — KickstarterRPi CM4 based local storage server launches on KickstarterKubeSail — So Long, and Thanks for All the Podsipetkov/nixos-pibox — NixOS modules for supporting the hardware present on the PiBoxraspberrypi/usbboot — Raspberry Pi USB device provisioning tool (RPIBOOT)cage-kiosk/cage — A Wayland kiosk. A kiosk runs a single, maximized application.systemd: BirthDate Field Added to JSON User Records — "Add birthDate field to JSON user records, allowing for standardized age-related logic within the userdb framework."Azuay Province - WikipediaPick: fq — fq is like jq but for binary formats, allowing you to tool, language, and decode complex binary data into human-readable structures.Pick: file-fridge — move files that aren't accessed as often to cold storagePick: sigrok — Portable, cross-platform, Free/Libre/Open-Source signal analysis software suite: logic analyzers, scopes, multimeters, and more!Pick: PulseView — a Qt-based LA/scope/MSO GUI for sigrok
Transcript
Discussion (0)
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, Mumbarroop!
Thank you, so much.
Hello, handsome Mubberoo!
Yeah, and shout out to that, packed quiet listening, too.
Nice to see you all up there.
Woo! 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 Manage Nebula.
Define networking has Managed Nambula, and it's a decentralized VPN built on top of the open source
Nebula platform.
We love, 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 is 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 independencies,
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.
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 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.
Indeed.
Yes, really, really big thank you.
Go check them out.
Keep in 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 J.B. calendar,
and then I've got the show calendars.
Live streams.
Yeah, 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,
or 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, like, 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
they're trying to book with me.
Right.
It gives you a single pane of glass, but they don't necessarily get to, 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 and 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 and 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 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
feet, and it all comes from Keeper. And Keeper makes it simple now because when, uh,
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, you know, mistake gaps of time or whatever because of it's cross calendars.
It gives my family one source of truth or you guys, you know, 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 clothing 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.
It keeps track of the different time slots and things like that.
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
or 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
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?
Whoa.
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 clat 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 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.
Yeah.
Yeah.
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, next one of my biggest ever.
But it generates system to unit files.
It sets up a Podman network.
It sets up the NGNX 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 EngineX 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 boot, boop, boop, bo, bo, 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, you know, sort of the 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 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 agent, I can just also write to all the source calendars.
So I don't, 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, there's 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 a CLI.
It's great.
I don't 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 J.B. calendar.
But you're providing him with, you know, Chris's Everything calendar.
Now is he getting duplicate entries because you have the J.B. calendar on there.
And then he also has right 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 for people.
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 riding 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.
Well, you just need to know if I'm available.
Uncle Brennan needs to know sometimes.
Yeah, 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 there's very active.
The developer, this is a Sunday morning, and the developer just committed something two hours
ago.
It's AGPL 3.0, and it's 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 the developer was scratching an inch the same one you had, which is
kind of funny.
It's had this working on some project, three calendars across business,
work in personal and yeah.
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, I was trolling, I was trolling GitHub and Reddit and X for a solution and came
across.
Nice.
Yeah.
And then I tracked down the developers 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 the new 2.0 is out.
And he just released 2.914 an hour ago.
I already got an update.
boys. Wait another day against Redotto.
Yeah, it's not a big update. It's just a calendar off
fix, which I didn't run into. But
really night. I mean, a guy's clearly
dedicated to it as well. So, very
cool to say it. Let's not burn them out. I'm not sure.
It's a reader. I'm not sure. RIDA is
the developer's first name or handle.
But a 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 Linuxonplug.com
slash membership and become a core contributor
or support the entire network at jupiter.
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 that don't make
it. The main show, not intentionally. It's just because it's a
organic discussion kind of...
It's a hangout. Yeah, it's a hangout. And so we've gotten
in some really good conversations there, and it's additional content.
And 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 either way, we appreciate your support. It's
Linuxunplugged.com slash membership
or jupiter.org 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 Cube Sale?
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, USBC 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 disobey a sound.
for what's in there.
I'd say it's as thick as like two,
three and a half inch distacked,
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,
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 a larger...
Carrier board.
Yeah.
Yeah.
Cube Sail Hat compatible GPIO?
Ooh.
Wow.
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
back plane.
A backplane for
SATADIS.
Yeah.
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.
And, okay,
CM4.
So that's like
Pi4 era,
but was the
CM4 like
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 2 USB 2.0, like you
mentioned, a type C. It's also got a microSD card slot on there.
And then on the front of the box, and 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 Pi Box Cube Sale was $2.99.
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 Brett and I discovered this.
And, um,
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 source their code.
They open source a lot of stuff.
Oh, that's great.
I mean, sad, but best case, I guess.
The cube sale comes from they were using Kubernetes under the hood of their...
I was going to ask.
Yeah.
Was this meant to be like a host to run Kubernetes on the pie platform?
Yeah, and then deploy applications and install SSDs and have a tiny low power NAS.
It's, and looking back,
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-label,
yeah. What is this?
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 order 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?
Mm-hmm.
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 High Sense must be paying them
to put these TVs in.
It's the only reason you do it.
And High Sense just announce that these TVs
are now going to, while they're booting,
which takes forever.
They're going to play advertisements.
Because don't solve the problem of making a boot faster.
Just take advantage of the slowness to sell you.
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 last Airbnb, which is right next to L.A., right next to Pasadena.
The Wi-Fi was so bad from the area and 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
that 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 it slotted in,
and maybe it runs a Somba server,
maybe it runs Ersats TV or Tuna 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.
Yeah, 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, you know, throw up a hot spot.
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 HTML.
That's also true.
That's also true.
And you have a jellyfin out.
And everybody's got to use 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.
Maybe. Wes will, I think, agree with me that we took a listener's device. It was a bind phone, which is, 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. You know, 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 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 guy.
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 pie get a little easier to deploy on.
I assume you didn't even try to get the Cube Sales software in Kubernetes running.
No, because it's also pretty old now at this point, Debion 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 actually.
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 out.
There may have been some yelling.
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 USBC.
So now it's getting powered from your laptop.
and when it's an R-Py 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 R-Py Boot can write to it.
And so what Bruntley is going to do is build all these on his X-86 PC in an arm VM.
Sounds great.
And then flash them using R-Py boot to...
This is in his sort of factory assembly line that he turned your RV into?
You are not kidding, dude.
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.
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 pre-package 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 pre-built packages makes the most sense if you're on
86.
That was going to...
Well, I remember I tried
the cross-compile path
way back when I first tried
getting NixOS on a pie.
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 YouTube stick.
So it didn't seem necessarily that much simpler.
Yeah.
So I went down the crazy bath 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 upright, 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 Somba and that 480 gigabyte drive.
And Wes, get ready for this.
I went with XFS.
You know, I wondered, 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.
Colonel Boot XFS.
It still says SGI XFS.
Yes, it's great, isn't it?
Yeah, I don't know.
We had the moment, and Brent claims that he is a B-Cash-FS hater now.
No, I'm kidding.
No, I just wanted to try it, I guess.
We could always reformat.
We tried B-Cash-F-S first, and there was, I guess, an error in the current builds in X-OS.
For on?
Yeah.
Okay.
So we just skipped over it.
But it will come.
I mean, you got an X-OS, 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, a Baywatch on the way.
We should have put some staples that we always watch at Airbnb's.
And then Brent found a USB adapter that you can plug an MVME disk into that we took
from an old busted laptop.
Ooh.
And so we're going to use that for, like, the more current stuff, like the updated stuff.
So you just want to 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 until 2 a.m.
working on this.
So I don't know how far he got.
Well, we're going to need to join it to a Nebula network.
Yes, so true.
It is going to be, we're going to have a Nebula network for all of this, so it'll be able to route.
That thing will become a nebular 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 is we need this.
we 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 HTML 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.
All right.
Something called Cage or Cage kiosk, which is a Whalen-based kiosk, which is fairly minimal,
so good for these little compute modules.
And it just gets you a whalen session with the application that you want to run.
It's wonderfully simple.
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.
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 inactive development.
And I think we should
just go with this plane
unless someone has a much
better idea because I seem to be.
Yeah.
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 don't. We're all very technical savvy.
But we 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 easier for her.
We want to make a hard for PJ.
We could get a better version of that 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 caged 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.
Right.
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 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 we have, 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, you know?
Use the hardware you have, I say.
Yeah, really, tis the season, right?
How did you even, was this just on a shelf somewhere?
Like, how did this happen?
Yeah.
So this has been beside the fish tank in the living room, which we spend quite a lot of time in.
Yeah.
For about the last four years, I've had my eye on it and decided to just dig in.
Mm-hmm.
I mean, it's pretty dang neat.
It is pretty dang neat.
So, and it's, 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.
Wes might be a little disappointed because I also tried to upgrade our process
because I don't want to...
We always want to deploy to this thing remotely.
So deploying to it with NixOS anywhere
and using Disco would be nice,
especially if we change to a different device
to just have a NXOS 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.
What?
K-exec does not work on the CM4.
It has been more hit or miss on...
I think there are definitely armed devices that can do it,
but I don't know which ones.
A K-execlist 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 like a limit on the number on the size of the list, but...
Okay.
Maybe we could sort that out after the show.
Yeah, I think so.
All right.
All right.
So we have one other question.
Maybe get Brent's lawyer involved.
Well, we're bringing up questions for the audience.
B-O-O-O-S-T.
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 System D 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 a early version in Washington state that hasn't gotten very far.
Some efforts in Illinois. More and more widespread. Then when you zoom outside the states,
there's countries outside the states like Brazil and others that are also passing similar
accitation requirements by the operating system. So we are very quickly as a community,
finding ourselves between a awful rock and a awful hard spot. And I think we're a
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 and 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 System D birth date field, if you're curious.
It's essentially a JSON user record that the distribution and the software that is on top of that would then read from.
At this point, no distribution is 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 System D.
So it's a conversation that's happening.
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 would be a great way to get a conversation going.
I also want to mention that Linux Fest Northwest, 26, is just around the corner 33 days away as we record April 24th through the 26 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.
You know, 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 rescuble 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 Linux unplugged at Jupyter Broadcasting.com or sent us a boost.
Maybe we'll put you on the schedule this year and go do a van rescue.
That would be amazing.
Mm-hmm.
We do this thing now when we're out dragging around.
We're always spotting vans.
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.
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.
It's 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 influencer.
Ready to go.
Yeah, there you go.
You know, Wes does need an RV sleut.
I do.
He's the only one of us that doesn't currently have sleeping.
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.
I'll buzz.
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.
Oh!
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, sorry.
I read that.
Oh, SD card.
Yeah.
Swaps it out for an SD card.
Yeah, 64 gigabyte SD.
Still probably better than the spinning rest, though.
Yeah.
And hosting a Luan tea or mine test server over on it.
I've been hooked up to my, it's been hooked up to my tailnet,
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, right.
We got a zip code here.
This is a binary.
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.
Okay.
All right, let's break it out.
Let's find where he's at.
Yes, zip code is a better deal.
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 01010, but it does look like if you sort of interpret it.
subnet style where that last zero means like the first 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 assway province and then maybe near the capital uh quenka or the province around there that's
my guess which which has stuff like el let's see it's got like a beautiful looking park uh in here which
seems really nice okay let's go the uh el kaha
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. That's beautiful.
So I don't know if I found the right place.
I'm sure I pronounced the name's wrong,
but either way, I want to visit.
Yeah, for sure.
It's also really impressive that he can actually sustain five players.
Mind test, 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 an MPD still be in use.
That's a good solution.
Last time either of you used a pendium too.
Really long.
Yeah, 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 may be, you pay for it on the power, but that depends on everybody's individual area.
So that's really neat.
Thank you, Nix.
I think we're pronouncing it, Nick.
Let us know if we got that wrong.
And now it is time for the boost.
Well, we have a couple boosts here, starting with a baller, free go-lay.
Frigolet sent in 67,011 Satoshes.
Oh, thank you, sir.
They simply say, great coverage with a thumbs up.
Aw.
Thank you very much.
And I feel like 6711 might be a message.
I feel like it might be, but I'm not sure.
Thank you very much, Frigolet.
I really do appreciate that.
It is your, you are our baller?
Thank you, sir.
K.R. Hill 94 comes in with 10,000 sats.
Coming in hot with the boost.
Support.
If my Albi Hub notice.
working, I'm having some troubles. It works.
We got it. You got it.
Congratulations on self-hosting in AlbiHub.
It's a big step.
And we're proud of you.
And our final boost today,
spooky SATCOM comes in with
2,000 sats.
Brent, your splits
is killing my transactions.
Uh-oh. Oh, no.
Boost! We have to look into that.
I think SATCOM here has a, you know,
a good spirit about it. Yeah. When 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,
does that mean anything to we? No. 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, uh, we did get some, uh, stream stats as well. We had
9 of your stream 4,8176. It obviously makes me think there's a technical issue. That's so low.
That's so low. Well, maybe we can blame Brent, his, his splits causing everyone to give up
on boost. Yeah, maybe we just, or, yeah. 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 boost go directly to me, Wes, Brent, Editor Drew, and the podcast app.
We really do support, it really supports all of us and gets your message on the show when you boost above 2,000 sats.
We'll read your message, and it's always a great conversation.
You can also support us with a membership at LinuxUMPLug.com.
slash membership.
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 J-Q, 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, hex dump, 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, AACC, MP3, CSF, FLAC files,
LewadJIT, a bunch of stuff for Postgres
protocols, RTMP, Safe Tensors Format,
which is used VP9, WASAM, WebP, Zip files, 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
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...
Oh, one thing.
Oh, go ahead.
They have given, the author's given a few different presentations about it, too, including
at Fostom, 20203.
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.
And I still have Blue Vault to back up to Blu-ray.
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 synlink 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 access
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 file fridge 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 file fridge handle the
cleanup on a schedule. The simling thing's a really great idea. Then it 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
the storage locations for like,
this goes to cloud, this goes to another disk,
and it has a file fridge,
progressive web app, so you can use it on mobile
or desktop.
File fridge. I love the name.
Yeah. Put your files in the fridge.
It's a nice... Keep them good for later. It's a nice project
open source by a community member
of ours who's working away on this.
It looks like it's mostly Python. I have a
sneaky app I'd like to
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 is that the diesel heater of unknown make and model.
Which could be any device.
It could be a thermostat.
It could be.
I think people are sick of us talking about the diesel years.
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.
I just wanted to inject that.
So I used a 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 Sigrock.
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 Pulse View.
And Chris, remember, I was able to be able to.
to show you the visual representation of the signal that was coming in on the data line on your diesel
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.
Which we didn't need.
Oh, we need 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, an MSO GUI for Sick Rock.
Yeah.
And the GUI is licensed under GPL2, I believe.
maybe the other side of it is,
I'm not positive on that part, but
oh my goodness, so cool.
To walk up and, I mean,
it's a full on technical, well,
of course, I'm a new, what the hell do you want to know?
But,
listeners, you've 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
and no one else. Well, you can publish you,
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 we, it's not done quite yet.
We're sorry, but we will publish this to the J.B. GitHub just to share it with the world.
Yeah, maybe you've got a, you know, 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 that won't be able to build a, you.
able to, you know, 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, 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.
Yeah.
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 SystemD 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 Boosting.
It would 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.
See you next week.
Same bad time.
Same bad steam.
And if you want more show, remember that Lep-Bug gets together every single Sunday while we're streaming,
and there is that bootleg version with twice the content.
And West Payneau, 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,
BTT 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 Linuxunplug.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 unplug program,
and we'll see you back here next Tuesday,
As in Sunday.
