Monthly Archives: May 2014

Issue #29

  • Estimated reading time: 4 minutes, 22 seconds

#inspect2014 is here

Tag your tweets #inspect2014 please. Follow this tag for community chatter.

This issue is all about #inspect tomorrow, other than the new version updates below, there won’t be any articles, new gems, blog posts, etc in this issue. Don’t worry, they will all be included in next week’s.


If you missed the last issue, you can find it here: issue #28.

Happy coding, Todd Werth (@twerth)

Install the App


RubyMotion #Inspect 2014 App by Mark Rickert and Gant Laborde



Map to Fort Mason Center



Floor plan

This is the floor plan of our venue:

full-size image

The Golden Gate Room is the main room where we all will be sharing, talking, and teaching each other about RubyMotion. There is a pretty good size screen behind the stage. The ceiling is very high and the room will easily hold all of us. It has windows on three sides. On the right side it looks out over boats then to the Golden Gate Bridge. Here is a photo:


The Marina Room is where we’ll have food, drinks, and a place to hang around. It can hold upto(80) people sitting.

The Bay Room will be where the speakers can setup. The Foyer is a decent size, it has room for tables and such. There is also a very small kitchen.

Outside, we get a slab of concrete with picnic benches on it (8 of them IIRC). Plus the marina with the boats is right next door:


We can serve alcohol here, which means we don’t need to travel somewhere else for our after-party. We’ll have other refreshments for those not drinking alcohol.


You’ll get breakfast and lunch both days, so no need to get your own. We’ll also have coffee and tea (I think it’s pretty good coffee too, it’s suppose to be at least; we’ll find out)


Try to walk, take the bus, or Uber over to the conference (never tried Uber? it’s awesome). SF is small, you can walk places pretty fast.

Bike racks are located throughout Fort Mason.

There is limited parking at Fort Mason, it’s not free ($10.00 a day).

There is parking outside of Fort Mason, but it’s often full, and you can’t park there all day:


RubyMotion News

RubyMotion 2.28 released

  • Added support for BigDecimal'. This class is implemented on top ofNSDecimalNumberand currently adds all theBigDecimal’ operator methods. It can be passed to APIs that require NSDecimalNumber *, NSDecimal, and pointers to `NSDecimal’.
  • Fixed a bug with framework search paths that contain spaces.
  • Fixed a bug with Objective-C methods that expect a void-pointer to an object (id/CFTypeRef) and thus a Pointer. The object is now passed as-is.
  • Fixed a bug with the CoreMIDI BridgeSupport metadata on platforms that have 64-bit support where the MIDI types would be unavailable.
  • Fixed a bug where empty .strings files would lead to a build failure.
  • Fixed a bug which which it could not retrieve NSNotFound correctly as method return value.
  • Fixed a bug which it will trigger a crash when it would call Proc object which is generated by Method#to_proc.
  • Fixed a bug which NSNumber object would not be converted to Ruby Numeric object with Objective-C Subscripting.
  • Fixed a bug which it can’t call super with keyword arguments.
  • Fixed a bug which incorrect cache would be used in internal and it will trigger an exception when shortcut selectors would be used.
  • Fixed a performance issue in deallocating if many objects would be created.
  • Reduced the app boot time. ~15% faster.
  • Improved Object#method_missing performance. ~10% faster.
  • Improved performance in where it would register Objective-C selector. Object#{send, respond_to?} will be ~30% faster.
  • Improved String interpolation performance. ~10% faster.

sudo motion update

RMQ News

RMQ 0.5.8 released

This is the last release before v.0.6.0 which will be a major upgrade.

Thanks to all the contributors in this release: @twerth, @squidpunch, @skellock, @shreeve, and @gantman


  • Significant change, this could break your code: Before when you appended, created, or built a view using RMQ it would apply the style you specified in the append command, then call the rmq_build method in the view. This was a bug which I totally missed. I changed it so that it calls rmq_build, then applies the style. This way you can style the view in its own stylesheet, then override it in the controller’s stylesheet.

New features

  • block to .animate to simplify simple animation. rmq(my_view).animate{|q| q.move(l: 10)}
  • append!, create!, prepend!, and unshift! methods. If you don’t need to chain, instead of doing this: @name = rmq.append(UILabel, :name).get, you can do this @name = rmq.append! UILabel, :name
  • swipe_up, swipe_down, swipe_left, and swipe_right to gestures.
  • overriding options for animations
  • absolute_frame to UIView styler, sets the frame relative to the window
  • styler for button title insets
  • added some documentation


  • Undeprecated weak_ref stuff. (WeakRef still doesn’t work as needed). RubyMotionQuery::Utils.weak_ref(object_here) makes WeakRef usable by libraries (I should make this its own gem)

Bug fixes

  • Fixed some issues with templates (specifically collection view, and view)

  • Fixed distribute :horizontal

  • Misc bug fixes and more tests

If you have any tips, blog posts, or want to sponsor this newsletter, please send emails to

Issue #28

  • Estimated reading time: 1 minute, 45 seconds

For those that are unable to come to the conference

One more week until the #inspect conference, so news is light.

For those of you who can’t make the conference this year, next week will still be exciting for you. Professionals will be recording all the presentations. There are going to be some huge announcements (huge). And there is going to be a lot of new stuff to play with.

Continue reading

Issue #27

  • Estimated reading time: 2 minutes, 36 seconds

Everyone is busy working on their presentations

The #inspect conference is coming in a few weeks, and everyone who is giving a presentation is furiously working on them. I personally haven’t even started, but all is good, I know what it’s going be about.

A few random things I’ve heard from speakers:

  • Can I fly a drone for my presentation?
  • Hey Todd, do you mind if I do a little dig at you in my talk? (my answer was sure. Probably about how I always end my sentences with a higher pitch, kind of the opposite way normal humans do it. I’m sure he actually meant RMQ and not me specifically)
  • Does the projector support HDMI? I need to hook up some devices.

Lastly, we hired a good video team to record the conference, which will be awesome for everyone who can’t physically make it.

If you missed the last issue, you can find it here: issue #26.

Happy coding, Todd Werth (@twerth)

Articles, News, New Gems, and Blog Posts

May 20th, 2014 – “meetup – Chicago RubyMotion – Devon Blandin – Lessons Learned: Building an iOS Application with RubyMotion” by David Astels

May 13th, 2014 – “Writing Gems for Ruby and RubyMotion” by Jack Watson-Hamblin

May 13th, 2014 – “video – 12,000 Lines of RubyMotion – A Dark Room” by Darren Cauthon

May 13th, 2014 – “video – RMQ v0.6.0 sneak peek” by Todd Werth

May 11th, 2014 – “Using Restkit to connect an iOs+RubyMotion+CoreData+CDQ app to a restful back-end” by Mathew Sinclair

May 11th, 2014 – “screencast – Episode 23 – MotionKit Basics and AutoLayout” by Jack Watson-Hamblin

May 8th, 2014 – “Iconoclast Labs – Going to RubyMotion Inspect 2104” by Gant Laborde

May 7th, 2014 – “slides – Getting Started Building Mac OS X Apps With RubyMotion Fast” by Elliott Draper

May 7th, 2014 – “Using NSUserDefaults in RubyMotion” by Paul Sturgess

May 7th, 2014 – “gem – sweet-kit – Some helpers for MotionKit that add the coercion abilities of SugarCube to the style abilities of MotionKit, for great good.” by Colin T.A. Gray

May 3rd, 2014 – “meetup – OKC Ruby – Cancelled May 8th Meeting ” by okcruby

??? – “RubyMotion support in Atom” by Satoshi Ebisawa

RubyMotion App of the Week


Apr 24, 2014 – RubyMotion #Inspect 2014 App by Mark Rickert and Gant Laborde

This app uses the following gems:

  • ProMotion
  • bubble-wrap
  • teacup
  • sugarcube
  • afmotion
  • motion-cocoapods
  • awesome_print_motion

RMQ News

I’m still busy working on version 0.6.0, which I plan on releasing before or during the #inspect conference. I made a 5 minute video with a sneak peek of the features, the best part is at the end of the video:


The number of people contributing to RMQ has risen lately, which is exciting. If you use RMQ and want to help out, there are many ways. Just go ahead, or feel free to ask me what you can do.

I spoke to a few people, and they want to help with improving the documentation. It is one place I think RMQ really needs some help.


motion-motion gem, huh?

If you have any tips, blog posts, or want to sponsor this newsletter, please send emails to

Issue #26

  • Estimated reading time: 3 minutes, 39 seconds

Conference, gems, community, and Wat

Conference update

First up, the conference is coming soon, tickets are running out, get yours now. If you’re not there, you can’t get one of these cool stickers:



I’ve started to ask the creators of the “App of the Week” which gems they use. I find this information interesting.


I’ve renamed “One more thing” to “Wat”, I think that name is a better fit for the “stuff” I stick in there. Gant suggested it, so I stuck his incredibly useful gem in there this week 🙂


MotionKit was released recently, it is a replacement for the aging Teacup. Check it out, I think it’s awesome. Colin and Jamon did a great job.


I have this in the community section of my editorial because MotionKit and my library RMQ compete (the layout, subview, and stylesheet parts of RMQ), but I’m very happy to promote the use of it. The other library authors talk about RMQ too. This is why Ruby communities in general and the RubyMotion community is specific are so great, they’re mostly filled with really nice people. I like nice people, and I’m too old to hang around those that aren’t.

FYI, MotionKit should work really well alongside RMQ, but I haven’t tested that yet. Promotion and RMQ work well together.

If you missed the last issue, you can find it here: issue #25.

Happy coding, Todd Werth (@twerth)

Articles, News, New Gems, and Blog Posts

May 28th, 2014 – “meetup – CocoaKucha 4 with Motion#inspect” by Orta Therox

May 13th, 2014 – “meetup – KC Ruby: the great comet edition” by Wes Garison

May 5th, 2014 – “gem – motion-installr – RubyMotion Gem for Ad-hoc deployment using the amazing Installr service” by Jack Watson-Hamblin

May 5th, 2014 – “screencast – MotionInMotion – Distribute your RubyMotion apps with TestFlight and HockeyApp” by Jack Watson-Hamblin

May 5th, 2014 – “gem – motion-kit – The RubyMotion layout and styling gem” by Colin T.A. Gray

May 2nd, 2014 – “Core Data has selects” by Lori Olson

Apr 30th, 2014 – “Different Code Paths For RubyMotion Ad hoc Builds” by Hwee-Boon Yar

Apr 29th, 2014 – “Facebook’s Pop and RubyMotion” by Will Raxworthy

RubyMotion News

Version 2.27 released.

  • Added support for localization `.strings’ files which will be compiled as
    binary files. Thanks to Hwee-Boon Yar for the patch (pull request #154).
  • Added support for NSLocalizedString and friends. These are now available
    on Kernel.
  • Added missing AudioUnit bridgesupport metadata.
  • Improved the file dependencies detection code to spend less time when
    working on a project that has a significant number of dependencies.
    Thanks to Ignacio Piantanida for the detective work.
  • Fixed a regression introduced in RubyMotion 2.25 that was causing a
    build error in environment using Ruby 1.8.
  • Fixed a regression introduced in RubyMotion 2.25 that was causing a
    `not precompiled’ error if the method would handle a BOOL pointer as an
  • Fixed a bug where Boxed subclasses could not be re-opened safely.
  • Fixed a bug which shortcut for the method which was implemented on Ruby
    would not respond.
sudo motion update

RubyMotion App of the Week


Apr 24, 2014 – BraillED by Matt Brewer

“BraillED lets you easily learn braille on your iOS device. Explore the braille alphabet in a high contrast app designed specifically for the visually impaired. Audio cues and device vibrations aid in learning.”

This app uses the following gems:

  • motion-testflight
  • motion-cocoapods
  • motion-yaml
  • ProMotion
  • sugarcube
  • bubble-wrap
  • motion-settings-bundle
  • motion-map
  • motion-awesome
  • motion-acknowledgements
  • motion-screenshots
  • motion-speech
  • motion-launchpad
  • indoctrinator

Hidden Gem by Gant Laborde of Iconoclast Labs

If you’ve come from the Rails world, you’ve probably used an options hash,
and especially used reverse_merge to place your default values.
Unfortunately, reverse_merge doesn’t come from Ruby, it’s a nicety of
active_support/core_ext. You’ll have to just flip it around and use good
old merge.

For reference, if you wanted to do this:

def initialize(opts = {})
    # @options[:number_touches] is only set if the passed hash doesn't have the same respective key
    @options = opts.reverse_merge number_touches: 1

You’ll do this:

def initialize(opts = {})
  # @options[:number_touches] is only set if the passed hash doesn't havethe same respective key
  @options = {number_touches: 1}.merge(opts)

You can, of course, bring in the motion-support gem, which has reverse_merge,
but I wouldn’t add a dependency for a single method.



If you have any tips, blog posts, or want to sponsor this newsletter, please send emails to