<?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>Eigenjoy &#187; shell</title>
	<atom:link href="http://eigenjoy.com/category/shell/feed/" rel="self" type="application/rss+xml" />
	<link>http://eigenjoy.com</link>
	<description>a programming blog</description>
	<lastBuildDate>Wed, 14 Dec 2011 18:22:45 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>install enchant dictionaries</title>
		<link>http://eigenjoy.com/2009/11/11/install-enchant-dictionaries/</link>
		<comments>http://eigenjoy.com/2009/11/11/install-enchant-dictionaries/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 22:29:57 +0000</pubDate>
		<dc:creator>Nate Murray</dc:creator>
				<category><![CDATA[shell]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://xcombinator.local/?p=133</guid>
		<description><![CDATA[I had a bit of a hard time getting enchant installed with dictionaries on Mac OS X. Here&#8217;s how to do it:

sudo port install enchant # you'll need MacPorts 1.8.* for this

Then download the dictionaries from the OpenOffice wiki.
Next, place the files in ~/.enchant like so:


$ tree .enchant/
.enchant/
`-- myspell
    &#124;-- en_US.aff
  [...]]]></description>
			<content:encoded><![CDATA[<p>I had a bit of a hard time getting enchant installed with dictionaries on Mac OS X. Here&#8217;s how to do it:</p>
<p><code><br />
sudo port install enchant # you'll need MacPorts 1.8.* for this<br />
</code></p>
<p>Then download the dictionaries from the <a href="http://wiki.services.openoffice.org/wiki/Dictionaries">OpenOffice wiki</a>.</p>
<p>Next, place the files in <code>~/.enchant</code> like so:</p>
<p><code></p>
<pre>
$ tree .enchant/
.enchant/
`-- myspell
    |-- en_US.aff
    `-- en_US.dic
</pre>
<p></code></p>
<p><b>UPDATE</b><br />
You can also set the path to where you want to keep the dictionaries when you compile <code>enchant</code> by passing the <code>--with-myspell-dir</code> option to <code>configure</code> (or <code>aspell</code>, <code>hspell</code> etc).</p>
<p>Share:</p>
<p>	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Feigenjoy.com%2F2009%2F11%2F11%2Finstall-enchant-dictionaries%2F&amp;title=install%20enchant%20dictionaries&amp;notes=I%20had%20a%20bit%20of%20a%20hard%20time%20getting%20enchant%20installed%20with%20dictionaries%20on%20Mac%20OS%20X.%20Here%27s%20how%20to%20do%20it%3A%0D%0A%0D%0A%0D%0Asudo%20port%20install%20enchant%20%23%20you%27ll%20need%20MacPorts%201.8.%2A%20for%20this%0D%0A%0D%0A%0D%0AThen%20download%20the%20dictionaries%20from%20the%20OpenOffice%20wiki.%0D%0A%0D%0ANext%2C%20place" title="del.icio.us"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Feigenjoy.com%2F2009%2F11%2F11%2Finstall-enchant-dictionaries%2F&amp;title=install%20enchant%20dictionaries" title="Reddit"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Feigenjoy.com%2F2009%2F11%2F11%2Finstall-enchant-dictionaries%2F" title="Technorati"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://twitter.com/home?status=install%20enchant%20dictionaries%20-%20http%3A%2F%2Feigenjoy.com%2F2009%2F11%2F11%2Finstall-enchant-dictionaries%2F" title="Twitter"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Feigenjoy.com%2F2009%2F11%2F11%2Finstall-enchant-dictionaries%2F&amp;t=install%20enchant%20dictionaries" title="Facebook"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Feigenjoy.com%2F2009%2F11%2F11%2Finstall-enchant-dictionaries%2F&amp;title=install%20enchant%20dictionaries&amp;annotation=I%20had%20a%20bit%20of%20a%20hard%20time%20getting%20enchant%20installed%20with%20dictionaries%20on%20Mac%20OS%20X.%20Here%27s%20how%20to%20do%20it%3A%0D%0A%0D%0A%0D%0Asudo%20port%20install%20enchant%20%23%20you%27ll%20need%20MacPorts%201.8.%2A%20for%20this%0D%0A%0D%0A%0D%0AThen%20download%20the%20dictionaries%20from%20the%20OpenOffice%20wiki.%0D%0A%0D%0ANext%2C%20place" title="Google Bookmarks"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Feigenjoy.com%2F2009%2F11%2F11%2Finstall-enchant-dictionaries%2F&amp;t=install%20enchant%20dictionaries" title="HackerNews"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.printfriendly.com/print?url=http%3A%2F%2Feigenjoy.com%2F2009%2F11%2F11%2Finstall-enchant-dictionaries%2F&amp;partner=sociable" title="PDF"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://eigenjoy.com/feed/" title="RSS"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://eigenjoy.com/2009/11/11/install-enchant-dictionaries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>tweet twitter util &#8211; cli feedback on tweet length</title>
		<link>http://eigenjoy.com/2009/05/21/tweet-twitter-util-cli-feedback-on-tweet-length/</link>
		<comments>http://eigenjoy.com/2009/05/21/tweet-twitter-util-cli-feedback-on-tweet-length/#comments</comments>
		<pubDate>Thu, 21 May 2009 15:01:21 +0000</pubDate>
		<dc:creator>Nate Murray</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.xcombinator.com/2009/05/21/tweet-twitter-util-cli-feedback-on-tweet-length/</guid>
		<description><![CDATA[One of the nice things about the Twitter web-interface is that it gives you feedback on the number of characters you&#8217;ve typed so far.

 Since I use the command-line twitter gem (by John Nunemaker) I miss out on this feature and find myself using echo and wc to make sure I&#8217;m not over the limit.
To [...]]]></description>
			<content:encoded><![CDATA[<p>One of the nice things about the Twitter web-interface is that it gives you feedback on the number of characters you&#8217;ve typed so far.<a href='http://www.xcombinator.com/wp-content/uploads/2009/05/twitter-warning.png' title='twitter-warning.png'><img src='http://www.xcombinator.com/wp-content/uploads/2009/05/twitter-warning.thumbnail.png' alt='twitter-warning.png' /></a>
</p>
<p> Since I use the command-line <a href="http://twitter.rubyforge.org/"><tt>twitter</tt> gem</a> (by John Nunemaker) I miss out on this feature and find myself using <tt>echo</tt> and <tt>wc</tt> to make sure I&#8217;m not over the limit.</p>
<p>To fix this problem, I&#8217;ve written a small, immediate-feedback utility called <tt>tweet</tt>. It shows you the number of characters typed so far and colorizes them accordingly.</p>
<p> Screenshots: </p>
<p>warning:<br />
<a href='http://www.xcombinator.com/wp-content/uploads/2009/05/tweet-warning.png' title='tweet-warning.png'><img src='http://www.xcombinator.com/wp-content/uploads/2009/05/tweet-warning.png' alt='tweet-warning.png' /></a>
</p>
<p>over:<br />
<a href='http://www.xcombinator.com/wp-content/uploads/2009/05/tweet-overage.png' title='tweet-overage.png'><img src='http://www.xcombinator.com/wp-content/uploads/2009/05/tweet-overage.png' alt='tweet-overage.png' /></a>
</p>
<p>
Just download this script and save it as <tt>tweet</tt> somewhere in your <tt>$PATH</tt><br />
<script src="http://gist.github.com/112317.js"></script>
</p>
<p>Share:</p>
<p>	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Feigenjoy.com%2F2009%2F05%2F21%2Ftweet-twitter-util-cli-feedback-on-tweet-length%2F&amp;title=tweet%20twitter%20util%20-%20cli%20feedback%20on%20tweet%20length&amp;notes=One%20of%20the%20nice%20things%20about%20the%20Twitter%20web-interface%20is%20that%20it%20gives%20you%20feedback%20on%20the%20number%20of%20characters%20you%27ve%20typed%20so%20far.%0D%0A%0D%0A%0D%0A%20Since%20I%20use%20the%20command-line%20twitter%20gem%20%28by%20John%20Nunemaker%29%20I%20miss%20out%20on%20this%20feature%20and%20find%20myself%20using%20" title="del.icio.us"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Feigenjoy.com%2F2009%2F05%2F21%2Ftweet-twitter-util-cli-feedback-on-tweet-length%2F&amp;title=tweet%20twitter%20util%20-%20cli%20feedback%20on%20tweet%20length" title="Reddit"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Feigenjoy.com%2F2009%2F05%2F21%2Ftweet-twitter-util-cli-feedback-on-tweet-length%2F" title="Technorati"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://twitter.com/home?status=tweet%20twitter%20util%20-%20cli%20feedback%20on%20tweet%20length%20-%20http%3A%2F%2Feigenjoy.com%2F2009%2F05%2F21%2Ftweet-twitter-util-cli-feedback-on-tweet-length%2F" title="Twitter"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Feigenjoy.com%2F2009%2F05%2F21%2Ftweet-twitter-util-cli-feedback-on-tweet-length%2F&amp;t=tweet%20twitter%20util%20-%20cli%20feedback%20on%20tweet%20length" title="Facebook"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Feigenjoy.com%2F2009%2F05%2F21%2Ftweet-twitter-util-cli-feedback-on-tweet-length%2F&amp;title=tweet%20twitter%20util%20-%20cli%20feedback%20on%20tweet%20length&amp;annotation=One%20of%20the%20nice%20things%20about%20the%20Twitter%20web-interface%20is%20that%20it%20gives%20you%20feedback%20on%20the%20number%20of%20characters%20you%27ve%20typed%20so%20far.%0D%0A%0D%0A%0D%0A%20Since%20I%20use%20the%20command-line%20twitter%20gem%20%28by%20John%20Nunemaker%29%20I%20miss%20out%20on%20this%20feature%20and%20find%20myself%20using%20" title="Google Bookmarks"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Feigenjoy.com%2F2009%2F05%2F21%2Ftweet-twitter-util-cli-feedback-on-tweet-length%2F&amp;t=tweet%20twitter%20util%20-%20cli%20feedback%20on%20tweet%20length" title="HackerNews"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.printfriendly.com/print?url=http%3A%2F%2Feigenjoy.com%2F2009%2F05%2F21%2Ftweet-twitter-util-cli-feedback-on-tweet-length%2F&amp;partner=sociable" title="PDF"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://eigenjoy.com/feed/" title="RSS"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://eigenjoy.com/2009/05/21/tweet-twitter-util-cli-feedback-on-tweet-length/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>use Quick Look as a Firefox application handler</title>
		<link>http://eigenjoy.com/2008/08/26/use-quick-look-as-a-firefox-application-handler/</link>
		<comments>http://eigenjoy.com/2008/08/26/use-quick-look-as-a-firefox-application-handler/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 20:51:45 +0000</pubDate>
		<dc:creator>Nate Murray</dc:creator>
				<category><![CDATA[shell]]></category>
		<category><![CDATA[sysadmin]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.xcombinator.com/2008/08/26/use-quick-look-as-a-firefox-application-handler/</guid>
		<description><![CDATA[I really dislike getting screen-shots in the format of power-point files. Thankfully, 10.5&#8217;s Quick Look can help me preview power-point files. What I needed was a way to have Firefox automatically Quick Look all power-point files that I downloaded. Here&#8217;s how to do it:
Open up Script Editor and paste this:

on open filelist
	repeat with i in [...]]]></description>
			<content:encoded><![CDATA[<p>I really dislike getting screen-shots in the format of power-point files. Thankfully, 10.5&#8217;s Quick Look can help me preview power-point files. What I needed was a way to have Firefox automatically Quick Look all power-point files that I downloaded. Here&#8217;s how to do it:</p>
<p>Open up Script Editor and paste this:</p>

<div class="wp_syntax"><div class="code"><pre class="applescript" style="font-family:monospace;"><span style="color: #ff0033; font-weight: bold;">on</span> <span style="color: #0066ff;">open</span> filelist
	<span style="color: #ff0033; font-weight: bold;">repeat</span> <span style="color: #ff0033; font-weight: bold;">with</span> i <span style="color: #ff0033; font-weight: bold;">in</span> filelist
		<span style="color: #0066ff;">do shell script</span> <span style="color: #009900;">&quot;qlmanage -p '&quot;</span> <span style="color: #000000;">&amp;</span> <span style="color: #0066ff;">POSIX path</span> <span style="color: #ff0033; font-weight: bold;">of</span> i <span style="color: #000000;">&amp;</span> <span style="color: #009900;">&quot;' &gt;&amp; /dev/null &amp;&quot;</span>
	<span style="color: #ff0033; font-weight: bold;">end</span> <span style="color: #ff0033; font-weight: bold;">repeat</span>
<span style="color: #ff0033; font-weight: bold;">end</span> <span style="color: #0066ff;">open</span></pre></div></div>

<p><a href='http://www.xcombinator.com/wp-content/uploads/2008/08/picture-2.png' title='picture-2.png'><img src='http://www.xcombinator.com/wp-content/uploads/2008/08/picture-2.thumbnail.png' alt='picture-2.png' /></a></p>
<p><b>File > Save As&#8230;</b>. Choose &#8220;Application&#8221; and save it somewhere it won&#8217;t move. I choose <tt>/Applications/ql.app</tt>.</p>
<p>Now simply choose <tt>ql.app</tt> next time you download a power-point file or set it up in Firefox&#8217;s <b>Preferences > Applications</b>.</p>
<p><a href='http://www.xcombinator.com/wp-content/uploads/2008/08/picture-3.png' title='picture-3.png'><img src='http://www.xcombinator.com/wp-content/uploads/2008/08/picture-3.thumbnail.png' alt='picture-3.png' /></a></p>
<p><tt>qlmanage</tt> is the command-line tool to open files in Quick Look. By using AppleScript you are able to create this thin &#8220;application&#8221; that Firefox will trust and give a downloaded file (As opposed to a shell script, which Firefox will not let you choose as a file handler).</p>
<p>Share:</p>
<p>	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Feigenjoy.com%2F2008%2F08%2F26%2Fuse-quick-look-as-a-firefox-application-handler%2F&amp;title=use%20Quick%20Look%20as%20a%20Firefox%20application%20handler&amp;notes=I%20really%20dislike%20getting%20screen-shots%20in%20the%20format%20of%20power-point%20files.%20Thankfully%2C%2010.5%27s%20Quick%20Look%20can%20help%20me%20preview%20power-point%20files.%20What%20I%20needed%20was%20a%20way%20to%20have%20Firefox%20automatically%20Quick%20Look%20all%20power-point%20files%20that%20I%20downloaded.%20H" title="del.icio.us"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Feigenjoy.com%2F2008%2F08%2F26%2Fuse-quick-look-as-a-firefox-application-handler%2F&amp;title=use%20Quick%20Look%20as%20a%20Firefox%20application%20handler" title="Reddit"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Feigenjoy.com%2F2008%2F08%2F26%2Fuse-quick-look-as-a-firefox-application-handler%2F" title="Technorati"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://twitter.com/home?status=use%20Quick%20Look%20as%20a%20Firefox%20application%20handler%20-%20http%3A%2F%2Feigenjoy.com%2F2008%2F08%2F26%2Fuse-quick-look-as-a-firefox-application-handler%2F" title="Twitter"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Feigenjoy.com%2F2008%2F08%2F26%2Fuse-quick-look-as-a-firefox-application-handler%2F&amp;t=use%20Quick%20Look%20as%20a%20Firefox%20application%20handler" title="Facebook"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Feigenjoy.com%2F2008%2F08%2F26%2Fuse-quick-look-as-a-firefox-application-handler%2F&amp;title=use%20Quick%20Look%20as%20a%20Firefox%20application%20handler&amp;annotation=I%20really%20dislike%20getting%20screen-shots%20in%20the%20format%20of%20power-point%20files.%20Thankfully%2C%2010.5%27s%20Quick%20Look%20can%20help%20me%20preview%20power-point%20files.%20What%20I%20needed%20was%20a%20way%20to%20have%20Firefox%20automatically%20Quick%20Look%20all%20power-point%20files%20that%20I%20downloaded.%20H" title="Google Bookmarks"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Feigenjoy.com%2F2008%2F08%2F26%2Fuse-quick-look-as-a-firefox-application-handler%2F&amp;t=use%20Quick%20Look%20as%20a%20Firefox%20application%20handler" title="HackerNews"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.printfriendly.com/print?url=http%3A%2F%2Feigenjoy.com%2F2008%2F08%2F26%2Fuse-quick-look-as-a-firefox-application-handler%2F&amp;partner=sociable" title="PDF"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://eigenjoy.com/feed/" title="RSS"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://eigenjoy.com/2008/08/26/use-quick-look-as-a-firefox-application-handler/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RailsConf08: (opinion) ttyrec and my advice to session presenters</title>
		<link>http://eigenjoy.com/2008/06/03/railsconf08-opinion-ttyrec-and-my-advice-to-session-presenters/</link>
		<comments>http://eigenjoy.com/2008/06/03/railsconf08-opinion-ttyrec-and-my-advice-to-session-presenters/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 00:04:12 +0000</pubDate>
		<dc:creator>Nate Murray</dc:creator>
				<category><![CDATA[shell]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[railsconf08]]></category>

		<guid isPermaLink="false">http://www.xcombinator.com/2008/06/03/railsconf08-opinion-ttyrec-and-my-advice-to-session-presenters/</guid>
		<description><![CDATA[RailsConf was fantastic. A huge thank-you goes out to everyone who took the time to create presentations and sessions. Creating them is a lot of work and I commend you for preparing them. One common negative theme, however, was this: Live coding isn&#8217;t efficient and it is bug-prone. It doesn&#8217;t matter who you are or [...]]]></description>
			<content:encoded><![CDATA[<p>RailsConf was fantastic. A huge thank-you goes out to everyone who took the time to create presentations and sessions. Creating them is a lot of work and I commend you for preparing them. One common negative theme, however, was this: Live coding isn&#8217;t efficient and it is bug-prone. It doesn&#8217;t matter who you are or how good you are, you&#8217;re not going to be maximally efficient presenting if you are performing live coding. Even if you practice, when you get up on stage <b>you will make typos</b> and <b>it will not run exactly as planned</b>. If you&#8217;re not convinced, let me give you a list of people who did live coding this weekend and made typos or mistakes:</p>
<ul>
<li><a href="http://ola-bini.blogspot.com/">Ola Bini</a> &#8211; jruby core developer</li>
<li><a href="http://www.37signals.com/svn/posts/231-please-welcome-jeremy-kemper-to-37signals">Jeremy Kemper</a> &#8211; 37signals</li>
<li><a href="http://engineyard.com/whoweare">Ezra Zygmuntowicz</a> &#8211; EngineYard</li>
</ul>
<p>Each of these guys are Ruby-Rock-Stars and they are way smarter than I am. The content of what they presented was, in every case, phenomenal. They are some of the best programmers in our community and if they can&#8217;t give a presentation without typos and mistakes I can almost guarantee that I (you) won&#8217;t be able to either. When you get in front of 300 people, start typing, start talking, and realize you&#8217;re under the pressure of time (and the crowd) it changes your ability to focus on any one task and it is very hard to not make mistakes. My theory is that one can present a <b>live-like</b> demonstration with no loss of effectiveness.</p>
<p>The most obvious way to do a live-like demonstration is by recording a screencast. You could also use AppleScript or library like <a href="http://gadgets.inventivelabs.com.au/castanaut">castanaut</a> (if you are on a mac). The app I&#8217;d like to recommend today is <tt><a href="http://0xcc.net/ttyrec/index.html.en">ttyrec</a></tt> . It&#8217;s a great little command-line app (it compiles flawlessly on my OS X 10.4) and it <b>records the output of a shell session</b> and <b>can play it back like you are typing in real time</b>. I see two major benefits to this:</p>
<ul>
<li><b>You can&#8217;t make mistakes.</b> It&#8217;s recorded <i>and</i> it&#8217;s storing the output all into a text file. This means that if the network fritzes out when you&#8217;re on stage it doesn&#8217;t matter. Network outages, ill-timed bugs, etc. become irrelevant because the commands are not actually run at playback time (the stderr/stdout stream is saved into a text file).</li>
<li><b>You can talk while you&#8217;re playing the demo.</b> They do this in TV all the time (think <i>Friends</i>). In a scene where actors play video games they don&#8217;t actually play the game and act at the same time. The video games are recorded so the actor can focus on <b>acting</b>. When your computer is playing-back the work you&#8217;ve prepared before hand you can focus on talking while the &#8220;typing&#8221; is happening on the screen. You don&#8217;t have to do the mental context-switching of talking and typing simultaneously which causes mistakes that cost you (and maybe more importantly, your audience) time.</li>
</ul>
<p> You may say &#8220;Well, I don&#8217;t want to do a recording, I want my demo to be live&#8221;. Here&#8217;s my view on that: <i>Most people don&#8217;t care if your demo is actually live</i>. When you&#8217;re on stage and what you&#8217;re showing is prepared it&#8217;s assumed to be in the perfect environment because you&#8217;ve been testing and developing in that exact environment. Even if your demo is truly live it still seems &#8220;contrived&#8221; in that we, the viewer, can never actually see all the pre-work, installing, compiling, back end etc. that was prepared behind the scenes. As <a href="http://blog.hasmanythrough.com/2008/5/31/quick-railsconf-update">Josh Susser</a> pointed out: &#8220;keep in mind Lansford&#8217;s Corollary to <a href="http://en.wikipedia.org/wiki/Clarke's_three_laws">Clarke&#8217;s Third Law</a>: &#8216;Any sufficiently advanced technology is indistinguishable from a rigged demo.&#8217;&#8221;</p>
<p>I believe that recording your shell with <tt>ttyrec</tt> or similar is exactly as effective as a live demo. If I, as a listener, am interested in your project I&#8217;ll be the same amount of convinced to download/try/buy even if your demo is recorded. In fact, I&#8217;ll be a lot more convinced to try it out if you play something recorded that runs perfectly as opposed to a system that is so complicated or buggy that even the author is having problems using it.</p>
<p> So <i>please</i> record your &#8220;live coding&#8221; before hand. Your audience will thank you, you&#8217;ll avoid embarrassment, and you&#8217;ll be more effective for it</p>
<p><b>UPDATE</b> I removed Yehuda Katz from the list of non-recorded presenters. My apologies go out to Yehuda who pointed out that he did record his presentation before-hand.</p>
<p>Share:</p>
<p>	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Frailsconf08-opinion-ttyrec-and-my-advice-to-session-presenters%2F&amp;title=RailsConf08%3A%20%28opinion%29%20%3Ctt%3Ettyrec%3C%2Ftt%3E%20and%20my%20advice%20to%20session%20presenters&amp;notes=RailsConf%20was%20fantastic.%20A%20huge%20thank-you%20goes%20out%20to%20everyone%20who%20took%20the%20time%20to%20create%20presentations%20and%20sessions.%20Creating%20them%20is%20a%20lot%20of%20work%20and%20I%20commend%20you%20for%20preparing%20them.%20One%20common%20negative%20theme%2C%20however%2C%20was%20this%3A%20Live%20coding%20isn%27" title="del.icio.us"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Frailsconf08-opinion-ttyrec-and-my-advice-to-session-presenters%2F&amp;title=RailsConf08%3A%20%28opinion%29%20%3Ctt%3Ettyrec%3C%2Ftt%3E%20and%20my%20advice%20to%20session%20presenters" title="Reddit"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Frailsconf08-opinion-ttyrec-and-my-advice-to-session-presenters%2F" title="Technorati"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://twitter.com/home?status=RailsConf08%3A%20%28opinion%29%20%3Ctt%3Ettyrec%3C%2Ftt%3E%20and%20my%20advice%20to%20session%20presenters%20-%20http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Frailsconf08-opinion-ttyrec-and-my-advice-to-session-presenters%2F" title="Twitter"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Frailsconf08-opinion-ttyrec-and-my-advice-to-session-presenters%2F&amp;t=RailsConf08%3A%20%28opinion%29%20%3Ctt%3Ettyrec%3C%2Ftt%3E%20and%20my%20advice%20to%20session%20presenters" title="Facebook"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Frailsconf08-opinion-ttyrec-and-my-advice-to-session-presenters%2F&amp;title=RailsConf08%3A%20%28opinion%29%20%3Ctt%3Ettyrec%3C%2Ftt%3E%20and%20my%20advice%20to%20session%20presenters&amp;annotation=RailsConf%20was%20fantastic.%20A%20huge%20thank-you%20goes%20out%20to%20everyone%20who%20took%20the%20time%20to%20create%20presentations%20and%20sessions.%20Creating%20them%20is%20a%20lot%20of%20work%20and%20I%20commend%20you%20for%20preparing%20them.%20One%20common%20negative%20theme%2C%20however%2C%20was%20this%3A%20Live%20coding%20isn%27" title="Google Bookmarks"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Frailsconf08-opinion-ttyrec-and-my-advice-to-session-presenters%2F&amp;t=RailsConf08%3A%20%28opinion%29%20%3Ctt%3Ettyrec%3C%2Ftt%3E%20and%20my%20advice%20to%20session%20presenters" title="HackerNews"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.printfriendly.com/print?url=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Frailsconf08-opinion-ttyrec-and-my-advice-to-session-presenters%2F&amp;partner=sociable" title="PDF"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://eigenjoy.com/feed/" title="RSS"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://eigenjoy.com/2008/06/03/railsconf08-opinion-ttyrec-and-my-advice-to-session-presenters/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Pair Programming with screen</title>
		<link>http://eigenjoy.com/2008/06/03/pair-programming-with-screen/</link>
		<comments>http://eigenjoy.com/2008/06/03/pair-programming-with-screen/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 15:21:25 +0000</pubDate>
		<dc:creator>Nate Murray</dc:creator>
				<category><![CDATA[shell]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.xcombinator.com/2008/06/03/pair-programming-with-screen/</guid>
		<description><![CDATA[I want to share a simple tip that I learned from Jim Weirich (author of rake, xml builder, and rubygems) this weekend at RailsConf: You can do pair programming with screen. When I learned about this I asked around and apparently everyone knew about this already, but I had never done it. Here&#8217;s how you [...]]]></description>
			<content:encoded><![CDATA[<p>I want to share a simple tip that I learned from <a href="http://onestepback.org/">Jim Weirich</a> (author of <a href="http://rubyforge.org/users/jimweirich/">rake, xml builder, and rubygems</a>) this weekend at RailsConf: You can do pair programming with <tt>screen</tt>. When I learned about this I asked around and apparently everyone knew about this already, but I had never done it. Here&#8217;s how you can do it too:</p>
<p>Open up <tt>~/.screenrc</tt> add the following lines:</p>
<p><code></p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">  multiuser on
  acladd nathan <span style="color: #339933;"># change to your username here</span></pre></div></div>

<p></code></p>
<p>In terminal one start a <tt>screen</tt> session. Then log in as the same user on terminal two and type <tt>screen -x</tt>. Now either user can control and see real time what is going on in the tty. It is possible to do this across users, I believe. See your local man page.</p>
<p>They use this in combination with audio/video chat (Skype or iChat). This way they can see facial expressions, ask for control of the keyboard etc. Jim and co. have keywords for passing control, I believe they are &#8220;drive?&#8221; and &#8220;release.&#8221; The person who wants to take over says &#8220;drive?&#8221; and they are allowed to use the keyboard iff the other person says &#8220;release.&#8221;Seems like a simple, but powerful idea. </p>
<p><b>UPDATE</b> Jim pointed out that they use the terms &#8220;tag&#8221; and &#8220;yield&#8221;. Thanks Jim!</p>
<p>Share:</p>
<p>	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Fpair-programming-with-screen%2F&amp;title=Pair%20Programming%20with%20%3Ctt%3Escreen%3C%2Ftt%3E&amp;notes=I%20want%20to%20share%20a%20simple%20tip%20that%20I%20learned%20from%20Jim%20Weirich%20%28author%20of%20rake%2C%20xml%20builder%2C%20and%20rubygems%29%20this%20weekend%20at%20RailsConf%3A%20You%20can%20do%20pair%20programming%20with%20screen.%20When%20I%20learned%20about%20this%20I%20asked%20around%20and%20apparently%20everyone%20knew%20about%20t" title="del.icio.us"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Fpair-programming-with-screen%2F&amp;title=Pair%20Programming%20with%20%3Ctt%3Escreen%3C%2Ftt%3E" title="Reddit"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Fpair-programming-with-screen%2F" title="Technorati"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://twitter.com/home?status=Pair%20Programming%20with%20%3Ctt%3Escreen%3C%2Ftt%3E%20-%20http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Fpair-programming-with-screen%2F" title="Twitter"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Fpair-programming-with-screen%2F&amp;t=Pair%20Programming%20with%20%3Ctt%3Escreen%3C%2Ftt%3E" title="Facebook"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Fpair-programming-with-screen%2F&amp;title=Pair%20Programming%20with%20%3Ctt%3Escreen%3C%2Ftt%3E&amp;annotation=I%20want%20to%20share%20a%20simple%20tip%20that%20I%20learned%20from%20Jim%20Weirich%20%28author%20of%20rake%2C%20xml%20builder%2C%20and%20rubygems%29%20this%20weekend%20at%20RailsConf%3A%20You%20can%20do%20pair%20programming%20with%20screen.%20When%20I%20learned%20about%20this%20I%20asked%20around%20and%20apparently%20everyone%20knew%20about%20t" title="Google Bookmarks"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Fpair-programming-with-screen%2F&amp;t=Pair%20Programming%20with%20%3Ctt%3Escreen%3C%2Ftt%3E" title="HackerNews"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://www.printfriendly.com/print?url=http%3A%2F%2Feigenjoy.com%2F2008%2F06%2F03%2Fpair-programming-with-screen%2F&amp;partner=sociable" title="PDF"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a><br />
	<a rel="nofollow"  href="http://eigenjoy.com/feed/" title="RSS"><img src="http://eigenjoy.com/wp-content/plugins/sociable/images/rss.png" title="RSS" alt="RSS" class="sociable-hovers" /></a></p>
<p><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://eigenjoy.com/2008/06/03/pair-programming-with-screen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

