Beginner’s Tutorial

There are many paths that mobile applications developers may choose to follow. You may choose the path of fame (iPhone), the path of greatness and insight (Android), the path of numbers and some quality (Nokia) or other paths filled with almost equal opportunities.

All these paths are extremely wonderful and quite easy to follow because of the Internet, social media and availability of technical resources and materials. Most of the companies are striving so hard to bring wonderful technology within the reaches of the user or customer. Some phone features are advanced, others are quite primitive and basic; and others, still are a mix of all. Below are some quick overviews of the different phone manufacturers, some of their best products and tips on how to develop on each them. This is just a few from the large number of phone manufactures out there. The phones to be looked at are Apple’s iPhone, Google’s Android and Nokia.

iPhone

The iPhone has captured quite a share in the smart phone market over the past 3 to 4 years since it came into existence. Take a look at how, Apple’s founder and owner, Steve Jobs, markets his products. A skill like his is one you all need to strive to have. This man continues to give people “an experience” instead of just a product. You may read or watch how he does it.
http://bit.ly/ccBSsm
http://nyti.ms/1avkmx

612px-Steve_Jobs_Headshot_2010-CROP.jpg
Steve Jobs Photo Source: http://en.wikipedia.org
That covers the personality we wanted to share with you. Next on the menu are the steps you need to take to become an iPhone developer.

It is a hard but wonderful journey. If you can create a good concept or idea about an app, form a good team that you can work with, create the application, pass the “Apple test” to get your app published on the Apple store and then use the power of the web to market the app; you are sure to succeed. When creating these applications and services, try to put your whole being into the development and service. This will usually give you an edge over your competition in midst of a lot of duplication. In the mobile apps world, there are many duplicates or copies created of existing applications. The only question you should ask yourself is: “How do I create an app that will stand out?” A simple answer to that is: “immerse yourself in that product, your competition will never copy the ‘YOU’ in the product".

For an African high school, college or graduate student and professionally, the startup capital to join the Apple business or development world, is relatively high (when compared to the average income of households across Africa). We are writing about iPhone development and other smartphone development because we believe that you all have a chance to live in a changed world. Also, computer equipment and phones are becoming cheaper to manufacture, and this means to the consumer they are cheap (ask Nokia). We accept that the iPhone is quite hard to get in Africa because the demand and market don’t match. We shall give you tips on how to avoid that kind of thing in our entrepreneurial series in the future.

You need a toolset in order to work with the iPhone (and Apple family), they are:
  • An intel based Apple computer (iMac, Macbook, Macbook Pro, Macbook Air)
  • Software to develop the applications with an emulator (this runs an imaginary phone on your desktop) http://bit.ly/aMRXAr
  • Register and join the iPhone developer program http://bit.ly/cLBguB

An Apple computer costs between $1200 to $3000 in Africa, in some select stores. This is quite a sum, of course, it can be downsized if developers were to join hands and have labs that collectively bought a few of those machines, used them to develop apps, paid the in-house developers, etc.

Off-shore development is a big business, companies in many developed nations are doing that, the folks in India and many Asian countries are quickly welcoming offshore development. Offshore development saves companies abroad a lot of money, try to use such opportunities to better your communities, you never know, you might cause them to change in ways unimaginable.

The upside to this kind of work is that, your application can be universally accepted and used in places other than Africa.

How to work with the iPhone
overview_iphonetouch.jpg
Beauty at its best

