Experience
2017 — Now
2017 — Now
San Francisco Bay Area
2011 — Now
2011 — Now
Developer, 2011 - current
Designed and developed core software that functions as a rapid development environment for visual neuroscience. Written in C++ using the Qt framework and STL. Uses Lua as an embedded scripting language to allow the user to quickly create custom visual stimuli. Rendering was implemented with OpenGL. Includes an editor and REPL. Compiled for Windows, OS X and Linux. Records multichannel data to MATLAB format files simultaneously with stimulus presentation. The IDE design resulted in significantly faster iteration time for developing new experiments. Extensive built in documentation with code examples.
Implemented a processing pipeline for multichannel data recordings of electrophysiological data in MATLAB. Independent streams of data with possibly correlated signals are bandpass filtered and decorrelated using independent components analysis. Parts are implemented in C++ using intel ISPC for performance (SIMD and multithreading). Events are extracted and projected onto a lower dimensional space using t-SNE and clustered via k-means for classification. This replaced previous manual labour processing which would take days per file.
Built software to interface with multifunction data acquisition hardware (LabJACK). Implemented realtime high-performance signal acquisition and processing in C, interfacing with hardware over libusb. Resulted in the ability to use OS X as a data acquisition platform along with cost savings vs using NI hardware that only supported Windows.
Developed web-based application for histological data analysis (WebDRP). It replaced a legacy application written for MacOS 9 (MacDRP) that was no longer executable. The original source code was not available so the functionality was based on the description in the original research paper. Written using HTML and javascript with SVG for rendering.
2005 — 2008
2005 — 2008
Maintained large legacy software project Expo, written in C and Objective-C for OS X. Refactored parts of the codebase and enabled support for 64 bit and modern OS versions. Added features including multichannel data acquisition, principal components analysis and OpenGL presentation. The principal components analysis enabled the use of multichannel data in spike classification.
Implemented utilities to read data files from commercial software and convert to other formats. Written in C++ from a mix of reverse engineering and published specifications, depending on file format.
2003 — 2004
Wrote software to browse and analyse experimentally recorded data using a Matlab GUI interface. Significantly reduced the amount of manual labour involved in analysing data. Developed routines to fit models to data, such as a difference of gaussian model for spatial frequency tuning recordings. Some routines were written in C for speed using Matlab’s MEX external interface.
Education
University of Sydney
Bachelor of Medicine and Bachelor of Surgery (incomplete)
University of Sydney
Bachelor of Medical Science
Sydney Grammar School