<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Disqus - Latest Comments for jimweirich</title><link>http://disqus.com/by/jimweirich/</link><description></description><atom:link href="http://disqus.com/jimweirich/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Mon, 13 Jan 2014 16:22:04 -0000</lastBuildDate><item><title>Re: 167 Debugging in Gems | RubyTapas</title><link>https://rubytapas.dpdcart.com/subscriber/post?id=419#comment-1199040270</link><description>&lt;p&gt;Great episode.  Don't forget about the "gem which" command that also tells you where your gem is loaded.&lt;/p&gt;&lt;p&gt;And now you have me curious … what as the issue in the Rake gem you were tracking down?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Mon, 13 Jan 2014 16:22:04 -0000</pubDate></item><item><title>Re: When Constants Aren't - Courageous Software</title><link>http://randycoulman.com/blog/2013/12/03/when-constants-arent/#comment-1151703648</link><description>&lt;p&gt;Reminds me of the old adage: "Constants aren't, variables don't."&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Thu, 05 Dec 2013 10:47:47 -0000</pubDate></item><item><title>Re: 148 Rake Invoke | RubyTapas</title><link>https://rubytapas.dpdcart.com/subscriber/post?id=368#comment-1138735252</link><description>&lt;p&gt;Environment variables are kept in ENV, so are implicitly available.&lt;/p&gt;&lt;p&gt;If you meant task arguments, then yes, you need to supply them to invoke each time you use it.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Mon, 25 Nov 2013 16:57:26 -0000</pubDate></item><item><title>Re: 152 Progress Bar | RubyTapas</title><link>https://rubytapas.dpdcart.com/subscriber/post?id=378#comment-1128110703</link><description>&lt;p&gt;Thanks for the info on Ruby ProgressBar.  I'm questioning the trivia however.  You mentioned it was the first RubyGem ever released.  I always thought Rake had that honor. Rich Kilmer and I were sitting at the Austin airport after the RubyConf where RubyGems was written. We just got the RubyGems server working and I was running on my laptop over the Airport wifi.  I got someone to download the Rake gem off the RubyGems server running on my laptop.  Rake and one of Rich Kilmer's DSL libraries were the first ruby libraries to ever be packaged by RubyGems.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Mon, 18 Nov 2013 09:54:48 -0000</pubDate></item><item><title>Re: 149 Sum | RubyTapas</title><link>https://rubytapas.dpdcart.com/subscriber/post?id=371#comment-1120106502</link><description>&lt;p&gt;It might be useful mentioning why you might want to include an explicit seed value.  If the data array is empty, then data.reduce(0,:+) returns zero, but data.reduce(:+) will return nil. I always include the seed value unless I know for sure the data sample is not empty.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Tue, 12 Nov 2013 15:11:32 -0000</pubDate></item><item><title>Re: 148 Rake Invoke | RubyTapas</title><link>https://rubytapas.dpdcart.com/subscriber/post?id=368#comment-1110266820</link><description>&lt;p&gt;I consider execute to be internal to Rake, and would prefer people not use it to do double invokes.&lt;/p&gt;&lt;p&gt;The canonical way to do a double invoke is:&lt;/p&gt;&lt;p&gt;    Rake::Task["hello"].invoke&lt;br&gt;    Rake::Task["hello"].reenable&lt;br&gt;    Rake::Task["hello"].invoke&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Tue, 05 Nov 2013 17:36:38 -0000</pubDate></item><item><title>Re: Configuration Blocks - Courageous Software</title><link>http://randycoulman.com/blog/2013/10/01/configuration-blocks/#comment-1067428808</link><description>&lt;p&gt;I agree that method_missing is deeper in the bag of tricks. That's why I generally don't use this method and prefer the explicit passing technique for most things.&lt;/p&gt;&lt;p&gt;My dividing line is this: If the library is mainly for programmers, then the explicit yield(self) works fine (that's the route my Builder library went).&lt;/p&gt;&lt;p&gt;If the library is more of a DSL and I was really concerned about making it pretty, then I would probably use the method_missing technique.&lt;/p&gt;&lt;p&gt;I'm not overly found of the flexible either/or trick because it just moves cognitive load to the user of the library.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Wed, 02 Oct 2013 10:54:54 -0000</pubDate></item><item><title>Re: Configuration Blocks - Courageous Software</title><link>http://randycoulman.com/blog/2013/10/01/configuration-blocks/#comment-1066774152</link><description>&lt;p&gt;Two ccomments:&lt;/p&gt;&lt;p&gt;(1) The reason "libraries_to_link_with" isn't found is because it isn't defined at the time the project method is executed. Define "libraries_to_link_with" before calling project and both versions will work. Because "libraries_to_link_with" is a top level method, it is available in all objects.&lt;/p&gt;&lt;p&gt;(2) However, your point is correct, if project were invoked in a different object's scope, it would not be able to pick up objects defined in the invoking object if you use the non "p." version of the DSL.&lt;/p&gt;&lt;p&gt;Here is another way to get flexible DSLs: &lt;a href="https://gist.github.com/jimweirich/6787708" rel="nofollow noopener" target="_blank" title="https://gist.github.com/jimweirich/6787708"&gt;https://gist.github.com/jim...&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This relies on method_missing to reissue the command on the context object if the configuration object does not defined it.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Tue, 01 Oct 2013 21:18:00 -0000</pubDate></item><item><title>Re: 131 Rake Rules | RubyTapas</title><link>https://rubytapas.dpdcart.com/subscriber/post?id=288#comment-1030949371</link><description>&lt;p&gt;Excellent episode!  Thanks.&lt;/p&gt;&lt;p&gt;Just a couple of notes:&lt;/p&gt;&lt;p&gt;(1) You can use --rules on the command line rather than setting trace_rules in the Rakefile.&lt;/p&gt;&lt;p&gt;(2) You can use .ext (with no args) rather than .ext("")&lt;/p&gt;&lt;p&gt;(3) Rather than use the lambda in the rules, in real life I would have probably just looped over the two rules (see below) and let Rake sort it out.  However, I understand introducing the lambda for pedagogical reasons.&lt;/p&gt;&lt;p&gt;    # Looping over rules&lt;br&gt;    %w(.md .markdown).each do |ext|&lt;br&gt;      rule ".html" =&amp;gt; ext do |t|&lt;br&gt;        sh "pandoc -o #{&lt;a href="http://t.name" rel="nofollow noopener" target="_blank" title="t.name"&gt;t.name&lt;/a&gt;} #{t.source}"&lt;br&gt;      end&lt;br&gt;    end&lt;/p&gt;&lt;p&gt;I'll say again: Great episode.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Thu, 05 Sep 2013 10:50:24 -0000</pubDate></item><item><title>Re: Connascence - Courageous Software</title><link>http://randycoulman.com/blog/2013/08/27/connascence/#comment-1025777178</link><description>&lt;p&gt;I too have noticed the strange CoN/CoP nature of Smalltalk's parameter passing.  In the end, I think its just really CoN in that the name of the method is "replace:with:from:to:". I tend to look at that as a single name that encodes the positions of the arguments.&lt;/p&gt;&lt;p&gt;At least that's my current thinking on the topic.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Sun, 01 Sep 2013 20:59:32 -0000</pubDate></item><item><title>Re: 092 Coincidental Duplication Redux | RubyTapas</title><link>https://rubytapas.dpdcart.com/subscriber/post?id=185#comment-883389516</link><description>&lt;p&gt;Thanks for the example, but I'm not sure agree with the analysis.  There are many differences between the original and the refactored.&lt;/p&gt;&lt;p&gt;(A) Different interface. The original had four methods: whats the date for mothers/fathers day for a given year, and what's the next fathers/mothers day.  The refactored had two methods, and it wasn't clear from the name which methods from the original were implemented.&lt;/p&gt;&lt;p&gt;(B) Inexplicable switch from using dates to using times (and yet the variables are still called dates although now they are time values).&lt;/p&gt;&lt;p&gt;(C) Renamed methods (which I think are less clear than the original).&lt;/p&gt;&lt;p&gt;Here's an example that just extracted the common code from next_mothersday/next_fathersday: &lt;a href="https://gist.github.com/jimweirich/5509412" rel="nofollow noopener" target="_blank" title="https://gist.github.com/jimweirich/5509412"&gt;https://gist.github.com/jim...&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;I also marked the incidental methods as private to make it clear what is the public part of the module (that's mainly for documentation purposes, since it's a module that's included rather than an object that is called).&lt;/p&gt;&lt;p&gt;I think you can still make an argument that the complexity introduced by the DRY refactoring may outweigh the minor benefit of dry, but the balance is much closer in the revised refactoring than the original refactoring.&lt;/p&gt;&lt;p&gt;Anyways, that's my two cents.  Thanks for the example.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Fri, 03 May 2013 10:46:09 -0000</pubDate></item><item><title>Re: Seeing double: how Ruby shares string values</title><link>https://patshaughnessy.net/2012/1/18/seeing-double-how-ruby-shares-string-values#comment-820288223</link><description>&lt;p&gt;RE: "Creating any other long substring, 24 or more bytes, is slower."&lt;/p&gt;&lt;p&gt;Actually, it seems that any substring is shared, even if it doesn't go to the end of the original.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Tue, 05 Mar 2013 15:30:09 -0000</pubDate></item><item><title>Re: The art of speaking at conferences</title><link>http://jabberwocky.eu/2012/06/04/the-art-of-speaking-at-conferences/#comment-591248997</link><description>&lt;p&gt;Actually, the instance I was thinking about was not at SRC, but I'm sure the scenario has repeated itself over and over in various venues.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Wed, 18 Jul 2012 14:16:04 -0000</pubDate></item><item><title>Re: Practicing Ruby - Issue #24: Connascence as a Software Design Metric</title><link>http://blog.rubybestpractices.com/posts/gregory/056-issue-24-connascence.html#comment-331723453</link><description>&lt;p&gt;I have no idea why I'm not pronouncing the "n". I usually pronounce it.  In fact, I recall practicing saying the word before the talk. It's kinda annoying now that you pointed it out.[1]&lt;/p&gt;&lt;p&gt;Your question about Forth is a good one.  In Forth, you rarely find long words doing a lot of manipulation on the positional stack elements. When a word gets too big, you break it down into smaller, named words. I think the force to lots of small, named words is exactly the force to move to CoN over CoP.  BTW, I think Forth is a great language to learn how to factor to small words (i.e. methods).&lt;/p&gt;&lt;p&gt;[1] Now I'm going to have to check all the other recordings of this talk to see how I pronounce it there. :)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Tue, 11 Oct 2011 11:17:42 -0000</pubDate></item><item><title>Re: Null Objects and Falsiness</title><link>http://devblog.avdi.org/2011/05/30/null-objects-and-falsiness/#comment-214624108</link><description>&lt;p&gt;Since NullObjects are stateless, I typically create only one of them.&lt;/p&gt;&lt;p&gt;NULL_OBJECT = &lt;a href="http://NullObject.new" rel="nofollow noopener" target="_blank" title="NullObject.new"&gt;NullObject.new&lt;/a&gt;&lt;/p&gt;&lt;p&gt;and then use NULL_OBJECT rather than &lt;a href="http://NullObject.new" rel="nofollow noopener" target="_blank" title="NullObject.new"&gt;NullObject.new&lt;/a&gt; in the rest of my code.  Add appropriate layers of convenience as needed.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Tue, 31 May 2011 01:25:35 -0000</pubDate></item><item><title>Re: QR Code Fun
 -
{ |one, step, back| }</title><link>http://onestepback.org/index.cgi/General/QrCodeFun.red#comment-100618546</link><description>&lt;p&gt;The GitHub page with the QR codes is no longer available.  I don't know what happened to it.  Sorry.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Mon, 22 Nov 2010 09:15:06 -0000</pubDate></item><item><title>Re: QR Code Fun
 -
{ |one, step, back| }</title><link>http://onestepback.org/index.cgi/General/QrCodeFun.red#comment-93049645</link><description>&lt;p&gt;UPDATE:&lt;/p&gt;&lt;p&gt;If you want to see a cool use of QR codes on GitHub, go to &lt;a href="http://github.com/downloads/jimweirich/presentation_testing_why_dont_we_do_it_like_this/testing.key.pdf/qr_code" rel="nofollow noopener" target="_blank" title="http://github.com/downloads/jimweirich/presentation_testing_why_dont_we_do_it_like_this/testing.key.pdf/qr_code"&gt;http://github.com/downloads...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Tue, 02 Nov 2010 13:34:08 -0000</pubDate></item><item><title>Re: http://localhost:4000/2010/08/30/coming-soon.html</title><link>http://localhost:4000/2010/08/30/coming-soon.html#comment-75769048</link><description>&lt;p&gt;This is a test comment.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Tue, 07 Sep 2010 14:10:35 -0000</pubDate></item><item><title>Re: Why Whyday
 -
{ |one, step, back| }</title><link>http://onestepback.org/index.cgi/General/WhyWhyDay.red#comment-69136223</link><description>&lt;p&gt;I should also mention that EdgeCase is fully supporting Whyday by encouraging its developers to pick and Whyday project and work on it this Thursday.&lt;/p&gt;&lt;p&gt;Thanks @objo and @kend.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Mon, 16 Aug 2010 12:19:02 -0000</pubDate></item><item><title>Re: Line Noise
 -
{ |one, step, back| }</title><link>http://onestepback.org/index.cgi/Tech/Ruby/LineNoise.rdoc#comment-27866764</link><description>&lt;p&gt;$ linenoise &lt;a href="http://animal.io" rel="nofollow noopener" target="_blank" title="animal.io"&gt;animal.io&lt;/a&gt; &lt;br&gt;&lt;a href="http://animal.io" rel="nofollow noopener" target="_blank" title="animal.io"&gt;animal.io&lt;/a&gt; (25): :=(:=("")):=(:=(""))(,)()&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Sat, 02 Jan 2010 22:29:39 -0000</pubDate></item><item><title>Re: Braces Vs Do/End
 -
{ |one, step, back| }</title><link>http://onestepback.org/index.cgi/Tech/Ruby/BraceVsDoEnd.rdoc#comment-27196725</link><description>&lt;p&gt;The difference is where in the operator precedence table they fall.  { } binds tighter than do/end.  For example:&lt;/p&gt;&lt;p&gt;    f g { }&lt;/p&gt;&lt;p&gt;is parsed as f(g { }), where the braces belong to the method g.  On the other hand,&lt;/p&gt;&lt;p&gt;   f g do end&lt;/p&gt;&lt;p&gt;is parsed as f(g) do end, where the braces belong to the method f.  It only matters when you omit parenthesis and create ambiguities.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Thu, 24 Dec 2009 09:16:23 -0000</pubDate></item><item><title>Re: The Ruby Draft Specification</title><link>http://joefiorini.com/post/266523563#comment-25000781</link><description>&lt;p&gt;Standards should be used to codify existing practices, not be a test bed for new ideas. (I think the Emperor's Old Clothes by C.A.R.Hoare makes a good argument for that).&lt;/p&gt;&lt;p&gt;Standardizing Ruby 1.8.7 makes good sense. &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Mon, 07 Dec 2009 09:26:51 -0000</pubDate></item><item><title>Re: Now Using Pivotal Tracker
 -
{ |one, step, back| }</title><link>http://onestepback.org/index.cgi/News/PivotalTracker.red#comment-24356164</link><description>&lt;p&gt;Most of the issues I get from third parties are either transcribed from emails or taken from GitHub pull requests.  I suspect this will continue in the future.  If there is a small number of frequent issue reporters, we can probably deal with that.  Otherwise, I'll take another look at the problem.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Mon, 30 Nov 2009 14:01:08 -0000</pubDate></item><item><title>Re: What Are Metaclasses?
 -
{ |one, step, back| }</title><link>http://onestepback.org/index.cgi/Tech/Ruby/Metaclasses.red#comment-23444920</link><description>&lt;p&gt;(1) "A singleton class is a class" -- Yes&lt;br&gt;(2) "Its one instance is also a class" -- Only for singleton classes of classes. Obviously singleton classes of regular objects have regular objects for their instance.  Also, there is some debate on whether singleton classes have instances in the normal sense, since the objects themselves are created from the original class, continue to report the original class as its type, and return false when asked if they are "instance_of?" the singleton class.&lt;/p&gt;&lt;p&gt;But certainly singleton classes of classes fulfill a part of the role of metaclasses in that they define the behavior of classes.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Wed, 18 Nov 2009 05:32:37 -0000</pubDate></item><item><title>Re: What Are Metaclasses?
 -
{ |one, step, back| }</title><link>http://onestepback.org/index.cgi/Tech/Ruby/Metaclasses.red#comment-23261855</link><description>&lt;p&gt;Granted, the metaclass capability of Ruby is limited wrt Smalltalk or CL.  Maybe its best to say that Class + eigenclasses of classes provide a subset of metaclass capability.&lt;br&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jimweirich</dc:creator><pubDate>Mon, 16 Nov 2009 16:44:29 -0000</pubDate></item></channel></rss>