This site uses cookies to enhance your experience!

My Projects




Discord4J is a high-performance library for producing chat bots for the real time chat platform Discord in Java. I became the lead developer in 2015 (only a few months after Discord itself was launched) and at the time the library was based off of reverse engineering the Discord chat protocol. Ever since Discord released an official chat bot API, Discord4J has been an officially compliant library with thousands of downloads a month. I have also established a friendly community around Discord4J that allows for people to quickly receive help for Discord4J and just general programming in addition to facilitating both technical and casual discussions.

Evolutionary Rate Correlations: A Tool to Predict
Protein-Protein Interactions


The culmination of my almost three years as an Undergraduate Computational Biology researcher under Dr. John (Jack) Werren resulted in my Undergraduate Thesis “Evolutionary Rate Correlations: A Tool to Predict Protein-Protein Interactions”. Here we propose a method for using evolutionary information from orthologous protein sequences and resolved species phylogenies to not only detect potential protein interactors—but also likely binding domains. Previous work with evolutionary rate correlation had shown it capable of detecting known and new candidates for nuclear-mitochondrial interactions. We have built upon this work by applying network analysis and localizing evolutionary rate correlations to identify not only potential novel interaction pathways but also to identify specific protein-binding domains. This work predicts a role for deneddylation proteins and new functions for ribosomal binding proteins in mitochondria. I have successfully defended my thesis and also presented a poster on this work as part of my de Kiewiet Research Fellowship. We are aiming to publish our work in high impact journals soon.

Clustering Methods for Finding Insights in


As part of my undergraduate data science major capstone, I worked with my teammates (Anya Greenberg, Thomas Hanson, and Ethan Otto) and the URMC Geriatric Oncology department to mine PRO-CTCAE clinical data for novel insights regarding symptomatic variables and patient outcomes using various clustering methods and statistical analyses.

Wolbachia as an endosymbiont of
Drosophila paulistorum


As part of my Applied Genomics course, I completed an independent research project with my group members: Yuedi Yu, Eva Guo, and Phoebe Fei. This projected utilized published RNA-Seq data of three “semi-species” of Drosophila paulistorum to attempt to find evidence of speciation due to and co-evolution with the intracellular parasite Wolbachia. We found some evidence of very divergent evolution of at least one of the semi-species’ Wolbachia transcriptome. We also found that the Wolbachia infecting all of these D. paulistorum species all share a recent common ancestor with a strain of Wolbachia known to infect D. melanogaster. We predict that co-evolution with their infecting Wolbachia strains help drive speciation through differential expression of genes related to reproduction.

Sturnus vulgaris: A Threat to Cavity-Dwellers?


As part of my Applied Population Biology course, I completed an independent research project with my partner, Michaela Burrell. This project analyzed the likely effects of competition of the invasive species Sturnus vulgaris (the European Starling) on four native species of Sphyrapicus (North American Sapsuckers). The project involved modelling simulations based on world climate data and bird occurrence observations from eBird. Although the study has plenty of limitations due to a limited scope, we predict that climate change has a much stronger effect than local competition on the species distribution of the sapsuckers.



Servicer is a lightweight Java annotation processor for automatically wiring ServiceLoader service implementations.



Harmony is an advanced high-level framework for building Discord bots, aiming to cut out common boilerplate. It is built on the Discord4J library.

Collaborative Filtering for Refining Classification of
User Movie Recommendations


As part of my data mining course, I implemented a movie recommendation system with my partner, Andrew Hahn. We developed a model which uses unsupervised clustering of user ratings to train per-cluster models of supervised binary classifiers that is able to recommend movies that users are likely to enjoy with 96% accuracy based on the MovieLens dataset.



ETF-Java is a parser and writer for the ETF binary format for Java.



TinkerTest is a Python library for simplified and self-documenting data validation. It injects custom validation code into Python objects based upon user-defined test snippets in type annotations.



ByteDiagrams is an api for programmatically defining text-based diagrams of binary formats.



Markdownload is a tool for markdown templating implemented in Python. It supports template injection via command line and via hosting it as a Github webhook.



SimpleGraph is a Java library for working with the Graph/Network data structure. It also has implementations for the following algorithms:

  • Breadth-First Search
  • Color Coding cycle detection
  • Depth-First Search
  • Dijkstra’s pathfinding algorithm
  • Kruskal’s minimum-spanning tree algorithm
  • Prim’s minimum-spanning tree algorithm
  • Topological sort
Collective Framework

Collective Framework


Collective Framework was a modification for the video game Minecraft. Rather than making changes for the player, it instead aimed to provide a set of tools and APIs for other developers to more easily develop mods for Minecraft. It has been downloaded almost 900,000 times.




Peripherals++ was a modification for the video game Minecraft. It provided a variety of in-game items that allowed players to interact with the game world through scripting as an addon to the ComputerCraft mod. It has been downloaded almost 300,000 times.



Persistence was a toy implementation of a peer-to-peer distributed object store using a custom networking protocol. The idea was to make it seamlessly integrate with Java by making persisted objects appear as real local objects within each client.



Komics was the multi-media component of my ‘Comics & Culture’ writing class at the University of Rochester. It was a proof-of-concept game for helping children learn a secondary language (L2) based on my background research on using multimodal methods of language teaching.