<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Polishing Ruby</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/" />
    <link rel="self" type="application/atom+xml" href="http://blog.zenspider.com/atom.xml" />
    <id>tag:blog.zenspider.com,2008-04-09://2</id>
    <updated>2008-05-14T13:21:39Z</updated>
    <subtitle>Musings on Ruby and the Ruby Community...</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Open Source 4.1</generator>

<entry>
    <title>https/ssl warning cleanup</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/05/httpsssl-warning-cleanup.html" />
    <id>tag:blog.zenspider.com,2008://2.328</id>

    <published>2008-05-14T13:21:39Z</published>
    <updated>2008-05-14T13:21:39Z</updated>

    <summary># clean up &quot;using default DH parameters&quot; warning for https class Net::HTTP alias :old_use_ssl= :use_ssl= def use_ssl= flag self.old_use_ssl = flag @ssl_context.tmp_dh_callback = proc {} end end...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<pre><code># clean up "using default DH parameters" warning for https
class Net::HTTP
  alias :old_use_ssl= :use_ssl=
  def use_ssl= flag
    self.old_use_ssl = flag
    @ssl_context.tmp_dh_callback = proc {}
  end
end
</code></pre>
]]>
        

    </content>
</entry>

<entry>
    <title>one more thing</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/04/one-more-thing.html" />
    <id>tag:blog.zenspider.com,2008://2.327</id>

    <published>2008-04-28T18:01:53Z</published>
    <updated>2008-04-28T18:01:53Z</updated>

    <summary>While I&apos;m on the topic... assert_nothing_raised and assert_nothing_thrown are the two most useless assertions on the planet. If they have spec equivalents, add those to the list as well. I had a student litter those everywhere and I told him...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Thoughts / Misc" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>While I'm on the topic...</p>

<p><code>assert_nothing_raised</code> and <code>assert_nothing_thrown</code> are the two most useless assertions on the planet. If they have spec equivalents, add those to the list as well.</p>

<p>I had a student litter those everywhere and I told him not to use it. He said he was just trying to be "explicit". You're writing a <em>test</em> already, you're already being explicit. By virtue of running code in the first place you're asserting that it doesn't throw anything unexpected.</p>

<p>Why does anyone use it? Is it just to up the assertion count?</p>

<p>I think I'm going to deprecate them from the assertion library unless someone can show me a compelling reason not to.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>must vs will</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/04/must-vs-will.html" />
    <id>tag:blog.zenspider.com,2008://2.326</id>

    <published>2008-04-28T17:57:20Z</published>
    <updated>2008-04-28T17:57:20Z</updated>

    <summary>John Barnette made a suggestion I like: will vs wont. Do you like that better than must vs wont? I think I do, but it might be too visually similar. I&apos;m not sure. Check it: (6 * 7).must_equal 42 (6...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Thoughts / Misc" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>John Barnette made a suggestion I like: <em>will</em> vs <em>wont</em>.</p>

<p>Do you like that better than <em>must</em> vs <em>wont</em>? I think I do, but it might be too visually similar. I'm not sure. Check it:</p>

<pre><code>(6 * 7).must_equal 42
(6 * 9).wont_equal 42
</code></pre>

<p>vs.</p>

<pre><code>(6 * 7).will_equal 42
(6 * 9).wont_equal 42
</code></pre>

<p>I think it looks OK so far.</p>

<p>Also, I added a simple little mapping system to make morphing the assertions into specifications more readable:</p>

<pre><code>Object.infect(:must, :wont,
              /(throw)s/              =&gt; '\1',
              /must_(.*_of|nil|same)/ =&gt; 'must_be_\1',
              /must_not_(nil|same)/   =&gt; 'must_not_be_\1',
              /wont_(nil|same)/       =&gt; 'wont_be_\1',
              /must_in_delta/         =&gt; 'must_be_close_to',
              /must_no_match/         =&gt; 'must_not_match',
              /must_operator/         =&gt; 'must_be',
/^(wont|must(_(block|raises|nothing_(raised|thrown)))?)$/ =&gt; :skip)
</code></pre>
]]>
        

    </content>
