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.

gitconfig

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 http://stackoverflow.com/questions/3357219/expose-the-date-a-commit-was-pushed-to-a-repository
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
openbugs = showbugs -s NEW,ASSIGNED,NEEDINFO,FAILS_QA,REOPENED,ON_DEV
closedbugs = showbugs -s PASSES_QA,VERIFIED,RELEASE_PENDING,CLOSED

# 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"

Business card caliper

This is a project I’ve been experimenting with at Techshop Durham. It is a laser cut business card that folds up to create a working caliper. I’ll probably make some for myself, Rod-o-Rama, and lintqueen.

card_red_2
The card in “ready to hand out” mode

card_caliper_1
Card assembled, ready to use. These particular examples were actually cut out of paint chip cards (lintqueen’s idea).

card_caliper_2
After snapping out parts.

card_caliper_slider
Folding over the slide

card_caliper_assembly
Next step in assembly.

card_caliper_complete
Assembly completed.

card_caliper_8mm
In action, measuring an 8mm hex key. Accuracy and precision are not too bad for something folded out of paper.

It’s cut and engraved with the epilog laser cutter at Techshop Durham. Initial design scratched out on paper, transferred to Inkscape, final tweaking in Corel Draw (actualy, lots of tweaking, since it did a horrible job importing the svg).

It still needs some refinements, like better instructions and possibly an illustration or two. I have some minor aesthetic tweaks in mind as well, but this version is mostly complete.

The corel draw source file is here. That file could use some cleanup, and I’d like to get it back into a open format like svg, but that will do for now. Consider it under Creative Commons.

Creative Commons License
Business Card Caliper by Adrian Likins is licensed under a Creative Commons Attribution 3.0 United States License.
Based on a work at www.adrianlikins.com.

conFUD

The main day of the fudCON talks were today. Seemed to go pretty well. I pitched two sessions, one on OLPCs/Asus EEEs/ultraportables, and another on func.

The OLPC session was more of a meetup/get together than a talk, and seemed to go pretty well. Unfortunately, it got scheduled against the Fedora.tv/Vaniv/Percolote talk, so I missed that.

My real talk was func, and the talk seemed to go well. I tried to keep the slides pretty slim and lightweight, and breezed though them pretty fast, but I think it went okay. I didn’t seem to get any of the vaguely aggressive questions in the Q&A these sort of talks usually get, so I’ll take that as a win.

Fudcon

I’ll be at FudCon this weekend. What is FUDcon? It’s like a BarCamp but for Fedora nerds.

I’ll be helping with the presentation on Func. I’m writing the slides at the moment. Yay! Slides! If there is anything someone wants me to include (photo, reference, curseword, etc) let me know and I’ll see what I can sneak in. My slide presentation philosophy is “leave them confused”.

You may also know me from other slides and hackfests like cobbler, pulp, olpc, eee, vidpress, and wknc.

More red hat high

Almost finished with Red Hat High week. Check out this Red Hat Magazine article for a better summary than I can provide.

Pretty cool experience. I learned a lot, and I think the students did as well. I hope I can put up some of the tracks they put together this week.

Trying to teach classes of any sort always wears me out. And this week was no exception. I think I need about 40 hours of sleep now.

splicemusic

Playing around with splicemusic.com. A website that involve some aspects of a social networking site and music collab/sharing sites like ccmixter. It’s all CC content, and they include a simple little flash based sequencer app for quickly building songs with the available samples.

An interesting idea, although the site still seems to be in beta. Some of the ui bits could use some work, but I like the idea of it if nothing else.