Revisiting the Android, UserLAnd app.

One of the facts which I had reported some time ago was, that a handy, easy-to-use Android app exists, which is called ‘UserLAnd‘, and, that I had installed it on my Google Pixel C Tablet. As the tooltip suggests, this is an Android app that will allow people to install a basic Linux system, without requiring ‘root’. Therefore, it mounts the apparent, local Linux file system with ‘proot’ – which is similar in how it works to ‘chroot’, except that ‘proot’ does not require root by the host system to set up – and any attempts to obtain root within this Linux system really fail to change the userid, of the app that the files belong to, or of the processes running. Yet, becoming root within this sandboxed version of Linux will convince Linux, for the purpose of installing or removing packages via ‘apt-get’.

In the meantime, I have uninstalled the ‘UserLAnd’ Linux guest system from my Pixel C Tablet, in order to free up storage. But, I have set up something like this again, on my Samsung Galaxy Tab S6 Tablet, which has 256GB of internal storage. Therefore, I have a few observations to add, about how this app runs under Android 10.

Through no fault of the developer of this Android app, the user is more restricted in what he can run, because Android 10 places new restrictions on regular processes. Specifically, none of the major LISP Interpreters that were designed to run under Debian 10 / Buster will run. (:1) What the Linux developers did was, to make the garbage collection of their LISP Interpreters more aggressive, through a strategy that changes the memory protection bits of memory-maps, to read-only if they belong to the state of the machine, and then, ~to try deleting as much of the bytecode as can still be deleted~. Pardon me, if my oversimplification gets some of it wrong.

Well, Android 10 no longer allows regular apps to change the protected memory state of any pages of RAM, for which reason none of the affected LISP Interpreters will run. And for that reason, neither “Maxima” nor anything that depends on Maxima can be made to run.

Yet, certain other Linux applications, notably “LibreOffice” and “Inkscape”, run just fine… So does “GIMP”…

Screenshot_20200912-171020_VNC Viewer

Also, the way in which files can be shared between theĀ  Android Host and the Linux Guest System has been changed, as the following two screen-shots show:

Screenshot_20200912-155032_VNC Viewer

Screenshot_20200912-155144_File Manager

Here, the file ‘Text-File.txt’ has been shared between Android and Linux. Larger files can also be shared in the same way, and the folder bookmarked under Linux. (:2)

In many ways, the Linux applications behave as described before, with the unfortunate exceptions I just named, and I intend to keep using this app.

Technically, a Host app that just sandboxes a Guest Application in this way, does not count as a Virtual Machine. A real VM allows processes to obtain root within the Guest System, without endangering the Host System. Also, ‘a real VM’ provides binary emulation, that makes no specific assumptions about the Guest System, other than, usually, what CPU is being used. Emulation that includes non-native CPU emulation is still a somewhat special type of emulation.

Therefore, the ability of Debian 10 / Buster to run under ‘UserLAnd’ depends, in this case, on the Linux package maintainers having cross-compiled the packages, to run on an ‘ARM-64′ CPU…

 

(Updated 9/13/2020, 21h30… )

Continue reading Revisiting the Android, UserLAnd app.

A 3rd-party, Android email client, still worth using: FairEmail.

One of the observations which I’ve made about the Android platform is, that many of the 3rd-party email apps that once used to run well, no longer do so under Android 10, and that, additionally, their devs have often abandoned them.

For that reason, I’m happy to find that such an app still exists, or newly exists, and its name is FairEmail. This is an app, the free version of which can actually be used in the long term, but which I paid for, just to get the extra features.

One of the observations which I can make about this app is, that it has a plethora of settings, some of which I haven’t learned the meaning of yet. But, by default, the way to use it is to follow what is located in its first settings tab, which displays wizards to set up email accounts according to a database of recognized providers, and then, to leave the settings at their defaults. Additional wizards help the user give the app special settings under Android. The app directs the user to the required or optional settings, but it’s up to the user actually ‘to throw the switch’ each time. (:2)

Multiple email accounts can all be set up, using the same wizard.

The app runs in phone-optimized as well as tablet-optimized formats.

Screenshot_20200723-121436_FairEmail_1_e

Screenshot_20200723-121814_FairEmail_2_f

One of the features that were highly important to me was, support for both ‘S/MIME’ and ‘OpenPGP’. When using OpenGPG, this app will always encode it using the trendy ‘PGP/MIME’ format, and no longer, using ‘Clearsigning’, which was also referred to as ‘Inline Format’. The use of OpenPGP requires that an additional key-management app be installed, and on my devices, Open Keychain was already so, and was recognized immediately by FairEmail.

The app displays many widgets inside displayed emails, most of which give explicit commands to do things, that might impact the privacy of the user, such as, to display images, to display tracking images, etc. The app tries to distinguish between these two types of images because additionally, being an IMAP Client, downloading even plain images will consume additional data, when many emails can Humanly be understood, without the need actually to see the images. This is especially true for actual Spam.

The app leaves Spam filtering up to the IMAP Server, but displays the Spam Folder as fully accessible.

And many configuration details show me, that it assumes trendy preferences, even though I can’t say that either I, or most of my email contacts, qualify as trendy Internet users. One trendy feature is that this app mainly supports IMAP, and that any support of POP3 which the user may find, will be incomplete at best.

