Design Technologist · Senior Software Engineer
I build software for creative people: design and engineering at Apple across production software, internal tools, and prototypes; character-rigging and visual-effects systems used across feature films; and personal explorations in graphics and systems engineering.
Designing UI/UX for confidential Apple software applications, working cross-functionally with engineering, research, product, and documentation partners to translate ambiguous concepts into interaction models and implementation-ready designs. I build functional, code-based prototypes to demonstrate and validate behavior that static mockups can't communicate — often in the same language as the shipping product, using C++, Swift, or HTML/CSS/TypeScript, to hand off directly to engineering.
My work often spans several features at once, so I’ll think about how the pieces fit together while keeping them all moving forward. I’m also comfortable crossing between design, prototyping, and production code as the work evolves.
Contributed production code to RealityKit, macOS Preview, and Quick Look on visionOS, alongside UI/UX design for Reality Composer Pro — helping build spatial-computing software while the product category itself was still being invented.
WWDC26 — Discover USDKit and what's new in OpenUSD ↗ WWDC26 — Discover the Spatial Preview framework ↗ WWDC23 — Explore materials in Reality Composer Pro ↗ WWDC23 — Meet Reality Composer Pro ↗ WWDC19 — Introducing RealityKit and Reality Composer ↗
Led development of Weta’s AnimFX and Governor systems, built on the Koru real-time evaluation engine. AnimFX gave FX artists a consistent interface for authoring robust animation rigs without needing Koru expertise, while giving animators real-time, scrubbable, animatable effects in Maya. Animation could then return lightweight Koru motion data instead of baked particles. Because Koru ran with feature parity in Maya and Houdini, FX could pick that data up directly for downstream simulation.
A "governor" system enforced physically plausible constraints with immediate feedback, catching problems in animation before they resulted in expensive backflows from FX. The systems supported Weta’s work on Avengers: Endgame and Gemini Man. They were presented at SIGGRAPH 2019 by a direct report and an internal client.
SIGGRAPH 2019 — Procedural Animation Driven FX for Avengers: Endgame ↗ Gemini Man — Trailer ↗
I built a taut-rope rig for Dawn of the Planet of the Apes that let animators grab dynamically taut cables as apes swung through San Francisco. That work led to a Koru-based catenary solver for War for the Planet of the Apes, inspired by Gaudí’s hanging-chain models at the Sagrada Família. Initially used for horses’ reins, animators only needed to animate the apes’ grip; the rig solved a physically plausible curve in real time, reducing the need to hand-key the reins’ shape.
The same ideas later fed into a next-generation Koru rope system designed to handle a much broader range of rope behaviors, including catenary behavior on individual segments. It powered Grewishka’s articulated, bladed chain fingers on Alita: Battle Angel, with the implementation subsequently reused on Avatar: The Way of Water.
Dawn of the Planet of the Apes — Trailer ↗ War for the Planet of the Apes — Trailer ↗ Alita: Battle Angel — Trailer ↗ Avatar: The Way of Water - Trailer ↗
Primary inventor and development lead for Koru Puppet, a procedural, parametric rigging system built on Weta’s Koru real-time evaluation engine, which I co-invented. Rigs compiled to a single functional transformation and ran consistently across Maya, Houdini, MotionBuilder, and other DCCs. Rather than rebuilding a node-graph puppet for every character, the same Koru Puppet could adapt to any morphologically consistent skeleton, from giant to hobbit.
First deployed at scale on War for the Planet of the Apes and Valerian and the City of a Thousand Planets, Koru Puppet’s parametric reuse let a small team support both productions concurrently. Its runtime performance also made it practical for animators to work with larger, more complex scenes than traditional puppet rigs could comfortably handle. The system later extended to water/puppet interaction work on Avatar: The Way of Water. Koru Puppet remains in daily use at Wētā FX today, deployed across dozens of productions including two Academy Award winners for Best Visual Effects.
Weta Digital
Avatar: The Way of Water·Avengers: Endgame·The Umbrella Academy·Alita: Battle Angel·Gemini Man·Avengers: Infinity War·Rampage·War for the Planet of the Apes·Valerian and the City of a Thousand Planets·Guardians of the Galaxy Vol. 2·Justice League·The Jungle Book·The BFG·Dawn of the Planet of the Apes·The Hobbit: The Battle of the Five Armies·The Hobbit: The Desolation of Smaug
One Of Us
Mirror Mirror·Anna Karenina·The Tree of Life
Snow Castle Games
Earthlock: Festival of Magic
Digital Extremes
Star Trek
Storm Studios
Troll Hunter·The Junior Olsen Gang and the Master Thief
Axis Animation
Killzone 2
Shynola
The Hitchhiker's Guide to the Galaxy
Peerless Camera Company
The Brothers Grimm
Double Negative
10,000 BC·Tomb Raider II: The Cradle of Life
Cinesite
James Bond: Die Another Day
GVFX
Prince Charming
Spin Entertainment
CyberWorld
Earlier short films, commercial work (including a spot for Aardman Animations), and other work not shown here — available on Vimeo ↗
I started in hand-drawn animation, transitioned to 3D animation, and then discovered that programming was a way to unlock things I wanted to make — and, eventually, a way to unlock those possibilities for other creative people. That path has taken me through animation, visual effects, games, and software across Canada, the UK, Norway, New Zealand, and the United States.
I like working with an idea from the first sketch through to something that ships: coming up with it, prototyping enough to see whether it works, shaping the interaction, and helping turn the good ones into production software.
Away from software, I like cooking, woodworking, cycling, travelling, and occasionally flying through the air on a trapeze.