My Facebook University Engineering Program Essays

I believe mobile technology can empower community builders in two main ways:
Mobile technology helps build communities of tech learners and builders. I know that the most popular software products in the world are all built by a community and for a community with an enormous amount of mentoring and learning involved. I’ve first learned how to code in JavaScript and build software with the Hack Club community. With the help and encouragement of my mentors, I turned my open source browser game, Shouty Flap, into an iOS game. It soon got quite popular among Hack Club students. For me, the fact that I am sure what I’ve built has potentially made at least a small number of students think that “if she came in barely knowing how to code and built this in a day, I can build it too” is truly exciting and empowering. This is why I am striving to become a community-oriented tech builder.

Mobile technology helps build communities of tech users. No piece of useful technology is built without valuing the voice of the user and putting the needs of the user at the center. Sadly, we still have a long way to go in genuinely valuing the inputs from students as a community. My college’s official student course registration system was not only not mobile-friendly but also painfully difficult to use. A group of students had formed a coalition calling for a better system until the introduction of SCU-Classes, a schedule builder in the browser developed voluntarily by two students provided a temporary solution. Unfortunately, with the graduation of the developers, mobile SCU-Classes didn’t work out because of worries of the app’s compromised usability in mobile. So our students had to continue the fight for a mobile course reg system. Recently the administration finally decided to build a mobile version of the course registration system. What I appreciated the most from this story was the power students gained to fight together because of mobile tech. I feel extremely fortunate to be in the middle of a highly progressive community built by people who believe in the power of tech, and I am eager to join this rank of builders and engage in my communities through the medium of mobile technology.

My Twitter Academy Essays

It’s getting closer and closer to internship season. I’m preparing for my onsite with Twitter next month and I want to share my responses to the questions on my application and hopefully this would be helpful for some of you.
#TellYourStory: In 280 characters or less, share with us who you are through a hashtag and explain why you chose that hashtag.

The hashtag I choose is #WeTheStudents. This is a hashtag Hack Club uses, and my friends there are making a movement to change the landscape of how high school students engage with computer science and coding. I am extremely fortunate to be a part of this movement. It has changed many of my long held personal beliefs: growing up as an only child, I was used to being protected by my parents and believed that students and young people have little to no say in making important decisions for themselves because of the lack of knowledge and/or experience. To me, the title “student” used to indicate powerlessness. But my experience learning to code and interacting with Hack Club’s members liberated me from constraining myself within the circle of my own family; it made me dare to adventure, live differently and always open to new knowledge. Now I am more than proud to be a student because this title signifies that I am forever a learner who uses knowledge/power to empower others and the power multiplies with #WeTheStudents.

#ShipIt: Our engineers are constantly shipping (launching) new features and functionality on the platform. In 280 characters or less, list one idea you would ship that would impact the way diverse users interact with the platform?
Twitter’s accessibility efforts have already greatly enhanced the usability of the platform for disabled groups. For example, Alt Text is one of the best features that enables a blind user to be able to access images on Twitter. However, its usability is compromised when content providers are unaware of this option, when it takes too much effort for them to manually provide the descriptions for every image, or when descriptions provided are not detailed enough. The use of machine learning algorithms and image recognition technologies can solve this problem by recognizing elements in the image, generating a detailed description. After the basic feature is implemented, further optimizations such as natural language used in descriptions can be done, but content providers can still use the manual input option during the transitioning stage of this feature.

Local Hack Day 2017 @ Santa Clara

This slideshow requires JavaScript.

In October I got an email from someone at Major League Hacking about organizing Local Hack Day on campus. I fought alone last year to make LHD happen but failed – I tried to coordinate it through ACM but I couldn’t get anyone on board. Timing was probably the worst it could be: as much as people wanted to participate, having it during the weekend before finals week is a major factor that can hurt turnout a lot.

But this year LHD happened and it was a blast!


Shoutout to MLH for making logistics cake and hassle-free!

