Pie sucks at multitasking

Things that Pie has wrought: Google’s curse.

Overview now has a more useful grid like view. Aside from the nauseating effect that happens when closing an app makes them all resort but at least it is really fast on the Tab S3’s hardware. on the downside multitasking is now chunky and fundamentally broken.

In the previous version the overview screen was a chunky phone centric sliding flipper but apps had a button on the side of their card, so you could open them in the current side of the screen. Now each app has its icon on the top of the card, and you get a menu when you tap the icon. Containing app info (used to be long touch/hold), open in split view, open in pop up (floating window) view, or lock the app. Which is a lot slower but at least flexible.

So instead of very, very quick access to snapping an app to either side of the screen: you get very slow access to deciding if you want it split or floating. The ability to just turn the currently running application into a floating window has been removed. Which is both good and bad: the gesture was easy to trip when you didn’t mean to but was also extremely convenient if you wanted something like a calculator floating over a web page. I’m not sure if the UI the device used on Oreo was a Sammy thing or a Google thing, but it was pretty nice.

Now here’s why I say fundamentally broken in Pie.

Splitting the screen and hitting overview used to place the overview in the currently active side of the screen. So if you wanted to replace one of the applications, you just tapped it and hit overview. Vola, really fast and simple and obvious. And good if you decided both apps needed to change before you were done.

After updating to pie: the overview ALWAYS opens in the bottom or the right side of the screen, based on whether you’re in portrait or landscape orientation. I have yet to find any way to invert the split apps–you used to tap the resize bar in between and have a UI to switch them. ‘Cuz that is useful. Now you’re stuck with the first app chosen being in the top/left side until you’re done. You might think the first app would show up and you could just select it again? Nope, its card gets removed from the overview.

Likewise you can only stuff in apps from the overview grid that were running. I used to be able to hit a button and select apps from a launcher instead of requiring them to be already opened in the background.

But really, whose fault is it for destroying the multitasking functions? Google’s. It’s Google’s fault. Why do I say this? Because my Google Fi phone running Android One and its pure Googely experience has virtually the same broken multitasking UI. The only real difference is my Samsung changes the string “Split view” to “Open in split view” and adds the popup and lock entries to the menu. Likewise on the phone sized screen it’s a sliding view of the exact same cards rather than a grid view of them.

Suddenly I realize why DeX became so popular among users of newer model Tab S’s that shipped with it. It’s not because DeX mode is that more PC like: it’s because Google fucked Android’s multitasking experience. And I fear, if I was to dig up the CDD for Pie, it would say OEMs aren’t allowed to fix it anymore, lol.

Of course my model being older, DeX is not a feature that was integrated into it. Much like how my model was the first to get USB-C charging but alt modes for driving a monitor didn’t show up until the Tab S4, which does have DeX. Reasons to buy an iPad, += 1.

I find it a great shame. Samsung has done multitasking for so many years, I first used it on my Galaxy SIII phone a very long time ago.  In recent years it became a standard piece of Android, which was a really good thing until Google pissed down the feature’s throat and crippled its utility for real multitasking.

As I watch my tablet upgrade to Android 9, I find my mind flashing to when my phone updated closer to Pie’s release–and the distinct feeling that “All my icons are different for no good reason. Other than that: it’s hard to tell anything changed.”

But it’s worth noting, I use my Galaxy Tab S3 excessively every day, but my Moto X4 is only lightly used. Because unless I’m literally walking around in public or answering a text message in the middle of the night: there’s a 95% chance that I’ll use my tablet instead.

Both devices were released in 2017 and had Android 7/Nougat as their original operating system image. The primarily difference is my Android One edition got Pie around Christmas time and my Sammy gets pie to the face shortly after Android 10 launches.

That’s par for course for Samsung’s tablets in the past, except seeing three major OS versions on one tablet is odd for them; I had the upgrade to Android 8/Oreo to be the Tab S3’s final operating system based on previous experiences with their high end tablets. I’ve owned a lot of those.

If anything actually changes that makes me give a flying floop, it’ll probably rely on Samsung’s UI customizations. Because on the more “Pure” load my phone uses, “Damn it, my icons are all different”, really was the most noticeable difference. The bit about text selection might be more in my face on a tablet but wasn’t necessary on my phone, nor is it on my big screen; especially with pen in hand.

A few notes for my own reference, Octane 2.0 and Jetstream 2.

Scarlett: ~9,000 ; ~20
— Snapdragon 820.

Stark: ~23,000 ; ~65
— Core i5 3360M

Centauri: ~30,000 ; ~80
— Core i5 3570K.

Which amounts to my Tab S3, Latitude E6430S, and custom desktop with their scores rounded to the nearest whole number.

I’d also run things on Cream’s N3700 but it’s VNC session and various services make it an unfair candidate for such a test. Likewise I left Celes and it’s N3060 at work because my Chromebook has been gathering dust as of late in favour of making Stark work harder.

Never brothered read Intel’s errata sheets in the past. After reading the documents for some of the hardware that I have to deal with, I think I could use a stiff drink and a few checks for BIOS updates.

A few wild ass guestimates from the long term planning bin.

Remaining in beloved Android country: ~$650.

  • Galaxy Tab S6: $650.
  • I hate 16:10 tablets.
  • What comes next?
Turning to an iPad Pro: ~$780
  • 11″ 2018 model: $650.
  • Pencil 2: $130.
  • CPU on par with my desktop.
Turning to any other iPad: $479 ~ $589
  • 7th gen: $330 ; Air 3: $450.
  • Pencil 1: $99.
  • Lightning cable all the things ~ $40.
  • I already routed USB-C all the things.
The best price to performance in my opinion is the Air but simply put, I pretty much reject anything that requires a Lightning connection to charge. To me the cost delta between a regular iPad and a Pro is a time based one; e.g. by the time an Pro goes to the old folks home, just as much will have been spent on regular models in the name of faster SoCs. If Lightning cables littered my home the way USB-C and USB-MicroB cables do, I’d probably go Air.
I’ve been extremely happy with my Tab S3, and before it a Tab S2, and before that a Note 8.0. Damned 1″ crack in my screen and the occasional side effect of that becomes increasingly worriesome as time goes on. But other than that, it has been a perfect device for me.
Samsung’s Tabs S4, S5e (barf), and S6 make me question their road forward. No one else makes a suitable device. And the level of bugginess my Chromebook offers, the odds of me taking a 2-in-1 or tablet based Chrome OS device as an upgrade path aren’t very high. Unless Google changes in larger quality assuring ways, I can’t really call a Chrometab any better than suffering i[Pad]OS versus a real Android device.
The real question, I suppose is when my Samsung finally heads towards failure versus when my budget converges with a replacement.
Every now and then my device acts a smidge funny. Like today, it decided to stop taking pen input for a while. As far as I can tell the crack in the screen has not been visibly expanding but events like this seem to now happen several times per month. When you consider that if neither Direct3D nor bash are involved, my tablet is my primary computer at home and my secondary computer at work, that gives worries, alright. Sigh.

Over the years, a number of things have attracted me to Android.

Around the time Android first showed up on the T-Mobile G1, it represented what I really wanted at that time. Which was something more like a computer and less like a PDA that could send e-mail or word files. Something that I could scratch my itches by writing software. Likewise at that time, I may as well have wanted a Porsche, lol.

What really made me enjoy the experience however was the moderness of the platform and the compatibility it offers.

Permissions

It has long bothered me how PC software works. You run as a user, let’s call you Bob. You go download some program written by someone else, and probably won’t be compiling it from code. That program can do anything you can, Bob. Whether that’s as simple as uploading your address book (if you actually, still have a local one), encrypting your files for ransom, infecting your files, or just being useful, like you know: doing that task you had downloaded it for. A frequent solution in PCs has been to require running software with elevated permissions. But usually in a nuclear form: where the program goes from being able to doing anything you can, to literally being able to do anything your operating system can.

Newer models like the one Android follows, I believe are the natural evolution. Rather than “Ahh, shucks, I’ll just run it as root!”, the solution is a service interface. Android applications don’t shout “Hey Bob, I need you to hit the grant godlike powers button right now”. Instead they shout, “Hey Bob, I’m gonna need permission to use location services before I can tell you the nearest shawarma place”. That’s how things should work.

Once upon a time, computers didn’t really have permissions. Time sharing used to have more to do with computers being expensive rather than a commodity. Today, I wouldn’t expect a non-nerd to know what I just said. To be fair when the IBM PC came into being, it didn’t have a lot of horsepower and having fifty people using it at the same time was the least personal worry.

UNIX and Vista probably had the longest reaching impacts prior to Android. I say that for two real reasons. Firstly, Unix’s concept of users and file permissions are not only pervasive but the baseline of what you can call a multi-user system today. Secondly, thanks to the CP/M heritage, it wasn’t really until Vista that a lot of PC using mooks got smacked over the head with the permissions stick; despite how long NT supported ACLs. Yeah, I’m a asshole.

I really like the brokered model that systems like Android follows. You don’t solve a problem by running as god almighty with power to touch all the pointy things. You solve the problem by a service that brokers access to that specific thing. Because why should a program have as much power as you do? Do you trust strangers on the side walk with your debt card’s PIN? I hope not.

User Services

Over the years a lot of things have become broadly universal. Today, you would be hard pressed to find a network aware program that does not utilize network sockets. Likewise as GUIs rose, so did frameworks to ease the task of writing such software. No one makes a GUI program by drawing raw pixels into a byte buffer anymore, they use things like GTK and MFC. Often these interfaces become common (e.g. BSD sockets and winsock are very similar) or they become portable (e.g. Qt runs on just about anything).
But there are also a great many things that are not broadly universal, aside from the concept that we want those things to work.
There are no universal APIs to solve problems like syncing and managing your contacts, calendars, locations, and so on. We have tools not interfaces.
In Android, we have concepts like a Calendar. It doesn’t matter if I’m using Samsung’s calendar app or Google’s calendar app, or someone else’s. There’s a concept called a damned calendar. Wanna create an event? Fill out a common intent and expect good things to follow. If you write a calendar app then you’re expected to do some things deemed the right thing, to make this work for the user, and that is the right thing if you’re writing a calendar app that supports events.
On my laptop, I have to run a program like Mozilla Thunderbird or KOrganizer if I want an event calendar. Can I write a program that opens a new event in them and pre-populates it with some user provided data? Probably. Is there a common interface for my program to say, “Hey, operating system: Bob would love me to add this appointment to his calendar called ‘Medical’. Here’s the info!”. Nope, nope, and nope a doodle! That’s just not how PCs have evolved.
On the flipside, I will confess that Windows 10 does one thing I actually like. My contacts, messages, calendars, etc are all synchronized in much the same way my Android device does; I do not have the gag reflex necessary to see if MS also added any decent interfaces for applications to trigger these data exchanges the way Android does. But using Microsoft’s built in apps for that suck less than interfacing my Debian machine.

Openness

As a curious and opinionated nerd, I prefer easy access to knowledge and limited restrictions. I first used computers running MS-DOS but most of my time has been around Unix systems.
To me the best way to know how something works is to take it apart and study the pieces. Want to know how programs are loaded into memory? Read the kernel’s code for loading and linking executable files. Want to know how files are stored? Read a file system driver; coincidentally one for FAT is usually pretty simple compared to modern, more robust ones.
While I am a fan of tight permissioning and siloing of software, I am not a fan of restricting the owner. You paid good money for the device and it shouldn’t try to stop you from using it. Whether your taste is cat videos or bouncing boobies.
A lot of people have been uppity over the nature of app stores, and they probably should be. But I also see it as natural. Modern unix systems typically get their software from a repository, and any package manager worth its salt is going to do things like verify signatures on those packages.
Where we diverge with younger systems is control. Android has done pretty well at that–in that you should be warned about importing some random file that you might not even know is a program, but you’re still free to do so. Most people should obtain their software from a repo that they trust. Whether that’s something like Google Play and iTunes, or something like your local mirror of Red Hat and Debian packages. But you should always be allowed to decide what that repo is.
Android has managed to hang onto a lot of that openness, where Apple has preferred to maintain control. I mean, razor wire, triple layered concrete thick barn doors. Whatever.

Stable Runtimes

