Showing posts with label Microsoft. Show all posts
Showing posts with label Microsoft. Show all posts

Wednesday, January 26, 2011

Hey Bing, iOS isn't Windows Phone 7

The Bing app for iOS was decent, until recent updates. It looks like someone at Microsoft decided they needed to make the Bing app for iOS look and feel more like a Windows Phone 7 app. So they did, and the result is an ugly, unusable disaster.

On Windows Phone 7, buttons look like traditional 'labels', but in lower-case font. Clickable elements are very subtly different from text, but yet it's obvious what is clickable and what isn't. The hardware 'back' button, standard on all phones, is used to dismiss modal dialogs. That's how the native interface of the phone (called 'Metro', I believe) is, and it all comes together quite beautifully. Here's what a menu on a native Windows Phone 7 app looks like:



On iOS, buttons looks like, well, buttons. Clickable elements have depth and curves and are strikingly different from text/labels. There is no hardware back button, so Apple has provided built-in buttons with system fonts and colors which are placed on the top right corner to dismiss modal dialogs. Just like Windows Phone 7, it's well thought out, coherent and comes together beautifully. Here's how menus, buttons and dialogs look on iOS.





Good apps follow Human Interface Guidelines of the platform they're built for, which gives them consistency with the rest of the system and makes interactions with the application intuitive. For some reason, the developers/designers of the Bing iOS app decided to follow the Human Interface Guidelines for Windows Phone 7 for their iOS app, instead of following the iOS HIG guidelines, and the result is just awful.

Below is what a modal menu on the Bing app looks like on my iPhone (the rest of the app looks similar, and has the same flaws). I have been using apps on my iPhone for two years and yet it took me several minutes to figure out what I needed to do on that dialog. It wasn't obvious how to toggle options on the menu, nor was it obvious how I could dismiss the dialogs. It took me a good two minutes to realize that the 'done' label was infact a button, and that almost everything on that screen was clickable, except the tiny header that reads "MENU". The font size on that label (page header) is smaller than that on the label-buttons, which sounds inverted, and makes the page look ugly.





Compare this with the image below and notice how obvious and beautiful some of those same options are on the native iPhone mapping application. (This isn't a modal dialog on the native app - if it was, I can guarantee that there would be a blue 'Done' button in the top right corner).





In fact, the entire experience of using the Bing app is so jarring that I refuse to use it at all, in spite of some of its nifty features. And I would be very surprised if I'm the only one who feels that way. It literally feels like Microsoft ported an app that is likely beautiful and usable on Windows Phone 7 to iOS without putting any thought into iOS usability. In fact, my guess is that the developers spent more time trying to make those buttons and table-views looks like Windows Phone 7 than they would have if they just used what the system provided with minor tweaks.

I cannot come up any reasonable explanation for why the designers of Bing chose to do this. If they want their application to be used, I sincerely hope they fix it soon.

Friday, May 15, 2009

Developing for the Mac - How does it compare?

I spent most of this week developing some Mac OS X software. Having never before written a single line of Objective-C or any Mac software, I was pretty excited. Here are a few observations of developing for the Mac compared to the Windows platform (primarily .NET) from a week's worth of writing an application using Cocoa. Of course this isn't exhaustive and only includes things I had to deal with (disclaimer - opinions subject to change as time passes):

  • Overall, developer reference documentation on Apple's Developer site seems more current and easy to understand than that on MSDN. A nice touch is the reference to examples which use a particular method inline with the documentation of the method <example> (MSDN does it using inline code, so it's not too different). My favorite feature about documentation though is the logical grouping of methods and properties arranged by tasks - that makes it very easy to get stuff done. I think this is the result of being the underdog in this space.

  • Mac OS X applications' uniform usability and consistent aesthetic isn't a fluke. Apple's documentation regarding recommended usage is precise down to individual visual controls and yet comprehensive as far as Human Interface Guidelines go.

  • XCode doesn't have anything on Visual Studio. Visual Studio seems, hands down, a better integrated development environment and debugging application. VS 2008 is really pretty awesome.

  • Cocoa is nice, but still has some catching up to do with .NET. Cocoa libraries provide just enough abstractions to get stuff done, but they don't seem to be nearly as comprehensive and well thought out as the .NET libraries are. I found myself cursing some abstractions/APIs in Cocoa for their primitiveness compared to Windows pretty often. Generics give .NET an edge that Cocoa still doesn't have. Microsoft has done a great job of handling little things, such as boxing, which make development easier than it is for Cocoa. 

  • XCode and Interface Builder are unfortunate crutches required for Mac OS X development - I would claim that it's impossible to write any decent application without using both. This sounds great until you realize that IB, which really is a designer, does so much magic for you that you just cannot with code. Linking up IBOutlets, for instance, is something I cannot imagine can be done outside of Interface Builder and has way too much magic associated with it. As a developer I often felt at the mercy of these tools, instead of being the master of it. It's fortunate that this is not true of developing for Windows - there is a lot of helpful magic that Visual Studio builds in but it's certainly not required to develop a decent application.

  • Overall, the Mac platform (Cocoa) seems more closed than it should be. This sounds weird, considering that it's all basically Unix and standard Unix libraries are provided or can be added relatively easily. My comment here related to how accessible and complete Cocoa/Carbon libraries are. Getting access to weird parts of the system is easier on Windows that on the Mac platform, I believe.

  • Deploying Mac applications is a snap, better than Windows. However, I think this is related to how developers are accustomed to (ab)using resources in Windows (registry, etc). Not having a lot of Windows' 'legacy' facilities on the Mac makes developers think hard about what their app really should be doing. I claim that good developers should be able to create x-copy deployable apps even for Windows, though, so it's unfair to blame the platform here.

  • The fact that it's built on Unix makes the mac support a lot more languages, especially scripting languages, out of the box. Windows is catching up fast though - integration of interpreted languages with .NET and PowerShell bring it at par with the Mac (I hear it might be better, but I don't have much experience).

  • Testing on the Mac seems easier. The fact that there are a very finite set of configurations compared to the Windows platform makes life less complicated for developers. It's almost true that if it works on your Mac it's probably doing to work on most Macs (modulo a few exceptions).  History says this has traditionally been an advantage of the Windows platform, but I'm not so sure it's a good thing anymore. This one's probably the most controversial of my observations above and likely to change as I do more Mac work.

So, who wins? I would say Windows for the overall developer friendliness. Apple has some catching up to do in several areas. That said, the Windows platform could learn more than just a few things from what Apple seems to be doing right. 

It's a fun time to be a software developer.

Friday, January 16, 2009

A Run on the Bank of Microsoft?

Wow... did I just predict this? Yesterday, in my Problems at Facebook? post I referenced (somewhat jokingly) how I was kinda surprised that in the current economic conditions, the EU hadn't tapped into the Microsoft cash machine using some anti-trust excuse. Lo and behold, a few minutes ago Microsoft issued a press release in response to a 'Statement of Objections' it received from the EU about - you guessed it - European anti-trust law. Obviously, I had no knowledge of this when I posted yesterday - I'm just a foot soldier. The timing is a little spooky though... maybe I should muse of some good things happening. ;)

I wonder if this is the beginning of another run on the Bank of Microsoft by the EU...

Update: More coverage in the Wall Street Journal. This thing is probably going to go on for a while. Sigh!

Thursday, January 15, 2009

Win 7's glowing reviews - a case of lowered expectations?

Windows 7 was publicly released as a beta last week, and has been getting some pretty glowing reviews. I haven't yet seen a single negative review - everything I've seen compares Windows 7 much favourably over Vista and in many cases even over XP. ZDNet's review is pretty typical of most reviews I've read. Even traditional Microsoft haters (who shall go un-named) seem to be reacting favorably to Windows 7. Of course there are some brand new features, but I'm more concerned with the stability and snappiness of the OS.

While a lot of the praise is well deserved and a lot of people have worked hard on making Windows 7 what it is, I can't help but wonder how much of it is a result of peoples' lowered expectations from Microsoft with regards to Windows. Vista wasn't nearly as good as it should have been when it released (SP1 seems to have fixed a lot of stability issues, though it is still a resource hog) and the generally negative buzz about Vista has probably reduced expectations to the point where anything that's not sluggish, bloated and resource hungry would've received good feedback.

Anyways, nothing wrong with good reviews... here's hoping that Windows 7 will exceed all expectations when it's publicly released.

Wednesday, October 8, 2008

Post on The Live Mesh Blog, PDC 2008

I wrote a post on the Live Mesh Blog earlier today that talks about what I primarily work on - the Pub-Sub backend of Live Mesh. I briefly referenced that I worked in this space in a previous post where I commented on Apple's Push Notification announcements.

I've written tons of design documents, specs and tech summaries on the job but writing this post was an interesting exercise - I tried to make it readable for both the geeks and the regular folks in the audience (hence the references to the postal system). I'm not sure how well this will work... I guess feedback from the blog comments will be a good indicator of how effective the attempt was.

In addition to my awesomely smart teammates on the Live Mesh team, who I enjoy working with greatly, I wanted to send a shoutout to Tom who originally helped design a lot of the stuff described in the blog post.

For those who want more details about how stuff works behind the scenes, there are some Live Mesh related deep-dive sessions scheduled at PDC 2008. Sessions related to the Live Mesh backend architecture ("Live Services: Mesh Services Architecture and Concepts" by Abolade Gbadegesin) and backend communications services ("Live Services: Notifications, Awareness, and Communications" by John Macintyre) might be most interesting to those who were intrigued by my post on the Live Mesh Blog and are curious to know more. 

Unfortunately, I won't be attending PDC - I'll probably be busy chugging caffeine and fanning servers while thousands of new users give our new Live Mesh offerings a spin. :)

Tuesday, September 30, 2008

Surprised by Live Search

I use Live Search as my web search engine of choice, but every so often I need to use Google to find the information I'm really looking for. I was really looking for a site that gave me good side-by-side results from both engines - kind of like how dogpile.com used to work in the old days (I was surprised to find dogpile.com still alive and doing search compilation, but I really wanted a side-by-side view from only my two preferred engines).

Recently, as part of an internal Microsoft initiative, I found exactly what I was looking for - a site that runs the searches in parallel and presents them side-by-side. As a bonus, you get to vote on which engine performed better. I've been using this as my default search engine on all my machines for the last few days and I'm already pretty surprised at how often Live Search comes up with far superior answers. I guess I never paid to attention to comparative relevance and quality until it was presented to me in such an 'in-your-face' manner. Of course, there are still many searches where Google trumps Live Search. Anecdotally, I'd say I prefer Live Search about 60-70% of the time, but maybe that's just me (and it could well be my inherent bias for Microsoft products).

One aspect that simply blew me away was Live Search's ability to fetch answers for very specific things I was looking for. A lot of these are powered by something Live Search calls 'Instant Answers'. A few samples from queries I performed over the last week where I was really impressed by Live Search:

- MSFT GOOG AMZN AAPL quote vs MSFT GOOG AMZN AAPL
- seahawks schedule vs seahawks schedule
- highest peak in the US vs highest peak in the US
- calories in beer vs calories in beer
- president of somalia vs president of somalia
- Colt McCoy vs Colt McCoy

These were just some of the searches I ran last week - the Instant Answers site has other query formats you can try (incidentally, I didn't know about Instant Answers or the formats until just two days ago). One place where Google still beats Live Search hands down is showing inline maps and directions. I use this fact to give a lot of sh*t to a friend of mine who works on Live Maps - maybe one of these days I'll annoy him enough to make him go fix this stuff! ;)

Friday, September 12, 2008

Bill & Jerry, and A Lame Blog Post

