Patrick Vlaskovits addresses some fallacies around customer development and describes multiple approaches on how to hack “Getting Out of The Building” such that product development decisions can be made with better, higher-quality data.
Monthly Archives: February 2011
Looking for a Rails developer to join the Pivotal Tracker team
Pivotal Labs has been at the forefront of agile since it’s early days. We’ve honed our skills on hundreds of successful projects, and evolved agile techniques into a very effective, and practical software development process. Along the way, we also built Pivotal Tracker, a very popular project management and collaboration app, which embodies that process.
Not only does Tracker serve as a critical component of our own development, it’s also relied on by thousands of teams around the world, from open source developers, to fast growing startups, and many larger companies, including some of the most well-known tech giants.
We’re ramping up our efforts, and have a long list of improvements we’d like to make to Tracker, on a number of fronts. Tracker is ready to be taken to the next level – but we need help!

We’re looking for someone enthusiastic about agile software development to join the Tracker team in Denver, Colorado. At Pivotal Labs, we practice pair programming, test-driven / behavior-driven development, and aggressive refactoring. Tracker runs on Ruby on Rails and a ton of Javascript, so we’re looking for someone familiar with both, as well as web development in general. We’re also doing a fair bit of dev-ops these days, engaging with our user community, as well as helping out with customer support.
If you’re interested in joining the team, please send a cover letter and your current resume to tracker-jobs@pivotallabs.com. Principals only, please.
Visit to Olin College
Visiting Olin
Today, Josh Knowles, Grant Hutchins, and I visited Franklin W. Olin College of Engineering in Needham, MA to talk to Prof. Mark L. Chang’s amazing new dotcom course. We talked about agile development, and more specifically how Pivotal does agile and why. We went through an example of test-driven development for a simple Rails app, and had a miniature inception for a fictitious product.
Some students asked for some resources, particularly for documentation, so I put together a collection of resources for anyone looking to pick up agile, TDD and Ruby on Rails. This is intentionally not an exhaustive list. I wanted to include the bare minimum for getting started on each topic as a jumping off point and include further references at the end.
Agile Development
Agile the Pivotal Way
A talk by Ian MacFarland, also available on iTunes. video and audio
What agile development means for Pivotal, with a healthy dose of how much fun it is to work here.
Pivotal Tracker
You can think of Pivotal Tracker as a digital card wall. It’s our most indispensable project tool.
Test-Driven Development
RSpec presentation
This talk by Kerry Buckley is probably the best RSpec overview and tutorial I’ve seen. Read this and follow along with the code and you will know more than just the basics of how TDD with RSpec works.
Robolectric
The Pivotal Labs TDD framework for Android development with a great Getting Started Guide and JavaDoc.
Source Control
Git Immersion
A great interactive tutorial on git.
Ruby
Ruby Koans
Learn Ruby through test-driven development. This tutorial covers a huge number of features of the Ruby language in a fun and interactive way.
Rails
Rails for Zombies
Includes video tutorials and interactive exercises that go over the core concepts of Rails.
Popular gems
We commonly use the following gems on Pivotal projects:
- devise for authentication — check out their README and Wiki for documentation
- cancan for role-based authorization — again, check the README and wiki for documentation
- rspec-rails for TDD — see Wiki for installation, see above RSpec presentation for how to use it
- cucumber-rails for BDD and integration testing — see README for installation, this Railscast for an introduction
- paperclip for file attachment and storage — see README for documentation
- will_paginate for index pagination (ie: “Showing results for Page 1 of 30″) — check out the README
- jquery-rails for Javascript — to begin with, Prototype may be enough for you, but if you’re comfortable with jQuery or want to give it a try, follow the README to install jQuery and remove Prototype from your Rails project
Further Reading
Standup 2/3/2011: It *is* the Rabbit!
Ask for Help
“I am trying to use the Headless gem to run my selenium tests via an xvfb session on an ubuntu machine. The xvfb session is being launched correctly on display port 99 screen 0 but I am getting the following error from selenium:”
18:08:31.410 ERROR - Failed to start new browser session, shutdown browser and clear all session data org.openqa.selenium.server.RemoteCommandException: timed out waiting for window 'null' to appear
“here is how I am running Headless:”
require 'headless'
headless = Headless.new
puts "starting Headless session on display: #{headless.display}"
headless.start
begin
puts "rake spec:integration"
Rake::Task['spec:integration'].execute
ensure
puts "stopping Headless"
headless.destroy
end
Has anybody out there had any luck with this?
Interesting Things
- Using Sunspot with Rails 3 and its rake tasks running a little slow?
- Adding require ‘sunspot/rails/tasks’ to your Rakefile sounds like a great idea, but a couple of pivots found out that it can unintentionally cause Sunspot to index twice when the rake task was run.
- The core issue is that Rails 3 automatically finds the rake tasks when the gem is included in your bundle.
- It’s the Year of the Rabbit!
CaseCommons seeks Outstanding Agile Developer in NYC
At Pivotal Labs, one of the services we provide our clients is helping them interview and hire. Pivotal Labs and our clients place a strong emphasis on Agile development and its many aspects: Pair Programming, Test-Driven Development, rapid iterations, and frequent refactoring.
Improve the child welfare system with innovative technology that can help the most vulnerable families and children – that’s our mission at Case Commons.
You can play a big part in transforming public sector human services by helping us take our Casebook case management system from pilot to platform, enabling case workers to use modern social networking technologies to track cases better, see the connections among the various people and agencies involved cases, be more effective and efficient, and improve the quality of life for families and children.
Your contribution will play out on a huge stage. Casebook is being used by a growing number of private and public child welfare agencies and many policymakers believe that Casebook can become the integration portal for additional government services, including health, education and human services.
… If you are looking for somewhere to do agile development that’s good for the soul,
… If you want to be a founding member of an internal development team,
… If you want to work on a project that is going to improve the lives of children and families,
… If you want to be on the leading edge of applying web 2.0 and social media technology to solving human service problems,
… If you want to partner and pair with one of the best (the best?) rails development companies around,
… If you are serious about Rails development,
… If you never worked with Ruby but believe there is no other way to code but TDD, pairing and aggressive refactoring?
…….. We want to talk to you.
Job Description
- Developing Ruby on Rails applications
- Test Driven Development
- Pair Programming
- Aggressive Refactoring
- Work in partnership with Pivotal Labs
- Work in partnership with IDEO
- Located in downtown NYC
About Us
Case Commons’ mission is to transform public sector human services through technology. Case Commons enables workers serving the most vulnerable families and children to be more effective and efficient via new software tools. Casebook, Case Commons’ marquee technology, is a collaborative, family-centered case management system that leverages the capabilities inherent in social networking technology for the public sector child welfare segment. A growing number of policymakers believe that Casebook can be a citizen portal for government services, including health, education and human services. Case Commons is funded by the $2.5 billion Annie E. Casey Foundation, which has spent 20 years pursuing human services system reform; since 2007 AECF has been building Casebook in partnership with Tipping Point Partners and Pivotal Labs.
Contact
Please no recruiters. Please send cover letter and resume to: jerred@casecommons.org in our downtown Manhattan office.
Consolidating Tracker projects into one account
Accounts in Pivotal Tracker are used for project organization and administration delegation. They are also what paid subscription plans are associated with.
In this article, I’d like to explain what accounts are, and talk about how you can consolidate existing Tracker projects across your company into a single account.
First, what exactly is an account in Tracker, as opposed to a user (or login)? From our FAQ:
“A user is a person with an email address, password, and an optional username. Projects belong to accounts rather than to users, and users may own one or more accounts. Accounts provide a way to group your projects. For example, you might create an account for your company projects, and a separate one for your personal work. Accounts are separate for billing purposes, and also allow you to share administration responsibilities by designating other users as administrators. “
More about accounts here.
When you sign up for Tracker, an account is created for you automatically. If you join by accepting an invitation to someone else’s project, though, your first account isn’t actually created until the moment you create your first project.

