Why Mac menus are on the top

Disclaimer: despite the title, this is not a post about junk food. 🙂

I always wondered why Apple decided to place their menu bar on top on the screen, rather than inside the window it belongs to. I couldn’t find any good reason for that choice until last week, when I spoke with a couple of colleagues.

Mac OS X menu bar

It turned that not only there is a reason, but it’s also quite clever! And it’s the same that led Microsoft to put the Start menu on the bottom left corner: stuff on the edges of the screen is just easier to hit.

Almost no aim is needed to bring the mouse over something that lies right on the border of the screen: you just have throw the cursor in the right direction and it will stop by bumping against the frame of your monitor. It makes things a lot easier, especially for those users who are not that nimble with the mouse. 😉

Back to Mac OS menus: if you move the mouse cursor up on the screen, it stops right over the menus. Clever, isn’t it?

Now that I understand that I can’t help but consider the title bars of maximized windows on Windows a waste of potentially high value space. But there are at least a couple of notable exceptions.

a. Microsoft Office 2007, which allows users to put buttons on the title bar

Office 2007

b. Google Chrome, which dropped the plain old title bar and uses that space to display tabs

title bar hosts tabs

Could that be the beginning of a trend?


Business cards v. 2

I used to consider business cards pretty much of a nuisance. Collecting tiny pieces of paper just to copy the same data to a mobile phone or contact manager didn’t seem to be practical to me.

But recently I had to change my mind: sometimes you are in a rush and have to quickly exchange contact information. Writing down the information is definitely not an option; typing it into your phone, PDA, laptop is often not practical and exchanging data via bluetooth works 1 time out of 5 (try it on the iPhone 😛 ).

Even in 2008, alas, in many cases the old solution is much better than the new ones. Is there any way we could take the best of both worlds?

Maybe: the back side of most business cards is often blank. We usually use that space to write some notes, or additional information. But what if we used a part of that blank space to store the contact details in some machine-readable format?

We could use (part of) the back of the card to store an encoded representation of the information which is printed on the front. As an example, the image below shows my contact information in QR-code.

Encoded contact information
Encoded contact information

My phone (a Nokia E71) comes out of factory with a barcode reader which uses the built-in camera to decode printed codes, and there are a lot of other similar programs for other devices and for the iPhone as well.

With business cards like these, we’d still be able to share our details as we do now, but importing contact details to our mobile devices would just be as easy as snapping a picture.

The only downside, in my opinion, is that QR codes are not so pleasant to the eye. 😉

Informed choice

I’m spending the biggest part of the day in one of those luxury hotels, the ones that are so expensive that no detail is left to chance.

One significant detail: if you wash your hands in the restrooms, you can choose between using a paper towel or a fabric one.

Now, I’m usually quite sensitive to environmental issues. Not that I’m a Green activist, but let’s just say that I care about those things.

That’s why I started to wonder… Which would have the biggest impact: using a paper towel and then throwing it away or rather using one of the fabric ones, that would be washed immediately afterwards? Which of the two choices would have the lesser impact on the environment?

I have no idea, so I choose practically at random each time.

It’s a petty question, I know, but the reason I wrote all of this is another. (Beware, this is the point where my true geek® nature comes out. Don’t go below this line unless you want to read computer related stuff 😛 )

As application designers, we might put our users in the same situation: we make them choose between different options, but we don’t give them enough information about the alternatives. And usually, the consequences of those decisions are slightly more important than the ones I had with towels 😉 .

That’s when choices become dilemmas. And we should avoid putting people in that position.

Every time we present our users with a choice, we should make sure they know everything they need to make a good decision, why are we forcing them to choose and which the consequences of their action are perfectly clear for them.

How long will it take?

When talking about user experience, predictability is good. Some of the things we interact with in our daily life, though, are lacking from this perspective.

Consider traffic lights: they are among the most widely diffused devices and they can’t be simpler. Green: go. Red: don’t.

Yet, they are widely recognized as universal sources of frustration. Red lights, in particular, are able to annoy almost anyone.

