Curtis Herbert is freelance developer living in Collegeville, PA. He runs a technical consulting company, Consumed by Code, which helps clients with web and mobile projects. He’s launching his own iOS app, called Slopes, this fall.
Welcome, Curtis! Allow me to thank you for being the very first developer interview on PhillyCocoa.org.
First one? No pressure, right?
According to Linkedin, you use to work for Lockheed Martin before going out on your own. What spurred you to leave such a cushy corporate job for the scary world of consulting?
I think it was realizing that even when I was coding full-time there I’d still come home and keep working on my own projects. I had kept a pretty regular set of freelance clients since college, too. I always seemed had enough work to keep me busy coding all the time.
Eventually I realized I needed some free time. Clearly the day-job had to go.
So for the record, what is Slopes and what inspired you to make this app?
Slopes is an iPhone app for skiers and snowboarders that allows them to record their days on the mountains. It’s similar in concept to the apps runners use: Nike+, Runkeeper, and Strava.
I decided to make the app last winter because I really enjoyed how those apps enhanced my running experience. I wanted to see something awesome like them for when I was on the mountain snowboarding. My friends and I always hit Perkins after our weekly trips to Blue Mountain and app like that would give us the data to back up our bragging.
When did you start Slopes?
I started toying with the idea in February/March ’13. In late April I attended Philly Startup Weekend (it’s a blast, highly recommended!). I pitched the idea for Slopes there, and after the weekend working on it with an awesome team, it won first place. That lit a fire under by butt to make sure I shipped the thing. I’d say that’s when the efforts really started.
What kind of technical challenges did you come across when building this app?
I think one of the biggest challenges was how I wanted to visualize the data. I wanted to show a 3D graph of a run down the mountain because it was a really unique way to show off their run and speed. Of course, my developer-self hated my designer-self for this idea.
I didn’t want to use a full 3D library like Cocoa 3D because they were a bit too heavy for what I needed, so I had to learn OpenGL. I quickly learned nothing is easy in OpenGL. It took two weeks to get those graphs looking right, but it was worth it in the end.
Another challenge iOS 7 brought was layering and ensuring key content wasn’t hidden, especially with MapKit. There are methods to get a map to zoom to fit all the overlays/annotations within the maps frame, but if you have a partially transparent second view covering the bottom half of the map, you’ll have stuff hidden. I had to write some fun custom code to account for overlaying views like that. Surprised (well, also kinda not surprised) we don’t have something from Apple for that.
I’ve noticed you are making this app is be iOS7 exclusive. What drove this decision?
I was most of the way through the design phase when iOS 7 was shown off at WWDC. I recall I went through the five stages of grief very quickly that day (I think I relapsed into denial for a day after, though).
Redesigning for iOS 7 was a bummer, but I realized my core ideas lined up pretty well with iOS 7’s design. It was mainly a matter of trimming back the chrome and adopting new iOS 7 ideas like transparency and layering. I quickly became very happy with the shift in direction.
Once I realized I’d be going all-in with an iOS 7 design the idea of dropping support for 6 came easy. I didn’t have existing customers. It’s a decent amount of work to support both, especially if you want to keep a custom look under 6. I realize some potential users might be stuck on 6 but I have a feeling it’ll be the Netscape of iOS versions pretty quickly.
What iOS7 specific technology are you incorporating in Slopes?
Autolayout/Textkit are handy, especially now that autolayout isn’t as painful to use. I’m trying to be good about adopting those two since it’s pretty clear from Apple that’s the way forward. They should really help with my internationalization efforts.
There are a few new things in the MapKit API I’m using (the camera support is key for one of my v1.1 features).
I’m a big fan of the view controller transition customization, and I’m using that a bit. I think we’re going to see a lot of cool things done with that.
Consumed by Code is a service provider for clients needing mobile or web consultation. Building Slopes must have competed greatly with your time. How are you balancing your time between client work and app development? I know this can be an interesting juggling act for a lot of indie developers.
During the early phases for Slopes I kept most of the work to my free time, sometimes dedicating one day a week to it. After Startup Weekend I made the decision to go all-in. Startup Weekend really helped me with a ton of market validation so I didn’t feel bad focusing on the app instead of clients.
I kept a minimal amount of client work going, enough to avoid hemorrhaging money, but I spent most of my time focusing on Slopes for the last few months. I’m ramping up a bit on client work after launch, though. Should go back to being an interesting juggle of time.
When will you be releasing Slopes?
Assuming I get approved without issue, launch day of iOS 7. I have a friendly beer-bet with Mike that’ll be Sept 20th. He didn’t shake on it, though.
Where can people go to know more about Slopes?
I just launched the site for the app at http://getslopes.com. I’ll be updating it with more info as we get closer to launch. I’d also point people to the newsletter there if they’re interested. I hope to use that to keep people in the loop and get feedback as I move forward.
Thank you for your time and we look forward to seeing your app soon.
Thanks a lot, Kut!