Here’s a fun one – how do you get RubyMine to access environment variables when you’ve got dependencies on those awful little things in your code and can’t get around it? Well, assuming you’re using a Mac (you are using a Mac, aren’t you?), here’s the magic incantation to get it to work:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
Then reboot your machine. Voila! Your environment variables should now be available for RubyMine (this works for IntelliJ Idea as well). Here’s some additional information about environment.plist files, too.
Here at Pivotal Labs we use our iteration planning meetings to not only hash out what we’re going to work on in the upcoming iteration but to estimate any unestimated stories that are within striking distance of the upcoming iteration. (We often estimate 1 iteration + 1 week of stories in case we end up delivering more stories than our iteration expects us to).
Over the past couple of projects I’ve been involved in estimating stories truly as a team – no ‘team lead’ fiats, no hour-long conversations about every possible implementation under the sun. We’ve adopted the Rochambeau approach to help get a fairly quick gut-check estimation of a story from all developers at once. Also known as Rock-Paper-Scissors, the way this works is as follows:
- Discuss an unestimated story for up to 5 minutes
- Then, 1-2-3 and VOTE!
This approach has served us in a couple of ways:
- The expectation for the developer is that we’re looking for a rough estimate, not a precise measurement. This cuts down on endless technical one-upmanship.
- The expectation for the customer is that developers have to have 1) general consensus among themselves about the risk/time/complexity of the story and 2) a defendable explanation of their estimation.
On my current project we use a 0,1,2,4,8 point scale for estimates, so each developer has 5 options to vote with. Even with this many possibilities, most stories end up with a clear general consensus and we go with that as the estimation, but in cases where there’s a 50-50 split OR an estimation round where people’s estimates are more than 1 level away from someone else in the group (for example, Paul votes for 1 point, George & Ringo vote for 2 points, and John votes for 4 points), that’s a strong indicator that developer’s assumptions are not all in line and that further clarification is required.
An added bonus is that the customers get to watch the developers vote in a concrete fashion and defend their estimates. That helps to bring the process more to life for them and to understand the concerns that we as developers have to regularly wrestle with. They also just love watching developers play RPS, I’ve come to discover.
For more information, check out this blog post for a discussion of team voting, spicy food, and photos.
- Libxml has been giving us some more strange behavior on Linux. If you do
parser = XML::Parser.new
parser.string = '<foo></foo>'
document = parser.parse
# Now watch me fail, but only on Linux!
parser.string = '<bar></bar>'
document = parser.parse
We’re hosting a MagLev tech talk today compliments of Martin McClure.
Joseph Palermo has won the annual Pivotal Labs Mustache Competition. Granted, he was the only entry. But don’t let that affect your admiration of his work. Photo to follow.