<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>Al Hoang &#187; geek</title>
	<atom:link href="http://blogs.law.harvard.edu/hoanga/category/tech/geek/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.law.harvard.edu/hoanga</link>
	<description>Just another weblog</description>
	<lastBuildDate>Wed, 09 Sep 2009 06:52:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
		<item>
		<title>Automating Zone creation in OpenSolaris 2009.06</title>
		<link>http://blogs.law.harvard.edu/hoanga/2009/06/02/automating-zone-creation-in-opensolaris-200906/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2009/06/02/automating-zone-creation-in-opensolaris-200906/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 13:02:14 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/?p=737</guid>
		<description><![CDATA[With the announcement of OpenSolaris 2009.06 I thought it would be appropriate to blog a little about a tool I had been writing to help myself play with Zones a bit easier.  
My overall goals were the following:

Have each zone configured with its own virtual NIC (Crossbow)
Allow easy creation of zones without having to [...]]]></description>
			<content:encoded><![CDATA[<p>With the <a href="http://www.sun.com/aboutsun/pr/2009-06/sunflash.20090601.1.xml">announcement of OpenSolaris 2009.06</a> I thought it would be appropriate to blog a little about a tool I had been writing to help myself play with Zones a bit easier.  </p>
<p>My overall goals were the following:</p>
<ul>
<li>Have each zone configured with its own virtual NIC (<a href="http://opensolaris.org/os/project/crossbow/">Crossbow</a>)</li>
<li>Allow easy creation of zones without having to type zonecfg crap over and over again</li>
<li>Make it a stepping stone to automatically creating zones</li>
<li>See how well ipkg branded Zones work</li>
<li>Allow a Zone to get its IP and DNS configuration from DHCP</li>
</ul>
<p>I had tried going through tutorials that I found on the web (See references below) for setting up Zones but sadly none of them worked to my frustration.  After a lot of experimentation I finally pieced together a way to create zones quickly and (almost) automatically for simple configurations.</p>
<h3>Howto</h3>
<ol>
<li>Create a template zone that will be used as the main clone Zone</li>
<li>Download <a href="http://gist.github.com/122220">setup-zone-exclusive.sh</a> and modify lines 34-35 to match the name of your template zone and the real interface you want the zones to bind to</li>
<li>Download the DHCP event hook script from <a href="http://www.linuxtopia.org/online_books/opensolaris_2008/SYSADV3/html/extkj.html">here</a> and name it dhcp-client-event.sh if you want DHCP configuration</li>
<li>Run setup-zone-exclusive with the zonename and the virtual nic interface that you want</li>
</ol>
<p>In more detail here are the steps below</p>
<h4>First create a template zone (I call it barebones here)</h4>
<blockquote><p>
# Create /zones as its own ZFS filesystem<br />
$ pfexec zfs create rpool/zones<br />
$ pfexec zfs set mountpoint=/zones rpool/zones<br />
$ pfexec zfs create rpool/zones/barebones<br />
$ pfexec chmod 0700 /zones/barebones<br />
$ pfexec dladm create-vnic -l $REAL_IF vnic0<br />
$ pfexec zonecfg -z barebones<br />
barebones: No such zone configured<br />
Use &#8216;create&#8217; to begin configuring a new zone.<br />
zonecfg:barebones&gt; create<br />
zonecfg:barebones&gt; set zonepath=/zones/barebones<br />
zonecfg:barebones&gt; set ip-type=exclusive<br />
zonecfg:barebones&gt; add net<br />
zonecfg:barebones:net&gt; set physical=vnic0<br />
zonecfg:barebones:net&gt; end<br />
zonecfg:barebones&gt; exit</p>
<p>$ pfexec zoneadm -z barebones install
</p></blockquote>
<h4>Get the script</h4>
<p>I would suggest you create a project directory to hold things such as <em>zonecreations</em>.</p>
<p>Download from Github gists <a href="http://gist.github.com/122220">here</a>.   Name it setup-zone-exclusive.sh. Don&#8217;t forget to chmod +x the file so you can execute it</p>
<h4>Download the DHCP event hook script</h4>
<p>You can get that <a href="http://www.linuxtopia.org/online_books/opensolaris_2008/SYSADV3/html/extkj.html">here</a>.  Make sure this script is in the same directory as wherever you saved setup-zone-exclusive.sh</p>
<h4>Create a zone</h4>
<p>You can now create zones like this:</p>
<blockquote><p>
cd zonecreations<br />
pfexec ./setup-zone-exclusive.sh mycoolnewzone  virtualnic1
</p></blockquote>
<p>Have fun!</p>
<p>Update:  Fixed an error in the example for using dladm.  It should be correct now.  Thanks!</p>
<h3> References </h3>
<h4>Downloads</h4>
<p><a href="http://gist.github.com/122220">http://gist.github.com/122220 (setup-zone-exclusive.sh)</a><br />
<a href="http://www.linuxtopia.org/online_books/opensolaris_2008/SYSADV3/html/extkj.html">A DHCP event script to make sure DNS is configured when DHCP acquires an IP</a></p>
<h4>Older docs on setting up Zones on Solaris</h4>
<p><a href="http://www.mail-archive.com/zones-discuss@opensolaris.org/msg04174.html">How to use sysidcfg file in OpenSolaris 2008.11</a><br />
<a href="http://docs.sun.com/app/docs/doc/819-2450/z.login.ov-14?a=view">Internal Zone Configuration docs</a> <br />
<a href="http://docs.sun.com/app/docs/doc/819-2450/z.login.task-31?a=view">Performing the Initial Zone configuration</a> <br />
<a href="http://docs.sun.com/app/docs/doc/819-5776/6n7r9js2j?a=view">Preconfiguring with sysidcfg file</a> <br />
<a href="http://opensolaris.org/os/community/zones/faq/#cfg_sysidcfg">OpenSolaris FAQ on sysidcfg</a> <br />
<a href="http://www.cuddletech.com/blog/pivot/entry.php?id=751">Ben Rockwood&#8217;s blogpost on Zone creation</a>  <br />
<a href="http://docs.sun.com/app/docs/doc/819-2450/gbrmi?a=view">About /etc/.UNCONFIGURED</a> </p>
<h4>Helpful for understanding Zones and Crossbow</h4>
<p><a href="http://blogs.sun.com/stw/entry/crossbow_is_delivered_traveling_vnics">Crossbow on vnics</a></p>
<h4>Finding out that there is a change in policy for setting root_password in sysidcfg files</h4>
<p><a href="http://opensolaris.org/os/community/on/flag-days/pages/2008111501/">PASSREQ is enforced</a> <br />
<a href="https://www.opensolaris.org/jive/thread.jspa?messageID=329028&amp;#329028">zlogin failure after zone setup</a> </p>
<h4>The following helped in understanding the role of IPS and ipkg inside a non-global Zone</h4>
<p><a href="http://blogs.sun.com/jerrysblog/entry/updating_zones_on_opensolaris_2008">Updating Zones in OpenSolaris 2008.x</a> <br />
<a href="http://blogs.sun.com/dp/date/20080512">A field guide to Zones in OpenSolaris 2008.05</a> <br />
<a href="https://www.opensolaris.org/jive/thread.jspa?threadID=102287&amp;tstart=15">OpenSolaris forum on sysidcfg and Zones</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2009/06/02/automating-zone-creation-in-opensolaris-200906/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Insert the current filename into current edited file in vim</title>
		<link>http://blogs.law.harvard.edu/hoanga/2009/03/12/insert-the-current-filename-into-current-edited-file-in-vim/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2009/03/12/insert-the-current-filename-into-current-edited-file-in-vim/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 07:32:22 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[fixes]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/?p=717</guid>
		<description><![CDATA[I had a need for inserting the name of the current file into a bunch of files I was editing.  I was pretty sure there was a function to do this in vim and after some searching I was right.
To insert the current filename.  In Insert Mode, type CTRL-r % and it will [...]]]></description>
			<content:encoded><![CDATA[<p>I had a need for inserting the name of the current file into a bunch of files I was editing.  I was pretty sure there was a function to do this in vim and after some searching I was right.</p>
<p>To insert the current filename.  In Insert Mode, type <em>CTRL-r</em> <em>%</em> and it will insert the current filename.</p>
<p>Thanks to <a href="http://mamchenkov.net/wordpress/2006/08/15/vim-tip-quickly-insert-current-filename/">blog post</a> for the tip!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2009/03/12/insert-the-current-filename-into-current-edited-file-in-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Writely, years in the making, months in execution</title>
		<link>http://blogs.law.harvard.edu/hoanga/2009/01/02/writely-years-in-the-making-months-in-execution/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2009/01/02/writely-years-in-the-making-months-in-execution/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 19:31:23 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/?p=710</guid>
		<description><![CDATA[A nice back story on Writely (what is now known as Google Docs) via HN.  I particularly like this snippet

[The creators] have been in the application software business for nearly 20 years&#8230;   they understand the user problem so deeply that they can blend the advantages of each new platform with ‘document authoring [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://earlystagevc.typepad.com/earlystagevc/2006/03/sam_steve_and_j.html">nice back story</a> on Writely (what is now known as Google Docs) via <a href="http://news.ycombinator.com/item?id=417323">HN</a>.  I particularly like this snippet</p>
<blockquote><p>
[The creators] have been in the application software business for nearly 20 years&#8230;   they understand the user problem so deeply that they can blend the advantages of each new platform with ‘document authoring problem’ to really build a platform-native solution, not a clone of someone else’s work.
</p></blockquote>
<p><a href="http://earlystagevc.typepad.com/earlystagevc/2006/03/sam_steve_and_j.html">Read more</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2009/01/02/writely-years-in-the-making-months-in-execution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>On the origins of the name Akihabara</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/12/22/on-the-origins-of-the-name-akihabara/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/12/22/on-the-origins-of-the-name-akihabara/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 02:37:11 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[japan]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/?p=707</guid>
		<description><![CDATA[Akihabara as many people in Japan know was originally the home for buying electronic goods in the Tokyo area.   It still holds that reputation however the Anime Otaku crowd have changed the face of Akihabara to also accomodate their needs and desires.
One thing that is interesting is the origin of place name Akihabara. [...]]]></description>
			<content:encoded><![CDATA[<p>Akihabara as many people in Japan know was originally the home for buying electronic goods in the Tokyo area.   It still holds that reputation however the Anime Otaku crowd have changed the face of Akihabara to also accomodate their needs and desires.</p>
<p>One thing that is interesting is the origin of place name Akihabara.   A friend of mine has an excellent post <a href="http://www.iknow.co.jp/users/xaky/journal/2008/11/21/105542-where-does-the-name-akihabara-come-from">here</a></p>
<p><a href="http://www.iknow.co.jp/users/xaky/journal/2008/11/21/105542-where-does-the-name-akihabara-come-from">Read more!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/12/22/on-the-origins-of-the-name-akihabara/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Understanding what an L2ARC is</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/11/29/understanding-what-an-l2arc-is/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/11/29/understanding-what-an-l2arc-is/#comments</comments>
		<pubDate>Sat, 29 Nov 2008 15:13:41 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[solaris]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/?p=703</guid>
		<description><![CDATA[I&#8217;ve been silently scanning some Solaris blogs and skimming some of the appropriate websites for documentation on some of the more interesting features of Solaris for awhile now.  One thing that requires time to adjust to is the number of acronyms that the Solaris community has to describe their technologies.  One of these [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been silently scanning some Solaris blogs and skimming some of the appropriate websites for documentation on some of the more interesting features of Solaris for awhile now.  One thing that requires time to adjust to is the number of acronyms that the Solaris community has to describe their technologies.  One of these is called <a href="//blogs.sun.com/brendan/entry/test¨">L2ARC</a>.</p>
<p>At first I thought it was some hardware device however after a bit more searching it turns out that it is part of the <a href="//en.wikipedia.org/wiki/ZFS¨">ZFS</a> technology suite.  L2ARC stands for second level ARC where ARC is a read cache system for ZFS that uses a system´s main memory for holding the cache.  While ARC uses the hardware´s main memory, L2ARC is designed to take advantage of faster I/O media such as SSD devices to provide faster read throughput than what a typical hard drive can offer.</p>
<p>Brendan Gregg has an <a href="//blogs.sun.com/brendan/entry/test¨">excellent overview</a> explaining what the L2ARC is and some of the benefits it can give in accelerating random reads.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/11/29/understanding-what-an-l2arc-is/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Linux is a woman</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/11/10/linux-is-a-woman/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/11/10/linux-is-a-woman/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 10:06:22 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/?p=698</guid>
		<description><![CDATA[I love this quote

It&#8217;s obvious that GNU/Linux is a woman. She&#8217;s high maintenance, expects
everything to be given to her for free, and no matter what goes wrong&#8230;
it&#8217;s your fault.

]]></description>
			<content:encoded><![CDATA[<p>I love this quote</p>
<blockquote><p>
It&#8217;s obvious that GNU/Linux is a woman. She&#8217;s high maintenance, expects<br />
everything to be given to her for free, and no matter what goes wrong&#8230;<br />
it&#8217;s your fault.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/11/10/linux-is-a-woman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>When Despair.com meets Stackoverflow</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/09/23/when-despaircom-meets-stackoverflow/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/09/23/when-despaircom-meets-stackoverflow/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 14:24:36 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/?p=695</guid>
		<description><![CDATA[
Via Kvardek-du through Planet Lisp
]]></description>
			<content:encoded><![CDATA[<p><a href="http://1.bp.blogspot.com/_RNP4gnlxdnU/SM_w2igx10I/AAAAAAAAAKc/PWQq2hoOKTY/s1600-h/automotivator.jpg" title="poster adapted from Jeff Atwood's announcement, built with Xach's Auto Motivator"><img style="margin:0px auto 10px;text-align:center" src="http://1.bp.blogspot.com/_RNP4gnlxdnU/SM_w2igx10I/AAAAAAAAAKc/PWQq2hoOKTY/s400/automotivator.jpg" border="0" alt="Stack Overflow, none of us is as dumb as all of us" /></a></p>
<p>Via <a href="http://kvardek-du.kerno.org/2008/09/lisp-at-stack-overflow.html">Kvardek-du</a> through <a href="http://planet.lisp.org">Planet Lisp</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/09/23/when-despaircom-meets-stackoverflow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Multiple renaming utilities: mmv</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/07/16/multiple-renaming-utilities-mmv/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/07/16/multiple-renaming-utilities-mmv/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 07:58:05 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[fixes]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/2008/07/16/multiple-renaming-utilities-mmv/</guid>
		<description><![CDATA[There are many multiple file rename utilities that you can dig up.
One that I am used to on Debian/Ubuntu-based distros is called  rename which is one that is derived from the Perl Cookbook.   However, note that this rename script does not seem to exist on other UNIX variants in a packaged format. [...]]]></description>
			<content:encoded><![CDATA[<p>There are many multiple file rename utilities that you can dig up.</p>
<p>One that I am used to on Debian/Ubuntu-based distros is called  <a href="http://www.perlmonks.org/?node_id=632437">rename</a> which is one that is derived from the Perl Cookbook.   However, note that this rename script does not seem to exist on other UNIX variants in a packaged format.  It definitely does not seem to exist on a Fedora Core 9 box I use nor does it exist on a FreeBSD machine.</p>
<p>While it would not be too hard to swipe the perl script and copy it in place onto a system.  I hate having to remember moving that script around and around with me from place to place so I looked around for other equivalents and found one called <a href="http://linux.maruhn.com/sec/mmv.html">mmv</a>.  One nice thing is that there are packages for at least FreeBSD, FC9, and Debian/Ubuntu variants so it should be quite lazy to install compared to rename.</p>
<p>Below I give an example of using it to do a multiple renaming where I want to append the value <em>1</em> to the end of a bunch of filenames.</p>
<pre>
$ ls
cat_100  cat_15  cat_200  cat_50  cat_500
</pre>
<pre>
$ mmv cat"*" cat#1_1
$ ls
cat_100_1  cat_15_1  cat_200_1  cat_500_1  cat_50_1
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/07/16/multiple-renaming-utilities-mmv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>RubyKaigi 2008 Day 1 The Lightning Talks</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/06/22/rubykaigi-2008-day-1-the-lightning-talks/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/06/22/rubykaigi-2008-day-1-the-lightning-talks/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 14:36:29 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/2008/06/22/rubykaigi-2008-day-1-the-lightning-talks/</guid>
		<description><![CDATA[Lightning talks are one of the more interesting parts of a conference in my opinion since 5 minutes really forces the speaker to get to the point and it becomes painfully obvious if the presentation has no focus or if there has been real work to get across the main message in the shortest amount [...]]]></description>
			<content:encoded><![CDATA[<p>Lightning talks are one of the more interesting parts of a conference in my opinion since 5 minutes really forces the speaker to get to the point and it becomes painfully obvious if the presentation has no focus or if there has been real work to get across the main message in the shortest amount of time.</p>
<p>So here are some highlights</p>
<h4>Kuwata on Java to Ruby</h4>
<ul>
<li>No, not the book Java to Ruby</li>
<li>Going from Java to Ruby requires a change in mindset.  Not a change of code</li>
<li>Some historical example:  COBOL in Java (ed.  That sounds frightening) is like Java in Ruby</li>
<li>Don&#8217;t hold back experts and too many things spend too much time on beginners</li>
<li>Do not keep beginners as beginners (teach them!)</li>
<li>Bragging about the largeness of a project size is the wrong type of bragging (suggested large code + many devs == lack of ability</li>
</ul>
<h4>dRuby &amp; Security by Nishiyama</h4>
<ul>
<li>druby is not built by default to handle the wild Internet</li>
<li>There is a feature called insecure method list that will help prevent certain methods from being invocated remotely</li>
<li>Use $SAFE however it won&#8217;t save against a DoS.  Also don&#8217;t forget about rlimit</li>
</ul>
<h4>Ruby + ODE by Sasaki</h4>
<ul>
<li>Showed a very nice 3D demo walkthrough world controlled with a Wii-mote and looked like the Pitagora Switch world</li>
<li>Can summon objects pressing one of the buttons</li>
<li>Can stop time</li>
<li>The project should be on Code Repos</li>
<li>(ed. Seeing this in action was far more interesting than reading these notes)</li>
</ul>
<li>Do Beginners Dream Enumerators?  by Imai</li>
<ul>
<li>Conclusion first: Sorry they don&#8217;t</li>
<li>Showed some very nice examples of using the Enumerator library for many bad cases (each_slice)</li>
<li>Beginning Ruby programmers really love each to the point of going overboard</li>
</ul>
<h4>Folk programming with Ruby by mootoh</h4>
<ul>
<li>Folk Programming was introduced at YAPC Asia 2008 (See my <a href="/hoanga/2008/05/15/yapc-day-1-notes/">notes</a>)</li>
<li>Show examples outside of building web applications such as Rich UI exploration</li>
<li>Showed examples of Plugins to other programs since it&#8217;s easier than writing a big app (although with Ruby the apps should be nice and small)</li>
<li>Some examples:  Safari + Hatena bookmark, Quicksilver + Twitter (looks dangerous), Quartz Composer + Gainer, Vim + Refe</li>
<li>Ruby is a very good glue</li>
</ul>
<h4>Again as a Rubyist&#8230; toRuby by Ikezawa</h4>
<ul>
<li>(ed. I liked this talk a lot since it wasn&#8217;t by some uber-Ruby hacker)</li>
<li>Didn&#8217;t use Ruby until 2000</li>
<li>Background was as a consultant since 1984.  Helped found a Wapro Kissaten!</li>
<li>Moving to Ruby hit the OOP barrier.  Was not used to OOP methodologies at all</li>
<li>Stopped however after a long time in June 2007, found a local Ruby guru to help him out and that got the ball rolling again</li>
<li>Invites others to join in</li>
</ul>
<h4>Ruby 1.9 with Rails 2.1 by matsuda</h4>
<ul>
<li>Went through the history of web programming (or his version of it)</li>
<ul>
<li>Ancient History &#8211; PHP</li>
<li>Recent History &#8211; DB Framework with ORM (in Java&#8230; lots of these frameworks)</li>
<li>Current &#8211; Rails</li>
</ul>
<li>However DB access is a Rails weakness</li>
<li>Introduced named_scope feature (Is this a Rails 2.1 specific feature? Need to review this myself</li>
<li>More info on this at <a href="http://blog.dio.jp">blog.dio.jp</a></li>
</ul>
<h4>Read code with Testing by Endoh</h4>
<ul>
<li>Rookie Ruby Committed</li>
<li>His suggestion on learning is by reading real code</li>
<li>Use TBCR (Test Based Code Reading)</li>
<ul>
<li>Run make test-all</li>
<li>Find code paths that are never executed</li>
<li>Add tests (requires more code reading)</li>
</ul>
<li>Using this method have increased Ruby&#8217;s test coverage to 85%</li>
<li>In contrast Python is 80%, Perl 63%, PHP is 51% (plans to target PHP next)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/06/22/rubykaigi-2008-day-1-the-lightning-talks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>RubyKaigi Day 1 The Matz Keynote</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/06/22/rubykaigi-day-1-the-matz-keynote/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/06/22/rubykaigi-day-1-the-matz-keynote/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 14:14:24 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/2008/06/22/rubykaigi-day-1-the-matz-keynote/</guid>
		<description><![CDATA[Okay this is my notes from Matz&#8217;s Keynote.  I was 5 minutes late since finding lunch took a really long time to find anything around the area unfortunately. Unfortunately, most of the visiting Rubyists decided to do KFC however Charles Nutter decided to stick it through and we finally found a nice Yakiniku restaurant [...]]]></description>
			<content:encoded><![CDATA[<p>Okay this is my notes from Matz&#8217;s Keynote.  I was 5 minutes late since finding lunch took a really long time to find anything around the area unfortunately. Unfortunately, most of the visiting Rubyists decided to do KFC however Charles Nutter decided to stick it through and we finally found a nice Yakiniku restaurant to eat at but that ended up being the reason I was 5 minutes late&#8230; okay anyways here are my notes from in the middle of the talk&#8230;</p>
<p>Matz was talking about sanctuaries and how some technologies have built their sanctuaries over time.  Here are some sanctuaries he mentioned and some of their defining characteristics:</p>
<ul>
<li>UNIX</li>
<ul>
<li>The filter (wahoo!)</li>
<li>&#8220;Worse is better&#8221; aka the New Jersey School of Design (I always ask myself just how much worse though..)</li>
<li>Convenience over perfection</li>
</ul>
<li>Smalltalk</li>
<ul>
<li>OOP, deep OOP</li>
<li>Targeted at children (funny how only greybeards really use this language now discounting eToys)</li>
<li>Bytecode VM but not the first to have one but one of the more prominent ones</li>
<li>A dynamic language implementation with decades of hard-earned experience, wisdom and knowledge around it</li>
</ul>
<li>java</li>
<ul>
<li>Well Java seems to fulfill business and &#8216;enterprise needs&#8217; (for now)</li>
<li>Java was originally slow however time has changed that perception.  Java&#8217;s speed complaints have mostly faded away (But I still complain about a 30 second startup time for the VM)</li>
<li>Absorbed many other ideas from other languages (VM, Garbage Collection, Exception Handling)</li>
<li>Java has one of the fastest Garbage Collected VMs now (with the amount of engineering effort thrown at it I&#8217;d hope so)</li>
</ul>
<p>Matz then describes that Sanctuaries tend to go through the following phases</p>
<ul>
<li>Hackers gathered</li>
<li>New technology is born</li>
<li>The world changed (because of the technology?  Missed this&#8230;)</li>
</ul>
<p>Don&#8217;t forget about centripetal forces during these stages.  The community matters quite a bit.  According to Matz, 50% of the types of OSes out there in this world are some type of UNIX.</p>
<p>Finally, he goes on to describe the Ruby Sanctuary and its defining characteristics</p>
<ul>
<li>For Rubyists, feeling matters.  Focus on the human and the joys programming</li>
<li>It inherited many things from the past.  Lisp metaprogramming, Smalltalk OOP, UNIX text processing</li>
<li>Productivity matters.  Machines are faster but people&#8217;s time is much more expensive</li>
<li>Agility matters.   Environments change and embracing the changes is the right thing</li>
</ul>
<p>At this point a person from Rakuten comes up on stage and talks about some projects that Matz has been collaborating with.</p>
<p>One is called ROMA which is some sort of distributed memory data storage (think memcached with some more ability for data integrity in case of failures)</p>
<p>The other one is called fairy which is supposed to be a lightweight distributed programming framework.</p>
<p>Unfortunately it seems that both projects are rather delayed and it doesn&#8217;t seem apparent if these projects will be Open Sourced or not.  That is rather disappointing to me but can&#8217;t have everything for free now can we?</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/06/22/rubykaigi-day-1-the-matz-keynote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>RubyKaigi 2008 Day 1 Part 3 Notes</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/06/22/rubykaigi-2008-day-1-part-3-notes/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/06/22/rubykaigi-2008-day-1-part-3-notes/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 14:00:42 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/2008/06/22/rubykaigi-2008-day-1-part-3-notes/</guid>
		<description><![CDATA[Evan Phoenix on Rubinius
Evan started off with a quick intro on Rubinius and proceeded to talk about some of the big pieces of Rubinius from a 10,000 feet high view.

The kernel of the system
The C Compatibility Layer
It&#8217;s a big project and Evan wants to have a conversation with anyone who wants to have one on [...]]]></description>
			<content:encoded><![CDATA[<h3>Evan Phoenix on Rubinius</h3>
<p>Evan started off with a quick intro on Rubinius and proceeded to talk about some of the big pieces of Rubinius from a 10,000 feet high view.</p>
<ul>
<li>The kernel of the system</li>
<li>The C Compatibility Layer</li>
<li>It&#8217;s a big project and Evan wants to have a conversation with anyone who wants to have one on it</li>
</ul>
<p>For the VM nerds here are some feature highlights&#8230;</p>
<ul>
<li>Accurate generational Garbage Collector</li>
<li>Bytecode based VM</li>
<li>Capable of bootstrapping itself</li>
</ul>
<p>Evan suggested we should think of Rubinius sort of like an OS.</p>
<p>Then he started diving right into a tour of some of the cool internals of Rubinius and explaining some of the internal objects that really are the heart of Rubinius (above the VM layer)</p>
<p>BTW what is the &lt;&lt;?  Evan coins it the left chevron.</p>
<li>MethodContext &#8211; Lets one see information regarding a method and the context surrounding it</li>
<li>CompiledMethod &#8211; Peek at the bytecodes of a method!</li>
<li>BlockContext &#8211; Tell me all the information about a block.   Can capture a compiled block and inspect byte codes</li>
<li>SendSite &#8211; One per place where a call is performed.  By caching information on this, can speed up method dispatch</li>
</ul>
<p>With MethodContext and CompiledMethod it&#8217;s possible to implement eval in Ruby and follow the principle of <a href="http://www.defmacro.org/ramblings/lisp.html">Code as Data</a>.  Taking advantage of Ryan Davis&#8217;s ParseTree (included in Rubinius) one can take something like</p>
<p><code>"1 + 1".to_sexp</code></p>
<p>Which will take <em>1 + 1</em> and change it into an s-expression, convert it into an AST, and a User Visitor Pattern implementation can walk through this and spit out bytecode.  (I might have recollected this wrong.. if so, sorry..  Not a VM implementor)</p>
<p>Some other big features that Evan mentioned were</p>
<ul>
<li>Extensions</li>
<ul>
<li>Getting close to running Ruby C-extensions</li>
<li>However they are still 2nd-class citizens (they will take a performance hit but working is better than fast and broken)</li>
<li>MRI in this case is still faster</li>
</ul>
<li>Multi-VM implementation</li>
<ul>
<li>stdin and stdout are implemented as pipes</li>
<li>Functional but still highly experimental (can try calculating Pi across a multi-core machine)</li>
<li><em>args = ["-e", "puts", "hello"]<br />
vm = Rubinius::Vm.spawn args <br />
puts vm.stdout.gets
</li>
</ul>
<li>Channels</li>
<ul>
<li>One of the main internal communication channels used in Rubinius</li>
<li>I/O events use channels for example</li>
</ul>
</ul>
<p>Then Evan goes on to showing some cool demo of implementing Binding.of_caller in front of the audience.  He also showed one neat thing about rbx.  If you run a command it will load irb automatically assuming you want a REPL (cool!)</p>
<h4>Q &amp; A</h4>
<ul>
<li>Q: What are your final goals with Rubinius?</li>
<li>A: Have an image like SmallTalk?   The VM only knows about byte codes not Ruby.  Could even write an implementation of SmallTalk on the Rubinius VM however Evan said he has no plans to</li>
<li>Q: Anything on shared benchmark testing?</li>
<li>A: (Matz) There has been movements to start collecting code as of last week.  Trying to make sure that it is more &#8216;real world&#8217; code benchmarks.  There should be an Infoq article on this. <br />
(Evan) Started on this.  Check out GitHub for more info</li>
<li>Q: How&#8217;s the performance?</li>
<li>A: No really hard numbers on Rubinius&#8217; performance.  Some things have gotten faster over time such as the generational part.  Awhile ago Evan wrote a bunch of small benchmarks to test things out but seems to have misplaced them somewhere</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/06/22/rubykaigi-2008-day-1-part-3-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>RubyKaigi 2008 Day 1 Part 2 Notes</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/06/21/rubykaigi-2008-day-1-part-2-notes/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/06/21/rubykaigi-2008-day-1-part-2-notes/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 21:31:54 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/2008/06/21/rubykaigi-2008-day-1-part-2-notes/</guid>
		<description><![CDATA[Here&#8217;s a continuation of my scribbled notes from the RubyKaigi.  This one from the JRuby implementors.  Some of my own thoughts and comments are inserted in parentheses.
Charles Nutter on JRuby

Quick intro and the impressive live demos of JRuby in action (or as the IRC channel said Nice Live Coding (NLC))
This summer, work on [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a continuation of my scribbled notes from the RubyKaigi.  This one from the JRuby implementors.  Some of my own thoughts and comments are inserted in parentheses.</p>
<h3>Charles Nutter on JRuby</h3>
<ul>
<li>Quick intro and the impressive live demos of JRuby in action (or as the IRC channel said Nice Live Coding (NLC))</li>
<li>This summer, work on Ruby 1.9 features (seems there&#8217;s an option flag to turn on 1.9 compatibility mode already)</li>
<li>Current 1.1.3 Progress Report</li>
<ul>
<li>A new interpreter that is up to 30% faster</li>
<li>Compile-time performance enhancements</li>
<li>Many Rails Bottlenecks fixed</li>
</ul>
<li>No new release of JRuby this year but&#8230;</li>
<li>Wanted to show some uses of JRuby</li>
<ul>
<li>IDEs (NetBeans, Eclipse, INtelliJ use JRuby in their IDEs</li>
<li>Swing GUI development</li>
<ul>
<li>Swing development can be very complex but Ruby helps to simplify it</li>
<li>Benefits from the &#8216;Write once, Run everywhere&#8217;</li>
<li>There are a plethora of options to choose from (why does this seem to happen in the Java world all the time?)</li>
<ul>
<li>Cheri</li>
<li>Profligacy (by the infamous Rails Ghetto-man Zed Shaw)</li>
<li>MonkeyBars (Proceeded to show an impressive demo)</li>
<ul>
<li>MonkeyBars leverages existing GUI utils (that&#8217;s a major plus)</li>
<li>MVC-like structure (hey looks like Rails&#8230;)</li>
</ul>
</ul>
</ul>
<li>Graphics (Showed some really sweet demos of ruby-processing in action)</li>
<ul>
<li>Processing had a way to interface to audio input devices</li>
<li>Remember to check out &#8220;A Face for Stephen Hawking&#8221;.  Wow that code looked really clean&#8230;</li>
</ul>
<li>Rails (the benchmark app that all implementors need to measure implementation readiness by)</li>
<ul>
<li>There has been a shift in Java Web frameworks lately (but still happening at a glacial pace)</li>
<li>Deployment problem is &#8220;solved&#8221; (I keep hearing this&#8230;)</li>
<li>mongrel is &#8220;old school&#8221; (at least for JRuby-based deployments)</li>
<li>Made mention of Phusion/Passenger but it still had the issue of rails process spawning and how to manage that (Seems Jruby doesn&#8217;t have these issues)</li>
<li>Some war deployment demoes</li>
<ul>
<li>A warbler demo (A tool to help create war files)</li>
<li>Will package in Jruby automagically into the war (That&#8217;s very nice)</li>
<li>Just run warble inside the rails application directory (Hopefully it doesn&#8217;t package up a gigantic development.log)</li>
<li>As simple as <em>GLASSFISH_HOME/bin/asadmin deploy *.war</em></li>
<li>Has Rack supoprt (can handle Merb and anything else with Rack support</li>
<li>Can be configurable</li>
<li>From his demo, it seems that warble will make a war of anything (aka be careful what directory you run this command)</li>
</ul>
<li>Showed some really nice benchmarks of rails and JRuby (I need to put this through the ringer when I get more time)</li>
<li>Showed another deployment tool called the glassfish gem</li>
<ul>
<li>3MB gem that had everything needed for JRuby on Rails</li>
<li>Tries to match the agile process</li>
</ul>
</ul>
<li>JRuby Users (in production): CSI&#8217;s Disease Surveillance, Oracle&#8217;s Mix website, Sun&#8217;s Media Cast, Thoughtworks Mingle</li>
</ul>
</ul>
<h4>Q &amp; A</h4>
<ul>
<li>Q: The Parser Implementation seems hard.  Any war stories</li>
<li>A: I hate parsers and refuse to write one.  Someone wrote something that used J.  I don&#8217;t know much about it but Tom&#8217;s pains dealing with it seem very hard.  No plans to change parsers anytime in the near future.</li>
<li>Q: Object Space &amp; Binding</li>
<li>A: On Jruby, this will incur an automatic performance penalty.  binding &amp; caller will be required each time which incurs a heavy cost</li>
<li>Q: Non-local break performance?</li>
<li>A: Implemented as a Java Exception.  By doing this, the JVM can optimize that as a Jump.  JRuby tries to use this as much as possible behind the scenes for performance</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/06/21/rubykaigi-2008-day-1-part-2-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>RubyKaigi 2008 Day 1 Part 1 Notes</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/06/21/rubykaigi-2008-day-1-part-1-notes/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/06/21/rubykaigi-2008-day-1-part-1-notes/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 21:08:57 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/2008/06/21/rubykaigi-2008-day-1-part-1-notes/</guid>
		<description><![CDATA[Ruby Kaigi 2008 is happening.  I&#8217;m sure there other posts on the Ruby Kaigi happening however here are some of my own hasty scribbles for anyone that cares&#8230;
Introduction Speech

This is the 3rd year of the conference
One theme of this year is multiple implementatios
More people coming into the Ruby community and we need to greet [...]]]></description>
			<content:encoded><![CDATA[<p>Ruby Kaigi 2008 is happening.  I&#8217;m sure there other posts on the Ruby Kaigi happening however here are some of my own hasty scribbles for anyone that cares&#8230;</p>
<h3>Introduction Speech</h3>
<ul>
<li>This is the 3rd year of the conference</li>
<li>One theme of this year is multiple implementatios</li>
<li>More people coming into the Ruby community and we need to greet the (Dave Thomas&#8217; speech from last year)</li>
<li>Two tracks this year (I mostly followed the main track)</li>
</ul>
<p>The first set of presentations from the main track were from the Ruby implementors.</p>
<h3>Koichi SASADA &#8211; Ruby VM Development</h3>
<ul>
<li>1.9.0-2 released as of 6/20/2008 (mainly bug fixes)</li>
<li>A little discussion of 1.9.1 Roadmap (Something about 1.9.1 being the more stable release?)</li>
<li>A plethora of interpreters available now (lists all of them)</li>
<li>Sasada-san felt a little sheepish over Matz mentioning taking only about technology is &#8216;boring&#8217; since his talk focused on mainly technology</li>
<li>University of Tokyo has become a haven for since Sasada-san now has a laboratory (wahoo!) which means&#8230;</li>
<ul>
<li>Ruby related research-projects</li>
<li>Student Research Projects on Ruby</li>
</ul>
<li>Parallel Thread Execution</li>
<ul>
<li>Better multi-core support</li>
<li>Memory resource usage (or was that resource contention?) can be a problem</li>
</ul>
<li>Multiple-VMs</li>
<ul>
<li>Run Multiple VMs in same Ruby process</li>
<li>Jruby + Nakada-san are the primary drivers</li>
<li>The JRuby guys are ready to implement it (waiting on API) and Rubinius seems to have one already</li>
</ul>
<li>API done</li>
<li>bootstrap done</li>
<li>Creation of interpreter mostly done (seems to have some small issues?)</li>
<li>Still needs documentation (What project doesn&#8217;t?)</li>
</ul>
<li>High Performance Computing (HPC) on Ruby</li>
<ul>
<li>Ruby implementations needs FP optimization for HPC</li>
<li>Ruby 1.9.x quite fast compared to other implementations (according to the Benchmarks Sasada-san showed)</li>
</ul>
<li>Atomic Ruby (aka Customizeable Ruby)</li>
<ul>
<li>Create an Optimal interpreter for &#8220;you&#8221;</li>
<li>Make it easier for Ruby to be used in embedded environments</li>
<li>Make it easier for Ruby customized for specific environments (iPhone anyone?)</li>
<li>Make it possible to plug in and out the core pieces</li>
<li>Byte code serialization and embedded</li>
<li>Make the GC customizeable</li>
</ul>
<li>More work  memory optimizations (Sounded like there was the need for more profiling)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/06/21/rubykaigi-2008-day-1-part-1-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>mod_rails aka passenger == nice &amp;&amp; easy</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/06/19/mod_rails-aka-passenger-nice-easy/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/06/19/mod_rails-aka-passenger-nice-easy/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 15:55:28 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tech]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/2008/06/19/mod_rails-aka-passenger-nice-easy/</guid>
		<description><![CDATA[I looked over mod_rails today and realized how nice and easy looking it was to install.
The general install process is:
1. Install rubygems
2. Run gem install passenger
3. passenger-install-apache2-module
4. Follow the instructions and install any missing dependencies (it actually is smart enough to detect which ones you need before splatting itself into the filesystem)
5. Add some lines [...]]]></description>
			<content:encoded><![CDATA[<p>I looked over <a href="http://www.modrails.com/ ">mod_rails</a> today and realized how nice and easy looking it was to install.</p>
<p>The general install process is:</p>
<p>1. Install rubygems<br />
2. Run gem install passenger<br />
3. passenger-install-apache2-module<br />
4. Follow the instructions and install any missing dependencies (it actually is smart enough to detect which ones you need before splatting itself into the filesystem)<br />
5. Add some lines into the apache conf somewhere, declare a virtual host and point DocumentRoot to the public folder of the desired Rails app</p>
<p>By piggypacking onto the gems installation infrastructure they made it really simple to install even without support from native package managers (although my hope is that it will be as easy as apt-get install modrails one day).</p>
<p>However, always the skeptic I decided to give it a quick and dirty test run and lo&#8217; and behold it really is as easy as advertised and looks like it&#8217;s working okay.</p>
<p>Impressive stuff.  Now I just need to read a little more on how it actually works (seems to hand off to some sort of backend process that is intelligent enough to spawn a set number of backend rails processes as needed and kills any that are idle off or continue serving if things are busy).  So for those of you looking to deploy rails within an apache setup, this might be a nice and simple way (assuming you have access to manage the apache server process) to integrate rails within Apache.</p>
<p>I&#8217;m still unclear how many rails apps can be multiplexed on a realistic basis with one Apache installation with this method but a little bit of trial and error should give some ideas.</p>
<p><a href="http://www.modrails.com/">Read more on mod rails</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/06/19/mod_rails-aka-passenger-nice-easy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Happy half-a-decade blog</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/06/18/happy-half-a-decade-blog/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/06/18/happy-half-a-decade-blog/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 01:24:26 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[stupid]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/2008/06/18/happy-half-a-decade-blog/</guid>
		<description><![CDATA[Yeesh, I just looked at the date of my first post and it&#8217;s been a whole 5 years since I started blogging here.
What have I learned?  People who blog multiple times a day must either have some kick-ass tools to do it quickly or way too much time.  I seem to have neither [...]]]></description>
			<content:encoded><![CDATA[<p>Yeesh, I just looked at the date of my first post and it&#8217;s been a whole 5 years since I started blogging here.</p>
<p>What have I learned?  People who blog multiple times a day must either have some kick-ass tools to do it quickly or way too much time.  I seem to have neither so this blog gets infrequently updated.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/06/18/happy-half-a-decade-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>The Rails Horde at RailsConf 2008</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/05/30/the-rails-horde-at-railsconf-2008/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/05/30/the-rails-horde-at-railsconf-2008/#comments</comments>
		<pubDate>Fri, 30 May 2008 16:30:13 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/2008/05/30/the-rails-horde-at-railsconf-2008/</guid>
		<description><![CDATA[Egads&#8230; so&#8230; many&#8230; Rails&#8230; zombies

]]></description>
			<content:encoded><![CDATA[<p>Egads&#8230; so&#8230; many&#8230; Rails&#8230; zombies</p>
<p><a href="http://www.flickr.com/photos/x180/2533749663/"><img src="http://farm3.static.flickr.com/2304/2533749663_7e847e60fb.jpg?v=0" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/05/30/the-rails-horde-at-railsconf-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Animoto riding the EC2 wave</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/05/21/animoto-riding-the-ec2-wave/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/05/21/animoto-riding-the-ec2-wave/#comments</comments>
		<pubDate>Wed, 21 May 2008 13:59:08 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[scaling]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/2008/05/21/animoto-riding-the-ec2-wave/</guid>
		<description><![CDATA[Animoto sounds like an interesting service.  Take some photos (and videos?) and some music or choose some already available and they remix it into a music video automatically.  Don&#8217;t like the mix?  Hit retry.  Cool stuff&#8230;
Here&#8217;s a juicy quote from their blog post on Jeff Bozos talking about them:


This is about [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://animoto.com/">Animoto</a> sounds like an interesting service.  Take some photos (and videos?) and some music or choose some already available and they remix it into a music video automatically.  Don&#8217;t like the mix?  Hit retry.  Cool stuff&#8230;</p>
<p>Here&#8217;s a juicy quote from their <a href="http://blog.animoto.com/2008/04/21/amazon-ceo-jeff-bezos-on-animoto/">blog post</a> on Jeff Bozos talking about them:</p>
<blockquote>
<p>
This is about 50 EC2 instances down here. Their Facebook app kind of broke through. And so this is their Facebook app taking off. This is just three days ago, April 16th.
</p>
<p>
You can see they’ve gone from 50 instances of EC2 usage up to 3,500 instances of EC2 usage. It’s completely impractical in your own data center over the course of three days to scale from 50 servers to 3,500 servers. Don’t try this at home.
</p>
</blockquote>
<p>Great showcase for <a href="http://en.wikipedia.org/wiki/Cloud_computing">Cloud Computing</a>.  Too bad not ALL applications can take advantage of Cloud Computing.  But glad to see ideas that can.</p>
<p><a href="http://blog.animoto.com/2008/04/21/amazon-ceo-jeff-bezos-on-animoto/">Read more</a></p>
<p>And oh yes&#8230; since their frontend is a Rails app of course <a href="http://www.google.com/search?client=safari&amp;rls=en-us&amp;q=rails+can't+scale&amp;ie=UTF-8&amp;oe=UTF-8">it can&#8217;t scale</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/05/21/animoto-riding-the-ec2-wave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Volcanic Eruption in Chile</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/05/18/volcanic-eruption-in-chile/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/05/18/volcanic-eruption-in-chile/#comments</comments>
		<pubDate>Sun, 18 May 2008 14:43:36 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[geek]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/2008/05/18/volcanic-eruption-in-chile/</guid>
		<description><![CDATA[
Wow&#8230;  thanks John
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/bldgblog/2475394863/"><img src="http://farm3.static.flickr.com/2371/2475394863_234b0a78f9.jpg?v=0"></a></p>
<p>Wow&#8230;  thanks <a href="http://jmettraux.wordpress.com">John</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/05/18/volcanic-eruption-in-chile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Yapc Asia 2008 Day 1 Notes</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/05/15/yapc-day-1-notes/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/05/15/yapc-day-1-notes/#comments</comments>
		<pubDate>Thu, 15 May 2008 15:02:29 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/2008/05/15/yapc-day-1-notes/</guid>
		<description><![CDATA[Okay first day at YAPC&#8230;
Missed most of the opening speeches and Larry Wall&#8217;s Keynote.. d&#8217;oh.  Then again trying to handle the incoming rush of attendees was quite the experience.  I&#8217;d say jumbled is a good word for how we handled it but at least it got handled.  It&#8217;s pretty hard handling the [...]]]></description>
			<content:encoded><![CDATA[<p>Okay first day at YAPC&#8230;</p>
<p>Missed most of the opening speeches and Larry Wall&#8217;s Keynote.. d&#8217;oh.  Then again trying to handle the incoming rush of attendees was quite the experience.  I&#8217;d say jumbled is a good word for how we handled it but at least it got handled.  It&#8217;s pretty hard handling the Japanese Incoming Rush that seems such a common phenomenon in Japan.</p>
<h3>Perl as a Second Language Notes</h3>
<p>Sat in on the Perl as a Second Language Talk.  Here are some of my messy notes</p>
<ul>
<li>There is one than one way to say it</li>
<li>Some languages pay more attention to certain details than others (Lots of ways to say cousin in Chinese vs Japanese and English)</li>
<li>Showed some examples of Hello World in other languages</li>
<ul>
<li>The Ruby example hung!  D&#8217;oh!   No that isn&#8217;t because Ruby is slow&#8230;.</li>
<li>Showed the ever popular Y-Combinator example in Scheme then showed a Perl version</li>
</ul>
<li>One beneficial thing about expresstivity languages is the ability to skip saying the obvious</li>
<li>What makes Perl different?</li>
<ul>
<li>Perl does not have OOP built-in (Yes&#8230; I know)</li>
<li>Shows an example using autobox</li>
<li>Perl can be a good language for learning OOP (because you can learn to make your own OO system)</li>
<li>Dan defines an Object to be data that knows what to do (I welcome our self-aware Object overlords)</li>
<li>Perl objects are references! (D&#8217;oh, I need to understand what a reference is&#8230; I&#8217;ll just assume pointer&#8230;)</li>
<li>Shows an example of objects with the Mom class and Daughter class</li>
<li><em>our @ISA</em> defines parent-child class relationship in Perl</li>
</ul>
<li>Implementing is&#8230;</li>
<ul>
<li>References &#8211; for storing data</li>
<li>bless &#8211; teach data how to find it? (Sorta spaces out here)</li>
</ul>
<li>More than one way to implement OO (no kidding, look at CLOS)</li>
<li>&#8220;1&#8243; + &#8220;1&#8243; is not &#8220;11&#8243; because Perl is a context-oriented language</li>
<li>However 1 . 1 IS 2   (Operators tell you a lot about what to do I guess)</li>
<li>perl -MO=Deparse is handy&#8230;</li>
<li>DWIM &#8211; Context is important for this (Somehow I don&#8217;t think I&#8217;ll ever get a computer to DWIM)</li>
</ul>
<h3>The other talks</h3>
<p>After that&#8230; somehow I missed most of the others.. oh yeah I was busy trying to volunteer but I did manage to catch </p>
<p><a href="http://conferences.yapcasia.org/ya2008/talk/973">‎mizzy&#8217;s &#8211; ‎Easy system administration programming with a framework &#8211; フレームワークでシステム管理プログラミングをもっと簡単に‎</a> </p>
<h3>Easy system administration programming with a framework</h3>
<ul>
<li>It&#8217;s called <a href="http://coderepos.org/share/wiki/Punc">Punc</a> (Perl Unified Network Controller)</li>
<li>I learned about <a href="http://coderepos.org">CodeRepos</a> which seems to be a popular SourceForge-like area for Japanese (Perl) hackers&#8230;</li>
<li>Punc looks like a clone of puppet except it uses JSON instead of XML-RPC for the data format to transfer</li>
<li>Looks like it&#8217;s still bleeding edge software (checkout from trunk and play with it)</li>
<li>Uses a Facter clone called PFacter (Are these two interchangeable?  That would be realllly nice&#8230; otherwise you suck for making yet another clone that does the same thing but can&#8217;t be interchangeable&#8230;)</li>
<li>Dude where&#8217;s your <a href="http://coderepos.org/share/browser/lang/perl/Punc/trunk/t">test cases</a>?</li>
<li>I somehow missed the reasons for writing Punc (Although because I can seems like a good enough reason for many&#8230;.)</li>
<li>I guess if you REALLY want Perl for a Config Management system and don&#8217;t mind getting your hands dirty with sending patches this might work but I&#8217;m not wedded to any particular language but I am wedded to a more mature implementation</li>
<li>I&#8217;m sticking with Puppet</li>
</ul>
<p>Afterwards came <a href="http://conferences.yapcasia.org/ya2008/talk/1031">Lightning Talks</a> which were really good.  Here&#8217;s my blurry recollection of them (wish I took notes&#8230;)</p>
<ul>
<li>One presenter seemed to have gotten close to written a Perl OS (Perl Machine)&#8230; whoah&#8230;</li>
<li>One presenter showed an interesting aggregator named Plagger (or was that Fastladder) that supposedly could aggregate anything on the web (supported authenticated sites yaaay) including one IRC commentors suggestion that it could be a perfect tool to aggregator pr0n pics</li>
<li>TT-something template looked nifty&#8230; wish Ruby had that</li>
<li>Text::MicroMason looked also nifty since it seemed like an ERB-clone so that&#8217;s less learning</li>
<li>Vroom::Vroom is quite impressive  (VIM as your presentation tool)</li>
<li>Developing Amazon&#8217;s Dynamo in POE and Erlang showed some interesting contrasts between how the messaging would work if implemented in POE versus Erlang</li>
</ul>
<p>Lightning Talks are probably one of my favorite events in a conference since 5 minutes really forces you to get to the point.  There was also the dinner party which is what I guess you could expect from large amounts of geeks with large amounts of food and booze.  Okay last day coming up!  I need sleep&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/05/15/yapc-day-1-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>YAPC Asia 2008 RejectConf Notes</title>
		<link>http://blogs.law.harvard.edu/hoanga/2008/05/14/yapc-asia-2008-rejectconf-notes/</link>
		<comments>http://blogs.law.harvard.edu/hoanga/2008/05/14/yapc-asia-2008-rejectconf-notes/#comments</comments>
		<pubDate>Wed, 14 May 2008 15:24:18 +0000</pubDate>
		<dc:creator>hoanga</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blogs.law.harvard.edu/hoanga/2008/05/14/yapc-asia-2008-rejectconf-notes/</guid>
		<description><![CDATA[I&#8217;m at YAPC Asia this year working as a volunteer.  It&#8217;s interesting mingling with the Perl folk especially since I&#8217;m not a Perl person but am curious to know more about the Perl community.
Anyways here are my scribbling notes that I&#8217;ve taken
SoozyConf

This is the nickname for Perl&#8217;s RejectConf
Should bother to look up why it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m at <a href="http://conferences.yapcasia.org/ya2008/">YAPC Asia</a> this year working as a volunteer.  It&#8217;s interesting mingling with the Perl folk especially since I&#8217;m not a Perl person but am curious to know more about the Perl community.</p>
<p>Anyways here are my scribbling notes that I&#8217;ve taken</p>
<h3>SoozyConf</h3>
<ul>
<li>This is the nickname for Perl&#8217;s RejectConf</li>
<li>Should bother to look up why it&#8217;s called that</li>
</ul>
<h4>scaffoldなんてもう古い、HTMLからコードを自動生成するページ駆動開発とは &#8211; ひがやすをさん</h4>
<ul>
<li>I missed most of this talk</li>
<li>Seems to be like <a href="http://amrita.sourceforge.jp/">Amrita for Ruby</a> but for Java?</li>
<li>Not so interesting for me so maybe lucky I did miss out most of this</li>
</ul>
<h4>liftで日本で10本の指にはいる方法(what&#8217;s lift) &#8211; Yoshiori</h4>
<ul>
<li>Talks about the <a href="http://liftweb.net/index.php/Main_Page">Lift</a> Web Framework (for Scala)</li>
<li>Pretty humorous intro to Scala and Lift</li>
<li>Goes through a Rails-like demo in getting started</li>
<li>Getting started seems to require svn, maven, java 1.5</li>
<li>That&#8217;s one big ugly maven command you have to run to get bootstrapped&#8230; this due to it being in development?</li>
<li>It&#8217;s mostly just &#8216;read the code and examples&#8217; if you want learn at this state</li>
</ul>
<h4>トランプ・スキャナβ(playing card scanner beta) &#8211; kuboon</h4>
<ul>
<li>This one was very cool</li>
<li>kuboon was also the MC for SoozyConf</li>
<li>Geek Magician or Magician Geek</li>
<li>Wifi-enabled scanning device?  (Looked like a mouse pad to me&#8230;)</li>
<li>Either way some really interesting twists on card tricks with that &#8216;playing card scanner&#8217;</li>
<li>Fingerprinting identification used in a very amusing way</li>
</ul>
<h4>Nanto素敵な平城京(Nanto, yet another waf) &#8211; tokuhirom</h4>
<ul>
<li>Write your own web framework in 3 hours</li>
<li>Got lost in the details&#8230; sorry</li>
</ul>
<h4>HTTP::Engine Yappo</h4>
<ul>
<li>This is sort of like Ruby&#8217;s <a href="http://rack.rubyforge.org/">Rack framework</a> but for Perl</li>
<li>From code examples, the simple seemed simple.  (But so is Webrick)</li>
<li>Doesn&#8217;t have a plugin architecture it seems</li>
<li>I got lost seeing these application stacks&#8230;</li>
</ul>
<h4>Rubyへの愛憎(Tusndere at Ruby) &#8211; gunyaraway</h4>
<ul>
<li>I thought this was going to be about Ruby</li>
<li>Was a very amusing music video with some jamming pachinko techno to all the things that could drive you nuts about Perl</li>
<li>The idea of Perl aggravations to a dance beat sounds very amusing and probably easier in remembering those gotchas</li>
</ul>
<h4>Paul Bakaus (‎pbakaus‎) &#8211; ‎The inner works of jQuery‎</h4>
<ul>
<li>Was really excited to listen to this</li>
<li>My Javascript suckiness caught up to me and I was mostly lost after the first few slides</li>
<li>Need to do more JavaScript hacking to see what was interesting about what I saw</li>
<li>Showed off helpers, custom events, namespaced events and why these are helpful</li>
<li>The helpers are actually things used in jQuery core itself</li>
</ul>
<h4>	Faiz Kazi (‎fuzz‎) &#8211; ‎The Little Javascripter: Higher-Order Javascript‎</h4>
<ul>
<li>Title sounded cool and I wanted to like this but&#8230; the content was not as interesting for me</li>
<li>Lots of talk about Lisp and Scheme.  That&#8217;s fine but I knew most of what he was talking about, unfortunately so I spaced out around here</li>
<li>Pointed out Douglas Crockford wrote The Little JavaScripter which is a JS version of the Little Schemer</li>
<li>Had some examples showing how to insert into different parts of a list in Lisp and the JS equivalents</li>
<li>Mentioned Higher Order Perl</li>
<ul>
<li>Most interesting comparison was Common Lisp is to Perl as Scheme is to Javascript</li>
</ul>
<li>Ran out of time at this point and it started getting interesting at this point&#8230; d&#8217;oh</li>
</ul>
<h4>	Futoshi Koresawa (‎SaK‎) &#8211; ‎Devel::DFire‎</h4>
<ul>
<li>Name confounded me</li>
<li>A Dtrace wrapper for Perl&#8230; neato</li>
<li>Seemed easy to wrap around a web framework and help profile</li>
<li>He also mentioned Devel::DTrace and mod_dtrace (grrr competing implementations???)</li>
</ul>
<p>UPDATE:</p>
<p>Just found a link to <a href="http://soozy.org/?ErogeekConference1">Ero Geek Conference</a> on the Soozy website.   Neato.  Also there were a lot more females than I expected at this SoozyConf/RejectConf/Perl Conference.   Guess that&#8217;s just a sign of Perl being more mainstream than Ruby!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.law.harvard.edu/hoanga/2008/05/14/yapc-asia-2008-rejectconf-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license>
	</item>
	</channel>
</rss>
