<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Disqus - Friends of etagwerker</title><link>http://disqus.com/by/etagwerker/</link><description></description><atom:link href="http://disqus.com/etagwerker/friends.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Fri, 25 Mar 2016 21:59:10 -0000</lastBuildDate><item><title>Re: Ruby on Rails development company</title><link>(u'https://www.amberbit.com/blog/2014/9/9/ruby-the-bad-parts/',%201694450195L)#comment-1694450195</link><description>&lt;p&gt;I think my all time least favorite thing about Ruby is mixins. There are plenty of times where a mixin is okay (e.g. Enumerable adds a bunch of helpers that only depend on your code having one or two methods to support them), but I feel that mixins generally complicate objects quite a bit. Gems can usually get away with it because the complexity is isolated to some extent. It's when I'm working on Domain code that includes 10 modules and (MyObject.public_methods - Object.public_methods).size is something outrageous like 6000 that I get sick to my stomach. Usually those objects have massive dependency issues in the code base and are a nightmare to untangle&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Sat, 15 Nov 2014 09:00:30 -0000</pubDate></item><item><title>Re: Require only what you require</title><link>(u'http://twin.github.io/require-only-what-you-require/',%201849590053L)#comment-1849590053</link><description>&lt;p&gt;Great post. This was always a pattern I never really understood.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Thu, 12 Feb 2015 08:19:19 -0000</pubDate></item><item><title>Re: Introducing &amp;#8211; Swift For Rubyists</title><link>(u'https://adamdelong.com/introducing-swift-rubyists/',%201849619591L)#comment-1849619591</link><description>&lt;p&gt;Very excited for these. I've been meaning to read the Swift docs but haven't found the time. This is a great stepping stone&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Thu, 12 Feb 2015 08:39:58 -0000</pubDate></item><item><title>Re: 5 Vim Plugins that Helped Me Switch From Sublime</title><link>(u'https://adamdelong.com/5-vim-plugins-helped-switch-sublime/',%201849623338L)#comment-1849623338</link><description>&lt;p&gt;For Firefox users, I highly recommend trying VimFx. It adds vim-motion-like movements that work for navigating most websites. I find this much easier and quicker than switching to my mouse&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Thu, 12 Feb 2015 08:42:49 -0000</pubDate></item><item><title>Re: Swift for Rubyists: Arrays</title><link>(u'https://adamdelong.com/swift-rubyists-arrays/',%201849715106L)#comment-1849715106</link><description>&lt;p&gt;Example extension to get Ruby-like .each iteration &lt;a href="http://benscheirman.com/2014/06/implementing-ruby-style-iteration-in-swift/" rel="nofollow noopener" target="_blank" title="http://benscheirman.com/2014/06/implementing-ruby-style-iteration-in-swift/"&gt;http://benscheirman.com/201...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Thu, 12 Feb 2015 09:41:56 -0000</pubDate></item><item><title>Re: Writing methods for both class and instance levels</title><link>(u'https://6ftdan.com/allyourdev/2015/02/24/writing-methods-for-both-class-and-instance-levels/',%201877105450L)#comment-1877105450</link><description>&lt;p&gt;Good post!&lt;/p&gt;&lt;p&gt;I can't say that I'm a big fan of the "included" and "extended" callbacks, mostly because it means that something different happens depending on whether you use the module via "include" or "extend". I would only recommend using them when you are using them to manipulate the singleton as in the examples above (e.g. we use the included callback to modify the singleton which our module relies on)&lt;/p&gt;&lt;p&gt;Some things that help me think about this sort of thing:&lt;/p&gt;&lt;p&gt;1) Only modules/classes can be the owners of methods&lt;/p&gt;&lt;p&gt;2) Every object has a singleton class (note: modules/classes are objects with a singleton too). When you call "self.whatever" you are referencing the singleton&lt;/p&gt;&lt;p&gt;3) "include" will copy all of the instance methods of the target module into the class. "extend" will copy all of the instance methods of the target module into the singleton class&lt;/p&gt;&lt;p&gt;4) instance methods defined in a class are callable to instances of that class&lt;/p&gt;&lt;p&gt;There are a couple more interesting about Ruby's design regarding methods being bound vs. unbound, when that binding is made, and how a method's owner and receiver are determined. This can make it a bit more difficult to do things like transplant one method from one class to another or dynamically wrap and unwrap methods (which is trivial in languages like Javascript).&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Thu, 26 Feb 2015 13:24:50 -0000</pubDate></item><item><title>Re: All About Methods - Josh Bodah</title><link>(u'http://blog.jbodah.com/blog/2015/03/03/all-about-methods/',%201896883277L)#comment-1896883277</link><description>&lt;p&gt;Ah yes, thanks for the clarification. It's been awhile since I've used those languages&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Mon, 09 Mar 2015 11:58:07 -0000</pubDate></item><item><title>Re: A shortcut to see your Minitest failures instantly - Weissblog</title><link>(u'http://www.justinweiss.com/articles/how-to-see-your-minitest-failures-instantly/',%201970945670L)#comment-1970945670</link><description>&lt;p&gt;minitest-reporters also has a fast_fail option that will display issues as the occur. It has a couple other neat features like slow_count which displays the top N slowest tests which I find very useful&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Thu, 16 Apr 2015 12:40:36 -0000</pubDate></item><item><title>Re: Tips for Computer Science Internship Interviews</title><link>(u'http://louisrli.github.io/blog/2014/01/18/tips-for-computer-science-internship-interviews/',%201985365611L)#comment-1985365611</link><description>&lt;p&gt;As an interviewer, I found this very useful for ideas on how to choose appropriate questions based on a candidates skill level. Thanks!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Fri, 24 Apr 2015 13:05:56 -0000</pubDate></item><item><title>Re: 7 Deadly Sins of Ruby Metaprogramming</title><link>(u'https://www.codeschool.com/blog/2015/04/24/7-deadly-sins-of-ruby-metaprogramming/',%201996840590L)#comment-1996840590</link><description>&lt;p&gt;I agree with this. In the 7th example nested contexts can make it much easier to understand which logical paths have been tested and which have not. It also gives insight into how the code branches. For example, if there is a context that says "when a user is logged in" then I also expect to have "when a user is not logged in". By code folding all the blocks you get a nice readable breakdown of the logical cases. It also winds up being a great thing to share with product, UX, and other nontechnical stakeholders&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Thu, 30 Apr 2015 18:49:30 -0000</pubDate></item><item><title>Re: Creating custom Minitest reporters</title><link>(u'http://nandovieira.com/creating-custom-minitest-reporters',%202012147447L)#comment-2012147447</link><description>&lt;p&gt;That rake command generation that is based on the last failures is awesome! Care to share?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Thu, 07 May 2015 16:35:12 -0000</pubDate></item><item><title>Re: Using a Ruby Class To Write Functional Code</title><link>(u'https://patshaughnessy.net/localhost:9292/2014/4/8/using-a-ruby-class-to-write-functional-code',%202025450106L)#comment-2025450106</link><description>&lt;p&gt;I agree with a lot of the benefits you've mentioned about FP and liked your examples. It might be worth mentioning why large collections should be avoided with this approach (eg can't be marked for GC, lots of objects being created). We've been considering moving some of our backend into a pipelined approach although the jury is still out whether it will perform well enough with load.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Thu, 14 May 2015 18:04:43 -0000</pubDate></item><item><title>Re: How to upgrade to Rails 4.2 - Weissblog</title><link>(u'http://www.justinweiss.com/articles/how-to-upgrade-to-rails-4-dot-2/',%202123881506L)#comment-2123881506</link><description>&lt;p&gt;Awesome post! Lots of good stuff here. Having done a painful upgrade from 3.x to 4.1, I *highly* recommend upgrading your gems first to isolate changes.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Wed, 08 Jul 2015 11:33:58 -0000</pubDate></item><item><title>Re: AppleScript API - Spotify Developer</title><link>(u'https://developer.spotify.com/applescript-api/',%202154260621L)#comment-2154260621</link><description>&lt;p&gt;Any word on a fix or workaround for player position? It just gets stuck a lot of the time. Currently have an event queue fully working except for being able to detect a song end event for a single song stuck on repeat. A player position fix would make this possible.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Fri, 24 Jul 2015 00:25:21 -0000</pubDate></item><item><title>Re: The cost of using Ruby Gems</title><link>(u'http://blog.ragnarson.com/2015/07/29/the-cost-of-using-ruby-gems.html',%202174382896L)#comment-2174382896</link><description>&lt;p&gt;I recently was able to tear out a ton of gems from our test environment using a TracePoint script I wrote. I recommend it for anyone who might be living in a sea of gems like myself. It's slow but handy. &lt;a href="https://github.com/jbodah/dead_gems" rel="nofollow noopener" target="_blank" title="https://github.com/jbodah/dead_gems"&gt;https://github.com/jbodah/d...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Tue, 04 Aug 2015 16:06:01 -0000</pubDate></item><item><title>Re: Do You Know The Gem Gem? · Xavier Nayrac</title><link>(u'http://xavier.nayrac.eu/2015/08/03/do-you-know-the-gem-gem/',%202174453612L)#comment-2174453612</link><description>&lt;p&gt;Nice, `gem list -d` seems particularly appealing for when you have a few gems you're not familiar with in your bundle&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Tue, 04 Aug 2015 16:44:18 -0000</pubDate></item><item><title>Re: 
      
        Test Doubles: in theory, in Minitest and in RSpec
      
    </title><link>(u'http://rubylogs.com/test-doubles-theory-minitest-rspec/',%202177698994L)#comment-2177698994</link><description>&lt;p&gt;Great article! A few months ago I wanted to take another approach with the idea of spies that closer matched that of some JS libraries I'd worked with (e.g. always call through, never stub). Might be interesting to some: &lt;a href="https://github.com/jbodah/spy_rb" rel="nofollow noopener" target="_blank" title="https://github.com/jbodah/spy_rb"&gt;https://github.com/jbodah/s...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Thu, 06 Aug 2015 10:59:06 -0000</pubDate></item><item><title>Re: Strategy Fans, Kiss Your Pocket Money Good-Bye - Slitherine's Having A Sale</title><link>(u'http://toucharcade.com/2015/08/14/strategy-fans-kiss-your-pocket-money-good-bye-slitherines-having-a-sale/',%202199663468L)#comment-2199663468</link><description>&lt;p&gt;Wow, this would happen on the weekend I move and miss it&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Mon, 17 Aug 2015 23:15:27 -0000</pubDate></item><item><title>Re: 
          Three most telling files in legacy Rails apps
        </title><link>(u'http://blog.arkency.com/2015/08/three-most-telling-files-in-legacy-rails-apps/',%202202820459L)#comment-2202820459</link><description>&lt;p&gt;Great article. I had forgotten about looking at the Gemfile, but I was happy to see routes and schema both mentioned.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Wed, 19 Aug 2015 08:44:54 -0000</pubDate></item><item><title>Re: Pros and Cons of Ruby on Rails</title><link>(u'https://www.madetech.com/blog/pros-and-cons-of-ruby-on-rails',%202265320231L)#comment-2265320231</link><description>&lt;p&gt;Cheap is a relative term. I believe our company has reached a bit of a tipping point in the balance of productivity vs. infrastructure efficiency. I don't disagree with anything said here but it should be worth noting that developer's should still work hard to understand how to optimize their code. All too often I see management just take infrastructure costs as a given while doing some easy due diligence to optimize parts of the system would yield significant gains. Not disagreeing with anything here, just some food for thought. I do wish there was more focus on writing performant Ruby code&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Mon, 21 Sep 2015 09:25:33 -0000</pubDate></item><item><title>Re: 
          Advantages of working on a legacy rails application
        </title><link>(u'http://blog.arkency.com/2015/10/advantages-of-working-on-a-legacy-rails-application/',%202317127703L)#comment-2317127703</link><description>&lt;p&gt;Nice post with a lot of good points about from a different viewpoint. For me one of the nice things about larger applications is that I get to work not only at a code level but at an application architecture level. With a greenfield Rails app your app retains the Rails-y feel for quite a while. On the other hand, our app is several years old and has naturally segmented itself into several concerns. Being able to work at this level allows me to play with ideas like having a service-oriented architecture and to think more about a layered approach to the application which I find challenging and enjoyable. It also forces us to be more direct with our dependencies which can be a godsend in Rails.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Tue, 20 Oct 2015 13:26:59 -0000</pubDate></item><item><title>Re: 
      Using Docker to Parallelize Rails Tests
    </title><link>(u'http://ngauthier.com/2013/10/using-docker-to-parallelize-rails-tests.html',%202411300772L)#comment-2411300772</link><description>&lt;p&gt;Great post. Currently working on trying to move us from parallel_tests to something that will scale horizontally and have been considering Docker. This post gave me some really good snippets, thanks!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Tue, 15 Dec 2015 14:35:08 -0000</pubDate></item><item><title>Re: Learning Elixir's Collectable Protocol</title><link>(u'http://learningelixir.joekain.com/learning-elixir-collectable/',%202503776406L)#comment-2503776406</link><description>&lt;p&gt;This makes my head spin, but somehow this was enough to help me (trying to prefix each line of a syscall using System.cmd(into: ...) with some sort of identifier). Thanks!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Tue, 09 Feb 2016 00:01:23 -0000</pubDate></item><item><title>Re: Improve the Smell of Your Code with Microrefactorings</title><link>(u'http://www.sitepoint.com/?p=125693',%202575369339L)#comment-2575369339</link><description>&lt;p&gt;Pretty much the beauty of Enumerable in a nutshell. Now for a tutorial on how to make your own custom classes that purdy ;)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Thu, 17 Mar 2016 16:50:11 -0000</pubDate></item><item><title>Re: The super problem in Ruby</title><link>(u'http://zerothabhishek.com/the-super-problem-in-ruby/',%202589667609L)#comment-2589667609</link><description>&lt;p&gt;"Inherit instead of mixing-in maybe". These are really equivalent in my book. All `include`, `extend`, and `prepend` do is insert classes into the ancestor chain. You can verify with call MyClass.ancestors. I agree with you that mix-in's lead to very complex code, particularly when you are talking about mixins interacting between several classes. But to me it's not mixins; it's inheritance. Inheritance can lead to very complex code. A mixin is just inheritance that is resolved dynamically&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Josh Bodah</dc:creator><pubDate>Fri, 25 Mar 2016 21:59:10 -0000</pubDate></item></channel></rss>