</entry>

<entry>
    <title>deny, refute, debunk</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/04/deny-refute-debunk.html" />
    <id>tag:blog.zenspider.com,2008://2.325</id>

    <published>2008-04-28T06:11:23Z</published>
    <updated>2008-04-28T06:11:24Z</updated>

    <summary>I&apos;ve been working a lot on miniunit (still needs a new name) and have been playing with words lately. should has been replaced with must, and should_not (lame!) has been replaced with wont. Wish I could have an apostrophe in...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Thoughts / Misc" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>I've been working a lot on miniunit (still needs a new name) and have been playing with words lately. <em>should</em> has been replaced with <em>must</em>, and <em>should_not</em> (lame!) has been replaced with <em>wont</em>. Wish I could have an apostrophe in there.</p>

<p>For a while Eric and I have added a method to our assertion suite:</p>

<pre><code>def deny exp
  assert ! exp
end
</code></pre>

<p>It is a really handy way to describe things. I dislike the look and sound of <code>assert ! blah</code> so we go with deny... but one thing bugs me:</p>

<pre><code>def test\_something
  assert 42 == 6 * 7
  deny 42 == 6 * 9    # does not line up
end
</code></pre>

<p>Yeah yeah... I'm OCD or something. I would much rather read:</p>

<pre><code>def test\_something\_better
  assert 42 == 6 * 7
  refute 42 == 6 * 9
end
</code></pre>

<p>I was digging through Apple's wonderful dictionary and thesaurus and came up with another possibility: <em>debunk</em>... how much better or worse is this?</p>

<pre><code>def test\_something\_better
  assert 42 == 6 * 7
  debunk 42 == 6 * 9
end
</code></pre>

<p>Hell... let's get rid of assert and go with <em>prove</em> and <em>rebut</em>! I've just saved you all an extra key per test! OH! <em><strong>show</strong></em>! Now that's a lot more assertive (pun intended) than <em>assert</em> is. That means I could come back full circle to <em>deny</em>. </p>

<p>That reminds me... I've LONG wanted a list of same-length opposite verbs and adjectives. Google turns up nothing... I'm wondering if I can't somehow generate it with GED's linguistics library.</p>
]]>
        

    </content>
</entry>

<entry>
    <title>miniunit needs a new name</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/04/miniunit-needs-a-new-name.html" />
    <id>tag:blog.zenspider.com,2008://2.324</id>

    <published>2008-04-24T13:38:10Z</published>
    <updated>2008-04-24T13:38:10Z</updated>

    <summary>I&apos;ve restructured and added to miniunit: lib/mini/test.rb lib/mini/spec.rb lib/mini/mock.rb All this fun in less than a thousand lines, tests included! So obviously it needs a new name. I was thinking of calling it &quot;Mini de Sade&quot; for fun, but it...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Thoughts / Misc" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>I've restructured and added to miniunit:</p>

<pre><code>lib/mini/test.rb
lib/mini/spec.rb
lib/mini/mock.rb
</code></pre>

<p>All this fun in less than a thousand lines, tests included!</p>

<p>So obviously it needs a new name. I was thinking of calling it "Mini de Sade" for fun, but it really doesn't convey what it does (other than hurt other code--tee hee!). I also searched through the dictionary looking for other possibilities:</p>

<pre><code>% egrep -i "m.*(t.*s|s.*t)|t.*(m.*s|s.*m)|s.*(m.*t|t.*m)" /usr/share/dict/words | ruby -e 'p STDIN.read.split(/\n/).sort_by { |s| s.length }.first(11)'
["must", "mist", "mast", "stem", "smit", "stum", "smut", "most", "myst", "stim", "stam"]
</code></pre>

<p>And I gotta say, I kinda like <b>M</b>u<b>ST</b>. I used that as inspiration already. I've also decided that "should" is too wishy-washy and switched to "must" in mini/spec.rb. (Don't worry, I made it easy to add your shoulds if you so desire).</p>

<p>(ooh. smut == <b>s</b>pecs, <b>m</b>ocks, and <b>u</b>nit <b>t</b>ests)</p>

<p>Any naming suggestions?</p>
]]>
        

    </content>
</entry>

<entry>
    <title>Speaking at GoRuCo</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/04/speaking-at-goruco.html" />
    <id>tag:blog.zenspider.com,2008://2.323</id>

    <published>2008-04-24T13:21:39Z</published>
    <updated>2008-04-24T13:21:39Z</updated>

    <summary>I&apos;ll be giving my talk &quot;Hurting Code for Fun and Profit&quot; as well as hosting RejectConf at GoRuCo this weekend. I hope to see you there!...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Planning" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Rails" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Thoughts / Misc" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>I'll be giving my talk "Hurting Code for Fun and Profit" as well as hosting RejectConf at GoRuCo this weekend. I hope to see you there!</p>
]]>
        

    </content>
</entry>

<entry>
    <title>ugly blog for a while</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/04/ugly-blog-for-a-while.html" />
    <id>tag:newblog.zenspider.com,2008://2.321</id>

    <published>2008-04-14T23:20:04Z</published>
    <updated>2008-04-14T23:20:04Z</updated>

    <summary>In an effort to de-cruft, I&apos;ve moved my blog to a completely new parallels slice with an updated FreeBSD and movable type engine... I migrated all the content, but none of the styling. Most of you won&apos;t care as a...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Thoughts / Misc" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>In an effort to de-cruft, I've moved my blog to a completely new parallels slice with an updated FreeBSD and movable type engine... I migrated all the content, but none of the styling. Most of you won't care as a vast majority use the RSS feed.  For those of you who actually read this in a browser, I apologize.</p>

<p>Eventually I'll get the dashboard and other styling thingies set up.</p>

<p><strong>updated:</strong> Apparently it also changed the UUIDs in the feed... <strong><em>Sorry</em></strong></p>
]]>
        

    </content>
</entry>

<entry>
    <title>I&apos;d die of typing</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/04/id-die-of-typing.html" />
    <id>tag:newblog.zenspider.com,2008://2.320</id>

    <published>2008-04-02T07:34:52Z</published>
    <updated>2008-04-10T00:43:20Z</updated>

    <summary>http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/server/src/main/java/org/apache/xmlrpc/server/RequestProcessorFactoryFactory.java?view=markup just look at that url for a second... (if it doesn&apos;t go off screen, that is) the domain... sure. whatever. viewvc. yeah. k. webservices/xmlrpc/trunk/server/src/main/java -- damn... we haven&apos;t even hit code yet! org/apache/xmlrpc/server -- WE STILL haven&apos;t hit code...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Thoughts / Misc" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p><a href="http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/server/src/main/java/org/apache/xmlrpc/server/RequestProcessorFactoryFactory.java?view=markup">http://svn.apache.org/viewvc/webservices/xmlrpc/trunk/server/src/main/java/org/apache/xmlrpc/server/RequestProcessorFactoryFactory.java?view=markup</a></p>

<p>just look at that url for a second... (if it doesn't go off screen, that is)</p>

<p>the domain... sure. whatever. <br />
<code>viewvc</code>. yeah. k. <br />
<code>webservices/xmlrpc/trunk/server/src/main/java</code> -- damn... we haven't even hit code yet! <br />
<code>org/apache/xmlrpc/server</code> -- WE STILL haven't hit code yet!?!  </p>

<p>and then... the kicker:</p>

<div style="font: 2em monospace; text-align: center"> RequestProcessorFactoryFactory.java </div>

<p>wtf? ... <strong>wow</strong>. check it:</p>

<pre><code>public interface RequestProcessorFactoryFactory { ... }
</code></pre>

<p>this thing declares an interface for a <strong>factory</strong> that produces <em><strong>other factories</strong></em> that produce things that process requests. processing requests... request processing. factory of factory of... I feel like the lawyer in Idiocracy. duuuh... errr. ummm.</p>

<p>How many freakin' levels of indirection does this world need? <em>It's not even a class</em>.</p>

<p>kill. me. now.</p>

<p>(Via <a href="http://blog.labnotes.org/2008/03/18/rounded-corners-196-the-only-key-you-need-is-f5/">Labnotes &raquo; Rounded Corners - 196</a>.)</p>
]]>
        

    </content>
