<> Posted on October 29, 2015 in AppsLife
Ever since I started working on WheelMasks I thought that it would be really cool to be able to apply a gamut mask to a photo. I even started working on a prototype and I got to the point that I had an algorithm that produced the results that I liked, but it was so slow that I thought nobody would want to use it. I was also almost ready to release WheelMasks 1.0 and that was distracting me from the main project, so I left it in the fridge.
Some weeks passed and I finally released WheelMasks with a resounding success. Except that no, not really, the app is a commercial disaster. I didn't expect to become rich because it's a really niche app, I didn't even expect to make a living with it, but I hoped that it could at least pay for the iPhone 6 I bought as a development device. Well, so far it has just barely paid for the developer's license, maybe in a couple of years it will pay for the phone?
It's not a total failure because people who use it seem to like it. The half a dozen reviews it has scattered over different countries on the App Store are all five star reviews and have very nice and thoughtful comments. It was even featured in a section on the Chinese App Store, which multiplied the number of downloads by 100 while producing a total number of conversions from China of … zero.
However, the main reason I started the project was to prove to potential employers or customers that I could release a non trivial app on the App Store. In that sense I do consider it a successful project. It has helped me get some interviews and I got pretty far on one of the hiring processes.
It was an american company with a very interesting and visual product. I did several interviews, passed some code tests and finally interviewed with the COO and the head of development. In the end I wasn't hired, but the head of development asked me a question that ignited my next project. He wanted to know why I hadn't used OpenGL for some of the more computing intensive operations and I, somewhat naively, replied with the truth, that I didn't know OpenGL and the performance I achieved seemed adequate to me. This left a bad taste in my mouth, he was right, I should have used OpenGL!
In the back of my mind there was still the gamut masking prototype and I thought that maybe if I implemented it in OpenGL it would become usable. I was also catching on some videos from this year's WWDC and looking at the list I remembered that Apple had this thing called Metal that was supposed to be faster and better than OpenGL.
I started looking into it thinking that since it was new and possibly smaller it might be easier to learn than OpenGL. That turned out not to be the case, the documentation isn't really beginner friendly and presumes a lot of previous knowledge. Thankfully, I found Warren Moore's excellent site Metal By Example, not only did it have a great introduction to Metal, it also had an entry for exactly what I needed: Image Processing in Metal. I quickly took his code as a base to rewrite my gamut masking filter in Metal and after I managed to get it up and running that thing was fast! \m/
That got me quite excited, to the point that I decided to delay a couple of months the search for a job to make a gamut masking filter app. I've learned my lesson though, and instead of making a full featured photo editor I decided to go all startup-ish and make a minimum viable product so that I could test its success as soon as possible. The app I've made is a Photos extension and I've designed it only for the iPhone, if it's successful enough I'll also make it Universal.
I'll consider it successful enough if it covers the hours of development, the cost of the iPhone and allows me to purchase a new Mac (I wouldn't wish on my worst enemy to develop on an early 2009 Mac mini). To justify an iPad version it will have to do all that, plus cover the cost of a newer 64 bit iPad. As always with the App Store, there's an slim chance that it will be successful, but I'm sure that this one has a much wider audience than WheelMasks, so I'm hoping that all this work hasn't been for nothing.
If you want to see some screenshots or sign up to be a beta tester (please, pretty please), just follow the link below:
TL;DR Go here to take a look at my new Photos gamut masking extension!