You've probably seen the new Microsoft Windows TV ads featuring Jerry Seinfeld and Bill Gates. The second in the series showed up last night.

When I first heard that Jerry Seinfeld was signed for the ad campaign, I wasn't really sure if he would appeal to the current generation (and I'm not sure he does). I'm a Seinfeld fan though, so I was curious what the campaign would be like. I have to be honest - the ads were completely not what I was expecting. FWIW, not many in the company had seen the ads before they were shown publicly - at least, I hadn't.

Anyways, it seems like the ads have people talking. From what I've read, the reaction seems to be neutral to leaning negative - I think people were expecting a more direct retort to Apple's Mac vs PC ads. Personally, I found the ads pretty amusing. Subtle humor, no direct attacks and entertaining. I think Bill easily outshines Jerry in both ads so far. I had seen Bill Gates act in silly videos at company meetings before, plus in his last day at Microsoft video, so I knew he can do a decent job but I didn't think he could out-do Seinfeld. There are subtle references to Microsoft products and technologies throughout the ads - pretty funny for someone close to Microsoft but I can see how pretty much everyone else might miss it. From the coverage the campaign has gotten and the pervasiveness of the ad spots, I'm pretty impressed with how much buzz the campaign has already generated. A lot of critics have complained that the ad hardly mentioned Microsoft or Windows... does it really need to, though? Bill Gates == Microsoft == Windows. No more logos/information needed.

Knowing nothing other than what I've seen on TV so far, I think this will definitely be a long-remembered ad campaign. It looks like its going to be one of those hugely successful or hugely miserable ad campaigns. Of course, given that work @ Microsoft I hope it's successful.

I wonder how many CEOs have featured in ads. I can remember a few in recent times - Chrysler, Sprint, Ford. None of those had the CEO doing comedy, though. CEOs, especially founder-CEOs, have huge brand appeal and brand recognition so they seem to be a natural fit for come-back type ads. I hope Microsoft has better success than Ford, Chrysler and Sprint are having currently, though.

Given the buzz around the ads, I was kinda annoyed when David Webster from Microsoft, who's apparently running this campaign, posted an entry on his blog trying to justify the ads - the text of the post just reeks of defensiveness. If you're ballsy enough to sanction $300 million for an ad campaign, there's no need to put up a blog post trying to justify it even before the entire campaign has run its course. His tone sounds like he's trying to save his job already - where's the confidence, man? Super lame, Mr David Webster. I think you should've just kept quiet and let the campaign do the talking (or not, if they don't succeed).

Thursday, July 17, 2008

What Live Messenger, AIM and Y! Messenger Need to Remain Popular

Two things - broadcasting and aggregation.

Windows Live Messenger, AOL Instant Messenger, Y! Messenger and Google Talk and several others are hugely popular Instant Messaging applications. Almost all offer rich client experiences as well as web-based versions. I remember reading somehwere that IM apps are the most used apps on computers, and I am pretty sure they will continue to be for the near future. Demand for IM applications on the web is pretty strong too, with sites such as Meebo growing in popularity.

IM clients have been very innovative over the years, starting from simple 2-person chat to having multi-party conversations, voice support, application sharing, file transfers, etc. Innovation in this space seems to be slowing down though - I haven't seen any new game changing features in any of these IM applications. They all seem to have missed the move to a more social web. In many ways, these apps should have been the ones driving the social web, with their knowledge of social networks via friend-lists. However, websites like Facebook, MySpace and Orkut have firmly established themselves as the drivers of innovation in the social space.

Consumer interactions are evolving from being specifically directed to an individual or small group to being widely broadcast. Blogs, tweets and public profiles are visible to anyone and often are used as a broadcast medium. Increasingly, status messages on social websites and, more importantly, micro-blogging are encroaching on the IM space. Twitter clients such as Twhirl are a great example of this encroachment - users interact with it if it was an IM client but it's really just an app that allows broadcasting messages. YouTube is another hugely successful broadcast medium.

Ofcourse, users also want the ability to have personal, directed conversations along with the ability to broadcast - both to a select group (their network) as well as broadly to the world. For IM application to remain relevant and to fulfill this need, they need to include broadcasting features in addition to preserving the existing communication & collaboration experiences. There are multiple potential approaches to do this - use existing APIs of popular social platforms to allow users to broadcast to a specific network or to farm out to multiple social networks

With the desire to broadcast comes the desire to learn about what others are boadcasting. Most (all?) social websites have news feeds and services can aggregate several such feeds to present a unified view of a users online broadcasts/activity like how FriendFeed does. An IM application would be an ideal home for such an aggregated feed.

In many ways, Facebook is almost there with regards to being an ideal IM application. It has the advantage of being a really popular social platform, which certainly helps. Facebook recently complemented their broadcast communication feature (status messages) with IM-like functionality to enable personal communications. And of course, Facebook pioneered the news feed. Now if only they could go broadcast to and aggregate from competitor sites too... ;)

