Echodyne, Software Intern, Summer 2017

Echodyne builds a disruptive, solid-state radar which is light enough to be mounted on drones. During my time at the company, I designed a Windows Service to stream data from radar mounter on the drone down to a “ground station.” This functioned a lot like a real-time video stream. My program uses TCP / IP stack to ensure low latency and high throughput, and uses the event-driven architecture provided by Node.js to minimize CPU usage. The connection between the drone and the ground station passes through a server, which was deployed using Amazon Web Services.

I also designed testing software for the radar to make sure it detects object correctly. For example, my software could capture the flight of a plane overhead, and then “replay” this signal any number of times to make sure the plane correctly identified by new firmware builds. Since this testing software interacts directly with firmware, it was written in a blend of C and Python.

Microsoft Research, Software Intern, Spring 2016

Representation of winds over US, as predicted by WindFlow model.

At Microsoft Research, I worked with my mentor Ashish Kapoor to test a high-altitude wind model called WindFlow that is generated from real-time data from planes. This new set of wind predictions serves as an alternative to the predictions made by NOAA (the National Oceanic and Atmospheric Administration). I personally wrote code in C# to stream plane position data from the FAA and make flight-time predictions with WindFlow using this data.

A client of Microsoft Research requested an analysis of WindFlow's accuracy contrasted with the NOAA predictions. Building on my earlier work, I wrote python scripts to assess the accuracy of predictions made with WindFlow and NOAA for over 800 flights. Using data science, I found that Windflow has a statistically significant advantage. I presented these findings to our client alongside my mentor Ashish and Head of Microsoft Research Eric Horowitz.

Our client was impressed with these results, and requested a way of accessing the WindFlow model, so I began working on a way for them to access the data. I wrote server-side code in C# to download data from the FAA, generate the appropriate models, and serve these models. My code also continued testing the models automatically, so that WindFlow's parameters could be continually improved. My original codebase has been built upon, and is currently being used to provide Microsoft's clients with access to the WindFlow model.

University of Washington, Research Intern, Summer 2015

Visualization of a smartphone's capacitance matrix.

While interning at the University of Washington's Ubiquitous Computing Lab, I worked individually on a project called RainCheck. RainCheck makes it easy to use your phone in the rain and with wet hands. Instead of just looking at the touch points that the phone's touch screen controller generates, RainCheck looks at the phone's raw capacitance values. These values can be requested from touch screen controller with a series of I2C commands. It then uses various heuristics to discern the difference between a water droplet and someone's finger. In order to get access to this kind of low-level data, I wrote a modified kernel module in C for the Nexus 5 smartphone. The process of building a custom kernel -- as well as a live demo of RainCheck -- is available here.