Conversation with Jim Christian

Aperture was on the brink of the imminent 3.0 release, and Lightroom was edging out its bold next generation version. But there was a moment of long pause before the two made headlines with the the subsequent releases of the photographer’s favorite tool.

A few years ago, Jim Christian made news with Noise Ninja, a coherent tool at the time where noise was a bigger problem than they are today. But he believes that we are just at the beginning, the dawn of the next generation of image processing technology. As Apple and Adobe were gearing up for their next versions of tools, Jim also had something under his sleeves.

Armed with a passion for photographic excellence, and a software engineering prowess, Jim sets himself out to retool Noise Ninja. But as he dived in, he thought he could do more. He wants to explore the realms of the other (bigger) problems in image processing today: highlight treatment, which not coincidentally, is the noises’ alter-ego. And two years later, Photo Ninja came to light.

The problem we have today in digital photography is bigger than one man can handle. Digital evolution is also faster than analog were. Companies like Adobe, Apple, even Canon or Nikon have an arsenal of scientists, developers… and more money, to make digital photography better. But Jim’s engineering capacity, along with his determination and passion in photography had not only taken a concept into a reality, but he was also able to create something that can be compared to — even on some level, exceeded — what bigger companies produce. Photographers and tech critics have praised Photo Ninja’s abilities to render images unlike any other available tool today.

So I asked Jim if he wants to chat about his new app, and more about his approaches to be published here. We managed to exchanged over 2 dozen emails between September and October 2012, and I have chronologically presented them in its entirety below for your reading pleasure.

You are known as the man behind Noise Ninja, an indispensable noise reduction tool to many photographers and publishing agencies. What was the key formula to Noise Ninja’s popularity, and eventually, PictureCode’s success as a software & technology provider.

Jim: One key is the fact that I had no background in image processing when I set out to develop Noise Ninja, so I avoided the conventional solutions. I have a pretty deep and broad background in other areas of computer science, artificial intelligence, finance, and so on, and I was able to draw on a lot of experience to develop a new solution to the basic problem of discriminating detail from noise.

However, the math was only half the story. Working photographers care about image quality and productivity. I spent a lot of effort tuning the algorithms to make the results look “right” without a lot of tweaking. Many users remarked about how natural or “photographic” the images look after filtering. They also appreciated how the default settings get them close to a final result.

Another key is that we have a lot of interactions with our customers. Whether it’s a support issue or feedback or an inquiry of some sort, we try to learn from those interactions, and we try to be responsive and helpful and create a positive impression of PictureCode. People notice this, and word gets around.

With Photo Ninja, the story is largely the same, but with an order-of-magnitude increase in scope (and effort). And, I’m happy to say that early users are reacting to Photo Ninja much the same way they did to Noise Ninja — they’re telling me that the results are natural-looking, they are getting results quickly and easily, and it’s setting a new benchmark for image quality.

Mountain Landscape, by Jim Christian

© Jim Christian
I’ve learned that you are also a photography enthusiast. Was your involvement in coding born out of your passion in photography, or vice versa? How did it shape Photo Ninja as a feature product?

Jim: Photography became a serious hobby of mine after my daughter was born in 1999 — something clicked, and before I knew it I was building up a collection of lenses, shooting whenever I got the chance, experimenting with studio lights, scanning film, making prints, and generally spending too much time with it. I switched from film to digital when the Canon D30 came out, and I could see that was the future. Since the pixels were now in the computational domain — where I had a lot of expertise — I figured I ought to be able to add value with some kind of software product.

I noticed a lot of people in forums asking “hey, how do I get rid of this nasty stuff that I see when I shoot at high ISO?” I realized noise was a problem with every digital camera on the market, and serious photographers were hitting a wall with it. There weren’t a lot of compelling solutions at the time, so I decided to give it a try. The result was Noise Ninja.

For Photo Ninja, having an understanding of photography has been indispensable, not only for guiding the engineering, but also for interpreting the feedback from photographers who worked with early versions of the product.

There are aspects of Photo Ninja that seems so obvious but other apps miss, like the out-of-this-world highlight recovery tool and the groundbreaking imaging algorithm. Would you mind telling more about the beginning and how did you grow an idea to a shippable product? What was the major challenges in creating a workflow-based raw image development app amidst competition from camera manufactures and developers like Apple and Adobe?

Jim: The problems might be apparent, but the solutions are far from obvious. This is hard stuff.

The idea for Photo Ninja came about for a couple of reasons. Based on what we were hearing from our Noise Ninja customers and seeing in the marketplace, we felt that the raw conversion problem wasn’t entirely “solved” with respect to image quality, and there was an opportunity to add value. I also felt constrained working outside of the RAW pipeline; we really needed to get directly inside it to achieve the best processing results.

