Peter Looi: Portfolio

Summary

Hi! I'm Peter. I'm an experienced and passionate software developer with a Master's in Computer Science from University of Southern California. I am interested in artificial intelligence, algorithm design, game development and programming language design. In the past, I have developed databases, designed websites, built automation software, and conducted AI research for Intel over the course of several summer internships. My passion for computer science shows in the ambitious personal projects that I undertake. This webpage is dedicated to showcasing my best coding projects as well as miscellaneous projects.


Ski Game

Download Game:

CLICK HERE TO DOWNLOAD
Embark on an adventure through the mountains with nothing but a pair of skis. Learn how to navigate steep terrain, cruise down the pistes, and try to get the best time on the race courses. Released on Steam.

Tennis Statistics Tracker

Open Web App:

CLICK HERE TO OPEN
Use this web app to record statistics of tennis matches, such as points won, points lost, service points won, service points lost, player formations, double faults, and much more. When the user needs to keep track of statistics categories that are not provided by default (e.g. was the point won at the net or baseline), they can press the "Custom Statistics Group" button when creating a match to create a custom template for recording different statistics. Match data can be saved into a json file, allowing for the sharing of match data.

Valorant Lineup Dictionary

Download Link:

CLICK HERE TO OPEN
Lineup Dictionary crispens up your gameplay by allowing you to quickly look up lineups in the middle of a game. The interface is designed to sit on top of your game and is completely navigable via hotkeys, which are completely customizable and can be used to lookup lineups in a matter of seconds.

Glass Programming Language

Download Link:

CLICK HERE TO DOWNLOAD GLASS
Glass is a programming language designed by Peter Looi that aims to improve code clarity through the use of a novel feature called the fill-in-the-blank. Fill-in-the-blanks allow for function calls to be formatted in whatever way the author of the function desires. To define a subarray function in Java, for example, the standard way to do that would be
int[] subarray(int[] originalArray, int start, int end)
However, the issue with this format is that it does not read like a sentece, and someone using the function would have to read through all the documentation in order to find out what exactly each parameter does. However, to define the same function in Glass, the coder would write something like this:
howto (subarray of *Array from *Start to *End) outputs &
The asterisk in front of Array, Start, and End indicates that those are the parameters, while "subarray", "of", "from", and "to" are part of the function's "name". To call this function, the coder would write
MyList = (list 1 2 3 4 5)
MySubarray = (subarray of MyList from 0 to 3)
Clearly, this format of fill-in-the-blanks allows for code to look more like real sentences, and it helps describe the role of each parameter in a way that even the most clear documentation could not. Using Glass, code clarity is something that the coder doesn't even have to think about, as the code will always be clear as long as the programmer properly uses fill-in-the-blanks.