Friday, May 29, 2026

Caravan (Part 1) - A New Plan For A New Place

My partner and I are looking for a new place to be.  Being the computing-dependent nerd that I am, I want to be able to have all the services I depend on in our current place available in the new place as soon as there's power and Internet.  To that end, I decided what I ought to do is build a road-ready rack with a firewall and a few computers in it.  Once we close on the new place and get utilities turned on, I can pop the rack in there, and be up and running in an hour or 2.

Some background -  About a year ago, I had switched from all my "vital services" being on VMs on a Proxmox cluster to hosting them on a couple RasPi 5s.  I consolidated a lot.  Where before I had separate VMs for my RMVOD, Icecast2, Desktop, food inventory web app, file services, and so on, I decided I could do a lot more with a lot less CPU and memory overhead if I just had it all running on one 16GB RasPi 5.  I have a second RP5 that is the Jenkins host and hosts backup media.  Actually there's a third RP5 that acts as a bastion server and rack console.  This resulted in using a lot less power and generating a lot less heat.  The file services are facilitated by 4 x 8TB disks configured in a RAID5 arrangement in a USB3 enclosure, viz:

 


Can be got here: https://www.amazon.com/dp/B0DD3GZSGJ 

 That USB3 4-bay HDD enclosure hangs off the one main 16GB RasPi 5, and holds my audio and video stashes, my personal file share, and various sundry other bits and bobs.  Other than that, and USB connections to printers and backup media, basically my whole "infrastructure" is handled by 3 Raspberry Pi 5s and a tiny Netgate box doing the routing. 

  This transition has worked out well.  My plan is to more or less replicate this success but in a portable package.

 Enter Caravan

 The name "caravan" was just meant as a nod to portability and the kind of "home away from home" self-contained nature of a camping trailer or RV.  I settled on a 6-space rack enclosure, such that it could handle a switch, a shelf for a Netgate 1100, 2U for a RasPi enclosure, and a PDU.

I ended up getting this enclosure:

 


Can be got here:  https://www.amazon.com/dp/B0CZ41ZHD6

 It comes with screws for the rails (it takes 10-32 screws, but prefers them short), so that's handy, but there's a few shortcuts taken by the manufacturer that might cause frustration.  The plastic stinks -- it off-gasses... It claims to be HDPE... and maybe it is, but I've never come across HDPE stinking like this.  Screws holding the rack rails to the enclosure are poorly placed.  Things like that.  On the bright side it's cheap, and I'm not going on tour with Aerosmith (or whoever the kids like today), so extreme toughness and/or ATA-certification is not important for me in this application.  Surviving an 8-hour car ride is the thing. 

 The switch I settled on is a simple TP-link 24-port unmanaged gigabit switch (TL-SG1024S). It fits in 1U, comes with the rack ears and is under a hundred bucks. 

 Can be got here: https://www.amazon.com/dp/B0779R9LJ3 

 The PDU is kind of an odd choice.  I went with one from Pyle.  Yeah, Pyle.  Normally, Tripp-Lite has been my go-to for rack PDUs in my personal/home stuff.  They're pretty bulletproof, and I've found them reliable.  In this instance, tho, I was anticipating having a bunch of wall-wart power supplies (because no one has figured out how to do a rack-mount muli-Pi power supply yet, apparently) and 1U PDUs with traditional outlets are just not happy with that.  This Pyle unit has all pigtails in the back.  It really is a thing of beauty.  Viz:

 


Can be got here: https://www.amazon.com/dp/B072RC5NZQ 

 The big deal, tho, is the enclosure/mount for the Raspberry Pis.  I wanted something that would accommodate the PCIe SSD capability offered by the Pi 5.  I also wanted to be able to stuff it with RasPis, because... who knows what kind of goofy shenanigans I might get up to?  I went with a GeekPi unit which stands the RasPis on their side, and has a daughter board for each of the 10 "caddies" which uses pogo pins for power delivery and some GPIO connections, and connects to the PCIe connector on the Pi for M.2 SSD support via flat-flex.  This enclosure holds up to 10 RasPi 5s.  My only big gripe with this thing is that the screws for the caddies aren't captive.  The daughter boards seem to work great, and packing up to 40 cores of Raspberry Pi goodness into 2U is pretty sweet.  The daughter boards move the power connection to the front panel, so easy power on/off is right there.

 


 Can be got here: https://www.amazon.com/dp/B0DQL2N6V9

