pivotallabs.com Archives - 10 May 2013, Friday

To make all this process as simple as possible, a variation of the third approach (Rack middleware + Selenium Webdriver + no caching) is available here as a Gem. Drop it in your project, have the dependencies installed, and may the SEO gods bless you! The whole story Much has been sai...

If you are using Rails engines to break up a single app into modular pieces, migrations (as they are currently implemented in Rails 3.2.13) become clumsy. There are three options for migrations within an engine (spoiler: #3 is the best): 1) You can use the your_engine_name:install:mig...

Extending ActiveRecord::Base leaks a powerful API throughout an application which can lead to tempting code which breaks good design. Take the classic blog example where you may want to retrieve the latest posts by a given author. You may have seen, or even written code that gets the ...

Pivotal Labs seeks a Network Administrator who likes people almost as much as they like nmap. Do you take great joy in a smoothly running network? Does the 500-mile-email story fill you with troubleshooting glee? I want to meet you. Is discovering something you don’t know exciting? Aw...

If you watch one talk from Mountain West Ruby 2013, watch Greg Baugues: Devs and Depression . Talks @ Mountain West Ruby Conference Mountain West Ruby , was a great conference: lots of content and awesome people. It had one DevOps day and two Ruby days. Its presentations have recently...

There’s an old MVC mantra: “Fat models, skinny controllers and stupid views.” We don’t want complex logic in our views; that makes them hard to maintain. We don’t want any business logic in our controllers, either. That’s why we have models. Views should be so simple that they don’t r...

Last week I blogged about a new project for aiding in the hunt for test pollution, Scrubber . This is a personal side project that I began recently. It’s in the very early stages, like many of my other pet projects. It’s something I’ve worked on entirely alone, though I’d also love to...

An agile retrospective is a safe space. We can reflect on the week, think through our victories and defeats, and say what we feel. If your team is a ship, the retrospective is the captain. The captain looks at where you’ve been, thinks about where you’re going, and course-corrects as ...

Over my four year tenure at Pivotal Labs I’ve heard it a lot: “You guys really drink the Kool-Aid around here, don’t you?” and I’d shake it off with a joke, “Yeah, you can grab anything from the fridge you want, so long as it’s powder-based fruit punch.” I thought I knew what they wer...

When I’m doing outside-in TDD (and that is basically whenever I’m coding) I often process things as a stack. I write an acceptance level test, run it. It fails (hopefully), so I write a lower level test, let’s say, a controller test. It fails. I might need go further and write a model...

(Note: For most of this article, feel free to mentally substitute Ember, Angular, or your JS framework of choice for Backbone. Backbone’s just the popular one right now.) At Pivotal Labs we do a lot of web-based projects. Usually, it’s a pretty easy choice to use Rails for the back-en...

Last week, we made a slight tweak to how velocity is calculated in Pivotal Tracker , to handle team strength overrides in a simpler, more explainable way. As a result, if your project has an adjusted team strength in a recent iteration, you may be seeing a slightly different velocity....

Your daily job will involve engaging with developers, administrators and operators around the world to help them be successful as they install and run their Cloud Foundry deployments. You will work with Pivotal customers on site during professional services engagements to install, con...

Related:

When InvolveCare hit a wall they couldn’t break through, the company turned to Pivotal Labs for help expanding their skill set and moving the project to completion. “We knew Pivotal Labs’ reputation, and came in to close the expertise gap,” says David S. Williams, InvolveCare Co-found...

Should a web and iOS project have one or two tracks/teams/IPMs? I posted that question to our internal Q&A forum a few months ago. We were kicking off a client on a large project, building multiple applications for web (incl. mobile) and iOS. We expected some disparities in functional...

A typical Agile Inception ends with a fully fleshed-out backlog for the next few iterations, and some farther-off, coarse-grained, Epic-level ideas written on index cards. What to do with them? Some teams clip them together in a deck of cards that gathers dust and is rarely seen again...

(Note: For most of this article, feel free to mentally substitute Ember, Angular, or your JS framework of choice for Backbone. Backbone’s just the popular one right now.) At Pivotal Labs we do a lot of web-based projects. Usually, it’s a pretty easy choice to use Rails for the back-en...

Ruby has a couple of well-known libraries for unit testing, mocking and stubbing HTTP interactions. My typical toolset includes RSpec, WebMock and VCR. I had the chance to work on a Python project recently and did some investigation into similar libraries for Python. General testing l...

Related:

One of our directors shared this article with the managers here at Pivotal Labs about having a personal retrospective . It immediately sparked a healthy debate, and I latched on to the idea because I think it fills a very real hole in getting feedback. We do great at gathering, weight...

Pairing is an amazing activity if you and your pair can do it right, it is one of the things we value most here at Pivotal Labs. It is also one of my favorite aspects of extreme programming since it’s the thing that makes me learn, teach and grow everyday as an engineer. Being good at...

A multi-part series of articles on how to test Sencha Touch applications. It uses Jasmine for unit testing and Siesta for integration testing. Part 2 – Unit Testing Models In Part 1 I showed you how to set up your Sencha Touch development environment to use the Jasmine JavaScript test...

Related:

Test pollution manifests itself as seemingly false negatives or false positives in a test suite. It occurs when some shared state is unintentionally modified, or unintentionally read and used in a test. When test pollution builds up, it can mean that a project’s build fails unpredicta...

This week started on the wrong foot with a 1 hour and 45 minute outage early Monday morning, that affected many of you. I’d like to apologize for this, and shed some light on what happened. It began as a network outage at our hosting provider’s data center, which was resolved fairly q...

Sr. IT Support Engineer San Francisco A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve ...

I’m writing Selenium tests again, which means a lot of XPath. Here’s a trick I learned thanks to this article on Push Button Paradise. The problem is, how do you write XPath that matches one class in a multi-class element like <div class='foo bar'> ? The standard XPath equality operat...

If you don’t measure it, you can’t optimize it. Coda Hale of Yammer talks about service-level performance metrics, how they use them to guide their development strategy, and how you can improve the transparency of your own software.

Sencha Touch 2.1 has a generator built into its sencha command line tool, but it does not create a test structure as part of the template. This article is the first in a series of discoveries about how to test Sencha Touch applications. I am not claiming that this is the one true way ...