Reflected Primary Colors

May 16th, 2022

Eyes are interesting things. We have color receptors in our eyes tuned for three different wavelengths. Short (blue), medium (green), and long (red). Our brains combine this information and allow us to perceive millions of color, which is really just amazing.

These three colors are so important, that we specifically target them when we produce images on our monitors and TVs. All the images are made up of these three colors. Just as importantly, when we capture images with cameras, we actually filter the light going into the cameras into the three primary colors.

Camera image sensors aren’t inherently color sensitive. Each pixel we get out of a camera is actually made up from information gathered from 4 sub-pixels on the digital camera sensor. Each sub pixel has a filter in front of it for light to pass through; 1 Red, 1 blue, and 2 green. This is called the Bayer Filter. After the camera takes a picture or records a frame, the sub pixels get interpolated together to give a single pixel of data.

(It’s probably more nuanced than that, but that is the general idea)

I recently purchased an RGB flashlight, and wondered how well I could reconstruct a color image by taking 3 photos illuminated with the different lights and combining them.

Ideally, I would like to try this using a black and white film camera, or black and white digital sensor, however I have access to neither, so I decided to use my iPhone.

The first method I used was to take color photos with each illumination, and layer them on top of each other using the add blend mode. Using this blend mode adds the RGB values together. For example:

This method works well. It’s somewhat surprising considering that nothing I used was color calibrated.

The second method that I was more excited about was taking black and white photos of each and using those as the raw channel data to reconstruct the image.

I took the photos on my iPhone while using the black and white filter mode. I then used Affinity Photo to import the photos and assign them to channels. The end result was abysmal.

I was able to improve it a bit by mixing the blue channel higher and reducing the intensity of the green channel.

Still not great.

I believe some of the problems are that the BW filter on the iPhone is not at all true black and white. I was surprised initially to find that the image wasn’t actually grayscale. It was RGB. I also don’t know how the image is being converted to black and white. It’s plausible that in the process of converting to grayscale, more red and blue data is thrown away in favor of green because it produces a better result to our eyes.

Although this was a bit of an interesting exercise, I think in the end it didn’t achieve great results because of the lack of true black and white sensor. The color results would have been more meaningful if it had been achieved without any color aware equipment.

Additionally, I’d be interested in comparing a composited photo using 3 exposures with red, green, and blue lights to a composited photo using 3 filters and white light. Someday I can revisit this experiment once I procure a proper camera.

Wordle; the Latest Craze

February 24th, 2022

Wordle has gotten popular. A cross between hangman and MasterMind, it’s cute, simple, and competitive. It has all the elements required to go viral. I finally decided to indulge in the clever word game about a week before it was purchased by the New York Times.

Since the New York Times took charge, there have only been minor changes. Some people are claiming that the New York Times has changed the word list, and is favoring more difficult words. There have also been some mishaps where users have gotten different words from each other.

The way Wordle was written, it has a list of 2,315 words completely exposed in the JavaScript code. Each day the next word in the list becomes the word of the day. One of the first words I encountered when playing was “moist,” the 228th word in the list. The next word, “shard,” appeared on the subsequent day, and so on.

I decided I wanted to see how the New York Times had modified the list. First, I had to find the original list. The original site,, now redirects to the New York Times, so in order to get the unadulterated code, I used the WayBack Machine to look at the site as it appeared before the sale.

The array of words is contained in a JavaScript file. I extracted the array of words from both the old and new, then compared.

6 words have been removed:

  • agora
  • pupal
  • lynch
  • fibre
  • slave
  • wench

Both “agora” and “pupal” are words that should have appeared in the last few weeks. In fact, “pupal” is the word some people got when visiting the original Wordle site on February 19, 2022, whereas the users who visited the new New York Times version got the word “swill” (which is two words later in the list).

Excerpt from original Wordle list


Excerpt from New York Times list


Since two omitted words have been encountered, the original and new games are now off by two. The next omitted word, “lynch,” won’t be encountered for another 50 or so days (at the time of writing).

Despite the rumors, no words have been added, and the ordering of words has not been otherwise altered.

Since we are on the subject of Wordle, I decided it would be fun to make a utility to help guess the words. It would be too unsporting to just use the word list that the game provides, so I found a list of the most popular English words, and extracted all the five-letter words. This yielded about 3000 words, which is more than the official Wordle list.

I made a simplistic web app that can be used to input the letters and indicate if they appear green or yellow, or not used at all. The app will return a list of possible words for the given configuration.

I don’t condone cheating, and I don’t use this when I play Wordle. It was merely a fun exercise. You can try it out for yourself here.

Clarus the Dogcow

January 25th, 2022

For long-time Apple fans, hardly anything is more iconic than Clarus the Dogcow. Not quite a dog, not quite a cow, Clarus made her debut as part of the Cairo font set drawn by Susan Kare in 1983. Later on in the dogcow’s life, she found herself depicting the orientation of printer paper in the page setup dialog window for Mac OS. I don’t recall exactly in which version she made her debut, but sometime before System 7. And if you are the right age, you may even remember the brown incarnation of the dogcow appearing as a stamp in KidPix!

The dogcow even had official technical notes on Apple’s webpage back in the day! (though those documents were sadly removed in the mid 2000’s)

Naturally, I thought that the best way to commemorate Clarus’ impact on my childhood would be to replicate her likeness in wood. I made a template to follow and cut out strips of light and dark wood that were as uniform as I could make them. These strips of wood served as pixels to my arbor canvas. My dad and I took the little wooden pixels and layed them up against the paper template slowly building up Clarus’ familiar frame. The dark wood is ebony gaboon, and the light wood is maple.

After all the pieces were placed and we corrected any visible mistakes, glue was poured on top. The sides were clamped just enough to keep the pieces from moving. Bursts of air from an air compressor pushed the glue down between the wooden pixels, then finally the clamps were tightened.

Once it was dry, multiple slices were able to be taken from the resulting block of wood which would make the inlays for some miniature cutting board. Four in all were made. Using a CNC router, a rectangular inset was milled away from the maple cutting board, the corners squared up with a chisel, and the inlay glued into place.

All that was left was some sanding and finishing with a food-grade wax to complete these little cutting boards. Kind of a random thing to make, and I honestly can’t remember what made me want to do this in the first place. But I like my little dogcow cutting board and think to myself “moof!” every time that I use it.