Software development
Python is my most used language - I have been a professional Python developer for ten years, and have been using the language for seventeen. I aim to write legible Python, making full use of type annotations and dataclasses and autoformatters where appropriate.
- Scientific stack: I have worked extensively with Pandas, Numpy and PostgreSQL for scientific analysis. I have both implemented and adapted Jupyter notebooks for published scientific work.
- Web technology: I have implemented backend APIs in Quart (asyncronous Flask) and FastAPI. I have also had extensive experience in Jinja for HTML templating and especially PDF rendering.
- Database technologies: I have implemented small databases mainly in PostgreSQL and MySQL, and contributed patches to Flowminder's main cellular data record processing toolkit. I have also worked briefly in Orcale and recently reimplmented a database in Access as a personal favour.
- Frontend: I have implemented a Java Android application to demonstrate the Forst Sentinel deforestation monitoring system. I also maintain our Haiti mobility dashboard, implemented in React.
- Security: I have worked with Auth0 and implemented secure APIs. I have also implemented the scope-checking system for Flowminder's main query engine.
Other Technical Skills
In addition to implementing techniques, I have often been responsible for implementing the infrastructure around scientific reporting projects. I would not call myself an administrator, but I am comfortable managing services hosting on both physical and cloud infrastructure.
- Containerisation: Docker is my preferred container management engine, using Docker Compose for service management. I have touched on Docker Hive. I have no experience with Kubernertes.
- Data pipelines: During my work at Flowminder, I have been implementing batch processing pipelines using Airflow. I have implemented fanouts, mapped tasks and dynamically constructed DAGs using Papermill templates; I am also familiar with both Operator- and Task- styles of dag implementations.
- Workflow: I am experienced with Git, and my working environment is Bash + VSCode on Ubuntu. I have implemented autoamted testing pipelines on CircleCI, and am an occasional user of Makefiles.
- Environment management: I am experienced with pip, pyenv, pipenv, conda and UV for Python, and am familiar with Node and NPM/Yarn for Javascript development.
- Cloud infrastructue: I have experience with Google Cloud and AWS, running managed compute instnaces, containerised apps and supplemental technologies including IAM, Terraform and hosted database services)
Soft skills
Most of my work is supporting academic research; this varies from delivering one-to-one support to operationalising sophisticated techniques in concert with an entire research group.
- Research software engineer: I have spent the majority of my career working with scientists and academics, implementing their techniques. I am used to adapting or rewriting research modules into larger systems while working closely with the original designer to ensure that the results do not drift.
- International work: Many of my projects have been in collaboration with international projects - I have worked with the Kenyan Forestry Service, CONFAOR, IPAM and the Mexican space agency, among others. I have experience identifying key technical partners to work with for delivering the most impact in limited projects.
- Presentation skills: I have four years experience delivering undergraduate lectures. I have also presented research at academic conferences and delivered courses in professional settings.
- Teaching and mentorship: In addition to my teaching experience, I have mentored junior engineers and run several courses for coworkers in good programming practice, version control and machine learning.
Achievements
- Took existing analytical methods and fit them to an automated pipeline; this is now producing full reports of modbility in Haiti within 12 hours of data with no human intervention required.
- Implemented a custom operator to allow analytical notebooks to be used in complex envrironments
- Awarded a citation for rapid iteration in response to methods.
- Presented forest monitoring work to the President of Kenya
Qualifications
- BSC Robotics
- Associate Fellow of the College of Higher Education
Job history
- Flowminder Foundation: backend engineer (2021-present)
- Centre for Landscape and Climate Research (CLCR): research software engineer (2016-2021)
- Teaching fellow at the School of Systems Engineering, University of Reading (2012-2016)