Connecting Groups
Back to SiteGroups!

SpringSters - Mobile Savvy Bunch

The power of small

Layout Management in J2ME

One day Anuj (Our Product Boss :)) came to me with some layouts and asked to support all of the following layouts in J2ME application.

Layout
All these layouts are combinations of images and strings. Initially, I was worried about the implementation, but after going through the layouts couple of times, I thought Gridbag layout of swings would support all these combinations. I knew how Gridbag worked but didn’t know how I could arrange components in horizontal and vertical cells. The most challenging issue was J2ME’s memory limitations for both jar and jad. We can develop a full fledged Gridbag layout class just like swing but some issues could arise.

  • Potential big class size
  • We will have to keep minimum instances of components for heap issues, the best case being one instance per component.

So let’s start engineering with minimum requirement of arranging cells.

    Here is the list of items which we need to consider while adding components in layout:

  • Starting horizontal cell
  • Starting vertical cell
  • Number of horizontal cells required
  • Number of vertical cells required
  • Component

All these will go as parameters in the add method.
add(component, start_horizontal_cell, start_vert_cell, no_of_horizontal_cell, no_of_vert_cell)

To store these components, we can have an array of components or some custom defined array list.
Each cell will have some height and width say CellH =20 and CellW = 20.

Thats all.. we are ready to construct a layout class which will hold images and strings.
Say we have two UI classes for rendering a single image MyImage and a single string as label MyLabel.

Here is the code piece for our layout class. We are considering this layout class itself as a component which will make it easy for us to add it to a container.

/**
* A class which can hold any component, which can be rendered at any position
* in this component’s boundary depending upon its cell location.
* This is a Gridbag layout. To create a label of this type with any
* component,
* e.g to add MyLabel at cell position row 0, column 0 with
* 2 horizontal cells and 1 vertical cell,
*
* TestLabel label = new TestLabel();
* myCanvas.addComponent(label);
* MLabel strLabel = new MLabel(”First label”);
* label.add(strLabel, (byte)0, (byte)0, (byte)2, (byte)0);
*/
public class TestLayout extends Component{

private MyArrayList components; //user defined array list
public int cellW = 20;
public int cellH = 20;
public int noOfRowCells;
public int noOfColumnCells;
public boolean showGrid;

/**
* Creates a new instance of TestLabel
* @Param boolean tells whether this Label will should have
* canvas width or width that is neccesary to component
*/
public TestLabel() {
height = 20;
width = canvasW;
components = new MArrayList();
calculateDimensions();
isStatic = false;
}

/**
* this method renders component
* @param Graphics
**/
protected void renderComponent(Graphics g) {
int posX = compX;
int posY = compY;
int size = components.size();
g.setColor(MMasterColors.GREY);
if(showGrid){
for(int i = 0; i < noOfRowCells ; i ++){
g.drawLine(compX, posY, width, posY);
posY += cellH;
}
g.drawLine(compX, posY, width, posY);
for(int i = 0; i < noOfColumnCells ; i ++){
g.drawLine(posX, compY, posX, compY + height);
posX += cellW;
}
}
for(int i = 0; i < size ; i ++){
((MComponent)components.get(i)).renderComponent(g);
}
}

/**
* This method calculates dimensions
**/
protected void calculateDimensions() {
noOfColumnCells = width / cellW;
noOfRowCells = height / cellH;
}

/**
* A method to add component to AdvLabel
* @param MComponent component which is to be added
* @Param byte rowNo cell at row level
* @Param byte Columno cell at Column level
* @Param byte no of horizontal rows required
* @Param byte no of vertical rows required
* @param byte alignment
**/
public void addComponent(MComponent comp, byte rowNo, byte ColumnNo, byte noOfHoriCells, byte noOfVertCells){
components.add(comp);
if(height < ((ColumnNo + noOfVertCells) * cellH))// setting height if needed
height = (ColumnNo + noOfVertCells) * cellH;
calculateDimensions();
int tempX = 0;
int tempY = 0;
tempX = compX + ((rowNo * cellW) + (((noOfHoriCells * cellW) - comp.getComponentWidth()) / 2));
tempY = compY + (((((noOfVertCells * cellH) - comp.getComponentHeight())/ 2) + (ColumnNo * cellH)));
comp.setComponentXY(tempX, tempY);
}
}

