The content of this blog is my personal opinion only. Although I am an employee - currently of Imagination Technologies's MIPS group, in the past of other companies such as Intellectual Ventures, Intel, AMD, Motorola, and Gould - I reveal this only so that the reader may account for any possible bias I may have towards my employer's products. The statements I make here in no way represent my employer's position, nor am I authorized to speak on behalf of my employer. In fact, this posting may not even represent my personal opinion, since occasionally I play devil's advocate.

See http://docs.google.com/View?id=dcxddbtr_23cg5thdfj for photo credits.

Thursday, February 25, 2016

Data Tracking

Data Tracking:

'via Blog this'

On Tuesday:

- my FitBit reports 16 minutes of exercise.

- Moves, an iPhone tracking app, reports 39 minutes of walking

- my Jawbone UP2 reports that I was active for 1h19m, and that I had a 24minute walk.

- the Misfit app on my Pebble watch reports 12m of moderate activity, and 44 minutes of light activity.

- this Aetna site reports 51 minutes of exercise, which it says it read from my Moves app.

Go figure.

These devices certainly have inconsistent metrics.

Performing · Quadro

It looks like Quadro's "fluid gestures" (press on group, group opens, slide to button within group, release) explains the "bouncing" that I have been complaining about.  Although they say that I should be able to tap on a group and then tap on the final item, it appears that my taps are too slow - so they interpret them as "fluid gestures" and select the button beneath the group button.

Many systems have similar UI distinctions, but they usually offer a configuration slider for tap speed.

Performing · Quadro: "Fluid gestures
When launching an action inside a group, or recall an option from the toolbar, the usual method is to tap on the parent (the group for instance) and then again to reach the final item (the action in this case).

A better solution though is to perform the aforementioned task with a single move, called Fluid Gesture. To use fluid gestures, just pose your finger on the nesting item (a Group, the Favorites, the editing button...) and pan, without lifting your finger, to the nested item of choice (an action, a favorite palette...) then lift your finger.

Doing this launches the item your finger was placed on.


'via Blog this'

New pad layout and iPad Pro optimization

I am very happy that labels can be displayed underneath the "icons" on even the smallerst 1x1 Quadro button/pads.   As I posted earlier, this really helps.

However, it would also be nice if labels could be displayed underneath the "artwork" on similarly sized Quadro button/pads.

I am not sure of the difference between "icons" and "artwork".  Both are pictures one can display on a pad.  Perhaps artwork is color, and icons are white on black?

