Disclaimer

The content of this blog is my personal opinion only. Although I am an employee - currently of Nvidia, in the past of other companies such as Iagination Technologies, MIPS, 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.

Wednesday, April 18, 2018

3Dconnexion: SpaceMouse

3Dconnexion: SpaceMouse:



'via Blog this'





I may be in love.  Although this is the sort of product I will want to try before I buy.



I don't do much 3D, although my daughter does.



I would be happy to try/buy this device, if it is usable for trackball-comparable navigation - it probably needs good ballistics.   However, 3DConnexion selling kits of the 3D device in conjunction with a fancy mouse for selection make me worried that the 3D device is not precise enough.   Although it might be a question of scene motion vs pointer motion, segregated by device.





Apart from 3D, the fancier versions of these have many
buttons, reducing greatly the need to move hands between pointing device and
keyboard:
  • Even
    the most basic compact SpaceMouse has two buttons – not much, but they can
    open radial menus, which Bill Joy says can be much more efficient that
    linear menus
    • Radial
      menus in AHK have been a project for my copious spare time
  • the
    fancier “Pro” version has
    • 4
      function keys
    • But
      more importantly
      • Left
        side
§  3
modifiers – control, alt, shift – which if fully chordable, gives 8x the bindings
§  ESCape
and MENU keys
      • Right
        side
        • 6
          keys
I would that these are not
hardwired, and/or can be redefimned so that they can be usefully hooked in AHK,
 but even if not, the modifier keys and ESCape
would help greatly in menu navigation and selection without using the pointing
device
  • The
    top of the line “Enterprise” version has
    • Total
      8 keys on left – the Pro 6, plus Enter and Space
    • Total
      11 keys on left – although looks likely to be not as programmable as I
      would like
    • Most
      notably
      • 12
        “programmable” function keys on top
with a small LCD screen
that can switch to show current bindings.

Not quite the Optimus
Maximus keyboard with OLED keytops,

Nor the Sonder keyboard
with e-Ink keytops

but steps towards the holii
grailii

I think that I may be in love!

I think that I would like to buy this device with a
trackball in the middle, not necessarily the 3D 6dof device.  But if the 3D device works, sure.

But this is the sort of device that I would like to try before
I buy.  Even with full-$$$ refund, returning
it if it doesn’t work is a hassle.


I wish the Kensington TurboBall Trackball was still around :-(

Amazon.com: Kensington TurboBall Trackball (PC/USB Mac): Electronics:



'via Blog this'





I used the Kensington TurboBall for years - had 4 of them, work, home, etc.  Unfortunately, using mechanical rollers, eventually all jammed up beyond hope of lubrication.   I replaced them with the Kensington Expert Mouse  Trackball, which uses an optical sensor.  The ExpertMouse doesn't jam, but its ergonomics are much WORSE than the old TurboBall - it forces my wrists to bend backwards.  Therefore, here I am,  >10 years later, looking to buy used TurboBalls to replace my ExpertMice trackballii.



TurboBall - the best trackball I have ever used.  If it were redesigned with optical sensing, I would buy a dozen of them!



ExpertMouse Trackball - the best of the rest; the best being sold new.



BTW I have also tried the Kensington SlimBlade and the two shapes of Orbit trackballs. Plus trackballs from other vendors.



Factors:



+ Ball Size - the larger the better.  The ExpertMouse has a 55mm trackball, as does the SlimBlade, The Orbit has a 40mm trackball, as did the TurboBall.  Since I prefer the TurboBall to the ExpertMouse, I guess wrist angle outweighs trackball size, but not by much.



+ Buttons - I really prefer 2 to 4.  I think that's why I prefer the ExpertMouse to the SlimBlade.   My usual bindings are LL=left mouse button, LR=right, LL+LR=middle, UL=back/forward, UR=app specific.  I.e. 2 buttons just aren't enough. In fact, I use AutoHotKey to create different actions for trackball button click, hold, double-click, click-and-hold, etc. - i.e. I have 2 or more actions per button, even without modifiers.

     BTW, I remember fondly an older trackball, where you could tap or depress the ball itself.



+ Ergonomics - wrist angle.  The TurboBall allowed a neutral wrist angle.  The SlimBlade only required a slight back angle (extension), but the ExpertMouse requires a much worse wrist extension



The ExpertMouse is so bad in this respect, requiring so much wrist backwards bend (extension), that: ...



a) I have actually used the ExpertMouse reversed - so that the part closest to me is tallest - which allows wrist flexion, a nice negative angle.  It is surprisingly usable this way. It takes getting used to rolling right moves the cursor left, etc.  But it makes it very hard to use other people's trackballs.

     WISH: some sort of USB adapter that would negate X and Y signals.