I have the rack assembled and 7 of the RasPi slots occupied.  Now I'm building out services. I've currently got 1 16GB, 2 8GB and 4 4GB RasPis mounted.  One of the 8GB units has a 1TB SSD setup as a MariaDB server, with the OS on a MicroSD, and the data on the SSD.  The other 8GB unit also has a 1TB SSD, but the OS is installed on it.  This one is serving as a Desktop machine with xrdp installed.  I have one of the 4GB RasPis serving as a bastion server and rack console, and the other 3 4GB units have not been assigned, although I expect one of them will be a file & print server (and maybe identity) and one will likely be media streaming.  I have designs for setting up local email, chat, groupware, an Asterisk PBX, and a few other services.  The 16GB unit will host most of the dynamic web stuff (minus database and file needs).  I haven't worked it all out yet, and I have some room to grown in the GeekPi enclosure.

More to come

There's plenty more to do and a lot more decisions to take.  I'll update as this progresses, but I thought it might be nice to offer some of the stuff I've done so far in case anybody's considering a similar project.

I think that's all for now. 

 

 

Friday, August 1, 2025

Register The Click

 Remember when computers acted like computers?

Remember when you could tell a computer, "when this condition exists, do these things, then report the outcome"?  ...if the computer hardware and firmware was nominally operational, it would just follow the instructions and do the things.

I have a pair of Raycon "everyday earbuds" which ... work ... mostly.  When they work... WHEN they work correctly, they sound decent and stay in my ear for a little while.  ...which... y'know...  is mediocre.

When I open the little case and put the earbuds in my ears... about 50% of the time one of them has not woken up.  I then have to futz around and fumble with the sleepy one for a couple minutes to wake it up.  That's great.  When I go to STOP using them, I'll manually pause whatever media, open the case, remove one bud and place it in the case, then the other.  Close the case.  Wait a few seconds.  Resume playback of the media.  It's playing in the little earbud case.  Pause media again, go into Bluetooth menu on phone and manually disengage the earbuds.  Bump media back 30 seconds and resume play.  I have not run these earbud through multiple laundry cycles (not even one).  I have sweated pretty vigorously on them, but... they're earbuds.  People supposedly use them while working out and stuff.  In the rain.  That seems unlikely to be the problem.

Some of the blame may rest with Android (the Operating System on my phone), some may rest with the firmware in the tiny computers in the earbuds and the case that manage pairing, charging, and ... I don't know... selling my ear canal dimensions to Chinese data brokers?

In any event, it seems to me that there has been a trend ongoing since at least the arrival of Java that has put so much abstraction between when I press a "button" someplace and what happens as a consequence that it's basically up to a dice roll whether or not anything actually happens... and if something DOES happen, whether or not it's what I intend... that computers have become essentially useless.  

My user experience is getting sensibly and quantifiably worse with every new UI "improvement".  

I blame "capacitive touch sensors".  Seriously.  The promise of multi-touch screens was huge, and, after a decade or so of beta testing in production... they're about 70-80% there.  In that time, one-page web applications and smart-phone apps have banked on these touch screens being viable and reliable.  They are not.  Is it humid?  Is it dry?  Are your hands sweaty?  Have they been sweaty?  What's the pH of your skin?  Are you near a source of RF energy?  Are you in a hurry?  Did you press hard enough?  Did you press too hard?  Does the size of the touch surface impact its effectiveness?  It kinda seems so...  Couple this ridiculousness with the fact that UI designers are steering away from things like feedback.  An animation or color change or "click" to acknowledge a "button push".  Not in five minutes.  FUCKING NOW.  ...and maybe an indication that the thing is actually working on something and hasn't just FROZEN.  A throbber, a progress bar... a CLI spinner or series of periods as the process moves forward.  I can do without proportionally-spaced anti-aliased vector fonts and window transparency if it means I can get what I need done, done... without all the anxiety of "did my button push register?!" and waiting in uncertainty for some indication that I will get the result I want.  

I want my computer experience to be as reliable, immediate, responsive, and free from anxiety as playing actual real live acoustic drums.  I hit drum with stick, drum does what it's supposed to do, immediately, and without any perceptible "consideration".  I want it to be entirely predictable.  If I hit the head dead center, I expect it to sound rich and full,  If I hit it off-center, I expect it to sound pinched and a little funny tonally.  If I hit the rim, I expect it to add a certain additional sound.  I don't have to watch my stick hit each drum and wait for it to make a sound.  I can not-look-at-the-drums while I'm playing and have a fair idea of whether I'm hitting them correctly.  Right away.  I have confidence in drums.  I have no confidence in modern computer user interfaces.

I don't hold out any hope that I'll see an eight-core, sixteen-thread personal computer running at four gigahertz with thirty-two gigabytes of RAM that can get out of its own goddamned way and and just register a fucking button push when I push the fucking button, rather than waiting until it takes another screenshot and "encrypts" it so Microsoft can... what? ...masturbate to it?  I don't need the window to be transparent.  I don't need fancy convolving animations and sound effects to know that I just minimized a window.  Register the click and do the thing.  NOW.

First of all, I need feedback.  Give me confidence that I have actually pressed a button. 



Wednesday, October 16, 2024

RMVOD r0.9.3 is here!

 Hi folks!  

A view of RMVOD's List/Search tab with new updates and TV Series Playlists expanded



Well, TV Series Playlists are here, as well as some fixes to Recommendations.  Here are the release notes:


RIBBBITmedia Video On Demand - Tag 0.9.3 (Get it here)

Introduces TV Series Playlists, consolidates Playlists and Recent Episodes to List/Search tab, some bug fixes.

TV Series Playlists

This is a new feature which provides the ability to create (and edit) playlists of TV Series, such that the user's watch history is scanned to find the most-recently watched episode of each series, and plays the next (one) episode for each series listed in the Playlist, in the order listed.  Playlists can be set to repeat a series when the end is reached, and continue playing the Playlist over and over until the user stops it.  If a Series is set to not repeat once the end is reached, it will be skipped and no longer appear in the sequence of played episodes, unless the user manually initiates playback of an earlier episode in the series.  In that case the next time the Playlist is invoked, it will resume playing the previously-ended Series from the episode following the one manually played. Also, a playlist can be associated with a single user or set to be "sitewide", meaning all users on the Server have access to it.  Users can create and edit playlists, and the editing takes place in the Edit tab.  Any information in the Edit tab at the time the user opts to create or edit a Playlist will be wiped out.  Note that the behavior of the Playist edit function is different in that the "Update" button must be pushed for the changes to be posted to the server.


Rework of left-side of List/Search tab

