Let's build an iOS app

tech ios app mobile software-development
Originally published on othernotherone.com

Ok. It’s time for Creatabu to launch an iOS app and we’re trying to figure out the best path considering we’re a team of two and only have one developer, yours truly, who is not familiar with Objective-C the language you use to build native iOS apps.

So…we’re in a pickle…and this isn’t the first time:

^ We’re like, really into pickles. Our 2014 Burning Man Camp – What Would You Do For A Pickle – shout out to the pickles!

We embarked on buying up a few classes on Udemy and a couple of books to teach ourselves Objective-C, after all, that’s how we did it to learn Rails to build the current version of Creatabu.

Stepping back for a moment, some context on why we chose Rails for the dot com. A few years back, we were working at Live Nation as a product manager and our boss Ethan Kaplan was spewing out a menagerie of words we had never heard before…like Heroku, Ember, CICD, TDD, gems, rake, etc… Since we wanted to make an impression, we made sure we noted every word and then read each. We uncovered an entirely new universe words stemming from those few. The main thing we took away was that Rails made it easy to build websites, which was important considering we were going to launch an entirely new site for Live Nation, and that Ruby was built to be a fun language to code, as exemplified by a quote from Ruby’s creator:

Often people, especially computer engineers, focus on the machines. They think, “By doing this, the machine will run fast. By doing this, the machine will run more effectively. By doing this, the machine will something something something.” They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves. – Yukihiro “Matz” Matsumoto, creator of Ruby

Ruby is awesome and fun…Rails makes building sites easy…so we dug in and learned it well.

Back to today…a year after building creatabu…and it’s time to look at learning another language. We started taking the classes for Objective-C and let us tell you that the magic and fun disappeared. Of course partly because learning something new is hard…and liking the thing you know is easy, but also because, as we researched, it’s actually pretty difficult. Enough so that Apple released Swift to help alleviate some of the well-documented developer pain.

We asked a number of developers (and then some) friends – Joe & Bennett & Bill & Mark – what gives? Is it really that hard? Was it just because our classes weren’t good? They were kind enough to reply and point us in a couple of directions:

  1. learn Swift, it is an improvement over Objective-C
  2. this video (and other Udacity resources)
  3. this Code School path
  4. stop being such a wimp (our interpretation).

We continued to look around and read for a solid 8 hours…especially looking for people that took the same path, Rails –> Obj-C/Swift. We found a lot of people griping similarly about hitting a wall with iOS dev…at least we knew we wasn’t alone. Eventually we stumbled across RubyMotion – a framework to build native iOS apps using Ruby.

Wait! Say that again? You can build native iOS apps using Ruby!!? No way, too good to be true. So we read for another 8 hours…looking for tears in this silver lining.

Turns out that it’s a pretty solid silver lining – at least from our reading. You get access to all of the iOS SDKs and you keep building in your current workflow (Terminal + Sublime Text in our case, instead of Xcode). The best way to look at RubyMotion is as a transitional framework – a way to use what you know for the hard parts and learn the easy parts of what you don’t know, first. Then, as you transition, you eventually dig in and learn the hard bits that you don’t know. The perfect transition tool.

This is just the beginning for us…looks like we’ve made the decision to build our first iOS app in RubyMotion (pending a book to read and some test apps to build this weekend). We will continue to post as we go through the process so you can follow along.

Here are some of the links we found most useful in evaluating this decision (best to read in the following order):

http://katanacode.com/blog/posts/12-a-review-of-rubymotion-in-2015 - A Review of RubyMotion in 2015 – General background https://signalvnoise.com/posts/3432-why-i-loved-building-basecamp-for-iphone-in-rubymotion - Why we loved building Basecamp for iPhone in RubyMotion – Why Basecamp app was built using RubyMotion https://signalvnoise.com/posts/3743 - Hybrid sweet spot: Native navigation, web content – A bit on how Basecamp app was built using RubyMotion https://signalvnoise.com/posts/3807 - Shipping Basecamp for iOS 2.0 – Why Basecamp app v2 was built without RubyMotion

UPDATE: This video https://www.youtube.com/watch?v=ZV5zCXHIqNY, from the creator of RubyMotion, Laruent Sansonetti: RedDotRuby 2015 - RubyMotion: Cross-Platform Mobile Development the Right Way