Resume | GitHub | LinkedIn | Email
Hi! I am a senior at Stanford University studying computer science (systems and machine learning) and psychology (minor). I've worked on AI research, created mobile apps, and competed in programming competitions.
In my free time, I love to take pictures of space, edit videos, and solve the Rubik's cube.
Check out my:
projects | experience | research |
coursework | astrophotography
3DOVE is a 3D object viewer that runs on a bare-metal Raspberry Pi (no operating system or standard libraries). Featuring optimized triangle rendering using z-buffers, directional lighting, moving around the model, and loading any .obj file from the file system.
Created for the Stanford CS107E final project.
Oratory is an Android application that makes speech memorization a breeze. After saying your speech into the microphone, Oratory uses string matching algorithms to tell you what words were missed, added, and misspoken.
Won 2nd place at Los Altos Hacks II (2017)
Bibliofly is an Android application that allows users to browse, place holds on, and check out library books all from their phone.
Won 3rd nationally at the FBLA National Conference (2018)
Won 2nd runner-up in the Congressional App Challenge in district CA-17 (2018)
Course Portal helps students organize their notes and coursework. Quickly create Markdown notes using templates, add upcoming assignments and tests, and quickly join online classes with dedicated buttons for video call links.
Course Portal is built using NodeJS, Electron and JavaScript, so it runs like a native app. It can run on macOS, Windows, and Linux.
I developed an end-to-end Python/C++ service to read raw trading position data, enrich the data, and publish it to a new trading view. I parallelized column enrichment and data queries using batch Kafka consumption and multithreading to achieve an 8x processing speedup.
I designed a generalizable system for defining and parsing custom column filters that can be used across all trading views. I worked with traders to design the view and columns for their use cases, and I deployed the new service and view to production.
I worked on optimizing the performance of an Apache Kafka pipe that received real-time trade data. I prevented lag spikes from occurring when the pipe received high volumes of trades that it had to write to a Cassandra database.
I achieved a speed improvement of 2,200x under maximum load, and deployed my changes to internal production.
I implemented a reinforcement learning-based adaptive data selection pipeline for computer vision (CV) tasks using OpenAI Gym, PyTorch, and Python. I trained a Neural Data Filter (NDF) to learn which data to keep at which stages of task model training, then used the NDF to dynamically filter training data during task model training. Finally, I ran models on production datasets using GPU clusters and improved task model accuracy by 27%.
I worked with a team to build a convolutional neural network (CNN) using Python and PyTorch to predict average income based on satellite imagery.
Our model achieved the highest accuracy among teams in the Open division for the Fall 2020 project.
I am helping create a simulation using Python and Pygame to model a boat navigating an ocean with moving obstacles and currents. I also developed an algorithm to autonomously steer the boat to various waypoints while avoiding obstacles. The algorithm uses Voronoi graphs and shortest-path algorithms to efficiently plan a path to its target.
The ultimate goal is to sent a small boat to the ocean surrounding Palau to autonomously take measurements of coral reefs.
We created an algorithm that takes in a crumpled image and outputs its uncrumpled form. We tried many different methods, but found that an adversarial PatchGAN approach with small patch sizes worked best, both empirically and subjectively.
This work was a winning Stanford CS 231N final project in Spring 2022.
We created multiple deep learning language models to generate lyrics for inputted music data. Our approaches ranged from completely non-neural methods (e.g. naive Knapsack) to fully-open text generation via language models (e.g. T5 fine-tuned on lyric generation), as well as hybrid approaches (e.g. Knapsack+GPT).
This work was a winning Stanford CS 224N final project in Winter 2023.
We created a reinforcement learning (RL) algorithm that is comparable to, and at times can outperform, current RL algorithms when tested on numerous benchmarks. The algorithm uses a Gaussian process (GP) to learn the approximate reward function, then make updates to the policy based on the GP's estimates.
GPPO won the following awards, under the working title Novel Reinforcement Learning Methods in Collaborative Environments:
CS 149 Parallel Computing
EE 180 Digital Systems Architecture
CS 143 Compilers
CS 144 Networking
CS 137A Principles of Robot Autonomy
CS 161 Algorithms
CS 111 Operating Systems
CS 107E Computer Systems from the Ground Up
CS 106B Programming Abstractions in C++
Algorithms 4-course specialization on Coursera offered by Stanford; view certification
CS 224N Natural Language Processing with Deep Learning
CS 231N Deep Learning for Computer Vision
CS 229 Machine Learning
CS 224W Machine Learning with Graphs
CS 229S Systems for Machine Learning
Deep Learning 5-course specialization on Coursera offered by deeplearning.ai; view certification
PSYCH 45 Learning and Memory
PSYCH 60 Developmental Psychology
PSYCH 50 Cognitive Neuroscience
PSYCH 118F Literature and the Brain
PSYCH 236 Mind Reading with Movies and Neuroimaging
PSYCH 1 Introduction to Psychology
ENGLISH 91 Creative Nonfiction
GEOPHYS 54N The Space Mission to Europa
FILMEDIA 50Q The Video Essay
THINK 66 Design That Understands Us
ARTSTUDI 171 Introduction to Photography