Brian Zheng
About
Experiences
Projects

MIT CAVE Lab

The CAVE Lab maintains a web app that allows users with minimal coding experience to create data-visualization web apps with a simple Python API.

React
Redux
JavaScript
HTML
CSS
Git

Implement On-Screen Keyboard

Implement On-Screen Keyboard

Mission Purpose

Many users cannot easily use the web app's text/number inputs, such as those with touch screen monitors or those who do not have access to a physical keyboard.

Resources

React Simple Keyboard
React
Redux
JavaScript
HTML
CSS
Git

Journey

I researched simple on-screen keyboard JavaScript libraries and landed on React Simple Keyboard. I used the library as a base and customized it with custom styling and functionality to fit the web app's needs.

Results

The on-screen keyboard is now a part of the web app and users have access to a full keyboard as well as a number pad for inputting text and numbers. The keyboard is resizable and draggable to fit the user's needs.

Activate Height On Maps

Activate Height On Maps

Mission Purpose

Many users need to display the height of their map features and would also benefit from the ability to compare measurements of their map features with height.

Resources

Mapbox
Three.js
React
Redux
JavaScript
HTML
CSS
Git

Journey

I researched Mapbox's documentation to find a way to create custom layers on the map. I then used Three.js to create 3D objects on the map and linked them to the map features to display their height.

Results

The map can now display the height of map features and users can compare the height of different features. The range of the height of the map features can be set in the map's legend.

Optimize Number Inputs

Optimize Number Inputs

Mission Purpose

Updating the number input requires the session to send the update and receive the new value from the server, which can take a few seconds. Many users' experiences would be improved if they could update the number input faster on their session.

Resources

React
Redux
JavaScript
HTML
CSS
Git

Journey

I dug into the number input implementation to find out why the update took so long and found that it was waiting for the server to respond, even if it is the session that sent the update. I changed the behavior of the number input so that the session that updates the number input updates their value first before sending it to the server.

Results

The number input is now fast and responsive for the user of the session that updates the number input.