All Tracker projects belong to an account. You can see which account a given project belongs to by going to that project’s Settings page (Project -> Edit Project Settings). If you’re the owner of the project, you can change the project’s account to any other account which you own, administer, or have project creation permission in (more on that later).

You can see the account or accounts that you own, administer, or a member of on the Accounts page, which you can get to via the drop-down menu under your name, in the top right corner of every page in Tracker.

You can create as many accounts as you would like, for example to separate your personal projects from your work projects, by clicking the Create Account link at the top of the Accounts page.
Each account is independent in terms of what plan it’s on, and for billing purposes. If you have two accounts, for example, you may leave one on the free plan, for your personal projects, and purchase a paid plan which allows collaborators for the second account, which you might use for work projects with your team at your company.

Account Consolidation
You may find that the Tracker projects at your company belong to a number of accounts, owned by different people. Here is how you can consolidate all of the projects into a single account, in order to centralize administration and so that you can have a single paid subscription for the entire company.
Step one: Ether choose an existing account, to serve as the main company account, or create a new one by clicking Create Account button at the top of the Accounts page, and naming the new account after your company, for example. The user who creates the account is the account’s owner by default, but you can change that later.

Step Two: Identify all of the people in your company, if any, who should have administrative access to the account and all of the projects in it (for example to add/remove project members). Go to the Members page for the account, and for each of these people, click the Add Member button, and change the role in the popup window to admin. You can specify existing Tracker users here, using their email address, or add new users, who will receive an email invitation.


