<?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>Internet WorkShop</title>
	<atom:link href="http://iwhome.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://iwhome.com</link>
	<description>Your guide to the rapidly evolving landscape of software engineering and web technology - since 1995.</description>
	<lastBuildDate>Fri, 13 Apr 2012 22:42:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Test::Unit::Assert(qr/pattern/,&#8230;) seems to fail on multiline strings</title>
		<link>http://iwhome.com/uncategorized/testunitassertqrpattern-seems-to-fail-on-multiline-strings/</link>
		<comments>http://iwhome.com/uncategorized/testunitassertqrpattern-seems-to-fail-on-multiline-strings/#comments</comments>
		<pubDate>Fri, 13 Apr 2012 22:27:45 +0000</pubDate>
		<dc:creator>iwork</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://iwhome.com/?p=236</guid>
		<description><![CDATA[Recently had to change a number of lines from
$self->assert(qr/some_pattern/, $string, $message)
to
$self->assert($string =~ qr/some_pattern/m, $message)
Not sure why &#8211; the $string was a multi-line XML fragment, and the pattern was a phrase containing / and . chars.  May need to do some more testing to isolate the reason.  Works with the change.   /m [...]]]></description>
			<content:encoded><![CDATA[<p>Recently had to change a number of lines from</p>
<p>$self->assert(qr/some_pattern/, $string, $message)</p>
<p>to</p>
<p>$self->assert($string =~ qr/some_pattern/m, $message)</p>
<p>Not sure why &#8211; the $string was a multi-line XML fragment, and the pattern was a phrase containing / and . chars.  May need to do some more testing to isolate the reason.  Works with the change.   /m should not be necessary to match against a multiline string, but failed without this switch for my particular test cases.</p>
]]></content:encoded>
			<wfw:commentRss>http://iwhome.com/uncategorized/testunitassertqrpattern-seems-to-fail-on-multiline-strings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ctrl-Alt-Del for VirtualBox on MacOS</title>
		<link>http://iwhome.com/frameworks-bestpractices/tech-notes/ctrl-alt-del-for-virtualbox-on-macos/</link>
		<comments>http://iwhome.com/frameworks-bestpractices/tech-notes/ctrl-alt-del-for-virtualbox-on-macos/#comments</comments>
		<pubDate>Fri, 30 Mar 2012 20:39:14 +0000</pubDate>
		<dc:creator>iwork</dc:creator>
				<category><![CDATA[Tech Notes]]></category>

		<guid isPermaLink="false">http://iwhome.com/?p=233</guid>
		<description><![CDATA[Ok, not a showstopper, but&#8230;.running Windows in VirtualBox for MacOS, and had to press Ctrl-Alt-Del to start.  There is an Alt key on my MacBookPro, but its fn-option and that didn&#8217;t work.   The answer turned out to be under the VirtualBoxVM menu Machine->Insert Ctrl-Alt-Del.  There might be other ways as well, [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, not a showstopper, but&#8230;.running Windows in VirtualBox for MacOS, and had to press Ctrl-Alt-Del to start.  There is an Alt key on my MacBookPro, but its fn-option and that didn&#8217;t work.   The answer turned out to be under the VirtualBoxVM menu Machine->Insert Ctrl-Alt-Del.  There might be other ways as well, but that was enough to get it going&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://iwhome.com/frameworks-bestpractices/tech-notes/ctrl-alt-del-for-virtualbox-on-macos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAVA_HOME on linux (at least for compiling ruby-hdfs)</title>
		<link>http://iwhome.com/uncategorized/java_home-on-linux-at-least-for-compiling-ruby-hdfs/</link>
		<comments>http://iwhome.com/uncategorized/java_home-on-linux-at-least-for-compiling-ruby-hdfs/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 19:59:35 +0000</pubDate>
		<dc:creator>iwork</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://iwhome.com/?p=231</guid>
		<description><![CDATA[Posting this as the links I found for setting JAVA_HOME seemed to erroneously state to set it to the full path to the java executable.  I&#8217;m not sure if there is a case where you would want to do that, but if you want to compile the ruby gem ruby-hdfs, then JAVA_HOME should be [...]]]></description>
			<content:encoded><![CDATA[<p>Posting this as the links I found for setting JAVA_HOME seemed to erroneously state to set it to the full path to the java executable.  I&#8217;m not sure if there is a case where you would want to do that, but if you want to compile the ruby gem ruby-hdfs, then JAVA_HOME should be set to the directory above where the java binary is located, ie<br />
<code><br />
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.24/<br />
</code><br />
where the java executable is located at /usr/lib/jvm/java-6-sun-1.6.0.24/bin/java.  Then the install is straightforward<br />
<code><br />
$ gem install ruby-hdfs<br />
Building native extensions.  This could take a while...<br />
Successfully installed ruby-hdfs-0.1.0<br />
1 gem installed<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://iwhome.com/uncategorized/java_home-on-linux-at-least-for-compiling-ruby-hdfs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>hadoop fs is space-sensitive</title>
		<link>http://iwhome.com/frameworks-bestpractices/tech-notes/hadoop-fs-is-space-sensitive/</link>
		<comments>http://iwhome.com/frameworks-bestpractices/tech-notes/hadoop-fs-is-space-sensitive/#comments</comments>
		<pubDate>Mon, 23 Jan 2012 20:06:04 +0000</pubDate>
		<dc:creator>iwork</dc:creator>
				<category><![CDATA[Tech Notes]]></category>

		<guid isPermaLink="false">http://iwhome.com/?p=227</guid>
		<description><![CDATA[HDFS, high density file system, is useful for big data.  However, hadoop fs is not quite there as a shell replacement.  Today I kept getting the message

cp: When copying multiple files, destination should be a directory.

when trying to copy multiple files to a directory using

hadoop fs -cp /path/to/files/*&#160;&#160;/path/to/destination/directory

Finally figured out that the problem [...]]]></description>
			<content:encoded><![CDATA[<p>HDFS, high density file system, is useful for big data.  However, hadoop fs is not quite there as a shell replacement.  Today I kept getting the message<br />
<code><br />
cp: When copying multiple files, destination should be a directory.<br />
</code><br />
when trying to copy multiple files to a directory using<br />
<code><br />
hadoop fs -cp /path/to/files/*&nbsp;&nbsp;/path/to/destination/directory<br />
</code><br />
Finally figured out that the problem was I had two spaces between the file list and the directory path, which made hadoop not see the directory path in the command.  Aaahh.</p>
]]></content:encoded>
			<wfw:commentRss>http://iwhome.com/frameworks-bestpractices/tech-notes/hadoop-fs-is-space-sensitive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ruby non-intuitive multi-dimensional array assignment</title>
		<link>http://iwhome.com/uncategorized/ruby-non-intuitive-array-assignment/</link>
		<comments>http://iwhome.com/uncategorized/ruby-non-intuitive-array-assignment/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 19:18:53 +0000</pubDate>
		<dc:creator>iwork</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://iwhome.com/?p=219</guid>
		<description><![CDATA[All I want to do is work with an array of arrays&#8230;

ruby-1.9.2-p290 :012 > a = Array.new(8,[]) # here lies the problem...
 => [[], [], [], [], [], [], [], []]
ruby-1.9.2-p290 :013 > a[1].push("a")
 => ["a"]
ruby-1.9.2-p290 :014 > a
 => [["a"], ["a"], ["a"], ["a"], ["a"], ["a"], ["a"], ["a"]]

Trying again&#8230;

ruby-1.9.2-p290 :019 > a = Array.new(8,Array.new()) # [...]]]></description>
			<content:encoded><![CDATA[<p>All I want to do is work with an array of arrays&#8230;<br />
<code><br />
ruby-1.9.2-p290 :012 > a = Array.new(8,[]) # <font color="red">here lies the problem...</font><br />
 => [[], [], [], [], [], [], [], []]<br />
ruby-1.9.2-p290 :013 > a[1].push("a")<br />
 => ["a"]<br />
ruby-1.9.2-p290 :014 > a<br />
 => [["a"], ["a"], ["a"], ["a"], ["a"], ["a"], ["a"], ["a"]]<br />
</code><br />
Trying again&#8230;<br />
<code><br />
ruby-1.9.2-p290 :019 > a = Array.new(8,Array.new()) # <font color='red'>This doesn't solve it</font><br />
 => [[], [], [], [], [], [], [], []]<br />
ruby-1.9.2-p290 :020 > a[1][0] = 'a'<br />
 => "a"<br />
ruby-1.9.2-p290 :021 > a<br />
 => [["a"], ["a"], ["a"], ["a"], ["a"], ["a"], ["a"], ["a"]]<br />
</code><br />
Argh!  Perl makes this so easy&#8230;</p>
<p>Ok, the problem was, that the first two ways of initializing the array, were just creating 8 pointers to the SAME array</p>
<p>Now do it the right way:<br />
<code><br />
ruby-1.9.2-p290 :031 > a = Array.new(8) { Array.new(0) }  # <font color="blue">NOW we have an array of different arrays</font><br />
 => [[], [], [], [], [], [], [], []]<br />
ruby-1.9.2-p290 :032 > a[1].push('a')<br />
 => ["a"]<br />
ruby-1.9.2-p290 :033 > a<br />
 => [[], ["a"], [], [], [], [], [], []]<br />
</code></p>
<p>Ahh&#8230;but I miss an interpreter that always tries to &#8216;Do The Right Thing&#8217;</p>
<p>And, I wish the two versions didn&#8217;t look so identical when inspected&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://iwhome.com/uncategorized/ruby-non-intuitive-array-assignment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>don&#8217;t try creating gdbm file on an nfs mount</title>
		<link>http://iwhome.com/frameworks-bestpractices/tech-notes/dont-try-creating-gdbm-file-on-an-nfs-mount/</link>
		<comments>http://iwhome.com/frameworks-bestpractices/tech-notes/dont-try-creating-gdbm-file-on-an-nfs-mount/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 16:34:19 +0000</pubDate>
		<dc:creator>iwork</dc:creator>
				<category><![CDATA[Tech Notes]]></category>

		<guid isPermaLink="false">http://iwhome.com/?p=214</guid>
		<description><![CDATA[gems/gdbm-1.2/lib/gdbm.rb:256:in `initialize': Empty database (GDBMError)
error occurs when trying to use

g = GDBM.new('somefile')

on an nfs-mounted partition.  GDBM works fine on normal drives, just don&#8217;t try it on nfs-mounts.  Posting this as I found nothing when I googled the error message, and wasted several minutes before I realized the problem.  The error message may [...]]]></description>
			<content:encoded><![CDATA[<p><code>gems/gdbm-1.2/lib/gdbm.rb:256:in `initialize': Empty database (GDBMError)</code></p>
<p>error occurs when trying to use<br />
<code><br />
g = GDBM.new('somefile')<br />
</code><br />
<i>on an nfs-mounted partition</i>.  GDBM works fine on normal drives, just don&#8217;t try it on nfs-mounts.  Posting this as I found nothing when I googled the error message, and wasted several minutes before I realized the problem.  The error message may be specific to the ruby &#8216;gdbm&#8217; gem, but the rule is a general one.</p>
]]></content:encoded>
			<wfw:commentRss>http://iwhome.com/frameworks-bestpractices/tech-notes/dont-try-creating-gdbm-file-on-an-nfs-mount/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wordpress debug notes</title>
		<link>http://iwhome.com/frameworks-bestpractices/tech-notes/wordpress-debug-notes/</link>
		<comments>http://iwhome.com/frameworks-bestpractices/tech-notes/wordpress-debug-notes/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 20:45:10 +0000</pubDate>
		<dc:creator>iwork</dc:creator>
				<category><![CDATA[Tech Notes]]></category>

		<guid isPermaLink="false">http://iwhome.com/?p=212</guid>
		<description><![CDATA[Note: I&#8217;m not a wordpress expert, just returning to it after several years without having touched PHP &#8211; and looking for the best way to quickly understand the flow of a wordpress site using buddypress and a few other plugins.  Raw notes here, will be annotated as I progress&#8230;
http://fuelyourcoding.com/simple-debugging-with-wordpress/
]]></description>
			<content:encoded><![CDATA[<p>Note: I&#8217;m not a wordpress expert, just returning to it after several years without having touched PHP &#8211; and looking for the best way to quickly understand the flow of a wordpress site using buddypress and a few other plugins.  Raw notes here, will be annotated as I progress&#8230;</p>
<p>http://fuelyourcoding.com/simple-debugging-with-wordpress/</p>
]]></content:encoded>
			<wfw:commentRss>http://iwhome.com/frameworks-bestpractices/tech-notes/wordpress-debug-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clojure makes the JVM a friendly place&#8230;</title>
		<link>http://iwhome.com/ideas-proposals/yay-they-did/clojure-saves-java/</link>
		<comments>http://iwhome.com/ideas-proposals/yay-they-did/clojure-saves-java/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 20:07:20 +0000</pubDate>
		<dc:creator>iwork</dc:creator>
				<category><![CDATA[Yay they did!]]></category>

		<guid isPermaLink="false">http://iwhome.com/?p=204</guid>
		<description><![CDATA[Yes!  Someone gets it &#8211; &#8220;It has always been an unfortunate characteristic of using classes for application domain information that it resulted in information being hidden behind class-specific micro-languages, e.g. even the seemingly harmless employee.getName() is a custom interface to data. Putting information in such classes is a problem, much like having every book [...]]]></description>
			<content:encoded><![CDATA[<p>Yes!  Someone gets it &#8211; &#8220;It has always been an unfortunate characteristic of using classes for application domain information that it resulted in information being hidden behind class-specific micro-languages, e.g. even the seemingly harmless employee.getName() is a custom interface to data. Putting information in such classes is a problem, much like having every book being written in a different language would be a problem. You can no longer take a generic approach to information processing. This results in an explosion of needless specificity, and a dearth of reuse.&#8221;<br />
 &#8211;Rich Hickey, http://clojure.org/datatypes</p>
<p>Data is just data. Please, coders &#8211; free the data from all those bureaucratic OO controls on it, and just expose the rules if any, let us obey them thoughtfully our own way.  It has got to be better than all these little bureaucratic fiefdoms exerting paranoiac control over their bits of data.</p>
<p>Ok, so it sounds good&#8230;now to finish the <a href="https://github.com/functional-koans/clojure-koans">clojure koans</a>, having realized that the ___ construct is just where you put your answers and not a new triple-underscore special variable.  But I&#8217;m also hacking on a larger clojure app while learning the basic syntax&#8230;it really does seem promising&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://iwhome.com/ideas-proposals/yay-they-did/clojure-saves-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The most helpful message yet</title>
		<link>http://iwhome.com/uncategorized/the-most-helpful-message-yet/</link>
		<comments>http://iwhome.com/uncategorized/the-most-helpful-message-yet/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 22:07:46 +0000</pubDate>
		<dc:creator>iwork</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://iwhome.com/?p=198</guid>
		<description><![CDATA[My Canon iP4300 printer is exceptionally helpful when anything goes wrong:
&#8220;Error Number : 311 Printer is in use or an error has occurred. If an error has occurred, eliminate the cause of the error.&#8221;
If an error has occurred, eliminate the cause!  Why didn&#8217;t I think of that!
]]></description>
			<content:encoded><![CDATA[<p>My Canon iP4300 printer is exceptionally helpful when anything goes wrong:</p>
<p>&#8220;Error Number : 311 Printer is in use or an error has occurred. If an error has occurred, eliminate the cause of the error.&#8221;</p>
<p>If an error has occurred, eliminate the cause!  Why didn&#8217;t I think of that!</p>
]]></content:encoded>
			<wfw:commentRss>http://iwhome.com/uncategorized/the-most-helpful-message-yet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Visualization</title>
		<link>http://iwhome.com/frameworks-bestpractices/graphing-data-sample/</link>
		<comments>http://iwhome.com/frameworks-bestpractices/graphing-data-sample/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 18:47:06 +0000</pubDate>
		<dc:creator>iwork</dc:creator>
				<category><![CDATA[Tools, Frameworks & Best Practices]]></category>

		<guid isPermaLink="false">http://iwhome.com/?p=195</guid>
		<description><![CDATA[The D3 javascript library looks awesome &#8211; clean, extensible, and powerful.
Checkout this example of mashing US Census boundaries with unemployment stats&#8230;
http://mbostock.github.com/d3/ex/choropleth.html
]]></description>
			<content:encoded><![CDATA[<p>The D3 javascript library looks awesome &#8211; clean, extensible, and powerful.</p>
<p>Checkout this example of mashing US Census boundaries with unemployment stats&#8230;</p>
<p>http://mbostock.github.com/d3/ex/choropleth.html</p>
]]></content:encoded>
			<wfw:commentRss>http://iwhome.com/frameworks-bestpractices/graphing-data-sample/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

