Thursday, June 09, 2011

Last call for iOS and Android courses in June 2011

This is the final call for all participants interested in enrolling for the iOS and Android courses in June 2011.

As spaces are limited, do register quickly to avoid disappointment. Download course brochures and application form here.

Friday, May 27, 2011

Mobile Programming Courses in June 2011 - iPhone, Android, and Windows Phone 7

Here are the courses running in June 2011. If you have not registered for them yet, do so now as seats are running out.

Download course outlines and application form here.

Wednesday, May 25, 2011

Learn iOS Bluetooth Programming at DevTeach 2011

Join me in my talk at DevTeach and I will show you how to program your iOS devices to talk to each other using Bluetooth. Click the video above to see a simple example that I have developed to demonstrate the kind of things you can do with Bluetooth. See you at DevTeach!

Come and join me in my talks at DevTeach - May 30 - June 3 2011

I will be presenting 2 sessions at DevTeach 2011 (Canada). The 2 sessions are:

Building Location-Aware iOS Application
In this session, you will learn how to use the Location Manager to obtain geographical data in your iOS application. You will learn how to implement a location tracker application that allows you to log your movements, as well as how to use Google Maps to display your current location. Last but not least, you will learn some of the new location features available in the iOS SDK.

Developing Bluetooth iOS Applications
In this session, you will learn how to use the GameKit framework in the iOS SDK to develop compelling iOS applications. You will learn how to write a simple chat application that allows two iOS users to communicate. In addition, you will also learn how to use the Voice Chat feature in the GameKit to transfer voice data between two devices.

Hope to see you at DevTeach!

San Francisco - Android and iPhone Bootcamp

I will be in San Francisco from 4 to 7 June 2011. If you are looking for Android or iOS Bootcamp training during this period, give me a buzz.

Friday, May 20, 2011

Weekend class - Foundation of iPhone Programming - 28-29 May 2011

There will be a special run of the Foundation of iPhone Programming (S$997 nett) next weekend - 28-29 May 2011 (9am to 5pm). Venue is Mountbatten Square. Lunch provided.

Register now to avoid disappointment!

iOS Bluetooth Programming - Getting devices to see each other

Sometime back, I wrote an article for DevX.com on how to write Bluetooth iPhone applications. In that article, iOS devices running that program will be able to see each other when you use the GKPeerPickerController class to look for each other. So why is it that your application can only see another device running the same application, and not other Bluetooth applications running on the same device?

The reason is simple. When you use the GKPeerPickerController class to look for other Bluetooth devices, it creates a session ID. Applications will only be able to see each other if the session IDs are identical. By default, the session ID is the application's Bundle Identifier (you can see this in the Info.plist file in your Xcode project. Hence, if an application is installed on two devices, one should be able to see the other since they have the same Bundle Identifier. By default, the bundle identifier is set to: com.yourcompany.${PRODUCT_NAME:rfc1034identifier}. So if two applications have different Product Name they won't be able to see each other.

But what if you want to customize the session ID by creating your own? To do so, you just need to implement the following method:
- (GKSession *)peerPickerController:(GKPeerPickerController *)picker
sessionForConnectionType:(GKPeerPickerConnectionType)type {
if (!self.currentSession) {
self.currentSession = [[[GKSession alloc] initWithSessionID:@"Session_ID_Here" displayName:nil sessionMode:GKSessionModePeer] autorelease];
self.currentSession.delegate = self;
}
return self.currentSession;
}
In this case, devices can only see each other if their session ID are the same. The displayName argument allows you to specify the name of the device that will be seen by the other party. If you set it to nil, iOS will use the device's name.

Wednesday, May 18, 2011

Coming soon - Beginning Android Tablet Application Development (Wrox)

If you are fascinated with the many Android tablets in the market and wanted to write an application or two for these devices, check out my latest book that is coming your way soon in August. This book is geared towards those beginning developers who wanted to start writing Android tablet apps first. This book will get you started in no time.

Once you are up to speed, head over to the Beginning Android Application Development for the full gutsy gory details of Android programming.

How to change the Base SDK of your iOS Project

In the past, when you create your iOS project, Xcode will always hardcode the version number of the SDK in your project.

If you open the project using a newer version of the SDK, you will get the Base SDK Missing error:

image001

To resolve this, simply double-click on the project name (in this example, BasicUI) to open the Info window. In the Info window, select the General tab:

image002

At the bottom of the Info window, select the drop down for Base SDK for All Configurations and select Latest iOS (iOS 4.3). Once this is selected, close the Info window.

Back in Xcode, you should see the SDK number that was selected earlier:

image003

If you don’t see this, close the project and reopen it again. This time, the updated version number should appear.

Friday, May 13, 2011

Android Tip - How to intercept SMS messages and prevent them from appearing in the Messaging App?

Sometime back, I wrote an article on how to intercept incoming SMS messages in your Android application - http://mobiforge.com/developing/story/sms-messaging-android.

Ever since, I have received numerous questions on how you can prevent the incoming messages (that you are trying to intercept) from appearing in the Messaging application (and hence in the status bar). The solution to this is pretty straight-forward once you understand the concept of broadcast receivers.

Basically, your program registers a class SMSReceiver as a broadcast receiver to intercept incoming SMS messages:
       <receiver android:name=".SMSReceiver">
         <intent-filter>
             <action android:name="android.provider.Telephony.SMS_RECEIVED" />                  
         </intent-filter>
     </receiver>

When a SMS message is received, all applications (including the Messaging application) will take turn to handle the incoming message. So, in order to prevent the incoming message from being handled by the Messaging application, your application just needs to handle the message before the Messaging app has the chance to do so. To do this, add the android:priority attribute to the <intent-filter> element, like this:
        <receiver android:name=".SMSReceiver">
         <intent-filter android:priority="100">
             <action android:name="android.provider.Telephony.SMS_RECEIVED" />                  
         </intent-filter>
     </receiver>
Set this to a high number, such as 100. The higher the number, the earlier Android executes your application. So in this case, when an incoming message is received, your application will execute first, and you can decide what to do with the message. To prevent other applications from seeing the message, simply call the abortBroadcast() method in your broadcast receiver class (SMSReceiver):
        this.abortBroadcast();
Once you do this, no other applications will see your SMS message. :-) Have fun!

Sunday, May 08, 2011

Courses in May-June 2011 - iPhone, Android, and Windows Phone 7

Year 2011 marks the year of the tablet. With the new Apple iPad 2 and the new Android tablet by Google, the tablet market is set to explode in the second half of 2011 and beyond. And this is the best time for you to pick up the foundation skills so that you can get yourself ready for the next wave in mobile development.

Here are the courses for the month of May:
* Android Programming - 18-19 May 2011
* Foundation of iPhone Programming - 28-29 May 2011 (weekend classes)

And the schedule for June 2011 is as follows. Download course brochures and application form here. Venue for all classes will be at Mountbatten Square.





Thursday, May 05, 2011

Beginning iOS 4 Application Development in Korean!

Wow....I didn't know that until the books came...my Beginning iOS 4 Application Development book (Wrox) is now available in Korean!

Now, I want to know how my name is written in Korean.... :-)

For iOS courses, check out the schedule in June here.

Wednesday, April 27, 2011

Demo code for Mobile Connections 2011

During one of my sessions at Mobile Connections in Las Vegas, I mentioned about an iPhone tracking application that is able to send tracking information to a socket server that displays two maps, showing the movement of the devices being tracked. Here is the source code.

I am glad that many people have feedback that my sessions were useful and interesting. Thank you all! I will be uploading some of the photos that I have taken during the sessions. So sorry for the delay as it was a very busy week for me.

Tuesday, April 12, 2011

Get my Android book free when you sign up for my Android Boot Camp at Mobile Connections!

My publisher, Wrox, has informed me that they would be sponsoring each participant of my Android Boot Camp at Mobile Connections (17th April) with a copy of my latest book - Beginning Android Application Development. This is a fantastic deal as it contains many cool code samples that will make you become an Android developer quickly.

Hurry, sign up for the Boot Camp now and I look forward to seeing you this Sunday at Las Vegas! And many thanks to the generous marketing folks at Wrox!

Monday, April 11, 2011

Beginning iPhone SDK Programming with Objective-C translated into Chinese!

Came back home today to see another of my book translated into Chinese. This time it is "Beginning iPhone SDK Programming with Objective-C". Cool! :-)

Wednesday, April 06, 2011

Join my Android Boot Camp at Mobile Connections - 17 April 2011

Come and join my Android Boot Camp at Mobile Connections! In this one-day boot camp, I will get you jumpstarted with Android development. By the end of the day, you will learn how to write your first Android application that displays your current location on the Google Maps. What's more, you will also learn how to send and receive SMS messages from within your application! And, did I say you will also learn how to deploy your application to a real Android device? :-)

See you there! Be there or be square!

Friday, April 01, 2011

Courses for Q2 2011 now released

The schedule for the various courses in April to June 2011 is now released. Download the course brochures and application form here.

In particular, there is a pilot run of the Foundation of iPhone Programming course held over the weekend of 21-22 May 2011.

Beginning April, all attendees of my Android Programming course will get a free copy of my latest Beginning Android Application Development book (Wrox)!

And of course, all attendees of the Foundation of iPhone Programming course will get my

Saturday, March 26, 2011

New batch of Advanced iOS Programming graduates

Here is the latest batch of the graduating attendees from my Advanced iOS Programming course on the 24-25 March 2011!

Check out the next run of the iPhone series of courses here.

Course Schedule for 2Q 2011

Here is the schedule for the various courses in 2Q 2011

April
* Foundation of iPhone Programming - 7-8 April
* Programming iPhone USer Interface - 13 April
* Advanced iOS Programming - 14-15 April
* Android Programming - 28-29 April
May
* Foundation of iPhone Programming - 9-10 May
* Advanced iOS Programming - 12-13 May
* Android Programming - 18-19 May
* Windows Phone 7 Programming - 26-27 May

NEW WEEKEND CLASS
* Foundation of iPhone Programming - 21-22 May

June
* Foundation of iPhone Programming - 13-14 June
* Advanced iOS Programming - 16-17 June
* Android Programming - 20-21 June
* Windows Phone 7 Programming - 23-24 June

Tuesday, March 22, 2011

Foundation of iPhone Programming - 21-22 March 2011

A big thank you to those of you who attended the Foundation of iPhone Programming course on the 21-22 March 2011. It was indeed a fun 2 days of intense iPhone programming. I hope that with this course you are now equipped with the knowledge to develop your first killer iPhone application!

Check out the next run of the series of iPhone courses here.

* As my book - Beginning iOS 4 Application Development, is currently out of stock in Singapore, participants will only get a copy when the new stocks arrive in mid-April. My sincere apologies for this.

Monday, March 21, 2011

Speaking at DevTeach 2011

I am very excited and honored that I have been invited to speak at DevTeach 2011, to be held in Montreal, Canada., on May 30-June 2011. I will be speaking on two sessions on iPhone development. One topic will be on location-based services, and another will be on iPhone Bluetooth programming using the GameKit. If you are around during that time, be sure to say hi! See you in Canada!

Check out the speaker list if you want to know who else will be there.

Wednesday, March 16, 2011

Courses in April 2011

Backed by popular demand, here is the schedule for the various courses in April:

* Foundation of iPhone Programming - 7-8 April 2011 (was 11-12 April 2011) *updated
* Programming iPhone UI - 13 April 2011
* Advanced iOS - 14-15 April 2011
* Android Programming - 28-29 April 2011

Download the course brochures and application form here.

Tuesday, March 08, 2011

How the Nokia and Microsoft collaboration will affect mobile developers

By now, you should have heard of the announcement of Nokia's collaboration with Microsoft to put their Windows Phone OS onto their devices. The following are some of my thoughts on how this collaboration will affect mobile developers.

This is definitely a win for Microsoft. Having a partner strong in hardware is definitely going to drive up the reachability of the platform. And Nokia has always been good in their hardware, hence Microsoft will get a lot of additional exposure, apart from the usual hardware partners like Samsung, HTC, LG, and others.