The biggest challenge was simply time. It took much longer than I had intended. Partly our own fault, partly due to things beyond our control. But it was worth the wait; I think we’ve developed a differentiated and effective tool.

Let’s go back for a bit before we get a little more technical. Tell us more about how you grew up and how you ended up writing software.

Jim: I moved around a bit as a kid, but more or less grew up in Idaho in a town full of potato farmers and nuclear scientists. I started building computers in my basement when I was around 12 years old. (Remember the 8080 microprocessor? I used to know the pin-out and timing specs in my head.) At Harvard, I majored in computer science, so ended up on the software path from that point on. Did a Ph.D. at the University of Texas at Austin in a formal subfield of artificial intelligence concerned with the mechanization of mathematical reasoning.

Did your C.S or mathematical reasoning background helped you built Photo Ninja’s algorithm? You also have a business degree, correct? How — in practice — do you switch from programming, fine art, and business, let alone family? Understandably, that takes some struggling at the beginning?

Jim: Everything helped. I find that having depth in a lot of areas has a multiplying effect over time — you have more frameworks to draw on for understanding new things, and knowledge in one field can cross-fertilize with another.

If you’re looking for the secret to achieving balance in life while pursuing something like the development Photo Ninja, I’m absolutely the wrong guy to ask. It has required a ridiculous amount of work, and my life has not exactly been balanced. My family understands what I’m trying to accomplish, however, so they’ve given me a lot of leeway. But I owe my wife a few more vacations — and I think she’s expecting to collect with interest.

Photo Ninja is the successor to Noise Ninja, but much more than just a feature upgrade. Also, camera sensors have advanced significantly since you first release Noise Ninja, can you share us some technical insights on what kind of improvements, changes in raw image quality parallel to image sensor improvements? Have we tap the maximum potential or there are still rooms for software innovations?

Jim: One key area of change is in the handling of the camera dynamic range. Dynamic range has increased a lot in some models. To really get the most out of it now, you need to be able to compress and manipulate global contrast without making the detail look flat or unnatural. This encompasses a range of things, including opening up shadows to reveal detail, taming aggressive highlights, and compensating for backlighting. These things are generally impossible to do well with conventional tone curve adjustments. You need more sophisticated adaptive algorithms.

The noise reduction problem doesn’t seem to be going away. As the sensors yield cleaner results at a particular ISO, photographers just push up to a higher ISO. And as the dynamic range of the camera increases, they shoot in higher contrast lighting and then even it out in postprocessing, but this bring up the noise in the shadows. So, ironically, good noise reduction has actually become more necessary rather than less as the cameras have improved.

There is still room for improvement in the algorithms. I don’t think I’ve written my last noise reduction algorithm. And I’d like to try a few more things with highlight recovery and demosaicing. Also, if you increased computing power by 10X or 100X, I might try some entirely different approaches to some problems.

By the way, I’m not advocating shooting in mid-day sunlight and trying to fix everything in post. I think too many people are starting to rely on postprocessing as a repair process instead of as an enhancement process. I still believe the best images result when you capture nice lighting at exposure time. You can’t effectively enhance color or light that wasn’t in the image in the first place. Look at the photos someone gets by carefully choosing his lighting conditions. Of course, if you’re a photojournalist or event photographer, or if you’re on vacation with your family, you don’t always have the luxury.

Waterfall, by Jim Christian

© Jim Christian
Photo Ninja seems to have been developed with a code-once-built-for-all coding platform. Any OS specific advantage that Photo Ninja has on one platform but not the other? On the other hand, what kind of disadvantages you encountered in not using a platform-specific coding tool to build native versions?

Jim: We used a cross-platform GUI toolkit called Qt. I don’t think there’s any particular advantage on one OS or the other. The main disadvantage of the cross-platform approach is that the UI doesn’t look “native”, particularly on the Mac. But for most users this doesn’t seem to be a problem as long as they can get the results they want from their images.

Speaking of interfaces, what would be the pros and cons of using Photo Ninja as a plugin to existing apps? Will it follow Noise Ninja’s footstep and ship it both as a standalone and plugin?

Jim: We’re planning to deliver a Photoshop plug-in module in the V1.1 release of Photo Ninja. It’s already under development. It works in two modes: As a “format plug-in” it allows you to invoke Photo Ninja as an alternative to ACR for opening and processing RAW files. You do you your raw conversion in Photo Ninja, then hand-off to Photoshop for spot retouching or layer manipulations or whatever. As a “filter plug-in” you can invoke Photo Ninja in the middle of your Photoshop workflow to apply, say, noise reduction or detail enhancement, similar to the way the current Noise Ninja plug-in works.

I expect the combination of Photo Ninja + Photoshop will be convenient and effective for a lot of professional photographers.

