About My Projects

Although I've done a fair amount of coding in PHP, ASP.NET, Python, C, and C++, most of the work you will find here was made either with JavaScript or with Java. The web projects will all run in the browser, but you may need to update Java on your computer to run the simulations or games. If a project does not open because it is from an unidentified developer, just right click and select Open.

Some of the projects here are years old, so note the dates next to the project names to see how far I've come! I hope you find something here you like!

Mammogram Analysis Using CNNs View
5 • 2016

A short research paper I co-authored for my machine learning class. We used TensorFlow for detection of abnormality and classification of calcifications and masses.

Half-plane Range Reporting Open
1 • 2018

This method of computing the intersection of a half-plane and a point-set is output sensitive and allows for optimally efficient queries - O(logn + h) - after a fast preprocessing step - O(nlogn) - where the size of the input is n and the size of the output is h. This is a graphical walkthrough made as a follow-up project to the Chan's Algorithm project below.

Chan's Algorithm Open
1 • 2017

Chan's algorithm is an optimal output-sensitive algorithm for computing the convex hull of a point-set in O(nlogh) time where n is the total number of points and h is the number of hull points. This is a graphical walkthrough of the algorithm made with D3.js that I made for my Computational Geometry class.

Jumbo Meal Me Open
3 • 2016

Dining halls at Tufts operate under what is far from a perfect system. It is very easy to overpay for a meal plan and most students do it every semester. This is meal plan calculator that optimizes total cost based on eating habits. Savings are theoretically on the order of hundreds of dollars.

Base Open
1 • 2013

A numerical base conversion calculator. It converts between all bases from binary to hexatridecimal. The web page includes a short explanation of the theory behind number systems.

Sweyp Download
4 • 2015

Over the years there have been many versions of this game. There are sixteen letters. You have one minute to find all possible words by swiping over the letters. Press R to restart the game when your minute is up.

Tiles Download
12 • 2013

This is an original game that was inspired by several online games I played as a child. Move your piece around the board so that you hit every tile exactly once. The levels get harder as you go, so try to beat them all.

Tower of Hanoi Download
7 • 2013

Another classic game, Tower of Hanoi is a puzzle where you try to move all disks from the first peg to the third. Disks can only be placed on disks bigger than themselves and you can only move one at a time. Use the space bar and arrow keys to pick up and move disks between the pegs. Press the equals key to check your high scores, the R key to restart, and the number keys to change the level.

Armada Download
1 • 2013

Armada is a two player race to treasure on the open sea. The game uses somewhat unconventional physics to challenge reflexes and strategy. Arrow keys control the red ship and W, S, and D keys control the blue ship.

Evolution Download
5 • 2012

This was one of the first graphical games I ever made. Use the arrow keys to select the element type and pen size, then click or drag on the screen to experiment with the elements.


Directed Download
12 • 2014

Directed is a force directed graph simulation. Click on the screen to add nodes. Drag between two nodes to create an edge. Press R to restart the simulation or press G to create a new random graph. The F button will toggle spring forces.

3D World Download
8 • 2014

I was interested in the idea that a 3D world could be projected onto a 2D screen and that large worlds could be created using only triangles. This was my attempt at creating my own 3D world. This was made with close to no knowledge of vector math or the power of modern graphics engines. Use W,A,S,D to move around, space to jump, the mouse to look around, and the number keys for different visual effects.

Other Projects

7 • 2016

ChrisOffline.com was my first personal website. I bought the domain in 2012 to teach myself HTML and CSS. I soon realized I would need to learn PHP to make the kind of website I wanted, so it was all in PHP for four years. In 2016 I rebuilt the whole thing with React. The site went through many iterations and taught me a lot of what I know about web development.

Unsupervised Genre Discovery
7 • 2016

This was a short project that I worked on trying to help out my friends at Fyrno, a music discovery app that helps you find new music from up-and-coming artists. I used the SoundCloud API and a few Python libraries to group similar users and artists in order to create genre labels without looking at song metadata. I then used graph visualization software to show how SoundCloud genres cluster.

Scheduler HD
8 • 2013

I worked with a friend after our junior year of high school to create a web application that let students share their schedules and compare teachers and free periods. Students could make accounts, add friends, and easily find common free periods. We started and finished the site in just a few weeks so that we could go live before classes started.

Park Tudor Chemical Database
5 • 2013

The science department at my high school requested an online inventory of chemicals in storage. I worked with two other students in my Dynamic Web Development class to build this project over the course of a semester. The project is now used in my high school to clear expired chemicals off shelves, alert the science department when chemicals are about to expire so more can be purchased, and automatically send teachers safety information by email when they use hazardous chemicals from storage. QR codes on bottles are scanned by mobile phone and a desktop web portal can be accessed by the science department chair to view all of the database information.

5 • 2012

Vector was an online multiplayer game made with Java sockets. Players would connect to a server through LAN and login with secure credentials. Users could customize their account and talk with friends in a chat room. From there users could challenge friends to a game where they would try to knock each other's marbles off of a table. Records of wins and losses were kept for each user to be accessed whenever they logged in.