Stephen Smith's Blog

Musings on Machine Learning…

Frustrations in Developing Mobile Applications

with 14 comments


Recently I’ve been talking to many people about various techniques to develop portable mobile applications. In the good old days of the 90s with the Wintel monopoly usually you could just develop for Windows and you would reach 99% of the market. The main challenge was just adapting to new versions of Windows where you would get things like UAC thrown at you.

Now suddenly we are developing for various Windows devices, various Apple devices and various Android/Linux devices. Plus we have some other contenders like Blackberry clamoring for our attention. The market is now highly fragmented and all of these have considerable market share.

I develop business applications and the functionality I’m most interested in has to do with ERP and CRM workflows. This means I’m not writing games, although it would be fun to produce a game like “Angry Accountants” or “ERPville”.

I know I’ve blogged about mobile development a few times like here and here; but my thinking on this keeps changing and I’m still not happy with the whole situation. There are many mobile frameworks and I’m only touching on a couple of representative ones here. I’ve got to think there will be a better solution, but until then I feel like ranting.

mobile device frustration

Going Native

There is an appeal to going native. The native development environments are really excellent. I’ve been playing with Apple’s XCode development tools for OS/X and iOS development and they are really amazing. They’ve progressed a lot since I last saw them over 20 years ago when I worked for a company that did NeXTStep development for the NeXT cube. Similarly Visual Studio 2012 for Windows 8 development is really quite good and so are all the Android tools.

If I only needed to development for one of these, I would be happy with any one of them. But keeping several in my brain at once really hurts.

