24
Nov

Enterprise software is now going mobile. More and more work, which needed your presence in office/home, can be done on-the-go. With introduction of addictive UIs on smart phones, the market for Mobile based Software has grown into a new niche.

Smart phone applications can be categorized in to Native Applications and Web Applications. Native apps are downloaded on the device may or may not require internet connectivity. Most of the games and utilities like calculator, unit-converter fall in this category. Web Apps are applications that run on the device’s inbuilt browser. It does not need downloading, but requires continuous internet connectivity in most cases.

Both types of applications on Mobile can be developed by following these interdependent life cycle stages:

1. Design: A typical smart phone dimensions of 320×480 gives a very limited real estate to stuff-in the amazing functionalities they can support. Designers really need to master the art of small.

Native

The design needs to be in alignment with various UI standards and can closely follow Human Interface Guidelines(HIG) from Apple. Though they have defined it for iPhone, many of them in my opinion are pure common sense. Hence, HIG is applicable for all devices, specifically for the Native apps. The smart-phone vendors (RIM, Apple etc.) have gone a long way in providing standard and useful applications to their users via their own app-stores.

Web Based

In web based application development, for multiple devices for e.g. for iPhone and Blackberry Bold, design issues need to be taken care at the CSS level. For lower versions of Blackberry though UI has to be generated by a different code set.

2. Server side: APIs not only cater to web based mobile applications, native applications too need to shift the data intensive computation to server side. So there is not much difference between the server side programming for Web and Native apps. Bringing website functionality to mobile is not mere reuse of APIs. It involves optimization of existing APIs for performance. It may also involve revisiting the code for adding device specific checks, abstraction and exception handling etc.

3. Client side: iPhone, Blackberry, Android, Windows Mobile, Symbian have their own SDKs for development of Native Apps. While iPhone requires experience on Objective C and Mac OS, Blackberry and Android can be handled by Java developers while Windows mobile application can be created using Visual Studio 2008.

Native

Advanced hardware like inbuilt camera, accelerometers etc can also be harnessed for making the mobile application feature-rich – like Auto-orientation, motion based gaming etc. The inbuilt GPS and assisted GPS can be leveraged for creating location based services. Though a plethora of applications are already providing LBS, I find it to be a tip of the iceberg. Adding LBS can make a lot of applications information rich, for end users as well as for vendors, distributors and advertisers.

Web Based

Web based applications on almost all devices, sparing iPhone in some cases; do not need specified SDKs for development. The major issue for web based apps is handling the large number of device-browser combinations that a user may use. What works for IE on BB may not work for FF on the same device. To resolve the issue of developing and maintaining code for different devices XHTML-MP is gaining wide popularity among developers.

4. Testing: Other than functionality and UI related testing, Mobile app QA requires testing for performance and connectivity related issues.

Native

Mobile software requires to be tested in real (non-simulated) Wi-Fi, GPRS, 3G etc. with different service providers. Something that works on AT&T may be blocked by T-Mobile. Also, an internet savvy application may behave differently in different geographies. Based on expected usage, the application should be tested for all the geographies. One may take assistance from www.deviceanywhere.com.

Web Based

Web apps always need to be tested on variety of browsers (Mobile browsers) for rendering issues. iPhone supports Safari, while BB supports IE and Firefox and also has it’s own browser. Rigorous manual testing can reveal functionality glitches and alignment issues. Generally for all types of browsers, testing and debugging using Firebug and HTTP watch can be quite helpful.

One should plan the development of mobile applications with these distinct yet interdependent processes in mind. It should really help in developing a standard application in minimum time.

-Ujjwal Trivedi

17
Nov

Over the past decade the explosion of Social Networking sites like Facebook, MySpace and Twitter has drastically changed the way how people interact socially. Social sites are playing a key role in building social graphs, sharing information and fostering innovation. The spectrum of its usability has grown widely since its inception, from users just building profiles and making friends to businesses using it for branding & interacting with their consumers, recruitment firms to find potential employees, science communities for exchange of ideas, non-profits for spreading social good and by students & teachers as a communication tool.This growth in its usability is due the hundreds of millions of active users together spending billions of minutes everyday on these sites building profiles, making status updates, uploading photos and building social graphs making them information rich.

While these sites have built some of the best tools on the world wide web, the opening up of their product to developers via APIs in the past 3 years have spawned “developer ecosystems” that build applications over popular services like Twitter and Facebook that help a person do everything from network with travelers to play social online games. Given below is a brief of 3 Social Networking Developer Ecosystems that would help you to better understand your options.

1.    Facebook
Facebook launched the Facebook platform in May 2007 for application developers that provides a framework to develop applications that would render within facebook.com and interact with core Facebook features.  Simultaineously a markup language called the Facebook Markup Language(FBML) was also introduced that is used to give applications the Facebook “look and feel”  and hook into several Facebook integration points, including the profile, profile actions, Facebook canvas, News Feed and Mini-Feed.  Since then, tens of thousands of applications have been built on top of the Facebook platform. Later on, Facebook Query Language (FQL) was introduced that allows you to use a SQL-style interface to  query Facebook social data without using the API. While most platforms force developers to use iFrames if they want to embed javascript within the application, Facebook answered this question with the introduction of FBJS that allowed developers to manipulate markup on the fly, animation and AJAX making applications more dynamic. Today, Facebook has over 350,000+ applications that play a critical role in maximizing Facebook’s active user base. Being the most popular application on Facebook, “Farmville” currently has over 60 million monthly active users.

