top of page
bigger.png
PROGRAMMING

I started at UCLA as a Physics major with very little coding experience. Out of curiosity, I enrolled in an introductory Computer Science course hoping to learn a few useful skills, and well... 

I ended up switching majors!

What I liked most about programming was how well it merged with design. As a creator, a whole dimension of possibilities opened up with the addition of interactivity. When mixed with graphic design and animation, it paved the path to game, app, and web development, fields I'm currently exploring.

Below is a collection of coding projects I've worked on.

Developer & UI Designer

Virtual Rooms is an iOS and Android platform for creating and sharing VR room designs. It was completed at my very first hackathon, MHacks 11, and won the award of Best Use of Wayfair's API. 

Virtual Rooms was developed using Unity and Wayfair's furniture model database API. As a developer, I linked the camera to the phone's gyroscope for 360 degree viewing and imported models from Wayfair's database. As a designer, I wire-framed the application and implemented all UI elements.

This video shows a quick demo of the final product.

THE REALITY SIMULATOR

VR Developer & Designer

The Reality Simulator is a two player VR experience built using Unity and ported to the Oculus Rift. One player records the environment using Arduino sensors and the other player observes a creative interpretation of the data in VR.

 

I created the algorithms for translating data into 3D models, animations, and colors. As the designer, I decided how environment's temperature, sound, brightness, and acceleration should be interpreted in this experimental simulation.

This video shows a quick demo of the final product.

color.gif

Frontend Developer and Designer

Color is a web application that turns live drawings into music. Inspired by Google's Kandinsky, this quarter-long Creative Labs project explored Javascript drawing, shape recognition, and note playing.

As a developer, I implemented the drawing of strokes onto the canvas using Javascript's p5.js library. I also programmed the undo functionality using a stack to keep track of each stroke. As a designer, I made the application more appealing by having the stroke widths vary dynamically based on velocity of the brush. Finally, I created a liquid canvas effect which warps lines when moused over.

The project can be played here and the Github repository is here.

Sole Developer & Designer

Pavve was a weekend project I created after realizing how much potential p5.js had for making psychedelic drawings.

I used react.js and Github pages to build the site and p5.js to draw and color all the content. When the mouse is dragged, it stores the lines of its path. On every draw, instead of simply displaying all the lines, it translates the points so they become exponentially further away from the mouse, resulting in some trippy visuals.

An endless mini-game was implemented where the player must find hidden portals to advance to the next realm. The background color hints whether you are hot or cold. 

The game can be played here, and all code can be found here.

pavve.gif

Sole Programmer

hang.png

The Hulu Hangman challenge involves coding a program that plays Hangman by sending HTTP requests. It was used as a induction requirement for Upsilon Pi Epsilon, UCLA's Computer Science Honor Society. Our requirement was a 20% success rate within 100 games, and successful games being within 3 guesses.

I coded in Python, and used the 3,000 most common English words, along with any new words encountered in practice games as a dictionary. The initial state was guessing the most common letters in English. Once it hit the first wrong guess, it would switch to state two and determine all possible words using the dictionary (which excluded any wrongly guessed letters). In addition, if a unknown word had fewer than 5 possibilities, weights would be added to those words, so characters in them would count for more. Finally, the program would choose the heaviest-weighted character. The success rate ended up being almost 40%.

All code is available to view in the HangmanAI Github repository.

Sole Developer & Designer

This website's homepage was my first web development project,

and I'm pretty proud of the result.

I watched tutorials, read forums, and eventually learned enough HTML, CSS, and Javascript to shape the front page into what it is now. This included creating multiple draggable elements that would stay on top when dragged, animating typing, spawning windows, integrating exit and scale buttons, and implementing a skip option for the intro. In the process, I grew to genuinely enjoy web development and design, something I'm excited to explore further in future projects.

To learn more about the idea and design behind the homepage, please check out About the Homepage. All code is available to view in the Behind the Homepage Github repository.

window.png

Sole Programmer

battle.png

One of the most challenging, yet fun, class projects was creating a program that played Battleship. In the project, the skeleton code provided the Board, Player, and Game classes and defined their member functions. My job was to fill out these functions, weave the classes together, and finally code the techniques of a decent player.

GoodPlayer has 3 states for guessing. The first is simply random guessing. Once it hits a ship, it switches to stage 2 where it determines the spatial orientation of the ship. GoodPlayer fires until a ship is sunk, and the length returned corresponds with the number of hits. However, there are exceptional cases when two ships are adjacent, and the hits do not correspond with the sunken ship length. This switches GoodPlayer to stage 3 where it solves this conundrum. 

All code and the README, which includes pseudocode, a description of each data structure, and more details on GoodPlayer's strategies, are available in the BattleshipAI Github repository.

Lead Developer & Designer

Space Expiration is a mobile bluetooth multiplayer game completed as a quarter-long project for a networks design class.​ I led a group of four, teaching members the basics of Unity and how to structure scripts efficiently.

 

I coded the enemy boss AI, which regularly scanned for the closed ship and pursued it. The further a ship was, the faster the boss would move, which avoided the possibility of outrunning the boss forever. I also coded asteroid and resource spawning, which occurred close but outside the camera view. They were destroyed when beyond a certain radius from all ships.

All scripts I contributed are available to view

in the Space Expiration Github repository.

CATASTROPHE

Lead App Developer

Catastrophe is a mobile AR game completed as a quarter-long project for Creative Labs. It was developed using ARKit in Unity and ported to iPhone using Xcode.

The premise of the game is to protect a virtual cat by shooting robots and UFO's chasing it. I used ARKit's surface detection to spawn the cat and enemies within a certain radius. I was also responsible for exporting the app and presenting a demo of the final version to 200+ members of the club.

To view other projects along with coursework, please check out my Github (justinma98)

7.5.18

bottom of page