On August 15, 2014, HipStyles will be retired from the App Store.
I have decided to end the development of HipStyles, for good. In practice it was on hold for a long time due to other commitments, but after long last, version 2.0 was released in April 2014. Now it’s time to finally close the curtain on this act.
Since November 2012, HipStyles has tracked the new gear in Hipstamatic, and provided an easy way to find shots, or HipstaPrints, taken with a specific combination of lens, film, and flash. Some iPhoneographers have found it useful, since it provides a function Hipstamatic itself doesn’t.
Here’s a summary why I think HipStyles failed to make a dent in the universe:
- Lack of initial validation of the product idea
- Premium pricing probably alienated many potential customers
- The execution failed by some accounts: too many or wrong features, with bugs
HipStyles was created by a two-man team: Kimmo came up with the original idea, and I did the actual programming. We were both involved in designing and promoting the product, Kimmo with his knowledge of iPhoneography and the surrounding communities, and me with the technical know-how.
What follows are some thoughts about the development process, what could have been done differently, and what worked. The headings are names of pop/rock songs; see if you can match them with the artists who recorded them.
Difficult To Cure
HipStyles is completely based on the photo metadata saved by Hipstamatic. When you take a picture with Hipstamatic, it is saved both internally with the application, and into your iPhone’s camera roll. Hipstamatic writes the information about the lens, film and flash into the photo metadata. In theory it seemed easy enough to go through the photos in the Camera Roll, look for the right metadata, and present the results to the user. In practice, it was anything but simple.
First of all, the Hipstamatic gear metadata is not in a strictly machine-readable format. Instead, it is localized into all the languages that Hipstamatic is available in, even though this kind of data is not intended to be viewed directly by the user. It would have been straightforward to save the information in a language-independent way, but instead it now appears as “Wonder Lens, W40 Film, No Flash” in English, and “Objectif Wonder, Film W40, Sans Flash” in French, and so on, ad nauseam. Add to that the fact that sometimes even the punctuation is localized, and you start to get the picture (pun not intended). Even after several optimizations, it still takes about 500 lines of Objective-C just to parse the relevant information.
Second, it takes a surprisingly large amount of time (in CPU terms) to always go through the photos and look for the metadata, due to the way Apple has made the Asset Library APIs. It is possible to make this faster using blocks and operation queues, but it quickly gets messy. As if this wasn’t enough, the first generation of HipStyles actually tried to both read the user photos and download the latest matching photos from Instagram, at the same time. It’s a wonder it worked even as well as it did. Most of the crashes in initial versions were due to surprises in the metadata.
Hipstamatic itself has been something of a moving target, with HipstaPaks coming and going, and Oggl appearing to mix things up a bit. Thankfully, there were no actual breaking changes in Hipstamatic during the development of HipStyles. We included the gear images in HipStyles, even though we never got an answer from Hipstamatic when we asked for permission to do so. We figured the existence of HipStyles would be good exposure for Hipstamatic — after all, HipStyles wouldn’t even exist without Hipstamatic.
As Good As New
The 2.0 version of HipStyles dropped the Instagram search feature, since most users who took the time to give feedback told use they didn’t want it — they just wanted to search their own photos. This is something we should have validated at the beginning. It would have saved a lot of trouble, and we could have focused on searching the user’s library from the start.
We also tried to introduce too many features at the same time: favorites, sharing photos on social media, generating random combos, and other such things that make you lose your focus.
A genuine technical advance in version 2.0 was the use of an internal SQLite database to store the photo metadata. This allowed us to go through the photos only once and index them, which made the search lightning fast. Unfortunately, there was also the issue of updating the index when photos were added or deleted while HipStyles was not active. And once again, things quickly got really messy. Version 2.0 handles this up to a point, but it’s not as good as it could be.
In version 2.0 the restriction to search only the HipstaPrints album was lifted, as it tended to confuse users. However, there were also many users who couldn’t understand that HipStyles was not able to access the photos saved internally by Hipstamatic, due to the way app sandboxing works in iOS.
A networked gear back-end was also planned for version 2.0, but I never got around to it. All the gear information was always hard-coded into HipStyles, so when new gear appeared, I had to create an update and go through the Apple review process. Typically it didn’t matter that much, but as the HipStyles updates got less frequent, and Hipstamatic started issuing new gear monthly, it became difficult to keep up. If the gear list was on the network, updates would not have been needed for new HipstaPaks.
That’s The Way (I Like It)
The development of HipStyles was well under way when I discovered The Lean Startup movement. Having made many of the mistakes that Eric Ries and Ash Maurya warn about, with other authors like Laura Klein and Cindy Alvarez expanding on the topic, it was easy to relate to the ideas of Customer Development and the Minimum Viable Product (MVP). However, because we hadn’t done proper validation of the idea, it was easy to lie to ourselves and say that HipStyles 1.0 was the MVP, and everything in it was strictly necessary. Only that wasn’t the case: the only thing our version 1.0 really needed was the way to find the user’s own Hipstamatic photos. Everything else was secondary, and could have been introduced gradually.
We also should have considered our revenue model more carefully in the context of a stripped-down MVP. We might not have charged initially at all, but instead given away the core functions for free, with additional modules as in-app purchases. In hindsight this seems like it would have been a good idea, especially when almost half of the people who downloaded HipStyles took advantage when we had a free day in 2013. There is a big difference between any price and no price at all (read Free by Chris Anderson if you want a solid introduction to the landscape of Free).
The Language of Love
The main development language of HipStyles was English, but we localized HipStyles into French and Japanese, in addition to our native Finnish. The professional translators at OneSky did a capable job for a very reasonable fee.
To our delight, we found out that especially the Japanese localization brought many new users for HipStyles. So, どうもありがとうございます to our Japanese friends, and merci beaucoup to all the French-speaking HipStyles users. Kiitos!
In the case of HipStyles, localization was all about the user interface texts. The app still worked in English for all other languages your phone was set to, and the photo matching engine obviously worked for all the languages Hipstamatic itself was localized into (deftly going around a few bugs, mind you).
Learning To Fly
I didn’t keep track of the number of hours I spent programming and promoting HipStyles, but it must have four digits. The revenue we got from the app is just a tiny fraction of the actual development costs. However, it has been a huge learning experience. I can say with confidence that because of HipStyles I’m a far better iOS programmer now than I was when this project was started.
I have also learned a lot more about the app business, and mobile business development in general. Many of these learnings have been acquired the hard way, but those lessons usually stick, because you really learn to avoid those bad situations like the plague, and keep yourself or others from making the same mistakes again.
Even though developing HipStyles has been very frustrating at times, it has also been quite rewarding. It only takes a few encouraging words from kind people who know their stuff to make you swell with pride for what you’ve created. And vice versa, it only takes a few inconsiderate words from an arrogant person to feel like you’ve wasted your time. Go figure.
Thank You Friends
For all of those in the iPhoneography community who supported HipStyles, wrote about it, endured the bugs in the betas, and we’re enthusiastic about the idea, we would like to sincerely thank you. Special thanks go to Nicky Sanford of ThePhotoMomma.com, Eric Rozen of Hipstography.com, Larry Z., Monica R., @CristianStef, @neung_blind, @theresecherton, @kimartinodiaz for help and exposure. Also thanks to everyone else not named here, but who have followed HipStylesApp on Instagram, Facebook and Twitter. For those who didn’t like the idea or the app, we get it, and it’s OK—you just could have been a little nicer about it.
The social media accounts associated with HipStyles will most likely stay in place, although don’t expect much activity there. You can still download HipStyles 2.0 from the App Store until August 15, 2014 if you want to, but there will be no more updates. Should Hipstamatic be interested in incorporating this functionality into their app, I can provide technical consultancy on how the HipStyles photo matcher works. Just contact me at any address you can find on this site.
So thank you, stay safe, and keep snapping those photos.
Oh, and those artists—in order of appearance, they are: Rainbow, ABBA, KC and the Sunshine Band, Everything But the Girl, Tom Petty & The Heartbreakers, Big Star.
EDIT 2014-07-22: Corrected typos, added the localization section and some other tidbits.