<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://nolan.eakins.net" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Nolan&#039;s Corner - Personal</title>
 <link>http://nolan.eakins.net/taxonomy/term/14/0</link>
 <description>Stuff pertaining to me</description>
 <language>en</language>
<item>
 <title>RSpec matcher helper</title>
 <link>http://nolan.eakins.net/node/311</link>
 <description>&lt;p&gt;
I&#039;ve finally written more than one RSpec matcher. Creating a matcher essentially involves defining a class and a method that creates an instance of that class. Rather redundant, resulting in my RSpec matcher helper:
&lt;/p&gt;
&lt;pre&gt;
def defmatcher(name, &amp;code)
  klass = Class.new
  klass.module_eval(&amp;code)
  
  Object.send :define_method, name.to_s do |*args|
    klass.new(*args)
  end
end
&lt;/pre&gt;&lt;p&gt;
That little method, &lt;code&gt;defmatcher&lt;/code&gt;, creates the class and method for you. It saves some typing. An example can be found in the full source file, &lt;a href=&quot;/system/files/spec_matcher_dsl.rb&quot;&gt;available here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update (2008/06/28):&lt;/b&gt; RSpec was having trouble keeping this all in one file. I created a project at GitHub to host this for the time being: &lt;a href=&quot;http://github.com/sneakin/spec_matcher_helper/&quot;&gt;http://github.com/sneakin/spec_matcher_helper/&lt;/a&gt;&lt;/p&gt;
&lt;table id=&quot;attachments&quot;&gt;
 &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Attachment&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
 &lt;tr class=&quot;odd&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://nolan.eakins.net/system/files/spec_matcher_dsl.rb&quot;&gt;spec_matcher_dsl.rb&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1.45 KB&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
</description>
 <comments>http://nolan.eakins.net/node/311#comment</comments>
 <category domain="http://nolan.eakins.net/taxonomy/term/14">Personal</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/9">Programming</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/28">Rails</category>
 <enclosure url="http://nolan.eakins.net/system/files/spec_matcher_dsl.rb" length="1484" type="application/octet-stream" />
 <pubDate>Sat, 28 Jun 2008 16:25:54 -0700</pubDate>
 <dc:creator>sneakin</dc:creator>
 <guid isPermaLink="false">311 at http://nolan.eakins.net</guid>
</item>
<item>
 <title>Experiments with Erlang</title>
 <link>http://nolan.eakins.net/node/310</link>
 <description>&lt;p&gt;Earlier today I setup an instance of &lt;a href=&quot;http://hg.oss.semanticgap.com/&quot;&gt;HgWeb&lt;/a&gt; to host some old and new code bases of mine. Two of the repositories may interest those learning or looking to learn Erlang. Both repositories contain a simple project that doesn&#039;t amount to much of anything at the moment, though they could prove useful for some code reading/banging.&lt;/p&gt;
&lt;p&gt;The two repositories are:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://hg.oss.semanticgap.com/station&quot;&gt;Station&lt;/a&gt;: This is a super basic, simple HTTP server framework. It can currently parse an HTTP request which gets dispatched to a station behavior that you can define. The station behavior contains a function that gets called on each valid request and returns a response which is sent back to the requestor. Proper query string and form handling still needs to be done along with dispatching to different modules based on the requested path.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://hg.oss.semanticgap.com/mod_rest/trunk&quot;&gt;mod_rest&lt;/a&gt;: This is an &lt;a href=&quot;http://www.ejabberd.ru/&quot;&gt;ejabberd&lt;/a&gt; module that adds an HTTP handler that allows HTTP clients to literally post arbitrary message stanzas to ejabberd. Those stanzas then get shoved through ejabberd&#039;s router just like any other stanza. My original use for this was to allow a Rails app to send messages through ejabberd without needing to be a full XMPP client.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You will need to install &lt;a href=&quot;http://www.selenic.com/mercurial/wiki/&quot;&gt;Mercurial&lt;/a&gt; to get the code onto your machine. It&#039;s the next best thing to git.&lt;/p&gt;</description>
 <comments>http://nolan.eakins.net/node/310#comment</comments>
 <category domain="http://nolan.eakins.net/taxonomy/term/29">Erlang</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/11">Jabber</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/14">Personal</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/9">Programming</category>
 <pubDate>Sat, 07 Jun 2008 17:32:33 -0700</pubDate>
 <dc:creator>sneakin</dc:creator>
 <guid isPermaLink="false">310 at http://nolan.eakins.net</guid>
</item>
<item>
 <title>A Conservative iChat</title>
 <link>http://nolan.eakins.net/node/308</link>
 <description>&lt;p&gt;I just ran into a problem with iChat that would probably leave most mystified. I found out due to some unknown reason that iChat is very picky about the XML contained in its rosters. It doesn&#039;t ignore errors. Instead it just kicks you off saying that you have lost your connection.&lt;/p&gt;
&lt;p&gt;The little snippet that was the culprit was a roster entry with a namespaced attribute: &lt;/p&gt;
&lt;pre&gt;&amp;lt;item jid=&#039;***@gmail.com&#039; name=&#039;***&#039; &lt;b&gt;gr:t=&#039;B&#039;&lt;/b&gt; subscription=&#039;both&#039;/&amp;gt;&lt;/pre&gt;&lt;p&gt;
I&#039;m not sure where that &quot;gr:t&quot; attribute came from, but that appears to have been iChat&#039;s choker. The only reason I noticed that was with Apple&#039;s Console utility. iChat was spitting out error messages to the system.log which included a block of XML that caused parse error 27, whatever that error means.&lt;/p&gt;
&lt;p&gt;To get iChat working I had to use another client to remove and readd that roster entry. Not good for the neophytes.&lt;/p&gt;
&lt;p&gt;I am left with a couple of questions though. Who uses the &quot;gr:t&quot; attribute, and what&#039;s it for? And can iChat either be a little more liberal in what it accepts or provide more help than &quot;Lost connection&quot; when the XML parser dies?&lt;/p&gt;
</description>
 <comments>http://nolan.eakins.net/node/308#comment</comments>
 <category domain="http://nolan.eakins.net/taxonomy/term/11">Jabber</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/14">Personal</category>
 <pubDate>Tue, 05 Feb 2008 12:53:49 -0800</pubDate>
 <dc:creator>sneakin</dc:creator>
 <guid isPermaLink="false">308 at http://nolan.eakins.net</guid>
</item>
<item>
 <title>Bitter</title>
 <link>http://nolan.eakins.net/node/307</link>
 <description>&lt;p&gt;
I slipped up a new site &lt;a href=&quot;http://bitter.nolan.eakins.net/&quot;&gt;bitter.nolan.eakins.net&lt;/a&gt; the other day. It&#039;s my take on the don&#039;t make me think blog. I&#039;ve already implemented a basic web interface and just slapped together an XMPP bot that makes &lt;a href=&quot;http://bitter.rubyforge.org/&quot;&gt;Bitter&lt;/a&gt; much easier to use. There&#039;s a lot that I&#039;ve left out, but I put a &lt;a href=&quot;http://www.bazaar-vcs.org/&quot;&gt;Bazaar&lt;/a&gt; &lt;a href=&quot;http://bitter.rubyforge.org/bzr/bitter/TRUNK&quot;&gt;repository up&lt;/a&gt; if anyone wants to play.
&lt;/p&gt;</description>
 <comments>http://nolan.eakins.net/node/307#comment</comments>
 <category domain="http://nolan.eakins.net/taxonomy/term/11">Jabber</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/14">Personal</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/28">Rails</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/26">Web</category>
 <pubDate>Mon, 03 Dec 2007 02:48:38 -0800</pubDate>
 <dc:creator>sneakin</dc:creator>
 <guid isPermaLink="false">307 at http://nolan.eakins.net</guid>
</item>
<item>
 <title>Intellectual Property and oDesk</title>
 <link>http://nolan.eakins.net/node/302</link>
 <description>&lt;p&gt;
I followed the link TechCrunch posted to oDesk since I need some work. I found some job posting that I found interesting and proceeded to sign up. Low and behold the first service agreement I read just wasn&#039;t palatable. From my understanding of their &lt;a href=&quot;https://community.odesk.com/system/files?file=files/oDesk_Professional_Services_Agmt_0.pdf&quot;&gt;Professional Services Agreement&lt;/a&gt;, any pre-existing intellectual property that is incorporated into a project can essentially be used for whatever purposes oDesk wants.
&lt;/p&gt;
&lt;p&gt;
I wouldn&#039;t have an issue if this granted a license to the company that has requested the work, but it is oDesk&amp;mdash;the site that connects professionals with those that need work done. I have a body of code that&#039;s gradually getting larger that allows me to be more productive, and I like to set my own terms on its use. Sorry, I won&#039;t grant an unlimited license to it to a company whose unstated business is to hoarde IP.
&lt;/p&gt;</description>
 <comments>http://nolan.eakins.net/node/302#comment</comments>
 <category domain="http://nolan.eakins.net/taxonomy/term/10">Business</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/14">Personal</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/9">Programming</category>
 <pubDate>Wed, 27 Sep 2006 14:31:30 -0700</pubDate>
 <dc:creator>sneakin</dc:creator>
 <guid isPermaLink="false">302 at http://nolan.eakins.net</guid>
