Tuesday, January 21, 2014

Foundation of iPhone Programming course - 27-28 Jan 2014 - CONFIRMED

The Foundation of iPhone Programming course next week (27-28 Jan 2014) is confirmed! Learn how to write iPhone apps using Objective-C. You will also learn how to use Storyboard to build compelling UI for your iOS apps.


For quick registrations, email weimenglee@learn2develop.net and we will take care of the rest!


Sunday, January 19, 2014

iBooks Author and Keynote Courses


Interested to publish your own eBooks? In this 1-day course (MAC101), you will learn how to create your own iBooks using the new iBooks Author. You will learn how to quickly create interactive iBooks and preview them on your iPad. You will also learn how to publish your iBooks on the iBookstore.



Have an iOS device and want to create stunning presentation slides? In this 1-day course (MAC103), you will learn how to create your own award winning Keynote presentation slides, all from the comfort of your iPad!  You will learn how to quickly create compelling presentation slides and incorporate multimedia elements into your presentation.

Venue
Bayview Hotel Singapore
30 Bencoolen Street
Singapore 189621
9am to 5pm

Fees
MAC101 - S$399 (nett)
MAC103 - S$399 (nett)

Date
MAC101 - 14 Mar 2014 (Fri)
MAC103 - 7 Mar 2014 (Fri)



Download MAC101 course outline and application form here.
Download MAC103 course outline and application form here.

HRD101 - Getting Started with Raspberry Pi

I am pleased to announce that the next run of the Raspberry Pi course is on 28 Feb 2014.


Based on feedbacks from the previous runs of the course, we have put in more focus on hardware-related projects, such as:

    * How to build your own CCTV surveillance using a Webcam
    * How to build an iBeacon
    * How to detect motion
    * How to connect to a LCD display to display Twitter feeds

In addition, we will also cover how to set up your own Web server using Apache and PHP!

Venue
Bayview Hotel Singapore
30 Bencoolen Street 
Singapore 189621
9am to 5pm

Fee
S$599 (nett)

Date
28 Feb 2014 (Fri)



Download course outline and application form here.

Tuesday, January 14, 2014

Training Roadmap for iOS, Android, Wearable Computing, and Web Development

Confused with so many different courses? Not sure where to start from? We have compiled a series of training roadmaps for people who want to venture into the different areas. Have fun and feel free to share with your friends and colleagues!

Questions? Email us at weimenglee@learn2develop.net. 





Thursday, January 09, 2014

WEB102 – 1-Day Developing HTML5 Web Applications - NEW COURSE

HTML 5 is the new standard for the venerable HTML specification, a standard for displaying Web content. HTML has come a long way, going through a number of revisions - with the last version - 4.01, recommended by the W3C in 1999. The design goal of HTML 5 is to ensure that an application that you write can work on all browsers without the need to install additional plug-ins. It should be able to do everything from animation, to music and videos, local storage, offline applications, and more. HTML 5 is also cross platforms, meaning that your apps should be able to work whether it is run on a notebook, smartphone, tablet, or desktop computer.

In this 1-day course, you will be able to understand and use the new features of HTML5 through working with practical examples.

Topics

          Quick Introduction to HTML
          Crash Course in JavaScript and CSS
          Using Canvas for drawing graphics    
          Using SVG (Scalable Vector Graphics) in your HTML 5 pages
          Implementing drag-and-drop in your Web Pages
          Implementing LBS (Location-Based Services) in your Web applications
          Embedding audios and videos in your Web pages
          Using different input types in your Web pages
          Using Web storage in HTML 5
          Creating offline Web applications
          Creating responsive Web applications using Web Worker

          Implementing notifications in your Web applications through server messaging

Venue
Bayview Hotel Singapore
30 Bencoolen Street 
Singapore 189621

9am to 5pm

Fee
S$699 (nett)

Dates
21 Feb 2014 (Fri)

Download course outline and application form here.

Thursday, January 02, 2014

Bluetooth Low Energy Programming - iOS and Android

For those of you who are into Bluetooth Low Energy programming, there are two courses coming up this month:

* 22 Jan 2014 - AND303 – Advanced Android – Bluetooth Low Energy Programming
* 29 Jan 2014 - IOS301 – Advanced iOS – Programming iBeacon in iOS 7 using Bluetooth Low Energy

Both courses will focus on the following topics:
    * How to connect to BLE devices (such as Heart Rate Monitor, Temperature Sensors, Keyfobs, etc)
    * How to read and write to characteristics on the BLE devices
    * How to use iBeacons for Location-Based Services
    * How to scan for iBeacons
Participants will get a unit of the Ti SensorTag. The Ti SensorTag is a Bluetooth Low Energy (CC2541) device containing 6 sensors:

    * temperature
    * humidity
    * pressure
    * accelerometer
    * gyroscope
    * magnetometer


Venue
Bayview Hotel Singapore
30 Bencoolen Street 
Singapore 189621
9am to 5pm

Thursday, December 19, 2013

Xamarin Course on 8-10 Jan 2014 Confirmed!

I am happy to announce that the MOB101 - Xamarin Course on 8-10 Jan 2014 is now confirmed!

Using the Xamarin Studio, you can now create compelling Android and iOS (iPhone and iPad) apps using C#. Best of all, you can share your application logic  between the two platforms. And when you are ready, you can easily port your application to Windows Phone 8 (using Visual Studio)! And did I mention that your app developed will be a native app and a first-class citizen on the platform?

