In my opinion this video should be titled, “on why user space Linux sucks”.

In terms of what most users think about in terms of desktop this video has jack shit to do with you. Rather the video mainly focuses on the concerns of packaging your binaries and expecting it to run on Joe Random Linux Distribution.

I kind of applaud Torvalds for his long fought religious mantra of Don’t Break User Space. When you’re working with Linux itself, out of tree drivers breaking or needing pieces rewritten isn’t that unusual. Don’t maintain your driver, and you’re liable to go oh snap they replaced an entire subsystem or removed a deprecated API after comical number of years. But compatibility between the Linux kernel and user space software, is pretty superb.

One of the reasons why MS-DOS PCs took off, and CP/M before it, is the drive towards binary compatibility between customer machines. As much as Windows has often deserved its hate, backwards compatibility and stable ABIs–not I said, ABI, not API, has generally been pretty good.

Binary compatibility between Linux distributions has improved from the days where source systems were the best way to make shit work. But just the same, I did have to snicker at Torvald’s comments about the GNU C library (glibc), which has often pissed me off over the years with their concept of compatibility for such a core piece of user space.

As someone quite fond of desktop linux, I can’t say that binary compatibility of large applications between distributions is especially a fun thing. Not because it’s impossible, but because most of us involved just don’t care. I assume most, like me learned Unix systems in an environment where API compatibility was the only path to victory, or they simply don’t care about the zillion other Linux distributions.

Thinking over my experiment, I think I can principally call it a success. Over the past ~three weeks, I’ve managed to not go out of my cottin pickin’ mind and want to flip my NT partition out a window. 

As someone that’s principally had a FreeBSD or Debian setup on hand for the past fifteen years, I’m going to call that signs of progress on Microsoft’s part. Because while there are worts here and there using a X session: traditionally they piss me off less than Windows.

Since the experiment began I’ve made numerous changes, but mostly small ones.

The freaky SD card freezes Explorer thing hasn’t happened in ages, so I can probably thank updates for that. Likewise I find turning my keyboard off before power down seems to result in less having to repair the damned thing. Pretty stable for the most part.

IIS is definitely slow as dog poop compared to lighttpd, but given how easy it is to lock it down to a specific network, I’ll forgive that.

The thing I miss the most is how copy/paste works in X. The whole thing about ^C/^V versus the mouse selection and clicking the middle mouse button is really helpful when you’re copying between a terminal and a note editor. The select / right click thing with modern Windows terminal emulators and console things, not so much. But that was also something I disliked about using Android and a monitor anyway.

Since modern Linux tends to treat otherwise available memory like a ramdisk, and buffers the crap out of it for faster file I/O, I’ve made a small tweak to WSL2 setup:

PS > type ..wslconfig
# default is 80%, or about 12.8 if you’ve got 16GB.
# Default is 25%, or about 4GB if you’ve got 16GB
# It’s a VHDX file used as swap: not system virtual memory.

Effectively limiting WSL2 to half my system’s physical memory. Otherwise I’ll find myself with 300~400 MB free in task manager. Some of the projects I work on generate ~20 GB of files and general nut punches memory.

That my desktop sessions on W10 usually burn up to 3.5 ~ 6.5 GB according to Task Manager, this further increments my desire that my next machine offer at least 32 GB of RAM. Because 640 KB isn’t enough for anything anymore 🤣.

As most of my interests revolve around an xterm session, WSL works pretty damned good for me. Enough so that using Xfce4 and Thunar vs NT’s DWM and Explorer aren’t as large an impact as the change from Davmail + Thunderbird to ActiveSync and Windows Mail.

Much to my amusement if I do the old “Send to” -> “Mail recipient” trick, I get an error message that there is no program for that. Actually, I can’t remember what decade I last actually tried that. But I’m pretty sure that XP or ’98 was still sexy at the time.

I’ve been happy to see that Windows Terminal has come along nicely. When I tried it very early on, I found it annoying because I abuse bash’s classic line editing instead of using notepad like shortcuts. No frustrations or interference with a release version of Windows Terminal; in fact my only negative comment is the fancy pane split stuff isn’t the same as tmux or screen, hehe.

