Professional Projects

These are projects I've worked on in a professional capacity as an employee or contractor.

ZenPlay

Zesty, 2024

A Unity mixed reality app where you can play the game of Go in VR or AR with an opponent online.

Sole/lead developer responsible for app structure, assets, integration of Go rule engine/AI, integration of Meta Avatars support and Vivox voice chat, and provisioning match server instances with Hathora.

Gabber

Zesty, 2022-2024

A Unity mixed reality app that lets you converse with a cast of embodied, conversational 3D avatars wherever you happen to be.

Lead developer responsible for app structure, in-app account signup flow, and integration of avatar assets from our lead designer, which then become animated and lipsynced in-app.

Robot Rally

Zesty, 2022-2024

A multiplayer WebXR arena FPS.

Led development of physics-based character controller, gameplay logic (spawning, movement, shooting), and networking integrations. Ran for two years and was featured on the Meta Quest Browser's New Tab Page.

VR Cybershop

Rebuff Reality, 2020-2021

A WebXR e-commerce experience.

Upgraded functionality of Unity VR character controller and its WebXR interactions. Investigated and implemented optimizations re: asset streaming and texture sizes, along with third-party service integrations.

Web Platform Work

I've spent time in the past contributing to the web platform both on the browser engine side and specification side:

Servo browser engine logo

Servo

  • Current maintainer.
  • Extended Gamepad API support to non-XR gamepads.
  • Updated Gamepad and WebXR APIs to conform to latest W3C specifications.
  • Refactored internal OpenXR code for maintainability.
  • Implemented initial SubtleCrypto algorithm functionality for the Web Crypto API.
Chromium browser engine logo

Chromium

  • Implemented support for WebXR Hand Input on desktop via Meta OpenXR extensions, including a new feature flag.
  • Updated XRSystem interface to more closely track current specification version.
Firefox browser logo

Gecko (Firefox browser engine)

  • Made WebXR measurement quantization amount configurable for fingerprint mitigation,
  • Addressed linting issue re: octal literals,
  • Removed an unneeded clamp on a Web Audio node's `detune` property.
WebKit browser engine logo

WebKit

  • Updated WebXR IDL attributes to be in alphabetical order.
LadyBird browser logo

LibWeb (pre-Ladybird fork)

  • Stubbed out interfaces for Web Audio's AudioContext and BaseAudioContext.
  • Implement handling for "no-store" directive in cache-control handling. Fixed the xkcd website's random comic button.
W3C organization logo

Standards Work

  • Engaged with Immersive Web working group members through Discord and GitHub on spec-related issues.
  • Reviewed/copy-edited multiple specs for grammar, bikeshed markup syntax, and specification language.

Personal Projects

These are personal/hobby projects I've done in the past. Most are "ongoing", ones I can dip back into as I feel like.

Breeze logo, the classical alchemical symbol for air.

Breeze

A Rust-based GUI browser for the "SmolNet", a term referring to lesser-used/alternative protocols like Gopher, Gemini, and others.

SEPIA SpeechRecognition Polyfill

A polyfill for the SpeechRecognition portion of the Web Speech API that utilizes components from SEPIA, an open-source voice assistant framework.

Originally developed to work around browser limitations on standalone XR headsets.

Silk Suite logo, featuring a game controller overlaid on a spiderweb.

Silk Suite

A small collection of Rust-based emulators with web support for retro game consoles. Currently working on a combined-backend emulator utilizing the work done so far.

Technical Demonstrations

These are demos and examples of WebXR integrations/conversions I've done in the past.

A thumbnail showing the WebXR and Wwise logos imposed on top of each other.

Wwise + WebXR Demo

A WebXR test scene using Wwise's web build and JavaScript bindings from wwise.js.

The Wwise logo.

wwise.js

Manually-created JavaScript bindings to use Wwise's web export in a pure JavaScript environment.

A thumbnail showing the WebXR and FMOD logos imposed on top of each other.

FMOD + WebXR Demo


A WebXR test scene using FMOD's web build and JavaScript bindings.

A GIF of virtual blocks on a table being knocked over.

A-Frame Physics Hands Demo

A basic demo of velocity and acceleration-driven hands with PhysX + A-Frame. The velocity of the hands is driven by some simple vector math, while the acceleration is driven by a PD controller.

A screenshot of Silk Brush open in the Immersive Web Emulation Runtime

Silk Brush (Tilt Brush WebXR Port)

A port of Tilt Brush to WebXR using the Unity WebXR Export plugin by De-Panther. Functional, but lacks some of the native affordances/integrations from the original Tilt Brush.

Games I've Made

These are solo projects of mine (newest to oldest).

afterparty cover

afterparty

2026

A series of short vignettes connected via dream logic. Dreamcore-adjacent first-person adventure/exploration game.

Spy Training cover

Spy Training

2026

A set of three VR trials made to test your spy aptitude. Made for the ManiFest VR Jam #1.

Grappler's Gauntlet cover

Grappler's Gauntlet

2025-present

Online WebXR arena FPS where you try to grapple your way to the top of the map while avoiding getting shot by other player's lasers and sent back down. Published in collaboration with HTC VIVERSE.

Lemon Atoll cover

Lemon Atoll (A-Frame version)

2023

A whimsical VR game about making and selling lemonade to fish patrons. Rebuilt in A-Frame for upload to heyVR.io.

SUITE cover

SUITE

2020

A short VR escape room game leaning on some of the same imagery from SUIT. Built for the MetaFest VR Jam #1.

Pixel Arena cover

Pixel Arena

2020

A rudimentary VR arena melee combat game made for Miz Jam 1. Has several 3D assets that were originally 2D spritesheet assets converted in Blender.

One of the earlier examples of WebXR export in Godot!

MetaPsychic: Controlled Flow cover

Metapsychic: Controlled Flow

2020

A (currently) imageless VN inspired narratively by the Zero Escape series. Features branching paths that drop crucial hints to obtain the "true" ending.

Lemon Atoll cover

Lemon Atoll (Unity version)

2019

A whimsical VR game about making and selling lemonade to fish patrons. Originally made with SteamVR + Unity for the Game Off Jam 2019.

SUIT cover

SUIT

2019

A short, heavily playing-card-stylized first-person narrative puzzle game made in Unity.

Games I've Worked On

These are the games I've worked on in a collaborative setting (newest to oldest).

The Mystery of Beaumont Manor cover

The Mystery of Beaumont Manor

2024

A mystery visual novel demo with point and click elements, a custom inventory screen, and branching dialogue paths. Handled integrating all external assets (story scripts, character sprites, external audio), collaborating with the creative lead (my GF), and packaging the final product for distribution on itch.io with promotion on social media.

Contingency XR-3C cover

Contingency XR-3C

2020

A short VR shooter prototype built with a friend where you need to eliminate all the runaway machines. Includes a boss fight. Handled level design and VR interactions.

S.A.M. Additional cover

S.A.M. Additional

2019

A short first-person exploration game built in Unreal for the Game Off Jam 2019 with a large team. Contributed with game audio SFX and credits music.