public class Component{

public int componentX;
public int componentY;
protected int height;
protected int width = canvasW;

protected void renderComponent(Graphics g) {
}

protected void calculateDimensions() {
}

/**
*Mutator method to set x, y positions
*@param x X co-ordinate
*@param y Y co-ordinate
*/
public void setComponentXY(int x, int y) {
componentX = x;
componentY = y;
}

/**
*returns component height
*@return height
*/
public int getComponentHeight() {
return height;
}

public int getComponentWidth() {
return width;
}
}

Above code is at very primary level which will fulfill our requirement of arranging components in a grid. We can then add (if memory permits :-) ) advanced features like:

  • Providing key navigations
  • Maintaining and highlighting current component
  • Aligning components within the mentioned cells
  • Providing more ui specific things like borders, background colors etc.
  • and so on….

The changing face of mobile

Every year, hopefuls in the technology industry predict a revolution in mobile technologies and pronounce that the new year will be the year when mobile finally comes of age and takes the world by storm. Barring some interesting developments, that has not really happened yet. Mobile continues to be perplexing for most people to use for everything except basic calling and text messaging. Clearly, mobile has the potential to be more powerful than providing just two services.

Both these functions are little more than actions that consumers have been used to for years, and as a result, need little change in their behavior. Voice calls work quite the same as telephones that we have been using for at least a century now, and text messaging is quite akin to emails that people are reasonably well used to. Can other applications be built that require minimal changes to consumer behavior, or at least require a couple of simple clicks that one can get used to as quickly as making a voice call on the mobile?

That is the question that many in the industry are trying to answer today, and there are some important tectonic shifts in the mobile industry that are underway that are slated to change this landscape. Here are some of these shifts:

    1). For the first time, major software players are entering the erstwhile carrier-dominated mobile industry in a big way. Until now, perhaps only Microsoft was a pure software player with a mobile operating system. They have played in the enterprise mobility market with sophisticated business users and have faired well in that, but have not quite been able to bring it to the masses. No other player (either big enough or creative enough) brought a user interface design to mobile that was intuitive enough for mass users to adopt and for carriers to push.

    More than being a hype, Apple’s iPhone is a sign of changing times. Even if it doesn’t itself gain a prominent market share, it is changing how software for mobile is being looked at. The ripple affect it will have will finally bring some serious creativity and ease of use to many mobiles and devices. A simple feature like visual voice mail was something long time coming. The fact that no carrier could think of it is a tell-tale sign of the difference a software and user-interface-oriented company can bring to the table in this industry.

    It is still early days to take a call on Google’s Android but if Google is able to translate its simplistic user interface philosophy to the mobile world, that would be a second successful software player that we can talk about. For now, its premature and Google still has to prove itself in this new landscape.

    Nokia-backed Symbian is another player that has a powerful and stable platform that can give Apple a run for their money. Symbian interface again lacks the simplicity that a lay user needs and still consists of relatively complex browsing of folders and accessing applications through shortcuts etc. However, with some effort and creativity, they can get it right.

    2). The advent of widgets-based design in desktop as well as web will redefine the structure of mobile operating systems at some level. User acceptance of widgets is far more plausible than expecting users to run complex “applications” on their tiny devices. The difference is not merely in the vocabulary, but the whole way in which a service is presented to the user on mobile including automatic updates, hard versus soft updates and the intelligence being split between the client and server component of the widget. The concept of one-widget-one-function will be the driving force behind mass user acceptance, as users like simple, one-click icons on their devices that perform a well-defined and useful function for them.
    3). No product is complete without great packaging. For products like Coca Cola, packaging might be as obvious as using a bottle (instead of a box, let’s say!), but for software, packaging involves navigating the intricate web of standards, business models and partnerships. A lot of people associate the success of iPod with its looks and Apple’s marketing, but dig a little deeper and you cannot miss the profound impact of iTunes and iTunes Store (and the resulting deals with record labels) behind the success of iPod. They say that content is king on the web and there is no reason to believe otherwise for mobile. Google maps on the Apple iPhone is a great example of how a good partnership and packaging could work in the mobile world.