In any case, it is unfortunate that the best symbol I have found for "grocery shopping" is not able to have the label text beneath it just because it is "artwork" and not an "icon"  (because it isn't THAT good a symbol).

New pad layout and iPad Pro optimization: "Labels can now be displayed on all pads, including the smallest. Since release, this has been highly requested and was more than necessary with the iPad Pro. (Curious fact: we received more requests for this from iPhone users than iPad!)"

'via Blog this'

Bug: Typing with the Keyboard · Quadro

Typing with the Keyboard · Quadro'via Blog this'

This page says "Quadro includes a hidden Keyboard for quick text edit and management.

You can recall the keyboard with a single swipe from the bottom of the display-up."

Not on my iPhone 6+.  On my iPhone 6+, swiping  from the bottom of the display up gets me Apple's standard "Control Center" https://support.apple.com/en-us/HT202769

In general, I have more trouble with the swipe gestures on Quadro than on any of the other apps that use them.   On Quadro, I can barely do a swipe from left edge at all. Fortunately, for that there is a workaround.  But I have not found a workaround for Quadro's swioe from bottom of display up to get the keyboard (NOT)".

I am going to make a slew of blog posts that are really problem reports against Quadro.   "Blog this" is the easiest way I know of to make such reports.

(I used to have a set of weblets that posted such reports to my wiki - but, since I took my wiki down, no easy way.)

Wednesday, February 24, 2016

New Quadro Release - Nice Improvement, Ways to Make Quadro Even Better

I am quite happy with the February Quadro release, as I describe in New Quadro Release - Nice Improvement.

But, being me, I see ways to make it even better.

First, I really wish that  Quadro could work on a private link between Quadro device (iPhone, iPad, hopefully soon Android) and the device that is being controlled (Mac, Windows).   For security if nothing else.

But I also want Quadro when "roaming", e.g.  at a restaurant, using my iPhone's "personal hotspot" to allow my MacBook laptop to access the Internet.     (At the moment, after 8 hours of trying, I have not been able to make Quadro work on a "personal hotspot" connection, no matter whether USB cable, BlueTooth, or wifi between iPhone and MacBook.  I have only ever been able to get Quadro to work on a "frontside" network.   Since my main use for Quadro is email, making email reading tolerable, and since I mainly read email while roaming, away from my desk, not being able to use Quadro while roaming is a pain. Almost a deal-breaker.)

You really do need to explain whether and how Quadro is secure.   I cannot recommend that other people use Quadro until I can assure them that it is secure.

The new Quadro release still suffers the problem with "bouncing": Problem: Often "bounce" when hitting a group, also hitting button at same position in group entered.  This is a bad problem.  I have learned that I have to have an empty space in the group, I am connecting to, at the same position as the button that gets there.  This is a pain, making it hard to create a set of pads that connects to manty different groups.   I am almost ready to start "wasting" the top row of every palette.

(Pardon the colors.  Google's blogger edit is broken.)

I wish that I could copy/cut/paste and drag buttons/pads between groups/screens/palettes. I find that I often want to have the same button on multiple pads - like Undo, and also Enter (typically to select or conform some choice).

I would like to have    , the standard symbol for "Enter" or "Carriage Return"(U+21B5, HTML entity ) in the Quadro icons list - since I have found that I need to place it on many groups/screens/palettes.

The ability to design my own icons and artwork would be nice.  The icon set that Quadro provides, even to people like me who have paid 50$ to be "Heros" and support Quadro development, is quite limited.  Although I suppose that Quadro may want to sell aadd-on packages.  (Hmm, perhaps I should look for these resources inside the Quadro app.)

My original request for palette "overlays" still stands - even more so, now that I can get more buttons/pads per palette/group/screen.

Now that I am editing palette systems I set up a few months ago - I really do need to be able to version control and diff them, etc.

Now that I have more room, I am starting to create "button groups", such as
  • Generic Forward (fill in the To address)
  • Forward to my wife
  • Forward to my boss
I have been able to paste text into new dialogs/windows... but this requires waiting until the new window is open.   Quadro has time delays - better than nothing - and also gives us the ability to tap to end such a delay - very good.  But it sure would be nice to be able to do what AutoHotKey on Windows can do - wait for a window or dialog to open, as opposed to waiting a fixed number of seconds, which is probably too long or too short.

Creating many similar but slightly different, slightly non-trivial, buttons raises the importance of being able to cut and paste buttons and actions. between screens/groups/palettes.   Again, for people like me, text files would be best.

Now that I can put labels beneath icons even on really small 1x1 buttons, it reveals the need to have short labels for display, and longer text strings for flyover / press to get help.
     This should not be a surprise.   It is a pattern described in most good UI / UX guidelines.

I cannot reliably open Quadro's  “key selection keyboard” by swiping up.  I.e, http://support.quadro.me/docs/the-keyboard does not work. 

The only way I get it to work is to use auto-recall.   And auto-recall only works in text fields. 

I would love an ACTION to open the keyboard, so that the user can type something in a text box that Quadro did not recognize.  (What is that, a non-Cocia app?  Like, say, Emacs? Or anything X Windows?)

The way Quadro handles hot-keys, one at a time, may work fort Mac, but is clumsy for apps that use key sequences rather than chorded keys, ;ike Framemaker (or Emacs).

New Quadro Release - Nice Improvement

Although I had some problems upgrading to the new Quadro release, I am overall quite happy with it.

Wait: I like Quadro enough that I want everyone to use it.  Therefore, I am very Very VERY happy with the new Quadro release!  Everybody should use it! I really do think that it is one of the best things to happen to user interfaces since swipes and GUIs.

It is a small thing - literally - but being able to have labels underneath icons for the smallest 1x1 has allowed me to make most of my buttons 1x1 (had to make some of the labels smaller to fit).  Which allows me to cram almost twice as many easily reachable shortcut/button/pads on a given Quadro palette / screen.

I conjecture that my happiness is related to the square of the number of things I can easily reach.  Or, conversely, that my unhappiness is related to the square of the number of things I have to type in order to accomplish something.

Of course, I always want things to be better still. See: Ways to Improve Quadro Further, plus items such as this.

RESOLVED: Quadro no longer worked after update ... but now it does (8h wild goose chase later)

In the past, I have said
Krazy Glew's Blog: Quadro - I love it when it works, but it is often unreliable:

but I haven't used Quadro in a while.  After I updated to the latest, then I couldn't get it to work at all.

I must really want Quadro, if I am willing to waste all of this time on it.  (So far circa 8 hours.)

****** [10:57 AM] Quadro

Trying to use Quadro again, for email reading.

last night hung.

******* Connection (USB)

Connecting using USB.

(Unfortunately, USB=>iTunes. iTunes was sure I needed an upgrade to iOS 9.2.1, even though I was already on that.  Also wanted a credit card.)

******* Uninstalling, rebooting

This morning, uninstalling on both Mac and iPhone.  Rebooting both.

Connecting using USB.

******* [11:23 AM] Reinstalling

QuadroSync on Mac


Java Runtime Environment... (oh, joy, Java - now THAT makes me feel good about security (NOT)

Installed from Java.com

11:36 PST: now QuadroSync installer is hanging.

Rebooting (again)

12:24 PST: I rebooted 2 or 3 times more.

Along the way, Bill Lee came by for a chat about some issues - maybe half an hour.

But, right now, <12:25 PST>, as "clean" as I can be, I still get a JRELoadError when I try to run the QuadroSync installer.

Googling - many JRELoadError reports with open source Java based software such as ProjectLibre.

I fear that Quadro depends on a particular version of JRE, not the latest.

I have Java Version 8 Update 73 installed - latest from Oracle (java.com)

I will try installing an old version of Apple Java

******* [12:29 PM]]Installing old versions of Apple Java


Download Java for OS X 2015-001

******* [12:42 PM] Old Apple Java does not help -

The old version of Apple Java did not help (after yet another reboot).

Still "JRELoadError"

Uninstalling the old version of Aople Java.  Then I will see if Quadro can run even given the JRELoadError.

Grrr.... uninstalling Java is not clean (Uninstalling anything on Mac is not clean)


    Reply Helpful by Kurt Lang on Jul 26, 2015 1:12 PM

    Believe it or not, the easiest way to uninstall Java 6 is to either restore a backup you made before installing Java 6, or reinstall the OS. Reinstalling the OS always removes the Apple  versions of Java.

    Java 6 installs over 1300 files and folders to numerous locations on the drive. There is no easy way to manually uninstall it, and  Apple doesn't provide an uninstaller.

    Kurt Lang

    Jul 26, 2015 2:12 PM

    in response to Joe Bailey

          I installed the Java 8 Runtime Environment  which overwrote Java 6 obviating any necessity to remove it.

    That is incorrect. Java 6 and 8 can and do exist at the same  time. Java 8 is installed only to the /Library/Internet Plug-Ins/ folder in the single package file JavaAppletPlugin.plugin. Java 6 is not. It's all over the place, including hidden folders, and none of it in the /Library/Internet Plug-Ins/ folder. So it's not even possible for Java 8 to overwrite 6.

Last login: Wed Feb 24 12:49:11 on ttys001

andy-glew-mbp:~ glew$ java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
andy-glew-mbp:~ glew$

Eventually I did the following:
    ---+ BRIEF
    Java 6 disabled ... blah, blah, blah.
Imperfect. But I hope enough.

Uninstalling Quadro and rebooting and reinstalling again, just in case.

****** [1:19 pm] Trying again  :-(

So, having (re)-disabled Java6, I (re)-install QuadroSync.

I ignore the JRELoadError.

I run Quadro on iPhone.

Clicking QuadroSync on Mac says

"Multiple networks"

- the company landwire Ethernet
- the virtual network between Parallels VM and Mac
- the link between iPhone and Mac

Right now, I am using BlueTooth PAN between iPhone and Maac.

Tried USB, with similar effect.

I will try wifi in a sec

Here is what happens:

Quadro on iPhone says

>Let's get serious   [Me: yes: frigging unprofessional messages]

> Connect your computer and this device to the same network

As stated above, connected via Bluetooth PAN.

I can unplug company network, and still work.

... OK, I've installed QuadroSync ...

> Now connect!
> Select your computer to start

4 blank rectangles, nothing in them

- I wonder if the problem is that I may have disabled some insecure network broadcasts. Bonjour, pr whatever ... ?  [Later: no, not that.]

> Stuck? Try here

I press this last, and get

>Manual Sync
> Find your computer's address on QuadroSync

Click on the QuadroSync mini-icon in menubar


> I'm not connected

> Address IP [Multiple IP Addresses]

... looking at those, 3 nets.  I choose the net, that I know is my iPhone link

Type that info into Quadro on iPhone:

>IP address 172/20.10.4
>Port 6021

Hit Connect.

This time I get the annoying

>QuadroSync connection error
>The daemon in the cellar just shout: 49
>0 - the operation couldn't be complerted. Can't assign requested address

Try it aagain (I thinkl it may have timed out, because I was writing these notes)

Mac reports connnected to AG6i

But Quadro app on iPhone just hangs.
    Spinning crap wheel.

Hitting Cancel
    does nothing

Hitting DONE makes Mac say beep and bloop as if disconnected.

But QuadroSync still says connected to iPhone

And iPhone still spins.

****** 13:43:  Tried changing Port

.. worse off - get the effing "daemon in the cellar shouting" 49.

never actually connect

tried ports 1025 and 6543. interestingly, even worse behavior - although pssibly collisions.

****** <2016-02-24 13:44:13="" 24="" february="" pst="" wednesday="" ww08="">  I must reaklly like Quadro...

I must really want Quadro if I am willing to waste this much time on it.

4 hours today, 1-2 hours last night.

****** <2016-02-24 14:25:17="" 24="" february="" pst="" wednesday="" ww08=""> SUCCESS!!! Quadro works... but ... ????

I finally got Quadro working!!!!
- I disabled all of my Virtual Machine nets and iPhone-to-Mac:BT/USB.
- I unplugged the physical ethernet wires.
- I connected both iPhone and Mac to the same IMG-Staff-BYOD wifi.

And this time the Quadro app saw the QuadroSync MacOS, so I did not have to enter IP addres and port number manually.

I should have tried this much earlier.

I was probably confused

a) by the old pre-update multi-network configuration formerly working, when I entered the IP address manually


b) QuadroSync on the mac reported connected, although Quadro on the iPhone hing.


c) I went on a wild-goose-chase searching for the JRELoadError.

