Hi, I'm Johnny Ho!

I'm a Senior studying Computer Science at Rice University (Graduating May 2021). Scroll down to read more about me.

About Me

In addition to an interest in Computer Science, I am also really interested in cars, and am also a top 100 player in a video game series called "Forza", which millions of people play. I also enjoy drawing and recently started getting into photography.

Since coming to Rice, I've participated in a few Hackathons, as well as trading competitions. I have been involved in many clubs, like the Rice Vietnamese Student Association, working to help high school students better understand the college admission process, and more coding related clubs like the Rice Computer Science Club and the Rice Computational Finance Club.

This past summer, I worked as a Software Development Engineer Intern at Amazon, in Seattle, WA (Virtually). I am looking for full-time positions as I am graduating in May 2021.

My Experience at Amazon

I worked with the Kindle Rewards team within Amazon. This team handles various offers and promotions that show up when you are looking at Kindle books or through emails, for example, you might get targeted an offer for "Spend $20, Get $5" for eBooks.

The main project I worked on was making an internal website that will serve as a foundation for multiple functions, but for the scope of my internship it was to verify that users had access to view/create (separate permissions) entries on the table, and if they did have permission, then they could view it on this page rather than having to enter the AWS Console and go to the DynamoDB page there. I completed this, the website was created in React with Typescript and for the back-end I used an AWS Lambda as well as some internal Amazon tools to create a CloudFormation template that when deployed would update the Lambda as well as various APIs and roles that the front-end page needed to interact with the Lambda, which in turn interacted with the DynamoDB table. When users tried to create an entry, there would be client side validation (making sure the form wasn't empty and other basic checks) as well as server-side validation (checking values matched our Enums and other formatting). When viewing the list of entries from the table, I paginated the results and made API calls when users looked at a different page in the table of results on the website, to reduce loading times from getting a large number of entries at once. I was able to deploy this project into production, but I also did some other things in my time there.

I created a library package so that my team would have a standardized and validated way to interact with this DynamoDB table, as there was a Data Access Object class that would verify all incoming and outgoing entries from the table. Since I was using AWS Lambdas, I also ran into issues when first opening the page, as the Lambda needed to start up, which would take around 10 seconds. I researched this and was able to reduce it down to around 2 seconds, a 5x improvement, without increasing costs by a noticeable amount (For reference the "official" solution by AWS called "Provisioned Concurrency" only reduced latency down to 5 seconds and cost around 50 times more than my solution). I documented my findings and my whole development process on the Amazon internal wiki. If you want to know more about anything I did here, I'd be happy to explain in more detail!

My Experience at eBay

I worked with the SearchX Team within eBay. They are responsible for the search bar for eBay's main internal website, and also adding features on top of normal search, most notably with a chat box that opens with certain keywords to guide users through common questions/issues that are searched.

I did a lot of small features and proof of concepts with this team, like creating a Java library to cut down on duplicate code between projects. However, I also worked on two major features, called "Webclip" and "SearchX Admin Page". For Webclip, I worked on initially migrating code so that the chat box that shows up on other eBay websites where the feature would be useful. I worked on this using Angular. For the SearchX Admin page, I created a CRUD web application to allow managers/moderators of SearchX to easily modify the database of users (previously it had to be manually changed in the database). For this feature I worked on it using Angular, Node.js, Java Spring, and MongoDB.

I also talked to other teams and gave them suggestions, as well as submitting over 10 production bug reports for the main eBay website.

Projects

I worked on a few projects for hackathons and trading competitions, but I also worked on a few projects on my own, most notably my "CARma Reviews" project. This is a car review aggregator (like Metacritic or Rotten Tomatoes) as well as a social media website. The basic idea is that data will be gathered from various car review websites, and their scores will be combined to determine a winner, in a hopefully less biased selection. Users can discuss about various vehicles. Users can also adjust the weighting for various car reviewers, to better match the score to their personal preferences. The intention of this tool is to help people to buy a car as objectively as possible.

Want to know more about me?