And that’s not just because they are inevitably perceived as something meant to slow you down, but also because they leave you almost clueless about when they’ll eventually turn green. (Even if you can make a rough estimate, it will be basically due to the context, rather than to the device itself.)

This is why Sunday I got impressed when I first saw traffic lights like the one in the photo (in Amsterdam).

Traffic light in Amsterdam

With the addition of countdown displays, pedestrians (involuntary users) know exactly how long they’ll have to wait before they can cross the road. It won’t make the wait any shorter, but will certainly make it much less frustrating.

Similar considerations apply also to other activities/devices (think of queues, public transport, and many others), in particular, with activities which involve waiting. But in case of traffic lights, a simple display can really make a significant difference.

What is more striking, though, is that traffic lights themselves are already being built to be aware of time (how could it work otherwise?). Adding that display just means exposing some meaningful information which is already present inside of them. If you think about that, it sounds so obvious that it’s surprising all traffic lights aren’t built that way.

Outsource your features!

A new trend is rising: applications which are not designed to fulfill some user’s needs but, rather, to provide some service to other web apps.

Until some time ago, if you were to design your own web app, you had to write the same code, with little to none variations, to deal with pretty common issues (i.e. login, user profiles, messaging and so on) every time. You had no choice but to reinvent the wheel each time. Over and over.

Now you have one more possibility: delegate your recurring, non-core (albeit relevant) functionalities to third party web applications, which are built to integrate easily with your own one.

This leaves you with a lot more time to focus on your core features, maximizing your effort. Think of it as code reuse, for web apps. 😉

I’m writing this post a few hours after adding support for user avatar images on Novlet, and I’m still surprised about how painless the process turned out to be.

Although I consider avatars a great addition to most account-enabled applications, we chose not to support them at the beginning because we considered them not to be that relevant for a web app centered upon creative writing. At least, not relevant enough with respect to the effort they required.

So, what made me change my mind?

Gravatar logo

The answer is, in just one word, Gravatar.

In short, Gravatar allows users to associate email addresses with avatar images, and allows application developers to access that images using the email address users registered with. Users have to set up their images just once, and any gravatar-enabled application will transparently use them.

Stop. Gravatar does just this. But it does it well: it took me a ridiculously small number of lines of code to set everything up, and it works like charm. (You should see the new avatars on Novlet.com when we finish polishing the details. 😛 )

Another example: BitLet’s feedback forum.

Originally, we used to gather feedback and suggestions from our users through email or via the blog. But the forum we created with UserVoice allows us to collect suggestions and manage them in an orderly and efficent way, and it took us just a few clicks to set it up.

Now you should understand why Bitlet’s blog is created with Blogger. And that’s why we plan to leverage Google Account Authentication and, eventually, all OpenID providers for our upcoming Secret Project™.

It’s a trade which benefits both users and developers: why not to take advantage from that?

In one of my previous posts I wrote about the potential of Facebook as an application platform. But with a family of interoperable and pluggable application services (or service applications 😛 ) which can be used as building blocks for our web apps, the Internet itself can become an even more powerful, open, platform, pushing the concept of mashup to a new frontier.

Connecting people

Conferences are great. Not just because you can (hopefully) learn a lot by attending, but also because they give you the chance to meet great people who share your interests and work on the same issues you’re facing.

Obviously, most of those desirable effects happen during, or maybe after the conferences themselves. (But it applies to conventions, meetings and the like.) Is that really the only option?

Some context: this month I’m flying to Amsterdam to attend User Experience 2008. I was thinking that I might end up sitting on the plane next to someone who’s going at the same conference. And we might not discover it until the first day of the conference, since the organizers did not provide attendees with any means to interact with each other.

Building an event on Facebook, a network on Ning, a group on LinkedIn are just some examples of what the organizers of an event can do to promote communications between participants. (For the less web 2.0 oriented, probably a plain forum or a mailing list would work more or less the same. 😛 )

Think about the benefits of allowing participants to interact before getting to the event. One among all: making a community out of an audience.

