The black cat finds joy
batting at a toy mouse,
but joy only finds the black cat
when he's caught by the scent of a real mouse.
When you want to find yourself,
shake off these tepid pleasures
that keep you running in circles.
Pleasure is not strong enough food:
for this journey, you need delight.
Wednesday, November 4, 2009
Thursday, May 1, 2008
Musings on visual search
The story so far: Search engines throw textual queries against textual databases. You want to search for images? Tag them with textual metadata that fits into the search engine paradigm.
The problem: Some things are hard to put in words. You want to hand the search engine an image (or an audio clip or a video clip or the tingling feeling you get in your toes when you get a text from your crush) and have it return things that are similar in one or more ways, maybe clumped by the type(s) of similarity. For example you might feed a search engine a backlit picture of your cat and get one cluster of results for images that have similar lighting, a cluster for images with calico cats, and a cluster of domestic scenes (this list limited only by my narrow imagination).
Various approaches to designing this kind of search have been tried. Graduate students in artificial intelligence research methods of extracting semantics data from unstructured (vis-a-vis semantics, at any rate) files. Google crowdsources extensive image tagging through a two-player game of description. Etsy has a great widget that finds product pictures based on your selection of a color from a trippy color bar.
Meanwhile, there are lots of excellent ideas for visual representations of search results and some of these will doubtless start replacing the List o' Links soon.
Those are great projects.
On the other hand, I think people sometimes loose the thread when attacking the problem. For example, you feed textual search terms to oSkope and it gives you back a List o' Pics instead of a List o' Links. The pics don't seem to be organized by any relationship between them and the results are flat. It's more difficult to use than the List o' Links with little annotations that are so familiar from Google's search research and it gets us nothing. If we want to see the front cover for a particular book in the absence of any other data, we can do a Google Image search and be done in seconds. oSkope doesn't help us decide which of the zillion genre fantasy books sold on Amazon we'd like to take a closer look at.
Visual search and visual search results need to help us quickly hone in on content we want to spend time with by making relationships between results clear, providing quick options for different relevant views, and giving us enough information to make decisions. The future of search is search/browse on mash-up content pages that dynamically suck information from all over the place. Visualization tools will be excellent helpers on these pages, but only if they add real value by helping us find exactly what we need as quickly as possible. No matter how pretty a widget like oSkope is, nobody is going to use it unless it can do more than look slick at a marketing demo.
The problem: Some things are hard to put in words. You want to hand the search engine an image (or an audio clip or a video clip or the tingling feeling you get in your toes when you get a text from your crush) and have it return things that are similar in one or more ways, maybe clumped by the type(s) of similarity. For example you might feed a search engine a backlit picture of your cat and get one cluster of results for images that have similar lighting, a cluster for images with calico cats, and a cluster of domestic scenes (this list limited only by my narrow imagination).
Various approaches to designing this kind of search have been tried. Graduate students in artificial intelligence research methods of extracting semantics data from unstructured (vis-a-vis semantics, at any rate) files. Google crowdsources extensive image tagging through a two-player game of description. Etsy has a great widget that finds product pictures based on your selection of a color from a trippy color bar.
Meanwhile, there are lots of excellent ideas for visual representations of search results and some of these will doubtless start replacing the List o' Links soon.
Those are great projects.
On the other hand, I think people sometimes loose the thread when attacking the problem. For example, you feed textual search terms to oSkope and it gives you back a List o' Pics instead of a List o' Links. The pics don't seem to be organized by any relationship between them and the results are flat. It's more difficult to use than the List o' Links with little annotations that are so familiar from Google's search research and it gets us nothing. If we want to see the front cover for a particular book in the absence of any other data, we can do a Google Image search and be done in seconds. oSkope doesn't help us decide which of the zillion genre fantasy books sold on Amazon we'd like to take a closer look at.
Visual search and visual search results need to help us quickly hone in on content we want to spend time with by making relationships between results clear, providing quick options for different relevant views, and giving us enough information to make decisions. The future of search is search/browse on mash-up content pages that dynamically suck information from all over the place. Visualization tools will be excellent helpers on these pages, but only if they add real value by helping us find exactly what we need as quickly as possible. No matter how pretty a widget like oSkope is, nobody is going to use it unless it can do more than look slick at a marketing demo.
Wednesday, March 26, 2008
Wicked Idioms
It's a feature, not a bug. adj. phrase. Definition: (1) An attempt to save face; (2) It's a bug, not a feature.
Interim solution. noun. Definition: (1) A band-aid for the Titanic; (2) Has it really been 10 years since we released 1.0? (3) The Roeper School Domes. (4) Permanent solution.
Use copy. noun. Definition: (1) Archival copy of last resort.
Interim solution. noun. Definition: (1) A band-aid for the Titanic; (2) Has it really been 10 years since we released 1.0? (3) The Roeper School Domes. (4) Permanent solution.
Use copy. noun. Definition: (1) Archival copy of last resort.
The Spontaneous Combustion of the 20th Century
Very few things burst into flame on their own without an outside spark, be the spark diabolical, divine, zippo.
Silver nitrate film is my favorite one.
Widely used for theatrical releases of movies up through 1951, after a few years of decay in poor storage conditions -- read humid or warm -- this stuff will burst into flames at a much lower temperature than newsprint and will do so on account of the pressure build-up from the fumes it off-gasses during the decay. (Physicists and science teachers: I would like a better account of this process without actually having to look it up on Wikipedia... That sets a new low bar for laziness: too lazy to look it up on Wikipedia).
Every time a reel of silver nitrate film bursts into flames it takes a piece of 20th century culture with it, and it seems entirely appropriate that 20th century culture should leave the world in this way.
It was a century of dramatic technological innovation and the democratization of materialism (regionally). In the course of a single lifetime, both photography and motion picture technology was invented, commercialized as high performance art, and turned over to hundreds of millions of people for personal, private, amateur use. Traditional folk arts died and new folk arts were born. Optimism and rapid change always bring unintended consequences, good ones like penicillin, mix-tapes, and time-shifted television viewing but also questionable ones like the end of pedestrian culture, and outright bad ones like cancer caused by estrogen treatments for menopause or (jury's in) global climate change. A lot of the things I loved the most about the 20th century were the unintended consequences of Cold War technologies.
Spontaneous combustion seems like the fitting end for a century of unintended consequences.
In contrast, I think the 21st century is all about carefully orchestrated consequences. Grassroots methodologies build support for political candidates, expensive research studies demonstrate exactly how to game a social network for maximum commercial benefit, Ariana Huffington proves that enough money can make up for being a total newb. Everything is half commercial and half folk and everything we say is completely ephemeral until the spooks open an investigation and we find out that no small packet of bits goes unrecorded. 21st century culture won't spontaneously combust, rather you won't be able to find it when you need but you'll never be able to get rid of it when you want to.
Silver nitrate film is my favorite one.
Widely used for theatrical releases of movies up through 1951, after a few years of decay in poor storage conditions -- read humid or warm -- this stuff will burst into flames at a much lower temperature than newsprint and will do so on account of the pressure build-up from the fumes it off-gasses during the decay. (Physicists and science teachers: I would like a better account of this process without actually having to look it up on Wikipedia... That sets a new low bar for laziness: too lazy to look it up on Wikipedia).
Every time a reel of silver nitrate film bursts into flames it takes a piece of 20th century culture with it, and it seems entirely appropriate that 20th century culture should leave the world in this way.
It was a century of dramatic technological innovation and the democratization of materialism (regionally). In the course of a single lifetime, both photography and motion picture technology was invented, commercialized as high performance art, and turned over to hundreds of millions of people for personal, private, amateur use. Traditional folk arts died and new folk arts were born. Optimism and rapid change always bring unintended consequences, good ones like penicillin, mix-tapes, and time-shifted television viewing but also questionable ones like the end of pedestrian culture, and outright bad ones like cancer caused by estrogen treatments for menopause or (jury's in) global climate change. A lot of the things I loved the most about the 20th century were the unintended consequences of Cold War technologies.
Spontaneous combustion seems like the fitting end for a century of unintended consequences.
In contrast, I think the 21st century is all about carefully orchestrated consequences. Grassroots methodologies build support for political candidates, expensive research studies demonstrate exactly how to game a social network for maximum commercial benefit, Ariana Huffington proves that enough money can make up for being a total newb. Everything is half commercial and half folk and everything we say is completely ephemeral until the spooks open an investigation and we find out that no small packet of bits goes unrecorded. 21st century culture won't spontaneously combust, rather you won't be able to find it when you need but you'll never be able to get rid of it when you want to.
Thursday, March 20, 2008
philopaper? I think not
Librarians ask patrons to wear white gloves to protect fragile materials from noxious human hands.
Librarians wear white gloves to protect their fragile human hands from noxious materials.
Librarians wear white gloves to protect their fragile human hands from noxious materials.
Tuesday, March 11, 2008
Regex Loves Jenny
The following script now works. Yay!
For the longest time -- at least 15 minutes -- I thought I was incapable of understanding regex because 2 lines of this script didn't work and the output was always blank:
$word =~ s/^\s+//;
$word =~ s/\s+$//;
But it turns out that the screen demons had changed the code:
$word =~ s/^\s+//;
$worn =~ s/\s+$//;
Since I never asked the computer to show me the contents of $worn, I never found out if they were in fact the right contents. It could have been an eldritch sigil in there -- we'll never know.
Also, I know this could have been accomplished without using a hash, but I wanted to practice. I'm wondering if there would have been a quicker way to get the blank spaces removed and the content into the hash though.
This is the script for posterity:
#!/usr/bin/perl
# open the file input by the user as PRICES
open(PRICES, $ARGV[0]);
#read in every line of PRICES
while (defined($line = <>))
{
# make sure @words array is empty
undef(@words);
# create array words and split the contents of the line into it at commas
@words = split(/,/, $line);
# If the values in the array contain blank spaces, remove them
foreach $word (@words)
{
# print("1: $word\n");
$word =~ s/^\s+//;
$word =~ s/\s+$//;
# print("2: $word\n");
}
# print((join("\n", @words) . "\n"));
# make sure pricetable hash is undefined
undef(%pricetable);
# add pricetable hash, assign array contents to hash
%pricetable = ("date" => "$words[0]",
"symbol" => "$words[1]",
"opening" => "$words[2]",
"closing" => "$words[3]",
"high" => "$words[4]",
"low" => "$words[5]",
"volume" => "$words[6]");
# calculate price change using absolute value
$change = abs($oldclose - $pricetable{closing});
# keep track of the current closing price for the next loop
$oldclose = $pricetable{closing};
# print exciting output
print("Date: " . "$pricetable{date}" . "," . " Price change: " . "$change" . "\n");
}
close(PRICES);
For the longest time -- at least 15 minutes -- I thought I was incapable of understanding regex because 2 lines of this script didn't work and the output was always blank:
$word =~ s/^\s+//;
$word =~ s/\s+$//;
But it turns out that the screen demons had changed the code:
$word =~ s/^\s+//;
$worn =~ s/\s+$//;
Since I never asked the computer to show me the contents of $worn, I never found out if they were in fact the right contents. It could have been an eldritch sigil in there -- we'll never know.
Also, I know this could have been accomplished without using a hash, but I wanted to practice. I'm wondering if there would have been a quicker way to get the blank spaces removed and the content into the hash though.
This is the script for posterity:
#!/usr/bin/perl
# open the file input by the user as PRICES
open(PRICES, $ARGV[0]);
#read in every line of PRICES
while (defined($line = <>))
{
# make sure @words array is empty
undef(@words);
# create array words and split the contents of the line into it at commas
@words = split(/,/, $line);
# If the values in the array contain blank spaces, remove them
foreach $word (@words)
{
# print("1: $word\n");
$word =~ s/^\s+//;
$word =~ s/\s+$//;
# print("2: $word\n");
}
# print((join("\n", @words) . "\n"));
# make sure pricetable hash is undefined
undef(%pricetable);
# add pricetable hash, assign array contents to hash
%pricetable = ("date" => "$words[0]",
"symbol" => "$words[1]",
"opening" => "$words[2]",
"closing" => "$words[3]",
"high" => "$words[4]",
"low" => "$words[5]",
"volume" => "$words[6]");
# calculate price change using absolute value
$change = abs($oldclose - $pricetable{closing});
# keep track of the current closing price for the next loop
$oldclose = $pricetable{closing};
# print exciting output
print("Date: " . "$pricetable{date}" . "," . " Price change: " . "$change" . "\n");
}
close(PRICES);
Monday, March 10, 2008
Remain Seated and Keep Your Arms and Legs Inside the Cabin Until the Vehicle Comes to a Complete Stop
The vendor I work with most often is a many-headed monster
and each of heads is of many minds on every subject.
When the monster gathers its thinking parts in a conference room,
most of them collapse on themselves in tremendous effort to bite and avoid being bitten,
(to smite and avoid being smitten?)
but some of them show their spines and drive the rest.
Sometimes the loud ones, sometimes the quiet.
The shepherds is monster, the monsters are shepherd.
The minds of a megacorp is many, the mind of a megacorp are one.
And this is how Business Gets Done.
It's the same way here, at every Board meeting.
Probably the same way everywhere, when many persons try to be one people.
and each of heads is of many minds on every subject.
When the monster gathers its thinking parts in a conference room,
most of them collapse on themselves in tremendous effort to bite and avoid being bitten,
(to smite and avoid being smitten?)
but some of them show their spines and drive the rest.
Sometimes the loud ones, sometimes the quiet.
The shepherds is monster, the monsters are shepherd.
The minds of a megacorp is many, the mind of a megacorp are one.
And this is how Business Gets Done.
It's the same way here, at every Board meeting.
Probably the same way everywhere, when many persons try to be one people.
Subscribe to:
Posts (Atom)