Happy Birthday issue 38204

Happy Birthday issue 38204!Following on from my previous post there has been a flurry of activity on issue 38204 in Google Chrome’s bug tracking system.  However, I have since realised that issue 38204 originally advocated giving the end-user a setting to turn the status bubble on and off.  Although this is a useful feature by itself, it does not address the points of my post:

  • usability: the status bubble covers up parts of web pages and web applications, impacting their usability.
  • functionality: the status bubble moves out of the way when the mouse approaches it, which is just a workaround for the usability problem.
  • accessibility: the status bubble appears, disappears and jumps around attempting to mitigate the usability problems, but in doing so causes distraction and confusion, especially for end-users with ADHD and ADD.
  • security: the status bubble’s behaviour can be spoofed by a malicious website, potentially enabling a social-engineering exploit.

I believe that these aspects of the status bubble are much more serious than allowing the end-user to turn it on or off.  Therefore, and to celebrate the 1st birthday of issue 38204 on March 15, I have given birth to another issue in Google Chrome’s bug tracking system: issue 75832

If you want to sing ‘Happy Birthday’, then be my guest, but please visit issue 75832 and show your support there too.

10,000 Hits!

Just a quick note to say we have just reached 10,000 hits to the Workbooks Technical Blog. Thanks for reading!

./java: No such file or directory (on Linux)

… and when you look, it exists, it has the correct permissions and everything. Do a long-listing and it’s readable and executable by everyone, and all the directories up the tree also are.  It just doesn’t start!  I spent a while looking for this and didn’t find it on google so hopefully this helps someone.

The clues:

$ file java
java: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped

$ uname -a

reports a 64-bit OS.

The problem is you’re running a 64-bit OS with insufficient 32-bit shared library support to run a 32-bit binary.

The solution:

$ sudo aptitude install ia32-libs

(Courtesy of http://www.debian-administration.org/articles/534)

PS: Yes, I know I could get a 64-bit java interpreter….

Avoid minification with IE conditional javascript

In order to save bandwidth, merging and minification of CSS and JS; assets is really useful.  However be wary of including any code in that which uses IE conditional javascript.  Something I did not realise existed until digging into this issue, despite many years of conditionally dealing with different browsers!  For those not in the know, in IE /*@cc_on!@*/ will “evaluate” to ! thereby making var isIE = !false; which is true, of course.  Any other browsers will ignore the comment and set var isIE = false.

Helpful until that code is run through a minification which strips all comments and is not aware of such things!

Annoyingly, code from a 3rd party that is part of our application was being minified in production mode and uses this technique to identity if a browser is IE or not.  Which gave very spurious results when testing IE…  The solution for us, rather than hacking the 3rd party code was to use a direct include of the file into the pages that require it, and to use ?v=x.x.x after the filename in the source to ensure we can still force reloads in clients after we make changes to it (probably just an upgrade) in future.  This was something the merging and minification process kindly gave us for free.  In this case I made the number match the version of the 3rd party source we are using for consistency.  This is a pain in that it requires changes to templates and it not automatic, but modifications to the included file in this case are likely to be rare, and is the easiest option allowing the rest of our assets to still be merged and minified.