Pivotal Labs

Main menu

Skip to primary content
Skip to secondary content
  • About
  • Case Studies
  • Team
    • Executives
    • Locations
      • San Francisco (HQ)
      • Boston
      • Boulder
      • Denver
      • London
      • Los Angeles
      • New York
  • Community
    • Blogs
    • Tech Talks
    • Events
  • Careers
    • Lifestyle
    • Principles & Practices
    • Benefits
    • FAQ
    • Apply
  • Contact
    • Press Room
    • Press Releases
    • In The News
    • Press Kit
  • All
  • Labs
  • Standup
  • Tracker

Monthly Archives: December 2009

Nathan Wilmes

Standup 12/30/2009: S3 CDNs, Compact Privacy Policies

Nathan Wilmes
Wednesday, December 30, 2009

Ask for Help

“Anyone have good strategies for using S3 as a content delivery network for static files?”

Using S3 as a CDN is pretty common. S3 is certainly cheap, and fairly easy to set up. However, latency can be large – S3 isn’t built to act as a CDN, so the performance can be lacking. In addition, you need to work out your pathing in your CSS files to find background images correctly. Relative paths are a common technique here.

The performance of files in your public directory is much better. Amazon’s Cloudfront is another (expensive) option.

Note observation #4 in this blog article: link

“I can’t get ImageMagick to work on Snow Leopard. What gives?”

A brief look online shows several step-by-step instructions. It’s unclear what this particular problem is about.

“After upgrading to the latest version of Mocha, any_instance doesn’t clean up after itself. Why?”

Mocha‘s any_instance stubbing is one of the few features that distinguish Mocha from other mock frameworks.

There are arguments against using this style of coding, because it adds global behavior to your tests that can be hard to diagnose.

One suggestion was to update rspec as well.

“How do I set up a Compact Privacy Policy? How does this funky syntax work?”

Definition of compact privacy policy

More info about the CPP workflow

In short, work with your client’s legal staff to get a policy and convert it to P3P and compact privacy policy form.

“Heroku 1.5.3 isn’t letting me use heroku rake commands. What can I do?”

Upgrade to Heroku 1.5.6.

Interesting Things

  • EY Cloud’s slave database functionality is broken right now. It’s supposed to be fixed this afternoon.

  • Amazon restricts you to 20 EBS volumes/EC2 instances per account by default. The trick here is that deleting volumes does not immediately free up space. Volumes stay in a ‘Deleting volume’ state for an indefinite amount of time before they are truly free, making it hard to allot space for them. Finding these deleting instances can be a real challenge – the AWS API can find them, but not the EY cloud GUI.

  • If you need to manipulate AWS credentials for EY Cloud, it’s fairly easy to go to the machine and find the appropriate file – /etc/.mysql.backups.yml

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Parker Thompson

Badges and Widgets – How would you like to promote your project?

Parker Thompson
Tuesday, December 29, 2009

We’re starting work on Tracker badges and widgets. Our goal is to allow you to share information about your project or backlog on your website, or to promote Tracker and Agile Software in general.

Our current thinking is a few widgets that expose project summary data and stories, as well as something along the lines of “I <3 Tracker”/”I <3 Agile Development” badges for those who just want to spread the love without sharing their private project data. We imagine these being used on open source project pages, personal websites, and blogs.

So I ask you: What information would you like to share (story summaries, upcoming stories, members, etc?). If your project is private do you want to be able to expose some of this information anyway? If you are interested in sharing your love of Tracker and Agile Software but not your project data what kind of badge(s) would you want?

As always, thanks for your feedback!

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Nathan Wilmes

Standup 12/28/2009: Rspec 1.2.9 and mocking flash

Nathan Wilmes
Monday, December 28, 2009

Ask for Help

“Ever since we upgraded to RSpec 1.2.9, we haven’t seen any stack traces. What gives?”

One of our projects lost stack traces as soon as they upgraded to RSpec 1.2.9. Reverting to RSpec 1.2.8 fixed the problem. No other projects have reported the issue yet.

Interesting Things

  • Working with Rails for several years means that, as Rails advances, our testing/mocking codes get stale. We just discovered that one of our old mocks for representing the ‘flash’ object no longer works as designed with the current version of Rails.

More on the FlashHash

Here’s an approach that used to work in Rails 2.1/2.2:

  • Stub FlashHash.new to create a MockFlashHash rather than a real
    FlashHash object.
  • MockFlashHash does nothing when sweep is called. The sweep method cleans out the flashes that have been used, and the act of rendering uses up all of the flash.now objects.
  • You can enhance MockFlashHash to behave the same way that a view would use a flash, allowing your tests to assert that a response should show a particular flash, without specifying whether you used flash or flash.now to do it.