Spending more time on Windows 10 than normal, I find myself reminded that it’s been about a decade since I figured I should learn how to use PowerShell. While I mostly skipped having to care about batch files in, I have had no such luck avoiding cmd.exe in my life. And PowerShell frequently reminds me how nicer it is–if only I’d have the time to learn it as well as I do bash and general Bourne Shell voodoo.

My little experiment of using Windows 10 Pro instead of Debian Buster was meant to answer the question “Can I” use NT as my main development and work platform. The question of “Should I” however is a different one. That I haven’t gone insane is a positive. That I’ve tried at all of course indicates that I may be a tad more insane than normal.

But hey, I spent many years using Android as a desktop replacement, so I’m obviously crazy to begin with ^_^.

 When I think back over the past fifteen years and the various systems I’ve used, I think a table of Bluetooth problems would look like this:

  • GNU/Linux on PC: 100% success, or no BT driver.
  • FreeBSD on PC: 100% success, or no BT driver.
  • Android on phone, tablet, television, and laptop: 90% success.
  • Windows NT on XP, 7, and 10: 25% success.
  • iOS on tablet: 100% success.
Actually, come to think of it, aside from the ruckus with Google changing BT stacks and a painful Nexus 7, I’m pretty sure the only operating systems that ever give me grief about Bluetooth are all ones baring the name NT!!!
I’d like to think it would suck less on a device with an integrated Wi-Fi/BT card. But applying USB BT to laptops and desktops has definitely been a painful experience over the past ~15 years.

This long, tiresome week, I’ve opted to conduct an experiment: working out of my Windows partition. Since shoving my Chromebook in a closet ages ago, I’ve usually booted Stark  from my Debian partition. Well, this week I tried a little insanity.

So what worked? Well the important stuff. Namely WSL2 and Docker for Windows now enable me to do the things my Debian partition offers that actually matter. Yay for that. Being a busy week, I kind of put that part of the system through five hundred laps of abuse without a problem.

A very large part of my time revolves around command line environments one way or another, so a lot of my client machine’s job is being a glorified X-Terminal on steroids. Most GUI software I rely on is cross-platform within the desktop family trees, pardoning proprietary bits. Most parts I really care about are terminal friendly; most GUI parts involve interaction with others or specific tasks.

In particular I found it pleasant to have a Evernote’s desktop client. The web client’s not my cup of tea, beyond some of the editing shortcuts it shares with the Android and iOS clients. While most of what I do on my Linux partition was direct and to the point thanks to WSL, Evernote was a big shift.

What didn’t work so hot?

In a very unsurprising shortfall was Bluetooth. Twice I had to totally start from scratch pairing my Bluetooth keyboard and mouse. To be fair, W10 20H1 launched with problems that are supposedly resolved. To be honest I’ve always had trouble with NT and Bluetooth: going as far back as the XP era. By contrast in a decade of combing Bluetooth and Linux: the only issue I’ve had is changing batteries 🤣.

Another is the networking side. Seems like W10 is happy enough to use my static/dns setup for Wi-Fi at work, and DHCP for my Wi-Fi setup at home. It’ll even deal with the DNS suffix at home. But sometimes it thinks my home network has no Internet connectivity because it’s trying to use my work DNS servers with my home connection. I suppose, considering the era NT comes from: I should just be glad that W10 has a concept of different configurations for different wireless connections. But annoying.

Shifting from Davmail / Thunderbird to the various Microsoft things, I mostly have two comments. One: easier setup. Second: different quirks. On the flipside, Davmail has a spectacularly accurate manual. And Thunderbird probably has more bugs and quirks than it’s competition, lol. I could actually replicate my Linux setup on W10, but would rather not during the experiment.

