Blog on hold: This blog is currently on hold. Please visit blog.keranmckenzie.com for new blog posts

Juxtaposer – chat with developer

Tweet A while back in one of my flickr groups I noticed someone asking for beta testers of a new iPhone app related to images. I love trying out new things (which might explain why I have to rebuild my computer more often than most) and I thought it sounded interesting. I sent off a [...]

A while back in one of my flickr groups I noticed someone asking for beta testers of a new iPhone app related to images. I love trying out new things (which might explain why I have to rebuild my computer more often than most) and I thought it sounded interesting.

I sent off a note and Hendrik the developer got back to me pretty quickly letting me know how to become a beta tester. 

Juxtaposer

Juxtaposer

I had a play with the app and liked it so much that I bought it once it went into the app store. The app is a great fun app allowing you to merge two photos to make some funky new image (see the pic above).  The app is really easy to use and has a full manual for those needing extra help.

I wanted to know a little more about what goes into developing an iPhone app and so I fired off some questions to Hendrik. Hendrik is a PHD student in Canada who built Juxtaposer in his spare time.

Interview with Hendrik – developer of Juxtaposer

What was your inspiration to start developing an iPhone app?

There were several factors that contributed to this. Lately I have been getting more and more fascinated by well designed user interfaces. I switched to the Mac a couple years ago, coming from a mix of Linux and Windows. And I noticed how developers on the Mac platform seemed to put a lot more thought into the design of their user interfaces. And Apple itself of course is famous for this as well. As a user this seemed like a minor thing at first, but after a while I noticed what a huge difference the better interfaces made. So I was intrigued by the challenge of developing something with a really intuitive user interface. Most programmers I know hate coding the UI and prefer to focus on the technical challenges. If a program needs a user interface, they’ll go for the most utilitarian solution. Which explains the user interfaces of a lot (not all) open source software.

The iPhone was fascinating in this respect because it has the multi-touch screen, an accelerometer but neither keyboard nor mouse. So it demands completely different types of user interfaces. Which is an interesting challenge but also a great opportunity, because these new sensors allow for much more intuitive interfaces if put to good use.

Another motivation for developing for the iPhone was the App Store that Apple set up for selling applications. When it was first introduced I was immediately convinced that it presented an amazing opportunity for independent developers. Apple makes it so incredibly easy for users to buy applications and for developers to sell them. Apple deals with all aspects of the distribution. As a developer all you have to do is pay 99$, develop your program and hand it to Apple (and pray that they accept it, although I wasn’t too worried about that).

I have thought about developing shareware programs several times before. But it just didn’t seem to be worth the huge hassle. I believe the App Store truly is a game changer for independent developers. Of course it is not perfect. But by the time Juxtaposer was published some of the more serious flaws had already been corrected. For example the ability to write reviews for apps you never tried. Now people can only write reviews for applications they actually bought, which is a huge improvement for developers as it eliminates of all the “This should be free!” reviews.

Of course, I also needed an idea for an application. Being a hobby photographer myself, I was interested in developing a simple photo manipulation program. And I realized that the touch screen could allow users to interact with photos in a way that would feel very physical and be super intuitive. So I started working on that.

Did you develop on Mac or Windows & had you done any OSX development before?

If you want to develop for the iPhone, you have to do it on the Mac. I heard that quite a few developers are actually making the switch to the Mac for this reason. As I mentioned before, I had already switched a while ago. While I have been developing on the Mac, I was not familiar with actual OSX development (i.e. Cocoa). I just wrote Python scripts or little C++ command line programs for my academic research. So I had to learn both Objective-C and Cocoa Touch. But once you have programmed for a while, learning a new language and API are really not that big a deal. In fact I really enjoyed it.

Did it take you a long time to develop the app?

I did not keep track of how many hours I spend on this project, but it was quite a few. What is interesting is that most of this time went into fairly minor details rather than the core functionality. For example the little animations when the work space rotates after you rotate the iPhone took me a really long time to get right.

A lot of time also went into creating the icons, the documentation and the dialogs in the application. At some point close to the end I got pretty frustrated by this. The application was basically done. Everything worked the way it should, but I still had this really long list of tasks that I needed to get through before being ready for publishing. I remember reading somewhere that in commercial software development the last 20% take 80% of the development time. That feels about right.

