Making Apps That Don't Suck

2011 ESRI Developer Summit presentation by Forge Apps co-founder, Kirk van Gorkom

Dr. [bracket love]

Or, Why I Learned To Stop Using PhoneGap And Love Objective C.

When I got started writing apps for iPhone OS in 2008 I was on a huge JavaScript kick (which hasn’t really subsided - JavaScript is amazing) and I had never learned Obj-C. I had just purchased my first iPhone OS device, and 2nd gen iPod Touch, and I wanted to write an app. I didn’t want to wait to have it running, either.

I looked around and couldn’t find any solutions for writing apps in anything but Obj-C, since Apple had limited all the dev tools (seems quite obvious now). Then it occurred to me that, since I write web apps all day long, why not use those same skills to write an iPhone OS app? The browser seemed more than capable, so why not give it a try?

I searched around and found PhoneGap, a project that aimed to expose some of the native API calls to JS programs via UIWebViews. It seemed cool enough so I gave it a try. It worked great, and the default Xcode project got me moving quickly without any understanding of ObjC or Cocoa APIs.

Everything was great, and I got some apps running quickly, but then some problems started to crop up. My app wasn’t running as fast as I wanted, especially on first gen iPhones. Scrolling could be sketchy, and because of the limitations of javascript scrolling in UIWebViews and some fixed positioning issues, I was limited in things like how many stocks the app could have since I couldn’t have a scrolling list work. I kept at it and plugged away, ultimately writing an entire framework to make writing Native iPhone-esque apps using Javascript (this was before jqtouch was out).

Then some problems arose.

PhoneGap apps started getting rejected from the App Store, as massive problem when you want to provide a bugfix for your users and have no way to get it to them.

Also, more and more of my time was spent trying to emulate iPhone OS native controls and behavior, and less and less time was spent writing actual application code.

It was all going backwards. Didn’t I choose JavaScript because I wanted to write apps faster?

Then I found the Standford iPhone course. I watched all the courses online and started playing around, writing a few throw-away apps for myself to get used to it.

Then I got busy and took a break from iPhone apps for a while, focusing on some other work.

Finally, earlier this year I picked up the XCode again and got to work writing Inside Trader 3 in native code, from the ground up. I learned about Cocoa, Core Data, and all the ins and outs of Objective-C. After banging my head against the wall for a while, I finally started to grok it, and once I did, it was very smooth sailing.

No longer do I have to worry about native controls, native behavior, or device dimensions. Don’t have to worry about fixed positioning, rebuilding scrolling, or 1px css madness. I can quit worrying about the framework and get back to writing actual application code. PhoneGap still has its place. Not every app needs to be native, especially when you’re just trying to wrap an existing web application. Also, PhoneGap has come a long way since I used it.

That said, it’s worth the time to learn Objective-C if you’re going to be writing apps for iPhone OS. The native APIs provide ease, future enhancement for free, and they take away the pain of trying to write 2 applications at once - the fake UI and then the application logic on top of that.

You’ve just gotta learn to love the brackets.

Inside Trader 3 is now available in the App Store!

Inside Trader 3 is now available in the App Store!

Version 3 has a ton of great new features:

  • More stocks
  • World-wide leaderboards
  • Achievements
  • Faster gameplay
  • Easier buying and selling
  • Open Feint integration - play against your friends
  • A lot more!

We’ll be giving away promo codes this week, so be sure to follow us on twitter too!

Grab the new version now in the app store!

Why Inside Trader 3 Is A Paid Upgrade

We made the decision to make IT3 a paid upgrade for 2 reasons. One was very pragmatic, the other was more philosophical.

First, IT3 is being published under Forge Apps instead of Jeff’s personal dev account, which means that we don’t have an option to offer the upgrade for free to existing users because it’s being published as a completely new application with a completely new bundle identifier.

Second, IT3 is a substantial upgrade from the IT1/2 platform, and the upgrades that will be coming in 3.1 and 3.2 will continue to set IT3 apart. As a result, we think it’s more than fair to charge for this upgrade. Tons of work went into it, and we have to pay the bills too.

Plus, at the end of the day, if you don’t want to spend $.99 on a game, don’t.

All that said, follow the twitter feed as we’ll be giving away promo codes once the game is out! You can still get your free upgrade after all!

Inside Trader 3 Is Right Around The Corner

After months of development, Inside Trader 3 is being reviewed in the App Store right now!

This new version was the result of a big overhaul. There were a lot of changes that should help move Inside Trader forward and give me a platform to offer better features as we move on. Here are the highlights:

  • I rewrote the app in native Objective-C from the previous PhoneGap/JavaScript solution that versions 1 and 2 were using.
  • New logo/graphics from Jeremy Zeiders of http://wearetrue.com
  • Simplified gameplay - 1 tipster, single scrolling stock list.
  • More stocks, including some new ones
  • Achievements via OpenFeint
  • High Scores via OpenFeint
  • Much faster interface

I’m really excited about the OpenFeint integration. That’s going to give the option for sharing your scores in a much easier way, as well as opening up some possibilities for awesome features like Challenges that I’m hoping to see in 3.1 or 3.2. And OpenFeint should transition smoothly into GameCenter when Apple releases that sometime later this year.

All in all it’s been a long time coming, but now I’m on a platform that should make it a lot easier to do updates more frequently and provide a much nicer user experience. It should be out soon, so follow us on twitter to stay up to date!