Personal Projects



RSS feed combined with an iOS shortcut to pick a random podcast to listen to.


Slack-controlled bot that uses Twilio to buzz people into my building automatically when enabled.

Stack: Kotlin, Serverless



Alexa skill that fetches the latest tweets from @PDXAlerts.

Stack: Kotlin


Trump Report

Performs sentiment analysis and classification of Trump Tweets using IBM Watson APIs.

Tech Used: ReactJS, Redux, IBM Watson, AWS Lambda, AWS S3, AWS API Gateway, Gulp.

Naive Bayes Trainer

Webapp for training and testing a Naive Bayes classifier on a set of text.

Tech Used: ReactJS, Gulp,, Express, and Redux.


Alexa skill that fetches the latest arrivals for TriMet buses and trains in Portland.

Tech Used: AWS Lambda, NodeJS, Gulp, TriMet API.


Alexa skill that records my backpack weight to a Google Spreadsheet.

Tech Used: AWS Lambda, NodeJS, Gulp, Google Spreadsheets API.

AWS IoT button control of Sonos Speakers

I wired up an AWS IoT button to a Lambda function that plays/pauses Sonos speakers. This required a Raspberry Pi running on my local network to control the speakers. To deploy the app and add a public URL, I used

Tech Used: AWS Lambda, Docker, NodeJS,, Raspberry Pi. Sonos API

This is a fork of a Sonos API app written in NodeJS. I enabled HTTP auth by default, and added a Dockerfile so that it could be deployed to a Raspberry Pi via

Tech Used: AWS Lambda, Docker, NodeJS, Raspberry Pi.

Trump Survey Spammer

Essentially, a Chrome extension designed to repeatedly spam Trump’s “media accountability survey” with randomized data. Used Google Analytics to track the number of survey submissions.

Tech Used: NodeJS, Chrome extension API. bandwidth monitor

App that periodically records home Internet upload and download speeds and records the metrics to DataDog.

Tech Used: NodeJS, Docker,, DataDog API.


GeoTagged images Heatmap generator

Dockerized NodeJS app which generates a heatmap given a set of geotagged images. Uses the Google Maps API.


Prank Chrome extension that flips web pages upside down.

Raspberry Pi Kubernetes Cluster

I built a Raspberry Pi-powered Kubernetes cluster based on HypriotOS.

Tech Used: Raspberry Pi, Docker, Kubernetes.


Monkeys to let guests in

I used the Twilio API and Heroku to build an automated phone number that would play monkey sounds and then send the DTMF code to let guests in to my building:


Google Street View Hyperlapse

I forked a really cool project I’d found that renders hyperlapses from Google Street View imagery. I added the ability to export the images from the canvas element the hyperlapse was rendered in, in order to create my own YouTube video from it:


My senior capstone project, a webapp that assisted in the classification of various insects. It interfaced with an artificial intelligence classification algorithm developed by a graduate student, and used a MariaDB database to store previous classifications.

Tech Used: PHP, CakePHP framework, MariaDB

SocialCollage iOS app

A demo of an iOS app I wrote for my CS 496 mobile development class that automatically renders a collage from Facebook photos.


Coolest Guy in America

In 2009, I wanted to see if I could get a website to rank for the first Google search result for “Coolest Guy in America.” So I learned about SEO and was able to get the site ranked in a couple weeks.