Node.js–A Great New Way to Build Web Apps

The past few years have seen Node.js explode on the application development scene like a superhero. Despite its humble beginnings with Yammer and Voxer, Node.js managed to establish its authority quite fast and is now seeing great mainstream adoption with giants like Walmart and PayPal putting their trust in it. Netflix too moved its website UI to Node.js from Java. Once the underdog, Node.js has established its credibility and superhero status within the enterprise and has an increasing number of developers adopting it to build fast and scalable web applications with this open source cross-platform runtime environment. Ever since its launch, Node.js has been seen as this cool and trendy server side platform that managed to attract the developer community. The great thing about Node.js is that it’s core functionality has been written in JavaScript making it a great choice for developing real-time applications. Apart from this, Node.js is packed with a host of other features that make it ideal for building web applications. So what makes Node.js so great?

  • Neutral Language
    Since Node.js supports JavaScript, the same language can be used in the front end as well as the backend thus breaking down front and back end development boundaries which make the development process more efficient. Considering that JavaScript is a language that is used by a majority of developers it saves them the trouble of translating code and helps in managing development time and cost. With the Node.js, framework developers do not need to translate the logic from their head on the server side framework and also do not have to translate the HTTP data from JSON (the data-interchange format) to the server side objects. Since Node.js is generally understood both by Java and .NET camps it makes it easier for the developers to deploy it on both Unix and Windows infrastructures.Node.js uses Google’s V8 engine on Chrome which is written in C++ and has an exceptional running speed as V8 has the capability to easily compile JavaScript into native machine code without any problem.
  • Scalability
    Node.js effectively solves the concurrency problems that plague developers unilaterally. The problem of concurrency in server-side programming languages often causes poor performance and impacts the throughput and scalability of an application. Developers get an event driven architecture with Node.js and non blocking I/O API which takes care of these issues. Node.js is also built to handle asynchronous I/O’s from the base up. This helps in managing many web development related problems.
    Node.js also splits a single process into multiple processes called workers by adopting the cluster module. This modules allows developers to create ‘child processes’ that can function under the ‘parent process’ and can communicate with the parent Node by sharing the server handles and by using IPC (Inter-process communication).Furthermore, applications in Node.js are easier to scale since the developers write simple code and Node.js simply takes over from there. Instead of using processes and threads, Node.js uses a simple Event Loop and defined call backs where the server automatically enters the loop when the callback definition ends for scaling efficiently. Simply put, Node.js helps applications execute common tasks like reading or writing to the filesystem, reading or writing to the network connections or to the database with ease and speed and makes applications capable of managing a large number of simultaneous connections with high throughput.
  • Built-in support
    Node.js has an inbuilt support for package management using the NPM, the Node Package Manager, a tool that comes as a default with Node.js installations. The NPM module is publicly available, has reusable components and is easily available through an online repository of over 300,000 packages with dependency and version management. This ecosystem encourages sharing and is open to all and gives developers more prospects to create effective solutions by giving them the opportunity to update, share and reuse code with ease.
  • Great for real-time web applications
    Developing real-time web applications such as chats and gaming apps in Node.js is extremely easy. Developers do not need to concern themselves with things such as low-level sockets and other such protocols. It allows the developers to write JavaScript on both the server and client side and facilitates automatic data synchronization by automatically sending data between the client and the server and ensures that data changes on the server are immediately reflected at the required points.Applications in Node.js are composed of small modules that are piped together which ensures that, unlike monolithic applications, these applications do not creak under unseen weight and stress. This also makes adding new functionalities to the application much easier as the changes do not need to be made deep inside the codebase.

    Along with all this, Node.js can also be used as a proxy server if the enterprise does not have the infrastructure for proxy. It also allows for actual data streaming and does not take HTTP requests and responses as isolated events and reduces processing time. Node.js applications are also capable of dealing with high loads. In 2013 Walmart put their entire traffic on Black Friday through Node.js and ensured that their servers did not exceed 1% of server utilization despite having 200, 000, 000 users online.

    Node.js has all the features that make it most appealing to the developer community and also renders it enterprise ready – it’s easy to scale, is secure and easy to learn. It also takes care of low latency issues that plague most tech companies because of the asynchronous input-output operations feature. Adding it all together, it is clear that with Node.js organizations can achieve more as it half the number of developers can be used to build products. It also reduces the number of required servers to service a client and increases app performance by reducing load times by almost 50%. Given the increasing industry confidence on Node.js, it is quite clear that its future is indeed bright.

Ruby On Rails vs. PHP

PHP and ROR are two very widely used and in-demand programming languages. Both of these languages are dynamic, are very flexible and fun, concept driven and easy to learn. This means that you spend less time learning the details and focus more on learning the programming concepts which eventually help the developer build applications faster. Both, ROR and PHP are open-source programming languages and have been around for quite some time to prove their stability. While PHP had not been too frequent with their upgrades, over the past two years they have had some major releases that have spiraled their popularity even more. Presently, PHP holds 20.1% of the market share while ROR stands at a close 18.91%. However, in 2016 ROR adoption is picking up greater speed when it jumped seven points from last year and secured its highest ranking every in the TIOBE index.

Here, we try to take a close look at both to determine which is to be used and when.

PHP
PHP is a generic Object Oriented Programming language that is simple to learn and easy to use. It has a very large community of developers and users and provides extensive database support. There are a great number of extensions and source codes available in PHP and can be deployed on almost all web servers and works on almost all operating systems and platforms. PHP also allows for the execution of code in a restricted environment, offers native session management and extension API’s. Deploying a CMS in a PHP application is phenomenally simple because of the sheer number of frameworks, libraries, and resources at its disposal.

