{"id":273,"date":"2009-03-14T12:18:24","date_gmt":"2009-03-14T20:18:24","guid":{"rendered":"http:\/\/jaredrobinson.com\/blog\/?p=273"},"modified":"2009-03-14T12:18:24","modified_gmt":"2009-03-14T20:18:24","slug":"mwrc-building-mobile-apps-with-ruby-by-adam-blum","status":"publish","type":"post","link":"https:\/\/jaredrobinson.com\/blog\/mwrc-building-mobile-apps-with-ruby-by-adam-blum\/","title":{"rendered":"mwrc: Building Mobile Apps with Ruby by Adam Blum"},"content":{"rendered":"<p>Adam Blum: Rhodes &#8212; The Open Source Ruby Framework for Building Mobile Applications<\/p>\n<p>This was one of the most interesting talks for me.<\/p>\n<p>[Rhodes](http:\/\/www.github.com\/rhomobile) lets you build &#8220;native&#8221; applications for all mobile phones.<\/p>\n<p>The exciting new phones like iPhones don&#8217;t have a footprint in big<br \/>\norganizations. So what platform do you target for your mobile app? Rhodes.<\/p>\n<p>Build the app quickly in HTML and Ruby. It&#8217;s a mobile optimized ruby<br \/>\nimplementation. They port the ruby interpreter to Symbian, Blackberry, iPhone,<br \/>\nand Android, etc.<\/p>\n<p>[http:\/\/www.github.com\/rhomobile](http:\/\/www.github.com\/rhomobile)<\/p>\n<p>It&#8217;s a micro framework, and has RhoSync to sync the data with the remote<br \/>\nservice. Wikipedia is implementing their mobile version with Rhodes.<\/p>\n<p>Rhom is a tiny ORM. They have a mini web server that runs so that you can<br \/>\nwrite your UI in HTML + JavaScript. That way, they leverage the Web Browser<br \/>\nthat exists on each platform. You as a developer get to assume that your data<br \/>\nis local at all times. The framework handles synchronizing the data for you &#8212;<br \/>\nif you wish &#8212; you can do your own network programming if you want.<\/p>\n<p>Rhomobile provides sample apps:<\/p>\n<p>* SugarCRM<br \/>\n* Siebel Field Services<\/p>\n<p>Third-party Apps:<\/p>\n<p>* TrailGuide<br \/>\n* Wikipedia<br \/>\n* Mobile Lighthouse (bug tracker)<\/p>\n<p>How do you build your Rhodes App?<\/p>\n<p>* Create a sync source so you can get your data.<br \/>\n* Generate scaffolding for your app.<br \/>\n* Develop your app.<br \/>\n* Build, test, deploy<\/p>\n<p>Let&#8217;s do it:<\/p>\n<p>    $ gem install rhogen<br \/>\n    $ rhogen # displays options<br \/>\n    $ rhogen app <newapp><br \/>\n    $ rhogen model Contact &#8220;&#8221; 1 name,phone<\/p>\n<p>Then you generate your app for iPhone, and\/or Symbian, etc.<\/p>\n<p>They use stylesheets to make your app look &#8220;native&#8221; on the different<br \/>\nplatforms. It&#8217;s in great shape for iPhone, Blackberry. The UI doesn&#8217;t look as<br \/>\ngood on Android. They need someone to do the stylesheet work.<\/p>\n<p>Feb release:<\/p>\n<p>* GPS<br \/>\n* PIM<br \/>\n* Symbian<\/p>\n<p>Future 1.0 release planned for March 24th:<\/p>\n<p>* Android<br \/>\n* Camera support, photo sync to backend<br \/>\n* SMS<\/p>\n<p>Future things:<\/p>\n<p>* Audio<br \/>\n* Video<br \/>\n* Accelerometer<br \/>\n* Proximity detection (to enable voice when it gets close enough to the face)<br \/>\n&#8212; will happen faster if developers contribute the code<\/p>\n<p>RhoHub is hosted app development environment. They prvoide user downloading<br \/>\nfrom a URL, a sync server. First 100 registrants get a private beta:<br \/>\nhttp:\/\/rhohub.com &#8212; they&#8217;re looking for feedback from developers.<\/p>\n<p>They believe web programming is more productive than the traditional way of<br \/>\ndeveloping native mobile apps.<\/p>\n<p>Q: Can you do your own custom styling?<\/p>\n<p>A: Absolutely, per app. You can even contribute styling libraries back to them for everyone to use.<\/p>\n<p>Q: How is the ruby runtime stripped down?<\/p>\n<p>A: They&#8217;re developing a framework, and so that determines what they do and<br \/>\ndon&#8217;t include in the runtime. They will get around to publishing what the<br \/>\ninterpreter has, at some point. They took out &#8216;eval&#8217;, because the Apple App<br \/>\nStore doesn&#8217;t allow apps to have dynamic, downloadable code.<\/p>\n<p>Q: What kind of performance? Do people feel like it&#8217;s slow?<\/p>\n<p>A: Once it starts up, it&#8217;s very fast. Start up time is 5 seconds on iPhone. 7<br \/>\nsec startup on Windows Mobile and Symbian. They&#8217;re still aiming at getting it<br \/>\ndown to 5 seconds. Always less than 3 MB for each app. Google noticed that<br \/>\nthey&#8217;re using sqlite for a &#8220;property bag&#8221;, so they&#8217;re looking at switching to<br \/>\nsomething more lightweight. On iPhone, sqlite comes with the OS.<\/p>\n<p>Q: Any apps in the app store? Do you anticipate problems?<\/p>\n<p>A: No, No. But wikipedia&#8217;s app is very close. Their name is riding on it, so<br \/>\nthey want to test, test, test before they release.<\/p>\n<p>It sounds like they&#8217;ve targeted iPhone primarily, and the other platforms are<br \/>\nsecondary.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Adam Blum: Rhodes &#8212; The Open Source Ruby Framework for Building Mobile Applications This was one of the most interesting talks for me. [Rhodes](http:\/\/www.github.com\/rhomobile) lets you build &#8220;native&#8221; applications for all mobile phones. The exciting new phones like iPhones don&#8217;t have a footprint in big organizations. So what platform do you target for your mobile &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/jaredrobinson.com\/blog\/mwrc-building-mobile-apps-with-ruby-by-adam-blum\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;mwrc: Building Mobile Apps with Ruby by Adam Blum&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[20,21],"class_list":["post-273","post","type-post","status-publish","format-standard","hentry","category-programming","tag-mtnwestrubyconf","tag-mwrc"],"_links":{"self":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts\/273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/comments?post=273"}],"version-history":[{"count":1,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts\/273\/revisions"}],"predecessor-version":[{"id":274,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/posts\/273\/revisions\/274"}],"wp:attachment":[{"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/media?parent=273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/categories?post=273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jaredrobinson.com\/blog\/wp-json\/wp\/v2\/tags?post=273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}