Mobile App Development
This is a first post of many talking about my experience of bringing IOS into my development stack.
Today i'm going to venture out of my comfort zone, web app development, and into native mobile app development. I have done web dev work for over 15 years now, everything from backend to front-end to responsive mobile web apps but its about time I stop ignoring the 800 pound gorilla in the room.
The most challenging first steps
The toughest part about a web developer moving to mobile is the trying to figure out which stack to use. I have repeatedly had the following discussions with myself.
I should utilize my expertise in web dev and build HTML5 apps, wrap them with PhoneGap/Cordova and be done with it.
Since I know javascript, maybe I can use Titanium and build apps for both IOS and Android?
Man why don't I just invest a strong week and learn IOS or android native development?
You can also search stackoverflow for html5 vs native and read through the healthy discussions.
HTML5 apps with Native Wrappers
I love HTML5 and I think its amazing for web development. Bootstrap along with backbone allows developers like me to look like decent UX designers. BUT, no matter how hard I try I can't really get the look and feel of a native app. Phonegap native wrapper just gives me access to the hardware via API's and ability to distribute my app via the APP or Play Store.
Phonegap has its own issues especially if you are trying to build secure html5 apps using parse backend. Biggest challenge: how do you keep the Parse API key secure when your html5 app is running in a webview? How do you decide that its your web app making the call to your API and not some trouble maker? Then comes the painfully slow performance of webviews vs native.
HTML5 apps with native wrappers are a nice way to get into the mobile app scene but with all the hoops you have to jump through, I decided to avoid this stack.
Appcelarator Titanium
I gave this serious consideration. As a javascript/coffeescript developer this platform solves a big pain-point of having to learn a new language while at the same time I can deploy the same code to IOS and Android. The dream of code once deploy anywhere though possible is not easy. Considerable thought needs to be given to an app if the developer is building it for both platforms at the same time! If you are someone who has built a decently large mobile app in titanium and successfully deployed it to IOS / Android PING ME!
In the end I decided to not go down this path because I was at the mercy of appcelerator and their API. Also having to code all the UI manually just seems awfully painful when compared with Interface builder in XCode.
The Winner : IOS
If you want to build any meaningful native apps you have two choices IOS or Android and you can't go wrong with either. I decided to go with IOS. Why? I'm an apple geek and have no android devices.
Objective C is ugly especially when you compare it to Coffeescript (oh how I love thee!), but once you get over the fact it's just syntax its not so bad. Method, function, message its all the same but wait no its not, but it is....ah just some annoyances of Objective C but I will push through.
XCode and interface builder is the real draw. I can protoype an app in a matter of hours. Yes balsalmiq is good but honestly as a developer you can't go wrong with storyboards and interface builder.
A programmer is a toolbox carrying fellow looking for problems to fix, message me if you want me to help solve a problem