On 8-10 Jan 2014, I will have the 3-day course on using Xamarin to build iOS and Android apps. This course covers both iOS and Android development. As such you need to bring along your own Mac, as the testing needs to be done on the iPhone Simulator, which requires a Mac.

For those of you who want to know about the power of Xamarin, check out my article on the Jan/Feb issue of Code Magazine!


Wednesday, December 18, 2013

The Pebble appstore is coming to a smartphone near you!

The Pebble appstore is coming to a smartphone near you! Arriving in early 2014, you can now download your favourite Pebble apps through the Pebble appstore. 


Now is the time to crank up your development engines and write apps for the Pebble. Join our inaugural Pebble programming course on the follow dates:

* 6-7 Jan 2014 (Mon-Tue)
* 6-7 Feb 2014 (Thu-Fri)
* 10-11 Mar 2014 (Mon-Tue)

See you at the course! All participants will get a Pebble watch worth US$150!

Android Bluetooth Low Energy Programming course on 26 Dec 2013 confirmed!

I am happy to announce that the Android Bluetooth Low Energy Programming course on 26 Dec 2013. You will get a unit of the Ti SensorTag, which allows you to write an Android app to read the various sensors embedded within it. For more details, check out the course outline here.

Tuesday, December 10, 2013

PHP Tip - Redirecting to Another Page


There are times where you need to redirect the user to another page. For example, after the user has successfully registered as a user at your site, you might want to redirect them to the login page. As such, you need to be able to programmatically redirect the user to the target page.

To redirect the user to another page using PHP, you can use the header() function, like this:

<?php   
header('Location: anotherpage.php');   
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">

This snippet of code must be placed at the top of the document, before the DOCTYPE element. The above code will automatically redirect the user to anotherpage.php whenever the user loads it.

However, if you want to programmatically redirect the user based on certain conditions (such as user successfully registering at your site), you have to do a little more work. The following code snippet redirects the user after injecting a delay of five seconds:

//--redirect to another page---
$delay = 5;  //---five seconds---
$redirectPageUrl = "login.php";
header( "Refresh: $delay; url=$redirectPageUrl" );
echo "You will now be redirected to the login page, after $delay seconds.";
exit();

The above snippet of code will redirect the user to the login.php page. Be aware though, that the above snippet must be accompanied by the following snippet, placed at the top of your PHP page:

<?php
ob_start();
?>

The ob_start() function turns the output buffer on so that no HTML code is sent to the client until the entire PHP script has been processed. If you don’t do that, by the time the header() function performs a redirection it would be too late as HTML code has already been sent to the client. 

Sunday, December 08, 2013

PHP and MySQL Course on 19-20 Dec 2013 confirmed!

If you have always wanted to learn web programming, this is your best chance! The PHP and MySQL course on the 19-20 Dec is now confirmed!
You will learn how to write web applications that contains features like online voting and shopping carts.

Android Course on 23-24 Dec 2013 is now confirmed!

For those of you who are considering attending the Foundation of Android Programming course on 23-24 Dec 2013, you would be delighted to know that it is now confirmed! 

We will be covering Android 4.4 and be sure to bring along your own devices for testing!

Android Tip - Saving Instance State

One of the characteristics of an activity that it is automatically destroyed and recreated whenever there is a change in device orientation. As such, it is important that you take note of this so that you don’t lose any data when the user accidentally rotates the device.


When an activity is rotated, the activity will fire the onSaveInstanceState() method before the activity is destroyed:

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

        //---save whatever you need to persist—
        outState.putString("str", "This is a string!");
    }

You can make use of the Bundle object to save the state of your activity.

Do not confuse the onSaveInstanceState() method with the onPause() and onStop() methods, as:
·       The onPause() and onStop() methods are always called when an activity is sent to the background or is being destroyed
·       When an activity is being destroyed, the onSaveInstanceState() method will not be called; it will however be called when the activity is sent to the background
·       The onSaveInstanceState() method will be called when it is being killed by the OS due to a memory crunch

When the activity is created, you can use the onRestoreInstanceState() method to restore the previous saved state of the activity:  

    @Override
    public void onRestoreInstanceState(
    Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);

        //---retrieve the information persisted earlier---
        String s = savedInstanceState.getString("str");
        Toast.makeText(this, s, Toast.LENGTH_LONG).show();
    }


While usually you can also use the onCreate() method to restore the activity state, the onRestoreInstanceState() method is another method for you to restore the activity state.

Thursday, December 05, 2013

Android Tip - Transferring File via Bluetooth

If you want to easily transfer a file from your application to another Android device, you can make use of Bluetooth.

Beginning with Android 4.1, you can now make use of the built-in Bluetooth Sharing app available on the device. The following code snippet shows how to use an Intent object to manually invoke the Bluetooth Sharing app to send an image from one device to another:

import java.io.File;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;

...

        
        //---assuming you have a file named MyPhoto.jpg in
        // your SD card---
        File file = new File(
            Environment.getExternalStorageDirectory().
            getPath() + "/MyPhoto.jpg");
        Intent i = new
            Intent(android.content.Intent.ACTION_SEND);
        i.setType("image/*");
        i.setComponent(
            new ComponentName("com.android.bluetooth",                         
   "com.android.bluetooth.opp.BluetoothOppLauncherActivity"));
        i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
        startActivity(i);      

    }