I’ve been spending time recently with RubyMotion. Since I’ve been working in Ruby for the last several years I thought I’d give the Ruby flavored iPhone development approach a go. At this point I’ve only spent a couple days hacking around but thus far I’ve enjoyed the process.
To guide my “playtime” with RubyMotion I decided to take a look at the ShowKit SDK and try to port one of their examples to RubyMotion. The most obvious candidate was their Conference demo, which allows two ShowKit users to video conference. I downloaded the XCode demo code from ShowKit’s github repo and pretty quickly worked my way through migrating the code to RubyMotion. While their are some very minor differences from Ruby to support the Objective-C heritage of the runtime, I felt right at home. Within a couple hours I had a mostly functional app running. As with any experiment it was fun to see it up and running on iOS devices, and being able to video conference with my wife and daughter in the next room was really….well…pointless but fun.
While this small experiment didn’t require much work I did use BubbleWrap and motion-layout for the project. After exploring the BubbleWrap API I can see lots of useful bits that I’m sure come in handy when building “real” apps. The first version of my UI didn’t handle device rotation but within a few hours of playing with motion-layout, and eventually getting my head around some of the more obscure, less documented features of the ASCII based layout language I had a UI that responded appropriately to both device orientations. Overall my UI is pretty ugly but it is functional. I’d like to spend some time trying to make a nice stylized UI so I may do that with this demo project, or perhaps start another project and explore that part of iOS development (with RubyMotion). I didn’t mess with interface builder at all for this as I’ve heard from other iOS devs that they tend to self draw their UI’s and I’ve always done the same so figured I’d go that route, especially given the super simple UI.
All and all my RubyMotion experience was positive. I need to spend some time on a greenfield app rather then a port, and do something a little more involved to get a true feel for the toolchain but I can see why folks enjoy working with RubyMotion. I do find myself asking myself (yes I like to talk to myself often) whether taking the plunge into Objective-C and XCode would be a better use of my time and I’m still a bit torn. I’ve also used Xamarin in the past and their cross platform story combined with a language I like (C#) make me feel like I need to purchase the Paradox of Choice.
On the ShowKit front, I found the SDK to work as advertised. My app was more or less a line by line port of the Objective-C version of their demo. While I didn’t spend any time on the more difficult elements of building a real app with ShowKit I did find the documentation sufficient and the SDK to work as I expected. I have a few ideas for how I might leverage it in real projects ™ in the future so as those ideas become more concrete I’ll look to share more experiences.
Github Repo: https://github.com/eichert12/MotionConference