Neil Kandalgaonkar

hacker, maker of things

50 people see…

I wrote a program to blend Flickr images which share the same tags. No human is involved in choosing, positioning, or blending the images.

This is partially inspired by the work of Jason Salavon.

50 people see the sunset by Neil
Combined view of fifty "sunset" photos from fifty different Flickr users.
50 people see a flower by Neil
Combined view of fifty "flower" photos from fifty different Flickr users.
50 people see an eye by Neil
Combined view of fifty "eye" photos from fifty different Flickr users.

This is a revised version. The first is here.

50 people see a mountain by Neil
Combined view of fifty "mountain" photos from fifty different Flickr users.
50 people see soup by Neil
Combined view of fifty photos of "soup" from fifty different Flickr users.
50 people see their own shadow by Neil
Combined view of 50 photos tagged with "shadow" and "self" from 50 different Flickr users.
50 people see the beach by Neil
Combined view of fifty photos tagged with "beach", from fifty different Flickr users.
50 people experience the seasons by Neil
Left to right and top to bottom: winter, spring, summer, and autumn. Each image is made by merging together 50 Flickr photos tagged with the season’s name. Each photo comes from a different Flickr user.
50 people see sadness and happiness by Neil
Combined view of 50 photos tagged with "sad", on the left, and 50 photos tagged with "happy", on the right.
50 people see a candle by Neil
Combined view of fifty photos tagged with "candle", from fifty different Flickr users.
50 people see The Gates by Neil
Combined view of fifty photos of "The Gates", from fifty different Flickr users.
50 people see the Eiffel Tower by Neil
Combined view of 50 photos on Flickr tagged with "Eiffel". Each photo is from a different user.

Google Draw

This code is ancient and does not work with current Google Maps. Historical interest only.

Google Maps has a very clever system to draw lines onto its maps, such as when you want driving directions. Unlike just about every other system, Google Maps does not draw the line directly on the map itself. It gets your browser to do that, using various tricks.

This means you can play a trick of your own: get Google to draw lines of your choosing. Here’s a perl script that demonstrates how: google-draw.pl.

ridcat: Making verbal imagery visible

This idea is based on a psychological technique called Regressive Imagery Analysis. The idea is to analyse a text (especially a therapy session) for emotion-laden words, and note the statistical deviation from the norm. So, supposedly, someone who uses a lot more “anxiety” words than the average Joe is revealing something about his or her inner self.

An online friend started analysing blog posts like this, using bar graphs. I had the idea to try to represent this visually.

Undesigning Cherokee syllabary

My friend Sean M. Burke was complaining on IRC about how this font he was reading was hurting his eyes. As a linguist and programmer specializing in Native American languages, he was used to his share of unusual scripts, but he couldn’t abide this one. He had a point.

Knowing that I was a bit of a typography geek, Sean asked if I could do anything to help. He was working on a book of Cherokee verbs, and was not looking forward to months of staring at the above font.

I ended up making this font. Click the buttons to see the difference.

Ironically, although I thought I was bringing new usability principles to the syllabary, I eventually found out that I was bringing the script closer to what it was intended to be all along. The original genius of the inventor of Cherokee script was finally coming through after all these years - both preserved, and obscured, by technology.

Abigail’s regex to test for prime numbers

The prolific Perl hacker Abigail is famous for posting enigmatic but ingenious one-liner scripts in her signatures on newsgroups.

Here’s one that blew my mind, from comp.lang.perl.misc:

1
perl -wle 'print "Prime" if (1 x shift) !~ /^1?$|^(11+?)\1+$/' [number]

It does exactly what it says on the tin - it tests numbers to see if they are prime!

1
2
3
4
5
6
7
8
$ perl -wle 'print "Prime" if (1 x shift) !~ /^1?$|^(11+?)\1+$/' 18
$ perl -wle 'print "Prime" if (1 x shift) !~ /^1?$|^(11+?)\1+$/' 19
Prime
$ perl -wle 'print "Prime" if (1 x shift) !~ /^1?$|^(11+?)\1+$/' 20
$ perl -wle 'print "Prime" if (1 x shift) !~ /^1?$|^(11+?)\1+$/' 21
$ perl -wle 'print "Prime" if (1 x shift) !~ /^1?$|^(11+?)\1+$/' 22
$ perl -wle 'print "Prime" if (1 x shift) !~ /^1?$|^(11+?)\1+$/' 23
Prime

But regular expressions are tools for testing if strings of characters match a certain specification. How could they do math?

I couldn’t rest until I figured it out. So, here’s how it works - along with some obscure features of Perl, and the hidden true nature of regular expressions.

New York City

skater1 by Neil
Central Park, 1993
skater2 by Neil
Central Park. Somebody jostled me as I snapped the picture, with miraculous results – the man is mostly sharp and in focus.
flag by Neil
St. Mark’s Place, 1993