I can probably use Quadro like this.  Not for everything, not if the Windows guest is down.
- I will try to enable the virtual machine network interfaces.
   + DONE: Quadro works.  It is just the tethering interfaces that mess Quadro up.

But it is suboptimal.  I would really like the Quadro iPhone to Mac
traffic to go on a dedicated link, like ethernet over USB or ethernet
over BT or a private wifi, not through a shared wifi.

And, moreover, this will not work if I am using a company provided PC, which is not allowed to connect to the BYOD wifi network.

But I guess it is understandable that Quadro could get confused by
multiple network adapters - on both Mac and iPhone.  (Although it used
to work - what changed?)

Testing: I have ONLY been able to get Quadro working when both iPhone and Macs are clients on the same wifi.

None of the tethered configurations I have tried have yielded a working Quadro Configuration
+ NOT iPhone <--personal-hotspot-bluetooth--> Mac
+ NOT iPhone <--personal-hotspot-usb--> Mac
+ NOT iPhone <--personal-hotspot-wifi--> Mac

But using this "equal privilege" wifi
+ Mac works
  + with "front-end" landline ethernet
    - note: takes a bit of work to prove that the faster landline path is being used
  + with all virtual machine networks running

This is usable at work.

It is suboptimal - e.g. when I am at a restaurant or a plane, I cannot
connect Mac<->iPhone via one of the Personal Hotspot configurations
(USB/BT/Wifi) abd use Quadro.

