Saturday, April 30, 2011

Interesting commentary on why Android is beating iOS on Phones, but not Tablets

I just saw this article on how Android is beating iOS on phone handsets, but still lagging behind on Tablets.  I think the problem is that no one, even Motorola has released what the public wants from an Android tablet. 

The author posits 5 theories on why that is:
  1. The iPad2 is just that good.  Even those with fanatical aversion to Apple products can't avoid it
  2. Users are waiting for a viable choice.  Right now the XOOM is the only (legitimate) Android tablet option.
  3. Apple's cornered the market on components, forcing competitors to charge more for similar capability.
  4. Would-be Android tablet owners are just slower to adopt the new technology.
  5. Android Tablet owners aren't competing with the iPad, but with Netbooks and Laptops.
Personally, I don't give much weight to the first and last options.  There's nothing magical about the iPad2.  The iTunes lock-in and flash lock-out turn me off from the iPad2.  I think that #4 is more of an effect than a cause.  That leaves the choice of a viable tablet at the right price.

I've been conditioned over the years to see Apple products as having inflated prices when compared to their PC counterparts.  After years of this, I expect that when Apple releases a tablet that costs $500, that someone else should be able to release an Android version with similar capabilities for half of that.  Unfortunately, we're not seeing that. 

The first batch of low-cost Android tablets had resistive touch screens and were only running Android 1.6 without an Android Market or upgrade options.  The Motorola XOOM, has the specs for the most part, but benchmarks place it below the iPad in terms of performance.  With no cost savings to be had, would you buy the iPad2 or a pale imitation?

I personally opted for a Nook Color reader when I heard that you could load a full version of Android on it.  I know it's not an iPad and it's not even officially an Android tablet, but it does what I want it to do.  For me, it replaced a Nokia n800.  I can email, browse the web, watch youtube videos, and with the CM7 mod on it, I have access to flash sites.  I have the full Android market.  I already pay for a data connection on my HTC Evo, so I didn't want a device that forced me into another data plan.  The screen size is just right for carrying around without being too cumbersome. 

So why do you think that Android tablets have failed to gain traction?

Friday, April 29, 2011

Mobile Development with Native SDKs

Mobile Web Applications work on a wide range of devices but lack the ability to access handset features.  Specialized tools like Google App Inventor provide access to those features, but have their own limitations.  Contrast this with native SDK development for mobile platforms.

Utilizing the SDK for iOS or Android gives you complete control over the application you build.  Unfortunately, that control comes at a cost.  At the risk of offending faithful loyalists to one platform or another, both iOS and Android are very similar in how they manage applications and make the most of the resources of the phone.  The devices using these operating systems are also comparable, providing common features like location data and cameras.  Despite this commonality, when you write an application with a native SDK, you tie the resulting output to a particular platform.

Setting up an iOS development environment involves getting XCode from Apple.  XCode 3 is a free download from  XCode4 is available for purchase from the App Store or is a free download for members of the iOS Developer Program.  You're likely going to want XCode4 since you won't be able to run your iPhone or iPad application on a physical device without paying the $99 annual fee for the iOS developer program.  All of this is restricted to a Apple hardware.  You're going to need a Mac of some type in order to build and test your app as well.  There is another option for building iOS apps in the cloud, but that's another post.....

Setting up an Android environment on the other hand can be done on Linux, Windows, and Mac platforms.  The Eclipse IDE is the development tool of choice and the Android Developer Toolkit plugs right into it.  The Android SDK rounds out the development environment.  Full instructions for various platforms can be found on the Android developers portal.

The Android SDK and Eclipse provide an environment where you can design, build, and test your application, using emulators that support various flavors of Android with varying screen sizes.

Native SDKs provide full access to platform capabilities, but the price of that access is that you need deeper knowledge of the platform that your developing on.  Each tool uses a different language and has a different API for access to the device features.

In the next post, I'll discuss how you can get the best of both worlds by using a Hybrid toolkit.

Using Google App Inventor to Create Android applications

Google App Inventor is a clever application that allows point-and-click creation of simple Android applications. Itself built using the Google App Engine, App Inventor is a web application that communicates with some local Java components to build and deploy to your connected phone or an emulator

In order to work with app inventor, you'll need to make sure you have Java running and download the the software for your platform (Linux, Mac, and Windows are all supported).  Once you start the software and connect to, you can create a project.  Within the design environment, you can place controls on a drawing surface and configure their basic properties.

The control available include the basic input and interaction controls you would expect, but in addition, there are controls for animation, and media playback as well as controls for sensor input.  One of the more interesting control types is the LEGO MINSTORMS group of controls.  These controls allow you to interact remotely with sensors and motors and open the door to some intriguing physical computing opportunities.

Opening the blocks editor, allows you to connect the components with logic by dragging and dropping blocks of logic and connecting them with corresponding snap-ins.

To test your application, you can connect your phone or start the emulator and click the connect to device button.

Google App Inventor is a clever bit of programming and opens up avenues for simple application development, but it does have it's limitations.  Currently, app inventor apps are restricted to a single screen and the connectivity to remote servers is limited to the TinyWebDB component.  The good news is that even with its limitations, the app inventor gives would-be developers a great deal of access to the capabilities of their Android devices.

Next Up: Using native SDKs

Mobile Development Approaches for iOS and Android

There are a number of different approaches when developing mobile applications, each having a unique set of strengths and weaknesses.
  • Mobile Web Applications
  • Specialized Tools
  • Native SDK Programming
  • Hybrid Toolkits