b) If I don't manage to find a TurboBall, I will try foam wedges to adjust the ExpertMouse angle.  Trouble is, my keyboard/mouse tray are not adjustable enough.


Saturday, April 07, 2018

WISH: pictures in version control system logs

More and more I am wanting to be able to embed pictures everywhere.  Typically bitmaps, screen clips - but vector pictures if ... they efer become uniquitous.  Colors. Colored text also nice.



Why?



For example, I just checked into .gitconfig some aliases to prettify my got log output. It sure woyuld be nice to be able to show the pretty colors.



Similarly, I would like to embed suich colored examples in the comments for programs.,



No, links to image files do not cut it.  Anyone who thinks that does not understand version control, divergence, consistency.  You may think that images are overkill - that I will accept as a legitimate position, but one that I disagree with more and more - but



Links do not cut it - unless the links are "local inside an archive file".  More and more thinking in terms of any interesting file being an archive, e.g. a tar file, with perhaps a default .txt or other "primary".   With "links to files" that are neighboring in the archive.



Archive files, and directories for that matter, are the natural objects of UNIX derived filesystems.  Pity that their atomicity is not enforced, on systems like MacOS.




Friday, April 06, 2018

WISH: Browser Save Passwords only for Regex Match Domain(s)

Manage saved passwords - Computer - Chromebook Help: "Stop Chrome from asking to save passwords
By default, Chrome offers to save your password. You can turn this option off or on at any time.

On your computer, open Chrome.
At the top right, click More  Settings.
At the bottom, click Advanced.
Under "Password and forms," click Manage passwords.
Turn the setting off."
'via Blog this'
I prefer to use a password manager like LastPass to manage my passwords.



I would prefer not to have my web browser, like Chrome, offer to save passwords.   Normally I disable this.



However, my employer has many sites that use password systems that LastPass in Chrome cannot recognize and manage.  Like HTTP Basic Authentication - although I hope that IT does not do THAT. Not just myemployer.com and www.myemployer.com, but many, many, subdomains.



So, unfortunately, I have to use browser based password management for many sites in *.myemployer.com (plus a few others that are outsourced).



It is annoying that browser based password management is either ON for all sites, or OFF.  At least in Chrome.  Not just annoying, but fragile.  If a password is saved in both my briwser and LastPass, it can become inconsistent, and can get lost. I wish that I could provide a few regexps to indicate which sites the browser should and should not try to save passwords.



I wonder if FireFox supports that.


Saturday, March 24, 2018

Missed flight because Lyft

I just missed a flight because Lyft on my iPhone turned up its nose at my credit card, saying ...



I entered the information Lyft asked for, it thanked me ... and then sent me back to the same screen when I attempted to get a ride. 



I tried changing the credit card Lyft used.  No good, same message.



I called the credit card company.  No problem on their end.



It looks like Lyft may be doing their own fraud monitoring. Lyft may have noticed transactions from out of country. This is an issue, since I alerted my credit card company as to my travel, but not Lyft, or similar companies.  Not to mention the privacy issue, if Lyft is monitoring my credit card transactions.



Lyft tech support?  What's that?




Friday, March 09, 2018

