RubyMotion #inspect 2014 Wrap-Up
This year’s RubyMotion conference was immediately followed up with WWDC and then Google I/O, so we’ve hardly had a chance to sit back and reflect on all the exciting news that emerged from #inspect!
The Fort Mason Center
As much as we enjoyed cramming 150+ people into a tiny room last year, we decided that maybe a little more leg room wouldn’t go unappreciated:
This year’s conference was at the historic Fort Mason Center, near Fisherman’s Wharf. If you need to plan an event in San Francisco, put this one on your radar. The view of the marina and Golden Gate Bridge was a very pleasant back drop.
Food and Libations
This year’s catering was amazing, in keeping with the traditions set at #inspect 2013. We should all take a moment to thank Todd Werth and Ken Miller from InfiniteRed for organizing the catering, which was provided by Local Mission Market.
For the after party we invited Rogue Brewery to share five of their popular and most delicious beers, and no one (yes, even Laurent) left disappointed. Turns out that tasty food and tasty beer go a long way towards a successful conference!
Knowledge was Dropped
It’s fun to play with new gems, but you won’t get far if you don’t know what the operating system is capable of. This years’ speakers had a ton of information to share with us.
Mark Rickert has been sharing great marketing tips in the RubyMotion Dispatch. He had even more advice for us, including some of his own successes for context. Wearing the marketing hat doesn’t need to be painful, and it’s essential for the success of your apps. (slides, video)
We heard about the trials and tribulations of CoreData from Lori Olson. She needed to import tens of thousands of records into her app, which it turns out is no small task! Core Data can handle it, but handling Core Data is another matter. (slides, video)
To help wrangle that behemoth of a library, Ken Miller created CoreDataQuery and ruby-xcdm. It’s not just a DSL around CoreData, it produces the same XML files that are created from Xcode’s GUI. This means that it has feature parity with the traditional Xcode tools, in particular migrations are supported. (slides, video)
Jack Watson-Hamblin creates the MotionInMotion screencasts, and he has some great advice for anyone who wants to learn and help: teach! It’s never too early or late to share what you have learned. (slides, video)
For anyone interested in game development, Will Raxworthy showed us how incredibly easy it is to build a game with SpriteKit and RubyMotion. He built the entire app before our eyes, with gravity and collision detection, all in a simple to understand object-oriented framework. (slides, video)
Dave Lee is a core contributor to the ReactiveCocoa project, which is at the same time powerful and daunting. Dave showed us what a RAC refactor looks like, and how you can benefit from the reactive code style. (video)
On the more practical side of things, we watched Dennis Ushakov demo the RubyMotion features that are baked into RubyMine. It’s not just for Rails! Debugging, refactoring, and code-aware autocomplete are all available. (video)
There’s a ton of money to be made in the under-served enterprise arena, and Kevin Poorman showed us just how easy it is to make apps that cater to that community, using SalesForce as an example. (video)
When Alex Rothenberg started developing in iOS he quickly realized that “Cocoa is no Rails”. It’s verbose, obtuse, and also verbose and verbose. Something had to be done, and Alex shared ideas about how Ruby paradigms can fit nicely in Cocoa. (video)
We heard from Ivan Acosta-Rubio about his successes (and frustrations!) working with (and wrestling with) the AVFoundation framework to produce images and video. Turns out it’s easy, once you understand the players. (video)
Testing junkies were happily sated with Isaac Murchie's demo of Appium. It takes iOS testing into the cloud, making it much faster and thorough than what you can accomplish with good ol’
rake spec. (slides, video)
We also heard from three developers who are working on projects that are experiencing the kind of problem we all hope for: Success! We heard from Ryan Romanchuk from Frontback, Daniel Dickison from BandCamp, and our own Colin Gray from Jukely. With Gant Laborde asking questions (and fielding questions from the audience), we discussed how we chose RubyMotion, how we test our apps, and what we do to make sure we’re shipping solid applications. (video)
Gems were shared
What a productive year it’s been for the RubyMotion community! I don’t have the space here to gush over all the gems and features that were featured or released at #inspect, but here are some that stand out:
Clay Allsopp demoed some of the build tools have been created at Propeller. Everything from automated screenshot testing (with diffs!) to command-line based deployment tools. From start to deploy, you never have to leave the terminal! Learn about them all at Propeller’s github organization: https://github.com/usepropeller (slides, video)
From Todd Werth at InfiniteRed, the RMQ library has been expanded to include a wealth of REPL tools, a grid-based layout engine, and a documentation website that puts the rest of the WORLD’S to shame: http://rubymotionquery.com (slides, video)
Colin Gray and Jamon Holmgren have been working on a new layout tool to replace Teacup called MotionKit. Its goal is to encourage lighter controllers by moving layout, styling, and animation code into a new class: the Layout. The end result? (slides, video)
At last year’s #inspect someone asked Austin Seraphin if “automated accessibility testing” would be possible… this year it was announced! The motion-accessibility gem has seen huge updates over the course of a year. A REPL-based browser, automated testing for your specs, and of course a light, terse DSL that makes it easy to update your app with accessibility in mind. (video, article)
RubyMotion is FAST
When we need to defend our claim that “RubyMotion is Fast”, we should thank the long-time MacRuby and RubyMotion developer Shizuo Fujita (aka Watson). Watson optimizes every aspect of the RubyMotion compiler and runtime so that our apps run just as fast as their Objective-C brethren. RubyMotion 3.0 has a ton of performance increases thanks to his work. He shared the improvements he’s been working on, including some benchmarking tools that we can all use to improve our own code: motion-benchmark and motion-benchmark-ips.
The runner up to the big announcement
We’re all really excited for the “big announcement” this year, but standing tall and proud in the shadow of that announcement is Eloy Duran’s new code-reloading tool that had everyone’s jaw resting firmly on the floor. A save, a quick code compile, and your updated code is injected into your app while it is still running in the simulator. Eloy showed us how this feature decreases the time it takes to style views and try new features. This is going to drastically change the face of RubyMotion development in iOS.
The big one
The internet was all a-buzz about this year’s big announcement: Android support is coming to RubyMotion. It has everything we already enjoy in iOS and OS X:
- Compiles to native code, no bridging involved
- Native Ruby classes extend existing Java classes
- Terminal-based workflow
- Rakefile-based project configuration
- And best of all: the RubyMotion community ;-)
Laurent demoed some apps that he’s written that are already running. They launched immediately and ran smoothly. As promised, they have the same performance characteristics as an app written in Java. Those sample apps are available in the HipByte’s github organization.
The entire State of the Union talk, with Watson, Eloy, and Laurent is available to watch online.
Last year was all about affirming that RubyMotion isn’t just some toy that Rubyists like to play with, it’s a development tool that is powering complex consumer apps. This year showed that not only has that trend continued, but it’s grown at an accelerated rate! We’re more productive and having more fun than ever.
We’re entering the Android arena at a ripe time for the platform: Android L is a huge step forward in design, and all the new Android platforms (TV, auto, wearables) are all supported in RubyMotion.
This year is going to be a great year for Android and cross-platform gems! We’re very excited to see what you come up with! See you all at #inspect 2015!