Live data from Hacker News

Why I loved building Basecamp for iPhone in RubyMotion

37signals.com

31–40 of 60 posts

Re: Why I loved building Basecamp for iPhone in RubyMotion

#31
I spent four years developing Ruby full time. The last few years, I've been doing iOS full time, and there's no way I'd add a third-party layer to my app.

If you want to ship a high quality iOS app, you need to understand Objective-C inside and out. If you are using RubyMotion to avoid learning Objective-C, you will ship at the the cost of massive technical debt.

If you already know Objective-C, Ruby gives you a more concise syntax. Having used both languages for a while, and now that ARC exists, I'm comfortable using Objective-C as a high level language. Objective-C is wordier than Ruby, but when I return to the code a year later, I can still understand what it does.

As much as I hate Xcode, Apple expects you are using it. Sometimes features land in Xcode a version ahead of the command line tools.

For the handful of benefits I see from RubyMotion, I see a mountain of risks. Will Apple change its policy on accepted languages? Will the translation layer blowing up when you need to ship a hot fix the day before the iTunes store shuts down for Christmas? Will someone acquire the RubyMotion team and sunset the product?

Maybe I'm a different target audience. If an industry-changing platform appeared, I wouldn't leverage what I already know to dabble in it. I would do things the idiomatic way. Even if it takes longer to ship my first app, I think it's the faster path to mastery.

Re: Why I loved building Basecamp for iPhone in RubyMotion

#32

I liked the post and the general message, but the 'Avoid Xcode' part is rubbish. You shouldn't make such assumptions when you don't fully know how to use a tool, specially when you have such large audience.

I agree with this point. A lot of RubyMotion fans seem to be trying to build an app for iOS while learning as little as possible. While that's great if you're on a tight deadline and want to play to your strengths, Xcode is an incredibly powerful tool and features like the static analyzer, visual debugger and core data visualizer shouldn't be thrown out because some command line utility will let you Build & Run.

It's not a question of learning something new. It's that there's a fundamental, philosophical split between people who hate IDEs and people who love them.

It's one of those long-running holy wars of programming that goes back way further than iOS development.

Re: Why I loved building Basecamp for iPhone in RubyMotion

#33
I got into iOS development via RubyMotion. I was a Rails developer for a few years, now I'm an iOS developer (using Objective C). I've only really started with Objective C and XCode. Objective C isn't a huge barrier, but Cocoa and XCode definitely are. That's one of the reasons I really enjoyed RubyMotion.

If I could choose (and wasn't working with other people) then I would go with RubyMotion. The toolkit is a lot less mature than XCode. But the productivity is definitely higher and there's much more room for improvement via the OSS community.

RubyMotion side-bonus: you don't have to merge (basically) binary files when you're working entirely with code for UI.

Re: Why I loved building Basecamp for iPhone in RubyMotion

#35

holy mother of awfulness - $200?

A small price to pay considering what you could create with such a tool.

For a student who wants to explore Ruby for iOS apps instead of going through the whole Xcode-ObjC learning curve? I think not.

Re: Why I loved building Basecamp for iPhone in RubyMotion

#36
post #9

Earlier quoted context omitted.

The price is a pretty big barrier to entry. I understand why, but an eval option would be nice.

http://www.rubymotion.com/support/#faq Discount for students/academics.

For non-student/non-academics that just want to try it out and see if it works for them, it is a very steep price to pay. I strongly support paying for the tools you use, but $200 for a feet-first dive is steep.

Re: Why I loved building Basecamp for iPhone in RubyMotion

#37
post #32

Earlier quoted context omitted.

I agree with this point. A lot of RubyMotion fans seem to be trying to build an app for iOS while learning as little as possible. While that's great if you're on a tight deadline and want to play to your strengths, Xcode is an incredibly powerful tool and features like the static analyzer, visual debugger and core data visualizer shouldn't be thrown out because some command line utility will let you Build & Run.

It's not a question of learning something new. It's that there's a fundamental, philosophical split between people who hate IDEs and people who love them. It's one of those long-running holy wars of programming that goes back way further than iOS development.

A lot of people who use Xcode don't realize you can use many of those tools without it

A lot of people period, don't bother to use the analyzers and instruments.

Re: Why I loved building Basecamp for iPhone in RubyMotion

#38
post #18

Earlier quoted context omitted.

It hasn't been that hard for me to translate Objective-C code into Ruby. The hardest thing has been APIs that have varargs that end in nil for some reason. Recently the RubyMotion team published this yardoc that translates all of the existing APIs for you into Ruby: http://www.rubymotion.com/developer-center/api/index.html But I didn't refer to that for the majority of the development since it wasn't around yet...I w…

I think that's an issue of moving from Objective-C (and pure C), to what is normally a dynamic language. Using nil as a final argument (also called the 'sentinel') is fine for C to mark the end of a variable length array like it expects with 'strings' (so it doesn't stretch into the next unrelated block of memory), but you'd expect Ruby to handle that for you. Because in any other circumstance, it does.

Objective-C is dynamically typed.

Re: Why I loved building Basecamp for iPhone in RubyMotion

#39

Does something simular to RubyMotion, but in Python exist?

Objective-C has tons of language bindings out there. The only languages I'm absolutely sure have made it onto iOS are Lua, Ruby and Javascript.

If you're an OS X user you can check out PyObjC: http://pythonhosted.org/pyobjc/

Post reply on HN