Karen Gao

Creating the next

HomeProjectsResumeSkillsContact

Projects

MIT Weblab Web dev competition IAP 2021

Languages used: ReactJS, Node.js, HTML/CSS, JavaScript
Technologies used: MongoDB (database), Google Cloud (storing images)
Designed the backend and UI for a travel app in 2 weeks that allows users to create posts with captions, photos, and optional stamp/background colors within each chapter/trip along with its location to be displayed on the map tab for other users to see using react libraries.
Implemented the backend user/page/chapter schemas and API calls for creating/deleting chapters and pages, updating user bio/profile pic in Node.js to the MongoDB database, and storing the images in Google Cloud
Programmed the frontend for the scrapbook UI/UX (posts, chapters, comments, likes), map tooltip with hover feature for displaying chapters on the interactive map, profile update, and animated homepage.

Client Java Swing GUI designed and implemented mainly by Karen Gao with some refactoring assistance from Daniel Barnett

Implemented a client and UI for a multiplayer crossword game on the server at port 4949 that allows for fill, erase, check, and concurrency using live update (watch method/callback functions) on the server.
Designed a client-server wire protocol in regex grammar, specs for the crossword ADT that stores game state, and multi-threaded tests for the server to handle concurrent requests like look, erase, get list of games, and watch, that returns the current board state along with the players in it once there’s been a change.
server handles requests like /look/gameID/playerID, /erase/gameID/playerID/direction/r,c, /getgames/ and /watch/gameID/playerID

A 3-round bluffing multiplayer party game supporting up to six players connected to a shared web server.

A bluffing multiplayer party game supporting up to six players connected to a shared web server where each submits bluffs and votes for their favorite on their local ESP32 using a button-tilt mechanism, which are then communicated to the website platform (in JavaScript) via a SQL database
Players use their ESP to enter a word that they believe legitimate. If a player happens to enter the correct answer, they are informed of this and encourage do enter a false answer
Shared server presents all players' answers as well as the correct answer.
Players select the answer they believe to be correct. A player scores points by selecting the correct answer, or by having other players select their fake answer

Keeps track of items in shopping cart and displays current tally with each addition of items.

Uses POST requests to add new items to our online server database and get a response of all items so far along with total price for the cart.
Device that acts as a mobile shopping cart tracker that the shopper can use to add groceries to their cart and display the current tally along with the cart's current total price. Built using an ESP32, a button, LCD Screen. Programmed using Arduino/C++.
User is able to specify the quantity of each grocery item added
The system communicates with a server-side script including a database that keeps track of the current shopping tally for the user
The user is able to check-out/reset the system

Detects objects within a few inches of the phototransistors and senses right to left/left to right motion and its speed in inches per second.

The two phototransistors that comprise this motion detector circuit system should be able to detect objects placed a few inches above it.
Also detects right to left or left to right motions and its corresponding speed estimation in inches per second.
LCD screen displays a speed estimation of the most recently completed left-to-right or right-to-left motion.
The motion-sensing system has an auto-calibration procedure at the start to collect ambient light settings to detect future relative motions.

uses a microphone to sense loud claps. The screen turns GREEN or RED in response to two consecutive loud claps spaced around 0.5 seconds apart

A clap-clap turns the screen on (turns green) and another clap-clap turns the screen off (turns red).
A clap-clap is a series of two claps spaced around 0.5 seconds apart (less than a second and more than 0.25 seconds from the previous clap).
The system is able to distinguish loud claps from loud continuous background noises.
Only responds to “clap-claps” or a series of two quick claps, not three, four, or more

Programmed this digital/analog watch in arduino using and ESP, an LCD display screen, and a switch.

Get's current time around every minute from an url.
uses an internal timer to update the time in between each GET request
Upon the press of the button, the LCD changes from analog to digital or vice versa depending on the previous display state of the watch
done through a state machine where there are three states: 'IDLE', 'UP', or 'DOWN' to denote which state the button is in.
To keep track of which state to switch to when the button becomes pressed, we have a global int called num_pressed to keep track of the total number of times the button has been pressed. If num_pressed is even, display analog and if odd, display digital instead.