Deploying a PHP application is also a very simple process. You can simply FTP the files to a web server or deploy it equally easily using Git without worrying too much about the web stack. The entire PHP framework directly can be easily copied onto the server and run when using frameworks like Code Igniter.

PHP also has a huge web focus and. While it is a server-side scripting language and can also be used as a general purpose programming language it essentially has a huge web focus and seems to be born for it. It has a high degree of extensibility which renders it easy for customization in the web app development process. PHP has also addressed previous issues like object-handling and improved the basic object-oriented programming functionality in their upgrades. The latest PHP 7 release boasts of explosive performance improvements, drastically reduced memory consumption and easier error handling amongst other features.

Since programmers could manipulate the code to suit their requirement, the evolution of PHP led to a lot of bad code. As the coding standards improved the code became more verbose making it suitable for enterprise usage. PHP is still the go-to language for building web applications and web development because of its ability to interact with different database languages but still remains unsuitable for desktop applications. PHP is also a great resource to create dynamic web pages and also to create internal scripting languages for projects. Some of the big names using PHP presently are Facebook, NASA, Zend, Google etc. Wikipedia says that PHP is installed on over 240 million websites and approximately 2.1 million web servers.

ROR
Ruby, the programming language that runs with ROR or just Rails, is heavily influenced by Perl, Eiffel, and Smalltalk. It is a full-stack web application framework which is object oriented, has a dynamic type system and automatic memory management. ROR is a mature framework that enables high-quality products that are can be maintained easily. It works on multiple platforms, offers a Very High-Level Language (VHLL), has advanced string and text manipulation techniques and can easily be embedded into Hypertext Markup Language (HTML). The ROR framework is extremely automated that allows the programmer to focus on solving the business problem that needs addressing instead of spending time working around the framework. The Generators/Scaffolding and plug-in assets accelerate the development process and make maintenance a lot easier as compared to PHP. The ActiveRecord ORM in ROR is extremely straightforward to use. Additionally, it has integrated testing tools and is Object-Oriented right from ground up with a concise and powerful coding structure. Rails also supports caching out of the box which makes it easy to scale, unlike popular belief.

However, unlike PHP, ROR has a comparatively steeper learning curve and is not quite easy to run it in Production mode. ROR is also more difficult when it comes to errors as in Ruby instead of throwing up an error message the entire app just blows up.

Having said this, while ROR might not be easy to learn, it has better security features, a flexible syntax debugger and comes off as a more powerful language than PHP. It won’t be too off the mark to say that, while learning Ruby can be difficult this is a language meant for the ‘thinking developer’ and offers a superior toolset for application development.

ROR is being used by AirbnbGitHub, Groupon, Shopify, Google Sketchup, BaseCamp, SoundCloud, Hulu etc. Rails also makes an excellent choice for web apps, highly scalable websites, enterprise applications, and for projects that need rapid web development. However for single page applications, dynamic content and games, high traffic and high usage platforms like chat rooms, ROR might not be the best choice.

Conclusion
So which one is better – PHP or ROR? To begin with, it wouldn’t be fair to compare the two languages since Rails is a framework for Ruby while PHP is a language and also has many frameworks. However, both these ecosystems are efficient and powerful in their own right. Sometimes the selecting one over the other becomes a matter of personal preference , availability of skills and the specific business case.

Using AngularJs For Enterprise Apps

It is the hottest buzzword in the web application development space. It is called as the “superheroic JavaScript framework”. It is very popular amongst the developers– it has the highest number of contributions on GitHub community. It is built and maintained by Google Engineers. No wonder, AngularJS is creating a buzz in the industry today. In our earlier blog post, we cited 8 reasons behind the enormous popularity of AngularJS. Rapid development, easier code maintenance, development flexibility, mobility, and collaboration support are some of the many reasons why organizations have started seriously considering AngularJS for their web application needs.

One of the questions which keep doing the rounds is whether AngularJS is suitable for large-scale enterprise applications which involve multiple pages, require faster loading, have a huge amount of data involved, require faster performance, and need to be secured. Well, looking at the industry, quite a few popular enterprise applications have already leveraged this framework and are seeing some good results. For example – Google’s DoubleClick platform which serves millions of ads per day uses AngularJS framework as a front-end. IBM’s MobileFirst Platform Foundation (earlier known as IBM Worklight) also uses AngularJS front-end interface to ensure that the look-and-feel between the web clients and the mobile is consistent.

