More about me


Many of my projects are for fun and self interest. I have used C, C++, Java, and inline assembly, have coded for Android, Android Wear, Contiki, TI RTOS, Linux, and Windows, and am familiar with Bluetooth LE (both master and slave sides) and Zigbee communication.


I have been working in academic research since 2009, starting from my Bachelors where I worked on multi-threaded algorithms in bioinformatics, to my PhD where I worked on smartphone and smartwatch sensing, and to my postdoc where I work on extremely resource-constrained sensing on wearable smart tags.


My professional work, research, and teaching experience, including voluntary professional mentoring, training, talks, reviewing, and serving as a conference technical program committee member.


Other than research and coding, I regularly do rock climbing, speed ice skating, and yoga.


Travel activity wearable

Travel activity app picture

I developed a wearable system using a sensor tag, that operates similar to Fitbit, but for travel activities instead of fitness activities. The user wears/carries the tag during the day, and can later sync it with the phone via Bluetooth to view the travel timeline and statistics.

Bus tracking wearable

Bus tracking app picture

I developed a bus tracking application for three different devices: two wearables (an Android smartwatch, and a sensor tag), and an Android smartphone. I make novel use of the barometer (air pressure) sensor for extremely low-power operation (high-power location sensors like GPS are not used) and a memory-optimized lightweight algorithm.

3D graphics editor

3D graphics editor picture

MySketchUp is a 3D graphics editor I wrote for self-interest during my Bachelors, using OpenGL. Using the editor, we can draw simple coloured 3D scenes.

Simple bootloader

Bootloader screenshot

This is a simple bootloader I wrote for self-interest during my Bachelors, that loads, relocates, and runs a 16 bit C++ executable into memory from a bootable CD. You can run it on an Intel machine, or use VirtualBox.

Thread library

MyThread library is a simple user-thread library I wrote for self-interest during my Bachelors, to demonstrate the "Many to One" multithreading model.

WPA password cracking

I designed and implemented a WPA password cracking tool, as part of a systems security course group project, using inexpensive GPU compute power on the cloud. The tool can crack 8 digit passwords in less than 2 hours, at a cost of less than $2.

DASH video streaming

This is a DASH-compliant video hosting service I wrote for a multimedia course project. The user can take a video on an Android tablet/phone, and upload it to a DASH video hosting server. The video can then be played in any DASH-compliant player (such as VLC player) dynamically switching between 3 streamlet qualities.

DTN middleware

I developed a middleware for Android that supports Delay-Tolerant Network (DTN) applications. Forwarding protocols can be dynamically loaded, replaced, and customized, at run-time, to suit diverse application requirements and network scenarios. Using the middleware, I developed a mobile web application to help wheelchair people board buses easily.