Tuesday, August 5, 2008

Getting into Mobile App Development?? …Good luck to you



I recently ventured into Mobile App development and found out one thing-Mobile App development is a real messy affair, unless of course if you are targeting a single deployment environment. There are too much of Platforms with varying length of influences across geographies. That creates a business problem. Think of a Mobile App that has to be catered for a wide range of consumers across geographies. Think of Maintainability and Standardization. Have a read through this blog. I’ll explain a bit about all the Major players in the Mobile market and give a small thought on how to counter this problem. Please let me know whether it makes sense

Time for some Gyaan. The start of 21st century has a seen a flourish in the mobile industry. There are some stunning numbers awaiting us about the mobile connection. Around 80% of the world's population has access to mobile phone coverage, as of 2006. This is expected to cross 90% by 2010. The pace at which it is growing, I don’t think you need to wait till 2010 to see those numbers. Another important number to note down, mobile devices vastly outnumber personal computers, telephones, televisions, and all other media and communications platforms. Now these points do give us a picture of the state the Mobile Industry is in. Mobile has become an unavoidable part of our lives almost like an extension of an individual. This holds true both as in a domestic consumer and an enterprise consumer.

But unlike the PC industry, where you have a 800 pound gorilla controlling almost 90% of the whole market (Read as Microsoft), there is no clear supremacy by any particular platform in mobile. Let’s have a look at the biggies in the Mobile platform market.

1)Symbian

Definitely not an 800 pound gorilla, but if any platform comes close to being one, this is it. With over 60% of market share (Thanks to its close association with Nokia) Symbian leads the pack. It had a wonderful run with its vastly successful S 40 series and currently shining out with its more polished latest release S–60. S-60 has helped Symbian to get a stronghold in the smart phone market which is being threatened by the new entrants. S-60 also features in non Nokia phones like Motorola and Samsung which has helped it in gaining more market in U.S (Nokia is the prima donna choice in the European and Asian market, not the same in US). Symbian has a very good developer base which is not an easy feat to achieve, and exactly the reason why Symbian will hold its lead for a good amount of time in the future.
Nokia recently brought Symbian for over $400 mn and what did they do after spending all that cash…They Open source it !!!!! Yeah you heard it right…They are going to give it away for free and make it as Symbian foundation. Looks dumb on first thought but the mobile market experts beg to differ. With Google coming out with its Open platform Android and “Daddy of all Open sources” Linux gaining more market share, it looks like a very smart move from Nokia.

You can find all about the Tools and SDK’s for Symbian in here.
And for more detailed read try this:

2)Windows Mobile

The original 800 pound Gorilla from the PC market have been trying use its muscle power to get into the Mobile OS market. To a good extent they managed to do well by having close to 13% of the overall smartphone market. But coming from Microsoft , you expect them to be at the top and that is the intend too. Major players like Sony Ericsson, Motorola , HTC etc are coming up with their latest smart phones like XPeria, Moto,HTC Touch Diamond and Pro etc (all of which are touted as iPhone Killers) are all based on Windows Mobile Platform. That shows the belief of these vendors in the capability of Windows Mobile Platform. When it comes to the developer base, nobody comes even close to what Microsoft has. With the provision given to code in a stripped down .NET environment and amazing Tool support in the form of Visual Studio ,Microsoft is here to stay in Mobile App development. Easy of synchronization with the PC also helps. The current version available is Windows Mobile 6.0. Windows Mobile 7 Codenamed "Photon” is a major upgrade planned for release in 2nd half of 2009. Not much else is known about the release, though leaked information suggests a revamped UI, multi-touch and motion-related features.
For more detailed read have a look at this:

3)RIM (Research In Motion)

You might not have heard about the Canadian wireless company RIM , But you definitely would have heard about their offering, Blackberry. RIM provides the OS that runs in Blackberry. Blackberry is a very familiar name in the Enterprise Community because of its ease of use in emailing, a feature that was unrivaled till now, until the phenomenon called iPhone came by. RIM is gunning to have a good run in the consumer market for the smartphone with Blackberry. They have done well so far. The competition is fierce in this segment. RIM usually develops its own softwares for its devices and you don’t see too much of third party developer support for RIM. This is OK as long they are planning to do well with the Enterprise customers, but to stay alive in the consumer market you need to build a good developer base.
For a brief overview have a look at this :

3)Linux

