How to become a published iPhone and Android Developer in a month

This is the story of my iPhone development experience so far.

Pre-Requisites:

For iPhone Development: Apple Mac computer, iPhone 3G, iPhone Developer enrollment

For Android Development: Windows or Mac, a supported Android Phone, Android Developer registration

That’s all you need to start. Item #3 can wait until you are ready in a couple of weeks of study and experiments.

There are two routes that one can take for iPhone development. I took both one by one and have seen the pros and cons of both.

The Easy Method

Appcelerator Titanium is an excellent tool for existing web developers to start developing iPhone and Android applications. They have free video tutorials that walk you through some very essential training of both iPhone and Android development setup. These are must watch videos as they’ll walk you through step by step guide on how to register as iPhone developer and setup the needed certificates for the app submission.

Titanium uses JavaScript as the main language of coding which makes it very easy for a web developer. I have been through it and was able to publish 3 apps for Android platform and 4 apps for iPhone within 2 months. Here are the pros and cons of Titanium:

Pros: Extremely easy, do not need to learn new programming language, with very little effort you can publish your apps on Android platform as well.

Cons: Its still in early stages therefore it may have some bugs but you can work around them, documentation and help is limited but growing, does not have 100% api support of the underline platform.

If you want to develop small apps which does not require too many complications, it works great. Many great apps have been developed on it including some games. I would strongly recommend Titanium for anyone who does not want to learn a new language – Objective C.

The Difficult Method

For many it may not be the difficult method if you are hard code c/c++ programmer, but since I’ve spent most of my time in system administration and web development, it was a rough ride.

Step 1. First thing you need to do is learn Objective C. There are some really good books in the market. If you know C, then its not difficult. But if you don’t know C then you need to go a step back and learn C first. Once you know C, you can start learning Objective C. The book by Apress is awesome. This is a must read book if you don’t know Objective C. Trust me I know what I’m talking about. There is no easy way out of this. I started looking into iPhone SDK before looking at this book but it was not making real sense until I stopped and started with this book. There are some cool tutorials on the web as well, some small some big, but this book will get you to stand up.

Step 2a. If you like video tutorials, I strongly recommend Lynda’s iPhone SDK tutorials. They are just too good to get you up to speed. You don’t have to do any reading. Just watch them and go through them as much as you want by hand.

Step 2b. If you want to go to the book directly, Beginning iPhone 3 Development: Exploring the iPhone SDK is the best book to get you started. It will walk you through step by step and within a week’s time you’ll be able to not only code yourself but understand an existing iPhone project if someone shares their code with you! 😉 First 11 chapters are good enough and then it gets into advance stage.

Step 3. Watch the Appcelerator Titanium videos as mentioned in The Easy Method. They will train you how to enroll in iPhone developer program and get the developer and production profiles setup on your Mac. You need those to test the app on your iPhone and later build distribution binary.

Here are the pros and cons of this development strategy:

Pros: Professional IDE (XCode) and Interface Builder (IB) provided free of cost by apple (XCode 4 coming soon will rock developers world, its just too awesome, watch WWDC video about it), basic UI design can be done in IB, lots of help available on the web plus many books.

Cons: Need to learn Objective-C, also need to learn iPhone SDK, you are limited to Apple products.

That’s all folks. If anyone has any question, feel free to ask me and I’ll update this blog post accordingly.

Is your web host really a web host or reseller? how to find out?

There are thousand of hosting companies out there that claim they own the hardware and data center but do we have that many data centers? Most are just fly-by-night hosting resellers. They rely on some other hosting provider for service and then just sell it to you for a higher prices. There are literally thousands of resellers who are actually not a hosting company by any definition. They add no value to the service and off load all support requests back to the original provider (adding delay). And the result is a degraded service to end customer on a higher price.

Real resellers will not hide the identity of their provider. They will add some value to the hosting packages such as development, design and support and you would be ready to pay a higher price for this added value. You can trust them for being honest.

If you want to know if your hosting company is actually a hosting provider, all you have to do is run a whois query on the IP address of your hosting account. You can do that at ARIN website www.arin.net. When you visit the website you can find a search box on the top right corner that says SEARCH WHOIS.

The query will show you which organization actually owns the IP address.

Another thing you can do is telnet to your domain on port 25 and see the SMTP banner which will show you your server hostname.

Third thing you can do is send email from your account and then check the email headers which will show the server hostname. Do a whois on the domain name part of the server hostname to see which company owns that domain.

You can also run a traceroute to your server IP (or tracert on Windows command prompt) to see which networks come between you and your hosting server. This can reveal a lot of information about the upstream provider of your web host. As the traceroute runs it will show you the IP address or hostname of each router on the way to your server.

Similarly if you check phpinfo you can see the hostname of the server at the very top.

If you have secure shell access (real hosting providers will provide you ssh access), you can run this command

uname -a

which will show you server hostname and linux kernel.

Speaking of linux kernel, it can provide you details if your hosting server is actually a hosting server or a virtual machine sharing its hardware resources with another reseller or user. For example the popular Virtuozzo or OpenVZ kernel has “stab” in its name. You can then discuss with your provider if they are on a VPS for a reason or are they reselling the service?

Honesty is the best policy. Honest hosts are hard to find. But I’ll recommend one – Webx Networks is the best web hosting company and has very qualified support. They provide support for all the latest in technology such as php5, MySQL5, Perl, Ruby on Rails, and Apache2 on the Linux CentOS platform. I use them for some services but I have my services spread out to some other providers as well. I just wanted to acknowledge their good services in this post as being an honest and reliable web host for 12 years.

iPhone

This is my first post using iPhone (wordpress app). Last week I finally jumped on the iPhone bandwagon. Although I changed my desktop computing to Apple’s Mac last year I wasn’t sure if I really needed Apple’s iPhone as well.

Being a developer and manager in IT in the last few months iphone came up more than once as an important tool to access web services. Having used blackberry for 4 years this is indeed a welcome change and I’m hopefull I’ll be more productive. At least I can blog on the go 😉

Some of the things that have impressed me are, in no particular order, the enormous amount of apps from games and web services to video news and live tv channels, the slick touch interface and gestures, tethered Internet over 3G (I have 6GB plan as a past deal from my provider), geolocation, imap access to email, and web browsing like never before in Safari. Plus thanks to a great number of hackers my iPhone has a lot more features now including ssh and running programs in the background 😉

There is still a lot of room for improvement e.g. multiple signatures in email, mutiple from addresses with from names, plugins in safari are much needed.

Currently I’m looking into developing iPhone apps myself and the future looks bright as iPad is coming out this month. Fingers crossed.

RVSiteBuilder gives Fatal error in WHM

This error is thrown in WHM when accessing RVSiteBuilder. In cPanel RVSiteBuilder brings blank/empty page.

Fatal error: Call to undefined method DB_DataObject_Error::find() in /var/cpanel/rvglobalsoft/rvsitebuilder/modules/sitebuilder/classes/SitebuilderDao/CharsetDao.php on line 124

The fix provided by RVSiteBuilder team is

If this folder is empty /var/cpanel/rvglobalsoft/rvsitebuilder/var/cache/entities/ then run this command

/usr/local/cpanel/3rdparty/bin/php /var/cpanel/rvglobalsoft/rvsitebuilder/etc/rebuildDataobjects.php

This worked.

Snow Leopard – Free Disk – Urdu Nastaleeq Font

Last night I went ahead with the Mac OS X upgrade to Snow Leopard. The upgrade worked like a charm except I had to upgrade two software to latest versions (Zoc and iStats Menu). Other than that I have not found any major issue.

Since Apple claimed that the upgrade should free up 7GB disk space, I kept a note of the disk usage before the upgrade and once the upgrade completed I had gained 15GB disk space!!!

And to top it all now Urdu Nastaleeq font works great in Safari browser!!! This was one of my wish that Mac could support Unicode OpenType Nastaleeq font in the browser. It worked before in TextEdit in Leopard but now it works in Safari as well and we can read Urdu articles and websites in beautiful Urdu font.

Switched to Mac – Second week of use and am I impressed or what?

I have recently jumped from Windows to Mac and consider myself a n00b in the Mac world. But no day has passed since I started using Mac that has not impressed me with its features and capability. I am not a regular blogger otherwise I would have posted each day of my progress that might have helped some other soul as well. But what I found today, a very little thing, forced me to post this.

Firstly since I come from Linux server admin background with some years spent in FreeBSD, I was hoping to get some added benefit with the underlying system. And to my surprise today I found that my system already has php installed! 🙂 This just rocks my world.

bash-3.2# php -v
PHP 5.2.8 (cli) (built: Feb  5 2009 21:21:13)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies

Yes thats the command line of my system (Terminal).

Yesterday I activated named (yes its also installed by default) to setup my own dns cache server, which would by-pass my ISPs name server. I found the tip from google search on how to do that and setup startup script. That opens up a new whole world for me to do shell scripts and what not!

A day before that I hooked up an external drive to use Time Machine (mac’s cool built-in backup system) which backs up whole of the system automatically and keeps regular backup where I can go back in time to restore data. Simple plug n play!

That’s it for now. Time to work.

Difference between tun and tap in openvpn

TUN devices provide routing mode and start a virtual point-to-point connection; TAP devices provide bridging mode and start a virtual network segment. The parameter ifconfig needs the two tunnel IPs when we are using tun devices, and the local IP along with netmask, when we are using tap devices.