Photo Ninja can also be used as an external editor for other platforms like Photo Mechanic, Lightroom, and Aperture. I personally find the fit with Photo Mechanic to be the most natural and flexible — it works off the file system just like we do, so there isn’t a catalog or library to get in the middle of things. You can send raw files directly to Photo Ninja — there’s no intermediate TIFF file — and you can save your work to XMP or to a JPEG or TIFF and Photo Mechanic is happy any way you do it.

So there won’t be Lightroom & Aperture plugins?

Jim: Lightroom doesn’t have a true plug-in interface for editor/filter apps like Photo Ninja. Instead, it has an “External Editor” facility that you configure, where you can invoke the other app (in this case, Photo Ninja) with a menu command in Lightroom. It’s not as seamless as, say, the plug-in approach in Photoshop, but it works. (A lot of people seem to think that Lightroom supports Photoshop-style plug-ins, but in reality it doesn’t. There is an API, but it is more limited in scope, e.g. for uploading to photo websites and things like that.)

Aperture has both an external editor facility and a plug-in API, but the plug-in API is actually just an in-process version of the external editor mechanism. It creates largely the same net experience for the user, but, technically, you are not leaving the Aperture process. But from my view that’s mostly a superficial distinction. The reality is, it still creates an intermediate TIFF, and you still have to interrupt Aperture’s nondestructive flow to accommodate a “foreign” editor or filter. We have an Aperture plug-in for Noise Ninja. We might create one for Photo Ninja, but not sure yet — Photo Mechanic, Photoshop, and Lightroom seem to be a lot more popular in the user base at this point.

Prior to developing Photo Ninja, did you study other apps and how it works? Was any particular feature or deliberation from other apps were an inspiration to Photo Ninja. I found there’s a large UX gap with Photo Ninja’s Qt-based user interface and its lack of workflow-friendly feature such as batch processing or queue support to be used as a standalone image processing app, yet the pricing, and Photo Ninja’s end-to-end approach suggests otherwise.

Jim: Didn’t really study other apps very closely, I was more focused on the image processing problems. When I did try some of the others, I usually felt overwhelmed by the clutter and density of the UIs, so I wanted to avoid replicating the same thing.

Batch processing will be coming soon, it’s one of top dev priorities (along with Photoshop plug-in integration). Originally it was intended to be in V1.0, but we decided to ship without it to avoid further delay. A number of the beta testers were telling me that we had reached a critical mass of functionality and that we should just get it out there so people can start benefiting from the image quality. And, as for the pricing, what we’re hearing from customers (and seeing in sales) is that the value is there in the image quality. I realize that the UI is a highly subjective area and some people have strong opinions about particular UI styles. We’re listening to feedback and we’ll probably make adjustments as we go along.

We followed a similar approach with Noise Ninja — releasing once it was stable and there was enough functionality that a meaningful number of photographers could get work done with it, even if some things were missing, and then continue building on it and delivering updates fairly often. Customers responded well to that.

Does Photo Ninja uses manufacturer’s raw decoder to read raw files, or is it future-proof to read original camera raw files? What’s your thought on manufacturers raw file format? Did you learn any particular company whose raw format is superior to others?

Jim: We are currently using Dave Coffin’s DCRaw decoder for the decompression step when we open a file. (But we do everything else with our own stuff — demosaicing, etc.)

I don’t think of the raw formats as “better” or “worse” than each other. They’re all a pain to work with because the manufacturers won’t document them.

Let’s talk about gears. What is your camera setup & workflow like? What computer hardware & software you use to code Photo Ninja, your website, and manage your photographs?

Jim: I’ve been shooting with Canon gear. 5DMkII body, mostly with the 24-105/f4 L and the 70-200/f4 L zooms. I also have an assortment of primes, but I have largely succumbed to the convenience of the zooms. The 24-105 packs a lot into one lens — range, image stabilization, and decent image quality. But I would like to get back to shooting more with primes again, especially at the wide end.

Honestly, my shooting slowed to a trickle after I started PictureCode, though lately I have been trying to do a little more here and there. I just don’t have the time, and when I pick up a camera it reminds me of all the work I need to do. (Lesson: If you want to wreck your hobby, start a business around it.) So, my workflow is currently pretty basic: Dump images into a folder structure on my laptop, backup to an external drive, browse, convert and edit with Photo Ninja.

For development, we use C++. I edit in emacs, I can’t function without it. Website is PHP-based.

At one point, we spoke a little bit about post-PC devices and what might the future brings to the software side of image processing/development. While he wasn’t ready to share what’s in the lab, he gently suggested some exciting things of what might unfold.

At the time of this writing, Photo Ninja is in version 1.0.2 and is constantly being updated. If you haven’t, give Photo Ninja a try, and you might just see what some clever engineering can bring to digital imaging.