Embedded Linux has been ported to a variety of processors not suited for use as the processor of desktop or server computers.It is an alternative to the—usually proprietary—bespoke assembler or C software largely used in embedded development. Advantages compared to other embedded operating systems include: the source code can be modified and redistributed; relatively small footprint (a typical installation may require less than two megabytes of memory); no royalty or licensing costs; mature and stable; and a large support base. Embedded Linux systems combine the Linux kernel with a small set of free software utilities.
Motorola had in the past rolled out a lot of Smartphones using Embedded Linux and recently Open Moko is released into the market which is seen a gamechanger. Google Android also uses a Linux kernel at its heart. As said earlier being the “Daddy of all Open sources”, there is no shortage in the developer base and community support.
Try this :

4)iPhone

Apple shook the work with the release of iPhone. A touch phone was unthought of and even ridiculed by almost all other Phone makers. iPhone made them eat their words and they are scrambling around and trying to bring into market what popularly called as iPhone Killers. iPhone with its amazing touchscreen functionality and an even better browsing experience with an improved safari browser has really created a storm. The next version of iPhone was released last month and it managed to create the same frenzy that it created when it debuted. But in the version 2.0 what really made us to notice was its Software(apart from its 3G and push mail support). Few months before the iPhone 2.0 release Apple open sourced the iPhone SDK and came out with the concept of App Store where in individual developers can create applications for iPhone and host them in App store with a revenue share business model.
Coming from Apple, the iPhone app development is possible only with a Mac machine. Even though that reduces the scope for the SDK the number of applications that was hosted in App store are really encouraging. With plans to release the phone in over 72 countries, this one is really worth a watch.

You can get your iPhone SDK from here :
Also read this :

5)Palm

Palm with its Palm OS was a rage some time back. In fact there was a time when Palm was synonymous with Smart Phone. But their failure to provide a better platform in the recent times has eroded their market share and their developer base. PalmSource was acquired by Chinese Co. and there were plans to create a new platform for Palm on Linux kernel. Nothing has come of it yet. The way things are going for Palm, one could only see a sinking ship.

More on Palm OS:

7)Android

There is not even a single Hand Phone that is currently available in the market that uses the Android platform, Yet the whole world is downloading it , studying it and creating applications in it. The sole reason being, it’s an Open Mobile platform being developed by Google. But again it’s not just Google, its from the Open HandSet Alliance which is a business alliance made of Google, HTC, Intel, Motorola, Qualcomm, Samsung, LG, T-Mobile, Nvidia and Wind River Systems to develop open standards for mobile devices. Android platform is build over the Linux OS and comes with an SDK, Development and debugging tools and emulators. Google also conducted Android Developer Challenge, which is a competition for the most innovative application for Android. Google offered prizes totaling upto 10 million US dollars.

Get the Android SDK and source code from here :
Read this too:

There are some more platforms or App development suites in the market like BREW, FlashLite, but not worth getting covered (or you could call me lazy). One could say that the same holds true for a Mobile Web app development too, but in a different sense. You have an array of Mobile browsers which are tightly bound with one of the above Platforms. Like IE for windows Mobile, Jb5 for symbian, Safari for iPhone etc..and other independent browsers like Opera. Even firefox is coming out with a mobile version…Watch out opera. But lately almost all the browsers are capable enough to show the original web contents as such without the need of any special definitions.

Coming back to my original statement.Now that you have seen the wide range of Platforms that are available in the Mobile App development, you would also be knowing the head ache involved in it. A Mobile App that needs to be catered for a wide range of consumers across geographies will give you a maintainability Hell. And add to that the thought of having Standardization. In a PC world you know you have to create the App for a particular platform and even if it has to be ubiquitous, you need to support it for only 3 OS. This gives way to a business problem and also to a opportunity to create a solution and selling it. There is an idea on hold. Why can’t we have a Mobile Code Generator?? Think of creating a DSL which will translate into Platform specific code. There goes your maintainability problem , add to it the Standardization too. Ain’t that Brilliant (Or Crazy) ??? Either way…Do please give me you valuable feed backs

Wednesday, February 27, 2008

RIA Technology crown




The race for the crown for the RIA Technology reader has been on for a long time now.And so far there is no clear winner. But clearly there are distinct players that have emerged out of all that dust and smoke. AJAX and Flex. (I'm sure there will be a lot of people who argues the presence of Microsoft products in here..but I feel its a completely different war...which was correctly depicted in the picture http://mshiltonj.com/software_wars/current/current.png (But its kind of old..needs to be updated with more products and companies trying a dig at Microsoft :-) )

AJAX Vs FLEX

Well now this is tough..I have been reading a lot on these and geting my hands dirty with some of these too. AJAX as such is a huge Gang bang which is represented by a good number of independent Frameworks, JavaScript libraries and individual implementations. On the other hand you have Flex(I read it some where...The first child of Flash)from the heavy weight "Adobe" (who incidentally are the current owners of "Macromedia", who coined the term "Rich Internet application".). So lets do one thing..The old way..the best way..take it point by point

1)User Experience
Flex - Having Flash as its paternal hereditory helps. It has a lot more tool support, graphs and charts and being one of the pioneers in video streaming , takes the lead in there too.

