On this site

Ceftriaxone / N. gonorrhoeae databasePlaguecraftBoid Simulations with Disease DynamicsI also compose music!

External links

Google Scholar PDF Reader Chrome ExtensionWikipedia Roulette (random article)

Quick Links

On this site

Ceftriaxone / N. gonorrhoeae databasePlaguecraftBoid Simulations with Disease DynamicsI also compose music!

External links

Google Scholar PDF Reader Chrome ExtensionWikipedia Roulette (random article)
BioResume / CVPublications / TalksProjects

Projects

"NeurAllegro"

2024 – present

NeurAllegro is a project to bring modern machine learning to written music notation. Almost all music ML works from MIDI or audio, which throws away the important semantics composers and performers care about, such as dynamics, articulation, slurs, pedaling, enharmonic spelling, and voicing. NeurAllegro instead treats sheet-music notation as a first-class input, with the eventual goal of expression-aware generation: roughly, "GitHub Copilot for music-notation software." Composing has just as many repetitive, automatable tasks as coding, but thus far no language to transfer the information in besides very verbose and complex musicxml.

The core of the project so far is a custom deterministic MusicXML→notation-token tokenizer. After surveying 17 prior tokenization approaches, I designed a ~600-token vocabulary that captures multi-voice grand-staff piano writing, dynamics, slurs, pedaling, tuplets, and tempo. This is a proof of concept; the larger project will allow any ensemble, not just piano. So far there is an encoder, decoder, and full suite of benchmarks to compare against previous tokenization approaches which solidifies why a new one had to be invented. This project includes a large data pipeline with over 250k scores already tokenized. Computational musicology has many fantastic tools, such as the music21 Python package, but unfortunately no tool captures every part of the musicxml parsing that I need, so I have had to maintain my own forks of many different tools and use them all together.

Status:

The tokenizer and data pipeline are complete and validated. The next phase is benchmarking the tokenizer against existing approaches and training a transformer on the tokenized corpus.

(An earlier proof-of-concept that I made in 2024, a 2-layer GRU that classified scores by composer/genre at ~80% accuracy on unseen excerpts, is what currently lives on GitHub; the project has since moved to this tokenizer-first direction. Updated code will be released publicly as the associated research matures.)

Tech:

Python, MusicXML, a patched music21 fork, lxml; PyTorch for the upcoming transformer training.

"LearnFlow"

2025-present

"LearnFlow" is the temporary name for a learning management system (LMS) platform I started in Spring 2025. Originally this was a tool to generate new practice problems similar to the problem generation of textbook publishing companies' online homework tools (e.g., Pearson MyLab Math, Cengage Mastering Physics, Webassign, etc) using class and progress context with LLM APIs.

Then, I invited a second technical member to the team and we began planning with a few professors at Penn State on pedagogy and UI ideas for an entire LMS. This LMS offers flexibility and scalability on a unified platform, filling the gaps between traditional LMS's (Canvas, Moodle, Blackboard, etc) and contemporary pedagogical and grading techniques.

Our novel contributions are recursive "flows" describing class structures and flexible "statuses" which go beyond typical numerical and rubric-based grading. Using this platform, instructors can build traditional courses with ease (saving ~90% course building time due to easy scalability) and build other types of course-grading-policies such as specifications grading or ungrading (saving instructors from having to build these tools themselves since they are not currently compatible with most modern LMS's!).

Tech:

JS/TS, Next.js, React frontend, Supabase backend, OpenAI and Gemini API, deployed on Vercel

Click to enlarge

Flow example
Status example 1
Status example 2

Boids with Disease Dynamics

2025 – present
View Rust simulation on /boids page

From Wikipedia: "Boids is an artificial life program, developed by Craig Reynolds in 1986, which simulates the flocking behaviour of birds, and related group motion...Like most artificial life simulations, Boids is an example of emergent behavior; that is, the complexity of Boids arises from the interaction of individual agents (the boids, in this case) adhering to a set of simple rules. The rules applied in the simplest Boids world are as follows: Separation: steer to avoid crowding local flockmates; Alignment: steer towards the average heading of local flockmates; Cohesion: steer to move towards the average position (center of mass) of local flockmates. More complex rules can be added, such as obstacle avoidance and goal seeking."

For this project, I am simulating basic disease dynamics on top of the boids. Boids can, with some probability, infect neighboring boids. Currently supported are basic SIR (Susceptible, Infected, Recovered), SIS, and SEIR (E = Exposed) models. Eventually, I plan to flesh out both the disease dynamics and the behavior simulation in the following ways:

Behavior:

I plan to employ evolutionary algorithms (EA) and reinforcement learning (RL) to train the boids to not get sick, either collectively (boid hivemind!) or as individuals.

Disease dynamics:

I also plan to add more complicated disease modeling, first on the population scale, but then also adding better in-host dynamics. One of my main research projects involves stochastic modeling of bacteria in-host with susceptible and resistant strains as a response to antibiotic treatment. I think including in each boid an instance of this model and layering on interventions (antibiotic treatment) and resistant mutations would be fun, interesting, and useful!

Click to enlarge

Boids simulation 1
Boids simulation 2

Various class projects for Deep Learning class

Penn State MATH 452, Fall 2024

Midterm and final projects, including classical classification and clustering of MNIST data and fine-tuning BART to generate concise summaries for song lyrics.

Tech:

Python, scikit-learn, PyTorch; classical classification/clustering algorithms, neural networks, training and finetuning

MNIST visualization

Powered by aliens