Explorer is probably the gold standard of file managers. Compared to Thunar, it sure is. But I found it amusing how it was a sticking point. On occasion Explorer total death hangs until I eject my SD card. In the kill explorer from taskkill /f and then restart the damned thing just to get my panel back kind of hangs. Although, I’ve probably seen more crashes from X file managers than you can shake a stick at, it’s compensated by *nix having a far superior command line environment.

More minor were things like my internal web server. Easy enough to replicate my simple lighttpd setup in IIS, and to lock it to my connection at work. Most of my stuff is either static, Perl CGI, or bash based; so the only thing that’s not operational with trivial effort is a few CGI scripts done in bash.

And then there’s the part that should really scare me: I didn’t hate the experience. By comparison using Windows 7 and its predecessors generally lead to cursing and gnashing of teeth.

Some time ago, I setup DavMail POP/IMAP/SMTP/Caldav/Carddav/LDAP Exchange and Office 365 Gateway on my development laptop to connect Thunderbird to my mail account at work. Handling email was the largest change of swapping from my Android centric work station back to regular desktop Linux.

Give or take my generally meh feelings towards today’s desktop mail clients, Thunderbird especially: this has worked out pretty well, and with pretty minimal pain, thanks to the Actually Worth Reading setup guides.

Today, I finally got around to connecting the address book and calendar functions, and much to my surprise: those actually, Just Work ™. Which is kind of nice: because I’ve been switching to my tablet for those functions. Thunderbird collected addresses thing, also helpful.

When the rise of the S-Pen made me upgrade tablets, I had to contend with the loss of video output during my otherwise painless Tan S2 -> Tab S3 conversion. Eventually, I traded in some old hardware and got a cheap assed Chromebook that was new enough to do Android apps, and serve as a replacement for docking my tablet. That mostly worked, give or take that Chrome OS is like 10 x buggier and more restrictive than native Android. But eventually that combined with the crappy performance lead me to replace it with using my development laptop directly, rather than using SSH and SMB to access it. The performance grumbles, such as Play Music stuttering whenever opening heavier web pages, made more powerful hardware worth the coin—the quality of Chrome OS as an Android replacement, made using a Linux or NT based system a better option. Thus rather than increment debt, I said screw out and started using my development laptop directly because that was the simplest, cheapest way to kill both birds with one stone.

So, I guess I’ll get to see how well Thunderbird’s calendar works. For my pen use cases, typically my synced to all my devices taste in calendars are used; and I maintain several. My exchange calendar, basically exists purely for dealing with meetings and events going through Exchange users. Since meetings are inescapable, dealings with Exchange calendars.

Coincidentally, Microsoft Outlook for iPad rather sucks as a mail client if you have any significant volume of mail to process, and it’s calendar function is little better than typing cal into an xterm. But it at last syncs with little fuss.

After a good while, I’ve finally upgraded my main laptop from Debian Stretch to Buster. Unless your name is OpenBSD, I don’t do zero day upgrades; and it’s been a few months since Buster shipped. Enough for me to feel comfortable that any big, scaries about the new Debian stable would have made it to my ears by now.

It’s long been my policy to upgrade a less important machine before pushing a major upgrade to one I don’t want to wipe and restore from backups.

My guinea pig was a desktop that’s been running Debian stable releases since Squeeze without a serious problem. The only issue I experienced with it on upgrade was that the antique nVidia card requires a very legacy driver version that doesn’t really want to work with the current OS. But aside from that everything was peachy.

My laptop on the otherhand was a fairly painless experience. I only encountered two issues.

One is it looks like consolekit has been ejected in favour of systemd-logind. Frankly, I don’t care. But I also am a weirdo who still likes to run XDM. Because beyond configuring PAM or my X session script, I don’t give a flying floop about the modern login managers–my session still trucks through ~/.xsession and I don’t need fancy stuff in my login screen. A small change to the xfce4 specific part seems to be enough to resolve that, or at least I can still reboot my laptop through the xfce4 menu instead of using sudo.

Second case was for whatever reason, apache2.service wanted to be enabled during the upgrade and was preventing lighttpd.service from starting and running my tweaked configuration. So when I saw my /var/www/html/index.html file about altering an NSA surveillance unit, I knew that was happening. That’s actually why that file exists. If you’re not using my configuration that makes content go to /srv/{hostname}, you get the cheaky file I left myself for being able to tell.  Because I know if I stick my shit in /srv/{hostname} rather than /var/www/html, probability of packages mucking with my webroot goes down :P. A simple disable + stop apache2.service and restart lighttpd.service, and bingo.

Over the years I have uttered many words at the software I deal with, mostly profanity.

I’m pretty sure the loving to hateful words ratio between me and ALSA is about 0 : 1,000,000. Or in short if I ever say “I effing love ALSA”, it’s a pretty safe bet that I’ve been replaced by a bodysnatcher or something.

Generally I have used ALSA directly as much as possible over the years because at the end of the road on Linux systems you will always, sadly, end up with that. But I also find that configuring and living with it tends to be a bitch on wheels of fire the more complicated people make things. Let’s say that ALSA is something I suffer not something I love.

Well, recently I’ve had a bit of a pain in my arse dealing with ALSA, GStreamer, and trying to do audio passthrough. And I’ve learned that I really do like PulseAudio.

mpv is able to do passthrough but that doesn’t suit my purposes, or let’s just say scripting that ain’t my real objective.

$ mpv –aid={track #} –audio-device=alsa/{device} –audio-channels=5.1 {my file with fancy audios}

GStreamer is smart enough to passthrough audio if you send the bits to the sink. Most elements that manipulate audio expect audio/x-raw data like you would get out of your audio decoder. But the sinks can also take other formats–much like my surround system knows how to decode pretty much anything.

What I ran into was alsasink never reporting any of the compressed formats my graphics card supports, after GStreamer tries to decipher what the device is capable of.

Enter PulseAudio!

$ gst-launch-1.0 filesrc location=”{my file}” ! queue ! {demuxer} ! audio/x-ac3 ! queue ! parsebin ! pulsesink

Where I had no luck getting this to work with alsasink it was easy as pie with pulsesink.

Deciphering the documentation to configure the default profile for my card via pactl and add the formats I want to passthrough to my surround sound system was a snap that only took 15~20 minutes. Figuring out the device names used for pulsesink based on pactl list was a bit tricker. I spent 2~3 days screwing with ALSA before that.

For bonus points: I could test ahead of time using my laptop’s HDMI port and pavucontrol to configure the outputs, letting me know if this would be possible at all before I started learning how to do it with pactl.

I can’t say that I’m a big fan of the guy who wrote PA, or that I truly gave a flying hoot when the Linux desktop world went to PA and we all threw out things like aRts and ESD. My only horse in that race was I wanted audio to work in applications like mplayer and firefox without having to screw around.

In retrospect: I should have just learned how to use PulseAudio a long fucking time ago instead of dicking with /etc/asound.conf and amixer and all that BS. Because those aspects of PA really do suck less in my honest experience.

And then I find myself remembering FreeBSD and its OSS, in which the only issue I ever really had with audio was whether or not there was an suitable driver for my card, lol.

Forbes: The New Pinebook Pro Will Challenge Google Chromebooks For $199.

Can’t say that I’ve ever cared a lot about Rockchip’s SoCs but that actually sounds pretty damned tempting. The chipset should deliver a really nice bang for the buck. Very tempting indeed!

At least as far as 14″ laptops with anything weaker than a Core i7 and 32 GB of RAM can go, and for those you would have to shift the price tag over a decimal place. Let’s just say for $200: you have no right to complain about the horse power that a Cortex A72/A53 like that can deliver.

Intel’s chipsets targeting that $200 price point tend to struggle just playing my music and opening tabs without stuttering. In fact getting tired of that is the number one reason my Chromebook will likely get retirement this year or next year.

Hmm, I wonder for the hell of it how bad the Graphics driver is for the RK3399’s GPU. Last time I tried a Mali it was on an Exynos 5 and I was most unimpressed by the desktop graphics performance. But that was quite a few generations ago.