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.


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.

Tuesday, January 30, 2024

Migrating from VirtualBox to Proxmox - A beginning

A long time ago, now (2019, as it turns out), I set up a super-duper AMD Threadripper machine with 16 cores and 32 threads, and 128GB of RAM to be a Virtual Machine host for my home lab. Since then, it has evolved into the host for my PFsense router, my "desktop" machine, and a bunch of other VMs, as well as my storage server. At the time, I set it up with a regular Ubuntu install with VirtualBox running on it. All these VMs are being run on VirtualBox. 

I know. 

Well, time-and-a-half went by, and I became aware of Proxmox. I never really had spare hardware with enough grunt to really try it out, so I kinda let it go. Then, my employment relationship with that online furniture retailer (as well as those of about 500 other folks) suddenly ended. The machine I'd put together as a "BYO" desktop for work was suddenly out of a job as well. That was a pretty beefy machine... AMD Ryzen 7, 8C16T with 32GB of RAM... but it had a sort of narcolepsy problem. it would just... for no apparent cause... stop. It didn't seem to be thermally-related... not the power supply. I have no explanation... it just farts out... but I can usually get a good 6-8 hours out of it, sometimes a lot more. ...so it finally dawned on me that this old beast might be a good Proxmox test mule.   That was a couple months ago.  I decided to give it a go, and I like it. I like it enough that I want to migrate my "production" VM host to Proxmox. 

Well. 

I'd hoped to migrate the VMs, one by one, to Proxmox on a different host, and then do an OS re-install on Jerome (the Threadripper box - named after the "good family man" to whom, Frasier and Niles owed a "favor") with Proxmox, and migrate some or all of the VMs back over. 

The old BYO machine (named Zora, after Fraiser's "excitable" Greek aunt... I have a lot of machines named after characters from Frasier) is based on a Mini-ITX motherboard, so it has only one PCIe slot, and that's taken up by a video card. I need more Ethernet ports to run my PFsense router... and, of course, there's the "oops I forgot how to computer" problem. So, I decided to build a new machine, with a full ATX motherboard, and slots... and I managed to find an AMD Ryzen 7 CPU with 12 cores and 24 threads AND a built-in GPU... so that's exciting. Not QUITE as heavy as Jerome, but pretty good... and 128GB of RAM. So, I can put a 4 x 1GB Ethernet board in there, and run my PFsense router, and the board has 4 SATA ports, so I can figure out how to do my storage. 

Ah, yes, storage. Jerome has three 18TB drives in a RAID5 array, and those are run by the host OS. I'm thinking that under Proxmox, I will have the raw drives forwarded up to one of the VMs that will serve as the storage server... but I'm not entirely sure how that will work. I haven't really dug into the docs yet. I know it's been done in other KVM environments, so... I'm confident it should be doable. When I get the new machine up and running I can try it out. It would be lovely to just be able to take the disks as they are, and plug them in on a fresh Proxmox install, build a fileshare VM and just... ta-da! We'll see. 

So, the parts for the new Proxmox host are supposed to show up today. Hopefully, everything goes together without a hitch, and I can begin properly experimenting. 

Updates when they're warranted.

Sunday, January 28, 2024

RMVOD v0.9.2 is HERE! It's a BIG DEAL!

New Features:

 0) User Sessions.  You have the option to log in at the browser and track your viewing across multiple devices, such that your recommendations will be consistent across devices, and your tv series viewing history will be aggregated.  User sessions also enables you to bring your settings with you, like playback speed, watch next episode, and resume playback.  In addition to your settings, watch data like "current artifact" and "time offset" are also captured in your session, so you can switch devices easily in mid playback.

1) Recent Episodes. Thanks to the existence of User Sessions, it is now possible to keep track of what the latest episode is that you've watched for a TV Series, and either re-watch or watch the next one with just one click.


Bug Fixes and Minor Tweaks:

Posters now fetched from OMDbAPI - The previous source of poster images became unusable.  RMVOD has been shifted to take advantage of the service on OMDbAPI 

