Wednesday, July 30, 2008

$10,000,000,000 == $1

I'm no economist, but it's hard to not have seen this coming. From the article:
Zimbabwe will drop 10 zeros from its hyper-inflated currency -- turning 10 billion dollars into one -- the country's reserve bank said Wednesday. President Robert Mugabe threatened a state of emergency if businesses profiteer from the country's economic and political unraveling.
Just a couple of weeks ago, Zimbabwe introduced a 100-billion dollar bill, and it didn't buy nearly enough. People are suffering in Zimbabwe while a corrupt government mismanages the economy. I truly hope their economy recovers soon...

Monday, July 28, 2008

Doing Something "Just Because We Can!"

Working on a distributed system like Live Mesh is a lot of fun, but finding certain types of bugs can be interesting, to say the least. Going from writing code that executes locally on a workstation to writing code that is executed across several hundred machines is an extremely refreshing experience - you quickly learn to spend a good amount of your time and energy building a good logging infrastructure and leveraging it to diagnose problems. There are several other things you learn too, but that's worth a series of its own posts.

With a large amount of logs comes a large amount of interesting data, and an even larger amount of potentially interesting data. Good logs can go a long way in helping infer information about the scale, health, bottlenecks, usage etc of the system. Much time is spent automating such tasks so that useful reports can be generated from logs. Every so often, someone (usually a non-tecnnical person) asks for additional interesting data that would take time, effort and money (in terms of resource utilization) to extract. However, almost all such requests are missing information about what the requester hopes to conclude based on the retrieved data. My instinct is to always push back on such requests, forcing the requester to justify what questions the data will help answer or what conclusions it'll help lead to. If the data gathered does indeed help answer a crucial question, it's worth spending time and money mining the logs for it.

Very often, the reason for the request is "just because we can", in which case I believe the time/money/effort spent is unwarranted unless you have people/machines sitting around doing nothing, in which case you arguably have other problems.

Moral of the story - try not to ask someone else to do work (or spend your own valuable time doing work) without knowing what you intend to get out of it.

Wednesday, July 23, 2008

Blown Away by IMAX (Again)

I caught The Dark Knight at IMAX, and it was so worth the wait (waited in line for an hour, on a weeknight!). I've watched a few movie at the Boeing IMAX Theater at the Pacific Science Center a few times now, and each time I come back amazed at the infinitely better movie-watching experience that the theatre provides. Select scenes of The Dark Knight were shot for IMAX (pretty much all cityscape scenes in Gotham City and Hong Kong) and they were just stunning. Too bad there were no real 3D scenes, like there were in Harry Potter and The Order of the Phoenix. I really need to catch more movies at IMAX - its likely the long lines that put me off, but I need to keep reminding myself that they're totally worth it.

If you have a choice to watch a movie @ IMAX or at your neighborhood multiplex, do yourself a favor and pick the IMAX experience.

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.

Friday, July 11, 2008

Losing Objective Reporting Would Suck!

Earlier today, CNN and NY Times had perfectly contradicting headlines for what was supposed to be the same news report:

Times: F.C.C. Chief Backs Sanctions Against Comcast Over Blocking
CNN: FCC Chairman Recommends No Fine for Comcast

It's interesting how opinion and interpretation can affect perception.

With increasing globalization and the Internet becoming the primary source of news, I often notice news stories take a life of their own as they spread through different media channels. It's harder today than it was a few years ago to find objective reports - reporters/bloggers increasingly tend to state facts that are inter-twined with opinion. In many ways, blogs need to be this way in order to allow conversations to continue (blog post + comments = conversation) but it is unfortunate that traditional media outlets also increasingly feel the need to add opinion and personal biases to news reports.

Traditional media is still very far behind the blogosphere when it comes to mixing opinion with facts, but I think it would be unfortunate if the current converging trend here holds for long. Without objective reporting, there would only ever be a bunch of opinions floating around, and people would lose their ability to form personal opinions which today derive from facts.

Tuesday, July 8, 2008

Favorites vs Underdogs

The 2008 Wimbledon final from a couple of days ago was epic. Perhaps the greatest tennis player ever against a potential future legend. Sport sites were all over the actual game coverage, but I was fascinated by the psychology of those audience watching the game.

As I watched the game with friends and family, I found myself to be the sole supporter of defending champ, RFed. Everyone else was rooting for Nadal.

This seems to be a theme with me - I was rooting for the Pats in Super Bowl XLII, for Tiger Woods at the US Open last month, for Australia in the 2007 Cricket World Cup, etc. I seem to want the favorites to triumph. Most friends of mine and most others out these seem to always favor underdogs.

