The 500px Uploader for OS X was born like many of the best small tools are: boredom. Not boredom per se, but a lack of something else to do. I had finished what work I had to do on the iPad app for the immediate future and needed something else to do. Since all of the designers were busy redesigning the entire site with Flow, the Mac Uploader was completely my creation.
The first mockup I completed, in OmniGraffle, looked something like the following:
It’s fairly obvious that a developer made these - they are no where near the calibre of quality you expect from 500px. It was, however, enough to get me started until a designer was available to make it pretty.
I started working on the back end and reused a lot of the code from our iPad app. The iPad app doesn’t allow photo uploads, but I used my experience writing storygram to upload JPEGs. Since this is my first ever Mac app, and it’s pretty unique (drag-and-drop menu bar app), there were a lot of challenges just learning the system. Mac apps are a lot more different from iOS apps that I had anticipated.
Nevertheless, the app was completely functional in about a week.
This doesn’t look much better than the mockup, but it worked: you could log in and upload photos. At this point, Moeed was finally free to design a better interface, and we went through a few iterations. Our next working version looked like this:
Designing an app that sits in the menu presents some unique challenges. For instance, since you don’t have an application icon in the dock and don’t have a window with the standard “close” control, how do users quit your app? It was this problem in particular that forced us to revisit this design. Moeed, Oleg, Evgeny, and I finally arrived at what we considered to be the best user experience we could design.
We had to compromise along the way to adhere to Apple’s Mac App Store guidelines. For example, we had to remove any buttons to our “Upgrade” page, since those pages don’t use Apple’s In-App Purchase framework.
I leveraged some open source software along the way; Philippe Casgrain’s PhFacebook library was a spectacualar help in getting the “Log in wth Facebook” part of the app to work.
It was my first ever Mac app, but coming from an iOS background, it was fairly easy to adjust. Much of the code for interacting with 500px is shared with the iPad app. The biggest challenge was adjusting from UIKit to AppKit for the user interface elements of the app. When Apple reimagined OS X on the iPhone in 2007, they built the user interface elements all from scratch with 20 years of experience. Coming to OS X from iOS meant having to acquire two decade’s worth of cruft that Apple never introduced to iOS.
There was also the issue of the Mac App Store approval process, which is different enough from the iOS approval process to cause us some serious problems. Our app was rejected by Apple no fewer than four times. Ultimately it was approved and is now free to be downloaded and enjoyed by all.