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
and in print.
The instructions and source code are all available on GitHub.
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…
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.
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…
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…
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…
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 is the pet name of the pixel effects framework that I developed,
which serves as the foundation for the
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).
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…