<?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 jamesgolick</title><link>http://disqus.com/by/jamesgolick/</link><description></description><atom:link href="http://disqus.com/jamesgolick/comments.rss" rel="self"></atom:link><language>en</language><lastBuildDate>Fri, 03 Jun 2011 17:44:11 -0000</lastBuildDate><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-217603837</link><description>&lt;p&gt;Yes, I have. I don't see SourceIndex back in RubyGems, and I have yet to see any evidence that legacy APIs are going to be maintained going forward. I have yet to see any evidence that they're not just going to revert to their obnoxious, anti-social behaviour as soon as all of this blows over. We're talking about 4+ /years/ of this, and you expect us to believe that after two weeks of relative silence from them, everything is going to change?&lt;/p&gt;&lt;p&gt;In fact, what I see is proof that things won't change. I see you looking for evidence that these changes aren't needed (your blog post looking for breakages caused by 1.8.5), trying to discredit Loren (apparently his share of the personal conflicts discredits him, while the same can't be said about Eric and Ryan), and bolster your position that the ruby community should live with the current status quo (bringing on a release manager who is a member of this social circle).&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Fri, 03 Jun 2011 17:44:11 -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-217550979</link><description>&lt;p&gt;&amp;gt; ...I've witnessed their outright rude interactions online.&lt;br&gt;&amp;gt; Cooler heads are needed here...&lt;/p&gt;&lt;p&gt;Then by your own argument, Eric and Ryan should go.&lt;br&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Fri, 03 Jun 2011 16:48:53 -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-217532364</link><description>&lt;p&gt;&amp;gt; My only concern is that it does gloss over some personal conflicts on both sides of the fence...&lt;/p&gt;&lt;p&gt;I'd really appreciate if you would be upfront about the fact that you are personal friends with these people. I disclosed my possible biases. You should too.&lt;/p&gt;&lt;p&gt;&amp;gt; ...that seems to be a good way for him to gain the community's trust...&lt;/p&gt;&lt;p&gt;As far as I can tell, Loren has a lot more of the community's trust than the current RubyGems team.&lt;br&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Fri, 03 Jun 2011 16:29:18 -0000</pubDate></item><item><title>Re: James on Software | Introducing Trample: A Better Load Simulator</title><link>http://jamesgolick.com/2009/6/4/introducing-trample-a-better-load-simulator.html#comment-147069971</link><description>&lt;p&gt;This isn't a rails plugin. I'm not entirely sure why it would need to be updated for a version of rails?&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Tue, 15 Feb 2011 01:13:14 -0000</pubDate></item><item><title>Re: We are experiencing too much load. Let's add a new server. | James on Software</title><link>http://jamesgolick.com/2010/10/27/we-are-experiencing-too-much-load-lets-add-a-new-server..html#comment-92810389</link><description>&lt;p&gt;If you're attempting to alleviate load being imposed on a cluster, then fundamentally, that cluster must be short on some resource. If that resource is necessary to bootstrap a new machine, then bootstrapping that machine will increase the load on the cluster before it decreases it. It doesn't matter what kind of software you're using.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Mon, 01 Nov 2010 16:17:35 -0000</pubDate></item><item><title>Re: We are experiencing too much load. Let's add a new server. | James on Software</title><link>http://jamesgolick.com/2010/10/27/we-are-experiencing-too-much-load-lets-add-a-new-server..html#comment-92803901</link><description>&lt;p&gt;Totally. That's why I specifically used the words "storage cluster". (Also, GlusterFS, like my toaster, is NoSQL ;-)).&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Mon, 01 Nov 2010 15:56:35 -0000</pubDate></item><item><title>Re: Crazy, Heretical, and Awesome: The Way I Write Rails Apps | James on Software</title><link>http://jamesgolick.com/2010/3/14/crazy-heretical-and-awesome-the-way-i-write-rails-apps.html#comment-63371797</link><description>&lt;p&gt;I'm using this: &lt;a href="http://github.com/thoughtbot/bourne" rel="nofollow noopener" target="_blank" title="http://github.com/thoughtbot/bourne"&gt;http://github.com/thoughtbo...&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Tue, 20 Jul 2010 12:15:28 -0000</pubDate></item><item><title>Re: Two Weeks With Cassandra | James on Software</title><link>http://jamesgolick.com/2010/4/4/two-weeks-with-cassandra.html#comment-48504839</link><description>&lt;p&gt;Not at all. There are a few places we're probably still going to use it, and I have a bunch of awesome changes that I'm going to push in the next little while.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Wed, 05 May 2010 11:00:08 -0000</pubDate></item><item><title>Re: Two Weeks With Cassandra | James on Software</title><link>http://jamesgolick.com/2010/4/4/two-weeks-with-cassandra.html#comment-48403813</link><description>&lt;p&gt;The cases have 4 disk bays.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Tue, 04 May 2010 17:02:56 -0000</pubDate></item><item><title>Re: Two Weeks With Cassandra | James on Software</title><link>http://jamesgolick.com/2010/4/4/two-weeks-with-cassandra.html#comment-48400880</link><description>&lt;p&gt;Separate disks for each, yes. Soon, I'd like to upgrade to RAIDed disks for durability.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Tue, 04 May 2010 16:40:58 -0000</pubDate></item><item><title>Re: Two Weeks With Cassandra | James on Software</title><link>http://jamesgolick.com/2010/4/4/two-weeks-with-cassandra.html#comment-48345340</link><description>&lt;p&gt;Yes. Although, we are in the process of moving various other functionality over to cassandra since it has been so successful thus far.&lt;/p&gt;&lt;p&gt;Also, CPU usage is no longer hovering around 0, but I'll explain more in another post.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Tue, 04 May 2010 10:37:17 -0000</pubDate></item><item><title>Re: What does "scalable database" mean? | James on Software</title><link>http://jamesgolick.com/2010/3/30/what-does-scalable-database-mean.html#comment-42312126</link><description>&lt;p&gt;CouchDB (on its own) is not horizontally scalable, because once a single machine is completely saturated with writes, you can't just turn on another to alleviate load. The lack of (built-in) partitioning makes all the difference.&lt;/p&gt;&lt;p&gt;That's not to say that couchdb isn't a great product, though. I love couch!&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Tue, 30 Mar 2010 14:24:58 -0000</pubDate></item><item><title>Re: What does "scalable database" mean? | James on Software</title><link>http://jamesgolick.com/2010/3/30/what-does-scalable-database-mean.html#comment-42306641</link><description>&lt;p&gt;I'm only interested in including databases whose operational properties I'm able to understand. Given that those two products are managed by somebody else and closed source, I don't think that they belong in this discussion.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Tue, 30 Mar 2010 13:51:42 -0000</pubDate></item><item><title>Re: Most NoSQL DBs Are Not Scalable | James on Software</title><link>http://jamesgolick.com/2010/3/29/most-nosql-dbs-are-not-scalable.html#comment-42232570</link><description>&lt;p&gt;There's nothing to substantiate. Something either scales horizontally or it doesn't. It's a complex feature that has to be designed and built for, not some magic property that just appears when you remove schemas and SQL.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Tue, 30 Mar 2010 00:44:56 -0000</pubDate></item><item><title>Re: Crazy, Heretical, and Awesome: The Way I Write Rails Apps | James on Software</title><link>http://jamesgolick.com/2010/3/14/crazy-heretical-and-awesome-the-way-i-write-rails-apps.html#comment-41950496</link><description>&lt;p&gt;Yes.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Sat, 27 Mar 2010 22:26:13 -0000</pubDate></item><item><title>Re: Crazy, Heretical, and Awesome: The Way I Write Rails Apps | James on Software</title><link>http://jamesgolick.com/2010/3/14/crazy-heretical-and-awesome-the-way-i-write-rails-apps.html#comment-41774362</link><description>&lt;p&gt;Yep, that's what we do.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Fri, 26 Mar 2010 12:20:31 -0000</pubDate></item><item><title>Re: Crazy, Heretical, and Awesome: The Way I Write Rails Apps | James on Software</title><link>http://jamesgolick.com/2010/3/14/crazy-heretical-and-awesome-the-way-i-write-rails-apps.html#comment-41773792</link><description>&lt;p&gt;The pattern matters, I agree. But, that doesn't mean that introducing a new pattern is a valid concern. If your team can't handle a new pattern (especially a straightforward one for which there is much literature), something is deeply, deeply wrong.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Fri, 26 Mar 2010 12:16:43 -0000</pubDate></item><item><title>Re: Crazy, Heretical, and Awesome: The Way I Write Rails Apps | James on Software</title><link>http://jamesgolick.com/2010/3/14/crazy-heretical-and-awesome-the-way-i-write-rails-apps.html#comment-41771079</link><description>&lt;p&gt;This blog is static html, generated by webby. Here's a gist of the helper I wrote to generate those code blocks.&lt;/p&gt;&lt;p&gt;&lt;a href="http://gist.github.com/345040" rel="nofollow noopener" target="_blank" title="http://gist.github.com/345040"&gt;http://gist.github.com/345040&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Fri, 26 Mar 2010 11:55:08 -0000</pubDate></item><item><title>Re: Crazy, Heretical, and Awesome: The Way I Write Rails Apps | James on Software</title><link>http://jamesgolick.com/2010/3/14/crazy-heretical-and-awesome-the-way-i-write-rails-apps.html#comment-41770922</link><description>&lt;p&gt;I'm not suggesting that anybody use a DI framework. That's certainly not necessary. But, a service layer (or something like it) is if you want to do this in rails.&lt;/p&gt;&lt;p&gt;It's not really possible to properly inject dependencies in to model objects (because the ActiveRecord framework controls instantiation). So you need another layer that handles all the coordination.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Fri, 26 Mar 2010 11:53:57 -0000</pubDate></item><item><title>Re: Crazy, Heretical, and Awesome: The Way I Write Rails Apps | James on Software</title><link>http://jamesgolick.com/2010/3/14/crazy-heretical-and-awesome-the-way-i-write-rails-apps.html#comment-41767889</link><description>&lt;p&gt;This is always the "big question" when people talk about modular code: how far is too far? How much decoupling do we need?&lt;/p&gt;&lt;p&gt;Of course, the answer is situational, and good judgement is necessary. But, my philosophy on this is that if you're writing mockist unit tests, they will guide you until you've built up enough experience to make those judgements for yourself.&lt;/p&gt;&lt;p&gt;If something starts becoming hard to test, it's time to break it up. Until then, just keep on going with it.&lt;/p&gt;&lt;p&gt;I'm not compelled by this "too many objects, I don't know which one to use" argument. It's easy to imagine php people making the same argument about model objects. "Should I write SQL in my templates (like I'm used to) or use the model object? I don't know which one to use."&lt;/p&gt;&lt;p&gt;Any programmer worth their salary is going to be capable of adapting to new patterns.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Fri, 26 Mar 2010 11:33:18 -0000</pubDate></item><item><title>Re: Crazy, Heretical, and Awesome: The Way I Write Rails Apps | James on Software</title><link>http://jamesgolick.com/2010/3/14/crazy-heretical-and-awesome-the-way-i-write-rails-apps.html#comment-41766827</link><description>&lt;p&gt;&amp;gt; You should open your mind to the possibility that when you save or when you log something IS business logic&lt;/p&gt;&lt;p&gt;Actually, I've shipped dozens of rails apps that were written using the anti-pattern I describe above. My mind was more than open to it.&lt;/p&gt;&lt;p&gt;Part of the point of using DI here is to make the unit tests isolated. If you don't isolate your unit tests with mocks and stubs, they're functional or integration tests anyway. And your integration tests are *always* important. DI or not.&lt;/p&gt;&lt;p&gt;&amp;gt; Adding more code is the last resort..&lt;/p&gt;&lt;p&gt;It's not really much more code. And more code is nearly always worth it when it enhances clarity.&lt;/p&gt;&lt;p&gt;&amp;gt; "theoretical concerns"&lt;/p&gt;&lt;p&gt;I listed several examples of non-theoretical concerns in the article.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Fri, 26 Mar 2010 11:25:10 -0000</pubDate></item><item><title>Re: Crazy, Heretical, and Awesome: The Way I Write Rails Apps | James on Software</title><link>http://jamesgolick.com/2010/3/14/crazy-heretical-and-awesome-the-way-i-write-rails-apps.html#comment-41102313</link><description>&lt;p&gt;Perhaps this was a bad example, because it could have been implemented with observers. There are a lot of cases where putting all this logic in to your models creates tight couplings and problems that can't be resolved with observers.&lt;/p&gt;&lt;p&gt;As for simplicity, I'm still not sure how you can call a callback that much easier than:&lt;/p&gt;&lt;p&gt;def save; something_before_save; super; end&lt;/p&gt;&lt;p&gt;And the above doesn't come with the weird side effects of the callback system.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Mon, 22 Mar 2010 16:11:04 -0000</pubDate></item><item><title>Re: Crazy, Heretical, and Awesome: The Way I Write Rails Apps | James on Software</title><link>http://jamesgolick.com/2010/3/14/crazy-heretical-and-awesome-the-way-i-write-rails-apps.html#comment-41101824</link><description>&lt;p&gt;The problem is that you can't inject in to ActiveRecord objects, because you don't control instantiation. If you add parameters to initialize, you'll completely break the behaviour of the objects.&lt;/p&gt;&lt;p&gt;That's because activerecord expects the object to be under its control. Which is fine, because if you respect SRP, then you don't need to add all kinds of additional stuff to AR::Base subclasses. They inherit just about everything they need to perform their responsibility from their superclass.&lt;/p&gt;&lt;p&gt;Callbacks inside of an object just don't make any sense to me. If you're implementing the object, why do you need a callback? "def save; do_something_before_save; super; end" is a hell of a lot clearer than some declarative injection of a method name in to an array that gets called behind closed doors inside the AR lifecycle. Especially when you consider the fact that those callbacks frequently get injected by plugins.&lt;/p&gt;&lt;p&gt;But the issue isn't really with callbacks, it's with massive SRP violations. I've just never seen this kind of design work out in the long term.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Mon, 22 Mar 2010 16:06:32 -0000</pubDate></item><item><title>Re: Crazy, Heretical, and Awesome: The Way I Write Rails Apps | James on Software</title><link>http://jamesgolick.com/2010/3/14/crazy-heretical-and-awesome-the-way-i-write-rails-apps.html#comment-41100369</link><description>&lt;p&gt;Putting logging in the controller is a reasonable solution to this particular problem. But it doesn't work in all cases. And used as a pattern, you wind up with fragments of logic all over your application. Not to mention that functional tests are a lousy mechanism.&lt;/p&gt;&lt;p&gt;If your reason for disliking service objects is that programmers will forget to use them, then I'm not sure there's really an argument to be had here. Any decent developer should be capable of adapting to new methodologies. If they're not, then they're probably not worth having on the team in the first place.&lt;/p&gt;&lt;p&gt;As for being overwhelmed with possible decouplings, the point is that things should just be built decoupled from the start. Lots of people and projects have done this successfully.&lt;/p&gt;&lt;p&gt;You don't have to worry about the future. You just have to worry about building the present in a way that respects the tried, tested, and true principles of object oriented programming. If you don't like OO, that's another argument altogether, but if you do, cramming all of your logic in to a small handful of objects is pretty clearly a bad idea.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Mon, 22 Mar 2010 15:53:08 -0000</pubDate></item><item><title>Re: On Mocks and Mockist Testing | James on Software</title><link>http://jamesgolick.com/2010/3/10/on-mocks-and-mockist-testing.html#comment-39900144</link><description>&lt;p&gt;That's a pretty interesting idea. To make it work, you'd have to indicate which concrete object a mock is doubling to the framework. Most of the existing ruby mocking frameworks don't do that, but it could be added pretty easily.&lt;/p&gt;&lt;p&gt;Also, this problem is solved entirely by static typing.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">jamesgolick</dc:creator><pubDate>Mon, 15 Mar 2010 18:15:14 -0000</pubDate></item></channel></rss>