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

A Deep Linked Facebook Mobile App

I recently released RubyApp, a deep linked Facebook App.

RubyApp allows users to send a bouquet of pictures, and a short love message. You can tag the recipient of your message (which prompts the recipient that they have been tagged), make the message public, or both.

Facebook Deep Linking is a feature provided by Facebook to make your mobile app an extension of the Facebook experience. When a user clicks a Facebook news feed message associated with the deep linked app, instead of opening a website, Facebook opens the mobile app, and passes information about the clicked message to the mobile app, so the mobile app can immediately present the media associated with the message.

If the deep linked mobile app is not yet installed, Facebook prompts the user to install the app.

As you can imagine, this is a terrific way of driving viral mobile app installation – people see a Facebook post which interests them, click the post, and painlessly download and install yet another copy of your app. They then use the app to post their own media, which all their friends can see – and so on.

And this is exactly what is happening with RubyApp. A few people tried the app, loved it, and it is now spreading throughout the Facebook community – with no publicity effort from me whatsoever.

What happens if a user is not using an iOS device? For them, there is the RubyApp website – https://apps.facebook.com/ruby__app/.

Why build a deep linked Facebook mobile app, if you already have a Facebook website? The rationale for building a deep linked Facebook mobile app was that I wanted to include a soundtrack with the bouquet of pictures. iPhones do not automatically play sounds presented by websites – so the solution to creating a high quality user experience for iPhone and iPad users was to bypass this limitation, by creating RubyApp.

If you would like to know more about how Facebook deep linking can drive downloads of your app, and what opportunities Facebook deep linking presents to content providers, please contact me at eworrall1@gmail.com.

Apple iWatch Delayed?

The Register printed an interesting article today, suggesting that the Apple iWatch will be delayed, citing as evidence Apple’s aggressive iWatch team hiring spree.

What does iWatch mean for app development?

When the iWatch arrives, it will present an entirely new vector of customer requirements. Assuming Apple opens iWatch to developers (and there is no reason to think they won’t), iWatch will be an opportunity to give prominence to your offerings. If your competition only has a phone app, the iWatch presents a few seconds convenience – if consumers choose your app, they save a few seconds of their life, by engaging with your app on their iWatch, rather than having to pull their phone out of their pocket.

Do a few seconds matter?

The answer is an unequivocal YES. The world’s premier search engine, Google, have calculated that improving response times by just a tenth of a second produces a measurable change in customer behaviour.

https://support.google.com/mini/answer/15796?hl=en

Average increases in response time of only a tenth of a second have a negative effect on search usage.

The downside is what works on a phone is unlikely to work, unchanged, on a watch size display. No rework was necessary when iPad Mini was released, because iPad apps worked, without modification, on the iPad Mini platform. But a watch size device will be not be able to display content designed for a phone size display. In addition, a watch size device is likely to be heavily constrained, in terms of processing power and battery life, even when compared to a phone.

so watch apps will be new. They will be lean, mean and clean – apps cut back to the bare essentials. But in terms of user interaction, a good watch app will be first in the queue – people will use their watch, if it saves them pulling out their phone. When iWatch is released, getting in first with apps which fulfil user’s needs will be your key to beating the competition.

If you would like to find out more about how mobile apps can help your business, mobile app development in general, iPhone app development, Android app development, or likely near future technology trends, and how they might affect you, please contact eworrall1@gmail.com.

The Third Dimension

When will my phone produce true 3d images – images with depth, like a 3d Television?

The answer – phone size 3d devices are already appearing.

Wikipedia provides a list of 3d phones which are already, or soon will be on sale. My experience with such phones is current generation 3d phones are power hogs – if you want to play a 3d game, you need to plug the phone charger in, otherwise the 3d display will flatten your battery in minutes.

Normal phone displays are power hungry. If you stop touching the phone, normal 2d phones dim the backlight within a minute or two, and switch it off completely a few minutes later, to preserve battery life.

The reason 3d displays are so power hungry is that 3d displays produce two display images – one for each eye. So a 3d phone consumes battery reserves at least twice as fast as a normal 2d phone – even faster once you include the additional computation required to keep both displays coordinated.

What we are looking for then, is not a new type of display – 3d displays are already available. What we need, to make 3d displays practical, is a leap forward in mobile battery technology.

There is good news – we probably won’t have long to wait. And when true 3d displays become mainstream, most of the games and apps constructed by developers like me will be able to use the new technology, without modification.

Under the hood, games and other advanced apps are already 3d. When you see photo realistic space ships, monsters, or other 3d components of app games, what you are seeing is actually a computerised 3d shape created by app developers and artists, projected by software onto a 2d display. No tricks – phone apps and game consoles are already 3d under the hood.

Will the next iPhone, iPhone 6, be true 3d? Probably not. But my prediction is iPhone 7 might be.

If you would like more information about some of the exciting advances in 3d graphics which could be used in the development of your new app, please contact eworrall1@gmail.com.

I want to build a mobile app…

… but I don’t have the money.

Imagine – you have a burning idea for a new app, but you don’t have the cash. You’d love for someone to come in as a joint venture partner, but you don’t have anything to show them, to get them excited. So you ask your IT mates, put advertisements in Gumtree, looking for someone to share your dream – but even your IT mates don’t seem keen to help you.

What do you do?

You launch a project on Kickstarter of course.

Reach out to the world, create your kickstarter project, and find other people who share your dream, who are willing to put a bit of their own cash towards making it happen.

Consider the Kickstarter World of Magic project.

Master of Magic was a mid 90s DOS game, a mixture of strategy and action, which even after 18 years, still has a substantial fan base. The graphics were poor, the game unstable, the gameplay often slow, and it crashed way too frequently. But for diehard fans, there has never been any game since which fired our imaginations in quite the same way.

To date the Kickstarter Worlds of Magic project has raised £45,000 (approx. $60,000) towards realising their dream.

My only regret – I wish I had thought of it first.

If you would like to know more about Kickstarter, and how much money you need to raise to build your dream app, please contact me at eworrall1@gmail.com.

Who should Host My Server?

Most apps require a server component – a place to store common data, which is shared with other app users.

If your app is successful, demand on your server could soar. You have to be prepared for success – by all means keep the costs down until revenues start flowing, but the last thing you want is to have your app’s success compromised by poor customer experiences (and reviews) due to inadequate server capacity.

So how do I keep costs down, while at the same time preparing for success?

Short answer – Amazon

Most people know Amazon as the online bookstore, but for several years they’ve also specialised in providing server hosting for online businesses.

Why choose Amazon? Because it starts cheap, but scales easily. While you are waiting for your marketing campaign to attract app sales, your Amazon server will cost next to nothing to run. The lowest Amazon service tier costs between zero and a couple of dollars per month.

But make those app sales, and with a few clicks of the Amazon console, and you can scale up your server to handle almost any imaginable load, within minutes of discovering your server is reaching its limits. With Amazon servers, you won’t see a sudden success snatched from under your nose by poor customer reviews due to inadequate server capacity.

My only criticism is Amazon is it is technically complex to administer compared to a normal ISP account – but that is why you hire techies ;-).

You still have to register your web domain name with a an ISP, if you want a web address for your server. If you are unfamiliar with server setup, Desirable Apps is happy to walk you through the process, and carefully explain the options and costs of every step of building, deploying and managing your app, including configuration and installation of your server.

Contact me today to discuss your app development and app server development requirements. eworrall1@gmail.com.

Apps and Facebook

What does “integrating social media” with an app mean? What can it do for you?

The benefit most people think of is publicising your app. Everyone who uses Facebook has seen messages like “Fred has just played Candy Crush”, or messages announcing their new high score on Bejeweled. Such messages can help publicise an app – after all, if all your friends are playing, maybe you should give it a try too.

But apps can do far more than simply announce their presence. For example, consider RubyApp

RubyApp (a simple web only app) makes Facebook the core of its service. Rather than building a complex messaging system, I designed RubyApp to use Facebook messaging to send photos and a message of love to recipients on your Facebook friends list. In this case, Facebook provides powerful high performance messaging infrastructure,a rich list of recipients, and free publicity. Facebook have even arranged a special deal to host RubyApp web pages for free – unless 10’s of thousands of messages are sent every month, the only cost to me is the time I invested in building the app – the rest is free.

Of course you can go even further than this. Say I decide to make RubyApp into a fully featured dating app. The new app could build on Facebook to create new connections between people – give people an opportunity to find new friends in their area, who had registered a profile through my app. They could find each other through RubyApp, then choose to become Facebook friends, but at the same time they could maintain their connection to RubyApp – celebrating their successful match with the RubyApp community, even inviting some people they meet through the app to their wedding.

If RubyApp becomes popular enough, entrepreneurs such as Facebook founder Mark Zuckerberg might take an interest. And thats when it gets really interesting.

In summary, if your app could be enhanced by collaboration between users, don’t re-invent the wheel – harness the power of social media, and ask me about how you can leverage the man years of development poured into building the world’s great social networks.

Why does my App Need a Website?

Every app needs a website, or a web page, to help promote the app, and sometimes to offer functionality which is more appropriately provided via the web than through the app.

What can a Website do for My App?

The most important job of your app website is to generate sales – to convert interest interest into a purchase decision. This means presenting your app in a positive way, extolling the features of your app, posting positive testimonials, and anything else that might convince someone to choose your app over your competition.

Why else might I Need a Website?

Sometimes apps need a web server component to function. This is usually because an app needs to share data with other copies of the app. For example, a messaging app would use a server to pass messages to the recipient.

The reason a server is required for sharing data is because apps usually don’t know how to find other copies of the same app. Every app with an internet connection has a presence on the Internet, but the actual internet address of the app is completely random – it could be any address the mobile phone provider or WIFI provider decides to assign.

However, every copy of the app knows where to find its server – the server has a fixed internet address, which is programmed into the app. So apps can use the server to contact each other, in the same way that people who don’t know each other’s address can agree to meet at a cafe they both know.

The other reason an app might need a server is if it needs access to data storage or computation power far greater than a mobile device can provide.

For example, an optical character recognition app might use a server to extract the text from scanned documents. Optical character recognition – extracting text from images – takes a large amount of computation effort, often too much effort for mobile devices to handle in a reasonable amount of time. The greater speed and power of a server can often more than make up for the time lost passing the scanned pictures from the mobile device to the server.

If the app uses a very large database, a server might be required to store the data. Usually where possible, data is stored inside the app, to reduce the need to access data across the internet. But if a very large amount of data is required, or searching the data requires a lot of computation effort, the data needs to be moved to a server.

Finally, a server can provide a safety backup, protection for your data in case you lose your phone or other mobile device.

What Website Technology Should I Use?

The answer depends on what you need the web server to do.

If your app does not need a server component, if your website is purely for app promotion, then use the WordPress Website. WordPress puts ordinary people in charge of the technology – it has grown to utterly dominate the web content provision market. With literally thousands of off the shelf plugins and extensions, offering a vast array of ready built features and functions, a lot of the time it is possible to create and maintain a sophisticated website with no software developer help whatsoever.

If your app does need a server component, then you will need a custom server. There is a large array of server options to choose from, including Amazon EC2, hosted servers, ISP provided servers. Your developer should advise you what solution best matches your needs. Where possible demand to use free technology – Linux or Free BSD. Avoid solutions which require a costly license, such as Microsoft, unless absolutely necessary, unless that is the only way to obtain a specific capability you require – there is no sense spending money unless you have to.

The great thing is, if you do require a custom server component, you can still use WordPress to manage the promotional side of your website. WordPress is also available as a free software package which can be installed on a third party server. Better, it is possible to mix WordPress functionality and custom website functionality, to make custom web pages blend seamlessly with your promotional website look and feel.

I want to know more!

For more information, please contact me on +61499650511, or click here to send me an email.

How can I tell?

How can you tell if your developer is doing a good job?

Sounds like a simple question, but the issue is surprisingly complex.

  1. The developer might not develop the app you want.
     
  2. The app might look right, but it might be buggy, with frequent crashes or malfunctions
     
  3. The app might be incomplete – there might be important missing functionality, which only becomes obvious after the app is released
     
  4. The app might work fine at first, but as the app grows in popularity, the app could slow down, until it is unusable.
     
  5. You might want to engage a different developer to add a feature, but the original developer could refuse to provide source code – access for the new developer to make changes to the code
     

 

  1. The developer might not develop the app you want.
    The easiest, in fact the only way to control this is to make sure you agree a design up front, and to demand the developer send you frequent prototypes. A prototype, as the name implies, is an incomplete version of the app, which you can install on your phone or iPad. All mobile devices support prototyping.

    There is no substitute for playing with a real version of the app, even if it is incomplete.

    If after testing the app, you discover you need to change something, refer back to the agreed design. If the developer has deviated from the agreement, they should amend their work at their expense. If your discovery means new functionality has to be added, or changed, then you need to make a new agreement, and agree a new fee, with the developer.
     

  2. The app might look right, but it might be buggy, with frequent crashes or malfunctions
    Bugs and crashes during development are normal. It only becomes a problem if the problems aren’t fixed before the app is released.

    Demand all bugs are investigated and corrected before release. Dedicate time to testing the app. Sometimes bugs occur because the developer misunderstood your requirements, so you have to test everything. Do not make the final payment on the app until everything works.
     

  3. The app might be incomplete – there might be important missing functionality, which only becomes obvious after the app is released
    The basic rule here is, if it is in the design, it should be in the finished app, otherwise it is outside the scope of what you agreed to pay – you need a new agreement to cover the additional effort required to add the extra feature.

    A good developer will help you identify such gaps during the design process, but sometimes gaps slip through the design process. Occasionally a gap in functionality is not identified until you start getting feedback from customers.

    The best ways of managing this issue is to pay attention to the design, to test the app prototypes, test them thoroughly, show prototypes to your friends and ask them to test them, and solicit as much feedback as you can before the app is released to the public.
     

  4. The app might work fine at first, but as the app grows in popularity, the app could slow down, until it is unusable.
    This issue normally only affects apps which have to share data between different users, apps which have a server component. And it is a surprisingly grey area. If you receive an app from a developer, don’t expect it to work without modification for a billion users. Companies like Facebook and Google spend hundreds of millions of dollars every year maintaining vast data centres full of high powered computers, to provide the performance we’ve come to expect. It is unreasonable to expect similar performance for this many users, without a similar investment.

    Generally I recommend clients discuss performance during the design stage. If the app starts slowing down with a few hundred users, then I would normally count that as a bug which has to be fixed by the developer. If the app starts to slow down with a few hundred thousand users, then its time to look at investing some of the profits from the app into building a better, faster server.

    If an app is likely to grow out of its server box, cloud computing solutions like Amazon EC2 can be a good solution for scaling server capacity. EC2 offers rapid scaling of server capacity – you can add or remove servers by pushing a few buttons on a web admin form, and scale server computing power up to enormous levels, to keep app response times snappy. By the time your app outgrows a service like EC2, you should have enough money from the app to buy your own data centre.

    The cost and benefits of using a cloud computing solution for the server should be discussed in detail with your developer, during the design phase of building your app.
     

  5. You might want to engage a different developer to add a feature, but the original developer could refuse to provide source code – access for the new developer to make changes to the code

    This is a very difficult issue in computing. A few developers try to “lock in” clients, by refusing to provide them with the code for the systems they developed. Sometimes there is a legitimate reason for refusing to provide part of the code, for example if the developer has included sensitive intellectual property which might be ripped off and copied if the sourcecode was released. But all too often refusal to supply sourcecode is a dirty trick used by the unscrupulous, to try to force you to always deal with the same developer.

    My policy on sourcecode is very simple. When the project is finished, and the last payment made, the sourcecode is yours. You paid for it. If any intellectual property issues ever arise which might prevent total sharing of code, they should be discussed up front, and agreed in writing, before the project is started.

What’s under the hood?

The following are some of the technologies I use for building apps.

 

iPhone Objective C


 
Objective C is the native language of Apple computers and iPhones. Objective C is closely related to one of the earliest programming languages, the C programming Language.

Below is a typical section of code written in Objective C:-

CCModel *model = [CCModel getModel];
[model setIsBusy:NO];
[self updateTextFields];

Objective C is fast and flexible. Apps created in Objective C are efficient and very responsive. Objective C also allows easy intermixing of Objective C code with C code or C++ code, which allows developers to take advantage of the vast library of C and C++ sourcecode available on the Internet.

Android Java


 
Java is native language of Android phones.

Until Android, Java was mainly used to create desktop or server software. Large corporations often oscillate every few years between Java and Microsoft C#, depending on the preferences of the IT director.

Android changed this, by making Java sexy again. To adapt Java to a mobile phone environment, Android extensively redesigned some features of the language, especially the part of the language which controls the device screen.

Below is a typical section of code written in Android Java:-

Intent serviceIntent = new Intent();
serviceIntent.setAction("com.desirableapps.DesirableApps.StayAwakeService");
context.startService(serviceIntent);

You can mix other languages, such as C and C++ with Java, but it is more difficult and less intuitive than mixing Objective C with Java. On the positive side, the popularity of Java means there is a lot of useful Java code available from the Internet, which reduces the need to use other languages.

PHP


 
PHP is a server language – I use PHP to create server code, for saving shared data, or for harnessing more powerful server computation power, when a task would be too slow if performed on a mobile device. PHP is fast, flexible, secure, well supported, easy to write, and easy to extend with components written in other languages, such as C++ – everything you want from a server language.

Below is some typical code written in PHP:-

validateField("email");
validateField("password");
if (strlen($status)) {
   $reply = array("status" => "Missing Fields: " . $status);
   $output = json_encode($reply);
   echo $output;
   return;
}

MySQL


 
MySQL is a relational database engine. Relational Databases simplify storing and retrieving data, by allowing the complexity of describing the retrieval or storage operation to be separated from actually using the data. Before the advent of relational databases like MySQL, code and data access were intertwined. By reducing complexity, relational databases dramatically improved software development efficiency, leading to the development of faster, more reliable and easier to maintain software.

Below is some SQL code used by MySQL:-

select password from Users where username = 'fred'

Why MySQL? Because its free, and does a good job. MySQL, together with SQLite, today dominate the database scene, at least outside of the corporate world. Large corporates still tend to use older databases such as Oracle or SQL Server, which offer advanced clustering capabilities (joining many database servers into one super fast database). But if you don’t want to pay for a team of database administrators, and just want something which works, then MySQL is a good choice – which is why I use it.

SQLite


 
SQLite is a very lightweight relational database engine. Unlike MySQL, SQLite does not need separate software processes to run – everything can be embedded in the software which uses the database.

Below is some SQL code used by SQLite (strangely similar to the MySQL code):-

select password from Users where username = 'fred'

This makes SQLite very suitable for in-app databases – databases used by the app for storing local data, or for reference book apps, in which it makes sense for a lot of data to be stored in the app, to give a good response time when you are searching for it.

SQLite can be used as a server database, but in my opinion, in most cases, MySQL is the better choice of server database. MySQL is better at handling simultaneous connections from a lot of different users.

Phonegap


 
Phonegap is a cross platform development language. Essentially it turns every mobile app into a website which lives on the phone, albeit with a set of useful extensions which make a Phonegap app work far more like a normal app than a website.

Below is some code written in Phonegap:-

MyKeyboard.addListener(function() {}, restoreScroll);
RemoteNotifications.register(handleNotificationCallback);
loadDiv( 'signup/welcome.html', 'fade', function() {
      setTimeout(function() { updateRemoteToken(); }, 1000);
      setTimeout(attemptLogin, 500);
});

Phonegap can be a real cost saver – instead of having to write different versions of the same app, for different types of phone, with Phonegap you can write your app once, and have it work on any phone with minimal changes.

The disadvantage is Phonegap is very slow, compared to Objective C or Android Java, and it isn’t very good at searching or displaying large lists of data. Too often when using Phonegap for development, I find you have to compromise features of your app to fit within the limitations of the Phonegap environment.

For apps which don’t need to push the phone to its limits, such as product brochure apps, Phonegap can be an excellent choice. But for the vast majority of apps, in my experience, the disadvantages outweigh the benefits.

Controlling Costs

Hiring an app developer is like booking a cab.

If you give the cabbie clear directions, ask questions, and find out upfront what the cost of the journey will be, you generally get what you want – you arrive on time, and pay fee you agreed at the start of your journey.

If you keep changing your mind, give unclear directions, and don’t know the exact address, so you have to ask the cabby to drive up and down the street while you look for it – the cost of the journey mounts up.

If a cab offers to take you somewhere for a much lower fare than the other cabs, the question you should ask is “why”? What corners are they cutting?

If a cab looks beautiful, and impresses you with the polished chrome work of the car, the smartly pressed uniform of the driver, and the expensive leather interior, you should ask “how much is this costing me?”

Be clear. Demand clarity. Agree the cost up front.