Side projects

Projects.

Simulations, procedural geometry and performance work I've built on my own time, mostly in Luau where every millisecond of a 60 fps frame budget counts.

Interactive demo
2025Luau → JavaScript

Cloth simulation

A 3D mass-spring cloth solved with Verlet integration and structural, shear and bend springs, shaded in a WebGL shader with the spring network drawn on top. The original runs in Roblox on an EditableMesh. This web port lets you grab, throw, tear, re-pin and orbit it.

Verlet integrationConstraint solvingLuauWebGL
Open the simulation
2024–2025Luau

Dynamic ocean

Real-time ocean surface built from summed Gerstner waves on an EditableMesh, with level of detail, analytic normals from wave derivatives, and a benchmarking harness to keep it inside the frame budget.

Gerstner wavesLODNative Luau
Private repository
2023–2024Lua

Traffic simulation

Simulates and visualizes up to 10,000 cars at 60 fps. Lanes are circular queues, merges use a modified binary search, and drivers react to the car ahead with a modeled human reaction delay.

Binary searchCircular queues10K agents
2025Luau

Procedural glass shatter

Breaks any polygonal pane into shards around the impact point using concentric fracture rings and radial cracks, then triangulates each shard with ear clipping into its own EditableMesh.

Computational geometryEar clippingEditableMesh
Private repository
2024Luau

Procedural spider IK

A FABRIK inverse-kinematics solver driving a multi-legged spider. Each leg raycasts for footholds and steps when it drifts too far, so the gait emerges from the terrain rather than animations.

FABRIKProcedural animationRaycasting
Private repository
2024Luau · C#

Voxel terrain mesher

Chunked voxel terrain from layered Perlin noise, merged into large faces with greedy meshing, with a custom bit buffer for compact chunk data. Ported from a C# reference implementation.

Greedy meshingPerlin noiseBit packing
Private repository
2025Racket

Church encoder

A compiler from a large subset of Scheme down to the pure λ-calculus: numbers, booleans, lists and let-forms all become nothing but single-argument functions.

Compilersλ-calculusScheme
Coursework, Syracuse University