I'm passionate about doing good, giving back, and helping to tackle the climate crisis with my working life.
I'm currently a full stack developer at EVLO Energy Storage, on the Data/UI Team.
Former Full stack/DevOps Engineer at Development Initiatives, focusing on the International Aid Transparency Initiative (IATI) and Technical Services/Technical Implementation Manager at Epic focused on customer service and success for large enterprise healthcare software implementations.
This page showcases some of the projects I've worked on while learning web development and as a professional full stack engineer.
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.
Built a simple front end application in Vue.js to simplify my expense tracking with Splitwise. Uses a Pizzly (OAuth2) instance to interact with the Splitwise API.
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.
DigitalHumani is a free API that connects websites and mobile apps to trusted reforestation organizations to have trees planted. The MVP was built by volunteers and continues to be maintained and improved by a small team. I created functionality to send an email containing the number of trees requested to be planted by a client organization in a given month. This allows the administrator to do this with a simple API call rather than manually as before. I also implemented the backend for the forgot password workflow.
The API is hosted in AWS and the deployment is managed using the serverless framework. I created a Lambda function that is triggered by a POST request containing the client ID, month, and to email. This function then queries the DynamoDB database to determine the number of trees requested by that client for the given month. That information is then injected into an HTML template I created from mailchimp blueprints and sends it using AWS Simple Email Service (SES).
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.
For this page I was provided a design in Figma and created the page in HTML and CSS from the ground up during Week 2 of the DevelopeMe_ coding bootcamp. I started with creating a set of re-usable components using atomic design, then built up the full pages to the design specification.
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.
IATI Developer Blog
Technical blog written by IATI developers.
Medium Blogs
Personal Blog on technical and other random topics.
Niki does Dubai
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.
zack and niki bike south
This is a blog of pictures documenting a bike touring trip I took down the west coast with my best friend Zack in 2012