My entry for Olimex's Weekly Programming Challenge