You get the best results for the given platform with any one of these, but you don’t really get anything reusable except the basic design. All the platforms use a different object oriented extension of C (namely Objective C, Java and C#). All the platforms have different operating system functions and different separations between what you do in the application versus have as a service.

C Reborn

One surprising thing I found from talking to people was that the idea of writing as much as you could in C. All the main platforms use extensions of C and all support compiling and running C code. This reminds me of the old days where you tried to write a portable application for Mac, Windows and Linux by isolating the operating system dependent parts and then writing as much code as possible in good old portable C. Funny how what was old can be new again. But then it was a good idea back then, why wouldn’t it be a good idea now?


Much maligned Adobe always seems to have a proprietary solution in the game. With Flash being booted from most platforms, Air seems to have followers in some areas. Some people really like Adobe development tools, I’ve always found them strange. Like with Flash, uses ActionScript which is a nice object oriented extension to JavaScript, but then that makes it all non-standard. Then strangely you have to structure Flash projects as a movie which I’ve never liked. Air seems to claim to follow standards but then keeps dragging in Flash technologies. My own bias is that if you go down this route, you may as well stick with using JavaScript which is then more standard and more cross platform.

The other problem with Adobe is that they are the leading vendor in producing software with giant security flaws. This means they are more likely to be blocked or dropped from platforms. It is also a big risk for app development since your app could be tarred by Adobe’s problems.


Xamarin takes the Mono project and ports it to mobile devices like iOS and Android. The goal then is that you can develop a C# Windows application that will also run on iOS and Android. We tried Mono as a way to move some .Net projects to Linux, but just ran into too many problems and had to give up. As a result Mono has left a bad taste in my mouth so I’m inclined to avoid this. I also wonder how much code you will have putting the .Net runtime on top of the native iOS or Android operating systems. Is this just going to have too many layers and is it just going to be too fat and bloated?

If they can pull it off with high quality and compatibility there is potential here, but I suspect, like Air, you will just get a big non-standard mess.


Ever since the first Netscape browser we’ve been promised that the web will standardize all programming. Then came a proliferation of web standards and incompatible browsers. Now things are coming back together in the web world. We have good standardization on HTML5, JavaScript and CSS. We have a number of browsers with good support for these and they run on pretty much all PCs, laptops, tablets and phones. So you would think you can just develop once as a web application and run happily everywhere.

Unfortunately all the vendors have a vested interest in their app stores (like iTunes). Vendors like Apple, Google and Microsoft make 30% off all software sold through their stores. They make nothing on people running web applications from browsers. As a consequence quite a few native platform functionalities are held back deliberately from the web. Then they market hard that for the best experience you must use a native app form their store or you are getting a second rate experience. Strangely the reverse is often the case where the app is just providing a subset of some web site and you lose abilities like being able to zoom.

In the current market/environment it’s very hard to compete against native apps with web apps which is really too bad. I think at some point the app store monopoly will fall apart, but that is today’s reality.


Phonegap is an open source library to try to bridge the gap between HTML/JavaScript apps and native apps. It adds a hardware API for JavaScript apps and allows them to be packaged for distribution via app stores. Phonegap was recently purchased by Adobe which really worried me. So far Adobe hasn’t done anything bad (that I’ve seen) and hopefully it will survive as a good open source solutions.

The main risks with Phonegap is that it usually lags the native apps in adoption of new operating system features, Apple may at some point start rejecting apps made with Phonegap and Adobe may start adding proprietary Flash like technology.

Beside these drawbacks the other problem is that your app is still made out of Browser controls and not the UI widgets that are part of the underlying operating system. You can style away a lot of differences but discerning users will be able to tell the difference.

Phonegap is a great technology which does really help JavaScript/HTML apps be more native and is really worth considering if you go down this road.


I’m still frustrated. I’m not really happy with the quality of apps produced by the cross platform technologies and I don’t like developing the same thing multiple times using the native SDKs.

I also find it a bit monotonous to develop the same program over and over again for iOS, Android, Blackberry and Windows.

Written by smist08

February 23, 2013 at 11:34 pm

14 Responses

Subscribe to comments with RSS.

  1. Back to the tower of babel, eh? Is Windows 8 mobile easier to create apps for?

    Free Polazzo

    February 24, 2013 at 12:35 am

    • Native apps in Windows 8 are pretty easy. For phone development you have to use C#/XAML. They also have a JavaScript framework but unfortunately it only works on tablets. Charles Petzold has a book on it, he wrote the original good book on native windows development and now has revised it for Windows 8 metro applications.


      February 24, 2013 at 1:12 am

  2. I’ve just picked up Oxygene from RemObjects. It’s offers the ability to write .net apps, android and ios. Its based on Pascal but moved up the language to the current century. Delphi (Embarcadero) itself is releasing its ios offering shortly and will be releasing Android support shortly there after.

    Also – I think the Surface Pro will be a game changer – you’ve got true Windows 8 running on a tablet. Printing, networking and no need for developers to learn a new language/environment.


    February 24, 2013 at 2:52 am

    • Looks interesting, I’ll have to check it out.


      February 25, 2013 at 5:31 pm

      • Stephen,

        Django was kind enough to point me at your blog post and suggest i contact you. I’m Chief Architect here at RemObjects Software, so if you’re at all interested in Oxygene (or some of our other developer tools, which focus on the areas of multi-tier data access and remote services), please don’t hesitate to drop me a mail ( so we can talk and/or i can hook you up with a copy of our tools to play around with.


        marc hoffman (@dwarfland)

        February 26, 2013 at 4:57 pm

  3. […] Introduction. Recently I've been talking to many people about various techniques to develop portable mobile applications. In the good old days of the 90s with the Wintel monopoly usually you could just develop for Windows …  […]

    • Re: JavaScript/HTML5/CSS – yes the platform manufacturers hold back capabilities from this toolset but it mostly has to do with access to the hardware. If you don’t need direct access to the camera or accelerometer from your ERP app, then I think this is a very viable way to go.

      Plus, distribution is as easy as putting up a webpage.

      Don Barthel

      February 26, 2013 at 3:44 am

  4. Hi Stephen,

    Have you seen this slide deck,, by Martin Fowler?
    I saw him present this deck in the fall and found it quite informative. At the end he points the read to Calatrava,, the framework ThoughtWorks created and released for use.
    You should check it out.

    Robert Fayle

    February 28, 2013 at 6:43 pm

    • Thanks, that’s a good presentation. I’ll check out calatrava.


      March 1, 2013 at 12:55 am

  5. Its a real shame that the author doesn’t have a grasp of what’s being reviewed. the product offered by Xamarin is first class, not only because you build “native” apps (unlike Air) but the ability to share 90% of the code base provides a real advantage. Also the use of C# native functions like LINQ, which other languages are copying really makes it a strong product.

    I feel frustrated seeing comments about how Xamarin is like Air or any else. Creating apps in HTML5 just plan sucks for the user experience, don’t anyone tell me that the lack of speed (yes due to the JavaScript engine in the browser) isn’t great and the transitions just don’t feel right (JQuery I’m talking about).

    Stephen, maybe you wouldn’t be so frustrated if you sat down and really focused on understanding the product your reviewing instead of just reading the glossary front page and making assumptions.


    March 4, 2013 at 1:30 pm

  6. Have you looked at Telerik’s Icenium / KendoUI – they just added Windows 8 support so it now has support for all 4 major platforms (IOS, Android, BB, Win8).


    March 20, 2013 at 3:42 pm

  7. The only way to go with mobile is web-based app, that’s the word on the street. Something that very few or actual no one talks about is Windows CE. Yes Windows CE is out there and is a multi billion dollar industry, where? – Handheld device, with build in scanners, Honeywell, Motorola, LXE and and and, they get used in warehouses, inventory stores and manufacturing plants. Why use them, for the IP rating, cold stores, waterproof, dust proof, drop 5m proof, they can scan up to 5m, they have a nice pistol grip ect.

    Windows CE cant run Java, well kind off, I cant get a combobox to render the way it should, then you have Windows CE 5, 6 and each one renders the web pages differently, the latest one windows Mobile XP I think, does something funny with your page display and you have to zoom to get the display to render.

    Just a comment, anyone else do Windows CE development, your alternative is to use Visual Studio 2008 and create a Native app, works OK but theres no simulator out there and to really see what your result is you have to hook it to a device.

    Motorola launched an android device and I’m hoping that all vendors will catch on.

    Francois Taljaard

    June 1, 2013 at 7:39 am

    • Seems like most of the market is iOS or Android. It actually seems like more and more people are going native, that people seem to browse for apps rather than browsing for web pages. Seeing more and more articles like this one –


      June 3, 2013 at 7:03 pm

      • Most “apps” seem to be very single minded and not very “option” oriented. it is literally “what you see is what you get”. So those developers of personal apps have much fewer issues to deal with when designing or programming. Besides, they are selling to a huge market… in the 100,000,000 users or so who are demand that one tiny problem be solved for them. We, on the other had, are solving lots of problems at the same time, including the problem of people working together having to compromise on what they “want” so they can get what they “need”. From your linked artlcle, (written by a Google programmer)

        “Native versus web” is a non-question: Most services need native apps and a web presence. The real question (beyond which comes first) is how do you build those native apps? “HTML5-native” (PhoneGap style) versus “pure native.” If you have a unique service, e.g. a specialized enterprise app, HTML5 could be ideal, a convenient way to build quickly and portable. But if you want your user experience to really excel, native is still king – for now.”

        If you focus on the next to last sentence, the aretilce you suggested says “If you have a unique service, e.g. a specailized enerprise app, HTML5 could be ideal…” So the question for you Steve, is can you say that Sage Accpac (or any Sage product) is truly a “specialized enterprise app”? Are Sage products something you could build an app for? Or are they too complex?

        Free Polazzo

        June 3, 2013 at 7:21 pm

Leave a Reply to Frustrations in Developing Mobile Applications | Stephen Smith's Blog | Application Development | Cancel reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: