Top 10 Hybrid mobile application development technology considerations

What is hybrid mobile app development? You have a great potential business idea for Mobile applicati


What is hybrid mobile app development?

You have a great potential business idea for Mobile application and wondering what platform to start with? If you choose to develop native mobile app, you would end up developing many applications for different platforms costing you huge money and lot of time. Hybrid mobile app is a buzzword among mobile application development companies in India that is taking the center stage these days.

Technically speaking, Hybrid mobile app is a combination of native and web app. Hybrid app runs on the device and web technologies like HTML5, CSS and JavaScript are used to implement them. It runs inside a native container and leverage the device’s browser engine (but not the browser) to render the HTML and process the JavaScript locally. Hybrid app can be a good choice for your business idea as it helps you develop common app for multiple platforms.

There are many cross-platform mobile app development platforms available in the market like PhoneGap, Xamarin, Telerik AppBuilder and many more. We discuss here top ten technology considerations for hybrid mobile app development for your business idea.

1) PhoneGap

PhoneGap is an Open source technology to develop hybrid mobile applications using web technologies like HTML/CSS and JavaScript. PhoneGap is very popular hybrid mobile application tool among hybrid mobile application development companies in India. PhoneGap uses JavaScript to access device level APIs similar to native app.


  • Uses web technologies lie HTML5, CSS3 and JavaScript
  • Easily available source
  • This is write one time and run anywhere – Android, iOS, Windows, Firefox OS, BlackBerry etc.
  • Available in Google Pay Store for Android, integrated payments via App Store for iOS and in-app and more


  • Poor performance for graphic-intensive applications
  • Plugins are available however many are outdated or unsupported based on target platform.


2) Xamarin

Xamarin, newly Microsoft acquired technology, is used to build native mobile applications with cross platform compatibility. It uses portable C# code. All codes are written using C# that developer can do in Java, Swift or Objective-C unlike other platforms. Xamarin studio is user friend IDE for the app development.


  • Development is using C# so no need to learn near programming language
  • Xamarin studio is highly user friendly IDE
  • Code reusability is very high (almost 75%) across major mobile platforms like iOS, Windows, Android etc.
  • Android Emulator for quality testing.


  • Many open-source libraries for iOS, Android etc. have compatibility issues with Xamarin


 3) Onsen UI

This is an open source framework and technology to build hybrid mobile apps using native looking components. AngularJS can also be used to build the apps. It has good documentation that includes good examples and layouts for common features.



  • This works with predefined components
  • Faster development as it is based on predefined components
  • Good documentation with common features and examples


  • PhoneGap/Cordova builder not included, but supported
  • Currently does not support material Design
  • Onsen UI currently offers only an iOS theme

4) Appcelerator

Appcelerator is the technology used to build native apps using JavaScript technology. This is an enterprise based development platform allowing writing JavaScript with MVC framework.



  • Pre-built database connection for MS Azure, MongoDB, MS SQL and other database engines.
  • Consists of schema-less data store, ArrowDB, to deploy data models with zero setup efforts.
  • Allows rapid mobile app development
  • Quick prototype development with less time and effort for evaluation


  • Pre-built database connection for MS Azure, MongoDB, MS SQL and other database engines.
  • Consists of schema-less data store, ArrowDB, to deploy data models with zero setup efforts.
  • Allows rapid mobile app development
  • Quick prototype development with less time and effort for evaluation
  • Little buggy and laggy, though newere versions are more stable.
  • Poor support from developers community


5) Intel XDK

Intel XDK is another popular platform to develop native apps for mobile phones and tablets using HTML, CSS and JavaScript. Cordova platform is used to compile apps making them cross-platform compatible.



  • Developer can compile same solution for different platform.
  • HTML, CSS and JavaScript are used as technology for app development.


  • “Native code” component of a plugin is not supported by simulator
  • Device simulator’s emulation of the App Security API does not provide any real security


6) Nativescript

Nativescript is an open-source platform for making native cross-platform mobile applications. Nativescript gives mobile application development companies, every native APIs in JavaScript. It offers reusability of existing plugins from npm directly.



  • Embedded support for TypeScript and js 2.
  • Direct access to native APIs in place of development libraries access and then utilize native components.


  • Multi-threading is an issue in Nativescript.
  • Lack of in-depth examples and documentation on features and its usage.