</entry>

<entry>
    <title>test-unit version 1.2.3 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/03/testunit-version-123-has-been.html" />
    <id>tag:newblog.zenspider.com,2008://2.319</id>

    <published>2008-03-20T20:47:07Z</published>
    <updated>2008-04-10T00:43:20Z</updated>

    <summary> Test::Unit (Classic) - Nathaniel Talbott&apos;s originial test-unit, externalized from the ruby project as a gem (for tool developers). Changes: 1.2.3 / 2008-02-25 1 major enhancement Birthday (as a gem)! http://rubyforge.org/projects/test-unit/...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p><a href="http://test-unit.rubyforge.org/">
  <img height="161" width="308" src="http://test-unit.rubyforge.org/TestUnit.png"></a></p>

<p>Test::Unit (Classic) - Nathaniel Talbott's originial test-unit,
externalized from the ruby project as a gem (for tool developers).</p>

<p>Changes:</p>

<h3>1.2.3 / 2008-02-25</h3>

<ul>
<li><p>1 major enhancement</p>

<ul>
<li>Birthday (as a gem)!</li>
</ul></li>
<li><p><a href="http://rubyforge.org/projects/test-unit/">http://rubyforge.org/projects/test-unit/</a></p></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>Lookie! Test Status Matrix Thingy!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/03/lookie-test-status-matrix-thin.html" />
    <id>tag:newblog.zenspider.com,2008://2.318</id>

    <published>2008-03-20T06:48:25Z</published>
    <updated>2008-04-10T00:43:20Z</updated>

    <summary><![CDATA[ ------&gt; (no silly... look in the blog, not the RSS feed!)...]]></summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Thoughts / Misc" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p><br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
------&gt;</p>

<p>(no silly... look in the blog, not the RSS feed!)</p>
]]>
        

    </content>
</entry>

<entry>
    <title>RubyInline version 3.6.7 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/03/rubyinline-version-367-has-bee.html" />
    <id>tag:newblog.zenspider.com,2008://2.317</id>

    <published>2008-03-20T06:42:22Z</published>
    <updated>2008-04-10T00:43:18Z</updated>

    <summary>Ruby Inline is an analog to Perl&apos;s Inline::C. Out of the box, it allows you to embed C/++ external module code in your ruby script directly. By writing simple builder classes, you can teach how to cope with new languages...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="RubyInline" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>Ruby Inline is an analog to Perl's Inline::C. Out of the box, it
allows you to embed C/++ external module code in your ruby script
directly. By writing simple builder classes, you can teach how to cope
with new languages (fortran, perl, whatever). The code is compiled and
run on the fly when needed.</p>

<p>Using the package_inline tool Inline allows you to package up your
inlined object code for distribution to systems without a compiler.</p>

<p>Changes:</p>

<h3>3.6.7 / 2008-03-20</h3>

<ul>
<li><p>3 minor enhancements:</p>

<ul>
<li>Added ability to work entirely without .ruby_inline dir. Thanks Kevin Clark!</li>
<li>Updated history, readme, and rakefile for new hoe abilities.</li>
<li>Cleaned up some really ugly schlock. Man, compiling sucks!</li>
</ul></li>
<li><p>2 bug fixes:</p>