Extremely fortunate to have the board of ACM’s support on promotion and funding for food and those were HUGE determining factors in making this experience successful. I ❤️ SCUACM!

Shoutout to myself for initiating SCU LHD and handling backend tasks like securing venue and swag, coordinating with MLH for mentorship, creating Splash & FB event pages, and most importantly, ordering food 🙂

Why and how did SCU LHD happen?

There was a high level of enthusiasm from Bronco/other local hackers. That for sure was the primary motivation for me about bringing LHD here. ACM already has Hack for Humanity, one the biggest hackathons on campus every year in the Spring, but I felt that a small hacker gathering like LHD can do a better job of creating a pressure-free and welcoming environment for hackers to work together.

What went well?

We’ve had projects made by teams of hackers from SCU and UCSC that only had 12 hours to hack them together.

Holiday greeting card generator is a web app built with the Clarifai IR API that lets the user search for the name of an animal and generates holiday cards with images of it.

SCU Calendar is PC application written in C# that helps the user search for events on campus by keywords. It also uses filters to work around their schedule to make sure they can attend. Once matches are found, the app will notify the user via text about the event. View it on GitHub:

There’s an iOS app for help during natural disasters. The app allows to user to make emergency calls and/or send SOS messages in just one click. The team crash coursed on React Native and Twilio for a couple of hours and got their hands right away onto building it! That alone was pretty impressive, not to mention that this app can be literally live-saving!

What could have been improved?

  • <
    To be fair I would be surprised if ANYONE came, but we’ve actually maxed out our RSVPs and even had guests from UCSC. I was grateful for that. I learned that it’s pretty normal for hackathons to have a more than 50% dropout rate, and could have opened up more spaces for RSVPs.
  • Venue. The venue wasn’t optimal because it was inside a residential building that locked its gates on weekends. Comparing to a big, open space like Locatelli, a classroom isn’t really ideal for welcoming hackers. This is also what makes organizing hackathons much harder than you think (besides getting sponsorships).
  • Better swag and prizes. We didn’t have sponsors for prizes and T-shirts this time and those are big incentives for hackers. We don’t have a robust team dedicated to hackathon org at this point, but in the future we can recruit more people to work on getting sponsorships from companies and orgs.
  • Healthiness and variety of food for hackers. Our advisor, Dr.Figueira, was generous on arranging funding for food at the event. We had two hackers who were vegetarian and had to walk off campus to get dinner. Instead of doing quick online orders of Panda Express, the next time take advantage of the size of the event and collect feedback from hackers for diet options!

After all, organizing a hackathon was way more fun than I expected. It wasn’t big, but can’t say it wasn’t successful. And as a hacker, I could say that it was really nice to be on the other side once in a while.

“Optimistic nihilism” is liberating


Source: Uncrate

I once considered the possibility that Buddhism is a form of nihilism through some explanations of it in a reading. I thought that was a brutally hasty assumption by some but I lacked a good way to argue that realizing that there is no self is in no way intended to be nihilistic. Rather, it goes hand in hand with the Buddhist view of life that often provides people with insights on how to deal with existential dread. I needed to understand it better and needed someone to explain it to me in even more common language. I was confused until this day when I found this video which I thought is the closest explanation of what Buddhism is telling us.

Here’s my example of this idea: I did badly on my first AMTH test today and I let myself drown in a miserable mood for a while, knowing that I made stupid mistakes despite spending so much time studying for it. It was a hit on the head emotionally considering how passionately I’ve set goals for myself in this new year and how confident I was about my plans to reach these goals after careful analysis of my strengths and weaknesses. Ironically, the harder I tried to reflect on how I could have used that studying time better and do better next time, the more pain I felt and less reassurance I have about actually doing better next time. But if only had I realized that nothing will eventually matter, I would have been much less upset, and therefore my emotions wouldn’t have gotten in the way of my reflection. Then I won’t feel miserable and can be objectively sure that I *will* do better.