7) Telerik AppBuilder

The Telerik Platform is popular cross-platform mobile application development tool and it also supports native apps developing for iOS, Android and Windows phones. Appbuilder  IDE supports Production of cross-platform and native applications both. AppBuilder also equipped with the Apache Cordova API.


  • Easy to develop cross-platform application.
  • It is compatible with .NET, JavaScript/HTML5, Java JSP and PHP technologies.
  • Easy to learn


  • It's not a free tool.
  • One can convert all steps to code, but can't revert them back.

8) Monocross

Monocross is an open source cross-platform for mobile application development. It is used to create applications for Android phones and tablets, Windows Phone and iPads and iPhones. It uses .NET C# and the Mono framework for developing cross-platform supported applications.


  • Need only C# and .NET compatibility for the application development and maintenance activities.
  • Provides access to full power of the native device APIs still using C#


  • Documentation and resource available for Monocross framework is harder for application development.

9) React Native

React native supports creation of proper native apps in place of hybrid ones that run in Webview. JavaScript and React are used as technology for mobile app development.  It also supports Android.



  • Native-like performance
  • Great community support


  • The development tools only work on OS X at the moment
  • Steep learning curve

10) Ionic

Ionic is a popular framework of mobile app development companies for Hybrid mobile apps.  One can use CSS to create native looking designs and best to pair with AngularJS. It also provides command-line interface that includes integrated emulators and a Cordova based app packager.


  • Command-line interface to use most of useful features.
  • Works with inbuilt component and Great Community


  • AngularJS expertise is required for complex features


There is no best framework or platform to develop hybrid or native apps. Each has its own advantages and challenges. Platform choice depends heavily on project requirements in hand. Mobile application development companies should consider requirements in hand with features available in platform to decide the platform for the app. One should also consider performance and security parameters to choose the best suitable option for your requirements.

MakeMyTrip and Goibibo Merger

India is seen as next big internet market owing to digital revolution, economic growth and potential

Software outsourcing companies india

India is seen as next big internet market owing to digital revolution, economic growth and potential market strength. MakeMyTrip and Goibibo join hands to become a market leader in travel industry of Indian online travel segment.  (IndiaTimes, 2016) views this as a potential move to grab Indian market and tighten its grip over the market that MakeMyTrip already enjoys 35% stake.

About MakeMyTrip

MakeMyTrip is a travel company operating through online booking portal – It was founded in 2000 by Deep Kalra. It is an Indian company with headquarter in Gurgaon, Haryana.

About Ibibo Group

Ibibo group is an online travel company founded by Ashish Kashyap in 2007. (Livemint, 2016) states that the company is a subsidiary of Nasper. Nasper has 91% stake and TenCent has 9% stake in the Ibibo Group. Company operates through following brands.

  • Goibibo - Hotels and Air ticketing portal
  • redBus – Bus booking website portal
  • Ryde
  • Rightstay

About Merger

  • Ibibo (currently owned by Nasper) will be merged into MakeMyTrip
  • Merger is through stock transaction
  • (Medianama, 2016), Nasper-TenCent combine will become largest shareholder in new entity with 40% stake
  • (Medianama, 2016), Chinese OTA Ctrip, will have around 10% stake in new entity
  • (IndiaTimes, 2016) estimates the merger through sources at about $1.8-$2.0 billion
  • Morgan Stanley – financial advisor of MakeMyTrip
  • Goldman Sachs – financial advisor of Ibibo Group
  • All brands of Ibibo group like Goibibo, redBus, Ryde and Rightstay would come under MakeMyTrip (new entity)



Business Share in Travel Industrysoftware outsourcing companies India

source : Medianame

                                     software outsourcing companies india


New organization structure

                                                                               Figure 2 New Organization Structure, Source: Livemint


  • Deep Kalra, Founder of MakeMyTrip – Group CEO and Executive Chairman, MakeMyTrip
  • Rajesh Magow, Co-founder of MakeMyTrip – CEO India, MakeMyTrip
  • Ashish Kashyap, Founder and CEO of ibibo Group – Co-founder and Presidnet of the organization (MakeMyTrip Executive team)


