Carousel: One Year Later

Well, that was fast.

Roughly one year ago Mobelux launched Carousel. It was a fairly simple idea. Make a straight-forward, simple way to view Instagram on the desktop throughout the day. This post is a retrospective of the process involved in shipping that app.

Here’s a very early (and rough) look at the original concept I threw together on a lazy Sunday in March, 2011.

While hideously simple, this first comp contained all the major elements of what Carousel would become. A single scroll view that held photos. Photos would present basic information and controls to take action on them. A toolbar for secondary actions and scope switching. It was very important that the design didn’t look and feel like an email client with Instagram photos in it. Packing the app with mediocre features and extraneous UI was unacceptable. I showed the first comp to Eddie a few days later and we had a more serious conversation about taking the design to the next phase. At first we were a little hesitant. Deciding to make a new app is not a simple decision for a young company. Risk and cost are serious factors to consider. Not only that, Mobelux had never shipped a Mac app before. It took a little time to come to terms with the complexities of a menu, keyboard commands and dealing with a dynamically resizable window. Ultimately we decided that it was worth a shot.

As with all software ideas it quickly ballooned in scope. What about saving photos? Comment moderation? The biggest drawback we had to deal with was that you couldn’t post a photo outside of the official Instagram app. What can we do well on the desktop that can’t be done elegantly in the official iPhone app? We thought hard about the things that would make a desktop app successful and came up with a feature list. Fast scrolling. Commenting and moderation. Liking. Viewing larger. Searching. Saving. It didn’t take long until we had to scale back all those features to a solid 1.0 and tuck the other ideas away for future updates.

Once we’d nailed down what it would do, we started talking about how the app would look and feel. Something about Instagram filters and the photos that resulted from them had always conjured up images of a Wes Anderson movie. So we went with it. It was a bit risky settling on such whimsy as the inspiration for the visual design on a Mac app. We knew that purists may take issue with the direction. But this wasn’t Mail or iTunes. Why not have a little fun? Eddie worked up some comps of what it might look like if we brought the textures and palette of Royal Tenenbaums’ home to the main window. We settled on the name Instaview for the app and got to work.

Not quite there, but it seemed to be moving in the right direction. Looking back I can’t believe we even entertained that giant label at the top. After a few design sessions we honed it to something more focused and somewhat traditional.

One of our favorite touches was that the frames matched the filter that was used. This was very important early on when photo frames weren’t optional on Instagram. It integrated each photo into the scrollview and made them feel coherent. Each photo frame includes a fair amount of distressing, lending to the aged aesthetic that the filters suggest.

With a design we were quickly becoming happy with it was time to scope the project and get to work building it. Initial discussions revolved around building a framework mimicking iOS navigation controller and UITableView. Shortly after we had that conversation, Iconfactory announced Chameleon, a clean-room implementation of UIKit. The timing was, needless to say, impeccable. Jeremy immediately got to work seeing how viable it was to use Chameleon as the core of Instaview. It wasn’t long before we had a working model with push-pop navigation, asynchronous fetching and popover support. It was time to wrap the Instagram API and start using real data.

In just under two months Instaview was almost ready to ship. As I started setting up all the accounts involved in branding it became apparent that using “insta” or “gram” in the name was going to be an issue. While it instantly tied our app to the Instagram bandwagon it didn’t feel unique. What if Instagram took issue with all the insta-infringers? What icon were we going to come up with that wasn’t a camera or a polaroid? Weren’t we getting sick of seeing all the tan and brown, rainbow-striped ripoffs out there? Furthermore, what if Instagram was acquired and shuttered? Wouldn’t we want to brand so that we could potentially switch services if there was a catastrophe? There had to be a better identity we could come up with.

I was driving around town with Emily and started explaining the issues with the name. I asked if she could think of anything that might work with the visual theme and the idea of artificially aged photos. She told me that in the pathology lab they routinely looked at slides on a dusty old Kodak projector from the late 70’s. It was called a Carousel. The name clicked. It was perfect. I immediately got to work on an icon and came up with a toyed-up version of a Carousel projector (we’ll save that process for a different post.)

Carousel shipped on May 11th, 2011. It’s been a ton of fun to work on over the past year. A few months ago we shipped an update that brought us up to date on all the features we set out to ship last March, including support for five languages. We’re very happy with where the app is. But don’t worry, we’re not resting on our laurels.

Now it’s time to get to work on Carousel 2.

  1. do-nothing reblogged this from jeffrock
  2. mobelux reblogged this from jeffrock and added:
    Jeff reflects on 1 year with Carousel. Now we look forward!
  3. hugel reblogged this from jeffrock and added:
    Although I was a late adopter of Instagram I was a fan of Carousel before I joined Mobelux. Since I’ve been here I’ve...
  4. corrugatedbox reblogged this from jeffrock and added:
    Mobelux’s Jeff Rock recounts the team effort behind their top-selling Mac app for Instagram, Carousel.
  5. ianbroyles said: enjoying it!
  6. jeffrock posted this