This is why realizing that there is no self (anything and everything will cease existing at some point) can be a liberating experience. It means to take the first step to overcome existential dread—rather than dwelling in it—and be able to live life meaningfully in a graceful, non-aggressive way.

Essay Partners and my first internship experience at Panopath


I started learning Angular for about two weeks on my own, and it got me an opportunity right away at Panopath to work with another engineer and gain hands-on experience maintaining code and developing a hybrid app with the Ionic Framework.


Late July 2017


~3 weeks


It pairs you up with another high school student who is also working on college applications. Until both of you finish your application essays, you two will be “essay partners” and helping each other build plans on this app.

Each partner has their own plan which both partners can view and edit. To make it more user-friendly, we used local cache to store form data so the user’s name is displayed after registration.


Angular and the Ionic Framework provided the foundation and structure. The app itself looked and felt like a native mobile app and can use native functionalities because of Ionic.


Some of the biggest ones:

  • Improving code quality and readability, designing and planning the project before hammering away on keyboard coding.
  • Making sure that other engineers on the team can read my code, grasp the project structure and get their hands on the project as soon as possible.
  • Writing efficient documentation that has good usage examples for the above purposes.
  • Working at a student-run startup without an established management structure, many situations require everybody to take charge at least once at some point. Fortunately, my inputs were almost always valued by my colleagues. It’s hard to communicate technical details and requirements to management and/or design people who usually think the bigger pictures. But I will also say that putting myself in their shoes and thinking about what the project means for our organization helped a lot in build understanding and trust between us.


There have been so many day-to-day eye-openers, mostly coming from being exposed the first time to the real world of software development and how developers really do their jobs. Comparing to doing personal side projects that weren’t really rigorous, working with others in a relatively fast-paced manner while learning new concepts and technical terms was big to me. As a result, the area I had the most growth in is writing quality and maintainable code by using a consistent coding style throughout the project.


  • Angular
  • Ionic
  • Sass
  • Gulp.js (task automation)
  • Laravel

Spoiling Fridge is here!


Just dump all your ingredients there and you would be fed almost immediately with hundreds of recipes tailored to your needs.

One of my worst habits I’ve always wanted to get rid of is not planning for what to cook and getting a shopping list before the fridge gets empty and it’s time for groceries again. Sometimes I can just play it by ear, grab random ingredients and exotic spices and get lucky in the kitchen. But in reality, playing it by ear doesn’t work all the time. And when it doesn’t, disasters happen in the fridge. Foods that I’ve only used once begin to spoil horribly and all I could do is throwing them away. Since the fridge is empty now, I have to get groceries again. And because I never plan my meals, this just becomes a vicious cycle of getting random foods->using them only once->throwing them away->getting random foods again->using them once->throwing them away…


I decide to put an end to my endless wasteful actions. CodeBreak with StudentRND gave me the opportunity to think about this project and that’s when I decided to make Spoiling Fridge a personal cooking assistant.


June – July 2017


~30 hours


It’s a cooler-looking reimplementation of Edamam, a web app that takes in one or more ingredient names and returns a list of recipes that contain these ingredients. AngularJS is involved.

Thanks to the health and dietary labels you can apply filters to those recipes according to their dietary properties (i.e. low-fat, gluten-free, etc.).


The project was built with AngularJS. Design supported by Google Fonts, Animate.css and Font Awesome.

Every time you press enter after typing in ingredient names, a GET request is made to the Edamam API with the ingredient names as parameters in the API call.


Trying to get what REST really means and how HTTP works for the first time gave me headaches. All I was trying to code turned out to be just a simple GET request, but I spent about 40% of my time on learning these important topics in web dev.

The returned JSON object was also HUGE with a lot of extra information that I didn’t need. I familiarized myself with the structure of JSON objects and how to access them. All of it seems like nothing now, but once felt like climbing up Mt.Everest with my bare feet.


