Throughout 2022, I volunteered with two other developers to create data visualizations for ACLU Pennsylvania's report on cash bail. We worked closely with a designer to build custom charts, maps, and tables in JavaScript primarily using SVGs and some D3.js. (Repo)
For my French sociolinguistics course in Spring 2019, I analyzed code on GitHub written by Francophone programmers to explore the influence of English on computer science. I used Google BigQuery to process millions of lines of comments, and then performed language analysis using the Python module lang-detect.
For my senior project in Fall 2018, I built a user input-based procedural city generator. Users can design a city with the HTML5 Canvas and based on that input, Ville generates road networks and places buildings. I used three.js for the 3D rendering of the city. (Repo)
Throughout the first half of 2018, I completely redid the website for Under the Button, The Daily Pennsylvanian's satire site. The site is built using Twig for templating, SCSS for styling, and php for fetching content.
The second project for my Advanced Computer Graphics course was a path tracer. I implemented three different integrators to evaluate the Light Transport Equation — naive, direct lighting, and full lighting. The final one uses multiple importance sampling and Russian Roulette ray termination.
The first project for my Advanced Computer Graphics course was a ray tracer, built from scratch in C++. I implemented point and area lights, different materials (Lambert, Blinn-Phong, reflective, refractive), sampling and warping functions, and ambient occlusion.
Outquote is a dependency-free tool for creating quote cards (mainly used at The Daily Pennsylvanian for social posts). I implemented the majority of the features, including different styling, toggling the logos, and uploading photos to the cards.
The final project for CIS560 (Interactive Computer Graphics) in Fall 2017 was to build a less feature-rich version of Minecraft. I worked with two other students, and I personally implemented the game engine and player physics, texturing (with OpenGL), the inventory system, and procedurally-placed trees.
For CIS450 (Database and Info Systems) in Fall 2017, my three group members and I built a map-based guide to Philadelphia, building off of crime, education, and walkability data sets. I wrote scripts to clean the data, implemented endpoints, and implemented the map with Mapbox. (Repo)
For PennApps XVI (Fall 2017), I worked with two other students to build a Ruby tool to scrape websites for photos, determine if they are credited, and give the user options to find the source or similar images. This project won the "Best Use of Google Cloud Compute/Big Data Products" award.
Throughout the summer of 2017, I worked closely with other members of the The Daily Pennsylvanian's web development team to build this events aggregation platform. It is built with Ruby on Rails.