<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pivotal Labs &#187; JT Archie</title>
	<atom:link href="http://pivotallabs.com/author/jt/feed/" rel="self" type="application/rss+xml" />
	<link>http://pivotallabs.com</link>
	<description>Agility Developed</description>
	<lastBuildDate>Fri, 24 May 2013 21:58:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>[NYC][Standup] 09/27/12: Protect all your attributes</title>
		<link>http://pivotallabs.com/nyc-standup-09-27-12-protect-all-your-attributes/</link>
		<comments>http://pivotallabs.com/nyc-standup-09-27-12-protect-all-your-attributes/#comments</comments>
		<pubDate>Thu, 27 Sep 2012 20:30:00 +0000</pubDate>
		<dc:creator>JT Archie</dc:creator>
				<category><![CDATA[Standup]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/nyc-standup-09-27-12-protect-all-your-attributes/</guid>
		<description><![CDATA[<p><h2>Interestings</h2>

<h3>attr_accessible is gone</h3>

<p>The strong_parameters gem has been integrated into rails edge by DHH and replaces attr_accessible.</p>

<p>https://github.com/rails/rails/commit/c49d959e9d40101f1712a452004695f4ce27d84c</p>

<h3>Capybara's should_not have_css visibility: false</h3>

<p>Capybara's "should_not have_css "#whatevs", visibility: false" results in flaky tests if the content in question is being hidden after a process completes &#40;such as an AJAX request&#41;.</p>

<p>An alternative is "should_not have_selector "#whatevs", visible: false". This results in substantially less flaky integration tests.</p> <a href="http://pivotallabs.com/nyc-standup-09-27-12-protect-all-your-attributes/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://pivotallabs.com/nyc-standup-09-27-12-protect-all-your-attributes/">[NYC][Standup] 09/27/12: Protect all your attributes</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<h2>Interestings</h2>
<h3>attr_accessible is gone</h3>
<p>The strong_parameters gem has been integrated into rails edge by DHH and replaces attr_accessible.</p>
<p>https://github.com/rails/rails/commit/c49d959e9d40101f1712a452004695f4ce27d84c</p>
<h3>Capybara&#8217;s should_not have_css visibility: false</h3>
<p>Capybara&#8217;s &#8220;should_not have_css &#8220;#whatevs&#8221;, visibility: false&#8221; results in flaky tests if the content in question is being hidden after a process completes &#40;such as an AJAX request&#41;.</p>
<p>An alternative is &#8220;should_not have_selector &#8220;#whatevs&#8221;, visible: false&#8221;. This results in substantially less flaky integration tests.</p>
<p>The post <a href="http://pivotallabs.com/nyc-standup-09-27-12-protect-all-your-attributes/">[NYC][Standup] 09/27/12: Protect all your attributes</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/nyc-standup-09-27-12-protect-all-your-attributes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Standup][NYC] 09.24.2012 Moral support for the pub and sub</title>
		<link>http://pivotallabs.com/standup-nyc-09-24-2012-moral-support-for-the-pub-and-sub/</link>
		<comments>http://pivotallabs.com/standup-nyc-09-24-2012-moral-support-for-the-pub-and-sub/#comments</comments>
		<pubDate>Mon, 24 Sep 2012 11:14:00 +0000</pubDate>
		<dc:creator>JT Archie</dc:creator>
				<category><![CDATA[Standup]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/standup-nyc-09-24-2012-moral-support-for-the-pub-and-sub/</guid>
		<description><![CDATA[<p><h2>Interestings</h2>

<h3>ActiveSupport::Notifications implements Pub/Sub</h3>

<h3>iOS6 Safari Caching POSTs</h3>

<p>Workarounds needed until bug is fixed.</p>

<p>http://arstechnica.com/apple/2012/09/developers-claim-safari-in-ios-6-breaks-web-apps-with-aggressive-caching/</p>

<h2>Events</h2>

<h3>Tuesday: NYC.rb Hackfest</h3>

<h3>Tuesday: Brown bag on ThreeJS &#40;WebGL&#41;</h3> <a href="http://pivotallabs.com/standup-nyc-09-24-2012-moral-support-for-the-pub-and-sub/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://pivotallabs.com/standup-nyc-09-24-2012-moral-support-for-the-pub-and-sub/">[Standup][NYC] 09.24.2012 Moral support for the pub and sub</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<h2>Interestings</h2>
<h3>ActiveSupport::Notifications implements Pub/Sub</h3>
<h3>iOS6 Safari Caching POSTs</h3>
<p>Workarounds needed until bug is fixed.</p>
<p>http://arstechnica.com/apple/2012/09/developers-claim-safari-in-ios-6-breaks-web-apps-with-aggressive-caching/</p>
<h2>Events</h2>
<h3>Tuesday: NYC.rb Hackfest</h3>
<h3>Tuesday: Brown bag on ThreeJS &#40;WebGL&#41;</h3>
<p>The post <a href="http://pivotallabs.com/standup-nyc-09-24-2012-moral-support-for-the-pub-and-sub/">[Standup][NYC] 09.24.2012 Moral support for the pub and sub</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/standup-nyc-09-24-2012-moral-support-for-the-pub-and-sub/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>merging scopes with STI models</title>
		<link>http://pivotallabs.com/merging-scopes-with-sti-models/</link>
		<comments>http://pivotallabs.com/merging-scopes-with-sti-models/#comments</comments>
		<pubDate>Thu, 30 Aug 2012 17:47:00 +0000</pubDate>
		<dc:creator>JT Archie</dc:creator>
				<category><![CDATA[Labs]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/merging-scopes-with-sti-models/</guid>
		<description><![CDATA[<p><h2>Introduction</h2>

<p>On a client project recently, we ran into a domain problem that didn't fit into the ActiveRecord standard conventions. The following is the thought process taken to get to our solution, so it gets detailed in some areas.</p>

<p>ActiveRecord has a great feature called <a href="http://api.rubyonrails.org/classes/ActiveRecord/Base.html">Single Table Inheritance</a>. It allows a model to have multiple types while using a single database table for the storage. Those type abstractions can each have their own validations, override base functionality, and specific abstraction functionality.</p>

<p>If your model has ever been littered with <code>case</code> statements checking if a <code>User</code> is a guest, admin, etc., you should take a look at STI.</p>

<h2>Models</h2>

<p>The project had a based model that had many types and each abstraction had a scope of <code>.active</code> that defined what it meant to be active for that type.</p>

<pre><code>class Person &#60; ActiveRecord::Base; end

class FireFighter &#60; Person
  def self.active
    where&#40;has_helmet: true&#41;
  end
end

class PoliceOfficer &#60; Person
  def self.active
    where&#40;has_squad_car: true&#41;
  end
end
</code></pre>

<h2>Problem</h2>

<p>We needed to create an API endpoint that returned all active <code>Person</code> instances. This would require us to iterate through each child of <code>Person</code> and get all its current active members. Since we have <code>Person</code> model let's give it a concept of <code>.active</code> that incorporates every active member of society in our domain.</p>

<h2>Solution</h2>

<p>We can extend <code>Person</code> to return an array of each active <code>FireFighter</code> and <code>PoliceOfficer</code>.</p>

<pre><code>class Person &#60; ActiveRecord::Base
  def self.active
    FireFighter.active.all + PoliceOfficer.active.all
  end
end
</code></pre>

<p>One problem we have with this implementation is every time we add a new abstraction of <code>Person</code> we have to add to <code>.active</code>. Luckily, ActiveRecord STI comes with support for looking up a parent's <code>.descendants</code>.</p>

<pre><code>class Person &#60; ActiveRecord::Base
  def self.active
    active_people = descendants.map do &#124;descendant&#124;
      d.active.all
    end.flatten
  end
end
</code></pre>

<p>This is pretty powerful. We can add <code>Astronaut</code> and any active astronauts will automatically be in <code>Person.active</code> array. This implementation will help satisfy our API endpoint requirements, but it does break useful ActiveRecord patterns. </p>

<h2>Advance Solution</h2>

<p><strong>WARNING:</strong> Continue at your own risk. If you are content with the solution above stop, but if you want to see what can be done with Arel continue.</p>

<p>What if we want to chain scopes or extend the <code>.active</code> with pagination for our API? We cannot do this because easily because we are currently returning a Ruby array instead of an <a href="http://api.rubyonrails.org/classes/ActiveRecord/Relation.html">ActiveRecord::Relation</a>. How can we modify <code>.active</code> to be an actual scope?</p>

<p>You might be thinking, ActiveRecord comes with the ability to <a href="http://apidock.com/rails/ActiveRecord/SpawnMethods/merge">merge</a> scopes between models. Unfortunately, it does not work very well when merging scopes with STI models.</p>

<p>We ended using Arel &#40;known for not being well documented&#41; within our model. Each ActiveRecord::Relation is actually just an object with holding on to Arel values for different parts of an SQL statement -- joins, froms, selects, etc. We are able to get the conditions for <code>WHERE</code> clause by looking at the ActiveRecord::Relation <code>where_values</code>.</p>

<pre><code>class Person &#60; ActiveRecord::Base
  def self.active
    conditions = descendants.map do &#124;d&#124;
      d.active.where_values.reduce&#40;:and&#41;
    end.reduce&#40;:or&#41;

    where&#40;conditions&#41;
  end
end
</code></pre>

<p>Our implementation takes the <code>where_values</code> from the <code>.active</code> scope from each descendant and does an SQL <code>OR</code> on them. ActiveRecord::Relation can take </p>

<pre><code># somewhere in a Rails console
&#62; Person.active.to_sql
=&#62; SELECT "people".* FROM "people"  WHERE &#40;
      &#40;"people"."has_helmet" = 't' AND "people"."type" = "FireFighter"&#41;
        OR
      &#40;"people"."has_squad_car" = 't' AND "people"."type" = "PoliceOfficer"&#41;
    &#41;
</code></pre>

<p>What does give us? We can now use <code>Person.active</code> as a normal scope, which allows us to append any conditions on to it.</p>

<pre><code>&#62; Person.active.where&#40;created_at: 2.days.ago..1.day.ago&#41;.order&#40;:created_at&#41;
=&#62; []
&#62; Person.active.limit&#40;10&#41;
=&#62; []
</code></pre> <a href="http://pivotallabs.com/merging-scopes-with-sti-models/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://pivotallabs.com/merging-scopes-with-sti-models/">merging scopes with STI models</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<h2>Introduction</h2>
<p>On a client project recently, we ran into a domain problem that didn&#8217;t fit into the ActiveRecord standard conventions. The following is the thought process taken to get to our solution, so it gets detailed in some areas.</p>
<p>ActiveRecord has a great feature called <a href="http://api.rubyonrails.org/classes/ActiveRecord/Base.html">Single Table Inheritance</a>. It allows a model to have multiple types while using a single database table for the storage. Those type abstractions can each have their own validations, override base functionality, and specific abstraction functionality.</p>
<p>If your model has ever been littered with <code>case</code> statements checking if a <code>User</code> is a guest, admin, etc., you should take a look at STI.</p>
<h2>Models</h2>
<p>The project had a based model that had many types and each abstraction had a scope of <code>.active</code> that defined what it meant to be active for that type.</p>
<pre><code>class Person &lt; ActiveRecord::Base; end

class FireFighter &lt; Person
  def self.active
    where&#40;has_helmet: true&#41;
  end
end

class PoliceOfficer &lt; Person
  def self.active
    where&#40;has_squad_car: true&#41;
  end
end
</code></pre>
<h2>Problem</h2>
<p>We needed to create an API endpoint that returned all active <code>Person</code> instances. This would require us to iterate through each child of <code>Person</code> and get all its current active members. Since we have <code>Person</code> model let&#8217;s give it a concept of <code>.active</code> that incorporates every active member of society in our domain.</p>
<h2>Solution</h2>
<p>We can extend <code>Person</code> to return an array of each active <code>FireFighter</code> and <code>PoliceOfficer</code>.</p>
<pre><code>class Person &lt; ActiveRecord::Base
  def self.active
    FireFighter.active.all + PoliceOfficer.active.all
  end
end
</code></pre>
<p>One problem we have with this implementation is every time we add a new abstraction of <code>Person</code> we have to add to <code>.active</code>. Luckily, ActiveRecord STI comes with support for looking up a parent&#8217;s <code>.descendants</code>.</p>
<pre><code>class Person &lt; ActiveRecord::Base
  def self.active
    active_people = descendants.map do |descendant|
      d.active.all
    end.flatten
  end
end
</code></pre>
<p>This is pretty powerful. We can add <code>Astronaut</code> and any active astronauts will automatically be in <code>Person.active</code> array. This implementation will help satisfy our API endpoint requirements, but it does break useful ActiveRecord patterns. </p>
<h2>Advance Solution</h2>
<p><strong>WARNING:</strong> Continue at your own risk. If you are content with the solution above stop, but if you want to see what can be done with Arel continue.</p>
<p>What if we want to chain scopes or extend the <code>.active</code> with pagination for our API? We cannot do this because easily because we are currently returning a Ruby array instead of an <a href="http://api.rubyonrails.org/classes/ActiveRecord/Relation.html">ActiveRecord::Relation</a>. How can we modify <code>.active</code> to be an actual scope?</p>
<p>You might be thinking, ActiveRecord comes with the ability to <a href="http://apidock.com/rails/ActiveRecord/SpawnMethods/merge">merge</a> scopes between models. Unfortunately, it does not work very well when merging scopes with STI models.</p>
<p>We ended using Arel &#40;known for not being well documented&#41; within our model. Each ActiveRecord::Relation is actually just an object with holding on to Arel values for different parts of an SQL statement &#8212; joins, froms, selects, etc. We are able to get the conditions for <code>WHERE</code> clause by looking at the ActiveRecord::Relation <code>where_values</code>.</p>
<pre><code>class Person &lt; ActiveRecord::Base
  def self.active
    conditions = descendants.map do |d|
      d.active.where_values.reduce&#40;:and&#41;
    end.reduce&#40;:or&#41;

    where&#40;conditions&#41;
  end
end
</code></pre>
<p>Our implementation takes the <code>where_values</code> from the <code>.active</code> scope from each descendant and does an SQL <code>OR</code> on them. ActiveRecord::Relation can take </p>
<pre><code># somewhere in a Rails console
&gt; Person.active.to_sql
=&gt; SELECT "people".* FROM "people"  WHERE &#40;
      &#40;"people"."has_helmet" = 't' AND "people"."type" = "FireFighter"&#41;
        OR
      &#40;"people"."has_squad_car" = 't' AND "people"."type" = "PoliceOfficer"&#41;
    &#41;
</code></pre>
<p>What does give us? We can now use <code>Person.active</code> as a normal scope, which allows us to append any conditions on to it.</p>
<pre><code>&gt; Person.active.where&#40;created_at: 2.days.ago..1.day.ago&#41;.order&#40;:created_at&#41;
=&gt; []
&gt; Person.active.limit&#40;10&#41;
=&gt; []
</code></pre>
<p>The post <a href="http://pivotallabs.com/merging-scopes-with-sti-models/">merging scopes with STI models</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/merging-scopes-with-sti-models/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What I&#8217;ve learned about RubyMotion</title>
		<link>http://pivotallabs.com/what-i-ve-learned-about-rubymotion/</link>
		<comments>http://pivotallabs.com/what-i-ve-learned-about-rubymotion/#comments</comments>
		<pubDate>Wed, 29 Aug 2012 18:36:00 +0000</pubDate>
		<dc:creator>JT Archie</dc:creator>
				<category><![CDATA[Labs]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/what-i-ve-learned-about-rubymotion/</guid>
		<description><![CDATA[<p><p>I've been trying to learn RubyMotion recently, using Ruby to develop iOS appeals to me.</p>

<p>I have no prior Objective-C or Cocoa API knowledge besides the basic HelloWorld. I've been using this <a href="http://rubymotion-tutorial.com/">tutorial</a>  and have learned more about Cocoa API faster using Ruby than with Objective-C. There is less boilerplate code that needs to be written for <a href="http://en.wikipedia.org/wiki/Objective-C#Interfaces_and_implementations">defining interfaces and implementations</a>. </p>

<p>The main takeaway of RubyMotion is that it is not your standard Ruby implementation. It is a Ruby runtime wrapped around the Objective-C runtime. All Ruby objects map directly to there corresponding Objective-C object -- Array to NSMutableArray, Hash to NSMutableDictionary, etc. RubyMotion does not come with the standard library as other flavors, you are relying on Cocoa API as the standard library.</p>

<p>There is even a difference in Ruby syntax to map directly to Objective-C. The Objective-C language does <a href="http://en.wikipedia.org/wiki/Objective-C#Messages">message passing</a> for "method invocation". This means that a method call on an object is determined by parameters rather than just method name. RubyMotion had to include this language feature, so you will actually see Ruby that is invalid all other Ruby flavors.</p>

<pre><code>class MyObject
    def doSomething&#40;doSomething, argument: argument&#41;
    end

    #This does not override the method defined above
    def doSomething&#40;doSomething, anotherArgument: argument&#41;
    end
end
</code></pre>

<p>Luckily there are extensions for your favorite editors. Rubymine even supports MacRuby syntax, but does not support autocomplete, yet.</p>

<p>Two weeks ago, I saw a talk about <em>RubyMotion</em> from its creator in Berlin. He gave the basic HelloWorld demonstration, but also gave an introduction in the community. It is small, but great things are coming out of it.</p>

<p>The community has started taking the power of Ruby and making the libraries and DSL-y things we love in Ruby.</p>

<ul>
<li><a href="https://github.com/rubymotion/BubbleWrap">BubbleWrap</a> is a resource API. It gives you easy access to JSON parsing, HTTP requests, alerts, etc. It is kind of catch all of lower-level Cocoa API tasks that you don't want to have to write your own helpers for.</li>
<li><a href="https://github.com/clayallsopp/formotion">Formotion</a> is a DSL to create Forms. Usually you use Interface Builder to build forms and load the appropriate NIB. This gem will allows you to define a form in code.</li>
<li><a href="https://github.com/alloy/MotionData">MotionData</a> is ActiveRecord like access to CoreData. It supports migrations, scopes, basic validations, etc.</li>
<li><a href="https://github.com/seanho/SimpleView">SimpleView</a> provides a DSL for formatting views.</li>
</ul>

<p>With all this, there is one question that always gets asked. Is RubyMotion worth it? Yes! Laurent, the creator, is in it to win it! This is why he charging for the RubyMotion; funding ensures that he can continue to work on it.</p>

<p>From a Pivot role, I've had to discover RubyMotion's position in testing. Pivotal Labs is a pure TDD shop, everything from <a href="https://github.com/pivotal/robolectric">Java</a>, <a href="https://github.com/pivotal/cedar">Objective-C</a>, <a href="https://github.com/pivotal/jasmine">Javascript</a>, and Ruby is tested.</p>

<p>RubyMotion comes with a prebuilt RSpec &#40;actually a port of <a href="https://github.com/alloy/MacBacon">bacon</a>&#41; like testing framework. The testing framework supports the <a href="http://blog.rubymotion.com/post/26489000626/functional-view-and-controller-testing-with-rubymotion">testing of views and controller</a> using the UIAutomation framework. I think that we can agree that it could be better, but I believe there is enough to get started and allow us to expand on it.</p>

<p>The RubyMotion community is still growing. I look forward to see what comes out of it, so that I can use Ruby in other devices. </p> <a href="http://pivotallabs.com/what-i-ve-learned-about-rubymotion/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://pivotallabs.com/what-i-ve-learned-about-rubymotion/">What I&#8217;ve learned about RubyMotion</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been trying to learn RubyMotion recently, using Ruby to develop iOS appeals to me.</p>
<p>I have no prior Objective-C or Cocoa API knowledge besides the basic HelloWorld. I&#8217;ve been using this <a href="http://rubymotion-tutorial.com/">tutorial</a>  and have learned more about Cocoa API faster using Ruby than with Objective-C. There is less boilerplate code that needs to be written for <a href="http://en.wikipedia.org/wiki/Objective-C#Interfaces_and_implementations">defining interfaces and implementations</a>. </p>
<p>The main takeaway of RubyMotion is that it is not your standard Ruby implementation. It is a Ruby runtime wrapped around the Objective-C runtime. All Ruby objects map directly to there corresponding Objective-C object &#8212; Array to NSMutableArray, Hash to NSMutableDictionary, etc. RubyMotion does not come with the standard library as other flavors, you are relying on Cocoa API as the standard library.</p>
<p>There is even a difference in Ruby syntax to map directly to Objective-C. The Objective-C language does <a href="http://en.wikipedia.org/wiki/Objective-C#Messages">message passing</a> for &#8220;method invocation&#8221;. This means that a method call on an object is determined by parameters rather than just method name. RubyMotion had to include this language feature, so you will actually see Ruby that is invalid all other Ruby flavors.</p>
<pre><code>class MyObject
    def doSomething&#40;doSomething, argument: argument&#41;
    end

    #This does not override the method defined above
    def doSomething&#40;doSomething, anotherArgument: argument&#41;
    end
end
</code></pre>
<p>Luckily there are extensions for your favorite editors. Rubymine even supports MacRuby syntax, but does not support autocomplete, yet.</p>
<p>Two weeks ago, I saw a talk about <em>RubyMotion</em> from its creator in Berlin. He gave the basic HelloWorld demonstration, but also gave an introduction in the community. It is small, but great things are coming out of it.</p>
<p>The community has started taking the power of Ruby and making the libraries and DSL-y things we love in Ruby.</p>
<ul>
<li><a href="https://github.com/rubymotion/BubbleWrap">BubbleWrap</a> is a resource API. It gives you easy access to JSON parsing, HTTP requests, alerts, etc. It is kind of catch all of lower-level Cocoa API tasks that you don&#8217;t want to have to write your own helpers for.</li>
<li><a href="https://github.com/clayallsopp/formotion">Formotion</a> is a DSL to create Forms. Usually you use Interface Builder to build forms and load the appropriate NIB. This gem will allows you to define a form in code.</li>
<li><a href="https://github.com/alloy/MotionData">MotionData</a> is ActiveRecord like access to CoreData. It supports migrations, scopes, basic validations, etc.</li>
<li><a href="https://github.com/seanho/SimpleView">SimpleView</a> provides a DSL for formatting views.</li>
</ul>
<p>With all this, there is one question that always gets asked. Is RubyMotion worth it? Yes! Laurent, the creator, is in it to win it! This is why he charging for the RubyMotion; funding ensures that he can continue to work on it.</p>
<p>From a Pivot role, I&#8217;ve had to discover RubyMotion&#8217;s position in testing. Pivotal Labs is a pure TDD shop, everything from <a href="https://github.com/pivotal/robolectric">Java</a>, <a href="https://github.com/pivotal/cedar">Objective-C</a>, <a href="https://github.com/pivotal/jasmine">Javascript</a>, and Ruby is tested.</p>
<p>RubyMotion comes with a prebuilt RSpec &#40;actually a port of <a href="https://github.com/alloy/MacBacon">bacon</a>&#41; like testing framework. The testing framework supports the <a href="http://blog.rubymotion.com/post/26489000626/functional-view-and-controller-testing-with-rubymotion">testing of views and controller</a> using the UIAutomation framework. I think that we can agree that it could be better, but I believe there is enough to get started and allow us to expand on it.</p>
<p>The RubyMotion community is still growing. I look forward to see what comes out of it, so that I can use Ruby in other devices. </p>
<p>The post <a href="http://pivotallabs.com/what-i-ve-learned-about-rubymotion/">What I&#8217;ve learned about RubyMotion</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/what-i-ve-learned-about-rubymotion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Standup][NY] 03/08/2012</title>
		<link>http://pivotallabs.com/standup-ny-03-08-2012/</link>
		<comments>http://pivotallabs.com/standup-ny-03-08-2012/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 22:02:00 +0000</pubDate>
		<dc:creator>JT Archie</dc:creator>
				<category><![CDATA[Standup]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/standup-ny-03-08-2012/</guid>
		<description><![CDATA[<p><h1>Interesting</h1>

<ul>
<li>Ruby MRI seems to have taken a step back in time, a dangerous, but useful feature &#40;to some&#41; is the <a href="http://patshaughnessy.net/2012/2/29/the-joke-is-on-us-how-ruby-1-9-supports-the-goto-statement">goto statement</a>.</li>
<li><p>It appears that DateTime object has some issues with doing math.</p>

<pre><code>DateTime.now - 1.hour #raises TypeError
DateTime.now - 3600   #works as expected
1.hour.class          #Fixnum
</code></pre></li>
<li><p>Reading the CSS property <code>background-position</code> in Chrome returns an invalid value. Don't rely on it.</p></li>
<li>Github was <a href="https://github.com/blog/1068-public-key-security-vulnerability-and-mitigation">hacked</a>! They had a security issue that was a result of <code>attr_accessible</code> being uses incorrectly. Remember to authorize your SSH keys.</li>
<li>Need help with cron? Use <a href="http://cronwtf.github.com">http://cronwtf.github.com</a> to convert cron into friendly English.</li>
<li><code>&#38;&#38;</code>, <code>&#124;&#124;</code>, and <code>!</code> vs. <code>and</code>, <code>or</code>, and <code>not</code>. It is highly recommended to always use the strict logical operators &#40;<code>&#38;&#38;</code>, <code>&#124;&#124;</code>, and <code>!</code>&#41; because the keywords
&#40;<code>and</code>, <code>or</code>, and <code>not</code>&#41; don't have the same operator precedence.</li>
<li>When evaluating variables in strings with <code>bash</code>, its better to use <code>${var}</code> than <code>$var</code>. The curly-brace allows you to evaluate a variable with copy behind it. For example, <code>${var}asdf</code> and <code>$varasdf</code> evaluate differently because of the expected variable name.</li>
</ul>

<h1>Help</h1>

<ul>
<li><p>Rails &#60;3.1 has some gotchyas when using <code>:inverse_of</code> option.</p>

<pre><code>class Note &#60; ActiveRecord::Base
  has_many :contacts, inverse_of: :note
end


class Contact &#60; ActiveRecord::Base
  belongs_to :note, touch: true #for triggering the note observer when the contact is updated
end


class NotObserver
  def after_touch&#40;note&#41;
    note.contacts # does not have the new attributes updated unless you specify the :inverse_of
  end
end


# Somewhere in the code...
contact.update_attributes....
</code></pre></li>
<li><p>When table names are not namespaced on a class. What is the best way to work with this if we want table names to be namespaced?</p>

<pre><code>class Foo::Bar &#60; ActiveRecord::Base
end


&#62; Foo::Bar.table_name == "bars"
true
</code></pre></li>
</ul> <a href="http://pivotallabs.com/standup-ny-03-08-2012/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://pivotallabs.com/standup-ny-03-08-2012/">[Standup][NY] 03/08/2012</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<h1>Interesting</h1>
<ul>
<li>Ruby MRI seems to have taken a step back in time, a dangerous, but useful feature &#40;to some&#41; is the <a href="http://patshaughnessy.net/2012/2/29/the-joke-is-on-us-how-ruby-1-9-supports-the-goto-statement">goto statement</a>.</li>
<li>
<p>It appears that DateTime object has some issues with doing math.</p>
<pre><code>DateTime.now - 1.hour #raises TypeError
DateTime.now - 3600   #works as expected
1.hour.class          #Fixnum
</code></pre>
</li>
<li>
<p>Reading the CSS property <code>background-position</code> in Chrome returns an invalid value. Don&#8217;t rely on it.</p>
</li>
<li>Github was <a href="https://github.com/blog/1068-public-key-security-vulnerability-and-mitigation">hacked</a>! They had a security issue that was a result of <code>attr_accessible</code> being uses incorrectly. Remember to authorize your SSH keys.</li>
<li>Need help with cron? Use <a href="http://cronwtf.github.com">http://cronwtf.github.com</a> to convert cron into friendly English.</li>
<li><code>&amp;&amp;</code>, <code>||</code>, and <code>!</code> vs. <code>and</code>, <code>or</code>, and <code>not</code>. It is highly recommended to always use the strict logical operators &#40;<code>&amp;&amp;</code>, <code>||</code>, and <code>!</code>&#41; because the keywords<br />
&#40;<code>and</code>, <code>or</code>, and <code>not</code>&#41; don&#8217;t have the same operator precedence.</li>
<li>When evaluating variables in strings with <code>bash</code>, its better to use <code>${var}</code> than <code>$var</code>. The curly-brace allows you to evaluate a variable with copy behind it. For example, <code>${var}asdf</code> and <code>$varasdf</code> evaluate differently because of the expected variable name.</li>
</ul>
<h1>Help</h1>
<ul>
<li>
<p>Rails &lt;3.1 has some gotchyas when using <code>:inverse_of</code> option.</p>
<pre><code>class Note &lt; ActiveRecord::Base
  has_many :contacts, inverse_of: :note
end


class Contact &lt; ActiveRecord::Base
  belongs_to :note, touch: true #for triggering the note observer when the contact is updated
end


class NotObserver
  def after_touch&#40;note&#41;
    note.contacts # does not have the new attributes updated unless you specify the :inverse_of
  end
end


# Somewhere in the code...
contact.update_attributes....
</code></pre>
</li>
<li>
<p>When table names are not namespaced on a class. What is the best way to work with this if we want table names to be namespaced?</p>
<pre><code>class Foo::Bar &lt; ActiveRecord::Base
end


&gt; Foo::Bar.table_name == "bars"
true
</code></pre>
</li>
</ul>
<p>The post <a href="http://pivotallabs.com/standup-ny-03-08-2012/">[Standup][NY] 03/08/2012</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/standup-ny-03-08-2012/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Standup][NYC] 2/29/2012 &#8211; Lead Day, do we have to program for that case?</title>
		<link>http://pivotallabs.com/standup-nyc-2-29-2012-lead-day-do-we-have-to-program-for-that-case/</link>
		<comments>http://pivotallabs.com/standup-nyc-2-29-2012-lead-day-do-we-have-to-program-for-that-case/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 22:51:00 +0000</pubDate>
		<dc:creator>JT Archie</dc:creator>
				<category><![CDATA[Standup]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/standup-nyc-2-29-2012-lead-day-do-we-have-to-program-for-that-case/</guid>
		<description><![CDATA[<p><h1>Interesting</h1>

<ul>
<li><p>When using <code>validates</code> on an association, remember for uniqueness validations to use the associated attribute.</p>

<pre><code>validates :foo, :uniqueness =&#62; true
</code></pre>

<p>Should be</p>

<pre><code>validates :foo_id, :uniqueness =&#62; true
</code></pre></li>
<li><p>You can get a quick an easy <code>git blame</code> with a string, rather than a line number.</p>

<p>git log --pretty=oneline -S'some string'</p></li>
</ul>

<h1>Help</h1>

<ul>
<li><p>What is the advantage of using <code>scope</code> over a class method?</p>

<pre><code>scope :new, order&#40;:id&#41;
</code></pre>

<p>or</p>

<pre><code>def self.new
  order&#40;:id&#41;
end
</code></pre>

<p>Some Pivots seem to think that <code>scope</code> doesn't add the default scope in some cases &#40;a bug?&#41;. It appears that class methods are the preferred way moving forward in Rails.</p></li>
</ul>

<h1>Events</h1>

<ul>
<li>Tuesday brown bag was a series of <a href="http://www.youtube.com/playlist?list=PLBD800FE807770F84">Youtube videos</a> of Alan Key speaking about programming.</li>
<li>Thursday UX Book Club is meeting to discuss Steve Jobs book.</li>
</ul> <a href="http://pivotallabs.com/standup-nyc-2-29-2012-lead-day-do-we-have-to-program-for-that-case/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://pivotallabs.com/standup-nyc-2-29-2012-lead-day-do-we-have-to-program-for-that-case/">[Standup][NYC] 2/29/2012 &#8211; Lead Day, do we have to program for that case?</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<h1>Interesting</h1>
<ul>
<li>
<p>When using <code>validates</code> on an association, remember for uniqueness validations to use the associated attribute.</p>
<pre><code>validates :foo, :uniqueness =&gt; true
</code></pre>
<p>Should be</p>
<pre><code>validates :foo_id, :uniqueness =&gt; true
</code></pre>
</li>
<li>
<p>You can get a quick an easy <code>git blame</code> with a string, rather than a line number.</p>
<p>git log &#8211;pretty=oneline -S&#8217;some string&#8217;</p>
</li>
</ul>
<h1>Help</h1>
<ul>
<li>
<p>What is the advantage of using <code>scope</code> over a class method?</p>
<pre><code>scope :new, order&#40;:id&#41;
</code></pre>
<p>or</p>
<pre><code>def self.new
  order&#40;:id&#41;
end
</code></pre>
<p>Some Pivots seem to think that <code>scope</code> doesn&#8217;t add the default scope in some cases &#40;a bug?&#41;. It appears that class methods are the preferred way moving forward in Rails.</p>
</li>
</ul>
<h1>Events</h1>
<ul>
<li>Tuesday brown bag was a series of <a href="http://www.youtube.com/playlist?list=PLBD800FE807770F84">Youtube videos</a> of Alan Key speaking about programming.</li>
<li>Thursday UX Book Club is meeting to discuss Steve Jobs book.</li>
</ul>
<p>The post <a href="http://pivotallabs.com/standup-nyc-2-29-2012-lead-day-do-we-have-to-program-for-that-case/">[Standup][NYC] 2/29/2012 &#8211; Lead Day, do we have to program for that case?</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/standup-nyc-2-29-2012-lead-day-do-we-have-to-program-for-that-case/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Standup][NYC] 1/17/2011</title>
		<link>http://pivotallabs.com/standup-nyc-1-17-2011/</link>
		<comments>http://pivotallabs.com/standup-nyc-1-17-2011/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 19:44:00 +0000</pubDate>
		<dc:creator>JT Archie</dc:creator>
				<category><![CDATA[Standup]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/standup-nyc-1-17-2011/</guid>
		<description><![CDATA[<p><h2>Interesting</h2>

<ul>
<li>Trying to load Ruby 1.9.3 with RVM on OSX Lion and having problems? Adam has found a solution <a href="http://pivotallabs.com/users/aberlin/blog/articles/1984-installing-ruby-1-9-3-w-rvm-on-mac-osx-lion">here</a>.</li>
</ul>

<h2>Events</h2>

<ul>
<li><a href="http://www.infoq.com/presentations/Simple-Made-Easy">Simple made easy</a> was the tech talk &#40;video&#41; today. The implications being what is easy might not be the best for your code maintenance. </li>
</ul> <a href="http://pivotallabs.com/standup-nyc-1-17-2011/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://pivotallabs.com/standup-nyc-1-17-2011/">[Standup][NYC] 1/17/2011</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<h2>Interesting</h2>
<ul>
<li>Trying to load Ruby 1.9.3 with RVM on OSX Lion and having problems? Adam has found a solution <a href="http://pivotallabs.com/users/aberlin/blog/articles/1984-installing-ruby-1-9-3-w-rvm-on-mac-osx-lion">here</a>.</li>
</ul>
<h2>Events</h2>
<ul>
<li><a href="http://www.infoq.com/presentations/Simple-Made-Easy">Simple made easy</a> was the tech talk &#40;video&#41; today. The implications being what is easy might not be the best for your code maintenance. </li>
</ul>
<p>The post <a href="http://pivotallabs.com/standup-nyc-1-17-2011/">[Standup][NYC] 1/17/2011</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/standup-nyc-1-17-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Standup][NY] 12/14/2011 &#8212; Nyan can reaches 5 million seconds tomorrow at 4:53pm</title>
		<link>http://pivotallabs.com/standup-ny-12-14-2011-nyan-can-reaches-5-million-seconds-tomorrow-at-4-53pm/</link>
		<comments>http://pivotallabs.com/standup-ny-12-14-2011-nyan-can-reaches-5-million-seconds-tomorrow-at-4-53pm/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 12:22:00 +0000</pubDate>
		<dc:creator>JT Archie</dc:creator>
				<category><![CDATA[Standup]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/standup-ny-12-14-2011-nyan-can-reaches-5-million-seconds-tomorrow-at-4-53pm/</guid>
		<description><![CDATA[<p><h2>Interesting</h2>

<ul>
<li>Git 1.7.8 is out!</li>
<li>We have a new gong in the office!</li>
<li>When using <code>Timecop.timetravel</code> in your tests, make sure that you use before setting up your test data. Otherwise the data could potentially be created before that time existed!</li>
<li><code>git whatchanged</code> gives you a normal <code>git log</code> with a list of changed files.</li>
</ul>

<h2>Help</h2>

<ul>
<li>Rails console history is crazy! On opening a new session, and pressing up for history, random data appears from history, many eons ago. Two files are written to with each rails command -> irb_history and irb-history. Any idea what's going? Some people think that it might the interaction with wirble.</li>
</ul> <a href="http://pivotallabs.com/standup-ny-12-14-2011-nyan-can-reaches-5-million-seconds-tomorrow-at-4-53pm/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://pivotallabs.com/standup-ny-12-14-2011-nyan-can-reaches-5-million-seconds-tomorrow-at-4-53pm/">[Standup][NY] 12/14/2011 &#8212; Nyan can reaches 5 million seconds tomorrow at 4:53pm</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<h2>Interesting</h2>
<ul>
<li>Git 1.7.8 is out!</li>
<li>We have a new gong in the office!</li>
<li>When using <code>Timecop.timetravel</code> in your tests, make sure that you use before setting up your test data. Otherwise the data could potentially be created before that time existed!</li>
<li><code>git whatchanged</code> gives you a normal <code>git log</code> with a list of changed files.</li>
</ul>
<h2>Help</h2>
<ul>
<li>Rails console history is crazy! On opening a new session, and pressing up for history, random data appears from history, many eons ago. Two files are written to with each rails command -> irb_history and irb-history. Any idea what&#8217;s going? Some people think that it might the interaction with wirble.</li>
</ul>
<p>The post <a href="http://pivotallabs.com/standup-ny-12-14-2011-nyan-can-reaches-5-million-seconds-tomorrow-at-4-53pm/">[Standup][NY] 12/14/2011 &#8212; Nyan can reaches 5 million seconds tomorrow at 4:53pm</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/standup-ny-12-14-2011-nyan-can-reaches-5-million-seconds-tomorrow-at-4-53pm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Standup][NYC] 2011-11-16 &#8211; Lion is not Enterprise ready</title>
		<link>http://pivotallabs.com/standup-nyc-2011-11-16-lion-is-not-enterprise-ready/</link>
		<comments>http://pivotallabs.com/standup-nyc-2011-11-16-lion-is-not-enterprise-ready/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 11:18:00 +0000</pubDate>
		<dc:creator>JT Archie</dc:creator>
				<category><![CDATA[Standup]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/standup-nyc-2011-11-16-lion-is-not-enterprise-ready/</guid>
		<description><![CDATA[<p><h2>Interesting</h2>

<ul>
<li>If you are trying to get REE on Lion make sure that you have GCC 4.2 or higher. Learn <a href="http://stackoverflow.com/questions/6804195/cant-install-ruby-enterprise-edition-with-rvm-on-osx-lion">more</a>.</li>
<li>If you are still using a mouse with scroll wheel in Lion, disable the middle click annoyance with Mission Control.</li>
</ul>

<h2>Help</h2>

<ul>
<li><a href="https://www.movember.com/us/donate/your-details/team_id/210562">Donate</a> for Movember we are team 'Pivots NY'. We grow facial hair for Man Cancer Awareness Month.</li>
</ul> <a href="http://pivotallabs.com/standup-nyc-2011-11-16-lion-is-not-enterprise-ready/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://pivotallabs.com/standup-nyc-2011-11-16-lion-is-not-enterprise-ready/">[Standup][NYC] 2011-11-16 &#8211; Lion is not Enterprise ready</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<h2>Interesting</h2>
<ul>
<li>If you are trying to get REE on Lion make sure that you have GCC 4.2 or higher. Learn <a href="http://stackoverflow.com/questions/6804195/cant-install-ruby-enterprise-edition-with-rvm-on-osx-lion">more</a>.</li>
<li>If you are still using a mouse with scroll wheel in Lion, disable the middle click annoyance with Mission Control.</li>
</ul>
<h2>Help</h2>
<ul>
<li><a href="https://www.movember.com/us/donate/your-details/team_id/210562">Donate</a> for Movember we are team &#8216;Pivots NY&#8217;. We grow facial hair for Man Cancer Awareness Month.</li>
</ul>
<p>The post <a href="http://pivotallabs.com/standup-nyc-2011-11-16-lion-is-not-enterprise-ready/">[Standup][NYC] 2011-11-16 &#8211; Lion is not Enterprise ready</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/standup-nyc-2011-11-16-lion-is-not-enterprise-ready/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Standup][NYC] 2011-11-14 &#8211; 3, 2, 1 Launch!</title>
		<link>http://pivotallabs.com/standup-nyc-2011-11-14-3-2-1-launch/</link>
		<comments>http://pivotallabs.com/standup-nyc-2011-11-14-3-2-1-launch/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 16:48:00 +0000</pubDate>
		<dc:creator>JT Archie</dc:creator>
				<category><![CDATA[Standup]]></category>

		<guid isPermaLink="false">http://pivotallabs.com/standup-nyc-2011-11-14-3-2-1-launch/</guid>
		<description><![CDATA[<p><h2>Interesting</h2>

<ul>
<li>Heroku has released <a href="http://blog.heroku.com/archives/2011/11/12/heroku_scheduler_add_on_now_available/">Scheduler</a>. Their replacement functionally for cron, which allows you to schedule processes to be run &#40;limited to a 10 minute interval&#41;.</li>
</ul>

<h2>Events</h2>

<ul>
<li>Monday - Raise Cache @ 7pm</li>
<li>Wednesday - node.js meetup @ 6:30pm</li>
<li>Wednesday - Machine Learning study group @ 7pm</li>
</ul> <a href="http://pivotallabs.com/standup-nyc-2011-11-14-3-2-1-launch/">Continue reading <span class="meta-nav">&#8594;</span></a></p><p>The post <a href="http://pivotallabs.com/standup-nyc-2011-11-14-3-2-1-launch/">[Standup][NYC] 2011-11-14 &#8211; 3, 2, 1 Launch!</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></description>
				<content:encoded><![CDATA[<h2>Interesting</h2>
<ul>
<li>Heroku has released <a href="http://blog.heroku.com/archives/2011/11/12/heroku_scheduler_add_on_now_available/">Scheduler</a>. Their replacement functionally for cron, which allows you to schedule processes to be run &#40;limited to a 10 minute interval&#41;.</li>
</ul>
<h2>Events</h2>
<ul>
<li>Monday &#8211; Raise Cache @ 7pm</li>
<li>Wednesday &#8211; node.js meetup @ 6:30pm</li>
<li>Wednesday &#8211; Machine Learning study group @ 7pm</li>
</ul>
<p>The post <a href="http://pivotallabs.com/standup-nyc-2011-11-14-3-2-1-launch/">[Standup][NYC] 2011-11-14 &#8211; 3, 2, 1 Launch!</a> appeared first on <a href="http://pivotallabs.com">Pivotal Labs</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://pivotallabs.com/standup-nyc-2011-11-14-3-2-1-launch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using apc
Database Caching 9/19 queries in 0.047 seconds using apc
Object Caching 1098/1210 objects using apc

 Served from: pivotallabs.com @ 2013-05-25 05:37:46 by W3 Total Cache -->