<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AdaRuby &#187; Indonesia</title>
	<atom:link href="http://www.adaruby.com/category/indonesia/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adaruby.com</link>
	<description>Rich Dynamic Applications with Ruby on Rails</description>
	<lastBuildDate>Fri, 02 Jul 2010 09:06:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SVK Quick Start Guide</title>
		<link>http://www.adaruby.com/2007/08/22/svk-quick-start/</link>
		<comments>http://www.adaruby.com/2007/08/22/svk-quick-start/#comments</comments>
		<pubDate>Wed, 22 Aug 2007 16:39:36 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Indonesia]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/08/22/svk-quick-start/</guid>
		<description><![CDATA[
			
				
			
		
Some people asked me about SVK so here it is. Quickly written because I am a bit lazy and sleepy right now.
SVK is a distributed version control system. In other words, it allows you to mirror a Subversion repository, have local commits, pull changes from upstream, and synchronize/merge it back to the remote Subversion server [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F22%2Fsvk-quick-start%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F22%2Fsvk-quick-start%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="SVK Quick Start Guide" alt=" SVK Quick Start Guide" /><br />
			</a>
		</div>
<p>Some people asked me about SVK so here it is. Quickly written because I am a bit lazy and sleepy right now.</p>
<p><a href="http://svk.bestpractical.com/" title="http://svk.bestpractical.com/" rel="nofollow">SVK</a> is a distributed version control system. In other words, it allows you to mirror a Subversion repository, have local commits, pull changes from upstream, and synchronize/merge it back to the remote Subversion server if you want.</p>
<p><strong>English version</strong></p>
<p><strong>UPDATE:</strong> This is an <em>outdated version</em>. The most up-to-date version with newer tips and tricks is in <a href="http://wiki.ruby-id.web.id/wiki/SVK" rel="nofollow"  title="SVK version control system">wiki Ruby Indonesia: SVK</a>, which unfortunately is only available in Indonesian. <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' title="SVK Quick Start Guide" /> </p>
<p><strong>Method 1: Use Subversion repository, but SVK working copy</strong></p>
<p>Assumptions:</p>
<ul>
<li> Subversion repository remote: http://svn.example.com/try/</li>
<li> SVK depot: /try/</li>
</ul>
<pre>svk depot try ~/.svk/try
svk mirror /try/remote http://svn.example.com/try/
svk sync /try/remote
svk cp /try/remote /try/local</pre>
<p>Checkout &amp; working copy:</p>
<pre>svk co /try/local/trunk</pre>
<p>Commit:</p>
<pre>svk ci</pre>
<p>Push: (merge to remote)</p>
<pre>svk push</pre>
<p>Pull: (merge from remote to local)</p>
<pre>svk pull</pre>
<p><strong>Method 2: Use remote Subversion repository, local Subversion repository, and SVK to merge between those repositories </strong></p>
<p>The advantage of this approach is that you can use usual Subversion tools (<a href="http://tortoisesvn.tigris.org/" title="http://tortoisesvn.tigris.org/" rel="nofollow">TortoiseSVN</a>, or native utility from <a href="http://www.aptana.com/" title="http://www.aptana.com/" rel="nofollow">Aptana IDE</a>, <a href="http://www.netbeans.org/" title="http://www.netbeans.org/" rel="nofollow">NetBeans</a>, etc.)</p>
<p>Assumptions:</p>
<ul>
<li> Subversion repository remote: http://svn.example.com/try/</li>
<li> Subversion repository local: http://svn.mycomputer/try/</li>
<li> SVK depot: /try/</li>
</ul>
<pre>svk depot try ~/.svk/try
svk mirror /try/remote http://svn.example.com/try/
svk sync /try/remote
svk mirror /try/localsvn http://svn.mycomputer/try/
svk sync /try/localsvn
svk smerge /try/remote /try/localsvn</pre>
<p>Checkout &amp; working copy:</p>
<pre>svn co http://svn.mycomputer/try/trunk/</pre>
<p>Commit:</p>
<pre>svn ci</pre>
<p>Push: (merge to remote)</p>
<pre>svk sync /try/localsvn
svk sync /try/remote
svk smerge /try/localsvn /try/remote</pre>
<p>Pull: (merge from remote to local)</p>
<pre>svk sync /try/localsvn
svk sync /try/remote
svk smerge /try/remote /try/localsvn</pre>
<p><strong>Tip: Moving local Subversion repository history to remote Subversion server</strong></p>
<p>Assumptions:</p>
<ul>
<li> Subversion repository remote (<strong>still empty</strong>): http://svn.example.com/try/</li>
<li> Subversion repository local (<strong>has history</strong>): http://svn.mycomputer/try/</li>
<li> SVK depot: /try/</li>
</ul>
<p>In short:</p>
<pre>svk depot try ~/.svk/try
svk mirror /try/remote http://svn.example.com/try/
svk sync /try/remote
svk mirror /try/localsvn http://svn.mycomputer/try/
svk sync /try/localsvn
svk smerge --incremental --log --baseless /try/localsvn /try/remote</pre>
<p><strong>Versi Indonesia</strong></p>
<p><strong>UPDATE:</strong> Versi ini sudah <em>out-of-date</em>. Versi paling up-to-date dengan tips-tips tambahan dan edisi revisi ada di <a href="http://wiki.ruby-id.web.id/wiki/SVK" rel="nofollow"  title="SVK version control system">wiki Ruby Indonesia: SVK</a>.</p>
<p><!-- start content --><a href="http://svk.bestpractical.com/" title="http://svk.bestpractical.com/" rel="nofollow">SVK</a> adalah sistem version control terdistribusi.</p>
<p><strong>Cara 1: Pake Subversion repository, SVK working copy</strong></p>
<p>Asumsi:</p>
<ul>
<li> Subversion repository remote: <a href="http://svn.example.com/coba/" title="http://svn.example.com/coba/" rel="nofollow">http://svn.example.com/coba/</a></li>
<li> SVK depot: /coba/</li>
</ul>
<pre>svk depot coba ~/.svk/coba
svk mirror /coba/remote http://svn.example.com/coba/
svk sync /coba/remote
svk cp /coba/remote /coba/local</pre>
<p>Checkout &amp; working copy:</p>
<pre>svk co /coba/local/trunk</pre>
<p>Commit:</p>
<pre>svk ci</pre>
<p>Push: (merge ke remote)</p>
<pre>svk push</pre>
<p>Pull: (merge dari remote ke local)</p>
<pre>svk pull</pre>
<p><strong>Cara 2: Pake Subversion repository remote, Subversion repository local, dan SVK untuk merge</strong></p>
<p>Kelebihan dari cara ini adalah Anda bisa menggunakan tools Subversion seperti biasanya (<a href="http://tortoisesvn.tigris.org/" title="http://tortoisesvn.tigris.org/" rel="nofollow">TortoiseSVN</a>, maupun native utility dari <a href="http://www.aptana.com/" title="http://www.aptana.com/" rel="nofollow">Aptana IDE</a>, <a href="http://www.netbeans.org/" title="http://www.netbeans.org/" rel="nofollow">NetBeans</a>, dsb.)</p>
<p>Asumsi:</p>
<ul>
<li> Subversion repository remote: <a href="http://svn.example.com/coba/" title="http://svn.example.com/coba/" rel="nofollow">http://svn.example.com/coba/</a></li>
<li> Subversion repository local: <a href="http://svn.mycomputer/coba/" title="http://svn.mycomputer/coba/" rel="nofollow">http://svn.mycomputer/coba/</a></li>
<li> SVK depot: /coba/</li>
</ul>
<pre>svk depot coba ~/.svk/coba
svk mirror /coba/remote http://svn.example.com/coba/
svk sync /coba/remote
svk mirror /coba/localsvn http://svn.mycomputer/coba/
svk sync /coba/localsvn
svk smerge /coba/remote /coba/localsvn</pre>
<p>Checkout &amp; working copy:</p>
<pre>svn co http://svn.mycomputer/coba/trunk/</pre>
<p>Commit:</p>
<pre>svn ci</pre>
<p>Push: (merge ke remote)</p>
<pre>svk sync /coba/localsvn

svk sync /coba/remote

svk smerge /coba/localsvn /coba/remote</pre>
<p>Pull: (merge dari remote ke local)</p>
<pre>svk sync /coba/localsvn
svk sync /coba/remote
svk smerge /coba/remote /coba/localsvn</pre>
<p><strong>Tip: Mindahin history Subversion local ke remote </strong></p>
<p>Ini pertanyaan dari Marcel.</p>
<p>Asumsi:</p>
<ul>
<li> Subversion repository remote (<strong>masih kosong</strong>): <a href="http://svn.example.com/coba/" title="http://svn.example.com/coba/" rel="nofollow">http://svn.example.com/coba/</a></li>
<li> Subversion repository local (<strong>sudah berisi</strong>): <a href="http://svn.mycomputer/coba/" title="http://svn.mycomputer/coba/" rel="nofollow">http://svn.mycomputer/coba/</a></li>
<li> SVK depot: /coba/</li>
</ul>
<p>So singkatnya:</p>
<pre>svk depot coba ~/.svk/coba
svk mirror /coba/remote http://svn.example.com/coba/
svk sync /coba/remote
svk mirror /coba/localsvn http://svn.mycomputer/coba/
svk sync /coba/localsvn
svk smerge --incremental --log --baseless /coba/localsvn /coba/remote</pre>
<p><strong>Credits</strong></p>
<p>Thanks buat <a href="http://wiki.ruby-id.web.id/wiki?title=Marcel&amp;action=edit" rel="nofollow"  title="Marcel">Marcel</a> (<a href="mailto:mgozali@yahoo.com" title="mailto:mgozali@yahoo.com" rel="nofollow">[1]</a>) yang sudah menyumbang pertanyaan yang akhirnya membuat saya menulis artikel ini. Trims. &#8211;<a href="http://wiki.ruby-id.web.id/wiki/Pengguna:Ceefour" rel="nofollow"  title="Ceefour">Ceefour</a> 11:23, 22 Agustus 2007 (CDT)</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/08/22/svk-quick-start/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Deploying Joomla using Capistrano 2.0</title>
		<link>http://www.adaruby.com/2007/08/14/deploying-joomla-using-capistrano-20/</link>
		<comments>http://www.adaruby.com/2007/08/14/deploying-joomla-using-capistrano-20/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 17:17:36 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Indonesia]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/08/14/deploying-joomla-using-capistrano-20/</guid>
		<description><![CDATA[
			
				
			
		
Who said Capistrano is for Ruby on Rails only?

That&#8217;s probably the major tagline of the whole Capistrano 2.0 saga. You can use it to deploy PHP, Django, or not doing any deployment at all. Let me demonstrate, this time using Joomla:
Capistrano adalah library/tool yang digunakan untuk meng-online-kan aplikasi Ruby on Rails, tapi bisa juga digunakan [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F14%2Fdeploying-joomla-using-capistrano-20%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F14%2Fdeploying-joomla-using-capistrano-20%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Deploying Joomla using Capistrano 2.0" alt=" Deploying Joomla using Capistrano 2.0" /><br />
			</a>
		</div>
<p>Who said <a href="http://capify.org/" rel="nofollow"  title="Capistrano">Capistrano</a> is for <a href="http://www.rubyonrails.org/" rel="nofollow" >Ruby on Rails</a> only?</p>
<p><a href="http://www.flickr.com/photos/dollen/429429873/" rel="nofollow"  title="Future girl"><img src="http://farm1.static.flickr.com/186/429429873_b772b96890.jpg?v=0" height="349" width="500" title="Deploying Joomla using Capistrano 2.0" alt=" Deploying Joomla using Capistrano 2.0" /></a></p>
<p>That&#8217;s probably the major tagline of the whole <a href="http://www.rubyinside.com/capistrano-20-flexible-automated-deployment-system-541.html" rel="nofollow" >Capistrano 2.0</a> saga. You <em>can</em> use it to deploy PHP, Django, or not doing any deployment at all. Let me demonstrate, this time using <a href="http://www.joomla.org/" rel="nofollow"  title="Joomla CMS for PHP">Joomla</a>:</p>
<p><a href="http://capify.org/" rel="nofollow"  title="Capistrano deployment">Capistrano</a> adalah library/tool yang digunakan untuk meng-online-kan aplikasi <a href="http://www.rubyonrails.org/" rel="nofollow"  title="Ruby on Rails framework">Ruby on Rails</a>, tapi bisa juga digunakan untuk aplikasi PHP, misalnya <a href="http://www.joomla.org/" rel="nofollow"  title="Joomla Content Management System for PHP">Joomla</a>:</p>
<pre>ceefour@ojalanow:~/project/layout_mania/trunk$ cap deploy
  * executing `deploy'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
  * executing "svn checkout -q --username ceefour --no-auth-cache -r11 http://tools.assembla.com/svn/layout_mania/trunk /home/rainbow/apps/layout_mania/releases/20070814160555 &amp;&amp; (echo 11 &gt; /home/rainbow/apps/layout_mania/releases/20070814160555/REVISION)"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
  * executing `deploy:finalize_update'
  * executing "chmod -R g+w /home/rainbow/apps/layout_mania/releases/20070814160555"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
    triggering after callbacks for `deploy:finalize_update'
  * executing `deploy:symlink_secret'
  * executing "ln -s /home/rainbow/apps/layout_mania/secret /home/rainbow/apps/layout_mania/releases/20070814160555/secret"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
  * executing `deploy:use_live_configuration'
  * executing "cp -f /home/rainbow/apps/layout_mania/releases/20070814160555/joomla/configuration.php.live /home/rainbow/apps/layout_mania/releases/20070814160555/joomla/configuration.php"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
  * executing `deploy:symlink_cache'
  * executing "rm -rf /home/rainbow/apps/layout_mania/releases/20070814160555/joomla/cache &amp;&amp; ln -s /home/rainbow/apps/layout_mania/shared/cache /home/rainbow/apps/layout_mania/releases/20070814160555/joomla/cache"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
  * executing `deploy:symlink'
  * executing "rm -f /home/rainbow/apps/layout_mania/current &amp;&amp; ln -s /home/rainbow/apps/layout_mania/releases/20070814160555 /home/rainbow/apps/layout_mania/current"
    servers: ["rainbowpurple.com"]
    [rainbowpurple.com] executing command
    command finished
 ** transaction: commit
  * executing `deploy:restart'</pre>
<p>The result? <a href="http://layout-mania.humblia.com/" rel="nofollow"  title="Layouts for Friendster, MySpace, Facebook, Imeem, Multiply">layout-mania.humblia.com.</a> Below is the source code of deploy/config.rb used to deploy this Joomla app.</p>
<p>Hasilnya? <a href="http://layout-mania.humblia.com/" rel="nofollow"  title="Layouts for Friendster, MySpace, Facebook, Imeem, Multiply">layout-mania.humblia.com</a>. Di bawah ini adalah <em>source code</em> dari file konfigurasi Capistrano deploy/config.rb yang digunakan untuk aplikasi ini.</p>
<pre>set :application, "layout_mania"
set :repository,  "http://tools.assembla.com/svn/layout_mania/trunk"

# If you aren't deploying to /u/apps/#{application} on the target
# servers (which is the default), you can specify the actual location
# via the :deploy_to variable:
set :deploy_to, "/home/rainbow/apps/#{application}"
set :user, "rainbow"
set :scm_username, 'ceefour'
set :use_sudo, false
set :cache_path, "#{shared_path}/cache"
set :media_path, "#{shared_path}/media"

# If you aren't using Subversion to manage your source code, specify
# your SCM below:
# set :scm, :subversion

role :app, "rainbowpurple.com"
role :web, "rainbowpurple.com"
role :db,  "rainbowpurple.com", :primary =&gt; true

after 'deploy:finalize_update', 'deploy:symlink_secret'
after 'deploy:finalize_update', 'deploy:use_live_configuration'
after 'deploy:finalize_update', 'deploy:symlink_cache'

namespace :deploy do

  # Overwritten to provide flexibility for people who aren't using Rails.
  task :setup, :except =&gt; { :no_release =&gt; true } do
    dirs = [deploy_to, releases_path, shared_path, cache_path, media_path]
    dirs += %w(system).map { |d| File.join(shared_path, d) }
    run "umask 02 &amp;&amp; mkdir -p #{dirs.join(' ')}"
  end

  # Also overwritten to remove Rails-specific code.
  task :finalize_update, :except =&gt; { :no_release =&gt; true } do
    run "chmod -R g+w #{release_path}" if fetch(:group_writable, true)
  end

  # Each of the following tasks are Rails specific. They're removed.
  task :migrate do
  end

  task :migrations do
  end

  task :cold do
  end

  task :start do
  end

  task :stop do
  end

  # Do nothing (To restart apache, run 'cap deploy:apache:restart')
  task :restart do
  end

  task :use_live_configuration, :roles =&gt; :app do
    run "cp -f #{release_path}/joomla/configuration.php.live #{release_path}/joomla/configuration.php"
  end

  task :symlink_cache, :roles =&gt; :app do
    run "rm -rf #{release_path}/joomla/cache &amp;&amp; ln -s #{cache_path} #{release_path}/joomla/cache"
  end
  task :symlink_secret, :roles =&gt; :app do
    run "ln -s #{deploy_to}/secret #{release_path}/secret"
  end

end

namespace :db do

  desc "Overwrite the remote database with local database."
  task :push_force, :roles =&gt; :db do
    system "mysqldump --opt rainbow_layoutmania | bzip2 &gt; /tmp/rainbow_layoutmania.sql.bz2"
    system "rsync -vPa /tmp/rainbow_layoutmania.sql.bz2 rainbowpurple.com:tmp/"
    run "bunzip2 -dc /home/rainbow/tmp/rainbow_layoutmania.sql.bz2 | mysql -u rainbow_layoutma -p`cat #{deploy_to}/secret/db_password` rainbow_layoutmania"
    run "rm -f /home/rainbow/tmp/rainbow_layoutmania.sql.bz2"
    system "rm -f /tmp/rainbow_layoutmania.sql.bz2"
  end

  desc "Optimize remote database."
  task <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' title="Deploying Joomla using Capistrano 2.0" /> ptimize, :roles =&gt; :db do
    run "mysqlcheck --analyze --repair --optimize --user=rainbow_layoutma --password=`cat #{deploy_to}/secret/db_password` rainbow_layoutmania"
  end

end</pre>
<p>Interested? Unfortunately this isn&#8217;t a tutorial. Look more on the resources below:</p>
<p>Tertarik? Sayang sekali ini bukan tutorial, coba cari informasi lebih lanjut di:</p>
<ul>
<li><a href="http://capify.org/" rel="nofollow"  title="Capistrano 2.0 deployment">Capistrano 2.0 official site</a></li>
<li><a href="http://capify.stikipad.com/wiki/" rel="nofollow"  title="Capistrano / Capify Wiki">Capistrano Wiki</a></li>
<li><a href="http://devthatweb.com/view/deploy-any-project-using-capistrano-2" rel="nofollow" >Deploy any project using Capistrano 2</a></li>
<li><a href="http://devthatweb.com/view/automate-the-deployment-of-any-php-project-using-capistrano" rel="nofollow" >Automate the deployment of any PHP project using Capistrano 2.0</a></li>
<li><a href="http://weblog.jamisbuck.org/" rel="nofollow"  title="Jamis Buck aka Capistrano Man">Jamis Buck&#8217;s blog</a> (creator, lead developer, and chief inventor of Capistrano <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' title="Deploying Joomla using Capistrano 2.0" />  )</li>
<li><a href="http://safari.oreilly.com/0596529627" rel="nofollow"  title="Capistrano book from O'Reilly">Capistrano and the Rails Application Lifecycle</a> book from O&#8217;Reilly</li>
</ul>
<p><em>Note:</em> Sorry for dual-language posting, any better suggestion? <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' title="Deploying Joomla using Capistrano 2.0" /> </p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/08/14/deploying-joomla-using-capistrano-20/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Twitter API, Gampang Koq :))</title>
		<link>http://www.adaruby.com/2007/08/10/twitter-api-gampang-koq/</link>
		<comments>http://www.adaruby.com/2007/08/10/twitter-api-gampang-koq/#comments</comments>
		<pubDate>Sat, 11 Aug 2007 02:16:53 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Friends]]></category>
		<category><![CDATA[Indonesia]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/08/10/twitter-api-gampang-koq/</guid>
		<description><![CDATA[
			
				
			
		
Tau gak twitter tuh punya API

Ini contoh penggunaannya:
ceefour@ojalanow:~/bin$ salsabeela 'untuk sekarang enak gini'
Sending salsabeela 'untuk sekarang enak gini' '.... OK!
ceefour@ojalanow:~/bin$ salsabeela 'gak perlu mandi tiap hari  '
Sending salsabeela 'gak perlu mandi tiap hari  '.... OK!
ceefour@ojalanow:~/bin$ cat salsabeela
#!/usr/bin/ruby
require "#{File.dirname(__FILE__)}/twitter_pm"
send_pm 'salsabeela', ARGV.join(' ')

isi twitter_pm.rb :
ceefour@ojalanow:~/bin$ cat twitter_pm.rb
require 'rubygems'
gem 'twitter4r', '&#62;=0.2.0'
require 'twitter'
def send_pm(recipient_id, message)
t = Twitter::Client.new(:login [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F10%2Ftwitter-api-gampang-koq%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F10%2Ftwitter-api-gampang-koq%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Twitter API, Gampang Koq :))" alt=" Twitter API, Gampang Koq :))" /><br />
			</a>
		</div>
<p>Tau gak <a href="http://www.twitter.com/" rel="nofollow"  title="Twitter">twitter</a> tuh punya API</p>
<p><a href="http://www.flickr.com/photos/thestatusjoe/624140974/" rel="nofollow"  title="Twittervision"><img src="http://farm2.static.flickr.com/1137/624140974_42d87f9140.jpg?v=0" alt="Twittervision" height="373" width="500" title="Twitter API, Gampang Koq :))" /></a></p>
<p>Ini contoh penggunaannya:</p>
<p><tt>ceefour@ojalanow:~/bin$ salsabeela 'untuk sekarang enak gini'<br />
Sending salsabeela 'untuk sekarang enak gini' '.... OK!<br />
ceefour@ojalanow:~/bin$ salsabeela 'gak perlu mandi tiap hari <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' title="Twitter API, Gampang Koq :))" /> '<br />
Sending salsabeela 'gak perlu mandi tiap hari <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' title="Twitter API, Gampang Koq :))" /> '.... OK!<br />
ceefour@ojalanow:~/bin$ cat salsabeela<br />
#!/usr/bin/ruby<br />
require "#{File.dirname(__FILE__)}/twitter_pm"<br />
send_pm 'salsabeela', ARGV.join(' ')<br />
</tt><br />
isi twitter_pm.rb :</p>
<p><tt>ceefour@ojalanow:~/bin$ cat twitter_pm.rb<br />
require 'rubygems'<br />
gem 'twitter4r', '&gt;=0.2.0'<br />
require 'twitter'</tt></p>
<p><tt>def send_pm(recipient_id, message)<br />
t = Twitter::Client.new(:login =&gt; 'gauldong@gmail.com', :password =&gt; ****************)<br />
message = ARGV.join(' ')<br />
sent = false<br />
begin<br />
recipient = t.user(recipient_id)<br />
rescue<br />
raise("Cannot find user #{recipient_username}")<br />
end<br />
print "Sending #{recipient.screen_name} '#{message}'"<br />
$stdout.flush<br />
sending = Thread.new { t.message(:post, message, recipient); sent= true; }<br />
status = Thread.new { until sent; print '.'; sleep(0.5); $stdout.flush; end }<br />
sending.join<br />
status.join<br />
puts ' OK!'<br />
end<br />
</tt></p>
<p><a href="http://www.flickr.com/photos/36-degrees/502369514/" rel="nofollow"  title="Twittervision"><img src="http://farm1.static.flickr.com/211/502369514_dbe8f830ec.jpg?v=0" alt="Twittervision" height="375" width="500" title="Twitter API, Gampang Koq :))" /></a></p>
<p>ato gini :</p>
<p><tt>ceefour@ojalanow:~/bin$ irb -rubygems<br />
irb(main):001:0&gt; gem 'twitter4r'<br />
=&gt; true<br />
irb(main):002:0&gt; require 'twitter'<br />
=&gt; true<br />
irb(main):003:0&gt; t = Twitter::Client.new(:login =&gt; 'gauldong@gmail.com', :password =&gt; ****************)<br />
=&gt; #&lt;Twitter::Client:0xb773d658 @login="gauldong@gmail.com", @password=****************&gt;<br />
irb(main):004:0&gt; ollie = t.user('salsabeela')<br />
=&gt; #&lt;Twitter::User:0xb7738090 @protected=false, @id=7296272, @profile_image_url="http://assets2.twitter.com/system/user/profile_image/7296272/normal/profileollie.jpg?1183741074", @client=#&lt;Twitter::Client:0xb773d658 @login="gauldong@gmail.com", @password=****************&gt;, @screen_name="salsabeela", @description="What I learn today...", @url="http://blog.salsabeela.com", @location="Jakarta", @name="Ollie"&gt;<br />
irb(main):013:0* for f in ollie.friends; puts f.screen_name; end<br />
popurls<br />
al3x<br />
davewiner<br />
bbcnews<br />
detikcom<br />
ceefour<br />
confession<br />
21c<br />
hotdogsladies<br />
OpinionJournal<br />
cnnbrk<br />
avianto<br />
thomasarie<br />
jenniesbev<br />
twittown<br />
notstevenwright<br />
farry<br />
dhewlett<br />
mbot<br />
kukuhtw<br />
BarackObama<br />
jafrane<br />
javajive<br />
budip<br />
istribawel<br />
enda<br />
timer<br />
Indonesia<br />
unwinged<br />
</tt><br />
lucu kan? =))</p>
<p>thanks to <a href="http://susanpotter.net/" rel="nofollow"  title="Susan Potter">Susan Potter</a> for <a href="http://snakesgemscoffee.blogspot.com/2007/08/higher-leve-bdd-specing-using-rbehave.html" rel="nofollow" >making</a> <a href="http://twitter4r.rubyforge.org/" rel="nofollow"  title="Twitter4r Rubygem">twitter4r</a> gem <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' title="Twitter API, Gampang Koq :))" /> </p>
<p>PS: Twitter tuh apaan sich?!?!? =))</p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/08/10/twitter-api-gampang-koq/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Kemalasan Seorang Ruby Programmer</title>
		<link>http://www.adaruby.com/2007/08/09/kemalasan-seorang-ruby-programmer/</link>
		<comments>http://www.adaruby.com/2007/08/09/kemalasan-seorang-ruby-programmer/#comments</comments>
		<pubDate>Thu, 09 Aug 2007 16:18:57 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Complaints]]></category>
		<category><![CDATA[Indonesia]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/08/09/kemalasan-seorang-ruby-programmer/</guid>
		<description><![CDATA[
			
				
			
		
Kadang-kadang manusia memang keterlaluan malasnya. (pointing at myself)
Bingung gimana caranya mindahin daftar URL yang di Planet Ruby Indonesia ke halaman Daftar Situs Ruby di Wiki Ruby Indonesia.

Jadi ya, terpaksa deh&#8230; pake &#8220;cara lama&#8221;. Select, View Source, Copy&#38;Paste, ketik sedikit kode Ruby&#8230;
ceefour@ojalanow:~$ irb -rubygems -rhpricot
irb(main):001:0&#62; doc = &#60;&#60;HEREDOC
irb(main):002:0" &#60;ul class="links"&#62;
irb(main):003:0" &#60;li class="first"&#62;
irb(main):004:0" &#60;a href="http://adityakircon.blogsome.com/feed/" title="subscribe"&#62;&#60;img src="template/images/ruby_link.png" [...]


Related posts:<ol><li><a href='http://www.adaruby.com/2009/12/14/netbeans-ide-6-8-released-with-enhanced-ruby-on-rails-support/' rel='bookmark' title='Permanent Link: NetBeans IDE 6.8 Released &#8212; with Enhanced Ruby on Rails Support!'>NetBeans IDE 6.8 Released &#8212; with Enhanced Ruby on Rails Support!</a> <small> NetBeans IDE version 6.8 has been released, Sun Microsystems&#8217;...</small></li>
</ol>

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F09%2Fkemalasan-seorang-ruby-programmer%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F09%2Fkemalasan-seorang-ruby-programmer%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Kemalasan Seorang Ruby Programmer" alt=" Kemalasan Seorang Ruby Programmer" /><br />
			</a>
		</div>
<p>Kadang-kadang manusia memang keterlaluan malasnya. (pointing at myself)<br />
Bingung gimana caranya mindahin daftar URL yang di <a href="http://planet.ruby-id.web.id/" rel="nofollow"  title="Planet Ruby Indonesia">Planet Ruby Indonesia</a> ke <a href="http://wiki.ruby-id.web.id/wiki/Daftar_Situs_Ruby" rel="nofollow"  title="Daftar Situs Ruby">halaman Daftar Situs Ruby</a> di <a href="http://wiki.ruby-id.web.id/" rel="nofollow" >Wiki Ruby Indonesia</a>.</p>
<p><a href="http://www.flickr.com/photos/xlacrymosax/1056995539/" rel="nofollow"  title="lazy animal"><img src="http://farm2.static.flickr.com/1409/1056995539_fcb3ba2ad0.jpg?v=0" alt="lazy animal" height="334" width="500" title="Kemalasan Seorang Ruby Programmer" /></a></p>
<p>Jadi ya, terpaksa deh&#8230; pake &#8220;cara lama&#8221;. Select, View Source, Copy&amp;Paste, ketik sedikit kode Ruby&#8230;</p>
<p><code>ceefour@ojalanow:~$ irb -rubygems -rhpricot<br />
<font color="#ccc">irb(main):001:0&gt; doc = &lt;&lt;HEREDOC<br />
irb(main):002:0" &lt;ul class="links"&gt;<br />
irb(main):003:0" &lt;li class="first"&gt;<br />
irb(main):004:0" &lt;a href="http://adityakircon.blogsome.com/feed/" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://adityakircon.blogsome.com" title="Just Try To Be a Bloggrammer"&gt;Aditya Agustyana&lt;/a&gt;<br />
e="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://microjet.ath.cx/WebWiki/WelcomePage.html" title="Gnomic Notes"&gt;Yohanes Santoso&lt;/a&gt;<br />
&lt;/li&gt;<br />
&lt;/ul&gt;<br />
irb(main):005:0" &lt;/li&gt;<br />
irb(main):006:0"<br />
irb(main):007:0" &lt;li &gt;<br />
irb(main):008:0" &lt;a href="http://feeds.feedburner.com/Blogversive" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://andryshuzain.com/" title="Andry S Huzain"&gt;Andry S. Huzain&lt;/a&gt;<br />
irb(main):009:0" &lt;/li&gt;<br />
irb(main):010:0" &lt;li &gt;<br />
irb(main):011:0" &lt;a href="http://ariekusumaatmaja.wordpress.com/feed/" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://ariekusumaatmaja.wordpress.com" title="World of Ruby Indonesia"&gt;Arie Kusuma Atmaja&lt;/a&gt;<br />
irb(main):012:0" &lt;/li&gt;<br />
irb(main):013:0" &lt;li &gt;<br />
irb(main):014:0" &lt;a href="http://thinkruby.org/atom/feed" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://thinkruby.org" title="ThinkRuby"&gt;Budi Susanto&lt;/a&gt;<br />
irb(main):015:0" &lt;/li&gt;<br />
irb(main):016:0" &lt;li &gt;<br />
irb(main):017:0" &lt;a href="http://hendrastation.wordpress.com/feed/" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://hendrastation.wordpress.com" title="hendrastation"&gt;Hendra&lt;/a&gt;<br />
irb(main):018:0"<br />
irb(main):019:0" &lt;/li&gt;<br />
irb(main):020:0" &lt;li &gt;<br />
irb(main):021:0" &lt;a href="http://feeds.feedburner.com/Web2WithRubyOnRails" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://www.adaruby.com" title="Web 2.0 with Ruby on Rails"&gt;Hendy Irawan&lt;/a&gt;<br />
irb(main):022:0" &lt;/li&gt;<br />
irb(main):023:0" &lt;li &gt;<br />
irb(main):024:0" &lt;a href="http://feeds.feedburner.com/JRubyInside" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://www.rubyinside.com/" title="JRuby Inside"&gt;JRuby Inside&lt;/a&gt;<br />
irb(main):025:0" &lt;/li&gt;<br />
irb(main):026:0" &lt;li &gt;<br />
irb(main):027:0" &lt;a href="http://blog.bstrap.com/rss" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://julius.sirait.net/" title="Julius Sirait"&gt;Julius Sirait&lt;/a&gt;<br />
irb(main):028:0" &lt;/li&gt;<br />
irb(main):029:0" &lt;li &gt;<br />
irb(main):030:0"<br />
irb(main):031:0" &lt;a href="http://www.kojack.web.id/feed/atom/" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://www.kojack.web.id" class="message" title="internal server error"&gt;Kojack&lt;/a&gt;<br />
irb(main):032:0" &lt;/li&gt;<br />
irb(main):033:0" &lt;li &gt;<br />
irb(main):034:0" &lt;a href="http://feeds.feedburner.com/mrofiq" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://www.mrofiq.com" title="No Fun No Life"&gt;Muhammad Rofiq&lt;/a&gt;<br />
irb(main):035:0" &lt;/li&gt;<br />
irb(main):036:0" &lt;li &gt;<br />
irb(main):037:0" &lt;a href="http://feeds.feedburner.com/chickenonrails" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://www.diki.or.id/blog/public/chicken-on-rails" title="Hear no chickens, see no chickens, talk no chickens - Chicken on Rails"&gt;Niwatori&lt;/a&gt;<br />
irb(main):038:0" &lt;/li&gt;<br />
irb(main):039:0" &lt;li &gt;<br />
irb(main):040:0" &lt;a href="http://bpdp.wordpress.com/feed/" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://bpdp.wordpress.com" title="bpdp's logs"&gt;Pak Bambang&lt;/a&gt;<br />
irb(main):041:0"<br />
irb(main):042:0" &lt;/li&gt;<br />
irb(main):043:0" &lt;li &gt;<br />
irb(main):044:0" &lt;a href="http://www.ruby-id.web.id/rss/" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://www.ruby-id.web.id/rss/" class="message" title="internal server error"&gt;Ruby Indonesia&lt;/a&gt;<br />
irb(main):045:0" &lt;/li&gt;<br />
irb(main):046:0" &lt;li &gt;<br />
irb(main):047:0" &lt;a href="http://feeds.feedburner.com/RubyInside" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://www.rubyinside.com" title="Ruby Inside"&gt;Ruby Inside&lt;/a&gt;<br />
irb(main):048:0" &lt;/li&gt;<br />
irb(main):049:0" &lt;li &gt;<br />
irb(main):050:0" &lt;a href="http://microjet.ath.cx/WebWiki/wiki.rdf" title="subscribe"&gt;&lt;img src="template/images/ruby_link.png" alt="(RSS feed)" style="vertical-align: text-top; border: 0; padding: 0"&gt;&lt;/a&gt; &lt;a href="http://microjet.ath.cx/WebWiki/WelcomePage.html" title="Gnomic Notes"&gt;Yohanes Santoso&lt;/a&gt;<br />
irb(main):051:0" &lt;/li&gt;<br />
irb(main):052:0" &lt;/ul&gt;<br />
irb(main):053:0" HEREDOC<br />
=&gt; "&lt;ul class=\"links\"&gt;\n&lt;li class=\"first\"&gt;\n&lt;a href=\"http://adityakircon.blogsome.com/feed/\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://adityakircon.blogsome.com\" title=\"Just Try To Be a Bloggrammer\"&gt;Aditya Agustyana&lt;/a&gt;\n&lt;/li&gt;\n\n&lt;li &gt;\n&lt;a href=\"http://feeds.feedburner.com/Blogversive\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://andryshuzain.com/\" title=\"Andry S Huzain\"&gt;Andry S. Huzain&lt;/a&gt;\n&lt;/li&gt;\n&lt;li &gt;\n&lt;a href=\"http://ariekusumaatmaja.wordpress.com/feed/\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://ariekusumaatmaja.wordpress.com\" title=\"World of Ruby Indonesia\"&gt;Arie Kusuma Atmaja&lt;/a&gt;\n&lt;/li&gt;\n&lt;li &gt;\n&lt;a href=\"http://thinkruby.org/atom/feed\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://thinkruby.org\" title=\"ThinkRuby\"&gt;Budi Susanto&lt;/a&gt;\n&lt;/li&gt;\n&lt;li &gt;\n&lt;a href=\"http://hendrastation.wordpress.com/feed/\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://hendrastation.wordpress.com\" title=\"hendrastation\"&gt;Hendra&lt;/a&gt;\n\n&lt;/li&gt;\n&lt;li &gt;\n&lt;a href=\"http://feeds.feedburner.com/Web2WithRubyOnRails\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://www.adaruby.com\" title=\"Web 2.0 with Ruby on Rails\"&gt;Hendy Irawan&lt;/a&gt;\n&lt;/li&gt;\n&lt;li &gt;\n&lt;a href=\"http://feeds.feedburner.com/JRubyInside\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://www.rubyinside.com/\" title=\"JRuby Inside\"&gt;JRuby Inside&lt;/a&gt;\n&lt;/li&gt;\n&lt;li &gt;\n&lt;a href=\"http://blog.bstrap.com/rss\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://julius.sirait.net/\" title=\"Julius Sirait\"&gt;Julius Sirait&lt;/a&gt;\n&lt;/li&gt;\n&lt;li &gt;\n\n&lt;a href=\"http://www.kojack.web.id/feed/atom/\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://www.kojack.web.id\" class=\"message\" title=\"internal server error\"&gt;Kojack&lt;/a&gt;\n&lt;/li&gt;\n&lt;li &gt;\n&lt;a href=\"http://feeds.feedburner.com/mrofiq\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://www.mrofiq.com\" title=\"No Fun No Life\"&gt;Muhammad Rofiq&lt;/a&gt;\n&lt;/li&gt;\n&lt;li &gt;\n&lt;a href=\"http://feeds.feedburner.com/chickenonrails\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://www.diki.or.id/blog/public/chicken-on-rails\" title=\"Hear no chickens, see no chickens, talk no chickens - Chicken on Rails\"&gt;Niwatori&lt;/a&gt;\n&lt;/li&gt;\n&lt;li &gt;\n&lt;a href=\"http://bpdp.wordpress.com/feed/\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://bpdp.wordpress.com\" title=\"bpdp's logs\"&gt;Pak Bambang&lt;/a&gt;\n\n&lt;/li&gt;\n&lt;li &gt;\n&lt;a href=\"http://www.ruby-id.web.id/rss/\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://www.ruby-id.web.id/rss/\" class=\"message\" title=\"internal server error\"&gt;Ruby Indonesia&lt;/a&gt;\n&lt;/li&gt;\n&lt;li &gt;\n&lt;a href=\"http://feeds.feedburner.com/RubyInside\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://www.rubyinside.com\" title=\"Ruby Inside\"&gt;Ruby Inside&lt;/a&gt;\n&lt;/li&gt;\n&lt;li &gt;\n&lt;a href=\"http://microjet.ath.cx/WebWiki/wiki.rdf\" title=\"subscribe\"&gt;&lt;img src=\"template/images/ruby_link.png\" alt=\"(RSS feed)\" style=\"vertical-align: text-top; border: 0; padding: 0\"&gt;&lt;/a&gt; &lt;a href=\"http://microjet.ath.cx/WebWiki/WelcomePage.html\" title=\"Gnomic Notes\"&gt;Yohanes Santoso&lt;/a&gt;\n&lt;/li&gt;\n&lt;/ul&gt;\n"</font><br />
<strong> irb(main):054:0&gt; <font color="green">Hpricot(doc).search('li/a:nth(1)').each { |e| puts "* [#{e[:href]} #{e.inner_text}]" }</font>; nil<br />
* [http://adityakircon.blogsome.com Aditya Agustyana]<br />
* [http://andryshuzain.com/ Andry S. Huzain]<br />
* [http://ariekusumaatmaja.wordpress.com Arie Kusuma Atmaja]<br />
* [http://thinkruby.org Budi Susanto]<br />
* [http://hendrastation.wordpress.com Hendra]<br />
* [http://www.adaruby.com Hendy Irawan]<br />
* [http://www.rubyinside.com/ JRuby Inside]<br />
* [http://julius.sirait.net/ Julius Sirait]<br />
* [http://www.kojack.web.id Kojack]<br />
* [http://www.mrofiq.com Muhammad Rofiq]<br />
* [http://www.diki.or.id/blog/public/chicken-on-rails Niwatori]<br />
* [http://bpdp.wordpress.com Pak Bambang]<br />
* [http://www.ruby-id.web.id/rss/ Ruby Indonesia]<br />
* [http://www.rubyinside.com Ruby Inside]<br />
* [http://microjet.ath.cx/WebWiki/WelcomePage.html Yohanes Santoso]<br />
=&gt; nil<br />
</strong> irb(main):055:0&gt;</code></p>
<p><a href="http://wiki.ruby-id.web.id/wiki/Daftar_Situs_Ruby" rel="nofollow"  title="Daftar Situs Ruby">jadi deh</a> <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' title="Kemalasan Seorang Ruby Programmer" /> </p>
<p><strong>PS:</strong> Sayang yach nggak dibikinin screencastnya.. <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' title="Kemalasan Seorang Ruby Programmer" />  Mungkin ini yang dimaksud <a href="http://ariekusumaatmaja.wordpress.com/" rel="nofollow"  title="Bos Arie Keren">mas Arie</a> dengan coding2 sulit? =))<br />
Hayo sapa yang mau ikutan <a href="http://ariekusumaatmaja.wordpress.com/2007/08/09/menuju-gathering-id-ruby-ke-3-detos-19-agustus-2007-pukul-1130-siang/" rel="nofollow" >gathering 19 agustus</a>??</p>


<p>Related posts:<ol><li><a href='http://www.adaruby.com/2009/12/14/netbeans-ide-6-8-released-with-enhanced-ruby-on-rails-support/' rel='bookmark' title='Permanent Link: NetBeans IDE 6.8 Released &#8212; with Enhanced Ruby on Rails Support!'>NetBeans IDE 6.8 Released &#8212; with Enhanced Ruby on Rails Support!</a> <small> NetBeans IDE version 6.8 has been released, Sun Microsystems&#8217;...</small></li>
</ol></p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/08/09/kemalasan-seorang-ruby-programmer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Unleashing The Potential of the Ruby Community</title>
		<link>http://www.adaruby.com/2007/08/08/unleashing-the-potential-of-the-ruby-community/</link>
		<comments>http://www.adaruby.com/2007/08/08/unleashing-the-potential-of-the-ruby-community/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 09:47:05 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Friends]]></category>
		<category><![CDATA[Indonesia]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/08/08/unleashing-the-potential-of-the-ruby-community/</guid>
		<description><![CDATA[
			
				
			
		
We&#8217;ve got a great language, Ruby. We&#8217;ve got great libraries. We&#8217;ve got great frameworks (including Rails.)
Last but definitely not at least, and simply the most important, is that we&#8217;ve got a great community.
So where do we go from here? For example, from the Ruby Indonesia mailing list, id-ruby&#8230;
Let me summarize this post in one excellent [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F08%2Funleashing-the-potential-of-the-ruby-community%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F08%2Funleashing-the-potential-of-the-ruby-community%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Unleashing The Potential of the Ruby Community" alt=" Unleashing The Potential of the Ruby Community" /><br />
			</a>
		</div>
<p>We&#8217;ve got a great language, <a href="http://www.ruby-lang.org/" rel="nofollow"  title="Ruby Programming Language">Ruby</a>. We&#8217;ve got <a href="http://www.rubyforge.org/" rel="nofollow"  title="Rubyforge">great libraries</a>. We&#8217;ve got great frameworks (including <a href="http://www.rubyonrails.org/" rel="nofollow" >Rails</a>.)</p>
<p>Last but definitely not at least, and simply the most important, is that we&#8217;ve got <a href="http://www.ruby-lang.org/en/community/" rel="nofollow" >a great community</a>.</p>
<p>So where do we go from here? For example, from the <a href="http://www.ruby-lang.org/id/" rel="nofollow"  title="Ruby Indonesia Official Web Site">Ruby Indonesia</a> mailing list, <a href="http://tech.groups.yahoo.com/group/id-ruby/" rel="nofollow"  title="id-ruby mailing list Ruby Indonesia">id-ruby</a>&#8230;</p>
<p>Let me summarize this post in one excellent illustration courtesy of <a href="http://headrush.typepad.com/" rel="nofollow"  title="Creating Passionate Users">Creating Passionate Users</a>:</p>
<p><a href="http://headrush.typepad.com/creating_passionate_users/2007/03/user_community_.html" rel="nofollow" ><img src="http://headrush.typepad.com/photos/uncategorized/2007/03/21/communityvsbudget.jpg" alt="Community ROI at Creating Passionate Users (Kathy Sierra)" height="449" width="389" title="Unleashing The Potential of the Ruby Community" /></a></p>
<p>What follows, is a verbatim concatenation of each of Kathy Sierra and friends&#8217; related articles. Beginning with the one that includes the above picture.</p>
<blockquote>
<h3><a href="http://headrush.typepad.com/creating_passionate_users/2007/03/user_community_.html" rel="nofollow" >User Community and ROI</a></h3>
<p>Every time I give a talk, someone always asks, &#8220;That&#8217;s all good and nice that helping users learn is the key to creating passionate users&#8230; but who&#8217;s going to do all that extra work? Who&#8217;s going to make the extra tutorials and better docs?&#8221; Answer: <em>your user community</em>. Think about all the things a strong user community can do for you: tech support, user training, marketing (evangelism, word of mouth), third-party add-ons, even new product ideas. And that&#8217;s not including any extra sales you might make on community/tribe items like t-shirts, stickers, and other gear.</p>
<p>Yes, there&#8217;s still a budget&#8230; but we&#8217;ve all seen third-party fan/user groups that got <em>no</em> support at all from &#8220;the mother ship&#8221; and yet thrived and gave users a level of support and training the company didn&#8217;t provide. But there&#8217;s still that little of issue of getting users <em>involved</em>, and for that&#8211;the single biggest factor is getting users involved at a much earlier path on their learning journey than typically happens.</p>
<p>This picture is from an earlier post:</p>
<p><a href="http://headrush.typepad.com/photos/uncategorized/2007/03/21/buildingausercommunity.jpg" rel="nofollow" ><img src="http://headrush.typepad.com/photos/uncategorized/2007/03/21/buildingausercommunity.jpg" alt="Buildingausercommunity" border="0" title="Unleashing The Potential of the Ruby Community" /></a></p>
<p>In <a href="http://headrush.typepad.com/creating_passionate_users/2006/12/how_to_build_a_.html" rel="nofollow" >Building a User Community Part 1</a> we talked about the importance of not only a strict &#8220;There Are No Dumb Questions&#8221; policy, but also an even more dedicated &#8220;There Are No Dumb <em>Answers</em>&#8221; message.</p>
<p>Today, this post will offer a few more tips on how to use your marketing budget (tiny as it may be) to build, support, and grow a user community from the beginning.</p>
<p>* Host some kind of discussion forum (can include chat, wikis, and blogs as well), and do whatever it takes to get people there as soon as possible, ideally while the thing is still in beta (but it&#8217;s never too late to start!)</p>
<p>* Look on <em>other</em> third-party forums where users are discussing (which usually means struggling) your product, and find the most active people. Reach out to your earliest adopters or strongest new users and offer them <em>non-paid</em> incentives for becoming active. Chances are, if you have any users at all and your product is even the least bit complicated, people are discussing it <em>somewhere</em>. This could be anywhere from Amazon product reviews to technical discussion boards and even comments on related blogs.</p>
<p>* Make these folks life-time &#8220;charter members&#8221; with special privileges and recognition as &#8216;founders&#8217; that nobody else will ever get.</p>
<p>* Have levels and rewards for participating (but again, not <em>money</em>&#8211;that totally changes the motivation, or at least the <em>perceived</em> motivation). The rewards can simply be status, early access to betas, and especially restricted access to the developers where they can discuss their ideas or at least listen to the engineers and designers describe why they made the choices they did, etc. [Don't reward people for post quantity alone... if post-count is the only criteria, you end up with a zillion useless posts]. Study successful user group communities for examples (like, say, javaranch.com&#8211;3/4 million unique visitors a <em>month</em>).</p>
<p>* <em>Teach</em> users how to help other members by creating documents (or getting other users to write them) on how to ask and answer questions in the most productive way.</p>
<p>* Include some just-for-fun activities in your community, like one (usually ONLY one) totally off-topic forum.</p>
<p>* Make sure there are interesting, easy-access ways for users to get to know more about one another. Be SURE to have user profile pages that include gender, photos, and some other personal info in addition to the specifics related to this particular community. Which leads to&#8230;</p>
<p>* Encourage members to meet <em>offline</em>! Hold a dirt-cheap User&#8217;s Conference, ideally in more than one city, to get things started. Start a forum from the people who sign-up for the conference, and offer user group or forum leaders free entry to the event (and be sure to have a private user group or forum leader cocktail reception). Tips for that are in this <a href="http://headrush.typepad.com/creating_passionate_users/2007/03/sxsw_interactiv.html" rel="nofollow" >recent post on face-to-face</a>). Create a document on <em>How To Start A User Group</em>, and make sure users know how to get it. There is a <em>great</em> series of posts on how to start a user group written by the guys behind the <a href="http://igloocoder.com/archive/2006/06/13/350.aspx" rel="nofollow" >Edmonton .NET User Group</a>. (Thanks guys)</p>
<p>* Encourage forum moderators or other community leaders to have their own private discussion space.</p>
<p>* Don&#8217;t tolerate abuse of the beginners, but don&#8217;t force the experts to have to put up with newbie issues. As any community matures, you must provide separate areas for newbies and experts&#8230; if the community culture is one of generosity and motivation, there will still be enough experts who <em>want</em> to spend time helping newbies.</p>
<p>* Why not help your top community leaders get a book deal? You never know&#8230; if it&#8217;s a tech topic, direct them (or yourself) over to Wiley publisher <a href="http://jwikert.typepad.com/" rel="nofollow" >Joe Wikert</a> for some excellent and candid advice (search his archives, and you&#8217;ll find everything from how to write a proposal, whether you need an agent, etc.)</p>
<p>* Consider starting a monthly &#8220;official&#8221; user group membership subscription, with something that <em>comes in the real mail</em> each month. Think about it. Think about how you feel when Fedex or UPS pulls up with that little Amazon box with the smile on the side. Each month, send them a newsletter or DVD. Where&#8217;s the budget for <em>that</em> content? Get your users involved! Have <em>them</em> submit things, and use the small monthly membership fee to cover the cost of materials and mailing, etc. Maybe you can partner with a sponsor on this, to include other things in the monthly &#8220;kit.&#8221;</p>
<p>* Create limited-edition, not-for-sale t-shirts, stickers, and other gear JUST for the founding community members (if you&#8217;re just getting started in building a community). For ongoing communities, do the same thing and distribute them randomly, for free. Use the principle of &#8220;intermittent variable reward&#8221; that works so well to make slot machines and twitter so addicting ; )</p>
<p>* Make your community leaders or even just active participants HEROES. Create &#8220;superhero&#8221; <a href="http://www.moo.com/" rel="nofollow" >Moo cards</a> for them. Plaster their photos everywhere. (Cute story I heard from a reader here &#8212; she met her husband online while they were both moderators for an Autodesk CAD forum.)</p>
<p>* Host an offline retreat just for the key community leaders. Can&#8217;t afford to do what Microsoft does with its Search Champs? Can&#8217;t afford to put people up at the &#8220;W&#8221;? Have a campout. Supply the marshmallows.</p>
<p>* Above all, keep teaching members to teach other members. Give <em>everyone</em> a <a href="http://headrush.typepad.com/creating_passionate_users/2006/01/crash_course_in.html" rel="nofollow" >crash course in learning theory</a>. The better they become at helping others&#8211;the more skills they develop in mentoring/tutoring others&#8211;the more meaningful and motivating it is for them to <em>keep on doing it.</em>.</p>
<p>These are just a few tips for now. Stay tuned for more. And of course, please add your own&#8230; while I have quite a lot of user group/community experience having launched several groups from scratch, they were all technology-related, and many of you are from very different domains.</p></blockquote>
<p>This one below, is a killer article about the &#8220;chasm&#8221; between newbies and &#8220;experts&#8221;:</p>
<blockquote>
<h3><a href="http://headrush.typepad.com/creating_passionate_users/2006/12/how_to_build_a_.html" rel="nofollow"  title="How to Build Online User Community">How to Build a User Community, Part 1</a></h3>
<p><a href="http://headrush.typepad.com/photos/uncategorized/buildingausercommunity.jpg" rel="nofollow" ><img src="http://headrush.typepad.com/photos/uncategorized/buildingausercommunity.jpg" alt="Buildingausercommunity" border="0" title="Unleashing The Potential of the Ruby Community" /></a></p>
<p>Most user communities take a typical path&#8211;the newbies <em>ask</em> questions, and a select group of more advanced users <em>answer</em> them. But that&#8217;s a slow path to building the community, and it leaves a huge gaping hole in the middle where most users drop out. If we want to keep beginning and intermediate users more engaged (and increase the pool of question <em>answerers</em>), we need them to shift from asker to answerer much earlier in their learning curve. But that leaves two big questions&#8230; 1) How do we motivate them? 2) How do we keep them from giving lame answers?</p>
<p>Actually, this isn&#8217;t the <em>biggest</em> problem with most user communities. The real deal-killer is when a new or beginning user asks a &#8220;dumb&#8221; question. Most supportive, thriving user communities have a culture that encourages users to ask questions, usually through brute-force moderation with a low-to-no-tolerance policy on ridiculing a question. In other words, by forcing participants to &#8220;be reasonably nice to newbies&#8221;, beginners feel safe posing questions without having to start each one with, &#8220;I know this is probably a dumb question, but&#8230;&#8221;</p>
<p>It was precisely that idea that led to the original javaranch&#8230; in 1997, the comp.lang.java newsgroup was just too nasty a place to ask questions. Even if you <em>were</em> brave enough to ask an <em>obviously stupid</em> one, the slamming you got was enough to make it your last. And without users asking questions, the community evaporates.</p>
<p>But most user communities&#8211;especially the new ones&#8211;aren&#8217;t hurting for people <em>asking</em> for help, they&#8217;re in desperate need of people willing to help the newbies. And one of the quickest ways to keep a user community from emerging is when questions go unanswered. So the <em>real</em> problem is getting people to <em>answer</em> questions.</p>
<p><strong>Encouraging a &#8220;There Are No Dumb <em>Questions</em>&#8221; culture is only part of the solution. What we really need is a &#8220;There are No Dumb <em>Answers</em>&#8221; policy.</strong></p>
<p>The best way to grow a user community is to get even the beginners to start answering questions. The more they become involved, the more likely they are to stick with it through the rough spots in their own learning curve, and we all know that having to teach or explain something to another person accelerates our <em>own</em> understanding and memory of the topic. The problem, of course, is that the beginners are&#8230; <em>beginners</em>. So, here are a few tips used by javaranch, one of the most successful user communities on the planet (3/4 million unique visitors each MONTH):</p>
<p><strong>1) Encourage newer users&#8211;especially those who&#8217;ve been active <em>askers</em>&#8211;to start trying to answer questions </strong><br />
One way to help is by making sure that the moderators are not always the Ones Who Know All. Sometimes you have to hold back the experts to give others a chance to step in and give it a try.</p>
<p><strong>2) Give tips on how to answer questions</strong><br />
Post articles and tips on how to answer questions, which also helps people learn to communicate better. You can include tips on how to write articles, teach a tough topic, etc.</p>
<p><strong>3) Tell them it&#8217;s OK to guess a little, as long as they ADMIT they&#8217;re guessing</strong></p>
<p><strong>4) Adopt a near-zero-tolerance &#8220;Be Nice&#8221; policy when people answer questions</strong><br />
Don&#8217;t allow other participants (especially the more advanced users) to slam anyone&#8217;s answer. A lot of technical forums especially are extremely harsh, and have a culture where the regulars say things like, &#8220;If you think that, you have no business answering a question. In fact, you have no business even DREAMING about being a programmer. Better keep your paper hat day job, loser.&#8221;</p>
<p><strong>5)  Teach and encourage the more advanced users (including moderators) how to <em>correct</em> a wrong answer while maintaining the original answerer&#8217;s dignity.</strong><br />
And again, zero-tolerance for a**holes. All it takes is one jerk to stop someone from ever trying it again.</p>
<p><strong>6) Re-examine your reward/levels strategy for your community</strong><br />
Is there a clear way for new users to move up the ranks? Are there achievable, meaningful &#8220;levels&#8221;?</p>
<p>I&#8217;d love to hear some examples of other user communities you think are doing a good job at this. Javaranch isn&#8217;t perfect, but it&#8217;s one of the best I&#8217;ve seen (again, all the best stuff there happened <em>after</em> I turned it over to Paul Wheaton, so I can&#8217;t really take credit).</p>
<p>Also, before you point out counter-examples of successful communities like slashdot&#8230; remember, I&#8217;m talking about <em>user</em> communities&#8211;people using a particular product or service&#8211;and not just <em>any</em> community. I&#8217;m sure there are tons of, say, political forums where a &#8220;be nice&#8221; policy is not only unneccessary, but most likely <em>impossible.</em></p>
<p>Your ideas?</p></blockquote>
<p>And another great one about online communities:</p>
<blockquote>
<h3><a href="http://headrush.typepad.com/creating_passionate_users/2005/06/building_a_succ.html" rel="nofollow" >Building a successful online community</a></h3>
<p><img src="http://headrush.typepad.com/photos/uncategorized/slashdotthread.jpg" alt="Slashdotthread" border="0" title="Unleashing The Potential of the Ruby Community" /></p>
<p><img src="http://headrush.typepad.com/photos/uncategorized/javaranchthread.jpg" alt="Javaranchthread" border="0" title="Unleashing The Potential of the Ruby Community" /><br />
It was March 26, 2003, in the Santa Clara Convention Center in the heart of Silicon Valley. It was the ceremony for the closest thing geeks have to an Oscar&#8211;the Jolt Cola/Software Development Magazine awards.</p>
<p>The last awards category was &#8220;Websites and Developer Networks&#8221;.</p>
<p>First the finalists are announced, with all the usual suspects including Microsoft, IBM, BEA&#8230; and <a href="http://www.javaranch.com/" rel="nofollow" >javaranch</a>. WTF? <em>Javaranch?</em> It had no corporate sponsors. It was not a business. It was a quirky, no-budget all-volunteer community, run entirely by people who just wanted to be a part of it. It was simply a Java &#8220;fan&#8221; site&#8211;but a hugely successful one with numbers most sites would kill for&#8211;<em><strong>over a half-million unique visitors a month.</strong></em></p>
<p>So how did Javaranch do it? (Oh yeah, they did win a 2003 award that night, and the next year as well, beating out Sun&#8217;s java.net and Microsoft for a 2004 Jolt award.)</p>
<h3>They did it by being passionately, single-mindedly, ferociously committed to enforcing one rule: <em>&#8220;Be Friendly.&#8221;</em></h3>
<p>Not that you can&#8217;t have a huge community without that rule&#8230; <a href="http://slashdot.org/" rel="nofollow" >slashdot</a> is the perfect example. But if you&#8217;re trying to inspire <em><strong>passionate users</strong></em>, I believe that enforcing a &#8220;Be Friendly&#8221; rule can be one of the best moves for long-term growth and retention of the community.</p>
<p>[Disclaimer: although I am the original founder of javaranch (in 1997), I'm not responsible for its real success. Most of the growth happened after I turned it over to Paul Wheaton. I gave javaranch its original heart and soul, but it is Paul and all the moderators (Sheriffs and Bartenders) who gave it a body and brain that could actually do something...]</p>
<p>Enforcing a &#8220;be nice&#8221; rule is a big commitment and a risk. People complain about the policy all the time, tossing out &#8220;censorship&#8221; and &#8220;no free speech&#8221; for starters. We see this as a <em>metaphor</em> mismatch. We view javaranch as a great big <em><strong>dinner party</strong></em> at the ranch, where everyone there is a <strong><em>guest</em></strong>. The ones who complain about censorship believe it is a <em>public space</em>, and that all opinions should be allowed. In fact, nearly all opinions <em>are</em> allowed on javaranch. It&#8217;s usually not about <em>what</em> you say there, it&#8217;s <em>how</em> you say it.</p>
<p>And this isn&#8217;t about being politically correct, either. It&#8217;s a judgement call by the moderators, of course. It&#8217;s fuzzy trying to decide exactly what constitutes &#8220;not nice&#8221;, and it&#8217;s determined subjectively by the culture of the ranch. Sexy jokes are usually OK, racial jokes are not. Some perceive the <em>sexy</em> jokes as <em>sexist</em>, and therefore &#8220;not nice&#8221;, but if we would laugh about it with our friends in a somewhat racy dinner party conversation, it stands. Javaranch censors for <em>meanness</em>, not to protect delicate sensibilities. To a lot of folks, that makes us &#8220;not nice&#8221;, but we reckon these are the folks we wouldn&#8217;t invite to our party, either. ; )</p>
<p>There is obviously no way to have a one-size-fits-all &#8220;be nice&#8221; rule; every culture will have its own. A church forum, for example, might draw the line much earlier.</p>
<p>I believe an online community can work with virtually <em>any</em> metaphor (I&#8217;ll keep to myself what I think the slashdot metaphor is&#8230;), but that metaphor determines the kinds of people you attract and keep. The &#8220;frat party&#8221; metaphor supports one type of behavior, while the &#8220;public space&#8221; is another. The &#8220;professional business office&#8221; metaphor is different from the &#8220;passionate user group&#8221; model.</p>
<p>But the really good news is that if you have a strong and consistent culture, <em>whatever that culture is</em>, the community starts moderating itself. Kind of a hundredth-monkey effect&#8230; when enough people are behaving in a certain way, and that hits critical mass, it becomes not only accepted but <em>obvious</em> to everyone when it&#8217;s being violated. (I talked about this earlier with respect to customer service in <a href="http://headrush.typepad.com/creating_passionate_users/2005/02/can_you_teach_s.html" rel="nofollow" >Can you teach someone to care?</a>)</p>
<p>And for a wonderful article by someone who knows far more about online communities and social networks than I ever will, read Clay Shirky&#8217;s speech from 2003 ETech, <a href="http://shirky.com/writings/group_enemy.html" rel="nofollow" >A Group Is Its Own Worst Enemy</a>. Among other things, he talks about the challenges of balancing the idealistic goal of open and free speech with the atmosphere of the online community:</p>
<p><em>&#8220;And then, as time sets in, difficulties emerge. In this case, one of the difficulties was occasioned by the fact that one of the institutions that got hold of some modems was a high school. And who, in 1978, was hanging out in the room with the computer and the modems in it, but the boys of that high school. And the boys weren&#8217;t terribly interested in sophisticated adult conversation. They were interested in fart jokes. They were interested in salacious talk. They were interested in running amok and posting four-letter words and nyah-nyah-nyah, all over the bulletin board.<br />
And the adults who had set up Communitree were horrified, and overrun by these students. The place that was founded on open access had too much open access, too much openness. They couldn&#8217;t defend themselves against their own users. The place that was founded on free speech had too much freedom. They had no way of saying &#8220;No, that&#8217;s not the kind of free speech we meant.&#8221;</em></p>
<p>Pick your metaphor carefully. <strong>Dinner Party</strong> isn&#8217;t for everyone, but it&#8217;s usually my personal favorite for passionate user groups.</p></blockquote>
<p>And everybody is unique, in its truest sense:</p>
<blockquote>
<h3><a href="http://headrush.typepad.com/creating_passionate_users/2005/07/every_user_is_n.html" rel="nofollow" >Every user is new and different&#8230;</a></h3>
<p><img src="http://headrush.typepad.com/photos/uncategorized/firsttime_1.jpg" alt="Firsttime_1" border="0" title="Unleashing The Potential of the Ruby Community" /></p>
<p>Have you ever been told to RTFM? In online forums, especially, I see that response to questions that have obviously been asked a thousand times. &#8220;Read the FAQ&#8221; or &#8220;Do a search&#8211;this has been done to death already.&#8221; And you get the same feeling when you call a tech support line&#8230; that subtle implication that you didn&#8217;t do your homework. That you&#8217;re wasting their time.</p>
<p>Every so often, this issue would come up on  when a moderator would tell someone to do a search, rather than answering (or encouraging anyone else to answer) the poster&#8217;s question. It&#8217;s natural for a moderator to become exasperated or just <em>bored</em> hearing the same question over and over and over again&#8211;especially in the beginner forums. Another moderator would usually give a gentle reminder that, &#8220;for this person, that question is new. This whole <em>topic</em> is new. And if you shut down the question with <em>&#8217;search the archives for that&#8217;</em>, you&#8217;ve killed any chance of someone bringing in a fresh perspective.&#8221; Our policy is to usually encourage the user to search the archives <em>in addition</em> to having a fresh discussion in the forum. The give-them-a-fish-and-teach-them-to-fish-at-the-same-time approach.</p>
<p>It&#8217;s so easy to feel like we&#8217;ve been doing the same thing forever, but <strong>as long as there&#8217;s a new person at the other end of the exchange, it is <em>not</em> the same thing.</strong></p>
<p>I talked about this earlier in <a href="http://headrush.typepad.com/creating_passionate_users/2005/02/creating_passio.html" rel="nofollow" >Creating Passionate Fans</a>, about musicians playing the same music for decades, yet leaving you&#8211;the listener&#8211;feeling like it&#8217;s their first time. Last Saturday, the <a href="http://www.npr.org/templates/story/story.php?storyId=4733904" rel="nofollow" >NPR Weekend Edition interview with Carole King</a> talked about her new &#8220;Welcome to my Living Room&#8221; tour. What got me was her response to Scott Simon&#8217;s question about whether she gets tired of being asked to play one of her hits from 30 years ago&#8230; a song she&#8217;s been playing now for three decades. She said that sometimes it <em>is</em> hard, at first, but then something happens&#8230;</p>
<h3>&#8220;Every audience is new and different, and they breathe new life into the song.&#8221;</h3>
<p>I need to remember this. Every user is new and different. Every <em>reader</em> is new and different. And as long as the <em>user</em> is new, then the experience of their interaction with the product, service, book&#8230; is new and different. Every new user breathes new life into what we create and deliver.</p>
<p>Maybe there&#8217;s something in that thought that you can grab onto when you&#8217;re feeling frustrated or bored. Maybe helping your software developers have more interaction with users can help pull someone back out of the &#8220;phoning it in&#8221; stage. Maybe helping them <em>see</em> the result of their work in a real, human, context would help.</p>
<p>I&#8217;ll leave you with this comment from my earlier post, from Dan Steinberg (editor of Java.net, and former radio guy):</p>
<p><em>&#8220;Many year&#8217;s ago I worked for a radio station where, at the top of every hour, we would say &#8220;WMJI &#8211; Cleveland&#8217;s Magic 105 point 7&#8243;. The reasons were that every station had to identify itself with its call letters and city of license and many stations hid it in a slogan like this. Hour after hour, day after day. In an average year each of us said this roughly 5 * 6 * 50 = 1500 times. Somewhere, someone was hearing it for the first time.</em></p>
<p><em>The program director took us to see Barry Manilow &#8211; it wasn&#8217;t that any of us wanted to see him (or actively didn&#8217;t) but he wanted us to see how Manilow performed songs that he&#8217;d sung hundreds of times over the years. The lesson wasn&#8217;t lost on me.</em></p>
<p><em>As much as this helped me as a jock, it reinvigorated me as a teacher. Someone somewhere was getting the point of the mean value theorem for the first time on the hundredth time I&#8217;d taught it. Each time the discovery felt fresh to me and I hope to them. Thanks for this trip back.</em>&#8221;</p>
<p>Rumor has it that Dan&#8217;s going to put some of his radio expertise back to work in the podcast world, and by remembering that somewhere, someone&#8217;s hearing his podcast for the first time&#8230; I have a feeling he&#8217;ll have something very special.</p>
<p>What do <em>you</em> do to help yourself&#8211;or those who work for you&#8211;keep things fresh?</p></blockquote>
<p>And for a finale, but great as hell, is a <a href="http://www.trizle.com/" rel="nofollow"  title="Trizle business consulting">Trizle</a> business journal article:</p>
<blockquote><p> <a href="http://www.trizle.com/marketing-to-the-masses-begins-slowly-gradually-create-the-buzz/" rel="nofollow"  rel="bookmark" title="Marketing to the Masses Begins Slowly; Gradually Create the Buzz"><strong>Marketing to the Masses Begins Slowly; Gradually Create the Buzz</strong></a></p>
<p><a href="http://www.trizle.com/marketing-to-the-masses-begins-slowly-gradually-create-the-buzz/" rel="nofollow"  rel="bookmark" title="Marketing to the Masses Begins Slowly; Gradually Create the Buzz"></a>When you’re trying to reach a broad base of customers–that is the “mainstream”–it’s an impossible task to do so initially. Customers generally do not buy products because of the great features you have. They buy products because of who else is buying.</p>
<p>Well, if you’re just starting and no one has bought from you–how can you sell your products? Start with the “venturesome innovators.” These are people who like to try new things, and will move on to the next new thing once the current product becomes adopted by the mainstream public.</p>
<p>For example, Beanie Babies didn’t become a success overnight. The brilliant marketers targeted kids from high-class communities first. They did so by selling their products at affluent toy stores.</p>
<p>Once these “venturesome innovators” started bringing their toys to schools, it generated a buzz effect. Affluent kids began to affect those around their schools who wanted to be the “in” crowd.</p>
<p>So how did the mainstream begin to adopt the product? McDonald’s, seeing a great opportunity, decided to offer Beanie Babies as Happy Meal treats. And, as they say, the rest is history.</p>
<p>If you want to get to the masses, start with the few.</p></blockquote>
<p><strong>Conclusion:</strong> So you&#8217;ve got <a href="http://mongrel.rubyforge.org/" rel="nofollow"  title="Mongrel fast HTTP/web server">jets</a>. You&#8217;ve got <a href="http://script.aculo.us/" rel="nofollow"  title="Scriptaculous Javascript library, built-in with Rails">Ferrari&#8217;s</a>. You&#8217;ve got <a href="http://www.nitroproject.org/" rel="nofollow"  title="Nitro and Og for Ruby">Nitro&#8217;s</a> and you even have <a href="http://god.rubyforge.org/" rel="nofollow"  title="Like monit, only awesome.">god</a>.</p>
<p>There&#8217;s only one thing left&#8230; <em>the people who&#8217;ll ride those</em>&#8230;</p>
<p><em>Notes: I really hope Kathy Sierra and friends won&#8217;t mind me copy&amp;paste-ing their articles wholly, verbatim-ly, here. Their articles may be old (chronologically), but they stand the test of time and the ideas and concepts they presented <a href="http://www.amazon.com/gp/product/0596009208?ie=UTF8&amp;tag=gauldong-20&amp;link_code=as3&amp;camp=211189&amp;creative=373489&amp;creativeASIN=0596009208" rel="nofollow"  title="Head First Java book">have been proven</a> in <a href="http://www.javaranch.com/" rel="nofollow"  title="JavaRanch community">the real-world</a>.</em></p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/08/08/unleashing-the-potential-of-the-ruby-community/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby Official Site in Indonesian</title>
		<link>http://www.adaruby.com/2007/08/04/ruby-official-site-in-indonesian/</link>
		<comments>http://www.adaruby.com/2007/08/04/ruby-official-site-in-indonesian/#comments</comments>
		<pubDate>Sat, 04 Aug 2007 17:48:48 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Indonesia]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[Praises]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/08/04/ruby-official-site-in-indonesian/</guid>
		<description><![CDATA[
			
				
			
		
Guess what? Official Ruby site is now available in Indonesian.
Tahu nggak sih&#8230; Situs resmi Ruby sudah pake bahasa Indonesia.
Verbatim quote from the announcement at Ruby Inside:


(English translation of the text below follows)
Situs Resmi Ruby Indonesia telah diluncurkan. Jadi sekarang telah tersedia 9 terjemahan dalam situs web Ruby, belum termasuk beberapa lagi yang masih dalam pengerjaan.
Programmer [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F04%2Fruby-official-site-in-indonesian%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F08%2F04%2Fruby-official-site-in-indonesian%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Ruby Official Site in Indonesian" alt=" Ruby Official Site in Indonesian" /><br />
			</a>
		</div>
<p>Guess what? Official Ruby site <a href="http://www.ruby-lang.org/id/" rel="nofollow" >is now available in Indonesian</a>.</p>
<p>Tahu nggak sih&#8230; <a href="http://www.ruby-lang.org/id/" rel="nofollow" >Situs resmi Ruby sudah pake bahasa Indonesia</a>.</p>
<p>Verbatim quote <a href="http://www.rubyinside.com/indonesian-official-ruby-web-site-launched-576.html" rel="nofollow" >from the </a><a href="http://www.rubyinside.com/indonesian-official-ruby-web-site-launched-576.html" rel="nofollow" >announcement at </a><a href="http://www.rubyinside.com/indonesian-official-ruby-web-site-launched-576.html" rel="nofollow" >Ruby Inside</a>:</p>
<blockquote>
<p><a href="http://www.flickr.com/photos/ariekusumaatmaja/996092833/" rel="nofollow" ><img src="http://farm2.static.flickr.com/1244/996092833_e18e3faa88_m.jpg" title="Ruby Official Site in Indonesian" alt="996092833 e18e3faa88 m Ruby Official Site in Indonesian" /></a></p>
<p><em>(English translation of the text below follows)</em></p>
<p><a href="http://www.ruby-lang.org/id/" rel="nofollow" >Situs Resmi Ruby Indonesia</a> telah <a href="http://ariekusumaatmaja.wordpress.com/2007/08/04/wwwruby-langorgid-rilis/" rel="nofollow" >diluncurkan</a>. Jadi sekarang telah tersedia 9 terjemahan dalam situs web Ruby, belum termasuk beberapa lagi yang masih dalam pengerjaan.</p>
<p>Programmer Indonesia yang menyukai Ruby semakin banyak, berdiskusi menggunakan wadah <a href="http://groups.yahoo.com/groups/id-ruby" rel="nofollow" >milis id-ruby</a>, yang sekarang sudah semakin ramai.</p>
<p>Adanya situs ini diharapkan dapat semakin membantu kemajuan Ruby dan teknologi di tanah air tercinta. Selain berisi materi yang terdapat di situs Ruby versi Inggris, situs ini juga menyediakan materi-materi yang spesifik terhadap komunitas Ruby di Indonesia.</p>
<p>Tim pelaksana proyek ini terdiri dari <a href="http://ariekusumaatmaja.wordpress.com/" rel="nofollow" >Arie Kusuma Atmaja</a>, <a href="http://microjet.ath.cx/" rel="nofollow" >Yohanes Santoso</a>, dan <a href="http://www.hendyirawan.com/" rel="nofollow" >Hendy Irawan</a>.</p>
<p><em>Translation:</em></p>
<p><a href="http://www.ruby-lang.org/id/" rel="nofollow" >Official Ruby web site in Bahasa Indonesia</a> has been <a href="http://ariekusumaatmaja.wordpress.com/2007/08/04/wwwruby-langorgid-rilis/" rel="nofollow" >launched</a>.<br />
This brings the total number of translations available for the entire Ruby web site to 9 languages, in addition to several more translation projects that are still in progress.</p>
<p>The number Indonesian developers interested in Ruby has been growing, discussing topics through the <a href="http://groups.yahoo.com/groups/id-ruby" rel="nofollow" >id-ruby mailing list</a> which is now more active than ever.</p>
<p>Native Indonesian translation of the Ruby official site is hoped to be beneficial to both Ruby and development of technology in Indonesia. In addition to standard content, the Indonesian site also provides Indonesian-specific materials and resources.</p>
<p>The team for this translation project consists of <a href="http://ariekusumaatmaja.wordpress.com/" rel="nofollow" >Arie Kusuma Atmaja</a>, <a href="http://microjet.ath.cx/" rel="nofollow" >Yohanes Santoso</a>, and <a href="http://www.hendyirawan.com/" rel="nofollow" >Hendy Irawan</a>.</p></blockquote>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/08/04/ruby-official-site-in-indonesian/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Feed RSS Planet Ruby Indonesia pindah ke FeedBurner</title>
		<link>http://www.adaruby.com/2007/07/10/feed-rss-planet-ruby-indonesia-pindah-ke-feedburner/</link>
		<comments>http://www.adaruby.com/2007/07/10/feed-rss-planet-ruby-indonesia-pindah-ke-feedburner/#comments</comments>
		<pubDate>Wed, 11 Jul 2007 04:55:59 +0000</pubDate>
		<dc:creator>ceefour</dc:creator>
				<category><![CDATA[Indonesia]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://adaruby.com/2007/07/10/feed-rss-planet-ruby-indonesia-pindah-ke-feedburner/</guid>
		<description><![CDATA[
			
				
			
		
Buat para subscriber Planet Ruby Indonesia, feed RSS Planet Ruby Indonesia sekarang pindah ke:
http://feeds.feedburner.com/PlanetRubyIndonesia
Anda disarankan untuk meng-update feed aggregator Anda dengan feed RSS yang baru ini.
Situs Planet Ruby Indonesia sudah di-update untuk merefleksikan perubahan ini.
Perubahan ini diberlakukan untuk menggunakan fasilitas statistik yang disediakan oleh FeedBurner
Feed RSS yang lama masih bisa dipakai sampai batas waktu yang [...]


No related posts.

Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F07%2F10%2Ffeed-rss-planet-ruby-indonesia-pindah-ke-feedburner%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.adaruby.com%2F2007%2F07%2F10%2Ffeed-rss-planet-ruby-indonesia-pindah-ke-feedburner%2F&amp;source=AdaRubyWeb&amp;style=normal&amp;service=bit.ly" height="61" width="50" title="Feed RSS Planet Ruby Indonesia pindah ke FeedBurner" alt=" Feed RSS Planet Ruby Indonesia pindah ke FeedBurner" /><br />
			</a>
		</div>
<p>Buat para <em>subscriber</em> <a href="http://planet.ruby-id.web.id/" rel="nofollow" >Planet Ruby Indonesia</a>, feed RSS Planet Ruby Indonesia sekarang pindah ke:</p>
<p><big><a href="http://feeds.feedburner.com/PlanetRubyIndonesia" rel="nofollow" ><strong>http://feeds.feedburner.com/PlanetRubyIndonesia</strong></a></big></p>
<p>Anda disarankan untuk meng-<em>update</em> <em>feed aggregator </em>Anda dengan feed RSS yang baru ini.</p>
<p>Situs Planet Ruby Indonesia sudah di-<em>update</em> untuk merefleksikan perubahan ini.</p>
<p>Perubahan ini diberlakukan untuk menggunakan fasilitas statistik yang disediakan oleh FeedBurner</p>
<p>Feed RSS yang lama masih bisa dipakai sampai batas waktu yang belum ditentukan. <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' title="Feed RSS Planet Ruby Indonesia pindah ke FeedBurner" /> </p>
<p><em>Note:</em> For English subscribers, sorry, this is a regional message just because this is the only blog of mine that&#8217;s aggregated by <a href="http://planet.ruby-id.web.id/" rel="nofollow" >Planet Ruby Indonesia</a>. <img src='http://www.adaruby.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' title="Feed RSS Planet Ruby Indonesia pindah ke FeedBurner" /> </p>


<p>No related posts.</p>
<p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.adaruby.com/2007/07/10/feed-rss-planet-ruby-indonesia-pindah-ke-feedburner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