Idea?: symlinks to reorganized content marked, aged, and deprecated

I am reorganizing a number of my directory trees (actually, moving Windows "stuff" out of a Cygwin repo to make it easier to use when I have not installed Cygwin).



As I am doing this, I am (often) leaving symlinks in the old location pointing to the new.



The problem with such symlinks is that the filesystem never gets clean.  Not until you actually delete the symlinks.  But then you may not be able to find old references.



Version control .... yeah, but who wants to go through VC logs.



IDEA:  mark such "legacy symlinks".  Hide them by default.   When code tries to follow such a symlink, return an error - but a special error, that a suitable UI could provide meaningful info about.





Something like HTTP status codes



  • 3xx Redirection
    • 301 Moved Permanently
    • 308 Permanent Redirect
But we can do better:

Instead of returning an error and expecting the user to understand, we might allow the user to set configuration options that 
  • ? automatically follow such redirects ?
    • with a verbose warning
    • only if valid as of time T
    • only if not conflicting with current redefinitions of the name.
etc.

Essentially providing some sort of version control functionality.

And encouraging true cleanups, while still keeping the "find out where it went functionality".



Thursday, December 21, 2017

WISH: Exception Coalescing Operator/Expressions, like Null Coalescing

BRIEF:



I might like exception coalescing expressions and operators, e.g.

result := expression1 ?if-exception expression2 ?if-exception expression3 ... 
result := expression1 ?if-exception(EXCEPTION_TYPE x) x 
along the lines of null-coalescing operators like Perl // or C# ??



DETAIL:



I very much like the null coalescing operators, like Perl's //

$a = $b // 'value if b is null/undef';
I suspect that I would also like the Elvis operator ?: if I could get away with using it (i.e. if I felt that my coworkers would not crucify me for using non-standard C), and various safe-traversal operators like ?. ?[] etc.



Today, writing some unit test code, I wanted to do simple exception handling, and I think that I realized that I might like to have an exception coalescing operator, or, more generally, try-catch style exception handling as an expression rather than a statement.



I wanted to do 

result := f(input) or "error" if an exception was thrown
which usually looks like

try {
     result := f(input);
     assert( result == expected );
} catch( ... ) {
     assert( 'according to whether exception is expected or not' );
possibly testing for particular exceptions.



Of course, I (or the test framework) usually have functions like

test_assert_equals( f(input), expected_value )
or

test_expect_exception( f(input), expected_exception )
or

f := if_not_exception( f(input), 'exception_value' ).
but that can be quite clumsy.  And, in non-test cases, you may want to chain

f := if(_not_exception( g( if_not_exception( f(input), 'exception_value' )), "exception2")
In general function(args) can be clumsy compared to prefix_fn(args).suffix_fn.suffix_fn2.





In this particular case, I think that I would like an exception coalescing operator

result := expression1 ?if-exception expression2
equivalent to

declare result
try {
     result := expression1;
} catch( ... ) {
     result := expression2;
}
return result
and chainable

result := expression1 ?if-exception expression2 ?if-exception expression3 ...
If we wanted to specify exactly what exception is caught

result := expression1 ?if-exception(EXCEPTION_TYPE x) x 
(although this raises the possibility of multifix vs infix binary)



Q: what should the operator be?   While I could live with ?if-exception - especially if in my oft-desired XML-based-programming-language-syntax - many folks would prefer something expressible as ASCII.  I would suggest ??, except that C# already uses that for null coalescing equivalent to Perl //.



?//



But if we can't have a nice set of hard to remember symbols, how about traditional try/catch as an expression?

result := try{ expression1 } catch(...)  {expression2 }
This happens a lot - similarity between expressions and statements.  In LISP everything is an expression. Python gets much of its readability by having a stricter boundary between expressions and statements. And debuggability - accidentally making something into an expression when it should be a statement can be hard to find.



Perhaps there should be expressions corresponding to all statements - bit with a minor syntactic indication.




















'via Blog this'