Google Maps is actually a great example of all of these three elements (great interface, widget-like architecture and good partnership) working together to deliver great content to users in great style. There are umpteen examples of each of the three elements successfully in play on the web, from Netflix to Amazon to blogs to Facebook. It’s only beginning in the mobile world and all the plumbing for a great user interface, packaging and content delivery are only beginning to be put in place. In a sense, it is still early days and the field is wide open.

Carriers are often accused of being “closed” to some applications that can hamper their revenue stream. However, if the above shifts do take place during 2008 and beyond, there is no reason for them to not wake up to the rising potential of mobile and the new revenue streams mobile software can offer them. The key still lies with the software vendors to provide useful applications in a manner that is easily understood and accessible by a lay user.

Dare I say then that 2008/2009 will be the year of the mobile?

J2ME platform Limitations and ways around these limitations

I am a J2ME fan but that doesn’t stop me from noticing some of the limitations of J2ME J.This post is about some of the ways/ideas I have found to overcome those limitations.

 

  1. In J2ME as we all know there is no API for sending an email. Such an API would have been of great use when we wanted to send an email through our J2ME application. But if you just have to send an email through a J2ME application you could pass the email subject and body as well as the senders and receivers name to a Java Servlet the Java Servlet will then collect all this information passed to it by the J2ME application and use Java Mail API to send the email to the desired recipient.
  2. There is no way to access the SMS inbox in J2ME this is because the J2ME midlet runs in a sandbox and has limitations on what all operations it can perform.The idea for overcoming this limitation is to have a native program (written in the native O.S.) which reads the SMS inbox and writes to a Local Socket the J2ME application can then read the data from the Local Socket. But this is not perfect solution because we will require different native programs for different devices.
  3. Every mobile device has an SMS port i.e. the port at which the mobile device receives the incoming Messages (SMS) for example Nokia devices receive SMS at port 0. Now for a Midlet to receive the incoming Messages(SMS) it has to listen at a specific port on the device. Now one can send Messages (SMS) to a device using J2ME (i.e. by using Wireless Messaging API) as well as the normal method (without using J2ME).The Messages send using normal method will be received by the receiving device on the SMS port. On the Other hand Message send using J2ME will carry port number and will be send to a specific port of the receiving device. So we require a midlet on the receiving device listening on that specific port to receive a SMS sent through J2ME.This puts forth an interesting question i.e. if we have a midlet listening on the SMS port of the device will it receive both type of message? (i.e. Normal messages as well as message send through J2ME.) I actually tried it out and found that this didn’t happen. I was unable to receive both types of messages on the device when my midlet was listening for messages on the SMS port of the device. So we can say that we can only receive the Messages sent through J2ME when we have a midlet listening for messages on the receiving device. As I said previously there is no way for accessing the SMS inbox in J2ME but what we can do is to have a midlet listening for SMS on a specific device i.e. get the Message before it actually goes to the inbox and we can have our own created inbox (J2ME application created) for storing the Messages received by the Midlet.
  4. We use platform Request method in J2ME for making a voice call. But the problem here is that we really don’t have any way to end a voice call programmatically. The facility such as ending a voice call programmatically would have been useful for situations such as giving a Miscall through J2ME.The problem with platform Request is that it is totally under the native Systems control so once we call the platform Request for making a voice call we have no way to stop this initiation of voice call programmatically. But now the Mobile Telephony API (MTA) (JSR - 253) is released which promises to have more control over voice call initiation and by using this API we can also end a call programmatically. But still no device yet supports or has the implementation for this API.
  5. Many times we would like our applications to provide Text to speech facility but there again because of the limited resources on the mobile device we may not get fast conversion of text to speech. By that I mean that there may be a some time lag between text to speech conversions of each word because of the limited processing power of the mobile device. The only idea I can think over here is to pass the entire text sentence to a servlet and J2SE also has some classes for text to speech conversion and get back the audio from the servlet and simply play the received audio in the midlet.By doing so we are assigning the much heavy operation of text to speech conversion to servlet which will run on some server and will definitely have more powerful resources than that of the mobile.

