Mobile Apps

(no longer maintained)

Past projects


Published. Captured our old knowledge and sharing it for future generations who might need it. The concepts are more important than the technology of course. New robots come every other year. The way it is taught, the way it is then applied is more important. Click here for the book in Amazon and Kindle.

Digital Drawing 1000 pieces

I finished a painting journey 3 years long to complete 1000 pieces. On the way, I learned how to draw better. Completed 1024 pieces. An I.T. nerd thing. 2 to the power of 10 is our definition of 1K. See my collection at

Digital Drawing book

Published this book last year. . It has been a few years in my head, but finally pinned it all down. There is one review that states there is not enough digital drawing information within. That is true, something I should address in a new revision indeed. Never a good idea to sell something but give something else. And I thought it better to focus on solid drawing skills as digital software come and go...well, I can rectify that.

University I.T. project

My young friend has completed his project. Nothing he can share here though. A brief idea, is that he uses his iPad to show a colour code, depending on the situation. The robot then senses that colour, and acts accordingly. It is used to demonstrate how the orders from the internet can activate robots to complete offline tasks. This is at a university level. Cool.

SIT Leader

This App helps to remind leaders to apply different styles whenever situation calls for it. Simple and fast reminders.

A departure from writing games. Trying my hand at writing simple applications. This one was done online without any compilations locally at all. Interesting way to write a program. Very simple though. Ask me to know how.

It can only be downloaded from this URL when you are using your mobile phone, so far only tested on Android phones.



Hey kids! Guess what! We are going to be able to use all our devices and play games together! Oooooh great! Android, iPad, iPhone, PC, MacBook, they can all play what game will be fun like that...not too speedy though...needs more thinking...not crazy firing type...maybe turn based...maybe quiz type...or time-limited tic-tac-toe, advanced chess, RISK, iglooWar, SkidRacing, Tower Madness, drawing together, typing together, chatting in game, Math quiz, interactive story books with multiple characters all choosing different paths through the book, moving around a big world together or separately...experience shows that if we want to have fun, just try the craziest idea in the list...but to make money pick the simplest one and give it a twist. I'll go for the craziest idea first *grin*, life is short.

SkidRacing version 3 accepted by App Store!

Go download 40 levels of new enemies and more weapons. Break the high scores and see how you rank in the world!

iglooWar is now on Apple App Store and Android Market!

SKU Number:20111115001

Lots of fun for 2 players hurling snowballs and other weapons at each other. You are allowed to build a wall first in defence! There is a new Solo Play mode where you try to score points and climb the ranks.

Learning Side Note

Integration with OpenFeint to allow high scores and unlocking of achievements meant our kids will see their high scores online and they try to reach the next rank to beat their brothers! Well, something broke, and after a few hours of trials found that the build.setting file requires

CFBundleVersion = "1"

within the iphone's property list (plist)...not documented anywhere! Amazing that I happened to infer and hit on this little trick. Yeah, now let's have more ranks to be promoted to!

SkidRacing Version 3 launched!

+40 levels to play with now.

+Made it more difficult by having less bullets on lower levels but increases quickly at high levels for maximum kill

+More types of bullets that behave differently at different levels

+More enemies...ok ok my kids drew some of these.

Launched on Android Market already. Being reviewed in Apple App Store still, needs a week probably.

SkidRacing Version 2 launched!

+Skid marks when turning

+Shake will give a speed boost

+OpenFeint works better

-Still can't find out why it stops functioning when LIFE reaches ZERO at times. Working on it still…what a mystery! You will have to get out and get in again so

mehow. (I have a suspicion...must check if parent of object exists before I remove it...try out over the weekend.) (SOLVED! That is indeed the solution!)


SKU Number:20111031001

The kids have been bugging me for a racing car game for some time...but I really can't think of how to beat those great simulators out there, that bangs and crashes with such dramatic effects. Well...I do like to have a car that can fire at the enemies instead of avoiding them all the time. And skidding or drifting around definitely sounds more fun than plain old now we're driving on ice! So presenting...our beautiful racer who skids on ice. Tap him to fire at the enemies!

And guess what?! Enabled high score tracking online, so you can compare who are perfectionists and insist on firing at every single enemy available!

(Openfeint enabled.)


SKU Number:20111029001

The little dinosaur is as small as a cherry, hence the name...but he is not alone. There are many small creatures like it in the area. Some are good, gives you life, some are dangerous, make them extinct.

Note to self: Touching special objects will change your weapons. That should be a cool thing to do.

Learning Side Note

