Serving Fine Photos Since 2007

My 500px Randomizer

I’ve mentioned this before, but I thought I’d revisit it since I’ve recently rolled out a few changes.

In the last year or so, 500px has exploded to become the “serious” alternative to Flickr—a place where you show off your best work while not being crowded out by the kinds of people on Flickr that upload every lame snapshot of their kids or dump their entire CF or SD card into their stream everytime they come back from an outing.

Unfortunately, one of the big problems with 500px is that there’s no “good” way to randomly view images, save for a link at the bottom of their homepage inviting you to “StumbleThru 500px”, which simply uses user-submitted links on third-party service StumbleUpon.

I found this to be inadequate, as it only relied on photos that users had bothered to “Stumble”.  This meant that the number of images were somewhat limited as well as confined to mostly the more popular images—ones that the hive mind of the 500px viewership community had decided were “the best” and worthy of linking to.  After a few clicks on the Stumble button, I found that I was getting the same few images over and over again—some of them were even months old.

What I wanted to do was see truly random images from 500px, so I set out to make a tool to do the randomizing for me.

My first iteration was simple.  Since, at the time, 500px didn’t have a publicly-exposed API, I had to be “kludgey”.  A bit of poking around revealed that 500px simply numbers photos sequentially as they are uploaded—in fact, you can easily go see the first photo uploaded publicly thanks to the ridiculously-easy-to-reverse-engineer URL convention of http://500px.com/photo/<number of photo>.  This made it extremely easy to create a php application that would simply generate a random number between 1 and whatever the largest number used is.  The php code is easy:

$iPic =  mt_rand(  1 , $iMax );
return “http://500px.com/photo/”.$iPic;

Where $iMax is whatever the largest number used is. Since I didn’t want to have to bother writing an overly-long script to figure out what the latest number used was, I’d simply manually update $iMax every couple of days with the photo ID of the first image on 500px’s Fresh page.

In my app, I embedded an iFrame to hold the photo’s page while the app acted as a wrapper around it, keeping the “Randomize” button and “Permalink” link visible at all times.  And this worked great, but I wasn’t happy.  I quickly found that while 500px has tons of great work on it, there’s a lot of cruft.  Especially amongst the older photos submitted before the community really “took off”.  What I really wanted was to be able to randomly browse photos that were of a bit higher quality and were on the newer side (and this, I suppose, is where my application lost it’s complete randomness).  Unfortunately, this wasn’t really possible at the time, so I let the project sit on the backburner for a while.

Then 500px opened up its API.  And I leveraged it.  I quickly figured out how to use JSON queries to return arrays of recent photos in the Fresh, Editors’ Choice, Upcoming and Favorites categories.  Not really caring about Fresh since that’s the initial “dumping ground” for everything uploaded, I concentrated on the other categories.  I quickly produced some code that queried the API and returned a random photo from the user’s choice of categories, replacing my previous code that haphazardly propelled you around 500px and instead allowed you to randomly view more-curated photos.

A bit of Javascript trickery also allowed me to make a feature to view the photographer’s 500px homepage using a window blind effect so that a user can quickly check out other photos by that photographer as well as follow them without leaving my app.

So, there you have it, the story behind my 500px Randomizer.  Feel free to use it all you want;  just keep in mind that it’s still a work in progress and if you find any bugs, feel free to send me an email at lefty@leftyrodriguez.com to let me know.

Processing “The Last Supper”

Pedro Alves asked in a comment on today’s photo if I could explain the processing.  So I thought I’d give it a quick try.
The original raw photo was shot at f/10 at ISO 100 and a shutter speed of 1/100 of a second, using a polarizing filter to darken up the sky a bit.  After importing to Lightroom, I pre-sharpened and adjusted the white balance, giving me this:
Not very exciting, eh?  I decided to tone map it to bring out the shadow and highlights detail in a sort-of “faux” HDR process.  Since I hadn’t shot multiple bracketed exposures, which would be necessary to do true HDR, I faked it, relying on the pure dynamic range that shooting RAW affords a photographer.
In Lightroom, I created four virtual copies of the photo, giving me five copies altogether, including the original.  I left the original’s exposure value at 0, then set the others at values of +1, +2, -1 and -2 respectively, imitating the bracketed exposures I’d get with a “real” HDR shot.  I then exported these to Photomatix to do the tone mapping, which resulted in this image:
This gave me great detail in the shadows, but killed the sky.  I didn’t really care, though, because I still had work to do.  I imported the original photo with the dark sky I liked and the tone-mapped photo I’d created in Photomatix into Photoshop for further work.
First step was to copy the tone-mapped version into a new layer over the original.  I then created a layer mask which allowed me to use a black paintbrush to “punch through” the tone-mapped layer to the original photo below.  I used a brush with an opacity set to roughly 50% to slowly bring the original sky into the tone-mapped layer.  Once I was satisfied, I applied the layer mask, resulting in a photo that had tone-mapped statues and mountains, but original dark sky.  I then used Topaz Adjust to bring out a bit of detail in the mountains and statues, because I feel like the tone-mapping process leaves the photos looking a bit flat detail-wise.
My next step was to convert to black and white.  For this, I used Nik Software’s excellent Silver Efex Pro 2.  I started with the built-in “high structure” preset, then added a bit of extra structure and a little bit more contrast, while dropping the exposure down a notch or two.  Then, I used Silver Efex’s control points feature to darken up the sky just a bit more while leaving the mountains and statues unaffected. Once this was done, I saved back to Lightroom, did some final noise reduction and a bit of sharpening and posted it to the site.
Here’s a before/after:

before
after

Around the World in Five Minutes

Last year, Kien Lam did what many of us dream of doing—he quit his job in San Francisco, packed his bags and camera and headed out on a ’round the world trip.  This is the video he put together of that long journey.

Holiday Sale!

I just realized that I hadn’t blogged in a while, so I thought I’d make it up to everyone by running a print sale. From now until December 15th (my birthday, incidentally), get 25% any purchase of $50 or more by using coupon code 8CCE0A .

How awesome is that? Pretty damn awesome.

To use, just choose a photo you want to buy, click “Buy Print” below it, choose your options and enter the code on check out.

Winston approves!

Afraid?

This has to be one of the best Flickr photostreams ever. A haunted house in Niagara Falls, ON takes pictures of people during their tour through the attraction:

Nightmares-Fear-Factory-Halloween11-(FV1846)pic0090pic0016pic0095pic0026pic0027
pic0086pic0014pic0021pic0062pic0071pic0046
pic0038bpic0010pic0038pic0035pic0025pic0009
pic0045pic0047pic0053pic0024pic0014pic0024b

You can find the whole photostream here.