Software Project Portfolio

Writing software is my passion. Building web applications, websites, tools, utilities, or artsy code sketches is what I do in my free time and want to do for my career as well. Here is a collection of the notable software projects that I've undertaken and published. The list isn't comprehensive and is always growing.


This Website

Nov. 2018 - (under development)

A homepage for myself with the primary purpose of showcasing my professional skills and achievements as well as personal projects and interests. I aimed to create something that demonstrates my skills as a web developer as well as gives others insight into myself and what I do.

A screenshot of the homepage of this website

The goal of this project is to create a web-based music creation application that can be used entirely within the browser. Since the modern WebAudio API provides everything necessary to create complicated synthesizers and perform advanced audio processing, I believed that the web could work as an accessible environment in which to build this.

A screenshot of my online MIDI editor's UI showcasing drawn MIDI notes and controls for the synthesizer that plays when they are drawn and selected.

react-control-panel

Sep. 2018 - Sep. 2018

A React port of the control-panel (https://github.com/freeman-lab/control-panel) library. I maintained 100% visual appearance and functionality parity with the original library while making it usable from React. I also added several additional features such as making panels draggable, making UI state external, and adding an Proxy-based interface for manipulating the UI state externally.

A screenshot of the react-control-panel UI showing two programatically generated control panels using the light and dark color themes

phost

Sep. 2018 - Sep. 2018

Server and TUI for managing and deploying static websites and files. Deployments are created as subdomains, allowing a directory of static files (such as one produced by `yarn build`) to go from your computer to being hosted at `project.ameo.design` with a single command.

A screenshot of the command line after running two phost commands for listing existing deployments and updating the deployment for the development version of this website.

Robintrack

Mar. 2017 - Apr. 2017

A tool for viewing data about the popularity of various stocks on the Robinhood brokerage. Allows users to view the most (and least) popular stocks held by its users and view trends over time. Robintrack gained significant popularity, with several people reaching out to use the data it collected for school or personal research and the Robinhood team reaching out to me directly about it.

A screenshot of the "Popularity Changes" page from Robintrack, showing the table of stocks with large recent popularity changes and a chart plotting the popularity vs price of the NVDA stock.

A friend and I wanted to work on a game together, trying out some tech that we were interested in and building up all parts of a game from scratch. I handled the frontend and the physics while my friend focused on setting up the backend server. At the end, we came up with a networked physics engine based on a popular Rust physics framework that runs the same code on both the client and the server. A variety of techniques were used for handling network delay, synchronizing state, and keeping track of game data both internally on the client as well as on the server.

A screenshot of the .io-style game that I created, showing created "asteroids", a player entity with a rotateable beam, and a procedurally generated background.

A web application developed using Rust + WebAssembly for creating and visualizing compositions of noise functions. 3D noise functions are projected onto a 2D canvas after being mapped through a colorizer function, creating intricate and psychedelic effects. Includes a web backend for sharing + browsing compositions from other users.

A screenshot of the noise compositor UI showing the composition tree, settings for an input transformation that zooms and scales its input, and the output of the composited and colorized noise function.

Minutiae

May 2017 - (under development)

A simulation engine that operates on a finite 2-dimensional universe populated by cells and entities. It is designed to provide a modular system on top of which simulations of various types can be designed. Can be compiled into WebAssembly and run in the browser, optionally including client/server functionality. Minutiae is used in several of my other projects.

A minutiae simulation in which particles (colorized by a hidden noise function composition) are intermittently attracted to or repelled by each other, producing a dynamic scene reminiscent of sand in low gravity.

Cryptoviz

Apr. 2017 - Jun. 2017

A live depth-of-market (DOM) web-based visualization for live orderbook data from the Poloniex cryptocurrency exchange. Allows traders and quantitative analysts to gain unique insight into the current state of the market by viewing complex market activity in real time.

A screenshot of a Cryptoviz visualization demonstrating orderbook activity in Litecoin (LTC) on Poloniex.  Notably evident is an occurance where a large sell order caused the market price to drop quickly and significantly.

Polotrack

Apr. 2017 - May 2017

A web application providing an overview of a user's portfolio on the Poloniex cryptocurrency exchange. It shows detailed visualizations of current holdings, demonstrates how portfolio value has changed over time, and provides a variety of advanced analytics detailing a user's trading history and account activity.

A screenshot of the overview page of the Polotrack UI, demonstrating a listing of current holdings and their value, a pie chart visualizing those listings, and several other data fields showing information about the current portfolio and its performance.

TickGrinder

Aug. 2016 - Mar. 2017

TickGrinder is a high performance algorithmic trading platform written primarily in Rust. It is designed with the goal of efficiently processing event-based market data as quickly as possible in order to automatically place and manage trades.

A screenshot of the work-in-progress TickGrinder control UI, showing a list of spawned instances managed by the platform as well as a dropdown that can be used to spawn new instances.

Elotrack

Jan. 2015 - May 2015

Site that tracked the gameplay statistics of League of Legends players. Users could view as their rank changed as they played and view a variety of other statistics about their gameplay habits. Elotrack was eventually taken offline due to the League of Legends API that it made use of being discontinued.

A screenshot of the UI of the Elotrack website, showing a user's statistics page including several charts plotting how their statistics have changed over time as well as figures detailing their recent performance in ranked.

osu!track

Jul. 2014 - Feb. 2015

Site where players of the game osu! can track their progress and view the progression of others. Pulls data from the osu! API, storing time series data and creating a variety of charts, plots, statistics, and other visualizations for a variety of different metrics. An in-game chat bot and Discord bot were also written to allow users to update their stats from in-game. Thousands of players a month continue to use osu!track.

A screenshot of a user's osu!track profile, showing statistics about their account and a scatter plot showing the scores on their best plays over time.