Mobile Web Applications are attractive because they support the widest array of devices and because many of us are already familiar with the web development model.  The transition to building HTML/CSS/AJAX applications that execute on a mobile device is relatively painless and in many cases developers can reuse existing content or back-end logic.  

Of course, the drawback to pure mobile web applications is that we lose access to all of those interesting sensors that the device has.

Web applications executing on a mobile device have a different set of constraints when compared with their desktop counterparts.  These constraints include, but aren't limited to, reduced bandwidth, smaller display, cramped input mechanisms, and cookie restrictions.  In order to avoid common pitfalls, developers would be wise to review the W3C guidelines for mobile web applications before going down this road.  While you're there, it makes sense to familiarize yourself with the HTML5 and CSS3 standards as well.  Standards-based web applications will be more portable across a range of devices.

Another useful piece of advice when developing a web application that will service mobile devices and desktop browsers is to develop the more restrictive UI first.  Performance gains made while optimizing for mobile devices may benefit your desktop users as well.  CSS3 has some nifty features for applications on different devices.  CSS media queries allow you to define styles that gracefully scale down on less powerful devices while providing a richer experience to more capable platforms.  An example of this would be to perhaps provide a text-only link for a smaller browser instead of a larger image button.  

When developing iPhone Web Applications, JQTouch, a jQuery plugin, can provide style and animations that give your application the appropriate look and feel.  JQTouch is MIT licensed, allowing you to freely distribute your proprietary application code as long as you include the license.

Why you should develop for Apple's iOS platform

Now that you know what the Android Platform has going for it, why should you develop iOS apps?  Creating apps for iOS isn't free, you'll need to pay a $99 annual fee to Apple to register as a developer and even then you have to have your application approved before it can be put in the App Store.  Yet even with this hurdle, the App Store has more apps than the Android Market.  That number was 4-1 in Apple's favor, and it's dropping a bit, but the App Store is where people buy apps.  This unified shopping experience allows you to publish your app to one place.  Contrast this with the fragmentation of competing markets for Android apps from Google, Amazon, and now Barnes and Noble.

iOS has another thing in its favor:  unified experience.  You know  the device that your application will be run on.  Questions about resolution and device capabilities can largely be ignored.  An Android application could be running on a Nook or on an HTC EVO, each with dramatically different capabilities.

Although Android has one set of numbers in their favor, Apple has another.  Andy Zaky reports in Fortune that:

Google will probably report about $6.5 billion in total revenue when it releases its first quarter results later this week. Apple's iPhone alone will very likely eclipse $11 billion for the March quarter. For 2011, Google is expected to report about $27 billion on the top line compared to the iPhone's expected $48.2 billion in revenue. The iPhone as a business is nearly twice the size of Google's entire operation. This is a financial reality rarely illuminated in these so-called "platform market share" articles where Apple investors are supposed to be "deathly afraid" of the Android operating system that doesn't even create a fraction of the revenue Apple generates from the iPhone.
With that kind of money involved, you'd be a fool to think that Apple's going away any time soon.

Next Up: Mobile Development Options

Why you should develop for the Android Platform

In my previous post, I discussed why you should be writing mobile applications today.  I also mentioned that the two major players are Android (Google) and iOS (Apple).  There are other contenders, but their representation is tiny in comparison.  So why should you develop for the Android platform?

The numbers say that you'll be reaching the broadest market if you develop Android applications.  With 50+% of the market, the Android OS has more eyeballs than Apple's iOS.  The numbers aren't the only thing going for Android.  The fact that it's free (free as in freedom and free as in free beer) goes a long way towards enamoring it to the developer community.  Anyone can download the Android SDK, developer tools, and Eclipse and start writing Android applications without having to pay anyone.  Those applications can run on physical devices without requiring licensing, permission, or voiding the warranty on your handset.

The fact that Android is free allows it to go places and in directions that weren't planned.  The port of Android 2.3 and 3.0 to the Barnes and Noble Nook reader shows that the developer community likes what it sees.

Next Up: Why you should develop for the iOS platform

Introduction to Mobile Development for Android and iOS

Mobile Development is a hot topic today.  There are a number of very good reasons for this.  First of all, mobile devices provide unique forms of input via sensors:  accelerometers, cameras, sound recording, and GPS location to name a few.  Secondly, the number of these devices is expanding rapidly.  Some analysts predict that mobile devices will exceed the number of desktops by as early as 2013.  The end result is that if you're not developing mobile applications, your competitors certainly are.

Those are the benefits, but there are pitfalls as well.  The mobile space is currently a battlefield and there will be winners and losers.  As each competitor attempts to outshine it's rivals, APIs will rise and be replaced quickly.  And finally, even if you were to choose a single OS to support, you have the possibility of internal fragmentation (iPhone3 vs iPhone4 vs iPad vs iPad2).  One writer goes so far as to say:

An AT&T “Android” phone is not an Android phone, but an AT&T one. A Samsung “Android” phone is not an Android phone but a Samsung one. If you get a Samsung phone from AT&T you get one thing, if you get the same phone from Verizon you get something else.

In the mobile space today, there are two major players Android (Google) and iOS (Apple) with Android leading at 51% and iPhone behind at 33%.  Based on a recent survey by Business Insider, the other contenders (Blackberry, Windows Mobile, WebOS) combined don't even add up to Apple's share.

So what platform do you choose and why?

Next: Why you should develop for the Android Platform