IndiaTimes. (2016, 10 19). EconomicTimes. Retrieved from EconomicTimes:

Livemint. (2016, 10 19). Livemint. Retrieved from Livemint:

Medianama. (2016, 10 19). Medianama. Retrieved from Medianama:

Managing culture issues in .NET programming, a challenge for programmer – Handling Number parsing

It is a challenging job for software companies and developers to deal with culture depe software companies india

It is a challenging job for software companies and developers to deal with culture dependent number parsing say, string to decimal or string to double etc. If these cases are not handled properly, it breaks the system anytime. ASP.NET software companies should aim at writing culture-safe and managed code that safe guards your applications from culture related issues.

What is number parsing?

All numeric types have two static parsing methods, TryParse and Parse, those are used to convert the string representation of a number into a numeric type.

Difference between TryParse and Parse is that TryParse method returns false whereas, the Parse method throws and exception if operation fails.

string numberStringRep = "35.88";

double number = double.Parse(numberStringRep);

Formatting conventions of a particular culture is always used by the Parse operation. If culture is not specified by passing a CultureInfo or NumberFromatInfo object, the culture associated with the current thread is used.

NumberFormat.NumberDecimalSeparator property is used to find the decimal separator string used by a culture.

// Returns: "."

new CultureInfo("en").NumberFormat.NumberDecimalSeparator;

// Returns: ","

new CultureInfo("es").NumberFormat.NumberDecimalSeparator;

// Returns: "."


// Returns: "<depends on the current culture>"


Why is it difficult to manage?

If number parsing from string to double is used in any application with multiple culture, developers in software companies should be cautious about the usage and probable issues associated.

An example, Cultures like German, French, Canadian, Spanish, etc., uses ‘,’ comma as a decimal separator whereas en-us uses ‘.’ dot as a decimal separator.

These are the cases when it becomes difficult to parse numbers from one culture to other.

Solution is to specify one rule for application like work with ‘.’ decimal separator or developer choice. One should also know the culture of the string being parsed from or decimal separator of that culture. Using this information, developer can easily manage them.

Common mistakes by programmers

Issue arises in number parsing when Culture gets change run time.

Let us understand this by an example. There is a potential bug in follwoing code, can you spot it?

Thread.CurrentThread.CurrentCulture = new CultureInfo("es");

string numberStringRep = "35.888";

double number = double.Parse(numberStringRep);

One must have realized that the parse call throws a FormatException. This is due to the current culture is Spanish and it uses “,” as the decimal separator whereas the string being parsed uses the “.” Dot as a decimal separator.

There are two ways to solve this problem:

  • Set the current culture to one with the correct number format for all Parse() calls.

    This option is tempting and developer should be very careful with this method as the current culture is used in other areas as well than just the parse methods. It can break other code.

    An example of this is the ToString() method, which also uses the current culture to determine its output:

    Thread.CurrentThread.CurrentCulture = new CultureInfo("en");

    35.88.ToString(); // Returns "35.88"

    Thread.CurrentThread.CurrentCulture = new CultureInfo("es");

    35.88.ToString(); // Returns "35,88"

  • Use overload that can be used to specify the culture to use for each Parse() call individually

    This option is safer unless developer is pretty sure to change the culture for all methods.

    string numberStringRep = "35,88";

    double number = double.Parse(numberStringRep, new CultureInfo("es"));

     Use following code snippet to identify the culture of number.

    double ResultVal;

    if (double.TryParse("75,89855",NumberStyles.Float, new CultureInfo("de-de"), out ResultVal))


    double number = double.Parse(ResultVal.ToString(),CultureInfo.InvariantCulture);

    } //Output: 75.89855

     If culture is not known to the developer and knows a specific decimal separator and still wants to convert decimal number, use following code snippet.

    // get a temporary culture (clone) to modify

    var resci = CultureInfo.InvariantCulture.Clone() as CultureInfo;

    resci.NumberFormat.NumberDecimalSeparator = ",";

    decimal number = decimal.Parse("1,2", resci);

    MessageBox.Show(number.ToString()); //Output: 1.2

    When developer passes a CultureInfo instance to parse method, an overload method is called that takes an IFormatprovider instance. The culture’s NumberFormat property is of type NumberFromatInfo which also implements IFormatProvider.

    This means that instead of supplying a culture, developer could also pass its NumberFormat property to the parse methods:

    string numberStringRep = "35.88";

    double number = double.Parse(numberStringRep, new CultureInfo("en").NumberFormat);

