Wednesday, March 16, 2011

I don't like horns

First, I don't use it much myself.  I get irritated when others (over) use it.

The idea behind horn is - "Be Careful".  It is like a broadcast SOS message.  Why should others be careful, why don't you yourself be careful. To put it in other words, I think the ability to tell others to be careful gives us the luxury of NOT being careful. May be we should just ban horns and learn to drive without this ability. Hopefully once In-Car computers are running Android, we might get to see beyond line of sight and be better informed, or horns might get replaced by inter car communication systems, which one could hack and filter.


Wednesday, March 09, 2011

Twitter Business Model

How will twitter make money?

Two things they did are:

  • New website 
  • Promoted Tweets
Why promoted tweets? Yes for money, but more importantly, it is because they will show up on all applications that use twitter API.  Twitter apps don't run in twitter context, twitter runs in twitter app context.  Facebook on the other hand provides the context in which facebook apps run. The important implication is who owns the screen real estate. In case of facebook, it is facebook. In case of twitter it is twitter apps. Hence any mechanism of advertisements from twitter would have to be part of the "content" served by twitter API. But even this doesn't works if clients can filter content.  

So twitter started with making people remove twitter/tweet name from their app names and website names. They purchased few of the clients, did revenue sharing with some of the clients and then added promoted tweets.  All this and the new website are all towards an effort to own the screen real estate, because fundamentally that is what you need if you want to show advertisements.

Here are some ideas on how twitter can make money.
  • Speed  - How much time does it takes for a tweet sent to be displayed on the followers screen.  This could be immediate or could be delayed and it could be delayed so much that it never makes it to the intended person.  Some people would pay for speed in sending it out, some people would pay for speed in receiving it.  Some might pay for slowing it down.
  • Are all tweets equal ? And is chronological order the best way of reading tweets. If someone can save my time by filtering and sorting them for me, I could pay for that. It could be the most "active tweets"(replies) or most liked tweets (retweets) or it could be a person doing the filtering. Keep me connected but don't waste my time.  May be organizing them into tweetshots - collection of related tweets either on a topic or from a person or during a time interval. Out source this problem say via twitter proxy interface and let developers innovate inside the twitter platform, instead of outside. Another way to expose the same functionality could be virtual users. @politics could be a tweet channel that filters tweets related to politics. Basically instead of having hard link between produced and consumer, make it a soft link. 
  • Make twitter a market place.  Paid tweets. Subscribe to Seth Godin's tweets for $1 per month. May be some people would find it worth the price. Similarly twitter could have tweets as advertisements. So I as a subscriber can sell my attention for some money. Lets say I put my attention for tweet at 20 cents. Any one whom I am not following can send me a tweet by paying me 20 cents.  My attention is cheap, but CEO of a company might put it at $100. 
  • Twitter Analytics - Instead of specifying a single shortened URL in the tweet, auto generate different URL for each user.  This creates a way for twitter to monitor exactly who read it and when and what else they are reading.
  • Most broadcast mediums end up causing spam. Email, Groups, etc. Twitter is in a unique position where they control the medium and have power over the complete ecosystem. No one can tweet me until I follow them. Email sucks at this. Communication medium with a single point of control can solve the spam problem.
  • Many people use twitter to complain in public. The purpose of that complaint is not to bring down reputation of the company, but to make the company listen. Reputation management in social media is now almost a buzz word. Twitter can become the unified CRM for companies. #complaint >apple could be slowed down, giving company a chance to handle the complaint, before letting it  spread. People would love it if it makes it easy to communicate with the companies and companies would love it, if they somehow can manage the complaint instead of playing with its reputation.
  • Twitter for computers. Twitter is a communication medium for people. But the same technology could be used for structured messages (json?).  Twitter for Rentals (Need a place or want to rent a place) . Twitter for products (price changes/discounts). I guess the point is, instead of launching websites, providing API's or sending emails to other companies, some companies will benefit by just providing that information in public and let other companies consume it, in a standard way. So if you are recruiting, just tweet it to a recruiting topic with standard interface and let all recruiters in the world help you.  Or if you need a quote for 100 lenovo laptops with 4GB ram, just tweet it.  In short, global structured message pub sub, using standard twitter client.
I like the company, would love to see it making money.

Thursday, February 24, 2011

Percentage Vs Absolute

Some things have absolute costs and some have percentage costs.  Tax, Interest, Bribes, Bonus, Affiliate Programs, Retailer Margin, etc are some examples where we pay in percentages. Most other stuff works with absolutes.

Absolute seems to work best in the producer consumer scenario.

Percentages do best when the relationship is more of a partnership.

Sometimes I wonder if instead of paying money to each other, we could invest in each other, we would have had better shot at world peace, mutual respect and being human.

Friends,  is what we call the kind of people we invest in.

Wednesday, December 22, 2010

The 2G Debate

Government sold 2G licenses at very low prices causing huge losses. These licenses are valid for 20 years. Why 20 years? Why not give licenses per year? Why not per month? And why license?

How about government implementing a gateway which could allot spectrum dynamically with say few seconds of granularity, with rates that are based on congestion rates at any time of the day. Basically any telecom provider can get as much spectrum as he needs, programmatically, at granularity of few seconds within few milliseconds. It is not impossible to build such a system and with fraction of the cost at which the spectrum was sold and would give maximum flexibility to all operators so that they only pay for what they use and gives government maximum money because rates can be changed by government as and when appropriate.

This would be a great system to maximize government revenue and offers maximum flexibility to every operator. Chances are this will never be built. How will operators make money and how will politicians make money in that case.  See Non-Markets.

UPDATE: http://arstechnica.com/business/2012/09/fcc-to-make-spectrum-sharing-reality-whether-carriers-want-it-or-not/

Friday, November 12, 2010

Partition Tolerance & Calculated Consistency

This is the part about CAP theorem that I don't understand. A system which is not tolerant to partitions, can be made to be consistent and available as per CAP.  I don't understand the tolerant part...and its implications. Basically when I give up tolerance what have I exactly given up because the only two things system really needs is consistency and availability. Partitions cause lost of availability or consistency because of shared state.

Is it possible to be not tolerant and still be consistent and available? Or does being not tolerant inherently assume either not consistent or not available or both? A single node system doesn't have any problems with partitions, but when the single node goes down, it is not available.  Thus I believe it is not possible to have a available system without replication and under network partitions replicated systems will become inconsistent if they have to be available. An alternate way of defining CAP theorem would be to use replication, consistency and latency as the base constructs. A node never coming up has infinite latency, whereas partitions would have some upper bound on latency (by including human intervention).

Much of the discussion around CAP theorem has been based around the NoSQL dbs. These systems use the key-value data model. The main problem is that we always think of interactions as read or write operations. Whenever a write occurs it modifies the original value in arbitrary possible ways, making it hard to measure the cost of being inconsistent. Consider a system where we think of writes as changes. Further if these changes have the property that irrespective of in which order they are applied they will yield the same result. In such a case all we need is a reliable way of sending messages to nodes. The degree of inconsistency is directly related to the latency in delivering messages.

The second area where I believe we can reduce the impact of inconsistency is by moving the decision of choosing consistency or availability in the db nodes itself. Consider a system which stores objects with code instead of just data. A change is just an invocation of a method on the object that changes the object state. Now if this method is aware of the currently available nodes, it can choose to be inconsistent or available depending upon the impact of the change.  Example: Consider a shopping cart application that needs to decrease its inventory count by 1. Also assume that we have 10 replicas. Now when 10 concurrent clients want to buy the same item and somehow these operations end up happening concurrently on all the replicas, we have two extreme options. One to serialize them and second to let them happen in parallel and be inconsistent. Now consider that we have only 1 item, in that case running this in parallel will cause problems as we are selling stuff we don't have. Only one of the requests should succeed.  But if we had 1000 such items, the impact of inconsistency is not much. Each node will think the current item count is 1000, whereas it would have changed from 1000 to 990. Thus if we know the impact or magnitude of inconsistency, we can take a better call at runtime to decide if we should prefer availability or consistency.  For example in the case above, it is OK to be inconsistent if each node does 100 transactions without consulting with any other node. Depending upon number of nodes it is consistent with, this number can be refined as long as possible to give availability assuming other nodes will use the same strategy.