Account admins can manage members and project settings for all projects in the account. They also have the right to change people’s roles, meaning they can add additional admins, and they can also transfer the ownership of the account to themselves, or any other admin. Admins should be trusted people within your organization.
Read more about the various account roles here.
Step three: Identify all of the people, beyond the list of ‘administrators’ from step 2, who are either existing owners of projects within your company, or who you would like to give the right to create projects in this account. Again, on the account Members page, use the Add Member button, and check the project creator checkbox.

Step four: At this point, all of the admins and project creators (from steps two and three, above) will be able to move their projects to this new company account. They can do that by going to the Settings page of their project (Project -> Edit Project Settings), and clicking the Change Account link on that page.

They should see the new account in the drop-down list – if they do not, that means they have not been given either the admin role or the project creator permission for the account. You can verify that by looking for them on the account Members page.

An alternative to adding all project owners as “admins” or “project creators” on the account, and asking them to move their project, is to have them add you (the account owner) as a project owner. Once you’re an owner of a project, you can move it to your account yourself (in Project Settings).
Step five: At this point, all of the Tracker projects within your company should be in the new account, and they should be listed on the account Projects page. At the top, you should see the total # of private projects for the account, as well as the total number of read/write collaborators, and the amount of file storage in use.

Step six: The account Plans & Billing page will allow you to choose a plan that’s most appropriate, given the number of private projects and collaborators in your account, as well as your file storage needs.

Only the account owner can enter credit card information and change what plan the account is on, but any of the account administrators can take over ownership of the account, on the account Members page (via the Actions menu to the right of the person you’d like to change ownership to).

Note: You do not need a paid account (or an account at all) in order to be a member of someone else’s project(s). Accounts are only required to create private projects, and paid accounts are only required to invite collaborators to your private projects. Public projects are free, and allow for an unlimited number of collaborators.
Pairing in Boulder
Recently, we have been experimenting with a few new pairing configurations in Boulder, I thought I would share an early photo.

These are 27-inch iMac’s paired with 27-inch Apple Cinema Displays.
We’ve experimented with both side-by-side configurations as well as a variety of angles between 15-90 degrees.
I have to admit, I really like the angled configuration. +1 for not always needing to stretch to see opposite corners of the screen.
Standup 2/1/2011: Typus Hangin' Tough
Ask for Help
“Tellurium? Has anybody heard of Tellurium? Bueller?”
Apparently no one at standup had heard about Tellurium which is apparently a “UI module-based web automated testing framework” that “runs on top of Selenium“
“How do I get Bundler to uninstall old versions of gems from the system when new versions get out?”
Turns out that when a gem gets upgraded, bundle install does not necessarily kill the old gems on the system, even when using RVM gemsets. Which can be problematic if you have other systems which are expecting only the newest version of the gem installed.
The easy answer is to prepend bundle exec for every command you want to use. If you’re too lazy for that, then the simplest answer we could come up with was just to blow away your gemset before you deploy.
“Any more admin UI help?”
People are always looking for easy database admin panels for Rails projects. Last week and again today, the new kid on the block, Typus was brought up. Also mentioned today was admin_data.
Some even say the best admin available for a Rails project is actually Django.
revealing the ActionController callback filter chain
Sometimes your controllers get so full of before_filters, after_filters, and around_filters that it’s hard to figure out what order these callbacks are actually executing in. A couple of times recently, I’ve run into some tricky bugs that ended up being related to callbacks running too soon or too late.
Due to some fancy-pants metaprogramming in AbstractController::Callbacks, it’s hard to see what’s going on.
In Rails 3, send this to Rails.logger.debug or puts from inside your controller to see the ordered filter callback chain:
_process_action_callbacks.map(&:filter)