I've been testing out alternatives to some of the tools I use most frequently and collecting my notes. Having finally taken a step back I've been amazed at how much I've found myself tolerating and how refreshing it is to use tools that aren't broken.
I've been grudgingly using a MacBook Pro for the last 6 years. While things have never been very good, they have gotten steadily worse at an increasing rate. I don't have the time or inclination to diagnose and fix all of the problems with such an expensive, broken operating system but the latest batch of issues includes:
- Mac OS specific applications (iMovie and others) have been upgraded past my operating system version and can no longer be opened. I'm not actually clear on how the application was updated to a version incompatible with the operating system.
- homebrew repeatedly requests access to the keychain for
credentials it does not need (any invocation of
brewresults in 3-10 prompts for access, all of which I deny until the operation completes successfully).
- dyanmic libraries have been upgraded at some point and broken all manner of applications, this could be related to either of the last two issues. I've found my Python 3 installation, Emacs and Bash have all broken in some obvious and some non-obvious ways.
- Nagware. I've been unable to disable upgrade nagging. I won't upgrade to Catalina after countless hours recovering from kernel panics in Catalina on a work computer.
I finally got the time and energy to install Linux onto the machine
and while it isn't without problems, it is already a markedly less
painful experience. Installing Debian 10 was uneventful although the
necessary broadcom drivers for wireless aren't any better
than the last time I dealt with
them. It turns out the MBP has two graphics cards and the Nvidia
card is annoying to get working so I've ended up disabling
it. KDE Plasma has
worked best out of the box with all of the Apple hardware; volume,
brightness and power management all just work like you'd expect. One
place where Debian has really shined is in package management,
people whine about
apt but it is still light-years
ahead of homebrew.
Sitting down to think about it I'm amazed at how uniquely broken so many things have been with the Mac. I can say with certainty that it will be the last Apple computer I ever own, especially after seeing the horror show that is the new model MBP.
Concurrent with my migration off of macOS I've been using an old ThinkPad with OpenBSD as a (mostly) desktop computer. It is worth remarking on how unremarkable that experience has been. When I first installed OpenBSD I used the ethernet port on the machine and was able to pull wireless drivers as part of the initial install (making it entirely automatic, compared to the MBP). Without any configuration volume and brightness keys worked regardless of desktop environment, which was not the case for the MBP and Linux (Gnome vs. KDE vs. anything else). OpenBSD maintains support for 1 year of release and I found myself outside that window with the latest release, 6.7. I was unprepared for how painless it was to do three operating system upgrades in sequence. I didn't even think to time it because of how minor it was. At the end of the upgrades I found everything worked exactly the same, nothing broke. After years of the exact opposite experience I was giddy with the lack of change.
I had thought I would prefer the MBP with Linux over the Thinkpad and OpenBSD for the quality of the hardware but I hadn't realized the the high DPI display and proprietary graphics drivers and wireless cards are all an impediment to better software. The hardware is worse on the OpenBSD machine but the end result is better.
I've been unenthusiastic about containers and Docker more specifically for years. Installing Docker has always been a trial and upgrades left me with broken software as often as they didn't. With some free time in the last week I've been trying out podman and I can finally muster some excitement for the technology. The command line interface is the same as Docker but the install is painless in Debian and containers can be run without root, finally there is also no daemon process (a continued source of problems with Docker on macOS).
I've been working with podman to package up a Python application and its dependencies. I think the broader ecosystem of tools like docker-compose still lags behind, but progress is being made. While I might not yet be bullish on containerizing everything, I can see a number of smart decisions being made with podman that show real promise for the technology.
I've been using GitHub less and sourcehut more. I'm not sure if it is the continued push towards "social coding", or just a miss on the continued redesign of GitHub but I log in and find myself using fewer and fewer features and routinely annoyed with search and discovery. Sourcehut is not entirely polished, but the core pieces work well and there are some really cool features like SSH access to build VMs.
Since I'm not using GitHub as often and sourcehut has support for Mercurial repositories I thought I'd take some time to reacquaint myself with it. It has been a few years since I used Mercurial, but I remember it fondly. It turns out I still like it better than git. The fundamental concepts are the largely the same but the execution is better. Git mostly works if you understand and keep in your head the concepts undergirding it, whereas mercurial mostly works.
There is a lot of complexity in the workflows that Mercurial allows,
especially as it has collected features to match workflows from
git. However, and this is key for me, I don't need to use them. I
can safely ignore the myriad of ways in which I could
hg and instead do the most basic thing. For a
number of years I've used magit in
order to ease the pain of git's complexity, with Mercurial I don't
need to. One final piece of tech that has really impressed me
is hg-git, it allows me to
clone git repositories using Mercurial and if I'm using sourcehut
and emailing patches, I can prepare and send my changes without
delving back into git.
Any one of these instances has been a minor moment to feel relief at solving some long standing annoyance. Taken together I have started to wonder what else I may be missing out on. I've accepted for years that "better hardware" and "cleaner UIs" were reason enough to keep a pretty severely broken laptop and operating system. Network effects were enough to keep me on GitHub when I actively dislike using it and the adjacent technology. Docker and containers are routinely pushed as the inevitable next step in software packaging and distribution when there is a long history of problems with it.
I'll be trying to remain mindful of the tools I use and choose. It sometimes feels like technology is sliding inexorably into the garbage heap of history, but this has been a nice moment to step back and realize maybe everything doesn't have to suck.