I wonder what makes an individual go one way or the other when it comes to supporting the favorite vs supporting the underdog.

Leaving aside the betting aspects of it all, my naive guess is that who one supports has something to do with projecting one's own life experiences. If you've struggled and played the role of underdog more often than not, you empathize with another in the same situation. If you've been on the other side more often, where you've always needed to 'defend your turf' in some way, you probably ed up rooting for the champ.

Someone somewhere has probably written up a study that goes into the exact psychology of it all, but I stand by my extremely un-scientific claims above while I procrastinate trying to find said study.

Virgin America FTW!

Over the 4th of July weekend, I flew Virgin America and was blown away. It's amazing how they've used technology to out-perform their competition in almost every aspect.

Well, their fares were unbelievably great - $170 for a round trip ticket from SEA to LAX two weeks before the 4th of July. Their website is simple and slick, and they have a great model where you're charged a base price and 'frills' come extra (for instance, an exit row seats adds $15 to your ticket cost - I would totally pay for the extra leg room on a long flight). Their check-in and gate counters are Apple-slick and their brand spanking new planes are fitted with pleasant neon lighting and comfortable leather seats. Their in flight entertainment system, called Red (hip with the 'Beta' tag), is superior to any other I've seen in the US. It seemed to have just the right amount of free and for-pay options. Free lineup - live TV, music, games, soda/juice. Paid lineup - movies, food and alcohol (that's right - you order food and drink using the snazzy touchscreen and pay using your credit card). It even has this cheezy-yet-fun chat app which lets you join a chatroom (haven't seen one of those in years!) or send IM to a specific seat. Oh yea - each seat gets its own power outlet, even in economy. Their use of technology on the ground and in-flight seems to have allowed them to reduce staff and yet enhance the flying experience.

By tailoring their service and catering to today's generation, they're focusing on the right things. and the primarily west-coast service seems to be a great fit for their 'attitude'. Oh, and having really pretty air-hostesses helps too. Co-incidence, or perhaps a signature Virgin move ;)

Anyway, I would never fly another airline if a Virgin America route was available and reasonably priced. My guess is that they're losing money like every other airline (but less than others, probably). However, if they're in it for the long haul, I think they're making all the right moves.

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?

Tuesday, July 1, 2008

Some thoughts on Apple's Push Notification Service

Last month, at WWDC Steve Jobs announced iPhone 3G. Very cool. I think the iPhone is a game changer. Enough people have dissected the iPhone 3G that I'll skip re-stating what everyone knows already.

One of the more interesting announcements Jobs made at the WWDC Keynote was the iPhone Push Notification Service. In short, it's a single channel from the cloud to each iPhone, and can be used by software publishers (in addition to Apple) to send signals to apps on the iPhone without having to worry about creating their own custom channel to the cloud or using polling schemes. This sounds like a win-win for both publishers of iPhone apps and for Apple.

Given that I work in a similar space, this was interesting to me. We had been thinking along similar lines and have in some ways even taken the concept even beyond what Apple announced. I'll save the details/designs of what I'm working on for another post.

The technology Apple touted sounds a lot like Exchange Direct Push/Always-Up-To-Date, except that it opens up the channel from cloud->phone to third parties instead of the exchange model where the only publisher is Exchange and the only consumer is the Outlook Mobile client.

The design challenges of opening up a channel of this sort to third parties are:
1) Delegated authentication to allow third parties to use their notification channel
2) Routing notifications to the correct iPhone
3) Introduction of a single point of failure for most apps on all iPhones (kinda similar to AT&T going down - if Apple's service goes down all cloud-dependent apps are 'bricked' unless they have some form of background polling, which would defeat the purpose of the single notification channel since Apple touted battery life as their primary motivation. BTW, I don’t believe that is their primary motivation – more below).

One interesting feature they did not talk about, and I believe that they won’t add anytime soon, is a 2-way communication channel to allow for messages from the phone to the publisher. The notification channel is likely 2 way inherently, but communication from the phone is only ever seen by Apple.

Here are my guesses on how they deal with the above three:

There is only one way to get apps on the iPhone (assume non jail-broken iPhones) – the Apple App Store. To publish to the store, publishers share revenue with Apple. I’m certain there is some kind of certification that happens at this stage to ensure that apps are well behaved. Once certified, the publisher probably gets a ‘security token’ to communicate with Apple’s Notification Service if they want to use it. Further, my guess is that each app published by each publisher might have a unique security token. I presume that the content of Notification that publishers push through the channel would be encrypted and opaque to Apple – it would be very bad if that’s not the case. However, at least 2 pieces of information must be known to Apple – who is publishing and whom is the Notification going to.


My guess is that Apple is told what phone to send a notification to by publishers, versus figuring out itself where to route the Notification. In other words, the subscription is held by the publisher and not by Apple. The reasons I think this is how it must be is:
- Apple would not like to be responsible for tracking subscriptions of each app on each iPhone. It would mean they have a ton of subscriptions to manage, plus they need to perform lookups in their cloud for routing notifications to the right phone. By letting publishers deal with this, they are no longer responsible for the costs incurred of maintaining these subscriptions. Apps that create several hundred subscriptions cost the publisher, and the cost of performing lookups are also incurred by the publisher. This makes Apple's SLA much simpler.
- Publishers (I hope) would not want Apple knowing data about their customers.

#3 is interesting – the service needs to be robust again badly behaved publishers. Their first line of defense here is probably their certification program. Apps must not do wild-card broadcasting, must not poll, must have an upper limit on Notification payload sizes, etc. Note that the announcement yesterday was only to allow 3rd parties to support 3 types of Notifications – ‘badges’, ‘audio alerts’ and ‘text alerts’. By nature, the first two should be tiny in size, the third probably has an upper limit on size of text. Their second line of defense is probably real time metering and throttling. Apps must be self metered or will be throttled by Apple. Publishers are motivated to adhere by these guidelines because Apple controls publishing their app and could impose restrictions on downloads of the app in the App Store.

Regarding Apple’s stated motivation for the Notification Service – I suspect they have more interests than just “preserving battery life”. By controlling the App Store and this Notification channel, Apple now has direct insight into a ton of data that can be mined – what apps are most popular, what apps are most chatty, what app is the ‘flavor of the month’ by usage and not just by download metrics, most active users, etc. They can use this data both ways – to make special licensing deals with specific app makers they detect are 'hot' and create popular apps (popular download is different from popular usage) and also to directly target ads/other apps to consumers.

Other's have posted on how Apple might be building something similar for the Mac. They probably are, but the motivation for publishers to use such a channel is greatly lesser in case of Macs. There is no single channel of publishing apps for the Mac, although they do make it easier. As a publisher, the primary attraction of using something like this would be to not have to build something yourself, but I think the need to share revenue with Apple, get certified and distributed via official Apple channels only and use Apple as the middle-man for what essentially shouldn't be any of their business might act as deterrents.

Why am I blogging?

It's kinda funny how I feel the need to justify why I'm blogging, as if every blogger must blog to serve some purpose. I think such justification is warranted, but doesn't really need to be expressed. As long as you know why you're blogging, you're good.

I am a voracious reader of blogs, but never really got into blogging myself. I've tried this a couple of times before, but those were more academic exercises than real attempts to start blogging.

As I read blogs, observe people and their behaviors and basically live each day I form opinions, like most other human beings, that I keep to myself and sometimes (very rarely) express them to people I interact with personally. However, I think it's time to unleash my opinions to the Intertubes - everyone else is doing it, so why shouldn't I? ;)

Seriously though, there are a couple of reasons why I feel the need to blog -

As an engineer, I've found myself making observations and critiquing things that others benefit from. I've been told that my opinions are often 'interesting' (whatever that means), and while I may not always be right, I seem to have built a decent track record that gives me the confidence to risk embarrassing myself in public. I'm hoping that my blog posts about Technology will be even mildly interesting to others out there. There's the personal growth angle here too - in many ways, articulating thoughts into words takes some effort and makes you reason with your opinions. Blogging seems to be a great way to cultivate this skill.

The other big reason to blog is to be a participant in this new world of open communication, instead of being just a spectator. Reading interesting blogs but not blogging myself made me feel like I'm cheating, in some ways. I know I'm late to the party, but better late than never! I hope to use this platform to comment on society, trends, human behaviors and anything else that I wish to express.

Lastly - and I'm ambivalent about this one - I believe blogging will somehow help my professional career. It's almost as if nowadays, the fact that you have something to say is as important (if not more) than what you have to say. I don't want this to be an explicit goal of blogging (which is why I intend to blog about more than just Technology) but as the saying goes "If you built it, they will come". Notice how nondescript 'it' and 'they' are - by design!

Oh, as far as the title of my blog goes - I was looking for something witty (I envy all the bloggers-with-cool-blog-names out there) but I ended up with something more aligned with the reason I'm blogging - "Mulligan!", my chance to re-do.

Argh - who am I kidding - the truth is, I just played a crappy round of golf today (shot 118, lost 4 balls and broke a club) and I couldn't come up with anything better.