Friday, May 30, 2008

Google I/O 2008

Summary: Impressions from the Google I/O 2008 developer conference.

I've just returned from the two-day Google I/O 2008 conference in San Francisco. Overall, I have enjoyed the event. Here are some impressions, thoughts, quotes, and references I brought back.

Logistics worked well with one exception: there were no dedicated lunch breaks, so the choice was either to go hungry or miss the beginning (or end) of some sessions. I chose food and feel bad for missing the beginning of Mark Lukovsky's "Spice up Your Web Apps with Google AJAX APIs" presentation; I'll watch it when the videos get released (by the end of next week).

It would've been helpful to have an agenda for each session; the provided summaries did not sufficiently explain the scope of the talks. The difference between tech talks and regular sessions is still not clear to me. I attended regular sessions, but will review tech talk videos (when they are available) to see if they would've been more appropriate.

The negotiated hotel rates ($209 for San Francisco Marriott and $189 for InterContinental San Francisco) seemed a bit overpriced; you could've booked Parc Fifty Five Hotel via hotels.com for $119. I stayed at Sir Francis Drake, which is an approved hotel at my company; it was okay (good location and not too shabby).

[I'm not sure if it's appropriate to mention in a techno blog, but someone must say it, so what a heck... here is goes: men's bathrooms at Moscone Center seem to have been designed for Sen. Larry Craig (R). Missing partitions between the, pardon me, urinals, can make a simple guy rather uncomfortable. It's not a Google issue, though; just something Moscone Center should've improved.]

Getting back to the event... First impression: I haven't seen so many MacBooks (including MacBook Air) in a single place at a given time. Almost all speakers used MacBooks, and many attendees did too, although Dells were also popular among attendees.

It seemed to me that Google I/O had less hype than Microsoft events. At Microsoft events, I often feel as if I'm being told:
"Remember the Old Stuff we showed you four years ago? The stuff we raved about at a similar conference? Forget about it! It's garbage! Here is the New Stuff which will solve all of your problems."
At Google I/O, the message was more down to Earth. On the other hand, the conference could've benefited from recognizing the existence of Google's two primary competitors: Microsoft and Yahoo! (mentioning Microsoft in the context of "Vista Sucks" does not count). For example, why in their otherwise excellent "State of AJAX: The Universe Is Expanding" presentation, along with Dojo, script.aculo.us, jQuery, Prototype, and Google Web Toolkit, Dion Almaer and Ben Galbraith did not mention Microsoft's ASP.NET AJAX Control Toolkit or Yahoo's User Interface Library?

Some of the demonstrated technologies looked promising, although I'm not sure if they bring value to the enterprise any time soon. For example, Google Visualization API, the API which simplifies development of graphs, charts, diagrams, and other visual elements, has great potential; unfortunately, at this time it works only with Google spreadsheets (see "Visualize your data: Google Visualization API" presented by Yoah Bar-David, Nir Bar-Lev, Yariv Ben-Tovim, and Kris Nye).

Google Gears (or, as they are currently called, just Gears) -- a plug-in for Firefox and Internet Explorer (and Opera support is coming soon), which offers a richer user experience -- is gaining momentum. It was interesting to see how applications such as Zoho -- Zoho is believed to offer the most advanced online office suite -- use Gears (see "Gears Case Studies: Zoho offline on Gears, Buxfer secure and offline finance with Gears" presented by Raju Vegesna, Ashwin Bharambe, Shashank Pandit).

"OpenSocial, OpenID, and OAuth: Oh, My!" by Joseph Smarr of Plaxo was another insightful talk. It was not as technical as I had expected, and Joseph kinda rushed through the OpenID and OAuth parts (the main areas of my interest in this session), but still the overview and examples of using OpenID and OAuth to address the online identity crisis were very informational.

Wednesday's quote of the day came from the Dojo toolkit's creator Alex Russell, who presented "Can We Get There From Here?" (he was discussing the limitations of current Web technologies):
"There is a whole lot of suckage on this spectrum of suck."
I missed Wednesday's keynote (one more video to watch), but Marissa Mayer's presentation on Thursday was lovely. The keynote was both informational and entertaining. Good job, Marissa.

Thursday's quote of the day came from Sergey Brin, per Marissa Mayer's story. When she asked Sergey what had inspired him and Larry Page to come up with such a simple, yet functional design of the home page, Sergey said:
"We did not have a Web master, and I don't do HTML."
In addition to the general sessions and tech talks, some of the most interesting things were discussed offline. For example, here is a quote (with minor grammar corrections) from my fellow colleagues Karun and Andy, who published a more detailed account of the conference:
"We had a chance to talk to a tech lead on Google Gears about how they develop and elevate application efficiently. His answer is simple - they do not follow any software development methodology or approach. They have [best coding] practices. On the top of it, the hiring bar is so high, the engineers generate good quality code and constantly find ways to improve it by peer reviews. Some parts of the organization follow SCRUM, but they are not crazy about it. What they believe is: less process more room for innovation."
To learn about Google I/O from people who documented there experiences at the conference better than me, check out these blogs:I'll update this post and add links to videos and presentations when they become available; if you are interested, please come back in a week or so.

UPDATE: Videos and presentations are now available. I've listed my recommendations in a separate posts.

Sunday, May 25, 2008

Problem solvers vs. process keepers

Summary: "Turning a new process on does not justify employees turning their brains off." Bob Lewis

Here is a fascinating recording of a conversation between a Dell support representative and a customer (WARNING: the clip contains strong language; if you get offended by profanity, cursing, or swearing, do not play it):


In case you skipped the clip, here is a brief summary. A technical support representative (a help desk guy) receives a call from a customer who cannot turn his Dell laptop off. After learning about the problem, the help desk guy asks the customer to answer a seemingly endless number of questions. He asks for the service code (which the customer has apparently provided before being connected to the support desk), name on the account, phone number of the purchaser, name of the caller, his last name, phone number, email address... With every new question, the customer gets more frustrated and angry: he swears, curses, and keeps begging to tell him how to turn the laptop off. The help desk guy remains calm; he tolerates the verbal abuse, but insists on getting the information. The customer eventually answers all but the last question. Finally, the help desk guy tells the customer to hold down the power button for 10 seconds. The trick works (the laptop shuts down), but the customer bursts with outrage:
"Oh, Jesus Christ, you could've told me that. You know, you're [...] not very freaking helpful. You know that? You're a [beep]ing asshole. And you can put this in your [beep]ing records, alright! You know, if I had you right here, I'd [beep]ing kick your [beep]ing ass."
There is no good-bye.

I assume that the recording is genuine. It has to be. Even if not, it can serve as a great illustration of a conflict between humans and processes.

Before I move on, let me state the obvious: the customer is disturbed. And he is wrong. There is absolutely no... okay, there is not enough... reason for being so obnoxious. If I were the help desk guy, I would've hung up on him.

On the other hand, why is the help desk guy so stringent? Would it kill him to tell the customer to "hold down the power button for 10 second" right away? And why does he need all this information (email address, phone number, and so on) in the first place? How would the email address help him verify the system owner?

I'm not sure if the help desk guy knew why he needed the caller's email address. He was probably just following the process, and the process had asked for an email address.

It's ironic that the process, no matter how well intended, didn't help anyone in this case. If the help desk guy hadn't followed the process, he would've solved the customer's problem in less than a minute. He could've told the customer to hold down the power button first and then asked him to provide the information. Or he could've said: "Listen, this seems like a simple issue, but if my first suggestion does not work, I may need to keep you on the phone a bit longer, and I will have to ask you a few questions for the support ticket." But instead, the help desk guy turned into a process keeper, blindly following the letter of the process, even when it did no good.

A few posts ago, I mentioned Bob Lewis' article in which he made the following point:
"Make sure every process has a process bypass to handle situations that just don't fit."
An emotionally unstable customer asking a simple question is an example of a situation requiring a process bypass.

Talking to -- or hearing someone else talking to -- a process keeper insisting on following the process no matter how inappropriate the process is (in general, or in a particular context) reminds me of this classic conversation from One Flew Over the Cuckoo's Nest:
McMurphy: Nurse Ratched, Nurse Ratched! The Chief put his hand up. He voted! Would you please turn the television set on.
Nurse Ratched [opens the glass window]: Mr. McMurphy, the meeting was adjourned and the vote was closed.
McMurphy: But the vote was 10 to 8. The Chief, he's got his hand up! Look!
Nurse Ratched: No, Mr. McMurphy. When the meeting was adjourned, the vote was 9 to 9.
McMurphy [exasperated]: Aw come on, you're not gonna say that now! You're not gonna say that now! You're gonna pull that hen house shit? Now when the vote... the Chief just voted - it was 10 to 9. Now I want that television set turned on right now!
[Nurse Ratched closes the glass window]
Most effective organizations follow processes, which help them maintain efficiency and achieve other (noble) goals. However, once a process stands on the way of problem solving and starts defying common sense, it defeats the very same goals it intends to achieve.

If your team enforces the process no matter what, whether it does or does not make sense, consider focusing more on problem solving than process keeping; otherwise, you are at risk of turning into an organization run by the spirit of Nurse Ratched, which is not good even for a mental institution.

Additional references:
Six Stupid process controls
Are You a Doer or a Talker?

Saturday, May 24, 2008

Technobrief #1

Summary: Recent recommendations for software, articles, podcasts, and videos.

I have decided to publish weekly -- or even less frequent -- techobriefs, which will include recent additions to my favorite free software lists, interesting articles, podcasts, and videos not yet mentioned in other posts.

Here is this week's installment.

SoftwareArticlesTutorialsPodcasts

Sunday, May 18, 2008

Toll-free directory assistance (411) numbers for U.S. residents

Summary: Three (and more) toll-free numbers, which can help you find businesses and people.

Here are three numbers that U.S. residents should keep in their phone books:
  • 1-800-GOOG-411, or (800) 466-4411
  • 1-800-CALL-411, or (800) 225-5411
  • 1-800-BING-411, or (800) 246-4411
  • 1-800-FREE-411, or (800) 373-3411
  • See more...
They all provide FREE directory assistance (a'la 411) services, but do it slightly differently.

So far, GOOG-411, offered by Google, is my favorite service. In fact, it is the only service, which I actually use (I tried the other two only for testing purposes). For example, a few months ago I called GOOG-411 to locate a small restaurant in San Francisco, CA. Recently, GOOG-411 helped me find a local beauty shop (I had to cancel my wife's appointment on a short notice). In all case, GOOG-411 worked perfectly. Google's voice recognition system was able to decipher my imperfect English (I have a rather pronounced Russian accent). It used the minimum number of prompts (such as state and city, name or type of business). In one case, I did not know the exact name of business, but GOOG-411 was able to find it based on category and location (I think it was the first or second name in the list of matches). In addition to spelling the address and phone number of the business, GOOG-411 gives you an option to automatically dial the number. Overall, I'm absolutely amazed how well GOOG-411 works.

The CALL-411 service is brought to you by Microsoft, as part of the Microsoft's Live offerings (I wonder if Microsoft should use 1-800-LIVE-411, or 1-800-MSFT-411, instead of CALL-411). CALL-411 works very similar to GOOG-411 (the business search prompts are almost identical), but in addition to business searches, it offers the information about such extras as movies, travel, traffic maps (it sends a link to a map via a text message), and more. A nice feature: CALL-411 remembers the last business you searched for (I assume, based on the caller ID). I may be wrong, but it seemed to me that CALL-411 had harder time with my accent than GOOG-411.

Update: Microsoft recently released BING 411, a new service, which (I assume) will replace CALL-411. For additional information, read Bing 411 Gives Turn-by-Turn Directions, Weather by Phone.

FREE-411 (offered by Jingle Network) is the only service (among the three) which will require you to listen to short, pre-recordered advertisements (one in the beginning, and more later), but it offers a few extras missing from the other two services. First, along with local listings, FREE-411 lets you search for toll-free numbers. Second, FREE-411 is the only service that can find residential listings in addition to businesses. And, according to a press release, FREE-411 can provide driving directions via text message in selected cities (San Francisco/ Bay Area, Chicago, and Los Angeles, with more locations offered later; it is not available in Sacramento, CA at the time of writing, though).

I have to mention that all of these free directory services are computer-driven, so they will probably not match the quality of a human operator. On the other hand, in many cases, they will work just fine, so if you want to save a buck or two (per call), add GOOG-411, CALL-411, and FREE-411 to your phone book: you never know when you're gonna need them.

P.S. After I posted this article, several readers left comments recommending human-powered FREE directory assistance services. I have not tried these, yet, but I suspect that they are worth checking out:
  • 1-800-411-SAVE, or (800) 411-7283
  • 1-800-YELLOWPAGES, or (800) 935-5697

Sunday, May 11, 2008

Disable beep and other annoying sounds in Windows

Summary: How to turn off the irritating noises in Windows XP.

One thing that annoys me in Windows is noise. When launching Windows, I hear: ti-da-du-di-dam; exiting: ti-da-du-dam; loggin on: tu-dim; login off: ti-du; showing error message: beep; pressing a wrong key: beep... How many beeping beeps do I need to hear in a single session!

Seriously, unless I'm actually listening to the audio (music, songs, podcasts, video soundtrack) the only thing I want to hear is silence. So every time I get or build a new system, I disable the unnecessary sounds. Unfortunately, because the process is not straightforward, I have to spend a few minutes searching the Internet for hints and tips explaining how to turn the Windows system beep and sounds off. In case I forget how to do it next time (which I almost probably will), here are the steps for making Windows XP noise-free (hope this helps someone, too):

Stop and disable beep in Device Manager
There are several ways to turn to stop (for current session) and disable (for future sessions) the system beep in Device Manager. The most straightforward option would be to use command line:
  1. Opening command prompt (select the Start - Run menu; enter cmd).
  2. In the Command Prompt window, enter the following commands (notice a required space character after the equal sign in the second command):

    net stop beep
    sc config beep start= disabled
If you are not a command-line kind of guy (gal), you can disable beep in the Device Manager console:
  1. Right-click My Computer and select Properties.
  2. In the System Properties dialog box, click the Hardware tab.
  3. In the Hardware tab, click the Device Manager button.

  4. In the Device Manager window, select the View - Show hidden devices menu option.
  5. Expand Non-Plug and Play Drivers, right-click on the Beep element, and select Properties from the menu.
  6. In the Beep Properties dialog box, click the Driver tab.
  7. In the Driver tab, click the Stop button, and change the startup type to Disabled.


    When beep is disabled, the device manager's icon will be crossed.


Disable beep in the Windows Registry
Start regedit (select the Start - Run menu; enter regedit), and locate the HKEY_CURRENT_USER\Control Panel\Sound key; set the value of Beep to no.


You can accomplish the same by downloading and double-clicking this file.

Turn beep and other sounds off in Control Panel
Finally, to disable beep and other noises, use Control Panel:
  1. Open Sounds and Audio Devices control panel (select Start - Settings - Control Panel - Sounds and Audio Devices).
  2. In the Sounds and Audio Devices Properties dialog box, click the Sounds tab.
  3. Select the No Sounds scheme (to reduce the number of retained sounds).
  4. Scroll through all items in the Program Events list box and change the Sounds option for every event (including System Beep) to None.


Some programs (e.g. Office Communicator 2007, Windows Messenger, NetMeeting, and more) can add entries to the Program Events section, so if you install these programs after turning off sounds, you may need to do it again (after installing these programs).

And for those of you who prefer to stay noise-free, here are some Windows sounds you may appreciate:


Additional references:
Disable the System Beep (in Windows Vista)
Silence Windows' Command Line Error Beep
Turn Off the Annoying Windows XP System Beeps

Monday, May 5, 2008

Love thy critics

Summary: Don't hate your critics; you can learn something from them.

If you follow technical blogs, you must have heard the news about stackoverflow.com: a recent joint venture between Jeff Atwood and Joel Spolsky. If not, here it is in a nutshell: about a month ago, two of the most popular technical bloggers created "a programming Q&A site" which is "by programmers, for programmers, with the ultimate intent of collectively increasing the sum total of good programming knowledge in the world." The new site is still at an early stage, but hopefully it will continue the traditions of Coding Horror/Joel on Software and turn into the source of knowledge and entertainment for programmers and other tech lovers.

I'm delighted that my favorite bloggers now produce podcasts and other technical content together, but I'm even more fascinated about the personal dynamics between the duo. In case you are not familiar with the story, Jeff has not been always kind to Joel. Not long ago, he called Joel blind, illogical, and just stopped short of calling him insane. In fact, he did call Joel insane... right before posting this picture:


If you look at this story closer, you will realize that I did tweak the truth a bit. You see, Jeff did not actually call Joel blind, illogical, and insane in general. No, sir. He merely implied that certain technical decisions made by Joel could have been characterized as such. Do you see the difference? Joel did, but many software professional don't.

After having worked in IT for over a decade, I witnessed numerous times how technical disagreements produced animosity between otherwise rational professionals. So it's refreshing (and encouraging) to see Jeff and Joel embracing their technical differences. This is how grown-ups behave.

Note to self: next time you hear people criticizing your technical position (your design, code, chosen methodology, etc), or call you (technically) blind, illogical, or insane, think about this:
  • It is not personal.
    They are not trying to make a fool out of you or ridicule you; they just don't agree with your technical position. So do not fall into a trap of making it a personal issue between you and them. Although they may be fighting for their opinions for personal benefits, it's most likely that they want the best outcome as much as you do, so don't treat them as personal enemies.
  • They may be right.
    Don't assume that you know everything. Try to find out if you are missing something that they take for granted. Biases are sticky. They may be genuinely misguided, but so may be you.
  • Be gracious.
    Take a deep breath and stay cool. Be mature. Be patient. Do not call names. Don't make personal attacks even when being attacked. Don't whine. Whether you are right or wrong, you may lose. If you lose, don't be bitter. Don't seek revenge.
If you are surrounded by people who always agree with you, you are limiting your personal and professional growth. Instead, foster relationships with bright people (colleagues) who are not shy to criticize you; they will make you better. And in the meantime, check out stackoverflow.com.

Additional references:
Introducing Stackoverflow.com
Stackoverflow.com