Category Archives: fun

Making Pão de Queijo

Pão de Queijo, done right

Every place has a certain food that you just can’t seem to get anywhere else. For New Yorkers it’s the bagel. For the French, the croissant. Pão de Queijo (cheese bread) is that food for Brazilians. For years we’ve gotten by on packaged dough balls from the frozen section of our local Brazilian market. But this weekend we found an old recipe from a friend, and realized we had everything we needed to make it from scratch at home.

Continue reading Making Pão de Queijo

Pluot captured in amazing new photo!

Pluot and its moon in an amazing new photo!
Pluot and its moon in an amazing new photo!

As New Horizons’ science mission reaches its suspenseful climax, researchers in Northern California are busy analyzing a flood of new data about this mysterious object. Approaching closer than ever before, we can see its dimpled contours and subtly mottled colors in unprecedented detail (click for the full resolution photo). Better yet, we have detected our first traces of the nearly spherical body’s atmosphere: a mix of tangy volatile aromatics emanating hundreds of micrometers from its surface. What an amazing day for science. Our team can’t wait to ingest all this new data!

Something New

Here’s something different: I have a new job! Today was my first day at Google Spotlight Stories. I’ll be working with some amazing filmmakers and technologists who are busy inventing a new kind of narrative visual storytelling uniquely suited to handheld mobile devices. If that sounds crazy, that’s because it is. It’s my kind of crazy. It’s exactly the kind of wild, inventive, “let’s try this and see what happens” attitude that got me interested in computer graphics in the first place, all those years ago. I couldn’t be more excited.

The video above really does a great job of capturing the delight of experiencing one of these stories for the first time. It’s almost impossible not to grin like a ninny. There’s not much more I can say about it right now, but there’s been some terrific press about the projects they’ve created so far. I’ll share more when I can!

Fun with Pseudocolor, Part Two

A more perceptually-uniform, if less pretty, pseudocolor scheme.
A more perceptually-uniform, though arguably less pretty, pseudocolor scheme.

Inspired by this brilliant interactive demo of the perceptually uniform CIE L*a*b* color space, I decided to try a L*a*b* version of my pseudocolor scheme. I don’t find this version as pretty to look at, but it has the advantage that higher values are always mapped to colors that are perceptually brighter than lower values. In other words, if you squint at the image above, the bright and dark regions correspond pretty much exactly to what you’d see if it were greyscale. (For the L*a*b* to RGB conversion, I grabbed pseudocode from this handy page.)

L*a*b* space is much bigger than RGB space, so the spiral gets clipped against the edge of the cube in some places.
L*a*b* space is much bigger than RGB space, so the spiral gets clipped by the sides of the cube in a few places.
If you crank up the saturation, you do get more vivid colors, at the cost of a lot more clipping.
If you crank up the saturation, you do get more vivid colors, at the cost of a lot more clipping.

Fun with Pseudocolor

Screen Shot 2015-03-17 at 10.14.36 AM

A shader experiment gone horribly, beautifully wrong.

I was tinkering with some GLSL shaders in Processing, and I needed a way to visualize a value that smoothly changes from 0 to 1, showing a lot more than the 256 levels of gray that you’d normally see. So I wrote a little pseudocolor function that spirals through colorspace from black to white, hitting various hues along the way. It’s fun, and pretty, and very rungy-chungy, so I thought I’d post it here.

vec4 pseudo3(float val) {

    float reps = 20.0;
    float pi = 3.14159256;
    float bright = val;
    float con = 0.25 - 0.20 * cos(val * pi * 2.0);
    float sat = 0.66 - 0.25 * cos(val * pi * 2.0);

    return vec4(sin(val*pi*reps)*con+bright,
                sin(val*pi*reps - pi*0.663 * sat)*con+bright,
                sin(val*pi*reps - pi*1.333 * sat)*con+bright,
                1.0);
}

Here's the path the above function traces through the RGB cube of colorspace.
Here’s the path the above function traces through the RGB cube of colorspace.

Eyeteleporter and Pinhole Selfies

From a planet not far from the Telestereoscope, two projects have just entered our universe…

The Eyeteleporter, a wearable cardboard periscope that displaces your vision about two feet in any direction:

eyeteleport_montage

And Pinhole Selfies, a delightful mashup of retro tech with millennial idiom:

camera

h007

Hat tip to Brock Hanson for the links.

Update: I just realized that the pinhole selfie photographer, Ignas Kutavicius, is the same fellow who invented the amazing solargraphy technique of capturing the sun’s movement with a long exposure pinhole camera. Brilliant!

solargraph1