My Projects

Wavefunction Collapse

Wavefunction collapse is an image generation technique that arranges tiles of an image according to predefined adjacency rules in order to randomly generate structured images. This project was created from scratch with no prior knowledge of the classic wavefunction collapse. It uses a set of tiles provided by the user to generate patterns with only continuous lines in closed shapes. Currently, it lacks many of the planned features, but eventually it will be usable with mutlitple different file formats and have much greater customization. There are several planned performance enhancements such as using multithreading and SIMD, along with a planned server-side implementation in the near future.

The Hitting Set Problem as an Integer Linear Program

This project was created as part of my research with the Biocomplexity Institute at the University of Virginia. The Minimum Hitting Set problem is a spinoff of the classic Minimum Set Cover problem. The Minimum Hitting Set problem provides a list of sets, each containing tags. The goal is to find the smallest set S for which the intersection between S and any given set is not empty. This library forms a reduction from the Hitting Set Problem to an integer linear program, then uses Gurobi to solve for the minimum hitting set. There are several implementations for solving the problem found in this library. One uses a list of lists, which is essentially a list of all of the sets. The other uses a file containing a boolean matrix in the form of a reduction to an integer linear program. This is explained in the documentation and readme of the GitHub project.

Dark World Shader

This project is an artistic venture into the world of GLSL and GPU computing. It uses GLSL to write a Minecraft shader that artistically styles the game to be in the horror genre. This shader performs a unique three dimensional transformation of the world space to curve the gameplay environment. Some of the techniques are as follows:

  • a pixelization shader
  • dynamic, world-time based lighting changes
  • dramatic color sampling
  • dynamic, world-time based three dimensional coordinate transformation

When the in-game time reaches night, the world around the player darkens and the player's view distance is limited. The curvature of the gameplay environment is then significantly amplified to further increase the feeling of being enclosed. Currently, there are some machines that this version of the shader does not render properly on. In this case, another version of the shader has been developed and can be distributed as needed.

HCLRS Language Highlighting

This project is a language highlighting plugin for Visual Studio Code that allows the user to use the University of Virginia's hardware coding language with syntax highlighting. Although rather simple, several students have found it very helpful for their coding needs. It highlights all variable types in the HCLRS language, along with built-in constants such as opcodes and register codes. Furthermore, built in wires of the language are highlighted in green, and user generated registers are highlighted in orange and blue, to match UVA spirit. The inputs of these registers are highlighted in orange and the outputs are highlighted in blue, as per the syntax of the language.

Other Sites

I have produced several sites before this one. Some of these have been taken down or were only produced recreationally, however the two that remain are the following:

  • ashtonjoy.com - a website created for my musical stage name, Ashton Joy
  • dephoc.us - an minimalist site for my photography newsletter "Dephocus," made in 2020. This site contains many hidden features, one of which is the ability to toggle between two themes by clicking the title of the site at the top of the page. This conversion between the two themes is the central concept behind the site and allows the user to discover the rest of the its hidden features on their own.
  • A sound art portfolio - a joint effort of sound art between myself and Shriya Srinivas that showcases our individual and combined art in gallery format. It is a simple site with interactive features that engage the listener and make them a performer in the gallery as its own piece.