color sorting

I find the idea of sorting a set of colors in interesting ways. It’s very much a perceptual problem. Different people will sort a color palette in different ways.

“web” palette sorted by saturation. (Some of these examples are truncated for formatting, see the sortpal pages for fuller versions)

People organize colors differently. Lots of ways to sort them mathematically. Some map well to what people perceive as correct. Some do not.

web palette sorted by proximity in rgb colorspace

Sortpal is project to try to visualize what some of these different methods look like, and how they compare to each other. It shows a set of color palettes, sorted by the various attributes like it’s redness, or brightness, or saturation. For example, in the “red” row, the reddest colors are at the far left and decreasingly red colors to the right. The width of the color depends on the number of colors in the palette.

web palette sorted by redness

Different color palettes can be chosen, including the 216 “web safe” palette (wiki), the X11/css “named” colors (wiki), the xkcd color survey (xkcd color survey), a rough approximation of the spot colors often used in print, a Hilbert curve through rgb space (wiki), misc artistic palettes, etc.

The sort methods fall into a couple of sorts (ha!):

Sorting by one component of a color space, the most obvious being the red, blue, green values of RGB:

web palette sorted by red, green, blue respectively

Hue, saturation, and value (HSL and HSV) is another color space, that maps a lot more naturally to how people understand colors.

web palette sorted by hue, saturation, value, lightness, respectively.

Hue or Saturation are probably what most people think of as the natural way to sort colors.

Another approach is sorting by proximity in the 3d color space. The idea being to start at the origin, and find the closest colors in 3d.

Hue, Saturation, Lightness 3d

Hue, Saturation, Value 3d

Red, Green, Blue 3d

The code is up at github. No promises to it’s correctness or functionality.

Note that for the most part, all of the methods shown here are described as being one parameter sorts, but in some cases there are secondary and tertiary sorts as well (hsv3d, and chroma ) mostly just to stabilize the sorts.

helicopter flight/lesson

me in a helicopter

A couple weeks ago we took a helicopter demo flight and lesson from North Carolina Rotor and Wing. It was a short and to the point classroom lesson, and then a ~30 min flight in a Robinson R22 helicopter.

The helicopter itself is tiny. Two passengers, shoulder to shoulder. A small piston engine. Less than a 1000 lbs sans passengers.

Flying a helicopter is an interesting experience. There are alot of things going on to keep track of, and the controls are sensitive,but with a bit of delay to control input.

This was a gift from Gina since I had often remarked I had never been in a helicopter. Although I have flown in a glider, a single engine kit plane, a zeppelin, and a hot air balloon. Any one know where one could take a gyrocopter flight?

git diff like highlighting of extra whitespace in vim and emacs

via Jim Meyering via coreutils list

Some configs for vim and emacs to show trailing whitespace and other whitespace anomalies.

vim config

let c_space_errors=1
highlight RedundantSpaces ctermbg=red guibg=red
match RedundantSpaces /\s\+$\| \+\ze\t/

Emacs needs the Whitespace mode from

The default config is a bit overboard for me, so I use something more like:

(require 'whitespace)
(autoload 'global-whitespace-mode "whitespace" "Toggle whitespace visualization." t)
(autoload 'global-whitespace-toggle-options "whitespace" "Toggle local `whitespace-mode' options." t)

;turn on the more or less git diff --color whitespace highlighting
(setq whitespace-space whitespace-style (quote (face tabs trailing space-before-tab newline empty space-after-tab indentation)))


I finally started organizing the various git commands and aliases I use alot, and published them to github. My gitconfig repo.

Some of these are useful only for projects similar to mine (fedora, tito based, bugzilla, etc) but I think some of then are generally useful.

A few favorites:
# commits not pushed to $1
unpushed = cherry -v

# ignore po files in "git log", sorry translators ;-<
slog = "!sh -c 'git log --no-merges $1 `ls | grep -v ^po`' -"

# what tag contains the sha
whatrelease = name-rev --name-only

# what branch contains the sha
contains = branch --contains

# what got pushed to master in the last hour
# based on
justpushed = log origin/master@{\"1 hour ago\"}..origin/master --

# show a list of branches sorted by time of last commit
brage = "!sh -c 'for C in $(git for-each-ref --sort=committerdate refs/heads --format=\"%(refname:short)\") ; do git show -s pretty=format:\"%Cgreen%ci %Cblue%cr%Creset $C\" \"$C\" -- ; done'"

# show a list of tags sorted by when they were tagged
tagage = "!sh -c 'git for-each-ref --sort=taggerdate refs/tags --format=\"%(refname:short)\"'"

# show a list of every branch and show there latests commit, sorted by last commit
brlog = "!sh -c 'for C in $(git for-each-ref --sort=committerdate refs/heads --format=\"%(refname:short)\") ; do git show -s --pretty=format:\"%Cgreen%ci %Cblue%cr%Creset $C\" \"$C\" -- ; git show -s $C ; echo; done'"

# needs python-bugzilla, and git-showbugs

# show a list of files with bug fixes in them, sorted by popularity of occurance
# aka, list the buggy files
buggyfiles = !"git log --format=\"format:%n\" --grep \"^[[:digit:]]\\+:\" --name-only | grep . | sort | uniq -c | sort -n"

919noise 4/6/2010 Stochasticaster debut

For the performance at the 919noise showcase, I built an instrument based on a cross between a guitar, a kalimba, and a spring reverb tank.

no name yet

I wanted a physical sounds source as opposed to something electronic or digital. In this case, magnetic pickups with strings resonating in them like a regular electric guitar. Long loose strings for reverb type sounds, short strings for kalimba like tones. 34 strings/tines in total, 5 single coil pickups, 5 bridges. String gauge range from .09 inch (typically the high E string on a guitar), all the way down to a .106 inch string (typically low E string on a bass guitar).

Bridges were the same style of electrical panel grounding bars as I used on the Kalimbazooka.

Unlike the Kalimbazooka, this used the more flexible electric guitar strings for the tines, which made it somewhat difficult to tune. The strings were very sensitive to the exposed length, which was difficult to get right. I got it mostly at tune at one point, but it drifted quickly, and I ended up forgetting about trying to tune it to a particular set of notes. Oh well, it makes cool noise.

Built it in a week or two. Not sure I learned to play it as well as I would like, but I wanted something new and interesting. I guess with this kind of thing, the main thing to figure out is how it interacts with the amps and feedback, which I thought I had figured out.

I played first after a couple minutes of soundcheck. One of the first problems I ran into was the buzz/hum. Lots of it. The type of pickups in it (single coils) have a tendency to buzz a bit, but in normal guitars, only one is on at a time. I had 5 of them. That plus some long wires, bad shielding on the cheap donor guitar, and I had a pretty loud buzz. Could be worse, it was a noise show at least. I’ve got some ideas on how to fix it though.

Adrian at nightlight

The high noise floor made it a little hard to use as much dynamics as I would have like. Quieter things got washed away in the noise. So less subtlety was called for.

Was nervous about it as usual, and rushed stuff. Not particularly a good habit for noise/ambient/drone, hopefully it works for me. Seemed to get a good response, and folks were curious and complimentary about the instrument.