Rails 2.3 changes the Flash cycle from what earlier versions of Rails did.

In Rails 2.2 and before, calling ‘flash’ accessed a session variable directly (assuming you have a session). You would then manipulate that session variable, which was an instance of FlashHash. It was therefore fairly easy to replace FlashHash with another type of object.

In Rails 2.3, the cycle is a little bit different. Instead of manipulating the session directly, calling ‘flash’ sets an instance variable. At the end of the request, that session variable is stored to the session using a new method signature – flash.store(session). (Note that flash extends Hash, so this overrides the standard Hash.store)

This approach breaks encapsulation, forcing the FlashHash object to know about the session and forcing any mock replacements to know how to store themselves to the session.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Dan Podsedly

Faster Pivotal Tracker story writing with Slurper

Dan Podsedly
Monday, December 28, 2009

Written by our friends at Hashrocket, Slurper lets you create stories as plain text files and import them into Tracker via the API. Also, if you use Vim, check out slurper.vim, a Vim companion script with syntax highlighting and key mappings.

Adam Lowe’s blog post talks about these really useful new tools in more detail.

For other Tracker tools, see the 3rd Party Tools page.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Pivotal Labs

NYC Standup Roundup for Dec 14th – Dec 24th

Pivotal Labs
Monday, December 28, 2009

Happy Holidays from NYC!

Interesting

  • Someone noticed that rspec’s should_not (rdocs here)
    returns false when the spec passes, whereas should returns true
    when it passes. This has unexpected results when a should_not is
    used within a Webrat wait_for loop (code here)
    – wait_for loops until its body returns true. Fail!
  • John Resig has implemented a jQuery.require method that should be
    in the next release. Check out the commit and the lengthy
    discussion here.
    Everyone’s a critic.
  • One Pivotal project that recently switched from MySQL to Postgres
    noticed that PG sorts NULL values differently than MySQL. The
    default in PG is NULLS FIRST when ordering DESC, and NULLS LAST
    otherwise. You can override this behavior by using a NULLS FIRST or
    NULLS LAST clause
    in your ORDER BY.
  • Someone was reminded the hard way that Ruby’s rescue, by default,
    only catches exceptions inherited from StandardError.

Help

  • Does anyone know of a service or library that will convert an email
    into a tracker story? The use case is stake holders who send
    UI/UX requirements within emails with attachments, etc.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Nathan Wilmes

Standup 12/23/2009: Load/require and Rails reloading

Nathan Wilmes
Wednesday, December 23, 2009

Ask for Help

“What’s a good design for sharing a page cache across multiple servers?”

One of our clients would like to have a distributed server environment share its page cache. At this point, they’re relying on GFS to do this.. but this solution appears to have problems with reliability.

Several engineers questioned the necessity for such a thing, but memcached appeared to be the solution of choice.

“Any information on RabbitMQ?”

One of our engineers is beginning to play with RabbitMQ. Anyone who has good comments about this technology, please feel free to chime in.

Interesting Things

  • load “location” and require “location” do not play nicely with Rail’s automatic class reloading.

Rails maintains an internal array of files that it ‘knows’ about for this purpose. However, load and require bypass this mechanism, and lock files into place.

If you’d like to add a require that will class-reload, use the command ‘require_dependency “location”‘. This command, added by Rails, will require the file AND add it to ActiveSupport.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Will Read

A "one" is like <strike>half a day</strike> a walk in the park

Will Read
Monday, December 21, 2009

No matter what point scale you use to estimate stories, and if you call them “points”, “gummi bears”, or “t-shirts”, people always want to know what they mean. The problem is that the keepers of the points don’t know how to relate to the users of the points.

Joe: “Oh look a new story in the icebox!”
Sam: “Let’s estimate it!”
Joe: “Sure, what’s a ‘one’ work out to be in terms of effort/complexity?”
Sam: “That’s like… half a day”

I’ve been in Joe’s shoes, and I’ve been Sam too many times. Do you see the disjoint? Hint: check the bold. Joe asked about effort/complexity because those are things he can estimate with some degree of accuracy. Sam jumped to the lowest common denominator, and converted his concept of a one point story into a unit of time.

Problem: Velocity is the conversion factor from points to time. Velocity is useful, Sam is not (no offense if your name is Sam).