The arguments above apply even to corporate IM applications - this is not just a consumer need.
Unless traditional IM applications evolve to fill this need and compete with the Facebooks of the world, I see them dying a long, slow death.

Wednesday, July 2, 2008

Viraj's Guide to Interviews - Conducting an Interview

Over the last few years, I've done a bunch of interviewing - both as the interviewer and the interviewee. However, things had slowed down on the interviewing front for the last year while I was primarily focused on getting the Live Mesh Tech Preview out the door. I conducted an interview yesterday after a long while, and thought of posting about my own list of interviewing best practices. Interviewing ranks as one of the more critical functions for the success of a team/company, so I work hard at giving it my best.

I am not, by any means, an expert here but I have been interviewed by some excellent interviewers (primarily at Microsoft, but in quite a few other companies too) and I made it a point to keep mental notes of things they did well so I could apply them to interviews I conduct. While all my experiences have been in computer science related interviews, the list below likely applies to other fields too.

1. Spend at least 10+ minutes before an interview to plan what set of specific skills you intend to assess. It's naive to think that you can cover more than 2 skills in any sort of detail for each hour of interview time. Use part of this prep time to read the candidate's resume and understand his/her previous experience.

2. Make sure the candidate is comfortable, and the environment is conducive to conversation. Conduct the interview and manage interactions the way you would want them to be if roles were reversed. There are times when you want to simulate high pressure situations, but this should be rare and I recommend avoiding it if possible.

3. Ask questions that will help you assess skills needed for the job, and keep conversations relevant. Puzzles and teasers are fun to ask and often even to answer, but that don't tell you much about the candidate's skills. Problem solving, on the other hand, is a great exercise to assess the candidate's analytical skills.

4. Don't let the candidate drive the meeting. Often, candidates get into a safe zone (talking about resume items, for instance) and tend to not let you proceed with your agenda. Respectfully driving the conversation back on track, even if it means cutting off the candidate, is the right thing to do.

5. Don't try to prove you're smarter than the candidate. Remember that the goal is to gauge the candidate's skills and not to prove that you deserve to be interviewing them or are smarter than them. Many times you actually might not be, and that's OK!

6. Pay attention when the candidate is talking. Checking email or generally being distracted shows lack of respect.

7. If the candidate is struggling with something for over 4/5 minutes, help steer the candidate to a solution. Assess how the candidate reacts to hints and whether they're able to regain their composure.

8. Gauge the candidate for team fit and other non technical skills. Is he/she someone you would enjoy working and interacting with? How can he/she help you grow your own certain skills? How organized and methodical is his/her approach to problems?

9. Leave the last 5/7 minutes of the interview to answer the candidate's questions, and be as honest as possible. False sales pitches are often easy to detect and say a lot about your character (and that of the company). Try to determine whether the questions asked are genuine, or mundane and uninteresting. Often, what they ask says a lot about them.

10. End an interview with concrete information about what the next steps are for the candidate. If you don't know, make sure you refer the candidate to someone who does.

Any other interviewing best practices you've experienced that aren't covered above?