In late 2008, Facebook announced Facebook Connect that allows developers to let users login to their websites with their Facebook credentials. It even allows other Facebook features, like your friend list and friend invite features to be implemented on your website, which can in turn send data back to Facebook as News Feeds. With over 15K websites already utilizing Facebook Connect, it has now become a must have feature for every social website for 2 main reasons : (1) Users do not have to go through the process of registering on your website if they are a Facebook user, your website can directly pull info from the users Facebook profile and (2) Your web site gets tons of exposure on Facebook as the users actvities on your site get posted to his Facebook profile.

Facebook has even gone a step further in encouraging developers by introducing the fbFund where developers can submit their applications to qualify for investments to grow their venture.

2.    Twitter
Twitter is one of the best examples of an very Open API and has provided developers a opportunity to build a full-fledged business by using it. Within a short span of time this ecosystem has transformed into a mainstream phenomenon with the development of Twitter apps that do everything from managing your twitter profile to analyzing tweets for real world trends. The Twitter API is nothing but a simple service that provides RESTfull access to the Twitter database and activity streams. Twitter initially started of with the basic authentication by which developers send the users credentials in the header of the HTTP request. But this being insecure and difficult to track hence in early 2009 they integrated the OAuth pattern of integration into the REST API permitting users a seamless experience of login into a 3rd party website using their Twitter account.

Twitter lacks many features in its pursuit of for simplicity and this gives openings to developers to fill the holes. Currently around 80% of Twitter’s usage is via 3rd party apps. and the Twitter API has 10x the traffic of its website. Twitter does not have 300+ million active user but it has momentum, excitement and virility which can cause your application to go from zero to a million users in a matter of days or weeks. Twitter is fast growing and new features are getting added regularly, requiring your application to adapt to it at the same time. A major problem with the Twitter ecosystem is its stability, so you have to make sure that your application doesn’t break and throw heaps of code when the API is down.

3.    MySpace
MySpace first got into the platform party by teaming with Google and a number of other social networks against the Facebook platform and releasing OpenSocial in November 2007, which were a set of API’s that would make applications interoperable with any social network system that supports it. The patnership spearheaded an initiative to standardize and simplify the development of social applications. Later on in early 2008 MySpace  independently launched the MySpace Developer Platform(MDP) that supports the OpenSocial model to enhance the overall experience of users through the development of Social Applications.

MySpace has undertaken a recent expansion of their platform through the MySpaceID project. MySpaceID provides Developers the opportunity to access user identities within the context of third-party environments. The main components of the MySpace platform are pretty similar to that of Facebook, but since MySpace supports the OpenSocial model the same application can be ported to any other social network with just a few minor tweaks to the code. With just around 15k apps in the MySpace apps Gallery and just a few websites integrating with MySpaceID, the Facebook ecosytem emerges as the clear winner in this case.

No doubt that these 3 ecosystems are the best and most established but they aren’t the only ones. Networks like Bebo, Yahoo, Friendster and the recently launched Google Wave have opened up their set of API’s that would allow you to reach millions of users through your applications. All these platforms are fast-growing and frequently-changing for the good, so as a developer even though you have a lot of choice with the ecosystems, it is suggested that you pick one ecosystem that you are a big fan of and program for it as keeping pace with all the ecosystems would be a real challenging task.

- Royston Olivera

13
Nov

The process of learning continues forever. It’s a process that we undergo every day. When this process of learning gets engaging, innovative & informative, the outcome often serves as a springboard into the knowledge pool.

One such learning process, rather, program was Springboard conducted by Xoriant. The initiative that began to impart knowledge to individuals during testing times culminated in Springboard.

Springboard is conducted over a period of 6 weeks, the sessions being held on weekends for 7 hours each day. The session is divided into two parts, a decent break separating them. Different topics are covered in each part, but, if required, in depth teaching on important topics occupies the entire session. Topics covered range from Architecture, Implementation, QA, Software Engineering etc. to those that are quite nascent in the software industry and not actively covered by various educational/coaching institutes but important at the same time such as mobile application development.

The session is unique in its own right as the process of knowledge transfer from the faculty of professionals; to students who want to make a good head start in their careers is conducted in a manner very much differentiable from conventional teaching methods. Practical sessions are conducted as required to ensure a firsthand experience of the technical & programmatic skills needed to encourage & sustain a good thought process in software development. The student-tutor interaction is given special attention & that has helped the students make the most out of the learning process.

Bundled with effective teaching & good practical training is a short project at the end of it all; assigned to the students to put to use all that they have learnt whilst giving full freedom to their creative thinking. On completion; the project is assessed by a technical panel & important informative feedback is given to the students as a helping hand to fill the voids that are known as “room for improvement”. Feedback in the form of suggestions, etc is also sought from the students so this program evolves and becomes better with each session. Certificates are given out to the students on successful completion of the program.

Overall, the program is handled with utmost professionalism, without the thought of it being a social initiative acting as a launch pad for many young IT professionals.

– Anup D’souza