There is a pretty long history of being able to run a pre-compiled program and share it with others. We’ve been doing it longer than most people have owned a computer. I view a major key to the success of PCs, the ease at which you could write a program, compile it, and expect it to run on someone else’s machine without having to ship a code monkey with each floppy diskette. And not have to have a warehouse full of every microcomputer known to man, usually. Since then, computer software and hardware have become more isolated from the other for a great many tasks.
Today software is very long lived. Further time goes on, the more likely the code you write is to outlive you and the machine it first ran on. How well that binary runs on future systems is a more variable story.
Android has generally maintained a pretty strong ABI for keeping developer’s stuff running. Think of Dalvik and the Android APIs what you will, and please do feel compelled to make rude hand gestures, but an Android application tends to execute without shouting “Holy link error, batman!” and aborting back to the launcher. Unless you do something that you shouldn’t, or someone upstream does something that should be considered violation between vendor and stability worth smacking with a Googlely test suite sized beating stick.
But nothing is perfect or forever. To evolve, platforms must both create and destroy.
When I install a program from eons ago and it just runs on my PC, this tends to be a testament to how stable Microsoft’s ABI is, and how (insanely) much work they have put into backwards compatibility. I find it kind of amazing how often old ass programs just run.
When it doesn’t run, this tends to be a testament to how well the program was written or how well its assumptions have aged. It could be anything from assuming every file on disk is writable, or that all of nVidia’s graphics accelerators work the same as back in 1999.
Considering how many programmers that I’ve met had a source-only mindset, I find it amazing how stable Android’s runtime is at running APKs. As a user, you probably need worry more about issues like the evolution of GPU or service brokering breaking the apps assumptions at runtime than the app will fail to run at all.
You see there’s a really big distinction between API and ABI. In really simplistic terms, an API means the programmer’s shit will probably compile and an ABI means the programmer’s shit will probably execute.
The more complicated operating systems and frameworks become: the less likely this is to be the case. But it’s kind of nice when you can install an old game or utility and enjoy it without having to fire up a virtual machine with an antique operating system.

During the time my journal rolled through G+ rather than a traditional blog platform, Android was one of the subjects that I most posted about and followed. Usually, close enough that up until Nougat: I typically parsed my way through the compatibility definition documents when they were published. Not just the user facing and developer facing release highlights because a lot of detail about what devices could and have to offer lives in the CDD. The stable release of Android 10 was earlier this week, and frankly I find it quite hard to care.

The difference between these two points kind of makes me said but in a way, perhaps it is natural given how much the platform has matured. Or just an indication of how much Google pisses me off these days.

For most of Androids history, new versions have brought new functionality that was both worth it for my user experience and of interest from a developer’s perspective. In more recent years there’s been a pretty thick lack of anything that impacts my experience as a user, aside from how to manage annoying as all fuck heads-up notifications that 5.0/Lollipop introduced. Much of what has interested me from the developer side has been incremental changes to the platform. Much of what the user experience has been has become change for changes sake, once the platform returned to the level of stability.

The way I use my devices has not changed much since Android 4.x. I still spend an excess of time on my tablet. I still tend to prefer Android apps on my big screen instead of desktop apps. What’s really changed are methods and patterns.

From Android 2.2 – 4.3, I utilized my phone very heavily. At the highest point, charging my phone three times a day while my tablet was being repaired back in 2012. Today I just don’t use my phone for a lot. Unless I am checking items off my list in the middle of the grocery store or something: my phone is not the device I reach for first. Usually it’s the last device I’m going to use, because I usually can use two hands :P.

Tablets have been part of my flow since Honeycomb, and likewise became my main platform of choice. Be that as a tablet, a laptop, or a desktop like form factor. For many years I used a tablet docked to mouse/keyboard/monitor and been a lot happier than using desktop apps.

When I upgraded to a tablet that didn’t support HDMI out, I eventually took the opportunity to upgrade my rarely used Chromebook to a model with Android apps; because that’s what I really wanted. My fucks given for Chrome OS is pretty nill beyond as an Android platform that has a laptop sized keyboard attached and being less effort than loading Android-x86 on a regular laptop.

This year, I started using my Latitude as both my development system and my workstation. Because my Chromebook is just too slow for my workload and I’m tired of how buggy the experience is versus my Android tablets. Otherwise, I would have planned to buy a more powerful Chromebook. But I don’t enjoy the experience as much as docking an actual tablet; unless I’m swiveling around in a chair in need of typing on a real keyboard at the same time, and I like to avoid doing that regardless of OS. I’ve done the keyboard / mouse / monitor thing with Android very heavily–so don’t bullshit me that Android doesn’t work well without a touchscreen :P.

In fact, the outlook towards 2-in-1 Chrome OS devices becoming more common is 1/3 of why I am contemplating making my next tablet an iPad. The other 2/3 is that Samsung is the only one really making tablets that interest me, and the only options when a pen is required. My opinion of Apple tends to run towards the negative but they at least are making it easier to pick your device and have a decent stylus experience.

The sad thing is as Android has evolved, my opinion of Samsung is considerably higher than my opinion of Google when it comes to a user facing device. Or as I like to remember it: when I bought Google’s devices, all I got was a fast track to bugs being released or UI changes for the sake of changes.

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.

Ahh, I’m reminded of what really makes me hate NT: hardware support.

Ever since my good cable got a tad bent at the connector, I’ve only had two cables that really like to drive my Xbox One controller. One that’s like 3 meters, and one that’s like 30 centimetres: neither of which is particularly fun with my desk. But at least they work, if you deal with the cable lengths.

So, I figure let’s try the wireless adapter for Windows. Well, guess what? It’s shit.

The “Slim” model 1790 now available doesn’t work with Windows 10, 1903, up to date as of what Microsoft lets my desktop get. As far as the base operating system is concerned there is no driver for this device–none, nadda, zilcho!

If you browse the go fetchy it catalog referenced in places like this and this, and get a bit creative in pointing Windows at various entries and fine one that’ll actually match the device: the most you’ll get is an error code: “The software for this device has been blocked from starting because it is known to have problems with Windows. Contact the hardware vendor for a new driver. (Code 48)”. If you give up more easily than I do when I’m tired and almost ready for sleep: you’ll just get a message saying it didn’t find squat that works with the driver you extracted.

Because why would you expect Microsoft’s driver’s to work with Microsoft’s hardware? That’s a lot to ask, I guess.

In my experience there are really only three kinds of drivers for Windows.

  1. Those that just work, and often those come with the Microsoft’s install.
  2. Those that almost never work; and
  3. Those that are about as stable as drunk with ten shots of rum in’em.

On the flipside scenario 3 is why error codes like 48 exist. Not being able to use a piece of hardware is frequently better than it turning the rest of your experience to crap.

For the extra curious nerd, the device reports itself as usb vid 045e pid 02fe in the device manager’s GUI. 0x45e being MS’s USB vendor id. Dunno what their product ids in the wild are, and I’m not buying multiple adapters to find out.

The Microsoft Xbox One Wireless Adapter for Windows kit also comes with a really nice but rather short length USB extension cable. Which aside from being an overpriced cable when you consider the wireless adapter is actually a paperweight until MS fixes the driver, does in fact solve my real problem. I.e. if I was smart I would’ve just bought a decent cable in a length > 0.3 & < 3.0 meters long instead of MS’s wireless adapter. Ha! 🤣

Thus my real solution is to take the extension cable that came with the useless wireless adapter, plug in my too damned short cable I wanted to replace, hook up my controller and go play a damned game before my head droops and hits the desk.

I find it a bit amusing how Special Folders have evolved, and less so how programs have perverted them. At this point, NT and X desktop environments mostly agree about the dumping grounds in your home directory or “User Profile”. Programs not so much.

One of the things I do find amusing is this compat trick:

C:UsersTerry>dir /A:H Documents
Volume in drive C has no label.
Volume Serial Number is 9278-0228

Directory of C:UsersTerryDocuments

2015-02-28 20:24 0 Default.rdp
2019-08-14 21:31 402 desktop.ini
2019-07-02 23:22 My Music [C:UsersTerryMusic]
2019-07-02 23:22 My Pictures [C:UsersTerryPictures]
2019-07-02 23:22 My Videos [C:UsersTerryVideos]
2 File(s) 402 bytes
3 Dir(s) 295,411,253,248 bytes free

C:UsersTerry>;

A long time ago the content was like “My DocumentsMy Pictures”. And then eventually when the concept of multiple users took off, we ended up with “%UserProfile%My DocumentsMy Pictures” and so on, until we finally ended up with the modern path. Kindly, some Microsoftie decided ‘Users’ was a lot nicer than ‘Documents and Settings’ as far as prefixes go for where you store user profiles.

So while %UserProfile%Pictures is the legit place on my modern system: if for some reason you still wanted to access them through the documents folder: hidden junctions will redirect you. Thus keeping old software working. Once upon a time this was probably important for keeping software written for Windows 95 and early NT working.

Curiously there is a hidden junction of “Documents and Settings [CUsers]” at the top of my %SystemDrive% but there are none for the really-damned-old “My Documents” at the top of the drive. I wouldn’t be surprised however if compatibility trunks for older software faked those.

Also, I kind of feel glad that I haven’t really touched a live Windows 9x install since the Pentium 4 was still sexy ^_^. That might sound less fun if you consider that I know where to reach for install discs that makes XP look young enough to be playing with Fischer Price…. but I’m not interested in running a virtual machine to jog the ol’ meatbag memory.