Skip to content

Archive for March, 2009


iPhone SDK Training

Since I started training my staffs on iPhone development, I thought may be it’s time to restart my teaching profession (I built a Java training school back in 2002). So we will start offering a 3-day crash course on everything iPhone soon. Here is the description:


PD401 Jumpstart iPhone Development

Designed for people with prior programming experience such as C, C++, Java, C#, or Visual Basic, this compressed course provides a fast track to the iPhone SDK. Students will learn the basics in the Objective-C language and how to develop native applications for the iPhone and iPod Touch. Objective-C fundamental will be covered for students to quickly transfer their knowledge from other languages. Various iPhone SDK frameworks will be covered in details with hands-on examples.

Upon finishing this course, you will have a comprehensive understanding of all the major frameworks in the iPhone SDK and will be able to start developing on the iPhone platform immediately.

Note: Most iPhone training course on the market is a port from an existing Cocoa course for the Mac desktop platform. This course is built from the ground up with iPhone focus. The only goal is to let you being on this exciting platform as soon as possible.

At the end of the course, students will take home 4 complete fully functioning applications.

Framework covered:
- Core Location (GPS)
- Multi-touch Gesture
- Acceremormeter input
- Audio Recording
- Photo Capturing
- Quartz 2D graphics
- OpenGL 3D graphics
- Audio and Video
- SQLite

Class Outline:
Session 1:     Objective-C, Cocoa, Coca-touch fundamentals. Objective-C classes, memory allocation, language conventions.
Session 2:    Setup development certificate and mobile provisions for deploying on the device.
Session 3:     Building View based application with Interface builder. Standard UI widgets. View Controllers and View transitions. iPhone UI design strategies.
Session 4:     SQLite, UITableView and custom TableViewCell,
Session 5:    Core Location, Google Map integration
Session 6:    Server integration with HTTP, FTP. Integrate with Php and Ruby on Rails servers with XML-RPC.
Session 7:     Multi-touch Gesture. Accelerometer input, shake and movement detection.
Session 8:    Mutli-media. Audio and video, Audio Recording, Photo capturing
Session 9:    Graphics. Quartz2D animation and OpenGL3D animation
Session 10:     Prepare application for upload to the App Store and tips in dealing with the Apple approval process


iPhone development: Web or SDK

Came across an article from Ian Thain.

Web or SDK?
— Web Development and SDK Development each offer distinct advantages to the iPhone Developer…So I set out over the last two months, with the aid of the LinkedIn Polls feature to gauge the trend

I am a true believer of native application. After so many years of working on write-once-run-anywhere, I’ve come full circle (twice, actually) that if you want to develop for a particular platform, you should take advantage of all the features from a platform.

This is also why the iPhone come in late and now are far ahead of WindowsMobile. Windows has been in the mobile business for over 10 years and yet it failed to capture the market. Why? Because they tried to build an OS that will run on all the phones out there.

So now I take device agnostic very differently. As app developers, our goal is to provider users with the best experience. If I build a UI that will be ‘translated’ to different devices, the end result is that it doesn’t feel right in some device. For those who have done serious mobile web development, you will understand even web app will need to be tuned for each device, resolution, browser, OS, etc… So if someone tells you that you can develop the app once and it will work nicely on all platforms, either they are not telling the truth or the end result is not good.

That said, other than the UI, everything else should be platform neutral. Rather than trying to make the UI generic (which is impossible), we are creating a set of control functions that are common across all platforms, so device agnostic to us is common data (through XML), common behavior (through Restful webservices) and native UI.

Now am I saying everything should be native and never web? Of course not. web is great because it’s flexible, easy to develop, easy to deploy and provide real-time information to the users. Now when we design new app, we always starts with the final user experience, that always lead us to building native app with some web widgets inside for real-time dynamic updates.