Click Here to Request a FREE Quote to Develop an iPhone App or Android App

How to avoid Offshore Mobile App Nightmares

What do you do when it all goes wrong? I regularly hear from people who have taken the bargain basement route to app development, and are now stuck with a bargain basement app – an app which looks bad, is unresponsive, regularly freezes, or even crashes when it is used.

Sometimes these problems don’t show up until the app has been released. Performance problems often don’t manifest until your system has stored a significant amount of data, leading to a frightful scenario in which just as your iPhone App or Android App is taking off, gaining market share, it suddenly all falls apart.

Note I am not suggesting all offshore developers provide poor quality work. Some offshore developers provide an excellent service. But bad developers who cut corners are often very good at presentation – its the main focus of their business. And relationships with good developers can take a wrong turn, a situation which sometimes takes expert assistance to correct.

The following is a list of steps you can take to minimise the risk.

  1. Make sure you possess a working copy of the mobile app source code
    Whoever controls your source code controls your app. The source code is human readable form of your app, which development software uses to construct app binaries, for deployment either to test devices, or to the app store or play store. Without the source code, you cannot make changes to the app, or fix problems. A lot of developers keep hold of the source code, to force clients to continue to use their service.

    It is normal for developers to hold onto the source code until they are paid. But you must insist on source code whenever you make a payment, and you must check that the source code you receive is actually the code for your app. Often the source code is broken or incomplete. This is not necessarily malicious, it can be due to carelessness, or even just an honest mistake. If necessary, enlist the help of a technical friend to make sure you are receiving the real thing.

  2. Control the Server
    A second practice I see all too often is where the developer controls the server. The main use of app servers is to share data between different copies of the mobile app. Copies of the app on different phones can’t talk directly to each other, unless the devices are in close physical proximity. Instead, the apps relay messages via a server. The person who controls your server can shut down your app.

    The developer may have a positive motivation for controlling the server – server administration can be challenging, and they may feel that by shielding clients from this complexity, they are offering a better service.

    But if your developer suddenly decides to start charging exorbitant “server fees”, and if they are unhelpful when you ask for the code to be moved to a different server, there is very little you can do about it, other than a potentially very expensive and disruptive migration to a different server – a migration which can lead to significant loss of client data.
     

  3. Hire a local technical manager
    If your relationship with offshore developers hits a rocky patch, it can be difficult for non technical people to guide the project back on track – if the offshore developer claims that a simple looking change will take a long time to complete, and be very expensive, how can you tell whether they are being honest or reasonable with you? Some simple looking changes really are difficult – or they might be having a laugh, at your expense. If you have already committed significant money to the project, it can be very difficult to refuse ever increasing charges for changes and bug fixes, to bring your app project to a successful conclusion.

    With a local technical manager, you are in a much stronger position to negotiate fees. The local technical manager is much more accessible than an offshore team in a foreign jurisdiction. And the right technical manager has extensive experience with software development, so they can push back against unreasonable quotes or other sharp practices.

    One of my favourite techniques for handling an offshore fee blowout, is to provide an “example” which proves conclusively that the quote is unreasonable. This generally involves quickly mocking up a proof of concept of the work item under discussion, to discredit exorbitant claims of difficulty or other excuses for excessive fees. It usually only takes one or two “example” exercises to establish a better working relationship. This corrective technique absolutely relies on you, the project owner, having control of your server and your source code.

If you would like to know more about app development, or would like some advice about getting your mobile app project back on track, please Contact me.

Integrating SharePoint, iPhone Apps and Android Apps

Microsoft SharePoint Logo
Microsoft SharePoint

Microsoft SharePoint is a popular content and data management system, which integrates easily with non-microsoft technology, such as iPhone Apps and Android Apps.

The functionality of SharePoint I have experience integrating is SharePoint Lists.

A SharePoint List is a cross between a web document and a database. It provides means for quickly building and maintaining structured data, and defining relationships between different elements of that data.

For example, you can define a Microsoft SharePoint list which holds details of assets which your company manages, such as factories, shops, or other inventory, then define a second list, which provides a maintenance history for each asset. The second list can be linked to the first list, so for example you can enforce that one of the fields in the second list must be the identity of an asset in the first list.

SharePoint takes care of the complexity of handling collaborative updates to list documents, such as versioning of each change.

There is even an attractive web interface, which is compatible with most mobile devices, and several excellent iPhone Apps and Android Apps, for accessing your SharePoint portal.

So why would you ever need a bespoke iPhone App or Android App, to interact with SharePoint?

The reason clients ask me for help with SharePoint integration is because standard, off the shelf apps do not deliver a specific feature or set of features they require.

For example, what do you do if you want to take SharePoint offline? A client had a requirement that mobile apps be able to be used at sites with poor Internet coverage, so they needed an app which could populate the fields of new SharePoint list instances, and save the new instances in the internal storage of their iPad device, so all the saved changes could be applied to the server once the user had access to the Internet.

Another scenario, a client wanted to extend SharePoint functionality with app device capabilities, to create the ability to upload mobile camera photos to SharePoint list instances, and to upload GPS readings.

Finally, since the apps are interacting with SharePoint as a data store, the Apps are free to implement their own front end – they can guide users through the data acquisition or data delivery process, by imposing a specific workflow on the users – by granting users a limited view of the underlying SharePoint data, and by ensuring all necessary steps of a workflow are executed in the correct order.

A bespoke SharePoint iPhone App or Android App can preserve SharePoint flexibility. It is entirely possible for mobile Apps to apply the bespoke SharePoint functionality extensions on a list field by field basis, to allow the list structure to be changed, to allow new fields to be exposed to users without having to release a new version of the bespoke iPhone or Android SharePoint App.

Bespoke Customisation of the SharePoint experience can help with delivering acceptance and enthusiastic adoption of the underlying SharePoint implementation, by painlessly integrating user requirements which are not best handled by the standard toolset.

Contact me now, if you have or are interested in creating a Microsoft SharePoint based user experience, but have requirements which go beyond what the standard tools can deliver.

The Mobile App Revolution

The App Revolution Screenshot
The App Revolution

Back in 2012 Channel Nine (Australia) presented “The App Revolution” as a segment of the popular “60 Minutes”.

http://sixtyminutes.ninemsn.com.au/stories/8491606/the-app-revolution

The video of the presentation is now available online.

I strongly recommend anyone interested in developing an iPhone App or Android App watch the presentation. It communicates how apps have changed the world, and how lives have been transformed by people with a simple idea, and a burning desire to make it happen.

If you are interested in learning more about mobile app development, Contact Me.

Mobile App satisfaction vs Monetisation

A cauldron with money
Monetising Apps with Advertising

According to the latest American Customer Satisfaction Index, Facebook has suffered a significant drop in customer satisfaction, and is now close to the bottom of the heap, along with Linked in.

The drop in satisfaction ratings may be related to the level of advertising on the sites. Google+ for example, lost ground last year, but appears to have recovered some ground;

“A sharp increase in search engine advertising contributed to a drop in user satisfaction last year, but Google’s latest change to the way ads are labeled, along with its focus on the mobile user experience, may be steps in the right direction,” said [ACSI director] VanAmburg

If there is no in-app or web site advertising, sites and iPhone apps and Android apps which rely on advertising for revenue wouldn’t make any money – but the satisfaction surveys are a warning to businesses which rely on advertising revenue, not to push the envelope too hard. Because there is always a competitor eager to offer your customers a better user experience.

Amazon Cognito – A New Server for iPhone and Android Apps

Amazon have just announced Amazon Cognito – a new server technology for rapid development of Mobile App Servers.

Servers are a common feature of iPhone Apps and Android Apps. In its simplest form, a mobile app server allows apps to share data. Although iPhone Apps and Android Apps have access to the internet, they can’t talk directly to another copy of the same app on a different phone, except in special circumstances (e.g. if both apps are on the same WIFI network). There are various technical reasons for this, though one of the most important is the apps simply can’t find each other.

Instead, iPhone Apps and Android Apps use their internet access to contact a server, at a known internet address, which relays messages between different phones.

Amazon Cognito aims to simplify this process, by reducing the effort required to create new app servers. Instead of having to write variations of the same server code again and again, apps which need to share data can link up to Amazon Cognito, with minimal bespoke server code and server configuration.

Contact me if you would like to find out more about how Amazon Cognito could simplify the design and cut the cost of your next iPhone App or Android App.

Why Create iPhone, Android Apps on the Fraser Coast?