It is almost enough to make me want to use my old mifi device.  I
wonder if I can use that device just for Mac to iPhone connectivity,
using some other path to the net (and thereby avoid having to pay
another 10$/month to the phone company.

But having to carry a new device around, just so that I can use Quadro in a restaurant, is a pain.

Also: in a restaurant or the like, when travelling, I often have my
phone charging via USB from my laptop. Sure would ne nice to both
charge and send Quadro comm over that wired link.

I sure do wish that Quadro could just use a USB cable or BlueTooth.

It is also possible that the issue is firewalling.  I could certainly
understand a personal hotspot not wanting to allow communication
between the mobile-phone-that-is-the-hotspot, and the
laptop-that-is-tethered.  At least not by default.

But I am pretty damned sure that it has worked in the past.  Plus,
even today and yesterday, Quadrosync on the Mac is able to see the
iPhone. It is just Quadro on the iPhone that hung.

I vaguely remember that I was able to configure a past PC to act as a
hotspot, relaying to whatever wired network it was on.  This would
fill the bill at work.  But not in a restaurant, where I want the
laptop tethered to the phone.

****** 3:27pm   Quadro no longer allows me to enter the IP address and port

1) It is nice that Quadro seems to remember the IP address and port of the Mac.


2) I am a bit worried that it seems to no longer allow me to enter., now thaat the original connection was made.

