About Me

I'm currently in my third year as an undergrad at UC Berkeley, majoring in Computer Science. What intrigues me most about technology is its transformative nature, the fact that we can revolutionize the way people travel, shop, eat, work, find information, and communicate. In my career, I hope to do more than just meet deadlines or cut costs or increase profits. I hope to contribute to a shift in the way that we as humans approach our daily lives.

One of my passions is improving the educational experience for undergraduates at large public universities such as Berkeley. As an Undergraduate Student Instructor for a 700 student (and growing) lower division CS course, I focus on understanding how our teaching staff can give each student opportunities to improve at problem solving and gain confidence. Through discussion sections, office hours, creating problems, and other resources, my primary goal is to make learning less intimidating, more accessible, and more personalized than it tends to be in a large lecture hall.


Software Engineering Intern, Google

As part of a Google Drive backend subteam, I contributed to a new Drive product launch targeting enterprise customers. I iteratively designed and implemented a feature for this new product, with goals of helping users to quickly locate relevant documents and optimizing performance for Google Drive backend. As part of this project, I helped improve querying infrastructure in Drive to ease the retrieval of documents that users search for.

The product, called Team Drives, was publicly announced recently: click here to learn more .



Click here to see the GitHub repository for this project, including a video demo. Click here for documentation I wrote about my design decisions and the user flow on each screen.

Using Java and XML, I created an Android application for smartphone and smartwatch that uses location data (either from the device's GPS or a user inputted ZIP code) to look up the user's Congressional district. Using the Sunlight Congress API and Twitter API , the app provides profiles for the district's legislators in the Senate and House of Representatives that include their political party, email address, committee involvements and recent Tweets. The app also parses a JSON file to display the district's vote breakdown from the 2012 presidential election, in which President Barack Obama was reelected.

In creating this application, I learned to use Android Studio and test my progress on an Android phone and smartwatch. The primary challenge was designing an intuitive, easy-to-use applicaiton for two different devices with slightly different purposes. For example, the watch version of the app featured larger buttons and fewer details, to accommodate the smaller screen and user's desire for quickness and mobility. In contrast, the phone version offered extra details, such as the committees that the legislators are involved in and recent bills they sponsored. I learned the design standards for Android applications and adapted to the expectations that phone users have when using their apps.

Through extensive prototyping and user testing, I realized that what may be obvious to a developer may be confusing and frustrating for a user. I also understood the additional challenge of implementing a design vision, even after the design has been iteratively improved. This was the first project that I worked on from conceptualization and prototyping all the way to a tested finished product.

PageRank: MapReduce

Utilizing Python Spark, this program determines the relative popularity of websites. In order to do so, it takes in inputs giving probabilities that users will stay on a given site, randomly follow a link from their current site to a new site, request to access a previous site, or randomly go to a new site.

The algorithm works through a graph model that treates each webpage as a node and each link from page to page as a directed edge, using backedges to represent the user returning to a previous page. It then updates the relative weights of all sites in the given dataset, performing many iterations as the weights of sites are transferred based on user behavior probabilities. Heavier weights correspond to more popular pages and will be listed higher.

Alphabet Sort and Autocomplete

Java program that alphabetically sorts words in input files given a customizable alphabet. Uses the trie data structure to do so.

With this alphabet, it leverages ternary search tries, priority queues, and data on word frequency to find top matches for user-inputted word prefixes (essentially giving autocomplete suggestions).

Technical Details

Check out my GitHub account (including this website's source code) here!

See my resume below for details on languages/ software I'm comfortable using.

I have also worked on multiple projects for Android mobile and smartwatch development, focusing primarily on Human Computer Interaction. This includes designing UIs, creating interfaces on the front end, and implementing application functionality on the back end.

Outside CS

I grew up in Irvine, California. In my free time, I do all the typical things that college students say they like to do: sleep, go to the pool, listen to music, and consume pop culture.

At Cal, I am involved in student government, known as the ASUC. I've worked with various elected officials to improve students' experiences on campus through projects such as a laptop rental program, a 5K run to fundraise for mental health awareness, and a survey to collect and disburse information on Berkeley's city housing crisis.

Contact Me

If you would like to contact me about career opportunities, my personal projects, or anything I'm involved in, feel free to email me . If you would like to learn more about me, check out my LinkedIn or download a copy of my resume .