Monday, October 08, 2012

Bringing YouTube one step closer to replacing traditional TV - Announcing

I had subscribed to Indian programming on Dish Network, mainly to get the latest updates on bollywood movies and music. YouTube always had all the content, but never had a good way to discover it in a easy way.
This is fixed now. I am super-excited to announce Video Mirchi. You can access it at 

Video Mirchi looks up the top charts every day and creates a continuously playing video channel powered by youtube. There is no login or signup - its just like a TV channel playing the latest bollywood videos. 
It works on both computer and mobile. Connect it with your TV directly or via Airplay.

Sunday, March 04, 2012

A personal review of Lytro Camera

I just received my Lytro camera on Friday.  I played with it for 2 days, carrying it almost everywhere I went. There were a lot of 'pro' reviews on the camera, but very few consumer ones, so I thought I will write down my thoughts on it.

Quick summary on Lytro as a camera:

What I liked:
  • It is a very well built camera. It feels great in the hands, and its construction is high quality.
  • Its fast. There is no shutter lag. The touch interface works great and is easy to use.
  • It charges via USB when connected to the computer.
  • Software is minimal but decent. Lytro uses its own image format, so you need the software to view the photos. There are tons of other things I wished it did, but it does the job for now.
  • Image quality (besides the resolution) is pretty decent. 
What I didn't like:
  • The screen is horrible. I can't believe they put such a poor quality screen on this camera.
    • The demos that they have on their site are definitely not with a real camera.. the screen in their demos is crystal clear.
    • It has almost no viewing angle other than 'straight'. Makes it difficult to take pictures, specially because you have to rely on looking at it so much.
    • Its almost non-functional in sunlight.
Direct view -  you can see the highly pixelated image
View when tilted by about 15 degrees. The image almost looks like a 'negative'.
  • The final resolution of pictures (when exported as jpeg) is 1080 × 1080, which is ok for sharing on facebook but too low for most other uses.
  • The camera actually requires you to take pictures that are out of focus, which can be corrected using the software. So you can't be 100% sure while taking a photo if you will get the focus you want.

Taking Photos

Lytro only has 2 buttons - Click and Power. It also has a touch-slider to zoom which is pretty responsive. This makes it easy to capture photos.

It took me a few hours to get used to the camera, especially because of the lack of a good display and mediocre preview quality. It also takes a bit of work to get used to how to pick the right focus range.

According to their tutorial, you have to take the photos so that the main subject is slightly blurred, which can then be brought into focus later using the software. I had a lot of shots where it went out of the focus range - like this sample photo from gizmodo's review so I could not get it as sharp as I wanted. I guess this is something that will improve by practice, but its a bit tricky to take an 'imperfect' photo and trust the camera to make it 'perfect' later.

Overall speaking, I got used to most of the stuff and was able to take acceptable photos within a day. The camera literally has no 'settings', which is nice.

Living Pictures

Lytro touts this camera as 'click now, focus later'. This is cool for marketing, but is just a way to bridge the gap with existing cameras. Current SLR cameras are quite fast, and I can see exactly what the picture looks like while taking it, so the 'focus later' part of lytro doesn't seem very useful to me personally.

However, the whole concept of 'living pictures' has added another dimension to the photographs. You can craft the picture so that the user discovers something new when he clicks on the blurred part, which really makes the photos feel 'alive'.

For example, the picture below looks like a standard rope with blurred background. Any camera with a decent lens can do this. There is nothing that stands out. However, clicking on the background reveals a new detail that makes the photo more interesting.

This is a whole new paradigm in photography, beyond just 'decide the focus later'. It adds a new meaning to the photo which has been historically lost with traditional photos.

Focus Range

Lytro does not have an infinite focusing (or refocusing) range. While taking pictures, you have control over this 'range'. As far as you are within this range, you can focus on any object inside it. 

There are also some interesting tricks. For example, in the picture below, the frame of the mirror is on its own focus plane, but what you see inside the mirror and what's in front of the scene is on a separate plane. Clicking inside the mirror or on the house in front of the car focuses both the regions. 

Until now, we have always been dealing with Aperture, Shutter speed, etc. but the Lytro adds a new dimension which is fun to play with. 

The software currently does not allow you to create a photo with infinite depth of field, but I believe that a future update will make it possible.

Low Light Performance

The camera does OK in low light, definitely not as good as my 40D at f1.8, but better than my compact powershot camera. Here is a sample:


Lytro a pretty solid camera as version 1.0 of a brand new technology. With the amount of data that the camera captures, it might be able to do amazing things like 3D and HDR. However, they have started with a simple use case - excited to see where it goes from here.

After using it for 2 days straight, I have already started missing the ability to click anywhere in the photos I took using regular cameras.. wondering 'what was hidden there'.

As for now, it does not replace a regular camera, but is something fun to have and make photography more interesting.

If you are interested in photography, already own a bunch of lenses and a nice SLR, and have  $400 to spare, this is going to be a very fun ride.

Here is  my public stream on Lytro, have fun! 

Btw, if you want your significant other to get you one, let them know by adding it to your wishlist at

Tuesday, February 14, 2012

Smart TV FAIL. Let's go back to the Idiot Box.

Having observed the whole 'connected tv' phenomenon first hand since my early days at YouTube, contributing to XBMC since its inception and being really interested in this space personally, I am very upset with the direction where Smart TV is going.

I think that the future should not include 'Apps on TV', 'Browser on TV', and its also not 'Read Facebook or Check Email on the TV'.  They are terrible to use and there are some fundamental reasons why they will never be good:
  • TV is a consumption device for media (photos, videos and music).
  • An average TV is a few feet away from the user. This makes it difficult to read any text that is not blown up to the size of subtitles.
  • It is also a shared device, so anything that is relatively personal (like email) is not practical to use on the TV.
  • The interface on TV is simple: Big menu items and Big boxes. Anything beyond this gets cluttered up because of its size restrictions.
  • It is really awesome at what it does: Play media. It sucks at almost everything else.
Now, if you look at the trends that are happening (for TV space):
  • Facebook / Email  / Twitter / Browser on TV
  • Big fancy keyboards connected to TV
  • Reading news on TV
  • Searching for content on TV
  • Different apps on TV
All these are enabled by connecting the TV to the internet. TVs have become more smarter in the last 5  years than they have ever been, and everyone is itching to get on board with these new capabilities.

However, I think that loading TV with all these features is going to fail.

An ideal TV experience should be:
  • Use TV as a dumb device to play content from any source - brodcast, internet or somewhere in between.
  • Give it a minimal interface so its easy to play this content, like play / pause / next.
  • Use an additional device (Laptop, Phone, Tablet, etc) to control the programming.
This way, next time you want to watch Netflix or listen to Pandora, you can go (or open its app on your smartphone) and select 'Play on TV'. No dealing with confusing interfaces, no app crashes on the TV.

However, this is not happening due to a variety of reasons:
  • There are no 'standards' around this. I cannot build a TV that supports standard X, which will enable it to play content from different sources directly without writing native apps.
  • A TV without interface doesn't look 'sexy'. You can't show-off that it has 'no interface'. Except if you are apple :).
  • The TV will need a companion device which actually has the interface. It can be a tablet, laptop, phone or even the source / website itself.
Imagine if we had to have apps for every channel that we have subscribed to on your Cable or Dish network, all with a different UI. This is where Smart TV is going right now.

Apple is the only company that has done at-least *something* on these lines, via AirTunes and now AirPlay that is directly integrated in iOS. Its still a bit clunky to use, but definitely a step in the right direction.

In the end, the primary role of a TV is to play content, and trying to make them 'Smart' is like putting lipstick on a pig.

Hopefully we will see a TV that has no interface, can be fully controlled via my tablet, and can play just about anything from everywhere.

Tuesday, February 07, 2012

Smarter Email

I love Email.

It just works. It works because it is flexible, open, and anyone can use it. It works very well in heterogeneous environments as the email standard is well documented, accepted and implemented.

I have looked at a ton of 'solutions' that try to replace emails, but nothing really works as seamlessly as good-old email.

The goal of email is to enable communication and think that it can be improved. It will be stupid to completely replace this amazing means of communication, when it fundamentally works well. What needs to be done is to make it 'smarter'.

What's broken is not the ability of emails to enable communication, but that the forms of communication have now become more complicated whereas email is still at its original design built for person-to-person messaging. Because email worked for everything, everything piled onto it making it complicated.

What needs to happen is that a standard should be created on top of email, that can handle 'special' use cases which can then be implemented by clients in a cross-platform way.

A few examples of this are:
  • Messages from discussion groups can be similar to RSS feeds. They are usually read-only and rarely need to be responded to.
  • Special handlers to 'automatic' messages, like calendar invites, flight alerts, shipping confirmation, etc. They don't need to be shown like a 'message', just need to get to my mailbox so that I can access them if I need to.
  • Notification emails should show up as, well, notifications.
  • A good way to handle things like groupons, which, even though come in as email, aren't really messages. 
There is no one company that can 'fix' this, as any change to email needs to be standardized. However, small steps can definitely be taken to create email formats that are 'machine readable' by the client so they can be organized properly.

A first step in this direction is to have a major email provider (eg. gmail) to start supporting 'smart email' formats. This will make the services to send emails compatible with this format, which can then grow and expand to more and more services.

I would love to see some work done here, and see someone solve this problem.  May be its time for someone to start a new email company :)

Sunday, October 02, 2011

The Native-App economy and its future

Since the launch of iPhone, everyone has been trying to replicate the App Store model that Apple created. Every operator, OEM and even independent companies are trying to create their own app stores and native app platforms.

The app store/native app model is inherently a walled garden model. This is analogous to AOL in the early days of the internet. AOL was the first one to truly bring internet to the 'masses'. Internet was very young at the time, and was difficult to use. AOL, by controlling the ecosystem and adding restrictions so that everything works well within it, was able to drive adoption for the internet.

In 1999, DoCoMo launched iMode in Japan and did what AOL did - but to mobile devices. All of a sudden, people could open emails, look up stock prices, check the weather and even read magazines all from their phone. iMode was extremely popular and put Japan way ahead of the world in mobile use. Following DoCoMo, other Japanese operators also created their own 'private ecosystems' and achieved considerable success.

The common theme between all of them is that they created a very strong value proposition by productizing  new, difficult to use technology.

However, as time went on, these walled gardens became barriers and hampered innovation in the space.
The technology matured and people wanted 'more' out of it. They started to created services that ran independently, and the 'walls' started to crumble.

It also got difficult for publishers to time to build services and innovate on business models that weren't a part of this 'walled garden'. Slowly but surely, things started moving to the 'open internet' and even though the initial experience was not as good as the walled garden, both consumers and publishers embraced it.

I believe that the Native Apps fall under the same category. With the launch of iPhone, smartphones finally became powerful enough to be able to do things that 'common people' would want. However, because the technology was still developing, the only way to create a great experience was to go 'native' and build a proprietary app. Apple was able to use this to their advantage and create the app store.

With HTML5 developing at an amazing speed, more and more people will start to see the clear advantages of building on an open platform. Its a massive waste of effort having to write native apps on different mobile operating systems that run on hardware of pretty much the same capability.

There are already companies that have started to work in this space, allowing users to get the best of both worlds. The technology is still young, but extremely promising, and a couple of years down the line, the notion of 'you must build your app for 5 different platforms' will be a thing of the past, just like AOL. There will still be some native apps, like we have them on desktop/laptop but they will be extremely specialized.

App stores - as a way to discover 'apps' might always stay on but 'native' as a platform should start counting its days. Until then, its the age of the 'native app'.

Photo credit: 

Thursday, September 29, 2011

Want to know your users better? Run your own analytics!

(Originally posted on theicebreak blog.)

Theicebreak is all about understanding relationships. It makes sense then that we would want to ensure that we have a strong understanding of who we are in a relationship with - our user base.

To do so, we really focus on tracking every feature and functionality through cohort analysis, as championed by Fred Wilson, Dave McClure,  Eric Ries's lean startup movement and others.

There are now a couple of services that provide easy tools to do so for startups, including everyone's favorites...Mixpanel and KISSMetrics. We tried them all, but immediately hit some crucial limitations of these online platforms:
  1. We have multiple interfaces (web, mobile, api) and we would have to individually integrate with analytics on each one. A way to solve this is to integrate on the server side.
  2. We wanted to combine this data with other attributes, for example, break down a certain feature by male vs female users, or married vs engaged couples.
  3. We needed to be able to run custom queries and reports based on the data in a simple way.
  4. This data is private and very important for the company, and we would like to 'own' it.
  5. It should be inexpensive :)
Most of the analytics services (except the really expensive/complex ones) are typically focused on implementing the tracking in javascript or other front-end APIs. Some of them do support server side logging, but it is limited.

The only way we could meet the above requirements is to build our own system. Once we started to write it, it actually turned out to be quite easier than we originally thought, and also a lot more powerful.

The key requirements (besides solving the problems I described above) were:
  1. It should be quick to build and simple to use.
  2. It should be re-usable, and possible to run lots of complex analyses with ease.
  3. It shouldn't take any more effort to log different action types as the site grows.
We created a very simple 'events' table called event_log (we use mysql). This table basically had 5 fields:
Any action that a user takes, like answering an icebreaker, changing the password, posting a moment, updating stats, etc. gets an entry in this table. We also store the event_action_id that points to the actual action. This way we can dig deeper if needed. We focus on actual 'actions', not page views.

This is done via a simple api call to log an entry to this table after the user performs an action. This has been extremely powerful for us, and forms the basis of most of our decision making reports.

Because the table is simple but contains all the necessary fields, we can now run complex cohorts as well as simple reports just off of this table. There can be joins and other analyses that can be very easily executed without too much overhead. It also really simplifies the task of getting the same data on different types of actions, as it's all normalized in a clean, single table.

As an example, a basic cohort table can be easily generated by a query similar to:
week(u.time_created) AS cohort,
week(g.time_created) AS period,
count(*) FROM event_log g
JOIN user u ON u.uid=g.uid
u.time_created > '2011-01-01' AND
g.event_type = 1
GROUP BY cohort, period
ORDER BY cohort, period
A quick post-processing of the results and you can generate some very useful charts out of it; below is an example simulation of how retention would look for a typical website for a few weeks following a launch-spike.

Adding a simple dropdown for the event type, and you can get the same chart broken down by events. You can also very easily add other filters by doing joins with other tables and get real insights on who your users are.

For example, we can run reports like:
  • What's the usage of the icebreaker feature among married males?
  • What's the overall retention broken down by each relationship type (i.e. married, dating, etc)?
  • Do males add more stats or females, and how do these numbers change over time?

This is a good initial approach; it provides a lot more flexibility than other services, and will work effectively until you hit a few million users. Then you will start having 'scaling issues' (a good problem to have).

There are definitely some drawbacks to this approach, like:
  • The events table can grow really large. We only track the 'important' events, and for the unimportant ones, we track it at intervals (for example, we only log one visit per day). You can also vertically split the table to keep the size under control.
  • This is not connected to front-end analytics; doing so might complicate the system.
  • You have to write this from scratch. Even though it was relatively easy for us to write, it's still more effort than adding 3 lines of javascript code.
  • It can get slow... but it's not a user-facing feature, and we can cache the results. We also run this on a replica database, so it doesn't really affect the performance of our live service.

We use these cohort reports in conjunction with regular analytics (getclicky and Google analytics) for traditional page views, visitors, funnels, campaigns, and conversions. This has helped us understand a ton about how the site is being used, and what our users want and are doing.

Wednesday, July 27, 2011

Spotify, MOG, Rdio, Rhapsody for Bollywood Music

I now have at-least 6 different devices that are used to play music, so I think its high time to look seriously at streaming music services.

I tried Spotify, Rdio, MOG and Rhapsody. All of them seem to have good audio quality, and a pretty solid music catalog for western music. 

My requirements are simple:

Must have:
  • Good Bollywood music catalog
  • Share accounts, so that both me and my wife can listen to music at work
  • Android, iPhone, PC support
Nice to have:
  • Offline playback
  • Upload songs already owned by me

Bollywood CatalogYesYesLackingLacking
Shared AccountNoYesDidn't CheckDidn't Check
Android, iPhone, PCYesYesDidn't CheckDidn't Check

To test the bollywood catalog, I used following combination of  music:
Zindagi Na Milegi Dubara (2011)YesYesNoNo
Delhi Belly (2011)NoNoNoNo
Sangam (1964)YesYesYesYes
Purani jeans (Song)YesYesYesYes
Patiala house (2010)YesYesYesYes
Double Dhamaal (2011)YesYesNoNo

Based on my requirements, MOG is a clear winner. It has (almost) the full bollywood catalog. I also like some of its other features:
  • MOG Radio
  • Public playlists
  • No desktop download required 
  • Available on a wide variety of devices, like Sonos, Roku, etc.
Its UI is a bit strangely designed, but should fine once I get used to it :)

    Go MOGging :)