<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Jay McGavren's Journal</title>
	<link>http://jay.mcgavren.com/blog</link>
	<description>Ramblings on Ruby on Rails</description>
	<pubDate>Thu, 26 Aug 2010 07:02:52 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>Titled: &#8220;title&#8221;</title>
		<link>http://jay.mcgavren.com/blog/archives/1439</link>
		<comments>http://jay.mcgavren.com/blog/archives/1439#comments</comments>
		<pubDate>Thu, 26 Aug 2010 07:01:55 +0000</pubDate>
		<dc:creator>jay</dc:creator>
		
		<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jay.mcgavren.com/blog/archives/1439</guid>
		<description><![CDATA[
On Wed, Aug 25, 2010, Jay McGavren wrote:
&#62; Hey, I notice the title of my talk appears to be "Programmer Analyst".
&#62; (Which is funny, since that also happens to be the title of my
&#62; job.  I'm guessing I made a mistake on the talk submission
&#62; form. :)
&#62;
&#62; Could you change it to something more [...]]]></description>
			<content:encoded><![CDATA[<pre>
On Wed, Aug 25, 2010, Jay McGavren wrote:
&gt; Hey, I notice the title of my talk appears to be "Programmer Analyst".
&gt; (Which is funny, since that also happens to be the title of my
&gt; job.  I'm guessing I made a mistake on the talk submission
&gt; form. :)
&gt;
&gt; Could you change it to something more exciting, like "Ruby on Android
&gt; with Ruboto"?  :)
&gt;
&gt; -Jay
</pre>
<blockquote><p>
Ha, funny.  It&#8217;s been fixed.  You know, the field &#8220;title&#8221; was a bit<br />
vague.  You weren&#8217;t the only one to do that.  Somehow I didn&#8217;t catch<br />
it was a job title.  I was a bit curious how it related to the talk!<br />
;)</p>
<p>Cheers,<br />
Marty
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://jay.mcgavren.com/blog/archives/1439/feed</wfw:commentRss>
		</item>
		<item>
		<title>Networked Drawing Canvas in DRb</title>
		<link>http://jay.mcgavren.com/blog/archives/1438</link>
		<comments>http://jay.mcgavren.com/blog/archives/1438#comments</comments>
		<pubDate>Thu, 19 Aug 2010 07:15:04 +0000</pubDate>
		<dc:creator>jay</dc:creator>
		
		<category><![CDATA[android]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://jay.mcgavren.com/blog/archives/1438</guid>
		<description><![CDATA[In honor of Why The Lucky Stiff&#8217;s contributions to the fun side of the Ruby community, whyday.org includes a challenge to &#8220;see how far you can push some weird corner of Ruby&#8221;.  I can think of few corners of Ruby that are weirder (or more fun) than DRb.
Distributed RuBy (DRb) is, in my opinion, [...]]]></description>
			<content:encoded><![CDATA[<p>In honor of Why The Lucky Stiff&#8217;s contributions to the fun side of the Ruby community, <a href="http://whyday.org/">whyday.org</a> includes a challenge to &#8220;see how far you can push some weird corner of Ruby&#8221;.  I can think of few corners of Ruby that are weirder (or more fun) than DRb.</p>
<p>Distributed RuBy (DRb) is, in my opinion, the most underrated portion of the Ruby standard library.  It lets you take a Ruby class and network-enable it with almost no additional code (and without modifying the original class).  Back in 2006 when I was considering whether to learn Ruby or not, I took one look at DRb and realized that a language that made such things possible was probably a language worth knowing.</p>
<p>I made this screencast to show off how powerful DRb is, and how easy it is to get started.  We create a simple drawing canvas in Tk, then use DRb to network-enable it and draw to it from a 4-line client.  We finish with a Ruby client that runs on Android via the Ruboto environment.  And along the way, we cover a little basic security to help keep you safe (this is a network app, after all).</p>
<p><object width="480" height="385">
<param name="movie" value="http://www.youtube.com/v/Ca6CBm4bSU8?fs=1&amp;hl=en_US"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Ca6CBm4bSU8?fs=1&amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>Here&#8217;s the complete code for the server:</p>
<pre>
require 'tk'
require 'drb'

$SAFE = 1

canvas = TkCanvas.new(:width => 800, :height => 600)
canvas.pack

class RemoteCanvas
  def initialize(canvas)
    @canvas = canvas
  end
  def circle(x, y)
    TkcOval.new(@canvas, x, y, x + 40, y + 40)
  end
end

DRb.start_service("druby://192.168.0.100:9000", RemoteCanvas.new(canvas))

canvas.mainloop
</pre>
<p>Here&#8217;s our (tiny) sample client:</p>
<pre>
require 'drb'
DRb.start_service
canvas = DRbObject.new(nil, "druby://192.168.0.100:9000")
canvas.circle(300, 400)
</pre>
<p>And here&#8217;s the complete touchscreen client for Ruboto:</p>
<pre>
require "ruboto.rb"
confirm_ruboto_version(4, false)
java_import "org.ruboto.embedded.RubotoView"

require 'drb'
DRb.start_service

$activity.start_ruboto_activity "$druby" do

  setup_content do
    @service = DRbObject.new(nil, "druby://192.168.0.100:9000")
    RubotoView.new($druby)
  end

  handle_touch_event do |event|
    @service.circle(event.get_x, event.get_y)
  end

end
</pre>
<p>Enjoy, and of course feel free to post questions and comments below.  And if you&#8217;re looking for your own way to celebrate WhyDay, why not pick <em>your</em> favorite library and network-enable it?</p>
]]></content:encoded>
			<wfw:commentRss>http://jay.mcgavren.com/blog/archives/1438/feed</wfw:commentRss>
		</item>
		<item>
		<title>Making You Happy</title>
		<link>http://jay.mcgavren.com/blog/archives/1437</link>
		<comments>http://jay.mcgavren.com/blog/archives/1437#comments</comments>
		<pubDate>Thu, 19 Aug 2010 06:08:26 +0000</pubDate>
		<dc:creator>jay</dc:creator>
		
		<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://jay.mcgavren.com/blog/archives/1437</guid>
		<description><![CDATA[&#8220;Do Ophelia!&#8221;
&#8220;Please do Tigerlily!&#8221;
&#8230;came the encore requests from rapt audience members at the Natalie Merchant concert.  And with the kind but commanding tone of someone who knows how to work a crowd, Natalie responded:
&#8220;To those of you asking for particular songs, don&#8217;t worry, we have something planned.  But that makes us feel bad, [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;Do Ophelia!&#8221;</p>
<p>&#8220;Please do Tigerlily!&#8221;</p>
<p>&#8230;came the encore requests from rapt audience members at the Natalie Merchant concert.  And with the kind but commanding tone of someone who knows how to work a crowd, Natalie responded:</p>
<p>&#8220;To those of you asking for particular songs, don&#8217;t worry, we have something planned.  But that makes us feel bad, because we might not know how to do the songs you ask for.&#8221;  [I assume she meant the ensemble of 8-odd strings, woodwinds, etc. onstage, because I doubt she herself had forgotten the lyrics to &#8220;Ophelia&#8221;.]</p>
<p>&#8220;But this is our promise to you - we&#8217;ll make you happy.&#8221;</p>
<p>I think that&#8217;s a good model for every request, whether you&#8217;re asking someone to paint you a painting, code you an application, or sing you a song: Tell them the bare minimum to make you happy.  Let them figure out the details, in a way that utilizes their strengths (which they know better than you).  Instead of getting a clumsy interpretation of what you were imagining, you may find you&#8217;ve commissioned a work of art.</p>
]]></content:encoded>
			<wfw:commentRss>http://jay.mcgavren.com/blog/archives/1437/feed</wfw:commentRss>
		</item>
		<item>
		<title>Ruboto On Acid - Multitouch</title>
		<link>http://jay.mcgavren.com/blog/archives/1436</link>
		<comments>http://jay.mcgavren.com/blog/archives/1436#comments</comments>
		<pubDate>Mon, 02 Aug 2010 20:47:58 +0000</pubDate>
		<dc:creator>jay</dc:creator>
		
		<category><![CDATA[android]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://jay.mcgavren.com/blog/archives/1436</guid>
		<description><![CDATA[Ruboto 0.3 added TouchListener to its event handlers.  Here&#8217;s my experiment with adding multitouch input to the Ruby On Acid demo&#8230;
When it starts up (or the factory resets), all attributes are controlled by an ExampleFactory, meaning they&#8217;ll randomly be assigned to LoopFactories, SineFactories, RandomWalkFactories, etc.  Touch the screen, though, and control of the [...]]]></description>
			<content:encoded><![CDATA[<p>Ruboto 0.3 added TouchListener to its event handlers.  Here&#8217;s my experiment with adding multitouch input to the Ruby On Acid demo&#8230;</p>
<p>When it starts up (or the factory resets), all attributes are controlled by an ExampleFactory, meaning they&#8217;ll randomly be assigned to LoopFactories, SineFactories, RandomWalkFactories, etc.  Touch the screen, though, and control of the drawing x/y position will be given to the touchscreen.  Touch in a second place, and control of random attributes will go to your second finger: r/g/b channel, opacity, width, or height.</p>
<p> <a href="http://jay.mcgavren.com/blog/archives/1436#more-1436" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jay.mcgavren.com/blog/archives/1436/feed</wfw:commentRss>
		</item>
		<item>
		<title>Screencasting checklist&#8230;</title>
		<link>http://jay.mcgavren.com/blog/archives/1435</link>
		<comments>http://jay.mcgavren.com/blog/archives/1435#comments</comments>
		<pubDate>Sat, 24 Jul 2010 23:26:55 +0000</pubDate>
		<dc:creator>jay</dc:creator>
		
		<category><![CDATA[applications]]></category>

		<guid isPermaLink="false">http://jay.mcgavren.com/blog/archives/1435</guid>
		<description><![CDATA[I&#8217;ve recorded one too many screencasts in an unreadably small font.  I thought I&#8217;d made a pre-recording checklist, but I seem to have lost it.  So here we go again, and this time I&#8217;ll share it with the Web at large:

Ensure iShowU is on "Rails Demo" preset:
  Record microphone, system audio off
 [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recorded one too many screencasts in an unreadably small font.  I thought I&#8217;d made a pre-recording checklist, but I seem to have lost it.  So here we go again, and this time I&#8217;ll share it with the Web at large:</p>
<pre>
Ensure iShowU is on "Rails Demo" preset:
  Record microphone, system audio off
  Normal frame rate: 5
  Compression: Apple Animation
  Capture Size: 800 x 600
  Show capture guide whether recording or not
  Follow mouse cursor: false
  Edit recording area so it's in upper left, touching underside of system menu
Set iShowU keyboard shortcuts:
  Start capture: Cmd-Opt-Ctrl-3
  Pause capture: Cmd-Opt-Ctrl-4
Size windows to fit within capture area:
  Web browser
  Shell(80 columns x 30 rows)
  Editor
Increase font size to 20-point or larger:
  Web browser ("Zoom In" x 2)
  Shell
  Editor
Plain background as desktop
Close all possible apps
</pre>
]]></content:encoded>
			<wfw:commentRss>http://jay.mcgavren.com/blog/archives/1435/feed</wfw:commentRss>
		</item>
		<item>
		<title>Pat Maddox - I Love Ruby</title>
		<link>http://jay.mcgavren.com/blog/archives/1434</link>
		<comments>http://jay.mcgavren.com/blog/archives/1434#comments</comments>
		<pubDate>Thu, 22 Jul 2010 07:08:59 +0000</pubDate>
		<dc:creator>jay</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://jay.mcgavren.com/blog/archives/1434</guid>
		<description><![CDATA[From Pat&#8217;s MountainWest RubyConf talk.  I&#8217;m giving a presentation on Rails at work (a JEE shop), and I figured this would help convince my audience.  But it also says what many in the Ruby community already feel, so I figured I&#8217;d share it.
Like the original, this is released under the Creative Commons Attribution-ShareAlike [...]]]></description>
			<content:encoded><![CDATA[<p>From Pat&#8217;s MountainWest RubyConf talk.  I&#8217;m giving a presentation on Rails at work (a JEE shop), and I figured this would help convince my audience.  But it also says what many in the Ruby community already feel, so I figured I&#8217;d share it.</p>
<p>Like the original, this is released under the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike license</a>.</p>
<p><a href='http://jay.mcgavren.com/blog/wp-content/uploads/2010/07/pat_maddox_on_ruby.mp3' title='Pat Maddox - I Love Ruby'>Pat Maddox - I Love Ruby</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jay.mcgavren.com/blog/archives/1434/feed</wfw:commentRss>
<enclosure url="http://jay.mcgavren.com/blog/wp-content/uploads/2010/07/pat_maddox_on_ruby.mp3" length="1093005" type="audio/mpeg" />
		</item>
		<item>
		<title>A challenge!</title>
		<link>http://jay.mcgavren.com/blog/archives/1422</link>
		<comments>http://jay.mcgavren.com/blog/archives/1422#comments</comments>
		<pubDate>Sun, 13 Jun 2010 04:33:03 +0000</pubDate>
		<dc:creator>jay</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://jay.mcgavren.com/blog/archives/1422</guid>
		<description><![CDATA[30 minutes ago, I got this comment on my Ruboto on Acid post:

LSD makes letters on a computer screen look as if they&#8217;re dancing around and have a mind of their own. It&#8217;s also entirely impossible to think logically enough to code while on it. I recommend you buy some acid and see how it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>30 minutes ago, I got this comment on my Ruboto on Acid post:</p>
<blockquote><p>
LSD makes letters on a computer screen look as if they&#8217;re dancing around and have a mind of their own. It&#8217;s also entirely impossible to think logically enough to code while on it. I recommend you buy some acid and see how it&#8217;s nothing like this at all. ;)
</p></blockquote>
<p>And here is my answer.  :)</p>
<pre>
#!/usr/bin/env ruby

require 'rubyonacid/factories/example'
require 'tk'

#This factory will be in charge of all drawing coordinates, colors, etc.
f = RubyOnAcid::ExampleFactory.new

#A skip factory, in charge of randomly resetting the meta factory.
resetter = RubyOnAcid::SkipFactory.new(:odds => 0.99)

#The window to draw to.
canvas = TkCanvas.new(:width => 400, :height => 400)
canvas.pack

#The line objects we create will be stored here.
shapes = []

letters = "woah, trippy, dude!".split(//)

#Create a thread to update the window while it's displayed.
Thread.abort_on_exception = true
Thread.new do
  loop do

    #Get red, green, and blue values for a color from the factory.
    #Format is #RRGGBB in hexadecimal (like HTML).
    color = sprintf("#%02x%02x%02x",
      f.get(:red, :max => 254).to_i,
      f.get(:green, :max => 254).to_i,
      f.get(:blue, :max => 254).to_i
    )

    #Create and store a line of the chosen color.
    #Get width and locations of the endpoints from the factory.
    shapes << TkcText.new(
      canvas,
      f.get(:x1, :max => 400),
      f.get(:y1, :max => 400),
      :text => f.choose(:text, letters),
      :font => TkFont.new(
        :size => f.get(:size, :min => 1, :max => 72).to_i,
      ),
      :fill => color
    )

    #If the resetter returns true, tell the ExampleFactory to reassign
    #its source factories to different keys.
    f.reset_assignments if resetter.boolean(:reset)

    #Delete the oldest line if we have accumulated too many.
    shapes.shift.delete if shapes.length > letters.length

  end
end

#Display the window.
canvas.mainloop
</pre>
<p><a href='http://jay.mcgavren.com/blog/wp-content/uploads/2010/06/screen-shot-2010-06-12-at-94231-pm.png' title='screen-shot-2010-06-12-at-94231-pm.png'><img src='http://jay.mcgavren.com/blog/wp-content/uploads/2010/06/screen-shot-2010-06-12-at-94231-pm.thumbnail.png' alt='screen-shot-2010-06-12-at-94231-pm.png' /></a><a href='http://jay.mcgavren.com/blog/wp-content/uploads/2010/06/screen-shot-2010-06-12-at-94109-pm.png' title='screen-shot-2010-06-12-at-94109-pm.png'><img src='http://jay.mcgavren.com/blog/wp-content/uploads/2010/06/screen-shot-2010-06-12-at-94109-pm.thumbnail.png' alt='screen-shot-2010-06-12-at-94109-pm.png' /></a><br />
<a href='http://jay.mcgavren.com/blog/wp-content/uploads/2010/06/screen-shot-2010-06-12-at-93947-pm.png' title='screen-shot-2010-06-12-at-93947-pm.png'><img src='http://jay.mcgavren.com/blog/wp-content/uploads/2010/06/screen-shot-2010-06-12-at-93947-pm.thumbnail.png' alt='screen-shot-2010-06-12-at-93947-pm.png' /></a><a href='http://jay.mcgavren.com/blog/wp-content/uploads/2010/06/screen-shot-2010-06-12-at-93537-pm.png' title='screen-shot-2010-06-12-at-93537-pm.png'><img src='http://jay.mcgavren.com/blog/wp-content/uploads/2010/06/screen-shot-2010-06-12-at-93537-pm.thumbnail.png' alt='screen-shot-2010-06-12-at-93537-pm.png' /></a></p>
<p><a href="http://www.youtube.com/watch?v=JeysoRKMdkY">video</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jay.mcgavren.com/blog/archives/1422/feed</wfw:commentRss>
		</item>
		<item>
		<title>MP3 conversions of Ruby conference videos&#8230;</title>
		<link>http://jay.mcgavren.com/blog/archives/1421</link>
		<comments>http://jay.mcgavren.com/blog/archives/1421#comments</comments>
		<pubDate>Fri, 11 Jun 2010 07:19:45 +0000</pubDate>
		<dc:creator>jay</dc:creator>
		
		<category><![CDATA[development]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://jay.mcgavren.com/blog/archives/1421</guid>
		<description><![CDATA[I&#8217;ve got a sizable commute, so I&#8217;ve taken to downloading conference videos and converting to MP3 to play in the car.  Most work reasonably well as speech-only, I&#8217;m finding.  In hopes of helping others, I&#8217;m posting them here.
Many thanks to Confreaks, the conference organizers, and to the generous speakers, who released their speeches [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve got a sizable commute, so I&#8217;ve taken to downloading conference videos and converting to MP3 to play in the car.  Most work reasonably well as speech-only, I&#8217;m finding.  In hopes of helping others, I&#8217;m posting them here.</p>
<p>Many thanks to Confreaks, the conference organizers, and to the generous speakers, who released their speeches under a Creative Commons license.  In accordance with the license of the original videos, these MP3s are also released under a <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike license</a>.</p>
<p><a href="http://jay.mcgavren.com/files/conference_mp3s/">Download MP3 conversions of Confreaks conference videos here.</a></p>
<p>You can automatically download the lot with wget if you have it installed:</p>
<pre>
wget --recursive --no-parent --accept mp3,ogg,MP3,OGG http://jay.mcgavren.com/files/conference_mp3s
</pre>
<p>Conversions were done with ffmpeg.  Here&#8217;s the script I used:</p>
<pre>
#!/bin/sh
for filename; do
    ffmpeg -i "${filename}" -acodec libmp3lame -ab 96k -ac 2 -ar 44100 "${filename}.mp3"
done
</pre>
<p>My chief complaint was wild variation in volume levels; I haven&#8217;t blown a speaker yet but loud noises have made me jump sometimes.  I&#8217;ve processed all these with &#8220;mp3gain&#8221; (which I thought was only available as a Windows GUI app but have since learned has a Linux command-line version) in an effort to correct this, but I make no guarantees there won&#8217;t be sudden jumps or drops in volume.</p>
<p>Many tweaks are still possible, and I will look into them if there&#8217;s demand:</p>
<ul>
<li>Remove the periods of silence on each track (where Confreaks originally showed sponsor logos).</li>
<li>Convert remaining videos (these were hand-picked).</li>
<li>Lower-bitrate versions for the space-conscious.</li>
<li>See if The Levelator produces better results than mp3gain.</li>
<li>ID3 tags with speakers, titles, and other metadata.</li>
<li>An actual podcast feed.</li>
</ul>
<p>Enjoy, and leave a comment with the improvements you&#8217;d like to see!</p>
]]></content:encoded>
			<wfw:commentRss>http://jay.mcgavren.com/blog/archives/1421/feed</wfw:commentRss>
		</item>
		<item>
		<title>Legal fallout&#8230;</title>
		<link>http://jay.mcgavren.com/blog/archives/1420</link>
		<comments>http://jay.mcgavren.com/blog/archives/1420#comments</comments>
		<pubDate>Fri, 04 Jun 2010 22:36:25 +0000</pubDate>
		<dc:creator>jay</dc:creator>
		
		<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://jay.mcgavren.com/blog/archives/1420</guid>
		<description><![CDATA[Uh, oh, I may have exposed myself to significant legal liability.  I haven&#8217;t included a section like this in the license for any of my software releases&#8230;

You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.
&#8211;License agreement for a java.net [...]]]></description>
			<content:encoded><![CDATA[<p>Uh, oh, I may have exposed myself to significant legal liability.  I haven&#8217;t included a section like this in the license for <em>any</em> of my software releases&#8230;</p>
<blockquote><p>
You acknowledge that this software is not designed, licensed or intended for use in the design, construction, operation or maintenance of any nuclear facility.</p>
<p>&#8211;License agreement for a java.net library
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://jay.mcgavren.com/blog/archives/1420/feed</wfw:commentRss>
		</item>
		<item>
		<title>Ruboto On Acid&#8230;</title>
		<link>http://jay.mcgavren.com/blog/archives/1419</link>
		<comments>http://jay.mcgavren.com/blog/archives/1419#comments</comments>
		<pubDate>Tue, 01 Jun 2010 07:16:14 +0000</pubDate>
		<dc:creator>jay</dc:creator>
		
		<category><![CDATA[android]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://jay.mcgavren.com/blog/archives/1419</guid>
		<description><![CDATA[After dissecting the demos that come with Ruboto 0.2 and figuring out how to upload a library and runner script to an Android emulator (hint: &#8220;$ adb push . /sdcard/jruby/subdirname&#8221;), it only took an hour or so to create a working Ruby On Acid demo.  And what worked on the emulator immediately worked when [...]]]></description>
			<content:encoded><![CDATA[<p>After dissecting the demos that come with Ruboto 0.2 and figuring out how to upload a library and runner script to an Android emulator (hint: &#8220;$ adb push . /sdcard/jruby/subdirname&#8221;), it only took an hour or so to create a working Ruby On Acid demo.  And what worked on the emulator immediately worked when uploaded to the phone.</p>
<p><a href='http://jay.mcgavren.com/blog/wp-content/uploads/2010/06/screen-shot-2010-05-31-at-31718-am.png' title='Ruby On Acid in Ruboto IRB'><img src='http://jay.mcgavren.com/blog/wp-content/uploads/2010/06/screen-shot-2010-05-31-at-31718-am.thumbnail.png' alt='Ruby On Acid in Ruboto IRB' /></a><br />
 <a href="http://jay.mcgavren.com/blog/archives/1419#more-1419" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jay.mcgavren.com/blog/archives/1419/feed</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.246 seconds -->
<!-- Cached page served by WP-Cache -->
