AWS
Apache
Laravel
PHP
MySQL
Python
Java
Snowflake
HTML/CSS
Sass/SCSS
Bootstrap
JavaScript
JQuery
Vue.js
Git/Github/Gitlab
Composer/NPM
R
Bash/Shell
Jira
Confluence
DataDog
Retool
NinjaCat, August 2022 - March 2025
I was a Software Engineer for NinjaCat, an AI-enabled marketing data and analytics platform. I was originally hired into a DevOps role, but have since worked across multiple different teams. As a result, I have become a very adaptable and flexible engineer, excited and curious about what I can learn and how I can contribute across the stack.
I have experience writing PHP in a legacy Laravel system, building and maintaining Typescript-based microservices, and writing supporting apps for developers (including ReTool and DataDog).
I also helped hire and train two other software engineers. In the process, I conducted interviews and communicated with senior leadership.
Pubbly, September 2018 - August 2022
I was the sole developer at Pubbly, an educational startup based out of NYC. I contributed to the Global Learning XPrize (where we were finalists) including designing and building an educational game played by hundreds of young children in Tanzania.
Most of our products were built in Laravel, with AWS servers running Apache on Ubuntu. Being the only developer means I was quite literally full stack. I wrote, deployed, tested, and maintained all of our code.
I am also highly experienced at communicating with non-developers since that was the entire makeup of our team. I also collaborated with an American non-profit and an overseas software company to build a mobile app designed to increase literacy.
I also hired, trained, and supervised an intern so I am very experienced at teaching and explaining code. He came to us with no Laravel experience and left a strong Laravel developer.
I frequently play Splatoon 2 on the Nintendo Switch, an online multiplayer game that is basically paintball. I hope to be competitive one day, so I decided to Moneyball my way to the top and apply statistical reasoning to my gameplay.
The first step was to gather useful data. Nintendo provides a handy mobile app describing your previous 50 matches, but there is no way to pull the data or store more than 50. As I probably average hundreds of battles a month, this is no good.
I used mitmproxy to sniff API calls being made in the app. I then wrote a Python script that would make those API calls (setting the user-agent string the same as the app's to avoid detection) and store the relevant info in a CSV file. I set a CRON job on an AWS EC2 instance that would poll at random times (again, to avoid suspicion). After a few days, I was able to use R to analyze the results. It turned out I performed better with a particular weapon, so I tried to use that one more often.
Future improvements I would like to make to Splatdata is better handling of the authentication. Nintendo rotates their login tokens about once a week, which means my bot got booted out very frequently. I need to spend more time understanding their API. Obviously, Nintendo doesn't want you doing this so they don't make it easy.
Minecraft Server
At the start of the 2020 pandemic, my nine-year-old cousins wanted to play Minecraft with their friends on a private server. I bought a Raspberry Pi 4 and installed Ubuntu on it, then installed Minecraft's server software on it (they don't make this easy, because they want you to pay $10/month for their existing "Minecraft Realms" service).
Unfortunately, it turns out the Pi features an ARM chip, while Minecraft requires x86. The backup solution was to use an AWS EC2 instance instead. I could comfortably host about 10 kids at a time for about $4/month, effectively saving a whopping $6/month.
I ended up later repurposing the Pi into a Pi-Hole, a network-wide ad-blocking tool that works by intercepting DNS requests and serving blank or empty pages to any ad requests. It's improved the speed, security, and usability of our home WiFi.
FanshipThis is very much a work in progress! Fanship is, as I lovingly call it, a dating site for dorks. Matchups are made based on common (nerdy) interests. Feel free to take a look, but please keep in mind there is still a lot of work it needs. I want to optimize the matching algorithm, as well as really flesh out how "fandoms" are defined.
Bystander Intervention Training, Colby College
Excellent written and communication skills
Public speaking
Image manipulation in Adobe Photoshop
Colby College, Waterville, ME (September 2014 - May 2018)
Bachelor of ArtsMajor: Computer Science
Minors: Art, Theater & Dance
Honors: Dean’s List Fall 2016
CS courses completed: Data Structures & Algorithms, Data Visualization, Computer Organization & Architecture, Programming Languages, Computer Networks, Software Development I and II
GPA: 3.62
University of Canterbury, Christchurch, New Zealand (January 2017 – June 2017)
Studied computer science and art history abroad
CS courses completed: Analysis of Algorithms, Computer Graphics