Sloan-o-graph
As I watched my long-time favorite band Sloan on stage in 2014, I got the idea for an interactive visualization that would help answer critical questions about the songwriting and backing vocal relationships in the band. I threw together some JavaScript and Paper.js as a fun little brain exercise and out popped the (Chris Murphy approved!) Sloan-o-graph. Read more...
Color/Space
Some time in late 2013 I woke up with a very weak idea of making a game out of choosing colors: given a color, how quickly could you figure out the RGB components that make up that color? I probably should have left it as just that, an idea, but too late, my curiosity was piqued. Thus, Color/Space was born, and my comrades were kind enough to release it under the Plausible name. View in App Store...
iPhoto/Lightroom Scripts
When I moved from iPhoto to Lightroom in 2008, I couldn't find any satisfactory tools for properly migrating my existing library of photos, so I wrote some scripts to help automate the process. (AppleScript, Lua, and Perl: oh my.) Read more...
Muni Status
One day in mid-2008, I suddenly became frustrated with the indecipherable status displays that are used in the underground Muni stations in San Francisco. I went home and spent just a couple hours prototyping a new display using JavaFX, which uses subtle animations and crisp scalable graphics to present clear information to Muni patrons. Read more...
JavaFX
I spent a couple years working on the JavaFX runtime. I was heavily involved in designing the core scenegraph and animation packages, the Decora effects framework (see below), and the Prism graphics engine. Prism is a small, highly tuned, GPU-accelerated graphics runtime that serves as the foundation for JavaFX on everything, from desktops on down to phones and small embedded devices. Read more...
Decora
Decora is the pet name of the pixel effects framework that I developed, which serves as the foundation for the javafx.scene.effect package in JavaFX. It provides easy-to-use (Java) classes for commonly used effects, such as blurs, drop shadows, reflections, color adjustments, displacement mapping, lighting, and perspective transform. It was also intended to be extensible, so that savvy developers could provide their own effects by using a custom language that we developed called JSL (a shading language not unlike GLSL or HLSL). Read more...
Java2D + OpenGL
Prior to working on JavaFX, I spent 8+ years tuning Sun's implementation of the Java2D and Image I/O APIs. I developed the OpenGL-based Java2D pipeline from the ground up (see this article and these two blog entries). I also implemented a ton of performance optimizations over the years (see this entry for just one example). Read more...