The left side of the List/Search tab used to have the "Search Factors" and "Recommendations Quick Lists", which spilled off the bottom of the tab, requiring a scroll bar.  The "TV Series Playlist" and "Recent Episodes" lists have been integrated into the left side of the List/Search tab, using a collapsible tree view widget.  By default, the "Search Factors" section is exposed, but the caret-in-square-braces at the left of the section label can be clicked to expand or collapse each section, and if it does spill off the bottom of the tab, a scroll bar will automatically appear just for the left side of the tab, meaning that the list area on the  right of the tab no longer "double-scrolls".  The  "Recent Episodes" section has been refactored to make more efficient use of screen space, and displays the relevant information in three columns, rather than 5.  The name of the Series, the Episode last played (which is a button to replay that Episode), and the word "Next" (which is a link to play the next Episode in the Series.


Significant bug fixes

For internal Javascript links/buttons, added  "cursor: pointer" to style for the functional spans.
"Artifact Play Progress" functionality begun, but not finished.  No sharp edges exposed to user.
Fixed some session cookie persistence issues

Saturday, September 21, 2024

Remember Watching Reruns On Local TV?

 I know it's been a while since I've updated on anything here regarding any of my ongoing projects...

Well...

Binge-watching a TV series has become a pretty popular thing, and I've certainly done it myself.  The sense of the "episodic" nature of a lot of (especially older) TV shows is kind of lost, though, when I binge them.  I started really noticing it, strangely enough, watching Star Trek: Strange New Worlds.  I found I enjoyed it more watching one episode, going away and doing something else, then coming back and watching another episode, maybe a few days or weeks later.

RMVOD has finally made some progress.  One new feature that I've been ruminating about for a while was doing something akin to what you might see on a broadcast TV station in the 80s or 90s... a scheduling block of syndicated TV shows.  Typically a TV station would buy the rights to a TV show, and just play one episode a day, or one day a week, rifling through the episodes in whatever order the distributor provided them in.  Granted, some gave it more thought than that, but... They would have a block of shows for mid-morning, early afternoon, late afternoon, evening, and so on.  Weekday and and weekend schedules. 

A screenshot of RMVOD showing the TV Series Play List content.
 TV Series Play Lists in RMVOD

So, what I'm working on is something similar for RMVOD.  It's a playlist of TV Series, not individual movies or episodes.  When you initiate playback of a "Syndication Play List", the UI calls the API to request a list of the episodes to play.  The server looks through you watch history to see the most recently watched episode in each series, and picks the next one.  Of course, not all series have the same number of episodes.  There's an option in the Play List to specify whether a Series should loop back around to the beginning when it runs out of episodes.  If a Series runs out of episodes, and the Series restart flag is not set, then the series is skipped.  There is another option on the Play List which permits the programming block to keep looping until you manually stop it.

Right now, the only thing that's working is the basic Play List interpretation and episode selection on the server, and playback in the web client.  The storage of Play Lists in the database is solved, however, currently the Play Lists offered to the user are hard-coded in the web client.  Display and selection of a playlist in the web client is minimally solved, but creation, editing and deletion/deactivation of Play Lists is still to be developed.  

So, it's a baby feature, but just testing it out, I've really enjoyed the "one episode at a time for each series" thing... and as I get used to the patterns of the playlists (show A, then show B, then show C) I suspect it will be more enjoyable and relaxing.  Maybe this is just a me thing, but I find it more enjoyable than binging for a lot of shows... maybe most of them.

One thing I've also been thinking of as a stretch goal for this playlist feature is a "movie of the week" sort of function.  Basically, create a special kind of artifact (an new "Major Type", maybe) which picks out a movie that meets certain user-definable criteria, and hasn't been watched in some period of time (90 days, maybe), and inserts that into the artifact list.

Anyway, that's what's been going on at RIBBBITn3rding.  If you're curious, you can check out the code for RMVOD here: https://github.com/taobear68/rmvod  (it's Open Source)

Saturday, April 13, 2024

...and you thought MS Windows was inexcuably bad before....

 This article tells us that Microsoft will be including ads in the file browser of Windows 11.

So let's see if I have this straight.  Microsoft gets money from the computer OEM for the pre-installed version of Windows.  Microsoft collects "usage data" and possibly other personal data which it can use to tailor future versions of software to be more profitable, and also sell on to third parties making more revenue.  Microsoft gets to show you ads when you use their search platform which is defaulted in the pre-installed web browser ("Edge"), and now Microsoft is going to show you ads in your file browser.

I can't help but wonder how many steps there are between this and Microsoft just showing up at your house in a windowless van, pulling a black fabric bag over your head, dosing you with a paralytic, and take you off to some undisclosed site where they harvest all your black-market saleable organs and tissues, and dump what's left in the Berkeley Pit.

OK, maybe that's hyperbole.  Maybe.

The article says that this won't affect commercial users.  Goodie.

So-called "insiders" will get the ads in the "Beta Channel".  The article suggests that negative feedback from these "insiders" could influence Microsoft to not promote this "feature" to general release.  I have my doubts.  

