Ski Game
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
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
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
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.