Culture Amp
Senior Machine Learning Engineer, Melbourne (Remote), Vic
2020-03-01 – Current
Machine Learning Engineer, Culture Amp, Melbourne, Vic
2018-10-22 – 2020-02-29

Development of service API for providing Retention Insights to customers based on processing of company employee data. Collaboration with Data Scientists on the development and integration of SQL for querying Amazon Redshift to provide data to the front-end.

Senior developer on the automation of the employee engagement benchmark project. Selection of technology and architecture design for automated benchmarks. Optimisation of large data processing pipelines for benchmark generation, ranging from Python profiling and optimisation, Athena SQL query design, and implementing hot code in Rust as a last resort strategy. Working with Data Scientists on algorithm implementation for the production of benchmarks in an automated way.

Design and maintenance of Anaconda based Python Docker images for use by Data Scientists in AWS SageMaker. Infrastructure as code development for the deployment of Python images for AWS SageMaker

Development and deployment of microservices on AWS infrastructure. Contributing to the processing and analysis of data to produce reference benchmarks of employee engagement data. Leading the deployment and front-end development of an R Shiny based prototype for the generation of custom benchmarks. Optimisation of data processing pipelines for the migration of data from MongoDB to PostgreSQL.

Introduction of tools and processes to improve code quality and reduce cognitive overhead in Pull Request reviews, for example pre-commit hooks for linting, code formatting, and security checks.

Production implementation on AWS Batch of Data Science work to standardise employee demographic data to allow for benchmarking between companies.

Bureau of Meteorology
System Architect and Model Developer (EL1), Canberra, ACT / Melbourne, Vic
2012-04-02 – 2018-10-19
Web Systems and Database Developer (EL1), Canberra, ACT
2010-03-22 – 2012-04-02
Applications Developer (APS4), Canberra, ACT
2008-10-13 – 2010-03-21

Lead developer of the WAFARi seasonal streamflow forecasting system. Technical lead on the Hydrological Reference Stations project. Lead developer on the 7-day streamflow forecasting system.

Implementation of forecasting pipelines from data ingestion, to calibration, cross validation, and forecast/validation results visualisation. Optimisation of modeling pipelines to make effective use of HPC systems.

Web interface design for the Seasonal Streamflow Forecasts product. Lead developer on the Seasonal Streamflow Forecasting system, WAFARi, for the public release of the service in 2010. Implementation of database for staging input data for WAFARi. Support the release of monthly forecasts using WAFARi.

Software developer on products being developed as a part of the Australian Water Resource Information System (AWRIS). Contributed to the original Water Storages web application (Originally launched June 2010, see the Bureau of Meteorology Water Storage launch news for reference to the original release). Prototyped data ingestion tools.

Unique Ideas Australia
Developer, Canberra, ACT
2008-07-18 – 2008-10-10

Development of web applications and deployment of content managed websites for government organisations.

iScape Pty Ltd
Services Engineer, Mackay, Qld
2008-03-03 – 2008-07-10
Software Developer, Mackay, Qld
2007-01-24 – 2008-03-03

Hosting web sites, mail and DNS on Linux servers. Windows server administration. Building, repairing and running up computers. Stock management. Backup management.

Projects for Rio Tinto including writing SQL queries for use with Microsoft Reporting Services and developing web applications. Other activities included a variety of tasks for other organisations in the Mackay region, developing in-house software for iScape, database development, deploying Content Management Systems, web application development and server management.

Department of Main Roads
Information Technology Officer (Programmer), Mackay, Qld
2006-08-29 – 2006-11-09
Information Technology Officer (Help Desk), Mackay, Qld
2005-12-12 – 2006-03-03

Developed a program for use on PDAs to record data on traffic at intersections.

General technical and systems support, creation and maintenance of user accounts (Novell Netware and Lotus Notes), and network cabling.


MacDonald, Andrew. “PhilDB: The Time Series Database with Built-in Change Logging.” PeerJ Computer Science (March 30, 2016): e52. doi:10.7717/peerj-cs.52.

Shin, Daehyok, Andrew MacDonald, David Kent, Prasantha Hapuarachchi, Kevin Plastow, Richard Laugesen, Christopher Pickett-Heaps, Julien Lerat, Aynul Kabir, and Narendra Tuteja. “Operational Modelling System Development for Short-Term and Seasonal Streamflow Forecasting Services.” In 36th Hydrology and Water Resources Symposium. Engineers Australia, 2015. https://search.informit.com.au/documentSummary;dn=823898220073899;res=IELENG.

Zhang, Sophie Xiaoyong, Mohammed Bari, Gnanathikkam Amirthanathan, David Kent, Andrew MacDonald, and Daehyok Shin. “Hydrologic Reference Stations to Monitor Climate-Driven Streamflow Variability and Trends.” In Hydrology and Water Resources Symposium. Barton, ACT: Engineers Australia, 2014. http://search.informit.com.au/documentSummary;res=IELENG;dn=388693597051917.

Shin, Daehyok, Andrew Schepen, Trudy Peatey, Senlin Zhou, Andrew MacDonald, Terence Chia, Jeff Perkins, and Neil Plummer. “WAFARi: A New Modelling System for Seasonal Streamflow Forecasting Service of the Bureau of Meteorology, Australia.” In MODSIM 2011, Modelling and Simulation Society of Australian and New Zealand, 2011. http://www.mssanz.org.au/modsim2011/E12/shin.pdf.

Tuteja, Narendra Kumar, D. Shin, R. Laugesen, U. Khan, Q. Shao, E. Wang, M. Li, et al. “Experimental Evaluation of the Dynamic Seasonal Streamflow Forecasting Approach.” Citeseer, 2011. http://www.bom.gov.au/water/about/publications/document/dynamic_seasonal_streamflow_forecasting.pdf.

Publications can also be viewed via my Google Scholar profile

Conference presentations:

Programming languages:

Programming languages I have experience with are:

  • Python - 14+ years; Very comfortable with the Python ecosystem and happy developing software with Python.
  • Rust - ~3 years; Minor projects with the language in my spare time. Have written some hydrology related tools in Rust and linked to the Rust libraries from Python. Published a simple Rust based Python package, bit-counter, for high performance bit counting.
  • C++ - ~2 years; Mostly reading and debugging C++ with little actual development. Can write basic C++.
  • Java - ~2 years; Largely on the development of the Bureau of Meteorology Water Storages website. Can write Java, but would require a significant refresher to write modern Java.
  • Fortran - Comfortable reading Fortran and linking from Python. Not familiar enough to write Fortran.


  • Bachelor of Information Technology, Central Queensland University, 2007
  • Associate Degree of Mulitimedia Studies, Central Queensland University, 2005