AJAX - No doubt there are amazing applications(even at enterprise scale)that have been built using AJAX that will mesmerize you.(Take some of the Google apps as example)But nothing comes for free...there would be good amount of work by sheer talents and geniuses that has made it possible. And no AJAX frameworks/libraries helps you do this straightforward. Be ready to sweat it out to be there.

2) Developement (Ease of developement and Time taken ...which are actually propotional)
Flex - Flex has its own IDE...Flex builder (built over Eclipse) which has a design view with drag and drop features...But wait its not free..Be ready to shell out some dollars to get it.(There goes the point from Flex). And being run by Flash player you don't have to worry about Application looking like Empire State building in one browser and as Bombay Stock Exchange building in another.

AJAX - Some frameworks has IDE's (and yes most of them are paid one's and those which are not are not exactly that great). But again most AJAX programmers doesn't expect the help from an IDE...They tend to like it the hard way..the best way. But again writing same Javascripts and DHTML's that work in all browsers is more propable than Microsoft using Java for his next OS. There are some AJAX F/w's and JS libraries taht will help you overcome this...but you know its going to break somewhere.

3) Performance
Flex - If you don't consider the download of Flash player plugin for the browser(one time..and something that 92% of browsers in the world already seems to have installed...as per Adobe..)there still is a minimum download size of 128 kb for Flex apps. Adobe is going to intoduce caching a good portion of this on the clientside for the next version..which should straight away boost the initial download time. The apps are compressed and sent to the client and the painting is done by the Flash Player, which Adobe continuously optimizes for performance.

AJAX - No extra download in this case other than the actual application contents (I'm not too sure about this..there could be some F/w which has a initial dependency download). And the painting is something entirely dependent on the browser(On which you have no control on but something that seems to be getting better and better..Thanks to the sudden surge of Firefox, which literally made Microsoft come up with IE7). Also there are existing components like GZip which helps in compressing JS libraries.

4) Extensibility (Ease of Customization)
Flex - Well the Flex SDK has been open sourced (which was a success and something that prompted Adobe to come out with "Apollo" or should I call it "AIR" ??) which means you can customize whatever you want and come up with controls of your own. But again its not exactly a walk in the park.

AJAX - Well being HTML, XML and javascript, customization wouldn't be a problem(Again there could be some F/w's where something specific is written which means bye bye customization)

5) Security
Flex - Swf files are not exactly plain texts...so reading them at the client level is not an easy task. Also the Flash player seems to be having a lot of inbuilt security enhancement features.

AJAX - Being plain text it’s easier to read. Plug-in from Firefox like Firebug, although helps in debugging, also allows the complete manipulation of the HTML DOM. (I know a friend who has used firebug to rig a website by increasing the vote for an article..there by making it the best article)

6)Server Communication
Flex - Flex helps in communication via HTTP ,SOAP for webservices and Remoting using a concept called RemoteObjects which uses Flex Data Services. Connection through RemoteObjects tend to be fast and easily configurable, but then you will have to pay for Flex Data services

AJAX - Ajax uses the web browser’s underlying communication mechanism. Several F/w's support several protocolas and ways of communication, although it tends to vary in different F/w's. SOAP, JSON and even remoting is allowed(Eg; DWR, GWT).

We can go on adding more points like widget support, Industrial Standards, Developer Community etc. and taking the high's and low's of these two technologies. Arguments like dependency of Flash Player for Flex(which has a 92% adoption rate) gets nullified with the fact that AJAX applications will not work without javascript enabled in the browsers(which almost 96% of browsers have turned on...data courtsey w3schools). So each and every pros and cons even out somewhere. Infact majority of the articles that I have gone through (including the one's from Adobe) says that its always better to use both the technologies in tandem...you know something like get the best of both worlds. And they seem to coexist very peacefully. There are tools like Flex Ajax Bridge and Ajax Data Services which helps you in this. But in the end you need a leader..A market leader where you can Say RIA means this Technology. But for the foreseeable future nobody will be ready to put their money on any particular technology. But hey whats fun without some risk...So who's your money on?

Look Who is here …Semantic Web !!!



POTENTIAL ADVANTAGES OF SEMANTIC WEB FOR INTERNET COMMERCE

Yipee ki yay!!!! Now that’s a line (or should I say bellowing) that Bruce Willis says in the Movie Series Die Hard… What does that got to do with Semantic web…Nothing...It’s just that the whole lot of web developers must be saying something like this…Either out of sheer frustration or pure delight…

Why frustrated…Well you have barely made a horrendous shift from your traditional web developing methodologies to something called as RIA technologies and Frameworks and you are somehow getting used to all those terminologies associated with it ( Web 2.0 , AJAX, XUL, XAML, Silverlight, JS libraries…etc..God knows what else) and all of a sudden you are hearing about something called as Semantic Web, Web 3.0….Oh yes it is bound to be frustrating.

Now why delighted…Hey if you are somebody who is not kainotophobic (Don’t do a word search now…Its Fear of Change) you must be smacking your lips in anticipation...With a whole new door of opportunity opening up for you. Also the fact that Semantic web has got nothing to do with your Web 2.0, RIA or any of the existing presentation logics might be a good news. Right? Did that help J

If you are already familiar with Semantic Web and its associated terms (For E.g.: RDF, RDFS, SPARQL, OWL …It’s not the bird Owl by the way…Its Web Ontology Language… but why OWL not WOL…Hey don’t ask me…I didn’t create it) then read on…you are not going to learn anything new here J (Hey I’m kidding..Who knows I might have something up my sleeves). For those who have not yet heard about Semantic Web.

What is Semantic Web?

The Semantic Web is a mesh of information linked up in such a way as to be easily processable by machines, on a global scale. You can think of it as being an efficient way of representing data on the World Wide Web, or as a globally linked database.

By the Way this is a vision from our very own Tim Berners Lee to see Web as a universal medium for data, information, and knowledge exchange. Well given the fact that he is the father of World Wide Web itself means that…there is something about Semantic web (Yeah I know…I borrowed that from the movie title, There is something about Mary). Have a look at this …This is what Mr. Tim originally expressed his vision of Semantic web as

“ I have a dream for the Web [in which computers] become capable of analyzing all the data on the Web – the content, links, and transactions between people and computers. A ‘Semantic Web’, which should make this possible, has yet to emerge, but when it does, the day-to-day mechanisms of trade, bureaucracy and our daily lives will be handled by machines talking to machines. The ‘Intelligent agents’ people have touted for ages will finally materialize. ”

Ooohh…the last part is kind of scary right…machines talking to machines…Reminds you of some movies where machines take over the human control J

Instead of me blabbering about Semantic web...I think it will be better if you go through these links…They will tell you better

http://en.wikipedia.org/wiki/Semantic_web

http://infomesh.net/2001/swintro/

http://www.w3.org/2001/sw/

If you are somebody in hurry and wants to get a short description about Semantic web then go through this

http://dret.net/netdret/docs/wilde-einiras2005-semweb/

And a much simpler explanation at http://en.wikibooks.org/wiki/Semantic_web:why

Need more details?

There is not much of a commercial level development happening in this area. Most of the development is secluded to the ones at University labs and R&D centers. Tool support for the development is on the rise (in fact you will find the sites flooded with tools for semantic development), but none of them can be said to be mature. Many of the biggies like Adobe, HP are trying to get a hold on this market with their products. Go through some of these links to find out more about the tools for semantic web development

http://esw.w3.org/topic/SemanticWebTools

http://www.mkbergman.com/?p=291

http://www.hpl.hp.com/semweb/tools.htm

http://www.daml.org/2003/05/swmu-tools-tutorial/Overview.html

Here is a link which contains some details about how RDF is created and used.

http://www.w3.org/TR/photo-rdf/

Unfortunately, the Semantic Web is dissimilar in many ways from the World Wide Web, including that you can't just point people to a Web site for them to realize how it's working, and what it is. However, there have been a number of small scale Semantic Web applications written up. Of course, these are rather demonstration-oriented Semantic Web projects, but it does illustrate the feasibility of applications being easily built using Semantic Web toolkits. I have registered myself for many of these application and many of them has responded saying that, they are in Beta and not ready for commercial usage…yet.

http://www.readwriteweb.com/archives/10_semantic_apps_to_watch.php

If you want to know how semantic web is useful, potential advantages for Internet commerce, ROI etc. read this one

http://www.ida.liu.se/~yuxzh/doc/iceis-030120.pdf

Many people feel that semantic web done in a systematic manner will result in AI, something that has been in talks for a long time but never visualized or successfully attempted at. Let’s wait and see whether this stands up to its potential.