Usability Thinking
Junction of Engineering, Design, and Usability. By Moses Ting
Junction of Engineering, Design, and Usability. By Moses Ting
Jul 19th
If you’re product is truly desired and has a good purpose, people will sign up to use it no matter what. But don’t force your visitors to sign up just to look at the capabilities of your site, that’s just plain annoying. Here’s a quick example of Kapitall.com:
I’m visiting, so let me try out the product. I neither want to give you my information, read the terms and conditions document, nor want to sign up for your newsletter. So don’t block me from your supposedly great product with a modal dialog. I’d rather go straight into demoing the product, then sign up when I want to use it.
Jun 29th
There’s been a growing recognition & usage of the term T-Shaped people. What’s a T-Shaped person you ask? Well, to summarize, a T-Shaped person is an individual that has a depth of experience/skills in one specific area, but also has a breath of knowledge in a number of other fields. The depth is represented by the vertical strike, and the breath is marked by the horizontal line.
Well, I had a conversation last night regarding how I’m a hybrid of an engineer and a designer, so what shape would I be? The letter T won’t work here because I have two verticals of experience/skills. Possible candidates are the letters of N, U, H, and X:
So, which letter should be used to represent the hybrid individual? My vote goes to either U or X, with a strong preference for X. (It’s kinda funny how UX stands for usability experience, which is one of my favorite subjects). Here’s a bit more reasoning for my preference of X over U:
I wonder what other hybrids out there might think, and which letter they prefer. Maybe we can start a movement here, something to achieve recognition for hybrid individuals in a specialization-preferred world.
Jun 29th
It’s really amazing to see the amount of work and thought that goes into the creation of a solid web browser. There’s a whole lot of talk about speed, namely JavaScript engines such as V8, SpiderMonkey, and SquirrelFish that boasts browser performance. But what about browser usability? Speed is great, but most people couldn’t tell the difference between 0.15 and 0.25 seconds worth of rendering time. (I think I can, maybe.) However, most people will notice things like:
Most of the list above has to do with the usability of the browser itself. I will happily trade ease of use for .10 seconds of speed improvement, on 354 days out of the year.
When it comes down to it, usability matters a lot to me. And I personally am becoming more drawn to and reliant on the Opera Browser for my browsing needs. There are tons of little usability enhancements that I love, one of which is the fact that when you double-click on a word or a paragraph, the context menu shows up automatically. Such as this example from when I was parading through the NYTimes homepage, and I wanted to find out more about President Obama. All I had to do was double-click on Obama, and, BAM, up comes the context menu providing me immediate search access. No need to double-click and then right click.
It’s a shame that Opera doesn’t get as much attention as Firefox, Safari, or Chrome. But that might be a good thing, because it makes me feel special to be in a selective group of devoted Opera users.
Jun 25th
As a usability junkie, one thing that bothers me frequently is the feedback message you get after an incorrect login. The message typically goes something like this:
The message is 99% similar to Your Email or Password is incorrect. Well thanks, but which it is? Is it my email (username)? Or is it my password? That error message doesn’t help me at all. As a software engineer, I know it’s not that difficult to determine which of the two is incorrect. I can:
Done. Not that hard at all.
On the flip side, there are counter arguments against providing this sort of feedback (thanks to my buddy Steve who pointed them out to me):
Counter arguments #2 and #3 do not hold much weight. #2 can be addressed by spam filters. Who among us do not receive a single piece of spam? #3 is just a byproduct of laziness, I think. #1 is the important one because technically speaking, it’s a very difficult problem to address. The system admin might be able to implement some sort of lockout-after-X-attempts system, but that has the danger of locking out the actual user when the bombardment is performed by a perpetrator. The admin can then move into IP-specific-lockout solutions, but those can be bypassed as well. So ultimately, it becomes a tradeoff question:
What usability aspects can be bypassed in exchange for a simpler security scheme?
Jun 21st
I was chatting with a designer friend of mine and I thought the following snippet from our conversation was great. It went something like:
[As a designer,] having an engineer’s mind helps. Because I have this need to ask the question of “why doesn’t it work” and then I try and go fix it. That’s how engineers think. What’s the problem and what’s the solution? So there’s some objectivity to the subjectivity to design.
I really proud myself on being a whole-minded individual – having a balanced utilization of the right side and the left side of my brain. I have a number of thoughts regarding this designer + engineer hybridization, and I will continue to publish them here in the future.
Jun 17th
Not sure if anyone has noticed this, but the User Interface (UI) created by ESPN for the World Cup 2010 games are amazing. Here’s a screenshot:
The part that I love the most is the overlay of goals, cards, and player exchanges on the timeline. Clicking on a goal will trigger the video player to play a clip of the goal. This is a great example of sexy aggregation of data and multimedia.
Jun 17th
This article attempts to address the .NET Framework Windows Update failures that numerous individuals have been seeing. Namely, there’s been numerous posts (here, here) regarding failed Windows Update packages of KB979906, KB979909, and KB982168. And also a recent post on Microsoft Support’s website regarding error code “0×643″ or “1603″ when installing an update for .NET Framework 1.0, 1.1, 2.0, 3.0, or 3.5.
So, here it goes.
While on a GoToMeeting with an engineer and an escalation engineer from the giant software company that publishes not Linux nor OS X, we were able to determine a root cause of the .NET issue my company was seeing at a number of our client’s Windows XP machines.
The problem that our company is being plagued with is that our .NET application does not open correctly on our user’s machines. The typical error has to do with failures to bind to .NET 2.0 assemblies, because they are not available on the system. When this occurs on our user’s machines, we have observed failed Windows Updates on these users’ machines. Namely:
Most of our affected users are running Windows XP. And a screenshot of the failed Windows Update is shown below:
I worked with the two engineers on an affected user’s laptop, and was able to determine the root cause of our application’s failure to launch — the inability to bind to .NET 2.0 assemblies). BTW, the two engineers were amazing, kudos to their responsiveness and commitment to solving the issue. Our application’s failure to launch is confirmed to be a result of failed .NET updates on the affected machine. The explanation is as follows:


06/12/10 03:02:34 DDSet_Error: Failed to install assembly C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.configuration.dll. IAssemblyCache->InstallAssembly() returned -2147024891. 06/12/10 03:02:34 DDSet_Error: Failed to install assembly 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.configuration.dll' because of system error: Access is denied.
Note that the update installations files are typically located within the user’s temp directory (Start > Run > %temp%), and are prefixed with dd_NET-FrameworkXX.txt.
Note that this affects the 2.0 version of the .NET Framework assemblies, as those are the assemblies that the running processes hold onto.
In order for the .NET Framework Updates to execute properly, the .NET assemblies that were “locked” must be freed. You can do this by manually terminating the two processes (bxlaui.exe and bxlartd.exe) from the Task Manager. You can also use process explorer to determine which process is holding onto a .Net Assembly, and terminate those. And now reinstall the necessary .NET Frameworks for your system. For us, we simply installed the standalone version of the dotnetfx35.exe.
Here’s process explorer showing the two Bloomberg processes holding onto the .NET 2.0 System.Web.Services assembly.
There are also several tools to help determine whether the .NET Framework on a machine is corrupted, and whether the corruption is similar to the issue mentioned above:
cacls c:\windows\assembly\* /T
[06/14/10,14:49:23] Microsoft .NET Framework 2.0a: [2] Error: Installation failed for component Microsoft .NET Framework 2.0a. MSI returned error code 1603 [06/14/10,14:50:17] WapUI: [2] DepCheck indicates Microsoft .NET Framework 2.0a is not installed.
This is an indication that .NET Framework 2.0 SP2 (that’s what the a stands for) is not available on the system, which further supports the fact that the .NET 2.0 assemblies are removed from the system.
So, hopefully this article was able to shed some light to the mysterious .NET issues and the failed Windows Updates. Note that I cannot 100% be sure that only the Bloomberg processes mentioned above are the culprits that are holding onto .NET assemblies. But when .NET Framework updates/reinstallation failes, be sure to: