This morning I helped an elderly couple pick their first ever smartphone. It was a wonderful experience; eye-opening at times.

I have known them for a while, and they have been telling me for a couple of months that they wanted to buy an iPhone. I had asked them to wait until Apple launched their newest phone. My first suggestion would have been the 3GS. With the introduction of the iPhone 4S, Apple has dropped the price of the 3GS to nought. And since the people in question were not very tech-savvy, I figured the 3GS would be an excellent first phone and it required no initial outlay.

However they were Verizon customers already, so the 3GS, which is AT&T-only, was immediately ruled out.

Naturally, my next suggestion was the iPhone 4. Yes, the Verizon store did have a number of Android devices on display. But their son had told them that Android would be very complicated for them. In any case, I am aesthetically and now morally ;-) opposed to Android.

I should have suggested the 4S, but didn’t want to push it for two reasons. Firstly, the iPhone 4 is “similar in many respects” to the iPhone 4S, and is comparatively less expensive. Secondly, the folks in question are Korean and they have a thick accent; I wasn’t sure of how much use Siri would be to them. Oh, also they could get the iPhone 4 right away.

Jane took the demo iPhone 4 in her hands. I explained the home button to her, and how everything was an app. I showed them how to make a call. She wanted to take a picture, and I showed her how the Camera app worked.

Her next question was, “How do I find out where the nearest, hmm, department store is?” Well, we were standing right next door to a Target, but hey!

So I showed her how to do a Google search with Safari, or search for a place using Maps.

I must admit this was a bit of a downer for her. Her reaction was “Oh, this means I must do a lot of typing!”

The iPhone 4S was right there. I told her, “Well, you might want to give this a try.” Her husband stepped in and said, “I am not sure if this will be useful for us. It might not work with our accent.” I was glad he understood my concern.

Jane wanted to give it a try nevertheless. She held the phone close to her face, and said, “Would you please tell me where the nearest department store is?” Her husband smiled, “You don’t need to be so polite to the phone.

But Siri was already at work. “One moment. Let me get your location…

A few seconds later. “I found seven department stores close by. I have arranged them by distance.

I could see that they had made up their mind. I was enjoying this quite a lot. So much that I didn’t mind that Siri had slapped my wrist for underestimating her ability.

Next. “Would you please tell me what is playing at the Ambler Theater?

Siri thought about it, but could not understand fully. Maybe she was overwhelmed by Jane’s politeness!

Another try. “Ambler Theater showtimes.

This was more to Siri’s liking. She pulled up Google search results for the search query.

Next. “Remind me to go to the dentist. Monday morning. 10 o’clock.

Siri: “I have added this item. I will remind you. Is this OK?

Next. “Remind me about Josh’s birthday. November 4.

Siri: “I have made an appointment at 9AM on November 4, 2011. Is this OK?

Jane put the demo phone down, walked up to the counter and said emphatically, “White iPhone 4s. 16GB. When can you deliver it?”

May the 4S be with them!

P.S.: I remember listening to Harold Hambrose a few years ago at a conference on bringing digital innovation to inner cities. At the time, the city of Philadelphia was rolling out free Wi-Fi throughout the city and had expected that this would help people living in poorer neighborhoods to take part in the digital revolution. Harold predicted correctly that this was bound to fail. The free Wi-Fi didn’t work at most times, and when it did, it was poor at best. Harold’s reasoning was that when introducing a product or a service to the uninitiated, if those that it was intended to serve found it lacking, they would never take to it; in fact, it might have the exact negative effect on them, reinforcing their belief that technology is designed to be inaccessible. He aptly compared it to Elaine’s idea of giving muffin stumps to the homeless in The Muffin Tops episode from Seinfeld.

A5 processor. Spanking new 8MP camera. iOS5. All these mean nothing to someone buying a smartphone for the very first time. But being able to talk to your phone asking it to remind you on your grandson’s birthday; you cannot place a value on that. I felt like I was in a MasterCard commercial. Thank you, Siri!

Selva Nayagam, Vivek Mohan liked this post
 

Google announced “Priority Inbox” a few weeks ago. Roughly this is how it works. When an email arrives, the user can flag it as important or not-so-important. Gmail will use a learning algorithm that will try to mimic the user’s classification. So when you check your email in the morning and find that it has 20 emails, you will see your Gmail Inbox divided into two, the first section containing only those emails that the system thinks you would have classified as important, and the other section showing all your other emails.

While Google started rolling this feature out to Gmail users immediately after the announcements, Google Apps users had to wait, as usual, for the roll-out. My wait ended last week, and I lurrve Priority Inbox so far.

While I’m not amazed, I find Gmail’s ability to learn — or so I think — from my classifications very useful. I can vouch that over 80% of the emails that hit my inbox are unimportant, a large number of which are totally useless — pictures of cute babies, regurgitated advice, newsletters that I don’t care to read, and nuggets from the verified spam folklore (of the “Microsoft will pay you $243 for forwarding this email” type). Almost none of these emails have hit my Priority Inbox, after I had classified emails of that type as not being of priority. In fact, I have used this as my excuse to remove myself from as many subscription lists as possible.

Priority Inbox doesn’t really solve my email overload problem though. I get to most of my emails first on my phone anyway. The feature would be extremely useful for those who check their email through their computer, or the Gmail web app. I would love it Gmail will let a user set a filter for emails in the Priority Inbox. If this were possible, I would create a label for these emails, and check this folder first. If anyone knows of a workaround, I would love it if you could share it with me. I am going to submit a feature request.

 

Here’s what I found when signing up for a discounted copy of Windows 7 (for anyone with a .edu email address):

Sloppy typo on Windows 7 landing page

Sloppy typo on Windows 7 landing page

 

Consider this. You have a list* of maps. You want to replicate the list a specified number of times. For example, if the list has two maps, and you want to create from this list another list that contains six maps. The constraint is that you have to write your own method, and you must not use Java’s object cloning feature.

The first approach is simple. You take each map in the list and add it to the list a specified number of times (n-1 times, if n is multiplier). If this is methodized, the code would look something like this.

firstcut

A first-cut, defective solution

Basically, we add every map from the input list into a temporary list, and then add back to the original list each map “n” (or, in this case, “size”) number of times. And all is well.

Well? Think again. The above method will fail… miserably. It will, of course, return a list of maps that is n times bigger. But its utility ends there. If you work with the list, you will find that it behaves strangely. Modifying some element in the list will also modify some other element. Why does this happen?

In our ingenious first-cut method, we have add the same map multiple times to the list. What happens internally is that the list contains multiple references to the same map (or set of maps). So any change to one map in the resultant list will also modify all its replicas, since each map reference points to the same map. In essence, we have performed a shallow copy.

The correct approach (and I do not claim that this is the best) is to modify the map-copy portion of the above method (the second for-loop) as follows. Iterate through the map entries and copy each entry, i.e. key-value pair, to a temporary map, and when done, add this map to the list. This way, you are not left with references to a single map. Each map in the list is its own object.

second-cut

A better, more correct solution

 

Update

The purpose of the above was specifically to illustrate the concept of object references. The point is, you cannot copy objects in Java the way you copy simple data types. The more straightforward solution to the above (as Thejo points out) is to use the constructor of the HashMap (or another map implementation) class. Under the hood, however, the constructor does the same thing as we have done — it iterates through the map entries and copies each key-value pair of the passed map object to a new map object.

Here is how the method will look when refactored.

third-cut

An easier, more straight-forward approach

P.S.: Looking back, all this sounds very intuitive. Yet, intuition is not the first faculty that one can command when frantically debugging code on a Sunday evening. 

* I have used list and map instead of List and Map. This is just for explanatory purposes. If you are a purist, please accept my sincerest apologies.

 

… is Microsoft’s best stab at a web browser since IE 4.

 

So, just like they did with Vista, Microsoft is planning to release multiple versions of Windows 7. In an interesting post on TechCrunch, Devin Coldewey clinically takes apart this strategy. The section I loved the most was:

Can you imagine a Microsoft hot dog stand where they use the same wiener and bun in every hot dog, but if you want relish, or Sriracha sauce, you have to call it something completely different, and the menu has every configuration of hot dog included, with price? They could just have “Hot dog, $2″ on the menu, and then “relish, 40¢ extra” and “Sriracha, 50¢ extra” on there. Yes, there’s a reason every hot dog stand does it like that. Because if they set it up like Microsoft does, people would get confused and go get something simple, like an apple (which could represent the obvious).

 

http://code.google.com/p/blackgold/issues/detail?id=3

The greatest bug report ever. Haven’t laughed like this in ages!

 

Guess what, I received a surprise New Year gift today. All the way from Praha in the Czech Republic. A limited edition NetBeans 10th Anniversary T-shirt from Sun Microsystems!

NetBeans turned 10 this past year, and to commemorate this, the folks had conducted the NetBeans Decathlon, in which yours truly was one of the winners. (I must say I have come a long way since those days.)

Oh, and here is the prize.

Limited Edition NetBeans 10th Anniversary T-Shirt - Front

Limited Edition NetBeans 10th Anniversary T-Shirt: Front

NetBeans 10th Anniversary T-Shirt: Back

NetBeans 10th Anniversary T-Shirt: Back

I wear my favorite IDE on my sleeve!

I wear my favorite IDE on my sleeve!

 

Steve Ballmer announced today that “techies” could download and test the beta version of Windows 7, the latest OS from Microsoft, starting Friday. I don’t have a spare computer to try that. But even if I did, I won’t have the guts to do so. Having endured Vista over the past couple of years, I am not going to trust Microsoft any more. I don’t think I must waste my time pleading with you not to; yes, I know that would be superfluous.

While on the topic, you might want to check out some “cool” videos the Windows 7 folks have made. The videos focus on how the new OS delivers a fabulous user experience. Cool new features include dragging your favorite icon onto the taskbar!

But we must not forget that it has been stated publicly (by Bill Gates and Steve Ballmer) that Windows 7 is only an incremental upgrade. To what? Shitty Windows Vista? (It does seem though to be a bit better than putting lipstick on a pig. ZDNet, in comparing a leaked version of the OS, reported that it is better than both XP and Vista in terms of performance.)

What better it may be, I don’t see corporate consumers, the guys with the big bucks (or formerly), queuing up to upgrade their OS. Not in this kind of an economy, and not after having burnt money on Vista. And if Microsoft follows the same pricing strategy as they did for Vista, I don’t see why cheapskates like me would want to switch.

 

While I was shocked at the goings-on at Satyam Computers as reported in the media over the past few weeks, today’s news that the founder and Chairman B. Ramalinga Raju has admitted to grossly inflating the books comes a thunderbolt. As a shareholder in Satyam Computers, I am appalled at the moral bankruptcy of this man. Moneycontrol has a copy of the letter Mr. Raju sent the members of the Board as well as SEBI, in which he has tendered his resignation.

The details are saddening. For example, the Q2 operating margin was reported at Rs. 649 crores, while the actuals were less than a tenth of this. Cash and bank balances have been grossly overstated, while loans arranged for the company have not been disclosed.

Mr. Raju’s statement in his letter that his actions were not with a view to increase his personal wealth in no way justifies his actions. As Warren Buffett once said (and as has been quoted numerous times in the even-more-debilitating Madoff affair), “Only when the tide goes out do you learn who’s been swimming naked.” I wish that the other swimmers are adequately covered.

What is inconceivable in this whole affair is Mr. Raju’s claim that he is the only person responsible for all of this, and that no one else even knew about this fudging. That can be true in a one-person business, but this is an organization that is effing 50000-strong. Do you want me to believe that the internal auditors did not know anything was amiss? Or the auditing firm that certified the company’s finances? It doesn’t take a CPA to understand that it is impossible for one man to mislead an army of qualified accountants, who are oblivious to the goings-on in the firm. They can’t be so dumb. While the case against Mr. Raju is strong, one wishes that the investigative agencies bring these auditors and auditing firm to light.

P.S.: Ironically, the name of the company, Satyam, means truth!

 

From the Onion News Network. Hilarious!


Apple Introduces Revolutionary New Laptop With No Keyboard

 

Interesting video.

 
Image representing Facebook as depicted in Cru...

Image via CrunchBase

I have been dabbling with Facebook Ads for some time for a class project, and I thought about jotting down some of my experiences.

Facebook Ads v/s Google AdWords

The first question that arises whenever you thrown in a new product into a crowded field with established products is “How does it compare?” In this case, the obvious comparison is against Google AdWords. The difference is also obvious. Facebook lets your target your ads much better than does Google. Both services let you target based on geographies, but on Facebook, you can target based on many other parameters. For example, you can show your ads just to those in high school, or in college. You can choose your audience based on their (disclosed) age, gender and interests.

This level of targeting is awesome if you have a product or a service that specifically caters to your audience’s needs. To put this in perspective, think of a family watching prime time TV, and each member sees a different commercial – like the parents see an ad on Cialis, and the children see an ad about Xbox!

But Facebook exacts a premium price for this kind of targeting. While you would normally pay less than 5 cents for a click on contextual Google ad, Facebook’s suggested bids for most targeted ads is around 35 cents; and 60-70 cents isn’t an uncommon suggestion either. So while Facebook helps you reach your intended target, it does make you cough up for it.

Make a bigger impression!

The other advantage of Facebook ads is the number of impressions – that is, the number of times your ad is shown. Probably because there aren’t as many advertisers hawking their stuff on Facebook (compared to Google), you will find that your ad might crank up over 100000 impressions in a day, if you care to pay the suggested price. Ours did, and we were targeting only high-schoolers and college-goers in the Delaware Valley region. Compare this to a meagre 500 impressions per day on Google!

Bid price gaming

While impressions and clicks are fine, we were still worried about the cost per click on Facebook. We were only conducting an experiment, and 35 cents a click or more is a princely sum in the world of online advertising. We progressively drove down our maximum bid price for a click. For one ad, we went from 62 cents down to 17 cents. The max bids for our other ads were also in the 20-cent range.

Surprisingly, the impressions DID NOT come to grinding halt. Facebook was still serving our ads, but only at a slightly reduced rate. I don’t have enough metrics to conduct a detailed study on price elasticity, but suffice it to say that we did not feel that our revised max bid rates greatly affected the serving of ads. Interestingly also, for those ads which we bid 16 or 17 cents, we see a “Price too low” warning, but these ads are being served up nevertheless!

The long and the short of this is that Facebook is a fabulous advertising medium if you have a great product or service, and you want to pinpoint your target audience. Though it compares unfavorably with Google in terms of pricing, you can expect a significantly higher number of impressions. And you would do well to bid lower than the suggested range, and adjusting your price depending on the rate at which your ads are served up.

 

I just noticed that the three browsers that I use all have two-word names, and the words are of equal length.

  1. Google Chrome (both words are 6 letters long)
  2. Mozilla Firefox (7)
  3. Internet Explorer (8)

Not inspired by XKCD: Fixed Width ;-)

 
Image representing Google Chrome as depicted i...

Image via CrunchBase

A couple of months ago, when I first downloaded Google Chrome, I was skeptical about whether I would use it at all. I’m (was) a Firefox junkie, and have a number of addons installed, and I love the Firefox experience. I was of the opinion that with its vibrant developer community, Firefox had the “network effect” to withstand an onslaught from Mountain View.

From a personal standpoint, I was wrong.

Nowadays, Chrome is my first choice browser. And what I had considered a plus for Firefox has actually turned out to be the reason to wean me away from it. Addons, while providing tremendous value to the browsing experience, also consume resources. If you’re the type of user that has an average of 20 tabs open (and I know a lot of people who would think that is a small number), you’re already pushing the software; plugins make the deal worse.

Chrome counters this by dumbing down the idea of browsing. All you see is a set of tabs on top and an address bar. No status bar, no menu bar. I know you can configure Firefox this way; but Chrome provides this right out of the box, which is a plus. Additionally, the fact that each tab is a separate process is a boon. In my experience, Chrome crashes much more infrequently compared to Firefox. This is not because Firefox is inferior; a malfunction in any tab can crash Firefox; in Chrome, you lose just that tab. Throw in a faster JavaScript engine and a more useful 404 page into the mix, and you have a winner.

This comparison reminds me of a conversation I had with a friend who works for Microsoft. Addressing my criticism that Microsoft was slow with product releases, especially Windows, he said that one of the major time-sinks for the Windows team is to make the new OS compatible with every major and not-so-major piece of software around. This includes everything from industrial strength enterprise systems to obscure games. Any incompatibility can blamed on the OS, and it becomes a PR problem for Microsoft.

Conventional thinking is that the reason behind Windows’ success is the network Microsoft has managed to spawn around the core product. Yet, this might be true across the board and in all situations. In an industry characterized by flux, the core player might be bogged down by the existing network relationships. Networks might ensure that the entrenched product is successful, but breaking free of the entrenchment becomes really tough for the company that owns the core.

© 2011 VKpedia Suffusion theme by Sayontan Sinha