Projects
This page is still under construction.
Wall Tiles11/2024 - now hobbywoodworkinggraphicsPython I’m building a wall decoration that blends a handful of seed colors across an aperiodic monotile. I mocked it up in Python by manipulating SVG XML, and used Delaunay triangulation and OKLAB interpolation for blending. I’ve already laser-cut prototypes.
Sionna Terrain Coverage Maps10/2024 - now researchdigicommgraphicsMitsubaPython NVIDIA Sionna, a GPU-accelerated (and differentiable) RF path tracer, cannot currently compute path loss coverage maps for non-flat terrain. Other researchers are interested in this feature too, so I’m working on modifications to Sionna that will hopefully get merged into a future release!
Mini Cars2/2023 - now CEVroboticsROSPythonC++ Building a fleet of small-scale prototyping vehicles for testing our projects like neural lane segmentation, CUDA-accelerated stereo vision, LiDAR point cloud filtering and alignment, EKF sensor fusion, and MPC local planning. I help with math and ROS debugging in addition to planning for a larger vehicle.
Doodle Doot2/2023 - now hobbyDSPSciPyJuliaPython Inspired by this Bartosz Ciechanowski blog post about sound, I’m building a guitar pedal that replaces every played note’s waveform with one drawn on a touchscreen. Identifying and operating on multiple guitar notes at once turned this from a hobby project into quite the rabbit hole…
Quadrature Encoder11/2024 - 12/2024 CEVCAD3d printingFusion360 Designed mechanical and electrical aspects of a custom quadrature encoder to measure wheel velocity of our autonomous vehicle using a pair of optical interruption sensors. Its design constraints required a unique press-fit solution that took several iterations to get right.
Racetrack Coords10/2024 CEVGISSciPyPython Wrote a short python script to help one of our mechanical leads with steering geometry calculations by finding the minimum turning radius of our competition track. Converts track lat/lon GPS data into local tangent plane coordinates and then fits an interpolating spline to determine curvature.
WiROS Rewrite6/2024 - 8/2024 researchroboticsdigicommROSSciPyPython Completely rewrote WiROS, a ROS package for Direction of Arrival estimation from WiFi CSI, which involved improving preprocessing algorithms and fixing a bugged MUSIC algorithm. I also helped integrate it into a demo with a modified MuSHR RC car, where a local planner guides the vehicle toward a router.
Twang1/2024 - 2/2024 hobbyDSPJUCEC++ Made a guitar tuner plugin using JUCE, FFTW, and the Harmonic Product Spectrum algorithm. It turns out that frequency-domain methods don’t make great pitch detectors (time-domain methods like autocorrelation are better), but I learned a lot regardless.
Software Ray Tracer11/2023 classgraphicsNumPyPython I set out on this project with the goal of writing a software path tracer that could render Himalayan Salt Lamps using subsurface scattering, but got sidetracked making performance improvements. Vectorization with numpy led to a 300x speed improvement, and I learned a lot about caches and data locality along the way.
Handmade Pencil Box6/2023 - 8/2023 hobbywoodworkingFusion360 As a fun summer project, I wanted to make something beautiful that I would use every day. I sketched initial ideas, mocked them up in Fusion360, and created a scrap wood pencil box using Ithaca Generator’s woodshop with tools like the table saw, scroll saw, planer, and chisel. It turned out amazing!
Melody Mesh5/2023 classgraphicsDSPthreejsJS For our CS 6682 final project, we built a 3D audio visualizer that deforms an arbitrary mesh based on audio FFT coefficients. I built the initial 3D interface and fixed a pivotal bug with per-vertex displacements by modifying faces to share vertices.
Rocket League IRL3/2023 hobbyArduinoPythonC++ For the 2023 Cornell Maker Club Make-a-thon, my friend Ryan and I attempted to make an RC car with the ability to launch itself into the air and maintain control. I programmed nRF24L01 radio modules to enable WASD+ controls from my laptop.
Driver Dashboard2/2023 - 3/2023 CEVIoTArduinoESP32SwiftUIPythonJSSwiftC++ As a member of the telemetry software (now data a&a) subteam, I led our effort to build an integrated data collection pipeline, collaborating with the electrical subteam. I designed and developed an iOS app and used TCP and WebSockets to connect the ESP32 to our web-based pipeline through the phone’s hotspot.
Satisfied!12/2021 - 10/2022 hobbygamedevgraphic designJS Playtested, designed, and developed a simple two-player strategy card game. Iterated on graphic designs for cards, box, and rulebook, and developed dynamic HTML/CSS/JS app to facilitate playtesting. Manufactured a small batch (10x) through boardgamesmaker.com and distributed among friends and family.
Hierarchy Generation9/2021 - 5/2022 researchclassgraphicsSciPyPython Senior research project.
Hullception6/2021 - 8/2021 researchgraphicsSciPythreejsPythonJS Built an interactive 3D tool to explore possible relationships between pixel colors and image coordinates. Implemented convex hull visualization and lasso selection of points in 3D, interfacing with Python scripts over HTTP.
WiFi Fruit Ninja Sword5/2021 classIoTESP8266PlatformIOC++ For the final project in my automation and robotics class in high school, I worked with the MPU 6050 6-axis gyro/accelerometer to convert physical movement to digital animation. The device communicated wirelessly with a Processing script that animated a sword slash in the direction the device was swung.
There are more (older) projects, but I'm still migrating them over.