Added "stats" - The "Settings" tab has a clickable link which fetches the current "statistics" for the server, including the current count of movies, tv episodes and tv series, as well as viewing statistics for the top 10 tags among tv series and movies, and the top 10 titles for each tag.

OMDbAPI "Series Fetch" bug fix - Fetching series info from OMDbAPI had a bug, which has been fixed.

Added Playback Speed option to "Settings" - Playback Speed can be set as a option in the Settings tab.

Fix title set on play. - There was an issue with setting the page title when playback starts.

Fix Recs Poster Image thing. - There was an issue in the recommendations artifact details wherein the artifact details were not getting the "oops no poster" when there was no poster for the artifact.  

Reworked statistics to have the period delivered by the client, rather than hard-coded in the API.  



Download the latest stable code here:

https://github.com/taobear68/rmvod/releases/tag/v0.9.2


Tuesday, August 29, 2023

RMVOD v0.9.1 is HERE! It's a DOOZIE!

 Hi folks!

So, I've created a new tag on the RIBBBITmedia VideoOnDemand code repo, and this one undoes the whole "feature complete for release 1.0" thing.  Many new features.  Oops!

In this tag you'll find several new features.  Notably:

0) Config file.  I'd planned for some time to implement this, and this seemed a really good time to do it.

1) Recommendations (Recs).  This is a new tab in the RMVOD screen, which provides a "carousel-like" interface for browsing artifacts based on connections to viewing trends on the server.  The Recs interface shows artifact details in a floating box when the artifact's image is clicked.  For TV Series artifacts, options are presented to start playing the series from the beginning or to select a season, and browse episodes to select one to play.  Recommendations are cached on the server and expire after a period of days set in the API's config file.  There is a "Refresh Recs" link on the Settings tab to force a refresh of the recommendations.  Recommendations functionality requires a new table in the database.  See README.txt in the root of the code tree for details on upgrading an existing system to support this feature.  For systems where the DB is hosted on the same box as the API, and the box is really-low resource... like a RasPi 2 something even less capable... Recommendations should be disabled in the API's config file.

Recommendations display


2) Quick Search Links.  This is a new set of links on the "List/Search" tab which present the lists of artifacts from the Recs tab in the familiar list format.  This also depends on Recs being enabled on the server.

Quick Search links


3) "Last Search" display.  Now, when you execute a search, the "search factors" will be displayed below the artifact list to remind you of what you searched for, whether the search is single factor or multi-factor.

Last Search factors


4) "Play fullscreen" option.  This is a checkbox on the Settings tab which asks the player to initiate playback in full-screen mode.  This currently only works for playback initiated by the user clicking the artifact to initiate playback.  When playing a series, the second and later episodes played will not be in full-screen.  This is a known issue related to a security feature in popular browsers.  I'm looking for a work around, but for now, it eludes me.

Play Fullscreen


5) "Populate Episode Details" link. In the Artifact Details box for a TV Series, at the bottom, to the right of the "Edit" and "Associate Episodes" links, there is now a "Populate Episode Details" link which initiates an operation on the server to query IMDbAPI for the details relating to the "series" artifact and each of the episode artifacts.  This requires that the series artifact already has episodes associated with it, and has its "imdbid" value set appropriately.  The use of this feature requires a "key" for the API which can be obtained by visiting here https://www.omdbapi.com/ and setting the key value in the API's config file.

Populate Episode Details


Download the latest "stable" code here:

https://github.com/taobear68/rmvod/releases/tag/v0.9.1


Friday, August 18, 2023

RMVOD, upstream data, and new features

 I don't know if this is permanent or not... but there definitely seems to be a *period* of development arriving, where the big, exciting features of which users would be readily aware are fading out, and it's more... stuff administrators would appreciate.  


I was recently in contact with Brian who maintains the OMDb API (https://www.omdbapi.com/) which allows weirdos like me to have a source of "Movie Database" content available via a simple API.  I've supported him (nominally) on Patreon for a while... you can access the api for free, but you're throttled to some number of requests per day, but if you sign up for his Patron, you can get many more requests per day.  Recently my script that I'd written to scrape "Movie Database" data from the Internet (not using Brian's API) has been throwing errors, and I think it's because the "Movie Database" I'd been hitting for TV Series Episode data didn't like getting scraped by a bot... so, they started sending me 403s.  


That's when I reached out to Brian and asked him if there was a way to get series episode data from his API... and almost immediately, he was like, "You mean *this*?" with a link to  page outlining an as-yet unpublished endpoint on the API which returns the Episodes for a Season of a TV Series.  Well... I was over the moon... I said, yes, that appears to be just the thing.  Then I tried it out, and discovered there appeared to be a bug in the way it linked episodes to the "series" entity.  I tried it out a couple different ways, made some notes, and told Brian I think I found a bug.  He dove right in and within a few days, the "unpublished" series data endpoint was working properly.


So, now, I have a "one button" solution in the RMVOD UI for populating all the data for the Episodes of a TV Series.  The thing is, this feature is not something "normal viewers" are going to care about or use.  From the standpoint of an administrator... the person who has to maintain a local instance of RMVOD, this is a boon.  To someone only concerned with "What is there to watch", this feature doesn't matter.  I think this is the character of features that will be coming down the pipe for the foreseeable future.


There will be a new "tag" coming soon, which will include the feature outlined above.  If you have an existing set-up, the new features will require a DB update (adding a table), which is not automated.  If you're incomfortable running SQL from the command line and you don't have an instance of RMVOD set up, then you might want to wait, as a fresh install will have the new table.  


The current tag/release is here:  https://github.com/taobear68/rmvod/releases/tag/v0.9.0 if you want to give it a try.

Sunday, February 12, 2023

RMVOD v0.8.0 is here!

RMVOD v0.8.0 is here!

RIBBBIT media VideoOnDemand is now at v0.8.0, and has been moved to its own GitHub Repo

Do you want to try it out?  You can download it here.

If you don't know what this is all about here are some previous blog posts about it here and here.

...and if you don't have the patience and/or time to read those now, here's a quick recap:

I wanted to be able to have a browser-based video-on-demand system with some search functionality  -- something where I wasn't dependent on wacky changes and release cycles, and having to take onboard features I neither want nor need just to get the bug fixes.  I wasn't interested in sharing my library in or out.  I just wanted to be able to watch my videos on my home network and not have to install an app or be running a particular OS.  

...et voila!  rmvod is here!

The targeted feature set for v1.0 is in place.  Bug fixes and minor tweaks remain.

The  install script should work for Debian, Raspberry Pi OS, and Ubuntu Server.  Other Debian-based distros should at least be close to working if their package names line up.

Thursday, January 19, 2023

RIBBBITmedia VOD -- The Beat Goes On

 RIBBBITmedia VOD -- The Beat Goes On

A lot has happened since October.

  • There's a GitHub repository
  • The "one page" is redesigned to use a tabbed interface
  • There are now search links in the artifact details for people involved
  • Multi-Factor Search is working now
  • "(series)" now in pale yellow to stand out a little more
  • Page header has been simplified, and now contains the artifact details when something is playing
  • Cookies are now being used to capture the currently playing artifact and play position to permit resuming playback on page reload
  • Cookies are capturing the state of "Settings" to allow them to persist across page loads
  • Search factors added: year range, major type, SQL WHERE Clause
  • Single and Group artifact creation works in the web UI
  • Version numbers are gathered from API, CSS, HTML, and DB, passed to the JS UI, and listed in the footer of the page
Fresh load of the "One Page"
The "One Page" is done with a nearly black background and light gray font to aid readability and minimize shock to the eyes when being used in a "home theatre" setting, with low ambient light.

Artifact playback
Artifact details are included in the header during playback.  A clock display is also included in the header.
Add multiple artifacts
"Add Multiple Artifacts" is a new feature (not that you could tell by the lack of visual sense it makes)

Still to do:
  • New function: Add Episodes to a Series
  • Add some descriptions, directions, and (maybe) tooltips
  • Clean up alignment of new forms







Thursday, October 6, 2022

RIBBBIT media VOD

 RIBBBIT media Video On Demand!



Well, what is the point of this?!  

As a long-time cord-cutter, I've made some use of streaming services (mostly YouTube, but also Netflix and Amazon Prime), but I've often been frustrated by available solutions for streaming my own media at home.  Part of what frustrates me about the commercial VOD services is that I'm at the mercy of what their library managers decide will be available to me.  Let's say I want to watch "The Towering Inferno".  Well, if none of the services I'm subscribed to currently think that is worth having online, I'm out of luck.  Well, if I own the DVD, why not just watch it on that?  DVDs are great for getting "ownership" of the media into my possession, but once I have it, I'm very restricted in how I can consume it (to say nothing of maintaining and regularly interacting with a library).   Yes, "ripping" DVDs offers some solace, but now there are data storage issues, and how do you catalog and index such a library? For years, I simply hung an NFS share out there, and watched via VLC on a PC or laptop.  That has obvious limitations.  That DID scratch my itch for a time, but I wanted something more library-ish with indexing and searching and so on.  One obvious (but exhausting to maintain) way to achieve this would be a forest of symbolic links on that NFS share... but another way would be to use an RDBMS to maintain all those relationships, and simply query against that to get the filename of interest.  That has the potential to be much easier to maintain (and expand).

What's it made of?

Since HTML5 includes (among other things) handling for video playback, I figured it couldn't be TOO hard to implement a simple video player page.  I was right.

I've been working on re-ripping and/or transcoding my video library from MPEG2 to MPEG4.  As of this writing, I have over 2,500 TV Episodes and 350 movies in MP4 format (all ripped from DVDs I own) and logged in the DB, many with metadata (such as runtime, people and companies involved, synopsis, and so on).

The system consists of:

  • a static HTML page, which loads 2 JavaScript files, and sets up the layout of the page, 
  • a Python file which serves both as a Flask REST API and a CLI for interacting with the database, and 
  • a MariaDB database.  

All told, the HTML, JavaScript, Python, and SQL DDL currently fit in under 6000 lines of code (including comments and whitespace).  Some refactoring will likely bring that down a bit.



As of now, the ability to edit DB info for individual "artifacts" within the web page exists.  The CLI is for doing things like bulk-creation of artifacts from file lists, creating tags, assigning individual "episodes" to a "series", and so on.  On the bright side, the back-end code to achieve these things exists in the Python file, but I haven't gotten around to hanging a web UI on any of it yet.



Also, there is no authentication on the web side... You are J. Random User.  The back end keeps no stats on you, and currently places no restrictions on whether you can update DB information for any particular artifact.  Obviously, this is not intended for public use.  It's intended for a person (or family) to interact with their own video library.

Call to action(?)

Is this something that interests you?  Would you be interested in seeing this go up on a publicly accessible repo?  Comment!


Thursday, June 30, 2022

Netgear SSO? That's a hard no. pfSense to the rescue!

 Some time ago... a couple years, now... my trusty old cheap Netgear router breathed its last, and I bought a new one.  The new one had this pain in the ass "Single Sign On" thing that made you set up an account with Netgear in order to log in to the router.  Hard pass on that.  It's possible to log-in locally, but it's extra steps that piss me off.  I've been ruminating on switching to pfSense for my routing/firewall needs, and just getting one or more cheap Wireless Access Points to handle the WiFi.  I have enough hardware just lying around that I could have done pfSense on a dedicated x86 machine, but the power, space, and noise were things I was not crazy about dealing with.  I'd thought about installing it on a VM on my Threadripper VM Host, but the networking would be a problem without additional hardware.  I finally got a 4x1G ethernet card for my VM Host, and stood up and pfSense VM.  

The config process was not bad, per se, but it was a little opaque in spots.  I have a separate Raspberry Pi running dnsmasq, handling local DNS, DHCP, and DNS forwarding, whereas nearly all of these modern router appliances have built-in, and a pretty enthusiastic about acting as your DHCP and DNS server.  Chalk it up to paranoia, if you like, but I prefer the "component stereo" model here, if for nothing else, it allows be to keep at least some of my more complex config stuff up and running if something like a router quits.  Getting DNS forwarding through pfSense was a little bit confusing at first, but I got it worked out.

Port forwarding turned out to be easy once I figured out that refreshing DHCP leases had to be done on target boxes for return traffic to go back through the router.  I'm smart.

OpenVPN server setup on pfSense has not brought me joy, yet, but it could, still.  I remain hopeful.  Part of the problem, I think, is that my network is on another RFC-1918 network -- that is, I need to traverse another "local" network to get to the Internet.

I ran into a couple hiccups when I tried to get one of the WAPs I bought working.  They're TP-Link AC1200 (TL-WA1201) devices, and they were cheap.  I bought 3, because why not.  The "quick setup" didn't seem to stick, entirely... so I had to kind of work through "not quick setup", and it seemed to take a few tries at that, with resets in between for it to really come up and do its job.  So far, an hour into its service life, the first TP-Link TL-WA1201 seems to be doing the right things.

So, now, my private network is fronted by a VM running pfSense through a dedicated 4x1GB ethernet card, and WiFi is running of a TP-Link WAP, and with any luck, I'll never have to deal with Netgear's stupid SSO nonsense again.

The next bit of excitement for the home network is a 48-port switch.  I know, how can I possibly justify a 48-port switch?!  Well... I'm not going to pretend that I have 48 wired Ethernet machines up and running all the time, but I do have 6 machines in my rack, and 20 or so machines strewn about, and I have little "desktop switches" all over the place... I'm hoping to get away from that.  Of course, that will mean doing more home-runs, but I'm hoping it will make for less confusing networking.

Monday, June 20, 2022

The RIBBBITN3RDing BitPump


The RIBBBITN3RDing BitPump


The RIBBBITN3RDing BitPump r0.1


A little bit of background 

I've been trying quite a few new things with my RIBBBIT65 designs, and I'm running into issues which aren't making a lot of sense.  I've also been having some trouble isolating issues (e.g. "known good" components or circuits don't work *here*... and it turns out "known good" wasn't)  I wanted to have a way that I could repeatably, and quickly, put a bunch of R65 Bus signal configurations ... snapshots, if you will... on the bus to confirm the thing is behaving the way I expect.  Rather than coding something up in 6502 Assembly for every different testing scenario - and, in the process, intoroducing the possibilty that the CORE board I'm using has a problem, I thought it would be better to do something like my TTL Busy Boxes, but on steroids.  The Busy Boxes are just boards with switches and/ or lights that let you do some multiple of 8 worth of switching and/or indicating.  The first one I designed has an 8-position DIP switch, 8 mini-tac switches, and a 10-segment LED bar graph.  That's great for, say, the data bus.  There's still the address bus (16 bits) and all the control signals.  Well, controlling 32 (or more) signals via DIP switches and/or Mini-Tac switches through 20 or 30 cycles (to test an ACIA or a VIA) just seemed like a nightmare.  ...if only there was a way to repeatably send out pre-defined bit patterns over regular time intervals...


The BitPump

The RIBBBITN3RDing BitPump is intended to be an easily reconfigurable digital signal generator which can provide the bit patterns necessary for in-circuit testing of subsystems which interface with 8-bit microcomputers.  


The BitPump, configured for use with the RIBBBIT65 provides:

  • an 8-bit bidirectional Data Bus
  • a 16-bit output-only Address Bus
  • 4 jumpered CPU Control signals (VPB, RWB, MLB, SYNC)
  • Jumpered Pull-ups for 5 CPU Control Inputs (SOB,RDY,BE,NMIB,IRWB,RSTB)
  • 8 bits of completely manual switching, both latching and momentary on each bit, with indicator LEDs
  • 1 "bus clock" driven by a separate IO pin from the bit pattern

The BitPump uses a RaspberryPi Pico (or simlar) to drive a set of four serial-to-parallel shift registers.  

The lower 8 bits (which in the original configuration are wired to the data bus) are bidirectional, and the data direction is controlled by the same "control bit" which drives the R65's RWB (Read, Not-Write) line.  In "Read" mode, the data lines from the bus are displayed on the LEDs.

Since the BitPump is driven by a RaspberryPi Pico (or equivalent), the user has the ability to easily re-program the device to send whatever bit patterns are desired at whatever speed is desired (within the confines of 74HCTXX switching speeds and the capabilities of the sytem under test).


Uses of the BitPump

I'm planning to use the BitPump to see what's going on with my Mini-ITX design.  There's definitely something rotten in Denmark.... hopefully I'll be able to use the BitPump's lower speed, and "known good" bit patterns to isolate the problem(s).  Similar story on the "CORE Daugher Support" board, which is basically supposed to provide a serial console, IO selects, pull-ups and a few other things to the CORE Daughter board I designed for the ITX MoBo, to just make it minimally interactive and runnable.  I plan to troubleshoot both these boards using bit pattern sets delivered by the BitPump.

After that , I plan to use the BitPump to test out different ways of running the 40x4 character LCDs I have.

I can also use it for direct testing of IO and memory chips, since the "data bus" is bidirectional.

What can you use it for?  I dunno.  You could build one and try it out.


Possible updates to the BitPump

One thing I think might be nice is a knob to control the "clock speed".  This could be done easily with a pot and one of the PWM inputs on the Pico.

Another thing that might be nice is a manually controlled "RUN/STOP/STEP" thing that could be done with a couple digital inputs on the Pico.

Do you have any ideas?

Thursday, April 7, 2022

PCB Prototyping - A Reflection

PCB Prototyping - A Reflection


My most recent orders with JLCPCB and OSHPark got me thinking:

  1. That's a curious price difference between the ITX motherboard and the older SystemIO board 
  2. I haven't quoted the same board with both shops.  Hmm.

ITX (yes, I know it says "ATX") board order from JLCPCB.
Also, the latest iteration of the SystemIO board for comparison.

Quote for ITX board (using the same Gerber files as the JLCPCB order) from OSHPark

OSHPark vs. JLCPCB pricing.  It's stark.  The R65 ITX board is 14 times more expensive @ OSHPark for only 60% of the product.  Per-board it's 23 times more expensive.  Call me crazy, but I don't see that as a trivial difference.  I'm sure if I was ordering at quantity from OSHPark, the per-piece price would be substantially lower, but I don't see them getting close to the "prototyping quantity" price from JLCPCB. 

I'm not trying to shit on OSHPark.  I'm glad they exist, and I'm glad they get business.  Seriously.  Their default PCB prototyping offering is decent, it's a little more featureful than offshore vendors, and for small quantities of small boards, the pricing is higher but not prohibitive.  I don't know about longevity of the boards... or greater-than-2-layer boards... quality of adhesives and so on.  

I have to say, though, that the packaging for shipping I've seen from OSHPark has been abysmal.  It's a heavy paper envelope.  Boards rattling around, unrestrained and unprotected.  I've had solder mask abraded away in shipping.  JLCPCB has shipped every board I've ordered, regardless of size, vacuum-packed in thick shrink bubble wrap with desiccant, packed in a box.  

Real-world turn times from China using DHL (the default shipping option) are on par with OSHPark -- a little more than a week.

I'm not getting any payment or barter or sponsorship or anything from JLCPCB.  I've just been very impressed with their quality, efficiency, and price.

You're certainly free to make the choices that work for you... and I know OSHPark has some community cachet and word-of-mouth defaultness like Kleenex/Xerox in the electronics hobby area... but I couldn't iterate like I have up to this point at OSHPark prices.  

Wednesday, March 30, 2022

RIBBBIT65 on Mini-ITX: The Pre-Dawn Chill

RIBBBIT65 on Mini-ITX: The Pre-Dawn Chill

Good news, everyone! I've taught the toaster to feel love!

Also, the design of r0.1 of the Mini-ITX version of the RIBBBIT65 is frozen!  After six months and at least a dozen "clear all tracks" re-works, switching the WDC chips from PDIPs to PLCCs to QFPs, changing all the TTLs and passives to SMT and a myriad other second-guessings and but-what-ifs, first light is in sight.

The board's ID block

The board has 1 ACIA (the serial console, as socketed PLCC), 3 VIAs (2 general pupose, and one "internal" for the LCD character display - as QFPs), and support chips to cover power, reset, PROM select, and IO select.  There are 5 DB9 serial ports and 2 DB25 connectors providing access to the general pupose VIAs.  ACIAs (with MAX232s) are available on "Serial Twin" daughter boards, and the system "core" is provided by a mezzanine board.

PROM and IO select signals, as well as IRQ lines for integrated peripherals are available on headers.

The top of the board, favoring the rear IO
The board is powered by a standard 24-pin ATX-style connector, and has an ATX-style pin header to support power and reset switches, and a power LED.

The top of the board, favoring the front edge
If everything goes according to plan, I should be able to just drop this board into one of a handful of Mini-ITX cases I have around, and cook.

The "core mezzanine board" has already been designed, fabbed, and assembled, and I'm pretty sure it's good to go.  The "serial twins" cards have been fabbed, and I've assembled one of them, so that's a plus.
"Core mezzanine board" with EEPROM address decoding

"Serial Twins" card with 2 MAX232s and PLCC sockets for 2 W65C51s 


...so, now, it's off to review proofs, fix any issues, and then off to manufacturing!


The back of the board, favoring the rear IO


I'm planning on streaming the assembly of this board, as this will likely be quite the educational experience for me, and hopefully you can learn something too, or at least be entertained by my hamfisted efforts!  Check out the RIBBBITN3RDing YouTube channel - subscribe and click the notify bell if you'd like to catch the streams live.  Eventually, I plan to edit the assembly down to a single video with boring bots cut out and tedious soldering sped up... but that will likely take a while.



Tuesday, January 4, 2022

RIBBBIT65 On Mini-ITX: The Before Times

 RIBBBIT65 On Mini-ITX: The Before Times


I've been ruminating and mulling on the possibility of implementing the RIBBBIT65 in a Mini-ITX form factor.  My goal for this is to fit the "CORE" and SystemIO functionality in a Mini-ITX footprint, make use of rear panel IO and front panel lights and switches, and be supplied by a standard ATX power supply connector.

My first pass at the design study was arranging paper cutouts on a cardboard Mini-ITX sized blank.  I quickly discovered that I could not fit the myriad functions I wanted on a Mini-ITX board using PDIP ICs.  This was the impetus for trying to implement the address decoding using an EEPROM.  I then toyed with a few variations on the theme of mezzanine boards... putting the CORE and primary peripherals on the motherboard, and "secondary" peripherals on the mez... putting the main peripherals on the main board, and the CORE on a mez... I settled on putting the CORE on a mezzanine, in large part, because its conversation with the IO is isolated to 8 address lines, 8 data lines, and an AD line.  Sure, you need clock, RW, IRQ and so on... but... that simplifies routing immensely on the motherboard.  It also permits me to use the CORE mezzanine in other applications if I want/need.

Goals

My first goal was trying to make a CORE mezzanine board.  I figured making that fit on something I could stack on a Mini-ITX board would be something of an accomplishment.  It would also give me something solid and tangible I could design against.


PotatoCam view of r0.1 of the CORE mezzanine card
for the RIBBBIT65 Mini-ITX 

KiCAD 3D render of in-progress r0.1 of the
RIBBBIT65 Mini-ITX Motherboard

Above is my second layout of the RIBBBIT65 Mini-ITX, and I think this might be the best I can do under the circumstances.  I don't know if this version of the RIBBBIT65 Mini-ITX is ever going to go to manufacturing. There's just so many compromises. I wanted to at least do a PCB layout to get a sense of the issues I was facing. I may send it out to manufacturing just to validate the integration... work out any bugs before I switch to PLCCs and SMT, but I really think PLCCs for the WDC chips and SMT for the passives and jellybean logic is going to have to be the way forward for the Mini-ITX form factor if I'm going to fit everything I want on there.

The journey continues...


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...