Good bye, Google Chrome!

I’ve been using Firefox on my MAC as my default system browser for years until I got really irritated with the need to kill it once in a while after it became non-responsive. Switched to Google Chrome, but was still running Firefox for testing of my HTML/JavaScript code with the great add-on Firebug.

It looks like its time to say good bye to Google Chrome. Periodically, it just start rendering Web pages blank. I found a cure that works sometimes – grab the corner of the window and start slowly resizing it. You might get lucky and find the size that Chrome likes and start rendering the content again. Being an enterprise developer I can’t imagine releasing an application into production that once in a while shows a blank screen to the users. I have no idea how Google can get away with it.

You may suggest that I should file a bug. But what do I write in there? It doesn’t render the content once in a while? Steps to reproduce: just freaking run Chrome for a couple of days with a dozen of opened tabs.

What’s next? Safari. Let’s see what the future holds. Keeping my fingers crossed. If you know of any Safari surprises, please let me know. I’ll still be using great Developers Tools of Chrome though – it’s a great tool.

User Experience Professional Is Needed Badly

What would you think if a person visited your training registration page shown below and asked you the following question, “Yakov, when the early bird price for your JavaScript training expires?”

A not so savvy Web person could’ve reacted like this, “Helloooo, can’t you read? Sales end on May 29, 2012 ”. But being in the Web business for a while, I’ve responded politely, “The sale end date should be listed on the registration page.” That person was polite too and he replied, “Thanks. It wasn’t on the iOS version of that page”. Sure enough, the iPhone version of this page doesn’t show when the sale ends. Apparently, the version of their CSS layout for iPhones didn’t allocate the room for the sale end dates.

Moral: Don’t think people are stupid. The might be using “a wrong” device.

If you’re running some Web development project yourself, try to allocate just a little bit of an extra cash for the usability expert who could have suggested a way to ensure that your Web site shows all important information no matter what the size of the user’s device is.

Google Must Hire Usability Experts

Teacher: “Mary, what do you think should happen in a Web browser when the user presses Ctrl-T?”

Mary: “It should open a new tab with either a blank page or your home page. Some browsers show most recently visited sites. In any case, it should be easily configured”.

Teacher: “Good girl! When I was as young, as you I also thought so.  I assumed that browser vendor thinks of the user first and would hire a usability expert budget permitting.”

Mary: “Are there still some poor vendors who can’t afford hiring usability experts? Are you talking about vendors from under-developed countries?”

Teacher: “No, I’m talking about Google. They are pretty good if the application’s UI consists of just one text field and a button. Anything more complex than this is overly complicated for them.”

Mary: “I thought they’re filthy rich and can hire anyone?”

Teacher: “Mary, they don’t give a damn about the end users. I was about to record a screencast and wanted to be able to open a tab with a blank page so the viewers wouldn’t see all my recently visited sites. Is this too much to ask of Chrome version 18.0?”

Mary: “No, teacher. It should be really easy – just go to Preferences and select some option to open a new tab with a blank page.”

Teacher: “There is no such option in Chrome. After spending 10 minutes searching for a solution I found one! You have to install and Add On called Blank New Tab.”

Mary: “Now I understand why my grandma doesn’t want to replace Internet Explorer with any other fancy shmancy browser. When I’ll grow up, I’ll become a usability expert and will help Google to create applications that will put the end users before the geeks.”

Teacher: “Mary, do you happen to have a link to the IE download handy?”

Technology pushes customer service down the drain

Five years ago, when you called your credit card company or any other customer service you had a choice: either punch in your selections in the automated menu or hit the O-button to get to a live operator. Back then everyone hated those annoying automated menus. Little did they know what was going to happen in the future thanks to technological advances…

Today, most of the customer service departments use some voice recognition software, which supposed to collect all required information (e.g. your credit card info, address, the reason of call et al) before the live customer service representative would start talking to you. The goal is noble, but implementation sucks.

After spending 5 minutes repeating like a parrot the same answer several times, you may not be understood anyway. The old trick with keying in the O-button doesn’t work any longer and just pushes you back to this cold-blooded machine, which keeps asking you politely, “Did you mean to say…”

Finally, it understood what you wanted to talk about, validated your credit card number, spent another minute announcing your balance on the account, which you never asked for, and when you’re almost ready to throw your phone against the wall, a pleasant voice of a human being says, “Hello, this is Adriana. For security reason, could you please tell me your credit card number?”

WTF, didn’t I go through all this already talking to your stupid machine?

I’m sure, the CEO of these companies receive good looking reports stating that “our company was able to substantially minimize the time spent by our agents on the phone with customers, which allowed us to lay off 100 employees resulting in $5M of annual savings.” These reports don’t account for losing business because some customers just hated this type of phone experience and went to competitors that operated in an old fashioned way with live service representatives. Mediocrity an incompetence in enterprises disappoints. But there’s not much we can do about it other than learn how to live with it.

QuckTest to see if you Suck as UI Software Developer

While filling out any computerized form, the most annoying thing is to see a validation error like “Don’t enter spaces and dashes” after entering a phone number. This is the indication that the form was created by rookie developers, tested by careless QA engineers, and the project was managed by an incompetent manager.

Just now I was adding a contact to my telephone directory on my iPhone. Guess what, there’s no way to enter anything but digits, and the the number is “magically” formatted into the something like (222) 555-5555.

You say it’s a little thing that’s easy to implement? Wrong. Such huge little things make iPhone to stand out. Just because they cared to implement them.

What about you, my fellow software developer? Do you annoy the users with the messages asking to stick to a certain data input format? Then you suck.

mailto: an elegant solution with limitations

On my current project (Flex and Java) the client wants to email certain data to certain recipients. If the mail content and recipients wouldn’t require manual processing, I’d written a Java server side program that would retrieve the data and sent it to a predefined list of recipients. This is not the case though. The client wants to see the data in an email client (MS Outlook) and be able to add some text to the email body, edit the To, CC, and the subject fields.

That’s why I decided to go with a client side solution. There is this handy protocol mailto, and if you’ll prepare the URL that starts like “mailto:…”, contains the To, CC, Subject, and Body – your program will obediently open the mail client with all the field pre-populated. In Flex, you need to use the function navigateToURL(), but this solution works for any programming language or HTML links. So far so good. I’ve easily implemented this elegant solution giving the client the best of both worlds – automatic mail generation with the ability to massage the text.

But my happiness didn’t last long, cause there was yet another innocent requirement – the data should be formatted. Nothing fancy – like columns in the grid. For example, the email body could have contain the following part:

John Smith                5,678
Mary Lou                        12
B Ramalinga Raju          101

Not a rocket science, right? I also though so and quickly wrote two functions to pad a string with spaces from the left and from the right to a certain length. Then I formed each line concatenating the right-padded 20-char long name with the left-padded 10-char long number. Quick test with printing the result in the console of my IDE – it works! What a great programmer I am, aren’t I?

After passing the same data to the mailto, it opened MS Outlook, and the mail body looked similar to this:
John Smith            5,678
Mary Lou                      12
B Ramalinga Raju         101

My perfect alignment went down the drain. And the worst part is that there is no solution to this problem. The mail client was using a font that allocated different width to each characters and my padding was resulting in different width depending on what characters presented in the name of the person. If I could pass HTML to the mailto URL, this would solve my issue. I could have used HTML Table with cell alignment. But mailto allows to pass only simple text (URL encoding didn’t help either).

I hit the wall. What’s next? Will tell the client, “I give you an elegant and flexible solution, but I can’t align the text. Either manually change the font of the data to one of the monospace font, or set Courier to be a default font in MS Outlook “. I’ve implemented lots of non-trivial solutions for this client, but hey, technology has its limits too.

What if the client answers, “No, I need perfectly aligned report and I hate Courier font?” I’ll answer, “No problem, everything can be fixed. I can certainly come up with a custom solution. It’ll take me N days to implement” After multiplying my daily rate by N the client may reconsider and agree to live with my monospace font solution. This is is good example of a situation, when there is a huge price difference between 100% and 99% automated solution.

P.S. If you run into a similar problem in the Flex TextArea component, the solution is the same – set the fontFamily attribute to use one of the monospace solutions, for example:

<s:TextArea fontFamily=”_typewriter”/>

I Hate This Triangle

Microsoft Word 2011 is the program that crashes the most on my Macbook. To be fair to this edition, I need to say that MS Word 2008 was no better in this department. I got used to it and save my documents every minute or so. I understand that it’s not easy to develop application for the OS that’s not yours. Fifteen years ago Microsoft put Word Perfect out of business using the intimate knowledge of their own OS. OK, this was in the past, but I’m wondering what the UI designers of this hugely popular word processor were thinking about when they assigned three different functions to one little triangle on the toolbar?

Currently, I’m working on a 200-page document, and need to change the width of most of the paragraphs to 5.5 inches. To do this, I need to place the cursor in a paragraph (or highlight several of them) and drag this little triangle to the 5.5″ mark on the ruler. The text in the paragraph gets rearranged accordingly. This operation is about changing the right indent. The problem is that when you hover the mouse pointer over this little triangle, it reveals two other functions: Right Margin and Left Tab. So if you’re not lucky, instead of changing the width of the paragraph, the size of the page gets changed or this freaking triangle gives birth to a little bent black arrow (this is Left Tab) which starts moving on its own on the ruler without having any effect on my paragraph. The fact, that I do this editing while commuting to work on the bus complicates aiming on this triangle, which shakes a little making my User Experience even worse.

I wonder if Microsoft designers are preparing Word to be used on Tablets, where people will use fingers or styluses? They should completely change their attitude to the users. The majority of us ain’t no marksmen, you know. Give us some controls we can use.