Watch out for more in the next post J


Memory Management on Mobile Platform

 

When I was a school kid, I never actually worried about the resources I was using or occupying. I always finished my pocket money before the month end. I was wasting a lot of resources and the reason for that I think was that I didn’t realize where the importance and also the source of resources! But after finishing my schools I never remained careless about my resources. I would attribute the change to learning C and C++ in my college. “Isn’t it funny?” JYes, the memory management in C and C++ encouraged me to handle my resources.

Then came mobile platforms in my life. The best platform to learn doing a lot of things with very less resources. Every chunk of memory you allocate, needs a reason to do so. Gives another dimension to your resources handling skills.

In last few years I have come across a few mobile technologies. Started with Symbian switched to Palm OS for some amount of time and then back to Symbian a little bit of Windows mobile here and there for a change of taste for few days. I came across different memory management techniques, ways to handle exceptions. And of course distinguishing features for every platform. For Palm its “Locking and unlocking of memory chunk”. This I could talk about in one of the later posts. This one is about my first love Symbian and the bunch of features that distinguish Symbian

Two of the Symbian features I like most are:

  1. Two phase construction
  2. Cleanup stack

Two phase construction:

How do you feel when you just start to construct something and it fails? Some things don’t happen as per the expectations, it’s failure on the planning side. Lets take an example: you start building your house and during construction you notice that the carpenter you booked for your furniture didn’t give you proper estimates for resources and your construction fails .. or at least gets delayed for few weeks or months. But in this scenario you can recover by finding another carpenter. But while programming what if the code in your constructor fails? Lets take an example -

class Person

{

char* name;

char* surname;

public:

// constructor and destructor

Person();

~Person();

}

Now let’s say we allocate these two member variables in a constructor as follows:

Person()

{

name = new char[100];

surname = new char[200];

}

Now the allocation for “name” goes well according to plan. And due to unavailability of a free 200 bytes the allocation for “surname” fails. Now what will happen to the “name” which is already allocated? Its orphaned and finally a memory leak in my application. The constructor of any class should not throw any exceptions ( Leave in Symbian ).

According to me, the best way to handle this situation would be a Two phase construction. It’s a method of creating an object in two phases. First phase would be a constructor and other is say “Construct” method. Let’s take above example class and add a two phase constructor to it.

Class Person

{

Person();

bool Construct()

public:

static Person* Create();

~Person()

}

Person* Person::Create()

{

Person* me = new Person();

if(Person == NULL)

{

return NULL;

}

if( me->Construct() == false)

{

delete me;

return NULL;

}

return me;

}

bool Person::Construct()

{

name = new char[100];

// check for allocation

if(name == NULL )

{

// allocation failed

return FALSE;

}

surname = new char[200];

if(surname == NULL )

{

// allocation failed

// delete previously allocated memory

delete name;

name = NULL;

return FALSE;

}

// everything is successful it means my object is properly allocated

return TRUE;

}

 

This technique of allocation of memory is very impressive for mobile platform because it handles the failure of object construction. I would love to see non wireless platform adopting similar techniques to ensure cleaner object construction.

Be back with the next post on “Cleanup Stack” soon, remember thats other feature I like the most in Symbian.

- Kiran

Find the core and focus on it…

In this multi-part blog, I am hoping to capture some thoughts I have had for a while regarding MangoSpring’s strategy. First some background:

Assertion #1: The Internet is a beautiful platform enabling unparalleled value creation everyday.

  • The Web is a frictionless environment enabling innovation and new business creation at breathtaking speed. There isn’t a day that goes by without some news-worthy innovation.
  • Every year there are 3-5 blockbuster innovations (MySpace, YouTube, Skype etc.)
  • There are 100s of other mid-size innovations and services around which very successful companies and services are built.
  • There are 100s of services that don’t make it and end up in dead pools. Yet thousands of others never even get talked about.

Bottom-line: The Internet is a vibrant and thriving medium for service and business creation. The amount of energy & innovation, both successful and un-successful, everyday is unparalleled to any other medium that has ever existed.

Assertion #2: Mobile is a terrible platform to innovate & create data application-based businesses in.

  • Minimal service innovations over the last 20 years.
  • Beyond voice, SMS is the only other wildly popular service. A quick look at where operator revenue comes from is enough to illustrate this point.
    1. WAP, Data services, games, personalization (ring-tones etc.)
  • New service discovery and associated behavior changes need to happen on a very constrained environment (small screen size, limited navigation, limited resources etc.) making it harder for the platform to lend itself to innovations.
    1. OEMs are good at creating hardware and hardware/design oriented innovations, but are not good at creating end to end network based services.
    2. It takes years to launch anything because of the long value chain and industry dynamics.
    3. By the time a need is identified and a solution is designed, developed, tested and deployed, it is easily 4 to 5 years later.
    4. Because of the time it takes to make a service available to millions of users worldwide, in a meaningful way, the cost to innovate is very high.
  • There is a lot of scope to build 10-20 million $ businesses in mobile because of the intricacies of the platform. To build a blockbuster, you have to start on the web.

Bottom-line: Don’t try to innovate a new data service in the mobile space first; your chances of success are small. Only a handful of mobile focused companies will be successful because of the amount of inherent friction.

Assertion #3: Mobile is a beautiful platform to establish a deep, always connected, relationship with your users

  • Unlike PC, Mobile is a very personal and a SPECIAL device.
  • 3 Billion+ mobile users worldwide as opposed to 1 Billion or so PC users.
  • Mobile gives users “freedom”.

Bottom-line: Although most value creation will happen on the Web/PC side first and then extended to mobile, mobile is super important to becoming an integral part of the user’s life and is a huge service differentiator.

As MangoSpring is aiming to create a god-send service that will become an integral part of millions of user’s world-wide, like Google Search, what better platform than the web? Having established that, MS now needs to figure out the areas it wants to innovate in and have a strategy that will ensure it is one of the top companies on the web.

At a high-level, MangoSpring product strategy is SIMPLE! - Relentless focus on its core.

This doesn’t mean that MS needs to do multiple separate products. Actually the exact contrary – to excel in its chosen space, MS needs to be focused on the “core” and features that strengthen the core. To be successful, MS will need to package these features along with the core in unique ways. You can easily find “small” companies like MS that do a lot of different things and advertise many different products. It is very easy to get swayed by the power of numbers - oh, wow, look they have 6 different products! However, spreading yourself too thin rarely works.

Building good products requires the dedication and focus of a sports team at an international level - you have to be at the top of your game. Just like you can’t have the same team play Cricket and Soccer for your country, you can’t have a successful company trying to do multiple products. A startup has to be a one-trick pony to succeed. From initial concept to requirements, wire-framing, prototype, product development, testing, maintenance, support, pricing and marketing - it takes a lot to have a successful product. Very few companies, if any, that I have seen succeed without relentless focus on its core.

MS is well aware that some other fine folks are building companies around what MS thinks are features of its flagship product. Are these entrepreneurs crazy? Are Venture Capital firms crazy to invest 10s of millions of $s in them? Of course not! However, this brings me back to my assertion #1 - a lot of innovation happens on the web everyday, but only a handful of them succeed. At a minimum, most of these companies are part of that innovation cycle.

In summary, MS product strategy should enable the company to package and deliver unique innovative services built around it’s core - better, faster and cheaper than anyone else!

Let us know (feedback@mangospring.com) what you think?

- Anup

You can’t beat the mobile operators (carriers)

Continuing on my previous blog on this topic of Mobile value chain and role operators play…I am now ready to take a side and am in the camp of folks who believe that Mobile operators will control this value chain for some time to come. This may change in future with technology (3rd generation WiMax etc..) but don’t see anything in the near future.

Everyone from Nokia to Yahoo to Microsoft to Google have tried to bypass wireless operators and gain traction in the mobile market but have had limited success, if any. I expect all OEMS as well as Microsoft/Google/Yahoo etc. to keep trying to get around the operators’ in future. However, the only model I see working is that of partnership and it’s just a matter of time before you will see these high profile partnerships (discussed in last blog) on the mobile side.

BlackBerry maybe is the only one that succeeded with this. But the BlackBerry business model may have peaked: It’s not normal to have a monopoly on push mail, because push mail is not rocket science… in my last company, where our team built mobile instant messaging service, pushing instant messages to the handset was norm.

Mobile operators control the relationship with the customers. That is, it’s the operators that send out the bills, sell (often at subsidized prices) phones in their stores , take the calls when something goes wrong and decide for the most part what goes on a phone and what is easily accessible from the top-level menus. This operator/customer relationship and operator control over the applications and accessibility of those application on the phone is crucial to success of any data service. I don’t see anyone in the Mobile value chain coming anywhere close to having these two distinct advantages that an operator has and that in my opinion will carry the day for the operators…be is US, Europe or Asia.

So, partner up! My personal experience partnering with some of the largest operators in the world has been very positive and in my opinion, unlike most other industries where partnerships just don’t work, operators are very adept at partnering and know how to partner. Good luck!!

MegaDeals - What’s in store for Mobile?

MySpace and Google announced a multi-year exclusive search agreement in September- 06. Wonder when deals like this will happen on the mobile side?. As it stands today, in comparison to the totally open Internet world, mobile data world is full of friction . To launch a decent data service requires the whole value chain, from OEM to operator to brand owners to service/application providers, to play nice with each other which more often then not is extremely challenging. It’s hard enough to make two companies to play nice with each other, leave alone three or four or five. This long value chain results in long development/deployment cycles and sub-par products. I for one firmly believe that one of the main reasons mobile data services, after six/seven years, still see single digit penetration (leave ring-tones etc.. out) is because of poor quality of products. This brings me to the original intention behind this post - how can the industry become more frictionless, while protecting business interests of involved parties?

Operators have made big investments in the network and rightfully want return on that investment. One of the immediate point folks bring up is operators are afraid of being dumb pipes just charging for access as at the end of the day network access is a commodity item which is bound to see downward pricing pressure, hence profit margin decline. Which leads to this theory that they must control access to all services thru’ their networks. Compare and contrast this to Internet world - Cable/DSL providers do not/cannot control what you have access to - friction #1.

Handset manufacturers spend billions of dollars in R&D, and manufacturing facilities, in an effort to bring continued innovations to the market place and are largely responsible for bringing the phone to where it is today. Sure enough they don’t want to be commodtized like the PC market (look at Dell, HP etc..). As hardware designs are easy to copy, the differentiation has to be done at the Software level which leads them to keep the “mass market” operating systems closed and allow developers/content providers to develop services within this tightly control sandbox called J2ME/BREW etc. in a “write for every device model” reality. As a content/service provider, you have no choice but either to work with the handset manufacturers or do the best you can within the confines of these limited platforms. Again, Dell’s of the world have very limited control/influence over what you can do as a developer. For it’s part MSFT is actually a very open system. All the tools that’s required to develop the killer applications - say IE, Microsoft Office, etc..etc.. can be done without ever talking to Microsoft - friction #2.

If the two points above were not enough wireless bodies/consortiums like GSMA etc. have done a decent job of standardizing the wireless aspect of the industry but standardization on the developer platform side leaves much to be desired for. Problem gets compounded because of proliferation/availability of different operating platforms. Providing an Internet (and or PC) based services and targeting just Windows OS and IE, gives the service provider 90+% market coverage as oppose to the largest handset manufacturer (Nokia) with it’s multiple platforms (150+ skews of phones every year) giving sub 30% market penetration world-wide. End result being higher development cost both in-terms of time to market and raw $s - friction #3.