Managing culture issues in .NET programming, a challenge for programmer –String comparison

ASP.NET software companies or developers find it challenging to manage String operations like sortin

Software outsourcing companies in India


ASP.NET software companies or developers find it challenging to manage String operations like sorting, comparison etc. if it is culture dependent. Such issues are difficult to troubleshoot and it has potential to break the system.  

What is StringComparison?

The StringComparison is enumeration that is used to specify what string comparison should use among the options available.

  • Current culture or the invariant culture
  • Word or ordinal sort rules
  • Case-sensitive or case-insensitive

Developer passes the InvariantCulture object to a method that has aCultureInfo parameter, such as

  • Compare(string strnameA, string strnameB, bool ignoreCasetype, CultureInfo culture)

    This function compares two specified String objects, ignoring or honoring their case, and using culture-specific information to influence the comparison

    This returns an integer that indicates their relative position in the sort order.

    Below example shows how to use StringComparision.

    string stringname1 = "sister";

    string stringname2 = "Sister";

    // Cultural (linguistic) comparison.

    intStrresult=String.Compare(stringname1,stringname2,StringComparison.InvariantCultureIgnoreCase, System.Globalization.CultureInfo.InvariantCulture);
    //output: 0

  • Equals(string strA, string strB, CultureInfo culture)

    This function compares two specified String objects, using culture-specific information to influence the comparison.

    This returns a Boolean value true if both value are same else returns false.

    Below example shows how to use Stringcomparision for this.

    string stringname1 = "case";

    string stringname2 = "Case";

    bool result = String.Compare(stringname1, stringname2, System.Globalization.CultureInfo.InvariantCulture);
    //output: false
    //Output: true

Here, ‘InvariantCultureIgnoreCase’ is used to compare a string using culture-insensitive sort rule, the invariant culture, and ignoring the case of string being compared.

And ‘InvariantCulture’ used to compare strings using culture-sensitive sort rules and the invariant culture.

Why is it difficult to manage?

In normal cases, String comparison is not an issue. However the issue arises while using culturally sensitive routines in places. It is difficult to manage string comparison where multiple culture is used in one project.

 In Turkish culture, for most Latin alphabets, the letter i (Unicode 0069) is the lowercase version of I (Unicode 0049). The Turkish alphabet, however, has two versions of the letter I, one with a dot and one without.

English culture1 – i (u0069) <-> Turkish – i(u0130)

English culture1 – i (u0069) <-> English – I(u0049)

English culture1 – I (u0049) <-> Turkish – I(u0131)

Here is some code that demonstrates what this mean:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");

Console.WriteLine("Culture = {0}", Thread.CurrentThread.CurrentCulture.DisplayName);

Console.WriteLine("(file == FILE) = {0}", (string.Compare("file", "FILE", true) == 0));

Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");

Console.WriteLine("Culture = {0}",Thread.CurrentThread.CurrentCulture.DisplayName);

Console.WriteLine("(file == FILE) = {0}", (string.Compare("file", "FILE", true) == 0));


//Culture = English (United States)

//(file == FILE) = True

//Culture = Turkish (Turkey)

//(file == FILE) = False

Here, solution and recommendation is to use ‘InvariantCulture’ if developer knows the criteria of the application, whether it includes different cultures or not.

Common mistakes by programmers

  • The content of the code which relies on default culture values make no any sense to the code. It is difficult to know whether developer actually meant an ordinal comparison of two strings or whether a case sensitive difference as shown in below example.


    string strprotocol = “HTTP”;
    if(!String.Equals(strprotocol, “http”))
            throw new InvalidOperationException();

    Below solution makes it clear that comparison is invariant (if application is for multiple cultures) or current/ordinal(not for multiple culture) culture one and differences in case are ignored.

    string strprotocol = “HTTP”;
    if(!String.Equals(strprotocol, “http”, StringComparison.InvariantIgnoreCase))
              throw new InvalidOperationException();


