Principal Consultant @
Immersive Visual | Interactive Programming | Show Control | Bespoke Integration

Arduino EEPROM

An implementation for reading/writing IP related information (IP Address, Subnet, Gateway and DNS) from/to Arduino EEPROM. Tested on Arduino Ethernet board which has 1k of EEPROM but can be adapted to other Arduino boards.

Qt InactivityTimer

Application level sleep/wake implementation through event filter in Qt EGLFS — used for dimming or blanking the 7 inch Raspberry Pi screen on Qt EGLFS application when there is no keyboard or mouse activity for a period of time. Once keyboard or mouse is pressed, the screen will then wake up to full brightness.


iOS port of @cheeaun's busrouter-sg. It basically shows all routes on the map for all bus services in Singapore. It was published in the app store until 2015. Note: source code is in this repository and the bus data is probably outdated.

AV & Dataton WatchOut Controller

A custom control system built for 2 dome projection system showflats. This repository contains the code built on top of Arduino Ethernet to automate the sytem power up and down for the following AV devices: an amplifier, WatchOut cluster and projectors.

Dataton WatchOut Proxy Utility

This proxy utility exposes WatchOut show properties to external TCP client through socket which by default isn't available through WatchOut Control Protocol. Those properties include: auxiliary timelines status, object tween properties and input as defined under Input windows.

Arduino IR Repeater

This sketch receives the infrared signal on standard pin number 3, decodes and dump the infrared information on Serial and forward the raw infrared signal to pin number 4. It can be used as an IR repeater or as a programmable two-way converter between Serial/Ethernet and IR when used with Ethernet board.