qrocodile

In early 2018, I created a fun little weekend hack called qrocodile, which is a kid-friendly system for controlling Sonos with QR codes, built using LEGO and a Raspberry Pi. The project received a lot of love from the makers of the Raspberry Pi, who featured it both online and in print. The instructions and source code are all available on GitHub. Read more…

PLRelational

Back in 2015-16, I developed (with Plausible-alumnus Mike Ash) a Swift framework called PLRelational. Basically it’s a storage and presentation library based on relational algebra, that allows you to treat relations as a reactive stream of values, which can simplify UI programming. And since 2019, it provides seamless integration with Apple’s SwiftUI and Combine frameworks. Read more…

Rust

I really enjoy using the Rust programming language. I’ve been a fan since the pre-1.0 days, and at Plausible I’ve built a number of interesting libraries in Rust, from a functional reactive UI toolkit prototype to a combinator-based codec library. That toolkit prototype hasn’t been open sourced (yet?), but three other Rust libraries of mine are available on GitHub: rcodec, pl-hlist, and pl-lens.

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…