Projects

Live

This website

The map at the top is built from code: the Quad, the Loop and Broadway, modeled in three.js with no 3D files.

astro 6.1.9 · three.js 0.186.1

Live on Cloudflare Pages · built Sep 27, 2026

10,465 lines of three.js · 24 files · no 3D files imported
Role
Design, engineering
World
10,465 lines of three.js across 24 files
Places
Foellinger, 200 N LaSalle, Wrigley Field, 446 Broadway, the Williamsburg Bridge
Flight
LGA to ORD and back: pushback, taxi, takeoff and landing, about 42 seconds each way
Hosting
Static, on Cloudflare Pages from GitHub
Built with
Astro, three.js, TypeScript, Cloudflare Pages

Every building in the map is made from boxes, cylinders and a few extruded shapes, placed by hand. Foellinger’s dome, the BIF atrium, 200 N LaSalle’s granite base and the cast-iron front at 446 Broadway were each built from reference photos. Buildings rise into place the first time the map loads, and after dark the windows turn on.

Most things respond when you click them. The cab honks, the Buck Mason door slides open, the Wrigley marquee lights up and the Empire State changes color. Click a building and the camera glides to it; click empty ground and it flies back out. A plane pushes back at LaGuardia, taxis out, flies to O’Hare and comes back, contrail and all. A J train crosses the Williamsburg Bridge, and the Staten Island Ferry runs from Whitehall.

Zoom and rotation work the way they do in a map app: drag to pan, scroll or pinch to zoom, right-drag or twist two fingers to turn, and slide two fingers up or down to tilt the camera. A dusk toggle switches the sky and building lights independent of the time of day.

Everything else is static Astro: projects, stack, library and resume are plain content files, so updating the site is a small edit. It builds in a couple of seconds and deploys to Cloudflare Pages straight from GitHub.