Of course, like any other technology framework, you need to use it smartly and appropriately to get the most from it. Here are a few things to keep in mind while developing enterprise applications using AngularJS –

  1. Code Base Structure and Conventions:
  2. AngularJS does not follow very strict conventions. In the absence of strict conventions, each developer has the flexibility to adapt and use the framework as per his/ her own style. AngularJS is an MVC framework which is loosely based on the traditional MVC Framework. Since there is not much documentation on the conventions, while building a large-scale enterprise application, it is important that the development team defines and agrees on a set style guide on conventions to follow. The style guide should provide the developers the guidance on all the aspects of development such as splitting of controllers, placement of directives, services reuse, management of libraries, and so on. One of the recommendations to design a maintainable code structure is to follow modular approach. Modules are identified on the basis of functionality and it helps the developers in development as well as during the maintenance phase of a project.

  3. Understating the $scope:
  4. $scope is one of the most essential and important aspects of AngularJS. Building a large-scale application with AngularJS requires a detailed understanding of all the intricacies of the $scope life-cycle. AngularJS’s two-way data-binding allows every $scope to have $watch expressions. For enterprise applications, where performance is of paramount importance, it is imperative to keep a close eye on the $watch expressions and their linkages with the $scope. A few tips while working with $scope –

    • $scope should always contain necessary information that is required by the view.
    • Avoid unnecessary filling up of $scope because it may lead to degradation of performance.
    • Remember that $scope follows prototypal inheritance which may lead to confliction of information so do take special care while working with $scope.
  5. Third Party Integrations and Ecosystem:
  6. Enterprise applications need to use several third party libraries for a variety of functionalities. If not handled correctly, AngularJS can create a lot of problems during the integration. With its own way of using $digest loop, AngularJS, by default, tends to be ignorant about the changes which are done to the DOM by the third party libraries. In such situations, the developers need to take care of manually kicking off a $digest loop. On the other hand, AngularJS offers a lot of plugins but those plugins or libraries are not easily accessible at a central location and, therefore, developers tend to reinvent the wheel and, either build the plugin on their own or look for some third party library. Creation and documentation of a widget library collection enlisting all the required widgets and libraries helps in easier identification of the right plugins and libraries and makes the development smooth.

  7. File Management:
  8. Since AngularJS does not have any defined conventions for file naming and storing, it is recommended that while developing an enterprise application the guidelines and conventions for file system organization and management are defined properly and finalized before the development begins. While there are multiple ways of organizing the files, organizing them according to the features is being increasingly preferred by the developers.

Conclusion:
With both hype and adoption around AngularJS, the enterprises today have no option but to adapt the fast-moving changes within the modern frameworks like AngularJS and move towards making their Web applications powerful, scalable, usable, and yet, simple.

mobile development mistakes

Top 4 Mobile App Development Mistakes to Avoid

