Showing posts with label Mobile. Show all posts
Showing posts with label Mobile. Show all posts

Friday, August 12, 2011

Mobile applications development, the bells & whistles !

Today mobile computing is a commodity, where usage have exceeded by far desktop computing ( the in my chair computing ! ).


This is why every developer should be aware about this new hype and how applications are assembled and delivered in this space, and this post is to the rescue !


We shall visit the possible approach's to do mobile development and how you can deliver your next mobile application in an easy manner.


When it comes to mobile applications development there are more than one way to skin a cat!. First and the straight forward approach is to use the native kit's provided by any one of the mobile platforms vendors, taken Apple iOS, Android, BB as an example where you join there developer ecosystem and then download the native SDK and start dancing :-)
  
The only thing that I need to highlight in this context is that with in the native SDK's there are two paradigms for doing the development, one for example uses what ever technology preferred by the mobile OS provider for example Objective-C by apple and JAVA by both Android / BB, the other embrace WEB technologies (HTML, CSS and Javascript) as a mean to deliver native application, take for example PALM and there WebOS BUT the important thing is that this will be within the context of the official SDK provided by the vendor (we shall explore in a moment other approach's to use web technologies).


Second approach is to utilize the web technologies (HTML, CSS and Javascript) and the HTML5 toolbox to deliver what we call "Mobile Web Apps" in a "No Appstore" fashion. In this manner the mobile OS provider will normally provide a set of implementations that comply to the regular web technologies (Java script to be precise) to expose and utilize the OS capabilities.


Third approach which is the "hyper'd approach", and this model is normally packed by third parities and ISV (independent software vendors) where frameworks are built on top of the native SDK's of mobile OS's and presented to developers. This model add's the power to target multiple mobile OS's with a single shot since normally the framework provided in this manner are device / OS agnostic and most uses web Technologies (HTML, CSS and Javascript) as an interface to developers.


The frameworks will be normally have a small shell client that interact with the Phone OS to expose device capabilities (via Javascript normally), and a web rendering framework (normally WebKit) will be used as the engine to for rendering the presentation and the processing logic.


The most promising thing about the third approch is, that currently as we are speaking now you can build your application without even downloading an SDK to your machine!


Yes, this is all delivered using cloud based software as service (SaaS) model, where you supply the normal web code (and for some you use a web application in a drag'n'drop style to compose your mobile app) and all the building is done in the cloud and all you need is to download the result packaged application for different target devices!


There's is a Forth approach (Although it may be covered in last approach, partially), which is normally a managed services style where some ISV's provide you with ready made / standard feature set for Mobile applications to select from and a way to customize the look and feel of the applications and all you need is to use there CMS (content management solution) or provide RSS feeds to inject your applications data and that's it, and for some they will even take it to the next level where they publish the application to the regular marketplaces / appstores on your behalf!


To conclude, mobility today is not an option. Every one should think of mobile platforms as the new computers where work / jobs can be done on the go. Find the following Wikipedia link where you shall find all the needed SDK urls and there supported programming language preference Platform Development Environment's.


A good book on the subject if you need more on the different approach's and frameworks used for Mobile application development will be:  Pro Smartphone Cross-Platform Development: iPhone, Blackberry, Windows Mobile, and Android Development and Distribution


Thank you !



Wednesday, August 10, 2011

"There's An App For That" !

If you have never heard the title of this post before, than I may question if you have ever visited planet earth before :-)


"There's An App For That" is an Apple trademarked slogan which was used in a lot of there media campaigns and ads to promote there iPhone. Below is a video that shows one of there ads in this regard.



The thing is that I want to highlight in this manner two things, "App" and "Platform" ( take a side Apple marketing genies ).


Lets start with the definition of an App from my point of view, an App is : An interface that provides interaction and encapsulates a service or set of services which either "add a value", "solve a problem" or simply "entertain" the end user.


So an application is a means for an end, in this logic the same means can be provided via a WEB site, Mobile site, Kiosk or any other interface, sky is the limit !


The smartest / hardest part is always the service not the interface!


The other part that I think need to be highlighted is that all the Apps developed for the iPhone are a result of a well crafted "Platform".


So the definition of a Platform will be as follows : A software solution that provides "customization of it's interface","extensibility" and "exposes services and information in a mean of an API".


I also encourage you to check the following presentation from Yahoo! about designing your product as a platform.





The bottom line is that all the App's that are provided by Apple App Store are a result of two things:


  • A Platform that enabled all these creations and innovations to happen, which is the iPhone as platform
  • Services behind the apps that solve end user problems or add a value to them, which are innovations of developers or companies


    The same goes for Android and other mobile vendors and also goes for products like Chrome web browser, Kindle with its active content and OS like Microsoft, and the list goes on.

    The next time you design a solution or an App, take a while to think about the underlying services and if you can build it on top of an existing platform or even build your own platform.

    I will share in futre post's my experinace with a platform that I have designed which has the name vPlatform whcih stands for "value platform" and the joy / misery you will encounter when you do something like that, be prepared !

    Cheers !