Rubik's Cube
A fully playable Rubik's cube built with ThreeJS. Features quaternion slerping for smooth rotation, planar projection of mouse drag events, a history queue with playback controls, animated instructions, and a clickable exploded view for easily rotating to a particular face and orientation.
Lerp Morph
A library for morphing between arbitrary SVGs (currently modularizing). The codebase contains utility functions for locating centroids, parsing SVG path elements, manipulating bezier curves, and handling asynchronous animation.
Color Picker
A color picker that simultaneously calculates coordinates for RGB, HSV, HSL and CMYK color spaces. Gradient calculations are offloaded to the GPU by using GLSL, greatly reducing computational lag. Most labels are editable inputs, allowing for keyboard input in addition to mousemove selection.
Dramamine
A 3D hoop game built with ThreeJS. Physics, collision detection, and tank controls are all custom. Hoop path is randomly generated using an algorithm that ensures smooth paths with relatively large turn radii.
Multi Upload
A UX proof of concept. Rest assured that the component doesn't actually upload your files anywhere—it simply simulates AJAX upload requests (ducktyped with XMLHttpRequest api) on every file in your folder. Allows for dragdrop, traditional selection using native file system GUI, and tree traversal through the directory structure. Includes information on global and file-specific loading states.