Saturday, July 05, 2008

Don’t hide or disable menu items?

Joel Spolsky, a well-respected software development industry blogger, recently posted the article Don’t hide or disable menu items. Basically, he says that doing these things confuse users.

It’s hard to disagree about the hidden menu issue; I’ve used products that would remove certain menu items based on context, especially when working on a very different type of data (e.g., spreadsheet vs. word processing document), and it can be annoying to try to find the menu item you thought was there but has moved.

When it comes to different levels of functionality supported by an application, such as QuickTime’s player application sporting the pro-based functionality in disabled menu items with a PRO icon beside them, I can see that as good (built-in marketing), but I can also see the logic in only showing those menu items that a particular user has permission to use, such as what happens in Mac OS X depending on what level of user is logged in (for-your-eyes-only).

There’s also some logic in only showing applicable menu items when invoking a contextual menu; after all, the user assumes it only holds those items applicable to the particular context, and to have to run over dozens of menu items applicable to files when you clearly are in a text field makes no sense.

However, when it comes to enabling all menu items, even if they cannot be used at the particular moment makes absolutely no sense at all. I like knowing that the content of the web page I’m looking at has finished loading, and if the Stop menu item were enabled, it would make me wonder what’ the problem with my browser, network connection, or the web server. If there is a valid reason for telling the user why a menu item is disabled (if an application is correctly designed, most cases should be fairly obvious), one popular way to do this is by using a help tag/tooltip as the user navigates over such an item; another popular way is to display text in a status bar strategically placed based on the particular application.

Sunday, February 24, 2008

I’m Drinking The Cocoa Kool-Aid

When Apple bought NeXT and incorporated their NeXTStep framework into the Macintosh operating system, renaming it Cocoa, many people believed that Cocoa was just an alternate manner of developing Macintosh software. The other method, Carbon, was an updating of the existing Macintosh APIs from the previous decades so they’d work well in the Mac OS X Unix-based runtime environment.

Well, at WWDC 2007 when Steve Jobs made it clear that Carbon was not being updated to use the 64-bit computing runtime available when using the PowerPC G5 and Intel chips, the writing was on the wall that Cocoa was now the blessed way to write GUI-based software for the Macintosh. Needless to say, I wasn’t very happy about that, since I had invested zero time learning Cocoa, and my sentiments were shared by many other long-time Macintosh software developers.

Recently, I’ve been reading Aaron Hillegass’s book, Cocoa Programming for Mac OS X, in order to get myself on board with the new-fangled way of writing Mac software. Okay, I had to use “new-fangled” because I’ve actually been writing Mac software since 1986; if you want to get technical, though, I did write some BASIC programs back in 1984 on one of the original Macintoshes. I guess you could say I’m a real “old-timer.” Along with my readings, I’ve also subscribed to some Cocoa developer e-mail lists.

Today, I posted my first answer. It was a milestone. I’m now drinking the Cocoa Kool-Aid! What was the answer, you say?
[textView setString:@"Lyrics Code Here"];
The question was, How do you replace all the text of a text field to a new set of text?

I’m happy. Now I’m ready to write the next Killer App! Any ideas? Check out the link at the bottom of the page for DesiSoft Systems!

What Would You Do With This CEO?

I recently got to listen in on the CEO of a company that is a leader in its industry, and after making the announcement of some plans to cut costs by reducing the workforce of the company, this CEO made the comment that there won’t be any cuts in advertising because “50% of our business is OEM-related, and we don’t really do much advertising anyway.”

Apparently, this CEO flunked math. I don’t recall when I learned this basic truth, but I’m sure it had to be sometime in my preschool years: 50% of something leaves a remainder of 50%. In the context of this CEO’s business, what he was saying is that 50% of his business is not OEM-related, and since I know that this company’s non-OEM-related products and services are not universally known to everyone under the sun, his arrogant belief that advertising is unnecessary demonstrates a stupidity that should be rewarded with his immediate unemployment.

When the CEO was asked what school of business he belonged to that gave him the belief that advertising was unnecessary, he just replied that, of course he knows advertising is important to a business but that an OEM-based business doesn't have such a need (apparently, 50% now equals 100%). A follow-up question he received was if he planned to remove himself from the company, to which he replied that there’s no reason to leave, that he’s doing a great job and that until the board of directors thinks otherwise, he will remain in his current job. What an arrogant and stupid man!

I actually own stock in this company, which has dropped dramatically in the past few months because their sales goals have not been met, and I am praying that this CEO is removed from this company along with everyone else in the company that believes business will do better and that sales will materialize without any attempt to get information about its products into the public’s mind.

Oh, a few days after this CEO’s revelation that he doesn’t know how to run a company, he made an announcement about his being positively mentioned in a book about great CEOs of leading firms in their industries. Hopefully the book will be edited in future printings to remove this CEO’s false accomplishments.