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.


Saturday, February 3, 2024

Proxmox Migration - Progress Report #1

I have procured parts to build a "modern" Proxmox host, including an ATX MoBo, 12C/24T AMD Ryzen 7900X, 128GB RAM, a 2TB SSD, and 4 x 1GB NIC.  I've pre-built the new host (Joanna, named after Roz mother from Frasier ...and, yes, I've set up that many machines that I'm going that deep into the bench of Frasier characters) on a "test bench" frame I bought.

The parts... minus the NIC and SSD.  Also ended up
using the cooler that came with the CPU.

I have done some storage experiments, and arrived at the conclusion that using the existing 18TB disks in a XFS RAID5 will be the way to go.  That means I will need to wipe the disks and re-format them when I do the OS Reinstall on Jerome.  For continuity of service, that means I need to port those files off to somewhere else.  I have decided to light up Floyd, my old 20-bay storage server, which has been cold iron for a little over a year (that's when I migrated storage to the disks onboard Jerome).  Floyd is up and operating as expected.  I have migrated my video library back over there, and now I have to migrate my other file shares over there.  Then I need to repoint all my share mounts.  That'll be fun.  This is in preparation for the OS install on Jerome.

Of course, I'll also need to migrate all the VMs currently running on Jerome off to Joanna.  In previous migration attempts, I have not forced the MAC address of the copy to match the MAC of the original.  For these remaining VMs, I really want to make sure the copies on Joanna look just like the originals did on Jerome.  Hopefully I can coordinate everything and set the MACs, and they just come up.

I've done some networking experiments with the new NIC, and managed to get 2 of the 4 interfaces set up, which is the minimum I need to set-up my replacement PFsense VM.  I plan on the other two being "room for expansion".  I've decided to go with a replacement rather than a migration, as I want to be able to "flip the switch" on my other machines -- from VirtualBox-based VM to Proxmox-based VM -- without any down time.  Once Jerome is back up running Proxmox, I'll just set up another PFsense VM there.  ...but I'll be able to take my time and make sure all the network interfaces are set up and working as I expect.

I had hoped that I could setup a "storage" VM on Joanna, and mount the shares from Floyd there, and re-share them via NFS, which, I'd hoped, would eliminate the need to re-write all the /etc/fstab files on all the machines on the network that use the shares twice.  It looks like that's not going to work.  However, I did figure out how I'm going to do the big disk array once Jerome is running Proxmox, and I will be using a storage VM to share those filesystems... I may even try out TrueNAS.  Who knows.  At a minimum, I can just use Debian, as my needs are pretty contained.

Ultimately, my plan is for Jerome to be the "prime" VM host, where all my "full time" VMs (storage, firewall, desktop, streaming servers) will run, and Joanna will be my "secondary" VM host, where "lab machines" and other non-full time VMs will live.  Each VM host will have its own local storage, but the "Big Store" will live on Jerome for the foreseeable future.  Floyd (named, incidentally, for Mayberry's favorite barber -- I used to name my machines after Andy Griffith Show characters) will go back to cold iron once the migration on Jerome is complete.

Today, I plan to move the guts of Joanna into the case I'd originally bought for Zora.  Then, I'll migrate some (all?) the non-PFsense VMs to Joanna.  Maybe I can also set up a PFsense VM on Joanna.  We'll see.  It looks like it'll be a full, rich day.

Register The Click

 Remember when computers acted like computers? Remember when you could tell a computer, "when this condition exists, do these things, t...