I am currently a Research Associate at with the Programming Languages and Systems group in the School of Computer Science and Engineering at the University of New South Wales, Australia. My interests include parallel programming (in particular, data parallelism), functional programming languages, and using graphics processors and other compute accelerators for high-performance computing.
I was a student at the University of Sydney, Australia, where I studied Mechatronics (Space) at the Australian Centre for Field Robotics (ACFR) (with honours) together with Physics and Computational Science at the School of Physics. I also had a brief encounter with ViSLAB and the Centre for Quantum Computer Technology (CQCT) during this time.
After graduating, I held a brief internship at the Andøya Rocket Range (Andøya, Norway). Before returning to academia, I worked as a software engineer for Canon Information Systems Research Australia (CiSRA) (Sydney, Australia). I also took some time out of my PhD to intern at the National Institute of Informatics (NII) (Tokyo, Japan) as well as the compilers group of NVIDIA (Seattle, USA).
I am a regular at FP-Syd.
When not doing the above I (occasionally) practice martial arts.
Optimising Purely Functional GPU Programs (pdf).
PhD Thesis, submitted July 2014
Colour correcting foreground colours for visual quality improvement, US Patent US8644602B2
with Yu-Ling Chen
Object extraction in colour compound documents, US Patent US8351691B2 / Refining text extraction in colour compound documents, AU Patent 2008260018
with Yi-Ling Chen and Ping Liu
Data.Array.Accelerate defines an embedded language of array computations for high performance computing in Haskell. Computations on multi-dimensional, dense, regular arrays are expressed in the form of parameterised collective operations, such as maps, reductions, and permutations. These computations may be online compiled and executed on a range of architectures, such as GPUs.