If software development company or developer is writing an application to run on multiple locales, even if there is no globalization or localization logic in the software, software development companies or developers should be knowing about these issues to make sure that the code functions properly in all scenarios.

It is suggested to consider following points during StringComparison.

  • One should use an overload of the String.Equals method to test equality of two strings.
  • One should use the CompareTo and String.Compare methods to sort strings and not to check equality.
  • One should use any of the culture to compare strings.
  • OrdinalIgnoreCase and StringComparison.Ordinal use the binary values directly, and are best suited for matching. One can use one of these, when he is not sure about comparison settings.
  • One should not use culture-sensitive formatting to persist numeric data or symbolic data or date and time data in string form.
  • In most cases, one should use string operations based on InvariantCulture. Persisting linguistically meaningful but culturally agnostic data is an exception.


Managing culture issues in .NET programming, a headache for programmer – TimeZone Object

A time zone is a region on Earth with uniform standard time (UT) and have a legally defined borders

Software outsourcing companies India


A time zone is a region on Earth with uniform standard time (UT) and have a legally defined borders which coincide with the border of country or some subdivision for commercial, legal and social purposes. 15 longitudinal degrees, the time changes by one hour. Thus, there are 24 time zones in the world. Over the period, local governments of various countries have altered, accepted or rejected GMT (Greenwich Mean Time) as they saw fit per their country’s requirements.

Custom software that deals with varying time zone and date time calculations are prone to errors if software companies do not deal with TimeZone and DateTime properly with accuracy. Managing TimeZone and DateTime objects is challenging job for .NET developers in software companies.

What is TimeZone Object?

TimeZone object in .NET framework represents the current local time zone.

A time zone is a geographical region in which the same standard time is used. Programmer (Software Developer) can use the TimeZone class of .NET Framework to retrieve information about the current time zone and to convert local time to Coordinated Universal Time (UTC) or vice versa. Inheritance hierarchy is System.Object - > System.TimeZone.

Below is the syntax to get the local time zone and based on that the current Coordinated Universal Time (UTC) is retrieved.

TimeZone {localZone} = TimeZone.CurrentTimeZone;

DateTime {currentUTC} = localZone.ToUniversalTime( currentDate );

The format of the date and time string in time zone will be ISO-8601 as shown below.


Date: YYYY-MM-dd, Time:, Time zone: Z for UTC

There is lot of flexibility in the ISO-8601 format for example, we could have easily replaced the ‘Z’ at the end with a proper time zone offset like -0530 (India).

Why is it difficult to manage?

Many systems are dependent on keeping accurate time. The problem arises when time changes due to daylight savings like moving the clock forward or backwards. Software applications are so dumb that they don’t understand such human actions!

Common mistakes by programmers

Issue arises when Time zone gets changed

Let us understand this by an illustration. Assume that the customer’s main business is out of USA and their servers are hosted in France. The customer has their employees spread across multiple countries (ex: India, Indonesia, Japan and Canada).

Converting date and time string values back and forth between different cultures normally causes an issue in software applications and break them.

Solution: During implementation, when you are referring to an exact time, persist the time according to a unified standard that is not affected by daylight savings or any such actions. (GMT and UTC are equivalent with this regard, but it is preferred to use the term UTC. Notice that UTC is also known as Zulu or Z time.)

Architecture for the solution looks as shown in the below picture, showing what date time format is passed between different layers.

                               Software outsourcing companies India


Developers are advised to apply some basic rules between multiple layers.

  • Database: Everything that goes in and out is going to be UTC
  • Server: Everything that goes in and out is going to be UTC
  • The client (front-end) : Everything that goes in and out is going to be UTC

The time zone offsets are not always an integer number of hours (for example, Nepal uses UTC+05:45, Indian Standard Time is UTC+05:30).


TimeZone objects are challenging to manage and have potential to drive technical team crazy and insane. Proactive approach and following best practices can help programmers and software development companies to combat these challenges.

  • Timestamps are suggested to be stored in UTC
  • Date and time math should be performed using library
  • Standard time offset should be used