Big discovery about why the programs have thus far seemed turned out to be because I have buttons on my screen during the game play. Removing all buttons allowed the game characters to respond well. Hm...strange strange. Nevertheless, it implies that we need new ways to command the characters for now...tapping on the screen directly seems good for firing. Auto-firing is preferred by the kids. Shouting at it will probably make this game rather irritating for the fellow commuters. We'll see what is natural.

Note to self:

  • [ok]And probably reduce the tilt sensor's detection frequency. The event queue is jamming up too quickly. Yes that helps. Setting to 50Hz now.
  • [ok]And after collision with enemy, remove latter from physics engine, otherwise it gets destroyed twice and even scored twice if chanced upon by an over-enthusiatic bullet. But this must be done with a delay of 1ms, otherwise Physics engine just crashes randomly.
  • [ok]Dino likes to get stuck at bottom right hand corner, very strange, but known Physics problem...may have to implement a 'shake' listener to jerk it out.
  • [ok]There are also strange reasons probably for it crashing, especially after you click to proceed to next level, commonly happening after you first play the game. Discovered that it is due to removal of Physics objects while still in motion, a NO-NO.
  • [ok]Do not generate enemies right in your face when game begins.

Saving database files to the Documents folder allows it to work properly for both Android and iOS devices. Originally storing it in Resource directory (read-only on iOS) is a mistake. Time to correct them all. The impact is that high scores and level informations are not saved properly in iOS unless changed to Documents folder.

Launching on App Store

Waiting for review...nibbling my nails...anxiously waiting if it will get approved...oh well, I can wait for a week. Heard that's how long it takes for them to review. We shall see.

Learning Side Note

There are too many things to do to launch on App Store! Followed all instructions to the dot provided by Corona, a PDF file. That led to creating accounts, adhoc, distribution profiles, meddling with keychains, definitely not for the faint hearted. And guess what...this lucky fella succeeded first time! Looks like I'm rather literal when it comes to following a document, really to the dot. Mind the spaces, mind the capitalizations, find the exact right folder, etc.

Here's a take away, create 2 screen shots sized 320x480 (Android Market, and App Store both needs this, create another 2 screen shots sized 768x1024 (App Store needs this) and all must be 72 dpi in quality. And if you have read below, the Icon--512x512.png is definitely necessary.

Really, if reading all the above makes your head spin already, do not become a programmer. This is advice for my children. In case they come and tell me this again, "Programming looks hard....but fun". They better really enjoy creating stuffs from zero, otherwise this is not for them!

MacBook with me

Time to figure out how to roll out onto the iPad and the Apple App Store. It should be more complicated that the Android Market efforts.

By the way, all these games are on the Android Market by now (2011/10/23).

Learning Side Note

When publishing to the Android Market, some things must be prepared first.

2 x Screenshots:

320 x 480, 480 x 800, 480 x 854,

1280 x 720, 1280 x 800

24 bit PNG or JPEG (no alpha)

Full bleed, no border in art

You may upload screenshots in landscape orientation. The thumbnails will appear to be rotated, but the actual images and their orientations will be preserved.

High Resolution Application Icon:

512 x 512

32 bit PNG or JPEG

Maximum: 1024 KB

Title of application

30 characters

Description of application

4000 characters


Best to be your own, otherwise, a Facebook product page is good as well.


Best to be your publicly support email address, not a private, personal one if you don't want to be flamed whenever an app crashes, which happens often enough for so many possible reasons!


SKU Number:20111024001

Hm...large maps...redcrosses for extra life...shoot at many enemies...sounds like we have another arcade shooter in the works!

This one took some more Maths before I got it to work...but got too complicated and are only going to get guns shooting to the front, no firing from the sides. Well...KISS!

Gift Drop

Gifts fall from the sky. Guide it to reach the recipient!


Two critters eating as much as they can. Just don't eat the bombs as well!


Tilt to roll your bomb around. Bomb the Mad Cat and wipe that silly smile off the mad face!


All my friends are kids, and round, we all like to bounce around.

There is an irritable red block head who always stick his tongue at us.

Our favourite game is "Hit the Red guy!".

Help us hit him by moving the slides and blocks around.

Learning side note

Director class by Ricardo Rauber Pereira is cool! Search the web and download his latest. I'm using v1.4 at the moment.

Some conventions:-

  • main.lua calls mainmenu.lua
  • all other screens should be named the same as their file names
  • all other screens call back mainmenu to return to this top level

To ensure objects stay within the same screen, and get disposed every time that screen exits, ensure that they are inserted into the localGroup variable.

local localGroup = display.newGroup()

localGroup:insert( background )

To make a button that pops up a window...

local btPopUp = display.newImage( "bt_popup.png" )

localGroup:insert( btPopUp )

btPopUp.x = 160

btPopUp.y = 350