Earlier, we mentioned that one of the first things to do before mobile apps development is to learn to program. The iPhone’s programming language is Objective-C. Some resources to help you learn Objective-C are found in Apple’s vast developer resources and documentations found in the iPhone Dev center (http://bit.ly/Gx0zt).
To learn objective-C check out:
http://bit.ly/aJ3bRC

Objective-C is quite tedious to the novice programmer; take some time to understand aspects of programming in general, then continue towards the love affair between “man and machine”. Learn about concepts in computer programming such as structured programming, object oriented programming and functional programming. There are many other “kinds” of programming, for now, think about those we’ve just mentioned. Now, Objective-C is an Object Oriented Programming language. We shall advise the novice to study an easy language like Python or Ruby before delving into the complexities of Objective-C.

To learn more about Python check out:
http://bit.ly/12Nuah
To learn more about Ruby, check out:
http://bit.ly/cx6vcZ
Finally, if you have all the tools that you need, to create an application, Apple has provided a simple tutorial that you can follow.
http://bit.ly/bPUEg3

Marketing your applications

A lot of the marketing is similar, we shall talk about that after we’ve covered the smartphones we want to introduce in the beginner’s section.

Android
google-android.jpg

The Android has been a buzz world all over the Tech world. In 2007, Android was purchased by Google, an Internet search company. Later, Google developed an alliance called the OHA or Open Handset Alliance. This is an alliance that is trying to free up the mobile application world by putting out open standards.

Many of you (high school students), are not aware of the importance of standards. Imagine, a situation where school uniforms are made. Uniforms have certain features like, a uniform kit/set is made either for girls or boys. Girls will have a dress (or a shirt and skirt) and Boys will have a shirt and a pair of trousers. When we look at shirts, we see buttons, pockets and the fine cloth that makes the bulk of the shirt. A pair of trousers has zippers and pockets.

Now, the word uniform has strong ties to another word: “same”. A school has to have similar colors, designs and features. If, a school does not have a good supplier (or standard supplier), some of the shirts will have blue buttons, others green, and still others might be yellow. Also, with such disparities, we might see some skirts with trouser zippers, and whole mix of features. This is usually bad and causes a phenomenon known as “fragmentation”, a word borrowed from the mobile tech world, but that also exists in Geography (geology).

Fragmentation or difference in standards can cause very painful experiences (i.e., if you see a new phone with cool features, then another with a feature that works better than the cool phone, you might buy two instead of one.) This causes a lot of confusion, a lot of money is spent making tradeoffs and not knowing which is best. Google is trying to create some form of uniformity. Another good thing is, the Android is open source, and you don’t need to ask for a lot of permission to do things (hacks) on the mobile phone platform, as is the case for the iPhone.

What is so special about Android?

Firstly, the Android is a mobile operating system (OS), although many in the tech world will often call phones that have the Android installed in them just “Androids” or “droids”. A number of phone manufacturers have adopted the Android OS as part of its firmware/software combination before shipping to the consumer; they include HTC corporation, Motorola, Samsung, Google, Sony Ericson, LG, Vodafone, Dell, Kyocera and T1 mobile.

Many features in the Android are quite similar to the iPhone. A few extra features do exist such as:
Camera and Gallery integration; working with images is getting better every year, the hardware of the phone (camera) keeps improving.
22gallery.png

Some devices that run the Android OS, can be turned into a Wi-fi hotspot; you and your friends can easily share stuff amongst yourselves.

22hotspot.png

Multiple language support through the use of the touch screen; virtual keyboards can easily be changed to work with other languages (iPhone does that too… you can clearly see how close competition between the two is, now, just take a look at the N8 and Symbian^3 in the coming months).

Improved performance is top on the list of great stuff that the Android supports.
When the new platform (Android 2.2) was announced we were happy to see new platform features like the Media framework, Bluetooth, and a kernel upgrade (giving the Android more horse power on top of the hardware). With these new features, local file playing is now supported; you can stream video/music or read files almost easily over the LAN (or an HTTP stream), voice dialing over Bluetooth… imagine being able to call a friend who is about 100 meters from you… cool, we know that! Support for contact sharing, better support! There’s a lot of juice with newer versions of Android. We are not neglecting the strength of the iPhone. It too has got lots of power, juice, and elegance. It is sometimes hard to choose between the two (sorry Nokia).

How to develop Android applications


You need to know how to write code in Java. Java programming is a prerequisite to doing fun Android development. Other than Java, knowledge of XML (extensible markup language) is a plus. It will make the development of UIs (user interfaces) easy. A UI is the area a user sees before interacting with the phone; in that area, the user of the phone can write a new message, browse the internet, answer a call and do many more tasks, even playing a mobile game. It is the User Interface: the user’s interface with the device.

Besides being able to program, the student will need to have a working knowledge of web services; concepts like HTTP requests, REST, networking of computers (sockets), etc. All this will be looked at in the intermediate and advanced sections. We shall also include labs, resources and references to other materials that will help you develop Android apps.

Lazy Programmer’s Kit

You will need the following to delve in the art of laziness and code mantra.
An advanced editor to do the programming
You will need to download a Software Development Kit (SDK); with the iPhone, its SDK comes with the Xcode installer as referenced in our iPhone section.

Google provides a lot of documentation on Android application development, there are also a number of blogs written about how to develop applications. Books on Android development are also plenty.

Resources

Java programming: http://bit.ly/buL8S
The Developer’s guide: http://bit.ly/XhDpZ

Running Python on Android OS Emulator from Marcel Caraciolo on Vimeo.


Mini- tutorial for installing and running Python on Android OS Emulator and Phone by Marcel Caraciolo

Nokia

N8_main.jpg

Nokia has the biggest mobile phone presence in Africa when compared with other manufacturers. Most households in Africa can easily buy a Nokia phone.
Nokia has excelled in designing products for developing economies. However, not many Africans can afford high-end smart phones (at least the latest releases) and this also has the same attributes given for the Android and iPhone market in Africa. Nokia is lucky because it has got a stronghold here, it won’t be lucky if it doesn’t support the logic behind owning a smart phone. A phone is not of any importance if one or many of the applications that run on it do not solve a problem that is close to the user or customer.

It is up to you to design apps that will solve a user’s problem, an app that will help boost his or her socio-economic status and something that is worth parting his hard earned money: HELP THEM SCRATCH THEIR OWN ITCH!

Many of Nokia’s phones are released as families. These are the S40, S60, and S80 families. Other specialized releases include Maemo, MeeGo and Linux based phones.

We shall focus only on the S40 and S60 families, the rest shall be left to you as an exercise. A lot of information can be found on Nokia’s forum website http://bit.ly/KsbZV . Try to become a part of it; there are many connections that you can get.

Nokia supports a myriad of languages, development methodologies, frameworks and technologies. You can use Python, Java, C++, Qt, Flash and a few other programming languages to create applications: http://bit.ly/948H2T.

This makes the Nokia development extremely flexible and fun at times. Marketing of your applications is definitely easy using social media. On top of that you can use the Ovi store (which is rather poor when compared to Apple’s appstore). Other ways of getting your application onto the market include striking deals with mobile operators such as AT&T, MTN, Verizon, Warid, UTL, Zain, Telecom Italia, Idea Cellular, Viva, Orange, Mascom, Econet, Hits Telecom, CVT, Telecel centrafrique, salam, Equator Telecom Congo, Airtel, Vodacom, Moov, Evatis, Mobinil, Etisalat, and many more operators and providers.

Knowing how to package your service and product should be good enough a pitch in front of prospective partners. If you are scared of partnerships, the mobile web does exist, an alternate route is to create a mobile web service and site and charge people for using it.

Lazy coders toolkit

A coder is another name for a programmer. Below we shall write quickly about Java, Python and Qt development targeting the S60 family. Java is more oriented in the S40 family.

Qt development

Qt is a framework for cross platform development. i.e. you can develop applications that will run on most desktop operating systems, set-top boxes, and mobile phones that support Qt. In software development (including mobile), developing an app to run on Windows, Linux, Mac and a couple of Mobile Operating systems is quite hard; you have to rewrite/re-engineer the software to work on each different Operating system and sometimes the device. This traditional approach meant that there would be many additional costs coming into the project or development of the app. Other times, developers had to learn more than one programming language in order to port (transfer) applications from one Operating system/device to another. Porting is hard if you continue using non-standardized platforms and languages. Do you remember the title of this section: “Lazy coders toolkit”? Yes… you do. Programmers are lazy and that’s why they create software tools that will cut work time by many measures (even half).
Qt tries to solve this crisis of “hardworking” coders/programmers by making it easy to write your software/application once and deploying it almost everywhere. Isn’t this so cool? Yes… it is.

What you need in order to work with Qt
You need the Nokia Qt SDK. Do you still remember what SDK means?
The Nokia Qt Software development kit can be downloaded from http://bit.ly/8YUiIm
Picture_8.png

It comes with a simulator, an integrated development environment and the Qt codebase (libraries, APIs, and documentation). A new term has been introduced: API is an acronym for Application programming Interface is an interface implemented by a software program to enable interaction of your program with other software. When developing software never reinvent the wheel. Millions of programmers have done some things before you and unlike school work, writing software or programming is the only discipline that allows you to copy and paste someone else’s work without getting punished… you only get punished when you infringe rights or fail to give credit to the designer where its due (or when handling Microsoft software/code, sorry Balmer, things happen).

Next, you need to know how to write C++ (and eventually Qt) programs. Next, read about Qt for Symbian because there are some Symbian specifics you need to understand. Wow, you’ve probably just seen “Symbian” bluntly stated above. Symbian is the operating system that runs on many of Nokia’s mobile phones. It said to be the world’s smartest mobile operating system, but sad story is the hardware is sometimes crappy and not good (especially when we compare it with iPhone and Android). I still have hope for Nokia because they are good at making come-backs. Nokia, don’t disappoint the many people that still have hope in you.

This is quite a lot to read, and we think that the rest of this shall be references to other materials outside of this blog.

More resources on Java (J2ME) and Python (PyS60) can be found in
http://www.symbian.com

Otherwise, the next sessions will take you through a mobile applications prototyping course using PyS60 (Python for S60). Knowing how to create applications, the general methodology and the tools can be quite an asset and part of your artillery in this world.