If Microsoft was giving away (free as in beer) full-fat Windows Professional (or, better still, "Windows Server") with no restrictions, and wasn't doing the "telemetry" thing... maybe I wouldn't mind ads in the file browser.  ...maybe.  Windows is already generating revenue, and provides them an "in" to sell more products and services.  I suspect Microsoft could afford to distribute Windows for free as a "loss leader" and only charge for the add-ons (MS Office and so on) and it wouldn't really hurt their money position.  According to this, Windows 11 amounts to just over 10% of the company's revenue.  The overwhelming majority of their revenue comes from cloud services (Azure and Microsoft 365) -- more than five times what Windows 11 brings in.  That's also where most of their growth is.  Some Internet stats show MS Windows declining in market share to Mac and Linux, to as low as the mid 70% range.  

 Ironically, Linux is crushing it on Microsoft's cloud platform.

Tuesday, February 20, 2024

Proxmox Migration - Progress Report #3

The dead speak!

OK, it's not quite that cartoonish.  Jerome is up and running Proxmox.  It is in the cluster with joanna.  Migrating running VMs between the hosts is a piece of cake.

Networking appears to be doing networking properly, so that's good.

I've created new PFSense and TrueNAS VMs on jerome and am currently migrating the data from the TrueNAS VM I created on joanna over to the one on jerome.  I chose to rsync the data over rather than try to move the running VM because the way I have the storage set up on jerome is different - I have one big ZFS drive on the host, and mutiple virtual disks shared up to the TrueNAS VM on jerome, whereas I just did one big ZFS on jaonna and gave the whole thing to TrueNAS -- in retrospect, that appears to have been an error.  The way I'm doing it on jerome allows me more control over the shares and the ability to regulate provisioning of storage add storage if needed, which was not really available the way I did it on joanna.

...well, that was yesterday.  As of today, jerome is completely stood-up, and all my "expected to be up all the time" VMs are there.  Storage has been built out and migrated.  The PFsense VM is doing its thing.  My DNSMasq host - an olde Raspberry Pi 2 - has been repointed (hopefully for the last time) to the PFSense firewall on jerome.

Storage share clients have all been pointed to the new trueNAS VM on jerome.

The only things that didn't go as I'd initially planned were:  

  1. I was unable to use a larger NVMe SSD on jerome because old motherboard
  2. SO's MS Windows VM had to be recreated with the storage from the original VM mounted as a bag on the side.

All things considered, I'm very happy with the way the migration to Proxmox has gone.  

Joanna now houses lab/testing VMs, and will be off unless access to those VMs is needed.  Jerome is the primary VM host again, and the manageability and robustness has never been better.

Next, I'll have to work out how backups are going to be done.  That shouldn't be too bad, tho.

So, this is me, calling the Proxmox migration a success, and signing off for now.

Tuesday, February 13, 2024

Proxmox Migration - Progress Report #2

Joanna - the new Proxmox host - is up and running, and all but two VMs have been migrated, and demonstrated to work properly.  I've created a new PFsense VM on joanna, and configured and tested it.  This will operate in place of the one still running on Jerome - the old VM host based on VirtualBox.  The "old" PFsense VM will not be preseved.  A new one will be created once jerome has been setup to run Proxmox.

The other VM still running on Jerome is my SO's desktop VM (running - shudder - MS Windows).  The one dificulty I expect may happen when migrating is the whole "you've replaced too much hardware" alarm going off and having to re-register MS Windows 10.  On the plus side, it's retail Win 10 Pro.  As such, my understanding is that you can re-home the license, unlike OEM versions.  The possible downside is Win10 is approaching EOL (October of next year) and MS would really rather you use Win11 because telemetry.  We'll see.  I'm confident in my process for migrating VMs from VirtualBox to Proxmox.  I'm less confident in Microsoft.

Floyd - the old storage host - is still plugging along.  All shares have been moved off the storage on jerome, and all clients are re-pointed to floyd.  That's good.

I'm planning to migrate routing from the PFsense VM on jerome to the one on joanna today, and shutting down the one on jerome.  This coming Saturday, I'm planning to migrate the last VM - the Win10 one - off jerome, and lights-out the box for the last time as an Ubuntu-based VM host running VirtualBox.  Then, hopefully, I can take my time getting jerome stood up as a properly-configured Proxmox host.


Caravan (Part 1) - A New Plan For A New Place

My partner and I are looking for a new place to be.  Being the computing-dependent nerd that I am, I want to be able to have all the service...