What process did you go through? Did you do any paper prototyping, storyboards etc, or did you go straight to code?

I actually started by coding up a really simple prototype. I had an idea for how to implement the interactive erasing of parts of an image in an efficient way. But I had no idea whether it would actually work and whether it would be fast enough. So I hacked together a quick implementation and tried it on the iPod touch which I had bought for this project. I was super happy when I did actually get it to work with acceptable performance.
After this initial feasibility test I switched to paper prototyping and went through many iterations on paper and in my head to come up with the different modes of interaction and the basic user interface. My final paper prototypes were fairly close to the user interface that is in Juxtaposer today.

However there definitely was some trial and error as well, where I implemented a feature a certain way first and then realized during testing that it just didn’t feel right. For example, I spend several days implementing a nice brush settings screen for setting the brush’s transparency and softness using sliders. But when using it I realized that there were only really 2 settings for both attributes that were actually useful. So I got rid of this screen and implemented the 4 way brush selector that is in the application now and is much faster and easier to use.

Did you develop by yourself or was this a team effort?

The development was a one man project. I also created all the icons and the splash screen. Which was more challenging than you’d think because I am not an artist and had to learn my way around Photoshop.

I did however have a good friend of mine help me formulate the text both in the application and documentation as well as in the iTunes App Store. Since I am not a native speaker this was extremely helpful.

Were there good resources to help you get your head around the iPhone SDK?

Well, while I was working on Juxtaposer, the NDA was still in effect. To get access to the SDK you had to agree to this NDA (non disclosure agreement), meaning that you were not allowed to talk to anybody about the SDK. Luckily this NDA has finally been lifted now so that developers are allowed to help each other. While I did not risk breaching the NDA, many others did and I found a few answers to problems I ran into on public discussion forums.

Were Apple supportive? Do they give you any help as a developer, or do they simply leave you alone until you submit your app?

For the US$99 you pay as an iPhone developer you get 2 support incidents. I saved mine for real roadblocks, but since I did not hit any, I never actually used them. In general, Apple seems to be very hands off. The Apple engineers do not seem to participate in any public forums, even now that the NDA is gone. So you are basically on your own except for those 2 support incidence. And I have no idea how helpful those are in practice.

However the documentation and code samples provided in the SDK are actually quite good. And all the necessary steps for getting an application into the App Store are well documented too.

How exciting is it to see your app in the iPhone store?

Very!! It is so cool to know that people all over the world are using my application now. And based on the reviews so far they seem to like it a lot.

What’s your favourite part of the Juxtaposer app?

I think that would be zooming and panning using two finger gestures. Because it is so smooth and responsive that it feels just completely natural.

Early on I made the design decision to fix the brush size to the size of an average finger tip. Instead of letting users constantly change the the brush size I chose to let them zoom in and out easily to work on details or large scale areas. I am very happy with this decision.

What’s next? Do you have more apps planned?

Next up is finishing my PhD. I have no plans for any other applications currently. However I will certainly keep working on Juxtaposer a bit on the side and hopefully add a few more features in future updates.

Any tips, great tutorials or websites, for anyone else who wants to explore developing for the iPhone?

I highly recommend putting a lot of thought into the user interface of whatever application you think about creating. Coming up with an easy to use and intuitive UI is not at all easy, but I believe on a device such as the iPhone it is even more important than for a desktop application.

I very much enjoyed developing with the iPhone SDK, so I certainly encourage other developers to explore it as well.

To get started with Objective-C and Cocoa I read through Apple’s Objective C 2.0 guide and bought the book “Cocoa Programming for Mac OSX“ which I highly recommend.

Now that the NDA has been lifted there will be books specifically on iPhone development, which of course might be an even better choice.

The following two discussion forums are very active and can be useful for finding answers to specific problems with the iPhone SDK:

Summary

Huge thanks to Hendrik for taking the time to give such great answers to these questions. It sounds like a lot of time, effort and thought needs to go into these apps.

I encourage you to check out Juxtaposer on the iTunes App Store & help Hendrik pay for his PHD – or visit his Juxtaposer.info site.

Support Studiowhiz.com