An Opportunity in Mobile Computing

An obvious and large opportunity exists in the mobile phone market. At present, developing mobile phone apps requires a development team to obtain specialized skills in either Java/Linux for Google’s Android or Objective C for Apple’s iOS.

A code generator that can output to both Java and Objective C, combined with an abstraction layer, would appear to be an obvious winner.

Clearly, this is a difficult problem to solve, but one that would none the less have huge market potential.

Update: July 16, 2010

OK, so I need to publish an update to this post. As soon as I clicked Submit I came across several companies that are going after this exact opportunity. So here they are:

Appcelerator’s Titanium: (Open Source, licensed under the Apache Public License v2)

PhoneGap: Source, licensed under MIT License)


RhoMobile: (Open Source, licensed under GPL v3)

I’m sure there are more, but this is what I’ve come across. Haven’t used any yet, so no feedback on which, if any, of these options are acceptable.

If you’d like more info check out Savio Rodrigues’ post on cross-platform mobile development using open source platforms:

The Fragmentation of Computer Usage

Back in the 90’s I worked on Sun Solaris servers. Back then, there was an upstart operating system named Linux. Linux lacked the stability of Solaris and more importantly it ran on commodity Intel hardware. This may not sound like a big deal, until you consider that Sun servers of the day often had multiple inbuilt redundancies. A Sun server was really a cluster of multiple servers where a failure in one board simply meant that another board took over. This redundancy applied to all aspects of the server which largely explained why Sun servers were known to run for years and years without a reboot. If a part failed, you simply opened the server (while it was running), changed the part and closed it back up. Contrast this with the Linux/Intel servers of the day where a simple issue, such as bad RAM, meant your server was down.

At the time, Sun argued that there was no way that a Linux/Intel server could possibly compete against a Sun server. To this day, this argument is true.

However, what Sun did not consider is a radical change in the overall architecture. Today, each Linux/Intel server is still susceptible to failure. The solution was to use multiple Linux/Intel servers in a cluster. Now, if any one server fails, you simply remove it (while the cluster is running) and replace it with a new server.

Today, tablets (such as the iPad) and mobile phones (such as the iPhone and the various Android phones) are far to weak to compete head on with desktops/laptops. And, there are pundits showing computing curves that project the point at which a tablet will be as powerful as a laptop.

Frequently we hear the same question, “Will a tablet be your next PC?” This line of thinking misses the point. These hand held will not overtake the PCs power, they will simply change the social architecture of how we use computers.

Today, a mobile phone consumes a portion of “email time”. Here, I define “email time” as the total time a person spends per day reading/writing emails. 10 years ago, 100% of email time was spent on the PC. Today, a portion of that time is spend on a mobile phone, and for those with tablets a portion of email time is spent on a tablet. Thus, the PCs share of email time has steadily reduced.

With the rise of social media, some applications such as Twitter are being designed for these smaller screen devices. In theses cases, the small screen becomes a key selling point, rather than a performance weakness.

Further computing fragmentation is happening with the rise of online applications. As an example, Google Docs is not a direct threat to Microsoft Office. The inherent weaknesses of online applications dictate that Google Docs will lack the rich feature set offered by Microsoft Office for years and years to come. However, what Google Docs does do is fragment office software usage. At times, sharing is more important than power. In these cases, usage becomes fragmented between high-powered desktop software and relatively weak online software. Again, the issue is not when online software will become as powerful as desktop software, the answer is likely never.

As new technologies arise, the important question is not when the new technology will become more powerful than the existing one, but rather will social and technical architectures change so as to minimize the need for the older technology.