I am sure there are bunch of others but I think these are the three major items (for sake of simplicity, assuming majority of mobile phone user’s want suitable data based services, just like the Internet, on their phones, which is a big assumption).

So, what do I think is on the cards in very near future. Don’t think operator control is going anywhere. I don’t think OEMs are going to open-up access to their proprietary, mass-market, OSes. So, not much change..huh?..Well..what I see happening is, one of my friend brought this back up today, is deals like above. Big content/service providers like Goggle, MSN, Yahoo, AOL etc. striking deeper, multi-year, multi-billion $ business arrangements with the bigger operators to give them unconditional access to the network (could call this a data MVNO but I am staying away from that terminology as in today’s world it essentially means a new operator) removing friction #1 for some % of the market

Same will happen (or already happening) on the handset manufacturer side..removing friction #2 for some additional (may not be additive) % of the market.

As technology evolves and Friction #1 (by working closely with the operator) and Friction #2 (by working closely with the OEM) start to become less of a pain, effect of friction #3 will diminish too as in case of Operators they, to some extent, can excersize their buying power over handset manufactures to force OEM co-operation and in case of OEM, they own their proprietary systems enabling deep integration.

So, watch out for big AOL/Google like deals to happen in the wireless arena in the near term. I think Google and/or MSN will take the lead here. Expect advertising to be big part of any such deal and that, my friend, will be the inflection point where business model for data services on mobile start to resemble more like what they are on the Internet creating an opening for new era for mobile data applications for the mass market users. Operators will recoup their investments by a cut of ad-revenue just as publishers of AdSense like advertising programs do (too bad for Comcast/DSL providers of the world..they don’t have an opportunity to rewrite history). Advertiser will derive more value from Mobile advertisting (think location the only reason it hasn’t taken off so far is because of the frictions I talked about before). I am sure some brave soul will even try the eMachine model (give away the computer for advertising)…

Another way this could go down is, service providers like Google/Yahoo/MSN etc.. refuse to play ball with the operators (or vice-versa) and use their internet presence to drive the operators to open up their networks. As we all know, for operators, new customer acqustion costs combined with customer support costs make the difference between a profitable customer and a non-profitable customer. In the world where customers can take their numbers to any operator - network coverage and value added services are truly the only service differentiators (another matter that we are too lazy to call and change service providers). So, question to ask is if an operator can afford to risk avg. ARPU of $55 - $60 per user, per month for something that makes approx. 10% ( 5% of which is SMS revenue) of their overall revenue? How could the big service providers put these at risk you ask? by utilizing their brand and internet power and educating the consumers that, say for example, google’s local search service, doesn’t work on a particular operator because that operator blocks that service. However, operator xyz doesn’t block the service and here is the way to switch to operator xyz (and in the process collect bounty offered by the operators for new customer acquisition) or call customer support at their operator to complain (which wipes out months worth of data revenue the current operator has from that subscriber in customer support costs). There will be a mobile data service that will drive the early adopters to take this drastic action because they want to use that service and we all know it doesn’t take much to get to a tipping point.

Well enough of theories..I am sure reality will take it’s own course but one thing is sure there will be a come to Jesus moment, in not too distant future, for the industry which will shake things up and remove/reduce the friction in brining services to mobile. Good luck to all..it sure is going to be exciting over the next few years to see how all this plays out. Irrespective of how this really plays out, all I want is a mobile world with less friction in creating super valuable data applications. Mobile world has so much potential for innovations and growth that it amazes me how long it has taken us to get this far. Good news is that, glass is half full now and I can see light at the end of the tunnel. Think, wouldn’t it be cool if you didn’t have to think about the medium you were using to access a service/information and were seamlessly able to go from one medium to another while keeping the context!

©2007 - 2008 MangoSpring. All Rights Reserved.