</item>
<item>
 <title>O&#039; conclusion, where art thou conclusion?</title>
 <link>http://nolan.eakins.net/node/298</link>
 <description>&lt;p&gt;
I happened to read two articles tonight which offered zero conclusions. I&#039;ve seen more in the past, and every time I&#039;ve been left with a feeling that the author only supplied me with filler. I&#039;d like to present tonight&#039;s culprits: &quot;Hoarders vs. Deleters&quot; and &quot;Urban Fables&quot;.
&lt;/p&gt;
&lt;p&gt;
The first article is Northwest Florida&#039;s Daily News&#039; &lt;a href=&quot;http://www.nwfdailynews.com/articleArchive/aug2006/inboxsaysaboutyou.php&quot;&gt;Hoarders vs. Deleters: What your inbox says about you&lt;/a&gt; which describes how different people handle their incoming email. This article ended with: &quot;Because &#039;inboxes are metaphors for our lives,&#039; Dr. Greenfield says, there&#039;s no cure-all solution to inbox management. We&#039;re all too different...&quot;
&lt;/p&gt;
&lt;p&gt;
Ain&#039;t that just hanky-panky. For the first couple of paragraphs, I thought I was completely mismanaging my inbox. It&#039;s not exactly the perfect void of emptiness. In fact my method isn&#039;t even listed. At least this article informed me that everyone is different. I couldn&#039;t fathom that people manage their email in completely different ways. Mine just happens to be the read, handle, and leave it method. I imagined there might be a better way, and this article would either cast me into Hell or grant me access to Heaven. I thought wrong.
&lt;/p&gt;
&lt;p&gt;
Moving on, the second is Planetizen&#039;s &lt;a href=&quot;http://www.planetizen.com/node/20784&quot;&gt;Urban Fables: The Role Of Storytelling And Imagery In Successful Planning Movements&lt;/a&gt; which describes how advocates for urban planning and private property use allegories to persuade people to their side. At least this author had the gaul to be straight forward: &quot;I do not intend this essay to be a criticism of the ideas or techniques of either movement, nor am I suggesting that New Urbanists or property rights advocates are blind followers of misguided faiths.&quot;
&lt;/p&gt;
&lt;p&gt;
To bad that I thought that this article would come out to favor urban planners over private property advocates, or vice versa. Considering the title, I was expecting that he&#039;d favor the planners, and the subject of this post would be criticizing how you can&#039;t plan the perfect society (well, &lt;a href=&quot;http://www.thesociety.us/&quot;&gt;these guys have&lt;/a&gt;).
&lt;/p&gt;
&lt;p&gt;
There could be various reasons for why people write articles such as the above. The obvious would be that they just want to inform us and let us make our own judgement. To bad that I really don&#039;t care how Jane manages her email compared with Bob, or that people use allegories to demonstrate their principles and the resulting logic.
&lt;/p&gt;
&lt;p&gt;
Another reason is that these are paid writers. They need to write something, anything just to meet this week&#039;s quoata. Perhaps they had a thought such as: &quot;Boy! My inbox is a mess, and I still have to write my article.&quot; Or maybe their editor had an empty column that just needed to filled, so the editor called for an article about anything to fill this space.
&lt;/p&gt;
&lt;p&gt;
Either way, I felt like a dog that&#039;s been fed green beans when I finished the article. It was filling but completely useless.
&lt;/p&gt;
&lt;!--break--&gt;</description>
 <comments>http://nolan.eakins.net/node/298#comment</comments>
 <category domain="http://nolan.eakins.net/taxonomy/term/14">Personal</category>
 <pubDate>Thu, 10 Aug 2006 22:44:01 -0700</pubDate>
 <dc:creator>sneakin</dc:creator>
 <guid isPermaLink="false">298 at http://nolan.eakins.net</guid>
</item>
<item>
 <title>Chipping Away at Veneer</title>
 <link>http://nolan.eakins.net/node/297</link>
 <description>&lt;p&gt;It looks like &lt;a href=&quot;http://www.paulgraham.com/&quot;&gt;Paul Graham&lt;/a&gt; has changed the style of his posts a bit. Right now he has four posts listed. Two are rather small by his standards. One of the four is an &lt;a href=&quot;http://paulgraham.com/web20interview.html&quot;&gt;interview&lt;/a&gt; he did for Ian Delaney.&lt;/p&gt;
&lt;p&gt;In response to one of the questions, PG stated:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&quot;A sense of design is also a big advantage. Big companies treat design almost as if you could paint it on after the fact. Even Google has this problem; their biggest weakness is that their definition of a hacker doesn&#039;t include a big enough design component. A hacker with design sense is really dangerous, especially as a startup founder.&quot;&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot;&gt;&amp;mdash;Paul Graham&lt;/p&gt;
&lt;/blockquote&gt;</description>
 <comments>http://nolan.eakins.net/node/297#comment</comments>
 <category domain="http://nolan.eakins.net/taxonomy/term/7">Computing</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/14">Personal</category>
 <pubDate>Thu, 03 Aug 2006 08:23:31 -0700</pubDate>
 <dc:creator>sneakin</dc:creator>
 <guid isPermaLink="false">297 at http://nolan.eakins.net</guid>
</item>
<item>
 <title>Classic Nolan</title>
 <link>http://nolan.eakins.net/node/296</link>
 <description>&lt;p&gt;It looks like I&#039;m now quotable. &lt;a href=&quot;http://web.hawkesnest.net/~hawke/index.html&quot;&gt;Alex Mauer&#039;s home page&lt;/a&gt; contains something that I came up with, most likely during a late night chat. The quote is: &quot;information is a free whore on the internet&quot;.&lt;/p&gt;</description>
 <comments>http://nolan.eakins.net/node/296#comment</comments>
 <category domain="http://nolan.eakins.net/taxonomy/term/25">Internet</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/14">Personal</category>
 <pubDate>Tue, 11 Jul 2006 00:46:49 -0700</pubDate>
 <dc:creator>sneakin</dc:creator>
 <guid isPermaLink="false">296 at http://nolan.eakins.net</guid>
</item>
<item>
 <title>Goog&#039;s Page Creator</title>
 <link>http://nolan.eakins.net/node/271</link>
 <description>&lt;p&gt;I toyed with &lt;a href=&quot;http://pages.google.com/&quot;&gt;Goog&#039;s Page Creator&lt;/a&gt; and created &lt;a href=&quot;http://sneakin.googlepages.com/&quot;&gt;a home page&lt;/a&gt;. It&#039;s ugly, and I wasn&#039;t wowed by the page creator. It was an interesting use of JavaScript and proved that JS can be damn slow. I probably won&#039;t go back there unless I want to start a link farm.&lt;/p&gt;
</description>
 <comments>http://nolan.eakins.net/node/271#comment</comments>
 <category domain="http://nolan.eakins.net/taxonomy/term/14">Personal</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/26">Web</category>
 <pubDate>Thu, 23 Mar 2006 11:11:26 -0800</pubDate>
 <dc:creator>sneakin</dc:creator>
 <guid isPermaLink="false">271 at http://nolan.eakins.net</guid>
</item>
<item>
 <title>People</title>
 <link>http://nolan.eakins.net/node/263</link>
 <description>&lt;p&gt;Last night I attended a Greenwood city council meeting in which a smoking ban was presented. It was one of those experiences where I saw first hand the problems with our nation. The problem isn&#039;t the myraid number of issues facing our governments, but the simple fact that principled people are hard to come by.&lt;/p&gt;
&lt;p&gt;Only one member of the council, Ron Deer, took a principled stand against the ban. Practically everyone else in the room was in favor of the ban, in favor of using the government to coerce smokers. The mayor even suggested that tobacco should be made illegal, hinting to his lack of integrity.&lt;/p&gt;
&lt;p&gt;I&#039;m left wondering how people who do not hold rational princples can be persuaded with a principled argument? It also begs to ask why our schools fail to turn out principled people?&lt;/p&gt;
</description>
 <comments>http://nolan.eakins.net/node/263#comment</comments>
 <category domain="http://nolan.eakins.net/taxonomy/term/14">Personal</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/4">Philosophy</category>
 <category domain="http://nolan.eakins.net/taxonomy/term/3">Politics</category>
 <pubDate>Tue, 07 Feb 2006 07:07:06 -0800</pubDate>
 <dc:creator>sneakin</dc:creator>
 <guid isPermaLink="false">263 at http://nolan.eakins.net</guid>
</item>
</channel>
</rss>