My network environment changes so often that I will be VERY IMPRESSED if Quadro can handle all of the changes. I sure do hope it is not storing any IP address from session to session.  Not only will the IP addresses change, given DHCP, but storing is a potential security hole.

---+ I am happy now - new Quadro release much improved

I am happy to report that, after finally getting Quadro to work (only seems to want to use peer to peer wifi, won't use personal hotspot)

I am quite happy with the improvements Quadro made in their recent release - circa Feb 15, described in http://blog.quadro.me/new-pad-layout-and-ipad-pro-optimization/, and described by a team member as:

We solved most connectivity issues and added a couple of features to the layout.

I am very happy with the layout changes: just allowing the labels to be displayed under the icon on the small 1x1 button has allowed me to make most of my pads 1x1, and thereby get almost 2x the number of "quick commands" into the same amount of screen space.  Allows me to be much more efficient, and, possibly more important, avoid having to switch to "More..." screens so often (because the bug with key bouncing still persists).

(It is amazing to me that, even though I described many, many, issues, just this small change makes me feel much better about Quadro.  Although.... now I am editing my existing "palettes" - I sure do wish that I could back them up appropriately, e.g. to a text file, so that I could compare changes.


I would say that I am very happy, except that 

0) right at this moment, Quadro on my iPhone is hung.  I was trying to create a new button, and it hung in icon selection.   P.S. at least a few of the bugs in icon selection that I described in my original blog posts are still present, in addition to this hang..

1) the fact that it took me almost 8 hours to get Quadro on iPhone and QuadroSync on mac connected indicates that not all of the connectivity issues are solved.   (Although I will admit that once I decided to start from scratch, rather than use the same configuration that used to work, the connectivity was much improved. I still wish I could use it when I am roaming, e.g. at a restaurant, trying to use my phone as a personal hotspot, rather than risking public wifi.)

Thursday, February 04, 2016

Fixing Unix/Linux/POSIX Filenames: Control Characters (such as Newline), Leading Dashes, and Other Problems

I believe that all [*] of the problems David Wheeler mentions could be solved if ALL characters in filenames were "escaped" - e.g. by placing them into some unused prefix space of your character encoding - when being processed. ALL of the characters, not just special characters.  Characters that already have such a prefix applied get two prefixes applied, etc.

Ditto for any script injection or SQL injection attacks.

Note: * I usually attempt false modesty, and say things like "all or almost all".   But this obscures the point.  ALL can be.

Fixing Unix/Linux/POSIX Filenames: Control Characters (such as Newline), Leading Dashes, and Other Problems: "Interesting alternative: Auto-convert spaces to unbreakable spaces


'via Blog this'

Monday, February 01, 2016

FindBin - perldoc.perl.org

FindBin - perldoc.perl.org: "If there are two modules using FindBin from different directories under the same interpreter, this won't work. Since FindBin uses a BEGIN block, it'll be executed only once, and only the first caller will get it right. This is a problem under mod_perl and other persistent Perl environments, where you shouldn't use this module. Which also means that you should avoid using FindBin in modules that you plan to put on CPAN. "

use Dir::Self instead.

(ISSUE: Dir::Self and symlinks.)

Dir::Self - search.cpan.org

Use Dir::Self to cope with the problem that FindBin should not be called more than once in a program.

FindBin for the location of the executable to find libraries relative to the executable.

use lib "$FindBin::RealBin/lib";

Dir::Self for modules that want to load other modules relative to themselves.

use lib __DIR__;


use lib __DIR__ . "/..";

ISSUE: is __DIR__ symlink aware - i.e. is it the equivalent of $FindBin::Bin or $FindBin::RealBin?