Projects

Here are some things I've worked on. Some were work-related, others just for fun.

BirdBlox

Spring 2016 - Present

BirdBlox is a drag and drop programming app I'm working on with two other interns at BirdBrain Technologies. The app allows students to easily program the company's robotics kits over Bluetooth.

While writing tutorials for BirdBrain, I had an idea for how to redesign an existing app to make it more mobile-friendly. I created a prototype of the application, which I sent to Dr. Tom Lauwers, the company's founder. He liked the idea, and I've been working on it since then.

I'm working on the JavaScript component of the app, which handles the UI and block executuion. The JS is contained within an iOS/Android app which manages files, cloud storage, and bluetooth connections. This structure makes the application easily portable to other platforms. I also created the design mockups, and some documentation.

View on GitHub

JavaScript

Planning for the Future Checklist

Winter 2017 - Summer 2017

The PA Planning for the Future Checklist provides a list of steps to prepare students for life after high school. Sintek solutions subcontracted me to develop a digital version of the checklist for United Way of Southwestern Pennsylvania.

I worked on the Android and iOS apps which synchronize with a backend server. Users can authenticate using a Facebook or Google account to access their checklists on any device. The app also provides a list of emergency phone numbers determined using location services.

Java
Swift

Portal Gun AR

Summer 2016

This is an augmented reality app based Valve's Portal 2 game. I made it last summer as part of an elaborate Portal 2 scavenger hunt for my cousins (who are also big Portal 2 fans). Here's a video of a test chamber created for the app. All AR graphics are being rendered live.


The app was made in Unity and uses the Vuforia augmented reality API. The images inside the portals are panoramas taken with my phone from the point of view of each portal target. The portal clips the panorama using a custom shader I found online, giving it a parallax effect.

In addition to the AR Portal Gun, the scavenger hunt involved a robotic safe, Aperture Science Command Prompt application, and synthesized GLaDOS voice, controlled via a custom Android app.

Unity
C#
Augmented Reality

Scheduler.exe

Summer 2014

I created this app for my high school's guidance department to help schedule career day. Each year, students rank which career day sessions they would like to attend. Previously, the guidance department would manually sort through these preferences and create rosters indicating where students should go. This application automates the process, using a custom algorithm to maximize the number of students receiving their top choice. In fact, on its first year, every student was able to attend their first choice, and over half received their second as well.

The scheduler is a WPF application that uses the Excel Automation API to create rosters in Excel. It uses on-screen instructions to guide users through the data import and roster generation processes. The scheduling algorithm first assigns each student to the highest available session on their list, then repeats this process for the desired number of sessions. This ensures that every student is given a chance to get one session they want before anyone is assigned two sessions they want.

C#
WPF

FlipIt!

Summer 2014

FlipIt! was my first Android application, which I created during a 2 week summer camp on Android App Development. It is a puzzle game which I've wanted to make since 8th grade, but wasn't able to until I took this camp.

The goal is to use the 6 controls at the bottom of the screen to make all the smileys happy. This can be surprisingly difficult, given that the commands are order-dependent and the number of possible command strings increases exponentially with length.

The levels I selected were generated using a computer program, which creates and solves random levels by brute-force until it finds one meeting certain parameters.

Java
Android

MineAssist

Summer 2013

I think many people would agree that Minesweeper is a pretty frustrating game. Most of the gameplay involves repeated application of two simple rules:

  1. If the number on a square equals the number of adjacent squares, all adjacent squares are bombs.
  2. If the number on a square equals the number of adjacent marked bombs, all adjacent unmarked squares are safe.

All too rare are those moments where more complicated reasoning is required. As with most tedious processes, the player is bound to make a mistake somewhere, and when they do, all their progress is lost. If only there was a way to cut through all the boring parts of a Minesweeper game and skip straight to when things get interesting...

MineAssist solves this problem by automatically applying the above rules, and leaving just the more interesting parts of the game for the user to solve. Here's a demonstration:


C#
WPF

BlasterBot

Summer 2013

This WPF application identifies gem matches in the game Bejeweled faster than any human could. It determines the types of gems on the screen using the color of the pixel at the center of each grid space. When it finds gems that match, BlasterBot selects them with the mouse.

View on GitHub

C#
WPF