Projects

CUDA path tracer
Pathtracing rendering engine written from low-level primitives in CUDA. The project implements the Cook-Torrance reflectance model to achieve photorealistic physically based rendering (PBR). Standard 3D mesh formats are supported through the Assimp library, allowing models to be rendered as they would appear in Maya or Blender.

NN-guided MCTS
Pytorch pipeline to train neural network guided MCTS algorithms to play TicTacToe and Ultimate TicTacToe. Neural architectures differ from typical MCTS in that they use a neural network to estimate the outcome/pick a move using their current position. To train these networks, two copies of the model play against each other to generate training data. Each position taken is considered an input with the subsequent move taken and eventual game outcome being considered the outputs. This cycle of self-play then training can be repeated until the resulting model achieves superhuman performance.

Rubik's Cube solver
Interactive 3D Rubik's Cube and solving algorithm. This web app uses the Three.js to render a fully manipulatable Rubik's cube in the browser. The app can also communicate with a python based API server that implements the Thistlewaite solving algorithm. This allows the web app to provide step-by-step solve instructions for any Rubik's cube configuration in 52 moves or fewer.

Outfit generation with RLHF
Python project meant to demonstrate the mechanics of RLHF by training a model to generate stylistically sound outfits from a corpus of pictures of clothing items. By using foundation LLMs as a proxy reward model for human style sensibilities, we can perform RLHF on a relatively small network that distills the LLMs capacity for style.

Live chatroom
Real time chat and collaborative drawing app. The chatroom runs on a Golang HTTP server that multiplexes WebSocket connections in a star topology to coordinate replication of state across connected clients. Clients establish connections through a hosted React web application.

Snek language playground
"Snek" is a custom programming language and compiler built for the CSE 131 Compiler course at UCSD. This project takes my compiler from the course and hosts it on a cloud platform. A React web app connects the client with the compiler server which builds and runs a binary using Rust. The Snek language is capable of typical operation (arithmetic, comparison, equality), defining functions, variable assignment (both primitives and data structures), if-else statements, looping, and garbage collection.

2D isometric shooter (Godot)
Simple roguelite isometric shooter project built using Godot 3. This project sees you fighting off waves of enemies as you collect different powerups. The project was compiled to WASM and hosted online so the game can be played from the browser.

SpellweaVR
SpellweaVR is a Unity VR project built for UCSD's CSE165 course, which explores the new kinds of user interactions being invented for VR and XR spaces. The project puts these ideas into practice by using hand gestures to "draw" commands in the air.

DocReader
RAG system for inputting long documents to LLMs. The program takes documents like PDFs, Word docs, and powerpoints and divides their contents into manageable chunks; each is run through an embedding model that encodes the semantics of its text then saved to a vector database according to its embedding. This means that user queries can also be embedded to find semantic similarity to any text in the database. Any matching text can be used to augment a user's query with additional context without flooding the context window.