Perhaps Seth Godin is right, after all, when he gives so much emphasis to Tribes, and to the importance of building a community of connected people.

Web application platforms?

The everyday life of the average Internet citizen is filled with dozens of impressive web applications, which help to perform any sort of task.
Ranging from planning your next trip to Holland to sharing the photos of the last party you had, a lot of activities can be effectively made easier or more efficient by using some brilliant web site.

Although it’s becoming increasingly hard to find something you can’t do from within your browser, there are still some activities which won’t probably deserve their own shiny web app, being relevant just to a tiny niche of users.

But, think a few seconds about that: the concept of the “long tail“, often cited as one of the key points of Web 2.0 (whatever it means), is all about niches. In particular, even if the big players are fighting to satisfy the most popular needs for the vast majority of users, there may still be enough room for anyone else to deliver solutions to the needs of the niches (i.e. the “tail”).
And the good news is that it might be a sound strategy, too.

Get to the niches

Quoting Wikipedia, from their page about the long tail,

Where inventory storage and distribution costs are insignificant, it becomes economically viable to sell relatively unpopular products; however, when storage and distribution costs are high, only the most popular products can be sold.

The same principle can be generalized to web application development, as well.

Suppose we are about do create a web application which addresses a simple, non-essential, need: probably we are not aiming to the mass market, and maybe we are focusing on something that is relevant to a small amount of users, or for a limited duration (just the timeframe in which they need your app).

If we are able to focus on the core of your application, without having to deal with the burden of non-essential aspects, then it becomes viable to develop new services that will be useful for relatively smaller sets of users.

Now, there are several ways to handle this point. Most of them are technical, such as choosing a specific platform/technology/framework, while some others are merely economical (unless you’re creating something just for the fun of it). All of them are well documented and widely discussed.

But I’m afraid we might still be missing one, fundamental, point.

It’s not all about costs

Even if we manage to complete our project successfully, we still have a major barrier to cross: a new web site to use can be a significant complication to some users. It means, at least, a new web address to keep in mind (or in the bookmarks), and a new set of credentials to remember.

There is, always, a small resistance we have to win in order to make users adopt a new application. A resistance that is more relevant if we are addressing a non-essential need for a niche target.

In order to win that resistance, the first option we have is to build an outstanding web app, so that users will be so willing to use it that they will easily overcome that barrier. There is another possibility, though.

Consider this. Facebook offers us the possibility to leverage their entire user database (over 100 million users, November 2008), and, most of all, a window which stays open all day long on the browsers of a lot of people, to which we can post notifications.

In addition, as you will certainly have noted, the resistance of users towards adding new Facebook applications is significantly lower than the resistance towards new web applications. Outrageously lower.

After all, they already have registered.

Many web applications that would never make it as stand-alone web sites, might earn their place as Facebook applications. (Or, maybe, LinkedIn applications, or Google App Engine applications, or something else).

Then, that said, why do we continuously get bugged with dozens of invitations from pointless quizzes and useless tests on Facebook? Why there are so few useful applications on Facebook? It may just be the sign of some huge potential that lies unfulfilled.

Hello world!

Any of you who own a WordPress blog should recognize this post title as the one that comes out by default when you create a new blog.

The post itself is an encouragement, an example and, possibly, a clever trick to deal with the infamous writer’s block, and therefore you are suggested to edit or remove it to start blogging.

But just as my career as a coder started with a program that didn’t anything but printing Hello world! on a text console, I liked the idea of starting a blog with the very same message.

Let’s just hope it will bring good luck as it did the first time. 🙂

Although I earn my living as a coder, though, I don’t plan to run a technical blog: I’ll write about whatever it comes into my mind (well… almost), but I’ll keep strictly technical stuff on my corporate blog.

I just resumed blogging just for selfish reasons: I enjoy writing, and I want to improve my English. Blogging just seemed to be a fun way to do both, although most of my friends aren’t likely to appreciate the choice of the language.

That said, I can’t exclude you might actually be interested in something of what I’ll write. Time will tell.