Another trendy setting in this app has to do with “Flowed Text”. This is a term which refers to ‘Pure Text Emails’, in which one paragraph is essentially written on one line. Traditionally, this lack of formatting was reserved for HTML-composed emails, and the receiving email client would always display those flowed. By contrast, traditionally, Pure Text had fixed line-lengths, determined by the sender, and the receiving client would break lines where line-breaks were sent, even if doing so, or not doing so, tended to wreck the appearance of the email…

(Updated 8/13/2020, 10h10… )

Continue reading A 3rd-party, Android email client, still worth using: FairEmail.

Testing the EPUB3 / MathML Support of the E-Book Reader

One subject which I wrote about before was, that while the MathML standard exists, as well as E-Book Readers capable of parsing at least a subset of the EPUB3 standard, most E-Book Readers that people can download and use fully, for free, under Android, fail to do so.

Specifically, I was disappointed that ‘FBReader’ fails to do so. OTOH, I had already written that ‘Infinity Reader’, an Android app that requires an in-app purchase to get rid of the advertisements, at least does support that part of the standard.

The following is a document, which the reader of this blog can use, to test this ability:

http://dirkmittler.homeip.net/MathML-Test_1.epub

(Update 1/31/2020, 20h05 … )

(As of 1/29/2020, 14h30 : )

On this blog, unless I really need to typeset Math perfectly, I’ve been using the EPUB2 posting-tag, and encoding Math to standard HTML, without any MathML. In case the reader did not know, an EPUB File is really a collection of HTML Files (in addition to other file-types one would find on a Web-site, as well as a manifest file), that have been Zipped. (:2) When I tell my software to output Math notation to this form of HTML, what it will often do is to generate PNG Image Files, and to flow those in-line with text. And the evil with that is, that an image flowed in that way, can be commanded by the HTML in question, or the CSS File (more probably), to align with the text, so that the text will be at the Top, in the Middle, or with the Bottom of the image. Why is that a problem? Because even though I have given the appropriate HTML directives in the past, the way some EPUB-capable E-Book Readers render it, ignores the specific instructions…

Screenshot_20200130_162746

… (:1)

One step which I always take, is to preview the (main) HTML File using Firefox, before generating an EPUB File.

Continue reading Testing the EPUB3 / MathML Support of the E-Book Reader

About a minor (Home-Screen) nuisance I’ve experienced on Android deviceS.

I have owned several Android-based devices, and some of those were purchased from Samsung, those being:

  • A Galaxy Tab S, First Generation,
  • (An earlier Smart-Phone),
  • A Galaxy S6 Smart-Phone,
  • A Galaxy S9 Smart-Phone.

A feature which all these devices have, is the Touchwiz Home-Screen (program). This is the default of what the devices display, when not displaying a specific app, when not displaying the app drawer, and when not displaying ‘Bixby’ (most recently). An unfortunate behaviour of the devices is, that Touchwiz will sometimes crash. In my experience, when it does, this is no big deal, because it restarts automatically, and after a few minutes, even my Notification-Bar Entries will reappear. If certain apps fail to make their notifications reappear by themselves, then launching those apps from the application groups will make their notifications reappear.

I tend to rate each Android device, according to how rarely its Home-Screen will crash in this way. According to that, my Google Pixel C Tablet fared better because its home-screen has never crashed on me. My S9 Phone fared almost as well, in that Touchwiz seldom crashed. But now I think I’ve identified a situation which will frequently cause Touchwiz to crash on the S9 Phone.

Firstly, as I’m writing this, the firmware on that phone is at its latest version, that being the October 1 patch, of 2019, of Android 9.

I discovered that I can trigger this situation, as I was experimenting with the Super-Slow-Mo camera recording mode, in which the camera can record up to 0.4 seconds of video at 960FPS, at a resolution of 1280×720. When the camera does this, it generates a 20MB video, after that has been compressed via a standard H.264 CODEC into an .MP4 container-file. I have the default set, to record all camera footage to the external Micro SD Card. Having recorded the super-slow-mo video once, triggered this behaviour.

There is a simple way to interpret what has caused this, that does not seem to lay any blame on Samsung: When the camera is recording video that fast, it’s generating data faster than the external SD Card can store it. Therefore, the data takes up RAM, until some later point in time, when the O/S has transferred the data to the SD Card, by writing it out. This moment was reached several seconds later.

Here’s where the news gets a bit worse. I can download This 3rd-party app, that’s designed to test what speed of external SD Card I have. The reason I need to do this is the fact that I never seem to remember exactly what type of SD Card I purchased, for use with one specific device.

According to this app, my external SD Card can be written to sequentially at ~12MBytes/Sec. That makes it a Class 10 card. Yet, 20MB of data are to be stored in 0.4 seconds. In fact, simply running the benchmarking app caused a second Touchwiz crash, which was just as inconsequential as the first, that I was trying to investigate. What this seems to suggest is, that virtually no SD Card that I can buy, can really be fast enough to be written to at the speed with which the camera app can generate its data. The camera app will need to cache its footage in RAM, before that footage has been written to the SD Card.

Further, the footage is certainly being stored in RAM in an uncompressed form of data (384 raw frames), while what’s to be written to the SD Card is finally compressed. (:1)

And yet, either of these two apps will cause the Touchwiz crash. Hmm… I think that for the moment, I’ll just hold my horses, and record a maximum of 0.2 seconds of Super-Slow-Mo. Thankfully, this is a parameter that I can choose, with the little icon in the upper-right-hand corner of the view, before shooting.

(Updated 11/17/2019, 12h10 … )

Continue reading About a minor (Home-Screen) nuisance I’ve experienced on Android deviceS.