A “one” is what then? It varies from team to team. How do I get Joe up to speed on point values then? Common ground, relate to Joe. We’ve all done some programming before. Maybe a one is “a batch of CSS changes”, and two points works out to “administrators should be able to edit all product fields”. Then you work your way up to “make a web-based zoo” which is wherever your point system tops out because it has a lot of unknowns and/or complexity.

Relation Points, use them to relate to your fellow developers. Use them to relate to your product owners and managers. Start speaking in terms that show you’ve got more knowledge about the development cycle than a random guy off the street. Anyone can give you the time, but what you really want… is to get to the points.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Nathan Wilmes

Standup 12/21/2009: Bundler and symbol.to_proc

Nathan Wilmes
Monday, December 21, 2009

Ask for Help

“How do I make attachment_fu use both the file system and S3 as storage backends?”

One of our clients would like to migrate attachments from the file system to S3. They want a clever way to make attachment_fu look in S3 or the filesystem, where new files are in S3 and old files are in the filesystem.

Their current solution, which they’re not super happy with, is to monkeypatch the S3 backend by extending it with file system methods. This solution doesn’t really seem to work too well, since the two backends share some of the same methods, and calling “extend FileSystemBackend” doesn’t give them the freedom to pick and choose their methods. In addition, their patch makes the S3 backend not be an S3 backend any more, which could cause problems for maintenance down the road.

A better solution is to define a new backend object, based on the S3 backend but falling back to file system-style methods. Attachment_fu supports defining custom backend modules; a class using :storage => :my_storage would look for a backend module called Technoweenie::AttachmentFu::Backends::MyStorageBackend.

Attachment_fu still has a design problem. The backend objects are all modules, not classes. As a result, it’s not easy to make a new backend descend from one of the existing backends.

Interesting Things

  • The new version of the bundler gem, version 0.7.2, does not seem to be Ruby 1.8.6 compliant. The gem relies on symbol.to_proc, which is part of Ruby 1.8.7 (and Rails). A native Ruby 1.8.6 without Rails does not support this method.

Issue tracking: http://github.com/wycats/bundler/issues/#issue/134

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Dan Podsedly

MobiTracker – new iPhone app for Pivotal Tracker

Dan Podsedly
Thursday, December 17, 2009

MobiTracker, written by Steven Nie, is a new iPhone app for Pivotal Tracker. It uses the Pivotal Tracker API, and supports off-line reading and editing of stories, search, email, and more.

Track-R logo

MobiTracker is available for download now on iTunes.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Matthew Kocher

Standup 12/17/09 – Rspec/Rack eats your cookies

Matthew Kocher
Thursday, December 17, 2009

Interesting Things

  • The combination of Rspec and rack assume everything is a single domain, so you can’t check cookies for xyz.foo.com and foo.com separately. Should you encounter this, be prepared to check the header manually. You also won’t be able to delete more than one cookie at a time.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter

Topics

  • agile (780)
  • rails (113)
  • testing (88)
  • ruby (83)
  • ruby on rails (70)
  • jobs (62)
  • javascript (55)
  • techtalk (44)
  • rspec (38)
  • ironblogger (32)
  • productivity (30)
  • activerecord (29)
  • gogaruco (29)
  • git (28)
  • nyc (27)
  • rubymine (26)
  • bloggerdome (23)
  • mobile (22)
  • process (21)
  • pivotal tracker (20)
  • cucumber (20)
  • jasmine (19)
  • design (18)
  • ios (18)
  • webos (17)
  • objective-c (17)
  • android (16)
  • palm (16)
  • "soft" ware (16)
  • fun (15)
  • tracker ecosystem (15)
  • ci (15)
  • cedar (15)
  • rails3 (14)
  • performance (14)
  • bdd (14)
  • gem (13)
  • css (13)
  • tdd (13)
  • selenium (12)
  • goruco (12)
  • bundler (12)
  • meetup (11)
  • railsconf (11)
  • nyc-standup (11)
  • capybara (10)
  • mac (10)
  • mojo (10)
  • chef (10)
  • api (10)
Subscribe to Community Feed
  1. 1
  2. 2
  3. 3
  4. 4
  5. →
  • About
  • Case Studies
  • Team
  • Community
  • Careers
  • Contact
  • Labs
  • Events

Contact Us

contact@pivotallabs.com
+1 415-77-PIVOT
TwitterLinkedInFacebook

Pivotal Tracker

Tracker is the award-winning agile project management tool that enables real-time collaboration around a shared, prioritized backlog.
Visit pivotaltracker.com >