Working hard on iPhone apps and Android Apps
Developing Mobile Apps in Paradise

This post is a little different to what I normally write.

Every country wants to create its own answer to Silicon Valley – an amazingly small area of America in which is the source of much of the world’s creative technology.

Desirable Apps and The Apps Nursery thinks we have found a place which has the potential to be Australia’s Silicon Valley – Australia’s Fraser Coast.

The advantages of developing iPhone apps and Android apps on the Fraser Coast are:

  • A beach – anywhere which wants to attract talent has to have an awesome amenity. The Fraser Coast has one of the best beaches in Australia.
  • Year round warm weather – “winter” here is a few cold weeks in July.
  • A major University. The locals worry that their children who attend University have to relocate to pursue their profession. A local technology hub could change all that.
  • Affordable housing and business conference spaces – very important for startup business working on a shoestring
  • Adequate internet infrastructure. OK, this could be better – but you can get a decent mobile internet signal on the esplanade, and home WIFI is good enough to have a Skype video chat.
  • A terrific environment for children and young families – great schools, lots of parks, a safe, child friendly environment.
  • Excellent transport links to the rest of Australia, thanks to the Fraser Coast’s existing tourist industry.

The Fraser Coast, as far as we can tell, has all the essential ingredients to be a world class technology hub. The one thing missing is the spark – the belief that it can be done. We are hoping Desirable Apps can change all that.

Fraser Coast Opportunities created a write up of our business recently, in which we mentioned our vision of the potential of the Fraser Coast. Hopefully this is an idea which will take root and flourish.

Talking to your Android and iPhone Mobile Apps

talkingToPhone


Apple iPhone App Developers are all waiting with baited breath for Apple to allow open access to their SIRI engine, Apple’s engine for understanding spoken communication. As of the last time I checked (about 5 minutes ago), Apple does not allow Apps to start SIRI – so users can choose to say fill a text field with SIRI, but the app cannot start SIRI on behalf of the user.

Android has a voice recognition window which an app can open – but it is not really under the control of the app. The Android app can request that the Android phone or tablet present a window which accepts voice, then when the user indicates they have finished speaking, Android passes control back to the app, which can analyse the result of the voice recognition effort.

Neither of these options is “natural” – both the iPhone and Android option are in my opinion clunky, they require the user to take positive action to restore control back to the app.

If your iPhone app or Android app needs hands free voice control, the app needs to be able to initiate voice recognition, detect when someone is speaking, and process the voice to determine what was said, independent of whether the user presses a button.

Thankfully, third party service providers have filled this gap.

My favourite is Dragon Mobile. Dragon Mobile SDK is provided by the same company which publishes Dragon Speech, the legendary desktop PC speech recognition application, Nuance. Nuance has been in the game for over a decade – from somewhat humble beginnings, their product has developed into a sophisticated and reliable speech recognition system, a remarkable achievement in artificial intelligence.

The only downside of Dragon is it relies on an Internet connection. The processing power required to recognise and interpret normal spoken sentences is far greater than an Android App or iPhone app can deploy, so Dragon SDK ships the compressed sound files via the Internet to their servers.

What is the Internet bandwidth is an issue? There are still options. An Android App or iPhone app does not have the processing power to interpret any arbitrary spoken sentence, but it does have the processing power to recognise individual words. So if your iPhone app or Android app only has to recognise a handful of words, such as “yes”, “no”, and “maybe”, then the processing power for this simplified task can be comfortably accommodated without an internet connection to an external server.

If you are interested in Android Apps or iPhone Apps which can recognise speech, or which can read text from images (optical character recognition), please email eworrall1@gmail.com, to discuss your requirements.

Can my iPhone app or Android app run Microsoft .NET Components?

The answer, surprisingly, is a qualified “yes”.

iPhone Apps and Android Apps execute in a Unix like environment – both are based on BSD Unix.

BSD is very like its better known cousin Linux, except that the license terms for BSD make it easier to customise – unlike Linux, with BSD you don’t have to make your modified source code public domain.

And .NET components can run on Unix (i.e. iPhone app and Android app environments), by using the Mono framework.

There are a few gotchas. Mono components will run slower than native components, and consume more memory – which can be an issue on memory constrained devices like mobile phones. So I would recommend against writing an entire app in Microsoft C#. In addition, some features won’t be wired up out of the box, so if you want to display a .NET XAML component on your iPhone app screen, you can look forward to a great deal of work.

But if you want to say create a native iPhone App or Android App, but embed a Microsoft .NET communication client component for talking to your backend system, then an embedded Mono system could provide a labour saving solution to your needs.

Mono also works on Linux servers – ASP.NET components can in many cases be run immediately after a Mono environment is installed on an Apache Linux system.

If you would like to know more about running Microsoft components in an iPhone app or Android app, please leave a comment, or contact Eric Worrall.

Why Android is still Second Best for Some

Thinking back to my old Sony Ericcson P990, back in the mid noughties, I would have loved to replace it with an Android phone.

The P990 was a geek phone. It had no battery life, but it had an amazing array of features. I once reconfigured it to use an international dial up internet connection, to post an email from a beach in Thailand, where no mobile internet was available (at the time). You can’t do that with a modern phone. But the P990 was in my opinion utterly unusable, unless you knew an awful lot about IT.

Compared to that, Android is a dream for ordinary users – most of the functions can be accessed without arcane messing with the settings, the app paradigm is simple and intuitive – what could be better?

The answer of course is iPhone. I tried switching my wife to an Android phone a few years ago, when she needed a new phone (I needed a new test device, budget was tight) – she hated it.

I had to buy my wife a new iPhone when she threatened to throw the Android phone out the window of the car. It kept stalling her, tripping her up with sudden eruptions of complexity, which she needed me to fix – something she never had to fear when using an iPhone.

Granted her phone ran Gingerbread, and new versions of Android are far better.

Android is good, many people use it and love it. Android Apps can do things iPhone Apps are forbidden from doing. An Android app can send email or SMS on your behalf (once you grant fairly scary permissions before installation), which opens a vast range of desirable functionality, such as apps which create personalised SMS messages.

Android apps can run background processes (iPhone is very limited in this regard, though less so with iOS 7), and Android apps have far fewer limitations when it comes to app store approval – so it is possible to configure Android apps and Android phones to do really useful tasks, which simply cannot be done on an iPhone, unless you jailbreak it.

But iPhone has one, towering advantage of Android – it doesn’t scare people. It doesn’t deter people who are uncomfortable with geek devices.

This in my opinion is the source of iPhone’s loyalty – people who don’t like tech, feel comfortable using an iPhone. This simple, powerful advantage is what makes iPhone special.

It remains to be seen whether Apple iPhone can maintain this advantage. Android is catching up – each generation of the Android operating system is a little easier to use, a little less threatening to people who can’t stand geek tech.

The next version of Android may be the breakthrough which levels the playing field.

Could Android Apps replace Microsoft Windows?

Today The Register, a major tech website, published news that China has discontinued its efforts to develop a Red Chinese rival to Microsoft Windows, Red Flag Linux. China loves Microsoft Windows XP so much, even Chinese government departments refused to give up their Microsoft Desktops, despite widely publicised suspicions that the USA uses hidden back doors in Microsoft Windows to spy on rivals.

The Chinese alternative to Microsoft was to be based on Linux. Linux is a terrific operating system. Linux is the dominant operating system in much of the server market. I use Linux extensively – when I am creating web technology server components for iPhone Apps and Android Apps.

However Linux never really made it as a desktop operating system. Outside of a few geeks, most people use Microsoft Windows or Mac computers. Linux never attracted a critical mass of desktop applications.

Or did it? There is a branch of Linux which did make it to the mass market – Android OS. All Android phones run Linux under the hood.

But Android is a phone operating system – what has this got to do with desktop computers?

It turns out that efforts are already underway to create a desktop version of Android. Android apps are very adaptable – they are designed to work on a wide variety of devices, with a huge variation in screen size. So making an app work on a desktop is not a big stretch – a small desktop monitor has a similar screen size to the largest Android pad devices.

Whether Android makes it on the desktop is still an open question – but unlike all previous attempts to displace Microsoft Windows, Android already has a very large, loyal following. Many people use Microsoft on their desktop, but have an Android phone, and love their Android Apps. The battle between Android and Microsoft for ownership of the desktop promises to be a popcorn event, rather than yet another Microsoft slam dunk.

So my advice to China – if you want independence from Windows, and the confidence of being able to examine and inspect every line of the code you are using, the solution may be right under your nose. Take a look at Android.