I'm passionate about doing good, giving back, and helping to tackle the climate crisis with my working life.
This page showcases some of the projects I've worked on while learning web development and as a professional fullstack developer.
Created methodology to measure impact of the software services IATI provides on the environment following a "carbon proxy" approach. Built Node.js application that is run daily by GitHub actions to pull metrics from Azure Management APIs, Google Analytics, and Google Lighthouse.
Designed and built a web dashboard in Vue.js to display the metrics in chart and table form. The next step in the project is to use the metrics to optimise our codebase and infrastructure.
The IATI Datastore processes and holds all International Aid Transparency Initiative (IATI) data in an Apache Solr instance. Datastore Search allows anyone to search the IATI Datastore and then to download the data in either the original IATI XML, in JSON, or in CSV format.
Lead on Solr infrastructure provisioning on Kubernetes and Solr schema design based on the IATI standard. Created the API documentation. Worked on various features for the Search web application including creating the Node.js microservice function to handle the downloading of data, which can be 10+ GB.
Built a fast and scalable synchronous REST API in Node.js on Azure (Serveless) Functions that validates XML files against the International Aid Transparency Initiative (IATI) standard. The standard has 100's of rules defined in XML Schemas, attribute codelists, and JSON rulesets across 3 versions of the standard.
Designed for easy updates/maintenance of the attribute codelist and JSON rulesets that doesn't require a re-deploy of the application as it did in the previous version. Optimized to handle files up to the 60 Mb limit and still process them in the timeout limit of Azure Functions. Able to validate all publicly published IATI data (roughly 11 Gb) in X hours.
I configured and hosted a Pizzly instance of my own on Heroku, after adding Splitwise as a supported integration in a PR to Pizzly. This was my first foray into Vue.js, which helped me learn for my work on DigitalHumani's new dashboard. I used vue-material as my UI kit.
Bagajob is a web app that I've been working on with some of my former coding bootcamp classmates. It's designed for job seekers to organize and track the applications they've made. It stores a variety of job specific information (salary, closing date, etc.) along with notes on the application and interviews.
I owned the back end set up an Authentication workflow, finishing the main API routes that another developer started, and deployment to AWS EC2. The reset password workflow includes integration with Mailjet's API to send reset password links to the user. I also used some custom middleware to send additional information to the client during the login workflow.
Come On You ____! is a React/Redux frontend and Laravel RESTful API backend app that I built alone during Week 13 of the developme coding bootcamp as a "technical challenge". We were given a brief to create an app that takes a list of 10 players and randomly assigns them to 5-a-side football teams.
We were also challenged to add more functionality of our choosing. I added features like picking the # of players on each team, setting the team name, further shuffling the teams, and saving the scores of the matches.
As part of the DevelopeMe_ coding fellowship we were provided the challenge to develop a web app in teams of four during Week 12. I was assigned by DevelopeMe_ to lead my team and work on the frontend.
We created the Movie Hopper web app to list movies that people in our cohort liked. It also allows you to see who likes the same movies by selecting multiple names. The front end is React/Redux and the backend is a Laravel RESTful API with 2 tables in a many-to-many relationship.
This mock veterinary practice database web application was developed over 2 weeks of the developme bootcamp learning and applying the skills listed above. It uses Laravel Blade to display lists of owners and their animals from the database.
It contains forms that allow for adding/updating these based on your user role. We also developed an API with Laravel that can be used to query and update the database (based on OAUTH and user role). Finally we deployed the site on AWS and set up Capistrano to enable streamlined deployment of updates to the site.
I love staying fit and the outdoors. Cycling, running, hiking, and sailing are my main interests. You’ll also find me maintaining my 2 bikes, reading a book, or working on web development side projects. Travel is also a major passion of mine, having visited 55 countries.
This page features some of my favorite photos from my travels. Above is of the summit of Mount Kilimanjaro after a 5 day trek to the highest point in Africa. The second is at the Mexican border in California, USA after riding 1600+ miles from Seattle, Washington, USA.
Technical blog written by IATI developers.
Personal Blog on technical and other random topics.
This is a blog to share my experiences and pictures from the first 6 months of living and working in Dubai in the United Arab Emirates.
This is a blog of pictures documenting a bike touring trip I took down the west coast with my best friend Zack in 2012