svg module heavily, and underscore for its functional helper tools,
I created a replacement for my school's (New York University Shanghai) course-helper,
which is named Albert. The data was formatted into an easy-to-consume JSON file--located at /src/courses.flat.json-- via a series of Python
scripts, with Selenium used to interact with Albert itself.
Unlike Albert, Jeeves is:
While detailed analytics were not obtained, thepage was requested roughly 400 times over a month, indicated a modest degree of success. Further improvements would be supporting all three of NYU's major degree-granting campuses' schedules; improved analytics using Google Analytics; and a better layout.
Created in a hackathon along with 2 other teammates. This web app takes a list of ingredients you have on hand, and searches for a recipe you can create either using only ingredients you have, or those you can make with n extra ingredients, where n can be provided by the user.
My contribution to the project was the client and the backend infrastructure.
Using pyeuclid for geometry, JSON format for configuration files and pure Python for the rest, I created a simple implementation of a recursive raytracer. This version builds on the experience I gained coding a previous one. For example, camera rotation is implemented with quaternions. Features include:
However, due to limitations of Python, render speeds are not fast enough for a realtime display and are instead saved to a file.
Boids are agents that act following three rules: separation from nearest flockmates, alignment with nearby flockmates' directions, and cohesion, steering towards the center of gravity of nearby flockmates. This demo follows basic MVC principles, where a model (that consists of an array of boids) is updated continuously, which then affects the view, facilitated by d3.
This project was made firstly because I simply enjoy creating simulations, but also because d3 and svg is a robust combination for making simple graphics effortlessly, compared to eg. SDL.
A simple, effective web app that uses d3.js's transition module to provide a novel 'clock,' where time is represented as color, changing over time. The text smoothly and automatically resizes itself when the screen size is changed. The color transitioning uses HSL for more intuitive scaling, compared to RGB. This project was an exercise in using d3 as a jQuery alternative, simple responsive page design, and attempting to make something simple but useful.
A naval trading game/simulation written in C++. Inspired by the series Uncharted Waters, this game aims to simulate economies and merchants not as systems but as individual agents acting to form observable, rational behaviours. Some features include:
Using the human genome files generated as a result of the Human Genome Project and mirrored by Project Guttenberg, I used Python to transform the chromosomes into an image. The finished chromosome images are hosted on a "viewer" page that lets the user click on the image and find the actual genome at that point. Unfortunately, because this was created a few years ago and I have migrated systems, the look-up system no longer works and will require some non-trivial effort to reintegrate it.
Some key points:
This is a simulation of water, using the "virtual pipes" model described in this paper. Water is placed in imaginary, discrete "boxes" and water flow is modeled as water transfer between two such boxes. Implemented with C++, with Allegro for the 2D info window and a DX11 renderer (made by Joshua Alway), this simulation utilizes up to 4 threads to more rapidly process each simulation step. It has a simulation speed of roughly 20fps at optimum.