I spent most of my 30 hours of time on learning and familiarizing myself with Angular. ng-repeat was a super life/time-saver. At least I took the time to learn concepts and syntax of a powerful framework like Angular, though it would take me about the same time to just type out every single line of code for the boxes for each result, but will definitely save much more time in the long run.

Feel free to contribute to it on GitHub! 🙂



View this project on GitHub:

(This post is created from Devpost’s project story template)

CollabSketch! : Google Docs for Artists


Montage of creative works through CollabSketch!


My Painter Orpheus illustration. Orpheus is the mascot of Hack Club, the largest non-profit network of student-led high school coding clubs and the developer of the original Collaborative Sketch workshop.


June 2016


~8 hours


It lets you and others draw cool stuff together! If you are familiar with Google Docs or any real-time collaboration apps, this one is a real-time collaborative canvas.


It uses p5.js to support the drawing functionality and jQuery for saving and deletion. Firebase, a key tool, provides instant back-end services so that you won’t lose your masterpiece when you close your browser.


Forming line drawings was a feature that I spent a good amount of time trying to figure out how it works correctly. It required changing up the algorithm that originally drew simple consecutive ellipses to an entirely different one. Originally ellipses were drawn and data were pushed into an array and up to Firebase. In order for line-drawing to work, the new drawing algorithm has to listen to mouse events and keep track of two locations where it will draw the line between.


A change from dot-drawing to line-drawing might seem frivolous, but was actually an improvement on usability (was able to create much more sophisticated doodles).

Don’t be afraid to go the extra mile. You will be surprised by the amount of support and tools you need that’s out there!



(This post is created from Devpost’s project story template)

The Making of Shouty Flap

Shouty Flap Game

Shout to start. Scream to fly.


Playing Flappy Bird was probably one of the most frustrating things ever happened to me. It doesn’t show any fruit after I put so much effort into practicing it — no matter how much I want to become good at it, the scores just seem to always be dominated by my RNG, not my skills. If playing a game doesn’t help me become better at it and the results are mostly dependent on RNG, it is of no value to me and will only cause frustration instead of providing entertainment every time I play it.


That’s why I decided to change Flappy Bird into a skill-based game.


June 2016

Time Spent

8-10 hours

What it does

Since it’s a beginner’s project, it relies on Google’s Speech Recognition API to recognize keywords for actions like “firing a bullet” or “ascending” by the player in the game.

How It’s Built

Under the hood, it depends on a few p5.js and Google SR libraries for game controls, audio input and recording the user’s transcripts and processing them. The game controls are similar to an iOS game (Ahh Pah!) that had been popular in Asia for a while, but now you get to play something like that right on your laptop and in your browser! It even feels more light-weight and fun.


I wanted to implement the game so that the player’s ascension value is dependent on the volume of the voice input and have invisible ceiling and floor to prevent the player from going out of bounds. This was challenging at first because doesn’t have an intuitive coordinate system.

A big problem that happened was when we tried to put the game through PhoneGap and turn it into an iOS app. We tested it first in Safari and imagined that it would be quick and easy, but apparently, Safari needed plugins to support a method in p5.js to get any voice input. We tried with several plugins and they did not help solve the problem whatsoever. That was when we decided to let go of PhoneGap thought since we don’t want to add any more dependencies to the project. I’m still working on finding a solution to that need.

What I learned

A casual game should always be fun to play and make, and it’s not a matter of its programming complexity. It’s the first time I’ve really experienced the power of JavaScript and its libraries and realized that I could use it to turn a frustrating game, a game I (and probably you, too) have almost given up, into a crazily fun one.

I’m also excited to hear that this game had become quite popular in the Hack Club community and had been introduced as an example project to new Hack Club members. Shout out to Hack Club! Shouty Flap was made possible for everyone to enjoy because of you.

Please, contribute to it on GitHub if you know how to make it better! 🙂

Built With

Try it out

View this project on GitHub: Shouty Flap

(This post is created from Devpost’s project story template)