Keyboard vs Mouse

Maybe it is because I am enamoured with the world's ugliest, but potentially coolest mouse, or maybe it's that my own mouse is developing quirks that cause me to believe that it is not long for this world, but I've been looking at acquiring a new primary HID. Along those travels, I came across a very old discussion comparing the Keyboards vs Mice. Apparently, Apple spent $50,000,000 in the late '80s, and that's when $50 million was worth something, to study the Apple Human Interface. The result was the discovery of two facts:

  • Test subjects consistently report that keyboarding is faster than mousing.
  • The stopwatch consistently proves mousing is faster than keyboarding.

Like many things tech, and especially since Apple is involved, opinions run strongly in many directions. My own concerns are my own requirements for interfacing with the hunk of plastic, silicon and dopants at my desk and what sort of experience do I offer users in the applications that I create, web or otherwise.

I gotta imagine that there are thresholds and conditions that would impact the truth of those two "facts". One person mentioned in the article says that "there are NO command key equivalents in my product, Smart Labels, except for Undo, Cut, Copy and Paste". The reasoning is that, even though the user may perceive there to be a value in using additional shortcuts, he won't allow it. That seems extreme. What happens when the desired action is hidden behind several layers of menuing or if the action is contextual and you are already using the mouse to highlight the text (modifying case through shortcuts would be very preferable to highlighting and hunting). My own inclination is to add keyboard shortcuts when time or interface will allow me. That doesn't always work and I have lost some recent battles at work to implement minimalistic interfaces that use only keyboard shortcuts.

In that case, it was a dialog box, created by a mouse event that just contained a single text input with listeners for ENTER and ESCAPE. My reasoning was that the act of calling the dialog would provide the context for the input, hence no label, and that ENTER and ESCAPE are natural behaviors. As I said, I lost and now the little interface that could have been was obliged to support a Label, a submit Button, a Cancel button (as the corner "X") and an instruction line. My opinion is that, styling aside, the interface is uglier and code is heavier. (Apparently, I might be a little bitter about this)

Anyway, where are the lines between performance and usability? I've been perusing user experience resources and the focus has been on eliminating the need for a user to think. And, for casual use software, that makes a lot of sense. However, for productivity software where a user will spend much of the day, I gotta imagine that the kind and thoughtful UI developer is going to allow for improvements in performance that occur through user training - though that means a lot more than just adding keyboard shortcuts.

Free Electric Car If You Owe A Bit In Taxes

This was just shared with me this morning and might prove interesting to some of you out there. If you live in the US and have a tax liability of over $6000, you can effectively get a free electric car ... well, a street legal golf cart. I say effectively because you will likely still need to pay shipping and you have to front the money while you wait for Uncle Sam to get you your rebate.

The person who shared this with me has already vetted it with his accountant so it at least seems legitimate to some. However, if you are interested in it, I would think it to be tremendously wise to have your own accountant/tax lawyer evaluate it with respect to your specific situation. Anyway, should you be interested you can look into the details about the free electric car along with related IRS publications at http://www.freeelectriccar.com/shopcontent.asp?type=tax%20credits.

And as a quick aside, I have concerns about programs like this. Perhaps there is an argument that it is stimulating the economy by encouraging the purchase of electric cars. However, it helps to create an artificial demand for an item that is now going to be priced, not on value, but on the ability to qualify for the government rebate. The rebate is for $6496.53 so the cost of the vehicle floats at or just above this number. But what if the real value is less than that? Now the government is creating a a bubble that could have negative consequences down the line - will the government feel inclined to bail out the manufacturers who overextend themselves to keep up with the artificial demand and then suddenly find themselves in a slump when the program ends?

Why not just not tax us not so much in the first place and then give us the opportunity to decide the value of our money and the objects of our desire? Support the Fair Tax if you think that you are responsible enough to decide how to spend your own money.

Scraping 80's Television for Project Management Methodologies

So, basically, I watched way too much television as a kid. I've since remedied this and am now television set free (and would be tv show free if it weren't for Hulu ... damn you accessible, advertiser-driven premium content), however, my mind is indelibly stained with seemingly innumerable hours of 80's television programming (and 70's shows through reruns).

All of that is to relay why it ought not to be terribly surprising that it suddenly occurred to me, while detailing some project or another on a white board that Charlie's Angels may have been incredibly ahead of its time in presenting a model for project development. That spark sent my mind racing for other shows that might offer glimpses of insights into this crazy world of programming. The result was the discovery of three models that I think are representative of freelance software contracting. Definitely not exhaustive, just three that struct may as worth considering.

I latched onto investigation shows as they really fit the model of independent development: Presentation of a problem, exploration of a solution, execution of the solution and finally, payment, though sometimes not. I skipped police shows (Hawaii Five-0, Hill Street Blues, etc), family investigation firms (Hart to Hart, Simon & Simon, etc) and the inane (Scooby Doo, The Fall Guy).

[More]

Simple Actionscript Color Separator Class

I saw a blog post discussing how to grab the separate composite colors from a unit in ActionScript. This has probably been addressed and solved many times, but there does not seem to be a built-in object to take care of this bit of functionality. You'd think that mx.utils.ColorUtil would be a natural place to find such things, but not so much.

So while the author chose to go with string manipulation, I figure it would be a good opportunity to do a little binary work and create a simple little class to keep everything tidy.

The general scheme is to perform a Right Shift and then an And. The color information is either 24 or 32 bit with the extra 8 bits in the latter describing the opacity of the pixel. Shifting makes the desired color channel the least significant amount and the logical and with 0xFF will remove any other remaining information. So, to get the channels, it would work out like the following:

[More]

Flex - Template System Using Regular Expressions & Simple OOP

