I’ve had some time to work on the next version of Lens•Lab for iOS devices recently. It’s coming along well and I think you’ll be pleased with the results.

One thing I find myself doing—and this may partly explain why it takes so long for me to produce new software releases—is sort of obsessing over the tiniest of details in the creation of software.

By tiniest of details i mean: how many pixels should I use to line up the controls in the settings panel? What color and/or texture should the background be? At what imperial distance should I start reporting integers instead of %1.1f floating point numbers? When I report fractional imperial numbers should 1.125 inches be reported as 1″ or 1 1/4″? How should the text fields that control the virtual lens constraints behave? How much input validation should I do when the field is done with editing versus when the panel is dismissed?

But there’s also details in the writing of the code itself. These are details that the user will never see but I write as if they will see it and judge me on it. Am I using typedefs appropriately in dealing internally with distances and aperture values? Do my variable and method names make sense? Should this handy method be generalized and made into its own class?

There are other details which I spend an inordinate amount of time on: does using NSOperation to blur the background incur any performance penalties vs. using a function in the UIView class? What about using GCC vs. Apple’s LLVM 3.0 compiler? To figure these things out, I have to use the performance monitoring tools and take measurements to see what effect these things have on performance.

Since the display of Lens•Lab is updated in realtime, it’s very sensitive to performance. Though most may not notice, there’s a pretty big difference between being able to update the display at 15 fps and 7 fps. If I can gain 3 fps by spending 8 hours tweaking compiler settings or altering how memory is accessed in the blur algorithm I will totally do it.

Why? Why do I obsess over these things? Why do I spend hours trying to make the user experience just a little bit better? Part of it has to do with the platform itself. Apple has set a very high bar with iOS and I want to make sure my app is up to snuff quality-wise. (I think it is and going by the reviews, I think others do as well.)

I think another part of this obsession has to do with trying to find “the ideal.” The perfect (or ideal) Lens•Lab application exists in the Universe, I just have to find it. When I’m engaged in these sorts of activities (obsessing over pixels), I feel like I’m more in tune with the “perfect” Universe. It’s part of my lifelong search for Truth/Beauty/Ideals.

We could go into why I search for these things but I think I’ll leave that for another post. For now, I’ll leave this and get back to work. 🙂


3 thoughts on “Obsessions

  1. Very interesting, Jeff. Having never programmed for a Mac (yet), I’m curious: what language(s) are you working in? Java?

    The quest for perfection, for clarity, for elegance, is an artistic impulse. Many programmers, as you know, are also musicians or practice other arts. And we tend to be a slightly philosophical lot.


    1. Hi Mike!

      The language is called Objective-C. It’s a strict superset of C (although you can also use C++ with a few caveats.)


      I think it’s a very pretty language.

  2. Aha. I was actually wondering if you might have been talking about SmallTalk. How cool.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: