Developing modern software
Yesterday at TechEd North America 2014, Microsoft announced a preview of Visual Studio tooling for the Apache Cordova platform that allows developers to create apps that run across phones, iPads and PCs – ie not just Microsoft operating systems. We are delighted, because Microsoft’s choice practically mirrors ours.
For some months now we have been using some great development tools to build phone, tablet and browser software that connects to cloud servers but copes with breaks in connection to the internet. The result is future-proof modern software (Choosing future-proof modern software), and in this blog posting I will explain what tools we’re using and why.
Timemaster has both a native Windows app and a browser interface. So, when we wanted to bring some of its key features to phones and tablets for use anywhere, we wrote a mobile app, too. Rather than write separate apps for each type of phone, we used RhoElements, part of Motorola’s RhoMobile Suite, as a development framework to build iPhone and Android versions of the same software. The app works with synchronized local data to give a good user experience whether there’s Wireless, 4G, 3G, just GPRS or no internet available. The user records time and enters expenses and the app does a background sync with the Timemaster server as soon as it can using the internet.
This Timemaster mobile app uses JQuery Mobile to give a responsive HTML5-based user interface across a range of different sized devices, with displays adjusting themselves to make best use of the screen space available. We rounded out the user experience with Mobiscroll to ensure that selecting a date or time, or picking an item from a list looks the same as the standard apps on the device, such as email and calendars. That helps our app feel “right”.
We’re happy with the result, the market response has been really positive, and it’s been a good technique for extending an existing web app such as Timemaster. In particular, Rho’s local database is powerful, with its background sync easing life for users when they are on the road. Compliments to Motorola and the original Rhodes team…and to our developers, too!
More recently we started work on a new cloud service that has given us the opportunity to create from scratch a responsive user interface than runs across phones, tablets and PCs in both online and offline mode, via browsers or as apps. Yes, that’s the same HTML5 code across everything. We are using the very latest development tools to build the app for this new service, and it took some effort to choose the right platforms and frameworks capable of offering everything we want and working well alongside its peers:
- Angular JS
When we created Zetadocs for NAV Payables Approval as the newest member of the Zetadocs family, we gained plenty of experience with Microsoft Azure, and it’s certainly a powerful platform. So we were happy to choose Azure again to host our new cloud service that browsers and the new mobile app connect with.
For this project, rather than using RhoElements for the mobile app wrapper and local database, we are using Adobe’s PhoneGap which is based on the open source Apache Cordova device APIs that allow a mobile app developer to use device hardware such as a camera. For the app database, we are using Breeze as a front end database to our highly scalable Azure SQL Database in the cloud. This clever piece of software looks after the local cache of data on the device, tracking changes and handling rich data queries to help make the most out of the limited size of screens on mobile devices.
We recognize that there are valid alternatives to our selection. For example, along the way we took a look at Amazon EC2 in place of Azure, and Durandal with Knockout instead of Angular with Bootstrap. Some great apps are being created with these development tools. We’re also tracking Google’s Chrome Apps and Mobile Chrome App SDK; perhaps in due course we will be able to build a variant of our new mobile app for that versatile platform, too.
Meanwhile, it’s reassuring that Microsoft has chosen to ship examples with the frameworks we picked out and we are also pleased that its other announcements this week take Azure on a few more steps in the right direction. We are confident that we have the right toolset to build modern business software that couples the Azure cloud-based service with software for browsers, smartphones, iPads, laptops and desktops. It’s all rather different from the old world of Windows client-server programs or dumb browsing, but reflects how users want to use software these days: across devices and on the move. And that includes me.