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.

Behind the Scenes: Redesigning the Note Editor in Evernote.

Rather nice look at things. The fancier concept of a checklist and editing is a positive, since at best some of their clients have had the daisy chain of enter -> newline + checkbox; but mostly that was it. Sometimes related bugs as well–I used to use Evernote for my shopping list and groaned at that.

Table editing in Evernote has been both a sore and a sweet spot over the years, largely based on what client you were using. For me, mostly a sore one because my 90% interface is the mobile apps. Where the PC and Web editors tend to due the best. The current PC client has a simple but pretty complete way of doing tables, and the Android version just has rudimentary editing support.

The kind of drag/drop manipulation of table cells is a UX ballpark that over the years, I just stopped assuming anyone still cares that much about my workflows versus their five o’clock thanks to the effort it takes to pull that off. About the only time I tend to expect such drag and drop niceties to work in document editors is in Microsoft office. A coworker relies on Outlook and it’s got many nifty things like that if you abuse its features, and let’s just say if I was doing the same I’d have a host of other problems than dragging and dropping stuff in a rich text editor 😜.

ZDNet: Android Google Play app with 100 million downloads starts to deliver malware.

Other than for the app’s users, I fail to see how this isn’t a win for the community as a whole.

The problem inherent with using someone else’s software is that it is just that—someone else’s software! You’re trusting them with access to your stuff. Often all of your stuff.  When your getting the software through a third party repository: you’re also trusting the distributor to not do anything nasty.

Rather than bitch and moan: we should celebrate that it was detected and dealt with, and decry those who violated that trust from their users.

People often underestimate the trust that running other people’s stuff on your machine means. One of the great things about modern operating systems like Android and iOS is they tend to silo data from applications behind permission brokering. Traditionally the applications you run on a computer have the same access to it that you do. That made sense when computers were few and rarely networked beyond multiple serial terminals. Increasingly less so when you can just download a .exe file and it can do whatever you could.

Trust matters! Respect your users.

Passing thought: values per year.

The Galaxy Tab S3 launched at about $600, and I got $100 off thanks to the trade in promotion that Samsung and Best Buy like to do around launch.

Come March the device will hit the three year mark since release. For me the only reason for upgrading from the previous model, which was awesome, was they added the stylus and kept the awesomeness.

That works out to about $166~year at this point, which isn’t bad for the life of an Android tablet if it’s any good. If it wasn’t for the inch long crack in the screen from earlier this year, I’d probably aim to get another year (4) or two (5) out of the device for how well it’s held up.

My main worry is that damned crack 😂

A few random reflections and personal biases:

Things that I like about Android as my getting it done OS:

  1. Appliance like: it stays out of my way.
  2. I can have my terminal, e-mail, browser, and notes client software all on the same machine.
  3. Aqua Mail beats the crap out of every GUI mail client I’ve used.

The main negatives of using Android over the years has been that terminal apps don’t make copying text to the Android clipboard a decent experience and Chrome for Android sucks ass compared to a desktop. Would also be nice if the support for an external monitor was more like PCs than simply screen mirroring but hey, can’t have it all. By in large a very nice experience but I’m weird and you can’t stop people from sending hypertext ladden emails 8-).

Things that I like about Chrome OS as my getting it done OS:

  1. Appliance like: it stays out of my way.
  2. Good support for Android apps.
  3. Excellent web browsing experience.

The main negatives of using Chrome OS over the years has been the shift into speed over quality. Releases come pretty frequent to the stable channel but you’ll find yourself living with minor grumbles for long periods of time. Be that bull like having to re-open the notification menu before being able to close other notifications, glitchy handling of application windows, or other things. It’s cheap, simple, and disposable but you’ll have plenty of papercuts if you move past the browser window. If it wasn’t for how far NT has come, I’d probably buy a higher end Chromebook for the performance boost.

At this point most people are probably best off with a Chromebook unless they’ve got a real reason to do otherwise.

Things that I like about Debian as my getting it done OS:

  1. Easily loaded on beefcake hardware.
  2. Debian is largely stable and easily maintained.
  3. My work is off a Linux box anyway.
The main negatives of using Debian over the years has been the sore spots I hate about desktop centric PCs to begin with. Crappy notifications, shitty mail and calendaring clients outside of terminal land, donating most of my memory to a web browser, etc. Considering that most of the fucks I have to give about the PC as a platform revolve around an X-Terminal and unix command line environment, I find it a fair price to pay.

Things that I like about Windows 10 as my getting it done OS:

  1. Desktop experience sucks less than W7.
  2. Android style mail/calendar sync built in.
  3. Userspace ABI has been pretty stable for decades.
The main negatives of using Windows 10 over the years tend to cross paths with many of the grumbles I desktop centric PCs but a few unique to NT are traits that have always been there. W10 has made the experience of the desktop suck a lot less when it comes to window and notification management, a process that arguably began in Vista and has kept growing. But the fastest way to make me groan at NT remains talking to things. I can load programs on my NT machine that are several times older than the hardware and expect them to just run but once device drivers enter the picture my anger likely will as well, whether they were written for the current OS or not. Somethings just piss me off less in Linux.
Personally, W10 is the first iteration of NT to not piss me off as a standard. But much as Debian gives me that groans at the evolution from tube terminals to X, NT has loads of its own baggage. I’m just glad it feels less archaic and evolves more rapidly than once a lustrum or decade.
General disclaimer: I’m weird :P.