<ul>
<li>Fixes for 1.9.</li>
<li>Add -I for platform-specific header dir (for ruby/config.h).</li>
</ul></li>
<li><p><a href="http://rubyforge.org/projects/rubyinline/">http://rubyforge.org/projects/rubyinline/</a></p></li>
<li><a href="http://rubyinline.rubyforge.org/RubyInline/">http://rubyinline.rubyforge.org/RubyInline/</a></li>
<li><a href="http://www.zenspider.com/ZSS/Products/RubyInline/">http://www.zenspider.com/ZSS/Products/RubyInline/</a></li>
<li><a href="&#x6D;&#97;&#105;&#x6C;&#x74;&#111;:&#114;y&#97;&#x6E;&#x64;&#x2D;&#x72;&#x75;&#98;&#121;&#64;&#122;&#101;&#x6E;&#x73;&#112;&#x69;&#100;&#x65;&#114;&#x2E;&#99;&#111;&#109;">&#114;y&#97;&#x6E;&#x64;&#x2D;&#x72;&#x75;&#98;&#121;&#64;&#122;&#101;&#x6E;&#x73;&#112;&#x69;&#100;&#x65;&#114;&#x2E;&#99;&#111;&#109;</a></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>ZenTest version 3.9.2 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/03/zentest-version-392-has-been-r.html" />
    <id>tag:newblog.zenspider.com,2008://2.316</id>

    <published>2008-03-20T06:33:46Z</published>
    <updated>2008-04-10T00:43:18Z</updated>

    <summary>ZenTest provides 4 different tools and 1 library: zentest, unit_diff, autotest, multiruby, and Test::Rails. ZenTest scans your target and unit-test code and writes your missing code based on simple naming rules, enabling XP at a much quicker pace. ZenTest only...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Rails" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="ZenTest" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>ZenTest provides 4 different tools and 1 library: zentest, unit_diff,
autotest, multiruby, and Test::Rails.</p>

<p>ZenTest scans your target and unit-test code and writes your missing
code based on simple naming rules, enabling XP at a much quicker
pace. ZenTest only works with Ruby and Test::Unit.</p>

<p>unit_diff is a command-line filter to diff expected results from
actual results and allow you to quickly see exactly what is wrong.</p>

<p>autotest is a continous testing facility meant to be used during
development. As soon as you save a file, autotest will run the
corresponding dependent tests.</p>

<p>multiruby runs anything you want on multiple versions of ruby. Great
for compatibility checking!</p>

<p>Test::Rails helps you build industrial-strength Rails code.</p>

<p>Changes:</p>

<h3>3.9.2 / 2008-03-20</h3>

<ul>
<li><p>4 minor enhancements:</p>

<ul>
<li>Added compatibility with miniunit differences.</li>
<li>Added email<em>notify, jabber</em>notify, and rcov autotest plugins.</li>
<li>Updated rakefile to include examples automatically in example<em>dot</em>autotest.</li>
<li>multiruby now outputs each command so you can grab it easily.</li>
</ul></li>
<li><p>5 bug fixes:</p>

<ul>
<li>Ensure tests are run after reset.</li>
<li>Fixed all test/rails tests to run in any combo.</li>
<li>Fixed up growl.rb a bit... still buggy (growlnotify, not growl.rb).</li>
<li>Fixes for -f (fast start) and last_mtime in general.</li>
<li>Fixes for 1.9 and rubinius</li>
</ul></li>
<li><p><a href="http://www.zenspider.com/ZSS/Products/ZenTest/">http://www.zenspider.com/ZSS/Products/ZenTest/</a></p></li>
<li><a href="http://rubyforge.org/projects/zentest/">http://rubyforge.org/projects/zentest/</a></li>
<li><a href="m&#x61;&#105;&#x6C;&#116;&#x6F;:&#x72;&#121;an&#x64;&#x2D;&#x72;&#117;&#x62;&#x79;&#64;&#122;&#x65;&#110;&#x73;&#112;&#x69;&#100;&#101;&#114;&#x2E;&#99;&#111;&#x6D;">&#x72;&#121;an&#x64;&#x2D;&#x72;&#117;&#x62;&#x79;&#64;&#122;&#x65;&#110;&#x73;&#112;&#x69;&#100;&#101;&#114;&#x2E;&#99;&#111;&#x6D;</a></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>Removing duplicates from OmniFocus</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/03/removing-duplicates-from-omnif.html" />
    <id>tag:newblog.zenspider.com,2008://2.315</id>

    <published>2008-03-14T17:37:50Z</published>
    <updated>2008-04-10T00:43:18Z</updated>

    <summary>Sometimes something (I suspect iSync) screws up and duplicates my tasks. This has proven useful: tell application &quot;OmniFocus&quot; tell first document repeat with aContext in contexts set toDelete to {} set seen to {} repeat with aTask in tasks of...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Toys" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>Sometimes something (I suspect iSync) screws up and duplicates my tasks. This has proven useful:</p>

<pre><code>tell application "OmniFocus"
  tell first document
    repeat with aContext in contexts
      set toDelete to {}
      set seen to {}
      repeat with aTask in tasks of aContext
        if seen contains name of aTask then
          set end of toDelete to id of aTask
        else
          set end of seen to name of aTask
        end if
      end repeat

      repeat with aTask in toDelete
        try
          delete (task id aTask)
        end try
      end repeat
      count of toDelete
    end repeat
  end tell
end tell
</code></pre>
]]>
        

    </content>
</entry>

<entry>
    <title>rubyforge version 0.4.5 has been released!</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/03/rubyforge-version-045-has-been.html" />
    <id>tag:newblog.zenspider.com,2008://2.314</id>

    <published>2008-03-12T03:28:56Z</published>
    <updated>2008-04-10T00:43:18Z</updated>

    <summary>A script which automates a limited set of rubyforge operations. Run &apos;rubyforge help&apos; for complete usage. Setup: For first time users AND upgrades to 0.4.0: rubyforge setup (deletes your username and password, so run sparingly!) edit ~/.rubyforge/user-config.yml rubyforge config For...</summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>A script which automates a limited set of rubyforge operations.</p>

<ul>
<li>Run 'rubyforge help' for complete usage.</li>
<li>Setup: For first time users AND upgrades to 0.4.0:
<ul>
<li>rubyforge setup (deletes your username and password, so run sparingly!)</li>
<li>edit ~/.rubyforge/user-config.yml</li>
<li>rubyforge config</li>
</ul></li>
<li>For all rubyforge upgrades, run 'rubyforge config' to ensure you have latest.</li>
<li>Don't forget to login!  logging in will store a cookie in your
.rubyforge directory which expires after a time.  always run the
login command before any operation that requires authentication,
such as uploading a package.</li>
</ul>

<p>Changes:</p>

<h3>0.4.5 / 2008-03-11:</h3>

<ul>
<li>Update for Ruby 1.9.0.</li>
<li>Updated History, Rakefile, and Readme for new hoe abilities.</li>
<li><p>Added config backup/restore rake tasks (for testing).</p></li>
<li><p><a href="http://codeforpeople.rubyforge.org/rubyforge/">http://codeforpeople.rubyforge.org/rubyforge/</a></p></li>
<li><a href="http://rubyforge.org/projects/codeforpeople/">http://rubyforge.org/projects/codeforpeople/</a></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>Reason #437 why Phil Hagelburg rocks</title>
    <link rel="alternate" type="text/html" href="http://blog.zenspider.com/2008/03/reason-437-why-phil-hagelburg.html" />
    <id>tag:newblog.zenspider.com,2008://2.313</id>

    <published>2008-03-11T00:58:45Z</published>
    <updated>2008-04-10T00:43:17Z</updated>

    <summary><![CDATA[One Line Multi-Stage Deployment for Vlad: Kernel.load "config/deploy_#{ENV['to']}.rb" if ENV['to'] Making this elegant line possible: % rake vlad:deploy to=qa Coming Soon&trade; to a Vlad near you!...]]></summary>
    <author>
        <name>zenspider</name>
        <uri>http://blog.zenspider.com/</uri>
    </author>
    
        <category term="Rails" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Ruby" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="RubyHitSquad" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="en-us" xml:base="http://blog.zenspider.com/">
        <![CDATA[<p>One Line Multi-Stage Deployment for Vlad:</p>

<pre><code>Kernel.load "config/deploy_#{ENV['to']}.rb" if ENV['to']
</code></pre>

<p>Making this elegant line possible:</p>

<pre><code>% rake vlad:deploy to=qa
</code></pre>

<p>Coming Soon&trade; to a Vlad near you!</p>
]]>
        

    </content>
</entry>

</feed>
