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

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.

Why should you build an App?

Apps have substantial advantages over websites. While websites are becoming more app like, apps are still far more efficient at harnessing the full power of the mobile device, to offer the best possible user experience.

In addition, apps have substantial offline capabilities – your app can deliver its service in areas of poor or intermittent internet coverage.

For example, the success of apps such as Angry Birds is built on targeting people with a few minutes to spare, such as people commuting on public transport. But internet coverage of public transport routes is often poor to nonexistent, particularly on an underground metro train! Apps which do not rely on a continuous internet connection can continue to provide their service, long after websites fail due to poor mobile coverage.

Finally, the best reason of all – if you don’t act on your idea, and build your app, someone else will. In the globalised world of app development, he who hesitates is lost.

Contact me now, to discuss how I can help turn your idea into an app.