RubyMotion Success Story: Jukely
Bora Celik and Andrew Cornett created Jukely for music lovers to get hand-picked recommendations for local live music concerts and to discover new music. They used RubyMotion to create a visually stunning app that has already hit 5 stars in the app store!
We sat down with Bora to talk about his experience using RubyMotion.
First, please tell us a little bit about your app, Jukely
Jukely is the brainchild of me and Andrew Cornett, my co-founder, who’s one of the first designers and employees at Kickstarter. He had a hand in the design and development of the Kickstarter web and iPhone apps since the beginning days. We had hit it off as hacking partners years ago, worked on a bunch of music hack day stuff and other music related projects. We’re both heavily into live music, especially in the discovery and notification space. We love discovering new bands and making spontaneous decisions about what shows to see. We don’t like planning for shows months in advance. We feel like there is a beautiful and loved brand missing in the world of live music. We want to be it.
What’s your background in programming?
I’m an engineer turned architect turned product manager turned back into engineer, all the while a concert organizer as my second persona. I started with VB6 then .NET, J2EE then stopped programming for a long time while I went to the dark side, management. Discovered Ruby in 2007 and fell in love with it. I’ve been hacking on music related projects ever since.
What convinced you to use RubyMotion?
I took an iOS class last year and got completely intimidated by Objective-C. It felt like I had to write a lot of code to do simple things and in my mind’s eye any potential app idea I would want to work on was getting crushed before I could even take it seriously. When RubyMotion came out, I said heck yes! and started developing a sample app on the first day it was released. Given the elegance of Ruby and my enthusiasm for building native iOS apps, it was love at first sight.
What value does the user get out from using Jukely?
Jukely is your personal concierge for live music shows. It is powered by curation and music taste algorithms. We learn what our members like and what their friends like, make recommendations when there is a high match, and have the ability to put them on the guest list if they want to go.
How do you collect and combine the user’s music preferences?
We currently allow people to connect their Facebook, Spotify, Rdio, Soundcloud, Last.fm and Hype Machine accounts. I spent the summer writing a recommendation algorithm in Ruby. We have tons of workers that run on Heroku to sync people’s and their friends’ music listens across different music services. Then we have our own sauce that decides how shows should be recommended.
How did you integrate the server-side API using RubyMotion?
I used BubbleWrap for JSON calls to our Ruby back-end API. Also the Parse framework for reading and saving data to Parse.
What does your RubyMotion toolbox look like?
Pods: Mixpanel, Reachability
Frameworks: Parse for database, HockeySDK for crash management, CardIO + Stripe for scanning credit cards and processing them, PassSlot for PassKit integration to create passes for shows.
My favorite has to be Parse as using it allowed us to skip writing our own code to do things like loading and saving things using background processing, signup, login, Facebook/Twitter integrations, push notifications, file uploads, as well as having image loading in tables working smoothly out of the box.
What feature of RubyMotion was the most helpful?
I would say being able to use Textmate, writing Ruby, Terminal based workflow and automated memory management were really awesome.
What was the biggest hurdle during development?
Mysterious crashes are my biggest nightmare. Being still new to iOS development, I still don’t have a full grasp on how to nail down and fix crashes that don’t identify themselves easily and only happen occasionally. Getting push notifications working was a major major pain. The steps you have to go through, my dear, and if you make one small mistake the notification is not delivered and you have no clue where you went wrong. I think I shed a few real tears when they finally ended up working.
When you hit a serious snag, where do you go with support questions?
I’ve definitely used the RubyMotion Google Group numerous times as the community there is really great. Also I’ve found increasingly more answers on Stack Overflow. As a fallback I used the support for RubyMotion and it has been very helpful.
What feature of the app was the most fun to build?
Once I learned how to do animations I introduced them in a few places. Those were really fun. Fade in loading image loading was quite pleasant and I still really like seeing those fade in transition images in the app. Also there was a lot of joy when I got the audio and video playback working using the MPMoviePlayerController class.