Take a look at some of these fun statistics

  • There are 6.8 billion people on the planet. 5.1 billion of them own a cell phone Source: Mobile Marketing Association Asia)
  • It takes 90 minutes for the average person to respond to an email. It takes 90 seconds for the average person to respond to a text message. (Source: CTIA.org)
  • 70% of all mobile searches result in action within 1 hour. (Source: Mobile Marketer)
  • 91% of all U.S. citizens have their mobile device within reach 24/7. (Source: Morgan Stanley

Today, mobile browsing accounts for anything from 1/3 to ½ of all of web traffic worldwide and mobile users spend over 80% of this time on mobile apps. Be it for social networking, emailing, texting, and gaming or for making purchases, having a great mobile app has become a business imperative. Hundreds of new apps hit the app stores every day. The Q is how can app developers ensure that their app is the best app to use? How can developers determine that theirs is not some buggy app that the user deletes almost as soon as it is downloaded? In this blog, we talk about four mobile app development mistakes to avoid to develop great mobile apps.

  1. Platform
    Not paying attention to the platform choice for mobile app development can easily be the biggest mistake developers make. The right platform choice for developing mobile apps is a critical contributor to mobile app success as it defines the approach to the development process. So should you go Native or Hybrid? A native app is developed specifically for a mobile operating system such as Java for Android, Swift for iOS etc. These apps are more mature and have a great user experience since they are developed within a mature ecosystem with a consistent in-app interaction. They are also easier to discover in the app store, have access to the device hardware and software and enable users to learn the app fast. Native apps are known for their great user experience.
    Hybrid apps, at heart, are websites packaged as native apps with the similar look and feel. Hybrid apps are built using technologies like HTML 5 and JavaScript. They are then wrapped in a native container that loads the information of the page on the app as the user navigates across the application. Unlike native apps, hybrid apps do not download information and content on installation. However, hybrid apps have one code base that makes them easier to port across multiple platforms and access easily through several hardware and software capabilities via plug-ins. These apps have cheaper origination costs and have a faster initial speed to market. Since hybrid apps are platform agnostic they can be released across multiple platforms without having to maintain two different code bases.
    Along with these are browser based apps. These applications run within the web browser with instructions written in JavaScript and HTML. These are embedded in the web page, these applications do not require any downloading or installation and can run easily on Mac, Linux or Windows PC.
    So how do you decide between these options? If you need to get your app into the market within a very short period of time or check the viability of the market then hybrid is the way to go. On the other hand, if you need an app that has a great user experience then you should be taking the native direction. The platform decision thus rests purely on the business requirement and the time that you need to move things to production.
  2. UI and UX
    Leaving app design as an afterthought can be a huge and costly mistake. High-quality design ensures higher engagement which translates to higher ROI. Strong design also makes sure that all future app updates can be done easily and have lower support costs.
    To build an app with a great UI and UX design developers first need to understand the behaviour of their target market to build the foundation of the apps functionality and then move to app design. The User Interface or UI defines how an app will look while the User Experience or UX design needs to ensure that the app is in fulfilling the emotional and transactional response it is supposed to generate. Developing functionality of the mobile app before developing the UI and UX can be counterproductive as this makes it difficult for mobile app developers to remain true to the overall UI/UX design and deliver great app experiences.
    To design a great mobile application, developers can first design UX Mock-ups first without worrying about the UI design. This enables them to ensure that app feels at home across platforms and form factors. Once this is done developers can move to UI design to build the visual appeal and usability of the app.
  3. Developing Bug Free Apps
    Since mobile app users are picky and impatient, they have zero tolerance for slow, buggy apps. While developers need to keep their eye on the ball and develop a great app, no app is truly great if it has not gone through rigorous testing to identify any shortfalls and bug fixes that the app might need. Along with this, it is equally essential to test the right things at the right time. For example, functionality testing should happen at the beginning during app development and should examine, amongst other things, all the media components, script and library compatibility, manipulations and calculations the app might require, check for submission forms and search features etc. Performance testing should not only focus on the load but also test the transaction processing speed of the app.Developers need to focus on User Acceptance Testing to ensure that the development happens in a timely manner. For this, User Acceptance Testing should be a part of the development process and should not be left until the last minute to build in feedback as it is received.
  4. It’s a mobile app NOT a mobile website
    Finally, a mobile application is not a mini website. Mobile apps are supposed to provide tailored, crisp and easy mobile experiences and hence need not have the same interface, look and feel as that of a website. This means that developers have to focus on sharper interface design, offer better personalization, send out the right notifications and also make the user experience more interactive and fun. Along with this, mobile apps should have the capability to work when offline. While apps might need internet connectivity to perform tasks, it is essential that they are able to offer basic functionality and content when in the offline mode. For example, a banking app might need internet connectivity for processing transactions. However, it can offer basic functionalities such as determining loan limit, instalment calculations etc. when offline.

With an increasing number of users turning away from websites and turning towards mobile applications, mobile apps act as gatekeepers of experience and engagement. App development thus has to be more than just building the app. Developers have to take a structured and strategic approach to app development to ensure that the app delivers on all the metrics required to further business goals by being responsive and reliable and fit in with user expectations.

Should Developers Test Their Own Code?

I don’t care if it works on your machine! We are not shipping your machine!” – Vidiu Platon

I can almost see the testing manager talking (negotiating?) with the developer while going over the bug report and making this, rather exasperated, statement. Those of us who have been in software development long enough are quite likely to have encountered such intense “developer v/s tester” situations somewhere along the way. Of late the roles, or should I say battle lines, have blurred somewhat – don’t believe me? Think about how often you now come across the term Software Design Engineer in Test (SDET) – much more frequently than was the case even a couple of years ago right? In the language of car companies, the SDET is a “crossover” – someone who spans the software development and testing worlds and has bits, pieces and features of both in his job description. The SDET is a visible symbol of a discussion we are having quite often now – should developers test? Also by extension, should developers test their own code?
Should Developers Test Their Own Code?
At one level, especially for smaller software development teams, start-ups or even larger companies where software is not the core function, the attraction of having a smaller self-contained team of developers who do their own testing and validation is obvious. Costs are contained, as is the management overhead and the demands on their, more limited, internal technical bandwidth are less onerous. At the other end of the spectrum are larger software development efforts where more development-friendly test functions like test automation demand the presence of software developers on the testing team. We have always made the case that in the case of test automation the test strategy has to be much more closely coupled with the development strategy and architecture – again a function where developers could play a key role.

That being said, I believe that testing is a specialized task in itself that needs a focused testing team to action effectively. There are some key reasons why I think developers would not be quite as well suited to the task of testing their own code.

  1. Mindset:
    Most people will agree with the statement that the job of a tester is to break the software. A quality tester will try every use case and condition possible to try and make the software fail. They look for complex situations, combinations of situations, repeated applications and even heavier than expected load conditions to make the software break. In many ways, this is a completely opposite mindset to that with which the developer approaches his task – essentially the developer is always trying to make it work and that may not be the best approach for testing.
  2. Starting right:
    It’s not unusual to encounter development efforts that have been built on an inaccurate understanding of the initial requirements. A developer testing the code would generally be less inclined to check if the foundation itself is incorrect. Essentially the “bug” is the place where the design started.
  3. Proprietary interest
    It’s a rare developer who doesn’t get attached to his (or her) code. It’s something they have sweated over and as a result, to some extent, they would start testing from the position that the code works. This is likely to lead to short cuts, assumptions about simple or “trivial” things and a possible tendency to skip things that they “have fixed during coding”. Obviously, these are the kind of things that turn around and bite back later in the cycle.
  4. Big picture view:
    Most developers will have a reasonable view of the code they are working on – that unit or that piece of the puzzle. Even if that works fine in itself no software works in isolation. A Tester will usually be able to turn a wider scope and test – look at how the code works when fully compiled? Or how it works in a simulated, or real, user environment.
  5. Tricks of the trade:
    This is, of course, apparent. Testers have much more experience with the act of testing, the tools and techniques, how to log and report bugs and even common faults and the reasons why they occur. A developer would have to reinvent that particular wheel to become as efficient at the role.

So what role can developers play in the testing process? Well for starters it is apparent that they would be extremely well suited to unit testing and, at least, validation testing of their code. That apart there seems to be a good case for pairing developers and testers – the model works well in the Agile context due to the short sprints and multiple iterations. This, though, is the subject of another post. In closing let me share what Brian W. Kernighan said, “Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” I’m not saying I agree – just that he’s the computer scientist, not me.

8 Reasons Why Your Web Apps Need to Use AngularJS

 

 

Developers love AngularJS. They just really really love it. Don’t believe us? Look at the GitHub activity. AngularJS probably has the highest number of contributions than any other competing JavaScript framework. Check out Google searches or even StackOverflow mentions – AngularJS is all over.

Job trends on Indeed.com, a developer jobs site, also show a strong bias towards AngularJS than any other framework.
angular job trends graph
So what are the reasons behind this popularity? Why is this the self-proclaimed “superheroic JavaScript framework” gaining so much attention and traction? Why is the popularity of AnugularJS exploding? I have also heard that hundreds of tickets for ng-conf, one of the first AngularJS conferences, were sold out in just a few minutes!

Let’s take a look at what makes AngularJS so popular –

1. The Google Power :-
The very fact that AngularJS is built and maintained by a dedicated and talented team of Google Engineers, assures that you are working with reliable and efficient code which can offer you the required scalability for your project. Along with the solid foundation, the Google team brings in the required knowledge and support. So along with the vast open community, you have the Google engineers available to answer your questions and help you use AngularJS optimally.

2. Faster Page Loading :-
AngularJS is massively popular amongst single page sites or web applications. One of the popular reasons behind this could be the faster page loading. By saving the templates (which is essentially the HTML content) in the cache, AngularJS cuts the server reload time and removes the need to hit the server each time to retrieve the template. This makes the page loading faster.

Developers can architect the front-end application in such a way that the coupling on the back-end is minimized, which further improves the page loading performance.

3. Rapid Development :-
AngularJS on front-end along with Node.js in the backend can help the developers in rapid development by automating the repetitive tasks. This frees up the developers time for the actual development and building of business logic. With the use of data binding and Dependency Injection of AngularJS, developers can eliminate much of the code that has to be written. The two-way data binding reduces the amount of code which has to be written to maintain cohesive agreement between the model and view.

Some of the tools which help in faster development are –

  • ng-annotate – This helps in maintaining Angular dependency injection while minifying the JS files.
  • JSLint – Helps in validating the JS Code.
  • Sass/Less compiler – Helps in CSS compilation.
  •  Bower – It is a very good Package Manager for AngularJS third party components (For example: Nuget and NPM, a NodeJS package manager)

4. Flexibility in Development :-
Most of the other frameworks require you to first split your app into MVC components and then bind those components using the code. This increases the amount of coding. In case of AnugularJS, all you need to do is just split your app into MVC components – the rest is taken care by AnugularJS itself. It manages the components on its own and acts as the pipeline to connect them. Since the connection is handled by AngularJS, developers cannot write incorrect code that breaks abstractions just to make the components fit easier.

5. Collaboration :-
For projects where there are multiple developers working on the project, there are often issues about managing dependencies. AngularJS makes it relatively easy to manage the dependencies. It allows you to break down various actions into their own services and sub-controllers. Developers can independently code and test without messing with each other’s code. This is a bliss in the case of larger projects. It automatically introduces a nice workflow and processes which allow frictionless collaboration.

6. Mobility:-
AngularJS is extremely useful in building hybrid mobile applications. Before AngularJS, developers needed to use JQuery mobile framework for building hybrid mobile applications. However, JQuery mobile framework makes the code complex and it is also not very efficient for multi-page applications. AngularJS makes the code less complex and helps in creating highly efficient mobile apps. Some of the advantages of using AngularJS in mobile development are –

  • Reduced DOM manipulation
  • In-built routes provider
  • Seamless gesture handling
  • In-built transition animations
  • Performance improvement through the use of saving of templates in cache
  • Access to local storage

7. Testability:-
AngularJS is known as unit testing ready. It has been written keeping testability in mind. AngularJS links the whole application together using Dependency Injection or DI. The DI manages the controllers and scopes of the application.

Since all the information to the controllers is passed through DI, the unit tests can be performed by injecting mock data into the controller and measuring the output and behavior.

AngularJS also offers a mock HTTP provider for injecting fake server responses into controllers for unit testing. This is anytime faster than the traditional way of web application testing where individual test pages had to be created to invoke one component and check the interactions with it.

8. Less Coding:-
AngularJS requires considerably less coding as compared to other frameworks. Because of less coding, it becomes easier for the developers to keep a systematic track of the functions.

Here are some of the cases where AngularJS requires less code –

  • Views are defined using HTML to make them more concise.
  • Developers do not need to write their own pipeline – it is offered readymade through Dependency Injection.
  • With no need of getter/setter functions, the Data model is simple.
  • Developers don’t need to provide data manually to the view – it is facilitated by the data-binding feature.
  • Directives are written separately from the application code – this allows parallel development without any worries of integration issues.
  • Without changing the controllers, data on the view level can be manipulated using filters.

AngularJS encourages object oriented design thinking on the client-side which makes the application more maintainable. And the icing on the cake is that one can be proficient in AnugularJS in a reasonably less time!

The Mobile Choices You Have To Make

By Rajiv Jain (CEO, ThinkSys)

“The future of mobile is the future of online. It is how people access online content now.” – David Murphy, Founder and Editor of Mobile Marketing Daily

Earlier this year a major shift in the balance of power took place – almost unnoticed. Statista reports that now 52.7 of all internet access is now from the mobile. They further say that by 2017 over 63% of all mobile users worldwide would be accessing the internet from their mobiles. It seems clear that for those businesses that are web based the battleground is shifting from the large screen to the small screen, from the desktop to the phone or the tablet. Many have foreseen this and put in place robust mobile strategies and the rest are probably thinking it’s time to do so. In either case, though, there are some difficult choices to be made along the way. Let me take this chance to try to bring some order to the big decisions you will have to take initially.

Q1. Mobile App or Mobile enabled site?

Do you need to build an app and get it added to the App store of your choice or is it enough to have a site that renders well on the mobile? In Google’s dispensation of the day, a mobile friendly site is anyway mandatory to avoid site ranking penalties. That apart if your site is more likely to be used for information dissemination than for active transactions or actions then a mobile friendly website is likely the way to go. Among the other considerations is how frequently is an individual user likely to have to access the site – if the frequency is generally likely to be high, say public transport route and schedule info of social networking, then an app that is downloaded and installed on the phone may work better.

Q2. If you choose a site then what next?

What’s the design approach to pick? There are 3 that are the most common now Responsive, Adaptive and Blended Web Design. Without getting too much into gory details here are the broad differences:

  1. Responsive is a client-side approach. That’s to say the technology “resides” on the device on which the site is consumed so the experience is very seamless as far as the size and resolution capabilities of the device go. The downside is that traditionally this is tougher, more effort & skill intensive and takes longer to pull off well.
  2. The Adaptive approach, on the other hand, focuses the technology on the server side and adapts to whatever device the “connection” comes from by serving them the version of the content most appropriate to them. While this is usually easier to get off the ground the ongoing coordination and maintenance are a far greater coordination and execution challenge.
  3. A convenient, recent, middle ground has been arrived at with the Blended approach. This has been called Responsive with Service Side components – so the site being served may be the same, but there may be elements like the headers that may be specific to the device. The approach is still settling in but seems promising.

Q3. If App then Native Or Mobile web?

Essentially the thinking was that at one time if you wanted to reach out to as large a cross section of users as possible across devices, operating systems and so on you had to follow the Mobile Web approach utilising the powers of languages like HTML5.

The native approach tied itself much more closely to the operating system (& hence the device family) – if you wanted to target customers who were likely to be iPhone and iPad fans and wanted to use the capabilities of those devices much more fully then you picked iOS as your operating system of choice. The app would be built in accordance with the App Store specs and that was your little (or big) universe. If you thought your customer base was in the wider Samsung, LG, Motorola universe then you picked Android as your platform and that then decided all further choices.

Hybrid platforms like PhoneGap have been around for a while and these seem to be gaining ground. This an argument where the contours are changing even as we speak – maybe in a few months we will talk only about a Hybrid approach driven by people like ReactJS.

The prediction is that by 2018 half of the world’s mobile users will have smartphones. If your business has to be ready for that day you have some choices to make now. You will likely have to start with the answers to these questions.

Business Considerations Behind Your Web Technology.

“Information technology and business are becoming inextricably interwoven. I don’t think anybody can talk meaningfully about one without talking about the other” – Bill Gates

Gates’ statement has never been truer than it is today. So much of business strategy today is dictated by what is possible to do with the technology of the day. Business owners are being forced to make technology choices every day and there is a genuine fear that the wrong choice could negatively impact their web application, portal or site deeply enough to cause active business disruption. This then suggests that the choice of the technology platform for your web application or website is no longer a purely technology decision. What, then, are the business considerations that should go into the technology decisions related to your web application?
Business Considerations Behind Your Web Technology.
This is in some ways the old “make or buy” decision. Does your business strategy require a site / app that can go live quickly with a reasonably standard set of features – in which case a ready template could be the answer? On the other hand, if you need a unique look and feel and features that are not commonplace then you may have no choice but to consider a completely custom development. What you lose in development time you gain in flexibility in this particular game of choice.

Need for Features:
Your business may demand that the app / site be capable of performing some very specific activities or at some very specific capability level. Is real-time updating required? Is the effort likely to be calculation intensive? Is performance important? Or is it important to achieve scale? How fast does your business need that scale to be achieved? Answers to these questions will help you pick from the technology platforms out there – if the platform addresses your business need squarely then that’s the right choice.

Time-to-market:
How fast do you need to get your offering in front of your customers? Is the timeline set in stone, as it were, or is there scope for some flex? Different technology platforms behave differently. If what you value are easy and fast development and a predictable effort then maybe a more established technology platform that has been well documented may be what you need. Driven by the business needs you may be tempted to consider a relatively newer technology that promises much but may carry with it the risk of unforeseen pitfalls if your timelines are more flexible.

The economic argument:
Cost is a primary factor in the choice of technology. It is important to take into account the total cost of ownership of the technology platform under consideration – not only the initial outlay but also appropriate allocations for the cost of maintenance and support and if need be a charge for the effort involved at your end over the development lifecycle. An Open Source platform may involve lower upfront investment but could cost more in the long run once you factor in ongoing maintenance and the cost of support from a loosely formed community. Proprietary technologies will likely cost more to start with but may end up being less expensive to maintain and with, perhaps, more dependable support.

Market Support to the technology:
The technology landscape is littered with stories of technologies that died a sudden death after an initial meteoric rise. Sometimes the hype cycle becomes so dominant that organizations make technology choices because they feel they have to rather than because they need to. As Stewart Brand said so eloquently, “Once a new technology rolls over you if you’re not part of the steamroller, you’re part of the road.” The problem with such choices is that you could be stuck with a technology platform that vanishes midway through your development effort. The support for the technology in the marketplace, their reviews, and their heartfelt acceptance matters a lot when you look around to make your choice because it makes the longevity of the technology more likely and this has to be a key consideration in any technology choice you make.

Carrie Snow said, “Technology… is a queer thing. It brings you great gifts with one hand, and it stabs you in the back with the other.” You would do well to remember that in the end the technology is just a tool – it’s up to you to make it work for you.

9 Enterprise App Ideas For Your Business

Gartner predicts that by the end of the year 2017, market demand for mobile app development services will grow at least five times faster than internal IT organizations’ capacity to deliver them. With the increase in the demand and sale of mobile phones, the demand for enterprise apps which match the high performance and usability of consumer apps is only going to increase.

9 Enterprise App Ideas For Your Business

Gone are the days when the office workstation was the only device which the knowledge workers used to use. Today, on an average, a knowledge worker uses at least three different devices and with the proliferation of the Internet of Things (IoT), very soon it is going to increase to five or six devices. The number of devices managed in the enterprise increased 72% from 2014 to 2015 (Source).

Organizations are realizing the importance of offering the employees the option to select the device and apps of their choice to complete a particular task. This obviously is putting a high pressure on IT to develop a larger variety of mobile apps.
When a majority of the organizations are still evaluating the tools, vendors, technology, and vendors for the development of enterprise apps, here we provide some of the app ideas which businesses can use while developing their enterprise apps –
1. Product Training and Knowledge Apps: Sales representatives need to be always on top of the latest products and services. To achieve this objective, enterprises can build an app which can simulate a “pre-call” planning with a customer. Through right answers, the reps can get badges or more up in the level. This can be a very engaging way of updating the sales reps about the latest offerings.
Every company has a ton of documents and presentations about the product and services information, best practices, whitepapers, case studies and so on. But not all the employees are always aware of those or make use of those. Having a ready access to the resource library which can be easily searched can be of tremendous value for everyone in the company.
2. Real-time Inventory App: For Sales reps who often visit the off-site clients, a real-time inventory information is of great benefit. It can save a considerable amount of administrative effort and can also help the sales reps in making a great impression in front of the customer by offering the real-time demand details.
3. Quoting Apps: Sales Reps who are on the move need an easy way to generate accurate quotes instantly. Apps which help them to select the products and price and configure the quote can greatly help in the faster closing of the deals. There are quite a few readymade apps for this purpose which can be used by the enterprises.
4. Support Apps: When any customer submits a support ticket or makes any request for assistance, an internal support app can alert the appropriate department or team to take quick action on the ticket to quickly resolve the issue and attain greater customer satisfaction.
5. Marketing Apps:Marketing teams usually run many campaigns, but the results are not always visible to the rest of the business stakeholders. An app which provides a complete overview of various campaigns in a visual way can help all the stakeholders in getting a better understanding of the marketing initiatives.
6. Authorization and Approval Apps: Long approval cycles can delay the sales cycles if the approvals need to be given by a particular person from a particular machine. Secured apps which can allow employees to provide approvals from anywhere, anytime can tremendously save a lot of time.
7. Broadcast Apps: Keeping all the employees updated about what is happening in the company can be a difficult task if it is done only through emails or newsletters. Having an app to display the announcements and news can be an effective way to keep everyone informed and also engaged.
8. Collaboration Apps: Collaboration apps help in keeping the employees connected, help them in collaborating across borders, and maintain a people-oriented culture in the company. Such apps help in providing a better visibility of activities across departments and also foster the spirit of innovation in the teams. A collaboration mobile app helps the on-the-field teams to be connected with the business on a regular basis.
9. HR Apps: Every employee regularly interacts with the Human Resources department for requests like leaves, health claims or policies. A mobile app which can allow the HR teams in providing this information quickly and easily and also allow the employees to access it from anywhere can save a lot of time for both and also improve the employee satisfaction.
While these ideas are a good place to get thinking, organizations need to remember that the apps which are designed and developed considering the needs of the business and the existing workflows tend to work well in terms of adoption as well as the use.

Will Windows 10 Change Application Development ?

In about 4 weeks Windows 10 has now been installed in over 75 Million PCs. Despite predicting a slow and sure adoption the estimates now are that roughly 358 Million PCs will move to Windows 10 in 12 months. Microsoft itself has set aim at 1 Billion devices running Windows 10 within 3 years. There is no mistaking Microsoft’s focus on Windows 10 – its preferred revenue platform for the future. Microsoft has publicly stated that they intend to use services and apps to generate revenue from their customers over their entire computing life cycle. The adoption rate in enterprises, as expected, is slower but even that is expected to pick up as support for the current favorite OS, Windows 7, starts drying up. Microsoft is also ramping up the Enterprise focus with IT Department friendly Windows 10 features like easier management and automatic configuration of devices and security improvements. With Windows 10 clearly here to stay what impact will be felt in the Application Development world?

The major change seems to be driven the unified platform strategy. In many ways Windows 10 is the final step in Microsoft’s strategy to bring all its device platforms together into one, united Windows core. The objective is that every device, PC, Tablet, phone, game console and everything to come in the IoT world, should be able to run the same app- thus creating a universal app platform. In the official MSDN Blog introducing this “Universal App Platform” Microsoft’s Kevin Gallo laid out the goals for the platform as:

  • Driving scale through reach across device type.
  • Delivering unique experiences
  • Maximizing developer investments.

Let’s talk about Mobile OS’ -this platform independence will mean that apps developed by developers working on other operating systems like Android and iOS to Windows can be moved to universal apps seamlessly. This will help increase the number of Apps available to Windows mobile users and presumably drive up usage.

Then there are screen sizes – with so many form factors out there one of the big App Development challenges has traditionally been designing for different screen sizes. Windows 10 provides the ability to use a single UI that can adapt to large and small screen sizes making this task just that little bit easier.

Microsoft has highlighted unique experiences as a platform goal. One way Windows 10 hopes to create such experiences is through the many UI controls that have been provided. Users interface with the apps in several different ways. These controls have the capability to figure out just how and deliver an appropriate user experience. As an example a user using a laptop with a touch screen would get larger icons to select from than a more precise interface like say a mouse or a touchpad.

What about all those PCs out there, many of them in slower moving enterprises that are still on Windows 7 or 8 flavors? The good news for those developers developing desktop apps for these versions is they can now harmonize their existing .NET and Win32 content with Windows universal apps.

 

How have the concerns about developer investments in time and effort been addressed? A significant step in the Windows 10 universal app is the inherent ability of websites to run within the Windows 10 Universal app and thus make the most of the system services. Website developers are saved the hassle of having to learn new languages and find it easier to get their apps on the Windows store.

Burgeoning Demand for Mobile Apps

Statistics is showing great demand for mobile test automation. As per the estimates of International Telecommunication Union, about 6.8 billion people have mobile subscription. This is an astonishing figure as it is 96% of the world population. An article recently published in Business Insider states 22% of the global population owns a smartphone.
Burgeoning Demand for Mobile Apps
Demand for mobile apps is also burgeoning with the increase in the number of mobile phones. However, before launching the app, you need to determine that the app is working on the desired devices in the market. As a range of mobile devices are available now, it is important to work with a company capable of developing apps with all the needed functions.

This is either accomplished through simulators or testing directly on device types such as Blackberries, iPhones and Androids so that the application’s function can be tested and monitored. A big advantage of this approach is that it saves time, money and energy for the originating company. It would help to find the errors, design flaws and bugs which may affect the overall marketability of the application. The testing program will create a spreadsheet or record of the problems thereby providing valuable information to the engineers and technicians that are trained and paid to analyze the data. This is certainly better than users falling on the errors.

The technician will work to resolve the outstanding issues, making sure that the functions work perfectly well. It would require the expertise of professionals having the knowledge and experience to get it done right the first time so that they can turn over a 100% bug free application back to the clients.

As a company that needs to work with this type of vendor it is essential to work with someone with solid reputation, is trustworthy and has competitive pricing so that you pay for quality and accuracy. Make the call today and get started working with a company that has the same high standards in automated mobile testing that you do!

Selecting Platform for Your Mobile Apps

In the early days of mobile app development, people might still remember BREW, Symbian, and Java ME, but with the advent of smartphones, the choices started to simplify: If you were targeting enterprise business users, you developed for Blackberry; if you were developing for any other user, you developed for iOS. Then Android entered the picture, and now Windows has started to show its head.

At first, Android’s arrival was not a big deal, because there was only one version of their OS available on limited devices; you could still bet on iOS or Blackberry and win. Blackberry is no longer even a consideration, however, when developing mobile apps. In fact, between September 2011 and August 2012, Blackberry usage in the United States dropped 25 percent, and the mobile platform now boasts only about 1 percent share of the market. Blackberry is dying fast.

The chart below shows the top 10 platforms that are in the minds of the developers world-wide.

The trend of top platforms that developers are choosing correlate nicely with the number of handsets being sold worldwide. The numbers below show the increase of market share for Android, iOS and Windows as well as the significant decline in BlackBerry and Symbian sales.

In the end, developers are working on platforms that have the farthest reach. It is clear that the year over year continuous drop in Java ME, Blackberry and Symbian platforms are making these platforms less relevant in the smartphone market.

However, an interesting number in Fig. 1 is the Mobile Web – HTML 5 platform, which increased 56% in 2011 and continues to remain stable for this year. Despite the fact that mobile browsers continue to get more fragmented, and the Mobile Web wrestles with performance issues and lack of functional richness, the cross-platform nature of the Mobile Web platform continues to attract developers. We are seeing continued interest with our customers in this space and feel that this platform will remain important in the near future.

When looking at future trends for platform choices and interviewing over a thousand developers, the Developer Economics 2012 survey (see Fig. 3) shows a significant increase in the choice for the Windows Platform.

 

As Nokia and Microsoft continue their aggressive marketing for the adoption of Microsoft’s new Windows platform, the sales of Windows phones continue to have mixed results. Nokia’s Lumia 900 is getting good reviews from the press, and the base functionality in most cases is on par with the top-of–the-line iOS and Android phones. Even though we continue to believe that the developers will develop on the platforms that have the farthest reach, at present, Windows is one of the top platforms in the minds of the developers. The main reason for this, we believe, is the ability developers have to develop for the Windows 8 Metro UI, which offers an easy port to the Windows platform. This will get better as Microsoft merges the APIs for mobile and OS development. As enterprise applications continue to increase in both development and usage, this will continue to be an important development platform.

Having said that, Microsoft and Nokia have a short window to start showing an increase market share and customer reach from the measly 2%.

At the same time that Blackberry was gasping its last breath, open source technology was leading to a rapid fragmentation of Android, whose usage exploded both in the U.S. and globally. By mid-2012 Android devices were selling four times faster than Apple. Together, Apple and Android account for 85 percent of the mobile market. While the easy choice as to what platform you should develop your mobile app for is Apple, Google’s Android and all of its associated sweet-treat operating systems account for 50.1 percent of the market.

With Blackberry out of the picture as the dedicated business phone (unless you work for the government), companies no longer have the luxury of choosing a single platform if they want to be competitive, visible and relevant in mobile world. And more than ever, people are relying on their mobile devices to access the Internet.

Android and Apple each take very different approaches to their operating system updates. Apple is streamlined; they introduce a new iOS to coincide with the release of a new device, and they make previous versions obsolete, forcing everyone, for the most part, to adopt the same platform. (Even users are forced to comply: every time a user logs into iTunes, they have to update to the latest iOS).

Android, on the other hand, presents a garbled mess of new and old platforms and no standardization for device screen sizes. There are 11 OSs currently circulating for Android, with a 12th, Jelly Bean, just hitting the market. Yet with more than half of all mobile device users devoted to Android in one form or another, you can’t afford not to develop your app to be compatible with the Android OS platform(s).

Rapidly changing technology makes the cost of retaining the talent necessary to develop mobile apps for multiple platforms difficult. Because developing for the different mobile platforms requires extensively different knowledge – they use different languages, different protocols, different development strategies – it is very difficult for a company to maintain its own development team that is capable of writing mobile apps for multiple platforms. The smart answer to the question “What platform should I develop my mobile app for?” is the hardest answer to give: all of them. Developers can make it simple. If performance and local platform functionality is less important, you might want to choose the Mobile Web platform (HTML 5).

Categories
Follow us on Twitter