In
yesterday's post,
I mentioned taking my old Mac Mini out of the OS X/macos ecosystem and
bringing it into Debian, and then what kind of hilarity followed when I
attempted to install a Javascript linter (and it tried to drag in 180+
node-related packages).
This and some other mentions have prompted some questions, mostly along
the lines of "Debian? What happened to Slackware and
green-on-black?"... and I guess I can answer some of those.
Readers are advised that this post
will probably containdefinitely contains an even higher than
usual amount of navel-gazing as I dish out the details of my setup. My
usual disclaimer of "this works for me and probably won't work for you,
so if you have different tastes, then great, go with that" definitely
applies here.
Right, so, with that out of the way, let's get into a discussion of what
I'm actually using to get things done these days.
First of all, the one that most people actually notice is the actual box
which is serving rachelbythebay.com, which at the moment is a box called
snowgoose. I had installed it in early 2020 as CentOS 8 because it had
advertised a final end-of-life date of 2029. I figured that was
awesome. Of course,
as we know now,
they pulled the rug out from under us that year and decided that it
would die in 2021 instead.
This got a whole bunch of projects off the ground to do something about
it, and one of the several which survived is
Rocky Linux.
It pretty much is the CentOS for 2021 and beyond, and apparently has
some of the same people involved, too.
I followed this project with interest, and fretted about what would
happen if there wasn't an easy way to migrate. Fortunately, they did a
bang-up job and came through with a migration script, and I ran it.
Chances are, most people have no idea I ever did this migration, because
nothing changed on the site itself. People who are looking
really closely for the finer details (like Netcraft...) would have
noticed that the "Server:" line emitted by my Apache changed subtly at
one point. That's the only outward-facing difference as far as I can
tell.
Basically, if I didn't tell people that it happened on September 22,
2021, would they have known? Apparently not. There was even a reboot
involved just to verify that everything was solid in terms of the
kernels and boot loader action. Everything worked great.
This migration didn't happen on a whim. I actually tortured a local
machine into installing CentOS 8 and then migrating to Rocky in order to
see what would happen and to have some idea of what to expect. The
whole thing happened that afternoon.
Obviously, I am grateful to the Rocky Linux folks for delivering on
something that saved a lot of people a whole lot of work.
...
But, okay, that's my server. People want to know about my machines at
home, since that's where Slackware entered the picture. This is where
I'll just drop the bomb: I stopped using Slackware in January. This was
no small thing. I'd experimented with it late in 1993, did my first
real install to a dedicated disk in 1994, and had at least one
workstation box running it full time (having erased the DOS install)
since 1996.
It was a nice, simple distribution that stayed out of my way. I used it
for a handful of things, and it did those things well enough for my
needs.
The problem is that the world didn't sit still. In particular, the
software-defined radio world of GNU Radio keeps changing, and it keeps
dragging its dependencies along with it. I found that keeping it
current on my Slackware box had become too much of a burden. In
particular, I ran afoul of VOLK (something they spun off a while back)
requiring cmake "3.8 or higher", and the version of Slackware I was
running had 3.5.2.
Now, I can build my own cmake. I've *built* my own cmake. I could have
done this. But, I also noticed that cmake-using people tend to lie
about what their stuff actually needs. I'd managed to build other
things just fine by hacking their stuff to set the actual "required
version" to 3.5.2.
Of course, once I had done that, then this happened:
-- Could NOT find PythonInterp: Found unsuitable version "2.7.17", but
required is at least "3" (found /usr/bin/python)
GNU Radio also has heavy dependencies on Python, and there's no way it
was ever going to play nicely with the ancient version my machine had.
Also, there's no way I was going to try to wrangle a Python 3.whatever
install onto this box.
While this was happening, I had put Debian on my Mac Mini as sort of a
long-term shakedown test to see how it did. I even went as far as
installing X and my usual set of X-related things to see how it would
turn out. It all went pretty well, and soon I found myself actively
building things over there since so many of the hurdles had been
removed.
Continued development on my SDR-related stuff meant that it got ahead of
what the GNU Radio install on my main workstation (the Slackware box)
could support, and before long, I had to block those targets from my
"build the world" tool. I could no longer work on them directly on this
machine, since they relied on GNU Radio APIs that only existed in the
newer versions, and those newer versions wanted too much done in order
to happen on my version of Slackware.
Now, I do mean this was a long-term test of Debian. The Mini got it in
February 2021, and my main workstation got it in January 2022. That's
how long I remained open to the possibility of staying on Slackware.
Towards the end of 2021, it appeared that Slackware 15 would be coming
out soon, and I had to ask myself some hard questions, like if I wanted
to bother with it. In being brutally honest about the situation, I
realized that it would come down to "install almost every package" or
"play whack-a-mole with the inter-package dependencies". I didn't want
to do either.
Back in the 90s, I actually had a pretty good handle on which packages
required other packages in the Slackware tree. I could probably tell
you that if you wanted to install such and such, you probably also
would need this other thing, or it'd complain about a missing library or
something. I couldn't (and didn't) do this for the KDE and GNOME stuff,
naturally, but for things in the "AP" or "D" or "N" sets (applications,
development, and networking, respectively), I had a pretty good feel for
it. (You would hope, given that it was my job to keep a few dozen
Slackware boxes running back then.)
At some point, even that stopped working. Somewhere in the early 2000s,
there were just too many interconnected packages. I'd watch a system
being installed and see all kinds of random stuff going by that I had
never seen before - "WTF is pango? expat? Huh?" - you get the idea.
I realized that the strategy had turned into "install *everything* from
the L (library) set", and that's just awful.
There once was a time when you could do a "custom install" and be
thoughtful about which packages were installed, and end up with a
working system. These times are not those times. Those times are gone.
Having failed to convince myself to install the world, run into random
issues from things I hadn't realized were needed, or throw down and
code something up to solve my own dependencies, instead I created and
took the fourth option: leave.
So, one day about a month ago, I headed out to one of the few computer
stores left in the Bay Area and picked up a couple of SSDs - from two
different manufacturers, so as to avoid "same batch" woes, naturally.
Then I came back here, got 'em mounted in the case, did an install, and
started pulling things across.
It didn't take too long to get back to where I wanted to be. Now, there
have been growing pains and certain challenges, like when apt wanted to
remove almost everything on the system one time. At this point, I think
I have a handle on how their state machine works now, and can avoid
doing anything particularly stupid to myself. I even upgraded the mini
from Debian 10 to 11 without killing it. Hooray!
As for the green-on-black and whatnot, that's the thing: very little has
changed about my day-to-day on the machine. It's running the same
window manager (fluxbox) with the same theme, the same terminal
(urxvt), the same color scheme (yes, really, green-on-black), the same
AfterStep/WindowMaker era widgets I've relied on for years, and so on.
Even the fonts are the same.
What's different? Well, I can run my current SDR stuff on here again.
I can do other things like screw around with gqrx because Qt5 is here,
too. Previously I had to do that in a "lab VM" on some other machine.
Certain things also have gotten easier, like anything involving audio.
What's also notable is what *isn't* on here. If I see a package that
looks useless, I can give it a tug and see what depends on it. A lot of
times, it's just more useless stuff, and so I cast it all out. Do I
want bluetooth on here? Nope. Gone. DOS filesystem utilities? Nope,
seeya. modem manager? WPA supplicant? laptop tools? Don't need 'em.
This is a box that isn't a laptop, has no modems, and has no wireless
cards. So, I toss that out and shrink my "exploitable footprint"
slightly. (Every daemon, suid or sgid program, or other funny
hotpluggable thing with magic privileges is a potential problem.)
Being able to safely remove packages like that is great stuff.
Is Debian perfect? Nope. But it works well enough. Is Slackware
broken? Nope. It's true to itself, still, after all these years. The
difference is that I don't feel like that works for me any more.
I mean, I also used to run my own mail services. After 30 years of that
(not an exaggeration: 1990 to 2020), I finally gave in and moved it to
being hosted somewhere. It's the same deal: I paid my dues, and now I'm
going to focus my efforts on something else.
...
As for the rest of my "daily driver" situation, it would be dishonest to
not mention the ever-present Macs in my life. My desk has two monitors,
two keyboards, and two mice. One set is for the aforementioned
newly-Debianized Linux workstation, and the other one is for my MacBook
Air. The old MacBook Pro sits off to the side, not doing much.
I tend to do all of my "real work" on the Linux box: writing,
programming, managing other systems that are far away, etc. Basically,
if it involves a terminal, I'm doing it right here ... *even if* that
means sshing BACK to the Mac. Terminal stuff on the Mac just feels
wrong, and it's a constant source of friction when trying to do actual
work. It's been like this for a
long time,
and I stopped trying to figure it out or fight it many years ago.
At the moment, the Mac is fine for my web browsing, e-mail, photos, and
music. This comes and goes. There was a
point
when it looked like both OS X and iOS were on a straight shot to
usability hell, and I wasn't sure what would happen next. Somehow,
things shifted again, and they stopped being so terrible for me, and I
moved along. It took a while, though.
...
Finally, for the sake of anyone who really cares about the finer points,
here's the full dump of way more crap than you actually ever wanted to
know.
"Real work" machine: 2011 pile of parts originally specced out for
a SDR project
back in the day. Gigabyte motherboard, 8-way i7-2600 at 3.4 GHz. 16 GB
of memory. A pair of 2 TB SSDs, hooked up via SATA (hey, it's a 2011
build). HP 2509b monitor. Logitech K120 keyboard that's seen so much
use, it has nail indentations on some of the keycaps. Some random
Logitech (wired) mouse of a similar vintage - apparently a M500 or M500s.
OS: Debian Linux 11 (bullseye). X. fluxbox. Flux theme. Toolbar
set to auto-hide. urxvt. -bg black, -fg green, 7x14 font. wmCalClock
and wmcpuload in the upper right corner. Other widgets may join the
permanent set.
Dev environment: aforementioned green-on-black urxvts starting bash.
nano editor. C++ (14). My own little build tool that understands that
'#include "..."' is enough to figure out what needs what. No build
scripts, no Makefiles, no cmake, no Java services, no funny stuff. No
IDEs (gasp!).
Frequently used libraries: protobuf, jansson, gtest, gmock, gnuradio,
osmosdr, uhd, libmp3lame, mysqlclient, libpq (Postgres client), libgd.
"Rest of the world" machine: 2020 Intel-based MacBook Air - the first
one with the fixed keyboard, that
really really sucked
at Thunderbolt for basically all of 2020 (and looks to have regressed
-more on that in another post). Last one before they went to their own
"sillikin". 4-way i7-something or other at 1.2 GHz. 16 MB of memory
and 2 TB SSD, no doubt soldered to the board. OWC Thunderbolt 3 dock.
Apple Thunderbolt monitor ca 2014. Same models of keyboard and mouse
as the Linux box.
macOS Monterey, 12.2. Oops, guess I should patch that (but apparently
it won't fix the Thunderbolt stupidity that came back in 12.2).
Macports.
Desk: something bought at IKEA in East Palo Alto about 15 years ago.
Looks like a "Jonas" based on a sticker I just found. Whatever that is.
Chair: whatever I could find at the office supply store when the last
one decided to fail. These things are all crap. It's not the least bit
special. It has a seat, a back, some wheels, and some adjustable parts.
Just like everything else. It, too, will fall apart eventually.
Music: I still buy CDs when I can. Airpods Pro. Usually playing my own
library (which is largely from those CDs, else iTunes store), not
streaming. (I also had a "land line" until 2012 or so. My lawn: get
off of it.)
And, in case you couldn't get enough, the other two notable machines in
my life:
"Distant server in a rack I'll never see": Some kind of SuperMicro
cruft. 8-way Xeon E-2174G at 3.8 GHz. 16 GB of memory. 1 TB no-joke
hard drive, presumably SATA. Pair of NICs running at 100 Mbps to the
outside world, because I don't need more and the redundancy was free.
Rocky Linux 8.5. Apache httpd. MySQL. A bunch of the compiled
versions of the C++ crap I write on the "real work" machine. CGI.
"Workhorse Mac mini": mid-2011 Mac Mini, 4-way i5-2415M @ 2.3 GHz. 16
GB memory. 1 TB SSD, SATA.
Debian Linux 11. Apache httpd. Postgres. A bunch of other dumb
compiled things for projects I haven't written much about yet, like
why I was wrangling Javascript the other night. More CGI.
I'll skip the Raspberry Pis since they have no personalities to speak
of, but they'll show up in some future post where I talk about what
they have to do with SDRs, Postgres, Apache, and yes, a bit of
Javascript.
...
And there you have it. I resisted doing this kind of post for a long
time. I hope it was worth running afoul of the haters.