btPopUp:addEventListener (

"touch" ,

function ( event )

if event.phase == "ended" then



function ( event )

print("pop up closed")






To make a button/area that allows for flicking left or right...

local btSlide = display.newImage( "bt_slide.png" )

localGroup:insert( btSlide )

btSlide.x = 160

btSlide.y = 300

btSlide:addEventListener (

"touch" ,

function ( event )

if event.phase == "ended" then

if event.xStart >= event.x then

director:changeScene( "screen2", "moveFromRight" )


director:changeScene( "screen2", "moveFromLeft" )





A regular button to change to another screen...

There are many possible transitions like moveFromLeft, moveFromRight, crossfade, fade,

downFlip, flip, overFromBottom, moveFromTop and overFromRight.

local ui = require ( "ui" ) --Just need to require this once.

local bt01 = ui.newButton{

default = "bt_moveFromLeft.png",

over = "bt_moveFromLeft.png",

onEvent = function ( event )

if event.phase == "release" then director:changeScene( "screen2", "moveFromLeft" ) end end,

id = "bt01" }

localGroup:insert( bt01 )

bt01.x = 85 bt01.y = 70

Advanced, if you want to pass parameters to another screen...

local btParameters = display.newImage( "bt_parameters.png" )

localGroup:insert( btParameters )

btParameters.x = 160

btParameters.y = 400

btParameters:addEventListener (

"touch" ,

function ( event )


{ label="Sending Parameters", reload=true }, "screen2", "fade", "white"




SVG as level editor and object definition

OH I also tried using SVG for this, like InkScape...wondering if it is worth USD49 bucks to buy the library for my limited use. The Chinese do say that to be good at my chores, I must know how to use my tools well. Notice that the saying does not include buying new maybe I'll save the money and try other methods.


Release bombs as you move around. Avoid the incoming enemies who are chasing you very very quickly. Let them move past you. The good thing is that as long as any one of them hits the fire at the top, they all disappear as one! Talk about being united!

Need nicer hand drawn graphics. Can use this one by my kiddo.

Another one.

Learning Side Note

Need a good shadowed icon set. Originally I thought the list below is sufficient.

Turns out, this is the full list!

Icon--512x512.png = 512x512 (Android Market)

iTunesArtwork.png = as above (App Store, seems optional)

Icon@2x.png = 114x114 (App Store)

Icon-hdpi.png = 72x72 (Android Market)

Icon-72.png = as above (App Store)

Icon.png = 57x57 (App Store)

Icon-mdpi = 48x48 (Android Market)

Icon-ldpi = 36x36 (Android Market)

Past projects

King Rabbit

Inspired by King Kazma of the anime Summer Wars, we have a rabbit which kicks ass! It will fire at the helpless enemy until it explodes. Just hit him!

Need to know exact angles and dimensions for the carrots to fly realistically out of the gun in the right direction.

Learning Side Note

          1. In portrait mode, the angles in radian starts with zero southward. The coordinate's origin is at the top left corner.
          2. Require...uses case sensitive file names.
          3. File wav files and images...also case sensitive.
          4. No sub folders are allowed...all flat.
          5. No underscores for file names...just alphanumeric characters.
          6. We switched to using GIMP (instead of PhotoShop) and it generated png files nicely. Somehow PS needs some more settings that deluded me but GIMP settled them for us nicely.
          7. Installation with AppInstaller or "adb install" both works fine, so don't have to worry that these are the cause of your problems.
          8. When publishing to the Android Market, add these into your build.settings file.
              1. android = { versionCode = "1", versionName = "1.0", },


From this hand drawn dragon, we originally wanted it to drop bombs down onto land...but putting parental instinct first, we made it feed a baby dragon instead. So let meat drop, then guide it to the baby.

The baby dragon is really hungry. The meat may fall out of the sun, but it is up to the mummy dragon to bring it to the kid. Be careful, drop the meat and you have to start over again.

Bouncing Shapes

Sean Square talking to Longman Rectangle.

Sean, 'Ask any kid what is their favorite shape and you hear "Star !" half the time. Can't the kid say "Square"? For that matter, did you ever hear the kid say "Rectangle"? '.

Longman scratch his head, thought a bit and agreed.

Sean, 'The world is not fair! I'm going to leave this kid for good.'

With that he bounced away angrily. Longman told the rest, Cindy Circle, Thaddeous Triangle, Tracy Trapezium, and soon we have a wave of bouncing shapes trying to escape by land, air, sea and even through Dreamland (by dreaming away...).

Help the shapes escape?

Catch the Frogs - Kanda

Shoot a net and catch these frogs that run around your land. They won't stop!

Well, you never run out of nets either. So it is just fun to keep shooting.

Latest used SKU Number: SKU Number:20111205001