I am not sure if Nokia will win in the long run. In the short term, this may drive up the sales for it's hardware, but Nokia's pace will likely be dictated by the timeline of the Windows Phone OS. Whatever hardware innovations they have will be subjected to the support of the OS. We do not know the detailed arrangements, but I doubt Microsoft will customize the OS too much to suit each device manufacturer's request as other device manufacturers will also want the same treatment. Also, by this collaboration Nokia is directly jumping into the boxing ring together with the other devices manufacturers, and will now face the other very stiff competitors such as HTC, Samsung, LG, etc, who already have a head start in supporting the Windows Phone OS.

I think the overall success factor affecting Microsoft (and Nokia and other device manufacturers) is their ability to build a successful ecosystem. Having a good ecosystem will get people to buy your devices, and when people buy your devices, developers will come. This is very much a chicken-and-egg problem - there are no users if there are no apps, and if there are no users, there are no apps.

Personally, I would think that Nokia is buying time to get their MeeGo OS ready. This is very much like the early day of Steve Jobs' return to Apple, where he collaborated with Microsoft by bundling Internet Explorer with the Mac OS. In return, Microsoft agreed to invest in Apple and committed to continue writing apps for the platform.

Obviously, if you are a Symbian developer, this is really bad news. I don't think there is much you can do now, except to learn a new platform as soon as you can. The good news is that the Windows Phone platform is very easy to pick up. Experienced C++ and Java developers should have no problem in learning the .NET Compact Framework, which supports languages such as VB.NET and C#.

If you are a Windows Phone developer, this news could not be better - you now have a wider customer base to reach out for. If you have been hesitating to get onto this platform, there is no better time than now.

If you are an Android developer, there is little impact for you, as Android devices are already flooding the market today. And there is no certainty that Nokia might not look to Google for another partnership. Look at Motorola, their devices run on all sorts of platforms, such as Windows Mobile, Android, etc. Moreover, 2011 is the year of tablets, with the Motorola Xoom stealing the limelight at this moment.

What about iPhone developers? This is not going to change your world as you have enough devices to keep yourself busy for a while - iPod touch, iPhone, and iPad. And oh yes, the new iPad 2 will make things even more exciting, not to mention the up-and-coming iPhone 5.

In short, this year is going to be a very exciting time for mobile developers, only if you choose the right platforms to hedge your bets. For me, I am putting all my money on Windows Phone, Android, and iOS.

Learn Windows Phone 7 Programming today!

For those of you sitting on the fence, think no further. With the collaboration of Microsoft and Nokia, Windows Phone 7 is set to be the next mobile platform that you cannot simply ignore.

Here is the series of articles on Windows Phone 7 programming that I have written to get you started:


When you are ready to learn more, come join me in the upcoming course on Windows Phone 7 programming on the 28-29 March 2011.

Download the course brochures and application form here.

Monday, March 07, 2011

Learn Android Programming Today!

According to the ComScore report released on Monday, Android has overtaken BlackBerry as the most popular smartphone platform in the US. Going forward, Android is definitely going to eat into the market share of other smartphone vendors, such as Apple's iPhone and Nokia's Symbian.

Now is the perfect time to start learning about Android programming. And what's more, get a head start today so that when Android 3.0 is released, you would be well equipped to tackle Android tablet programming!

Download the course brochures and application form here.

Register for the Android Programming course on the 17-18th March 2011 today!

Monday, February 21, 2011

Courses for March 2011

I am pleased to inform that the series of iPhone courses on the 21-25 March are all confirmed. If you have not registered yet, do so now so that I can reserve the seats for you.

Download the course brochures and application form here.

Sunday, February 06, 2011

Foundation of iPhone Programming - 10-11 Feb 2011

There is still time to register for the Foundation of iPhone Programming course running on the 10-11 Feb 2011. For more details, download course brochures and application form here.

Each participant will get a copy of my iOS 4 book - Beginning iOS 4 Application Development.

See you at the course!