I think it goes without saying that we all want to be regular expression hipsters like Ben Nadel ... maybe it's just me? Anyway, there have been many occasions when a regular expression would have been the best tool for the job, but I wimped out and went with more cumbersome string manipulations with code. For a recent messaging system using templates, I started down that road but, luckily found a compelling reason to force myself to use the ActionScript RegEx class.

So the quick skinny is that I have a template with placeholders that I need to substitute completely before moving on. For the purposes of discussion, the reasons for the system will be unexplored and I'll try to leave everything simple enough to allow easy re-purposing.

The placeholder for the substitution needs to be fairly unique so that we don't collide with something that ought to be displayed. In this case, we'll denote all of the substitution values with the following form:

[More]

Actionscript Apps for Android

Since I have recently hopped onto the Android bandwagon, I've been perusing the market. After installing the working Tricorder everything does some weak by comparison, but I did press on.

Surprisingly, I found two ActionScript related apps for Android lately:

  • ActionScript Reference for Android
  • Flubble

ActionScript Reference for Android

This ought to be rather self-explanatory. Jonathan Dunlap has whipped together a little android app that offers the AS3 helpdocs. Nothing earth shattering, but a nice way to spelunk the docs. I'm thinking that it'll be my go-to app when I have to kill some time.

Flubble

I haven't quite figured out what to make of Flubble yet. Ostensibly, it is a stubbing app for ActionScript classes. I haven't used this for an actual project yet, but I have run some tests and received my class files both as AS3 and XML. The XML is an interesting option that threatens to have some potential, though I haven't worked out quite how I would use it. It looks to be a nifty little app and I hope that I can fit it into the workflow in some way.

Of course, there are a lot of generic supporting apps to be found (text editors, ftp clients, ftp server (odd), flash card makers and the like), but for some reason I was surprised to find an app like Flubble. It does get the wheels turning about what sort of apps could be created for the platform.

Thank You Hal Helms

As many might remember, Hal Helms backed out of his speaking engagement at CFUnited 2009, but offered to make it up for free. Understandably, that caused comments by many, but, hey, Sarasota is just an hour-or-so away, so I was happy to hear it.

Having trekked over the Skyway bridge and back a couple of times now with Alex, I can say that I am really glad things worked out the way that they did. In total, eight of us converged upon the office of CityMind to meet with Hal and bask in his wisdom.

Ben Nadel is a better source to learn about Hal's commercial Real World OO classes, but this weekend was somewhat informal and focused a good deal on philosophy and business practices - with some CF Object Oriented Programming and jQuery examples and discussion thrown in for good measure. For me, this was very timely, as I have just finished reading The Passionate Programmer and have been contemplating some of the non-technical details of my career.

[More]

Wraptext Can Break Links in CFMAIL HTML Emails

I've been working with an automated messaging system as of late and have run into little snags along the way - mostly in trying to normalize output across multiple email clients (I'll post on that shortly). One of the more peculiar things that I've observed is that the wraptext property of CFMAIL can affect the rendering of HTML mail content. Specifically, whitespace is injected at the line breaks.

I might not have realized this was happening, or even been affected by it, except that I had left in a quick test case of a wraptext at 30 characters. When the HTML content is rendered, it isn't obvious as to what is happening. However, both Outlook and GMail were inserting a single white space at the line breaks. This is annoying when it affects text, perturbing on anchor text and devastating to functionality in links. In one case, the break occurred between the "c" and "o" in the ".com". Outlook's response was to not even try to launch it. If, however, the break occurs after the fully qualified domain name, Outlook will at least try, even if it doesn't go where you want it to. (It was the doing nothing that drove me nuts).

So, moral of the story is that if you are setting the TYPE to HTML, you'll want to omit the WRAPTEXT completely or set its value to "No".

Flex Builder Coldfusion wizard visual query builder not working solution

This has been haunting me this entire week, particularly since I found the solution more than once but chose to forget it. Thankfully we started this blog to help us provide the answer for the things we forget.

So, if the visual query builder does not show up when you try to edit a master page or edit detail page while using the Coldfusion Flex or Ajax application wizard, HERE IS THE SOLUTION:

Start Flex Builder as an ADMINISTATOR! (Windows Vista or 7)

I hope I will remember the next time...

To reiterate, starting flex builder 3 as an administrator fixes the issue where the Visual query builder does not seem to work while trying to edit master page.

Flex - Rounded Corner Component with Tiled Bitmap Background

Lately, I have been getting more involved into working with the visual aspect of Flex. Up to now, I had been able to pass off the styling to Alex after working on the functionality or have just worked on projects where the visuals weren't a concern. Anyway, it is often good to get opportunities to explore.

So, the simple thing that I needed to do was to create a rectangular component based on mx:Canvas with a tiling background and rounded corners. Figuring this ought to be a straightforward thing to do, I blithely set about it.

First snag: Flex doesn't seem to offer a straightforward way of identifying a repeatable background for the Canvas class. Quick searching revealed that one can do this with Degrafa, but I didn't want to go that route. (Not that Degrafa isn't tremendous, it just seems like a lot of overhead just to tile a background image.) There is another solution for setting a tiled image as a background.

That is a really nice solution, but, for my immediate purposes, has distracting elements like loading the image at run-time. Run-time loading could be an incredibly useful feature, and it is worth noting, but if you have a small, single image you want to use, it is nicer to just embed it and not have dependencies at deployment. The core of the solution is to use lower level AS3 functions to draw a rectangled that is filled with the bitmap of choice.

So, a quick bit of code that shows the embedded image written as a tiled background for the component:

[More]

More Entries

BlogCFC was created by Raymond Camden. This blog is running version 5.9.1.001. Contact Blog Owner
Watch the latest videos on YouTube.com