<?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 foca</title><link>http://disqus.com/by/foca/</link><description></description><atom:link href="http://disqus.com/foca/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Wed, 12 Jun 2013 04:41:41 -0000</lastBuildDate><item><title>Re: Rails 4.0 Sneak Peek: Queueing</title><link>http://reefpoints.dockyard.com/ruby/2012/06/25/rails-4-sneak-peek-queueing.html#comment-927461615</link><description>&lt;p&gt;```&lt;br&gt;if Rails.env.test?&lt;br&gt;  class Proc&lt;br&gt;    alias_method :run, :call&lt;br&gt;  end&lt;br&gt;end&lt;br&gt;```&lt;/p&gt;&lt;p&gt;Now you can use procs for testing.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Wed, 12 Jun 2013 04:41:41 -0000</pubDate></item><item><title>Re: 7 Ways to Decompose Fat ActiveRecord Models</title><link>http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/#comment-685356922</link><description>&lt;p&gt;Great article!&lt;/p&gt;&lt;p&gt;A couple nitpicks with the code examples:&lt;/p&gt;&lt;p&gt;* On `AbandonedTrialQuery#find_each` you want `@relation` instead of `relation`.&lt;br&gt;* On `FacebookCommentNotifier` you should probably inherit from `SimpleDelegator` (or similar) since that interface is too restrictive in the case where the comment doesn't save and goes into the `render "new"` branch.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Wed, 17 Oct 2012 12:50:38 -0000</pubDate></item><item><title>Re: 2012 Rails Rumble</title><link>http://r12.railsrumble.com/entries/105#comment-680648832</link><description>&lt;p&gt;Hell. Yes.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Sat, 13 Oct 2012 01:39:24 -0000</pubDate></item><item><title>Re: Rails Rumble :: Just When You Thought You Were Out...</title><link>http://blog.railsrumble.com/2012/07/26/just-when-you-thought-you-were-out/#comment-598579641</link><description>&lt;p&gt;Wheeeeeeeeeeeeeeee&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Thu, 26 Jul 2012 11:05:49 -0000</pubDate></item><item><title>Re: http://blog.railsrumble.com/blog/2012/04/23/delayed-but-not-forgotten</title><link>http://blog.railsrumble.com/2012/04/23/delayed-but-not-forgotten/#comment-580930478</link><description>&lt;p&gt;@Brian Kung it's online.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Sun, 08 Jul 2012 19:05:09 -0000</pubDate></item><item><title>Re: The three cancers in the Ruby community - Ruby treats women as objects</title><link>http://blog.txustice.me/2012/04/the-three-cancers-in-the-ruby-community/#comment-498568284</link><description>&lt;p&gt;Nope. If you only have one dimension, you have a straight line. An infinite, straight line. You can't "turn it on itself" so the ends meet.&lt;/p&gt;&lt;p&gt;And of course, since one dimension means only a straight line, there's no "right" (or "left"). You can't "turn right".&lt;/p&gt;&lt;p&gt;In order to "keep turning right" you need a plane, which is a two-dimensional entity.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Sun, 15 Apr 2012 22:23:33 -0000</pubDate></item><item><title>Re: PHP: a fractal of bad design</title><link>https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/#comment-492882195</link><description>&lt;p&gt;Awesome post! I'd love to see you do something similar for ruby, and python. Obviously for (at least) Python you won't be so negative, but I really would like to see what you see as "horrible" in both languages. In fact, make this a series and just cover any language you can get at when you have time to do it :)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Tue, 10 Apr 2012 01:28:31 -0000</pubDate></item><item><title>Re: DCI Role Injection in Ruby :: Mike Pack Development</title><link>http://mikepackdev.com/blog_posts/26-dci-role-injection-in-ruby#comment-433357529</link><description>&lt;p&gt;So this it might not be "pure" DCI, but surely it's faster and the approach is similar:&lt;/p&gt;&lt;p&gt;Instead of defining modules with the Roles, define delegators.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre&gt;class SomeRole &amp;lt; SimpleDelegator&lt;br&gt;  def initialize(obj)&lt;br&gt;    super obj.dup&lt;br&gt;  end&lt;br&gt;&lt;br&gt;  def injected_method&lt;br&gt;  end&lt;br&gt;end&lt;br&gt;&lt;br&gt;class SomeOtherRole &amp;lt; SimpleDelegator&lt;br&gt;  def initialize(obj)&lt;br&gt;    super obj.dup&lt;br&gt;  end&lt;br&gt;&lt;br&gt;  def other_method_for_this_other_role&lt;br&gt;  end&lt;br&gt;end&lt;br&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;I'm pretty sure the benchmarks for this will be much better, and you still keep small, focused objects around.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Wed, 08 Feb 2012 17:23:06 -0000</pubDate></item><item><title>Re: How to add a Project to Railsonfire</title><link>http://help.railsonfire.com/setup/Adding-a-project.html#comment-425380042</link><description>&lt;p&gt;It'd be nice if you used ENV vars like heroku does. Providing a DATABASE_URL pointing to a database based on the Gemfile (as heroku does) would be nice. And generating a config/database.yml from that would be ideal.&lt;/p&gt;&lt;p&gt;If I can forget about configuring and it *just works* the same as heroku I'm a happier customer :)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Tue, 31 Jan 2012 07:52:57 -0000</pubDate></item><item><title>Re: Mass assignment security shouldn't happen in the model: Jon Leighton</title><link>http://jonathanleighton.com/articles/2011/mass-assignment-security-shouldnt-happen-in-the-model/#comment-418270528</link><description>&lt;p&gt;Have you seen how Django does this? It defines objects for the "Forms" that handle validations. There's a ruby implementation of this for ruby called Bureaucrat: &lt;a href="http://github.com/tizoc/bureaucrat" rel="nofollow noopener" target="_blank" title="http://github.com/tizoc/bureaucrat"&gt;http://github.com/tizoc/bur...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Sun, 22 Jan 2012 16:48:05 -0000</pubDate></item><item><title>Re: 5 things programmers preach but don&amp;#8217;t practice</title><link>http://devblog.avdi.org/2011/08/30/5-things-programmers-preach-but-dont-practice/#comment-298983419</link><description>&lt;p&gt;Hosted CI is hard. It's something RunCodeRun experienced. It's something I figured before investing too much time or resources in &lt;a href="http://FixTheBuild.com" rel="nofollow noopener" target="_blank" title="FixTheBuild.com"&gt;FixTheBuild.com&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The best bet for Travis for closed source projects is, IMO, that they make it easy to install on your own architecture so you can configure build agents to fit your needs without much trouble.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Tue, 30 Aug 2011 17:04:12 -0000</pubDate></item><item><title>Re: 2.5 Ways to Execute a Shell Command</title><link>http://robots.thoughtbot.com/post/8441525785#comment-277757384</link><description>&lt;p&gt;What's even *MORE* fun is that you can override ` for crazyness.&lt;/p&gt;&lt;p&gt;module OhMyGodDontDoThisAtHome&lt;br&gt;  def `(string)&lt;br&gt;    puts "HAHAHAHA TRICKED YOU!"&lt;br&gt;  end&lt;br&gt;end&lt;/p&gt;&lt;p&gt;It's one of the best hidden "operators" of ruby :)&lt;/p&gt;&lt;p&gt;And for good reason. Seriously. Don't change the semantics of ``.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Thu, 04 Aug 2011 18:42:53 -0000</pubDate></item><item><title>Re: If you gaze into nil, nil gazes also into you</title><link>http://robots.thoughtbot.com/post/8181879506#comment-277716263</link><description>&lt;p&gt;I like the NullObject pattern. I like the concept of the Maybe pattern, but I see two problems with your solution:&lt;/p&gt;&lt;p&gt;* You still need to know that #admin_of? might raise None::Unwrapped under certain conditions.&lt;/p&gt;&lt;p&gt;* Your Maybe class ends up with a huge interface to satisfy all possible clients. This is error prone in two ways:&lt;/p&gt;&lt;p&gt;a) what happens when class A returns a Maybe in which some_method? must return false for a null value, and class B returns a Maybe in which some_method? must return true for a null value (it's obviously a contrived example, and it's probably a smell about your design when methods with the same name have opposite semantics, but still…)&lt;/p&gt;&lt;p&gt;b) what happens when you refactor a method and forget to update the Maybe class because someone else defines the same method in Maybe (since all the tests run…), and later the semantics of that other class change, you update Maybe, and completely unrelated features/tests start failing for no apparent reason?&lt;/p&gt;&lt;p&gt;Both are easy to solve? Yes. But both wouldn't happen with an independent Null object for each case.&lt;/p&gt;&lt;p&gt;And your first example is easily solved by defining #admin_of? in terms of #member_of?&lt;/p&gt;&lt;p&gt;def admin_of?(project)&lt;br&gt;  member_of?(project) &amp;amp;&amp;amp; membership_for(project).admin?&lt;br&gt;end&lt;/p&gt;&lt;p&gt;(Of course, this won't apply for all cases, as this is a contrived example, and every nil situation looks like a nail when you have the NullObject hammer… but yeah.)&lt;br&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Thu, 04 Aug 2011 18:26:47 -0000</pubDate></item><item><title>Re: If you gaze into nil, nil gazes also into you</title><link>http://robots.thoughtbot.com/post/8181879506#comment-277694304</link><description>&lt;p&gt;I like the NullObject pattern (the first solution he presents) for the general case.&lt;/p&gt;&lt;p&gt;I do want to point out, though (and this is why I reply to you,) that Hash also has a #fetch method that people should use over #[].&lt;/p&gt;&lt;p&gt;hash = { a: 1, b: 2, c: 3 }&lt;br&gt;hash[:d] #=&amp;gt; nil&lt;br&gt;hash.fetch(:d) #=&amp;gt; raises KeyError, ":d not found"&lt;br&gt;hash.fetch(:d, 0) #=&amp;gt; 0&lt;br&gt;hash.fetch(:d) { some_lazy_calculation } #=&amp;gt; the result of said calculation&lt;/p&gt;&lt;p&gt;This avoids the nil "problem" for hashes in 100% of the cases, yet for some reason people don't use Hash#fetch :(&lt;/p&gt;&lt;p&gt;(And, if for some reason, you do want to return a value or nil, then hash.fetch(:d, nil) makes it explicit that you might return nil)&lt;br&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Thu, 04 Aug 2011 18:16:31 -0000</pubDate></item><item><title>Re: Why RubyGems Needs Loren Segal | James on Software</title><link>http://jamesgolick.com/2011/6/1/why-rubygems-needs-loren-segal.html#comment-217510205</link><description>&lt;p&gt;+1 as well&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Fri, 03 Jun 2011 16:06:45 -0000</pubDate></item><item><title>Re: Edge Rails.info :: Reversible Migrations</title><link>http://edgerails.info/articles/what-s-new-in-edge-rails/2011/05/06/reversible-migrations#comment-199495854</link><description>&lt;p&gt;@Aditya Sanghi  that's not hard to do with instance methods. And it requires less documentation:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;&lt;br&gt;    class RemoveTitleFromPosts &amp;lt; ActiveRecord::Migration&lt;br&gt;      def change&lt;br&gt;        remove_column :posts, :title&lt;br&gt;      rescue ActiveRecord::IrreversibleMigration&lt;br&gt;        # Just ignore this when reverting&lt;br&gt;      end&lt;br&gt;    end&lt;br&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;And so on. Using if and all those things that ruby has :) There's no need to add DSLs that provide no benefit over simple code.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Sat, 07 May 2011 19:56:54 -0000</pubDate></item><item><title>Re: We&amp;#8217;re not like Yammer or Chatter, and we don&amp;#8217;t want to be</title><link>https://blog.hipchat.com/2011/02/09/were-not-like-yammer-or-chatter-and-we-dont-want-to-be/#comment-144109323</link><description>&lt;p&gt;Oh, yeah, the layout is similar, and that's both reasonable and perfectly admissible. The color scheme (down to the colors for server notices and nick highlights!), and the typography, are the same, though, and I haven't seen a single screenshot of an "early day IRC client" with that particular scheme :)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Thu, 10 Feb 2011 11:05:56 -0000</pubDate></item><item><title>Re: Blog of Ryan Bigg - Ubuntu, Ruby, RVM, Rails, and You</title><link>http://j.ryanbigg.com/2010/12/ubuntu-ruby-rvm-rails-and-you/#comment-127972335</link><description>&lt;p&gt;BTW, regarding Puppet/Chef, you could use Vagrant to manage multiple development environments. It basically covers isolating the entire developer environment, and not just gems (think "app1 needs X version of external library" while "app2 needs Y version")&lt;/p&gt;&lt;p&gt;&lt;a href="http://vagrantup.com/" rel="nofollow noopener" target="_blank" title="http://vagrantup.com/"&gt;http://vagrantup.com/&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Tue, 11 Jan 2011 22:53:35 -0000</pubDate></item><item><title>Re: Love, hate, &amp;amp; tmux</title><link>http://robots.thoughtbot.com/post/2166174647#comment-110342947</link><description>&lt;p&gt;Oh. Ooooooooh. I owe you a keg of beer, I used to have this on my .vimrc:&lt;/p&gt;&lt;p&gt;nnoremap y "+y&lt;br&gt;vnoremap y "+y&lt;br&gt;nnoremap Y "+Y&lt;br&gt;vnoremap Y "+Y&lt;br&gt;nnoremap p "+p&lt;br&gt;vnoremap p "+p&lt;br&gt;nnoremap P "+P&lt;br&gt;vnoremap P "+P&lt;br&gt;nnoremap d "+d&lt;br&gt;vnoremap d "+d&lt;br&gt;nnoremap D "+D&lt;br&gt;vnoremap D "+D&lt;br&gt;nnoremap x "+x&lt;br&gt;vnoremap x "+x&lt;br&gt;nnoremap X "+X&lt;br&gt;vnoremap X "+X&lt;br&gt;nnoremap c "+c&lt;br&gt;vnoremap c "+c&lt;br&gt;nnoremap C "+C&lt;br&gt;vnoremap C "+C&lt;br&gt;vnoremap C "+C&lt;/p&gt;&lt;p&gt;This makes me a happy camper.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Sat, 11 Dec 2010 13:41:07 -0000</pubDate></item><item><title>Re: Love, hate, &amp;amp; tmux</title><link>http://robots.thoughtbot.com/post/2166174647#comment-110341265</link><description>&lt;p&gt;&amp;lt;del&amp;gt;I have y, p, c, d, x, etc all remapped to use the + registry. Regrettably, that doesn't work inside tmux, but does work inside gnu screen, so I'm still using screen :)&amp;lt;/del&amp;gt;&lt;/p&gt;&lt;p&gt;Uh, "set clipboard=unnamed" in your ~/.vimrc makes vim use the system registry by default.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Sat, 11 Dec 2010 13:37:02 -0000</pubDate></item><item><title>Re: Debugging Rails Applications With ruby-debug - Intridea Blog</title><link>http://intridea.com/2010/12/7/debug_rails_application_with_ruby-debug?blog=company#comment-108452200</link><description>&lt;p&gt;I have a vim alias that inserts `require "ruby-debug"; debugger; ""`. That works in rails even if you don't start the server with `--debugger`, and also works in any other ruby project, so since I do a lot of non-rails ruby stuff, it ends up being more comfortable.&lt;/p&gt;&lt;p&gt;The "" at the end is because when the call to `debugger` is at the end of a method, you will get the debugger in the calling method. So, for example:&lt;/p&gt;&lt;p&gt;    def a&lt;br&gt;      "hello"&lt;br&gt;      b&lt;br&gt;      "world"&lt;br&gt;    end&lt;/p&gt;&lt;p&gt;    def b&lt;br&gt;      x = 1&lt;br&gt;      debugger&lt;br&gt;    end&lt;/p&gt;&lt;p&gt;When you hit that debugger, the current line will be the one containing "world", inside the `a` method, and x will be out of scope. It's a contrived example, but useful :)&lt;/p&gt;&lt;p&gt;By default ruby-debug has this annoying habit of only showing you back the result of an expression (that isn't a debugger command) if you use the `p` command (so `p something` will be equivalent to doing `something` on irb).&lt;/p&gt;&lt;p&gt;In order to get around that, I add 'set autoeval' to my ~/.rdebugrc.&lt;/p&gt;&lt;p&gt;Also, adding 'set autolist' to that file will make it so that after command you run, it will show you where you are on the code (the current line and 5 lines before/after), which is immensely useful, specially when working with multiple breakpoints :)&lt;/p&gt;&lt;p&gt;And talking about multiple breakpoints, today a coworker told me about the 'b' (or 'break') command of ruby-debug, to set more breakpoints from inside the debugger. You can do 'b SomeClass#some_method' and you get an automatic breakpoint whenever that method is called. You can also do 'b some/file:11' to break on line 11 of some/file.&lt;/p&gt;&lt;p&gt;ruby-debug is probably the single most useful tool in my ruby development toolchain, right up there with rvm.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Tue, 07 Dec 2010 17:29:43 -0000</pubDate></item><item><title>Re: http://blog.railsrumble.com/blog/2010/10/08/intridea-omniauth</title><link>http://blog.railsrumble.com/2010/10/08/intridea-omniauth/#comment-85232188</link><description>&lt;p&gt;This is definitely interesting. Since we saw the announcement the other day we've been thinking about playing with OmniAuth.&lt;/p&gt;&lt;p&gt;For the rumble, though, the three devs in our team are used to Devise, and we all know that the Rumble is not the time to play with new stuff if you want to cross the finish line in 48 hours :)&lt;/p&gt;&lt;p&gt;So… We're undecided. But I'd definitely love to use it in other contexts!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Fri, 08 Oct 2010 11:47:29 -0000</pubDate></item><item><title>Re: Class Methods Considered Annoying</title><link>http://devblog.avdi.org/2010/09/14/class-methods-considered-annoying/#comment-77529929</link><description>&lt;p&gt;For the specific case of finders, I like Candy's approach: &lt;a href="http://github.com/SFEley/candy" rel="nofollow noopener" target="_blank" title="http://github.com/SFEley/candy"&gt;http://github.com/SFEley/candy&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I haven't used it, though, so I'm not sure how annoying it gets, but TL;DR: You define an extra class for each of your models that handles the collection. So for the Person model you would also define People (which includes Candy::Collection). Person is blissfully unaware of finders and that sort of thing. People handles all that.&lt;/p&gt;&lt;p&gt;It feels much cleaner, even if a bit more verbose. Also, I keep typing People.all in the rails console because my mind tells me that I want a collection, so it probably maps better to *my* brain :P&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Tue, 14 Sep 2010 11:29:15 -0000</pubDate></item><item><title>Re: Class Methods Considered Annoying</title><link>http://devblog.avdi.org/2010/09/14/class-methods-considered-annoying/#comment-77528721</link><description>&lt;p&gt;IMO, people who understand singleton methods should not define them on modules they plan to use as mixins.&lt;/p&gt;&lt;p&gt;What I do for this kind of thing (also ugly, but slightly less so): &lt;a href="http://gist.github.com/579194" rel="nofollow noopener" target="_blank" title="http://gist.github.com/579194"&gt;http://gist.github.com/579194&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I don't think class methods are to be considered harmful. But they *ARE* definitely abused. &lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Tue, 14 Sep 2010 11:24:09 -0000</pubDate></item><item><title>Re: blog dot voxdolo dot me | A Diatribe on Maintaining State</title><link>http://blog.voxdolo.me/a-diatribe-on-maintaining-state.html#comment-75487239</link><description>&lt;p&gt;I like it.&lt;/p&gt;&lt;p&gt;*But* except for very specific circumstances, I consider setters (and mutability in general), as A Bad Thing™. I agree that coding to an interface is, however, A Good Thing™.&lt;/p&gt;&lt;p&gt;Basically, if you look at it from the outside, you're now exposing state (and implementation details!) to your collaborators. Following on the (admittedly contrived) examples: why could I change a message's body? Maybe this is as simple as making &lt;code&gt;#body=&lt;/code&gt; a protected method, thus not exposing it to clients.&lt;/p&gt;&lt;p&gt;I reckon I definitely think a lot more in terms of external APIs than internal APIs. That's something I have to get better at. But… I don't know, I'm just thinking out loud a bit.&lt;/p&gt;&lt;p&gt;Again, I like the concept, and maybe it's just the examples :)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Nicolas Sanguinetti</dc:creator><pubDate>Mon, 06 Sep 2010 09:20:49 -0000</pubDate></item></channel></rss>