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
  • Tools
  • Contact
    • Press Room
    • Press Releases
    • In The News
    • Press Kit
  • All
  • Labs
  • Standup
  • Tracker

Monthly Archives: May 2012

Mark Rushakoff

Getting image data from a CarrierWave uploader into RMagick

Mark Rushakoff
Thursday, May 10, 2012

Carrierwave has an RMagick module that offers a handy manipulate! method that takes a block where you can modify the image, and then it saves the changes to the image.

But sometimes you only want to interrogate the image, and there’s no need to save any changes.

After spending probably 30-45 minutes trying to figure out how to read an image that may not necessarily exist on your local disk, the simplest solution we found was to call uploader#read to get the contents of the file as a string, and then pass that into Magick::Image.from_blob.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Wiley Kestner

[Standup][SF] 05/09/2012 – 2012年五月九日

Wiley Kestner
Wednesday, May 9, 2012

Ask for Help

“How should I fill out my life insurance benefit information?”

On paper forms you can get from HR

“Is today my last chance to see Bari?”

For now, yes.

“How can I deploy Rails & Maven?”

Suggest using warbler to turn your Rails app into a “.war” which plays nicely with Maven.

Interesting Things

  • Tomorrow is “Ride Your Bike To Work” day
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Ronan Dunlop

How GOV.UK keeps calm and carries on with Tracker

Ronan Dunlop
Wednesday, May 9, 2012

The courageous folk working on the GOV.UK website (an experimental ‘beta’ replacement for Directgov and the first step towards a single government website) have regularly written about their experience and their blog is a worthwhile read.

Their most recent article Delivering Inside Government, posted by Peter Herlihy, offers great insights and advice for agile teams.

Below is an outline of their article with point six detailing their use of Tracker and how making their stories public while scary at first proved to be a good move.

  1. If it’s hard to write a story, it’s probably not as important as you think
  2. If it’s important you will remember it
  3. Investing time preparing stories before sprint planning paid big dividends
  4. Avoid the temptation to make the newest story the most important
  5. Make sure you can tell when your objectives are met
  6. Running our project in the open wasn’t a scary thing.

    Read the full blog post here

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Wiley Kestner

(Title: SF Standup 05/07/2012: Testing views)

Wiley Kestner
Monday, May 7, 2012

Ask for Help

“Benefits enrollment this week”

Please refer to the emails you’re getting from HR

“How do I test views without doing integration tests?”

Differing viewpoints were expressed, namely, that integration tests should be done all the time and writing explicit view tests.

Interesting Things

  • Yoga on mondays
  • Company meeting on Thursday afternoon
  • New nets by ping pong tables are neither a petting zoo, nor a day care pen, FYI
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Tim Labeeuw

Standup 5/4/2012 Happy Star Wars Day … May the 4th be with you

Tim Labeeuw
Friday, May 4, 2012

Help

“How do i get a byte array from postgres into a png?”

Paperclip allows you to magically take a StringIO object and makes it an image.

“Any advice on a good modal?”

They are all bad but Bootstrap Modal seems less bad than most.

Interesting

  • Compass can make sprites for you. Problem is that they are all placed in your top level assets folder. To move this see: blog post
  • You can use Time.use_zone {} to allow you to change the timezone in a thread safe manner.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Ronan Dunlop

Tracker Meetups in Denver, NYC and SF – Join us!

Ronan Dunlop
Friday, May 4, 2012

Save the date.

  • Denver on May 22

  • New York on May 30

  • San Francisco June 5

If you live in or plan to be near any of these locations on those dates we’d love to hang out at the watering hole and talk Tracker with you.

We look forward to meeting you – the Tracker team!

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Mark Rushakoff

Getting Compass to put generated sprites somewhere reasonable

Mark Rushakoff
Thursday, May 3, 2012

When generating sprites with Compass (which is extremely easy), we found that the default output directory for your sprites is the same as the root images directory. This is annoying because we would have to add a line line app/assets/images/icons-*.png to our .gitignore, repeated for each sprite file.

We wanted to put all our sprites in a single folder to be put in .gitignore — this was easy to find, by adding config.compass.generated_images_dir = 'public/sprites' to our config/application.rb. The next problem was that while the sprite file was correctly being saved to e.g. public/sprites/icons-xxx.png, the client-facing path to the sprite file was still /assets/icons-xxx.png which was always 404ing.

The final answer came from an open pull request on compass-rails which clearly explains that you need to add the output path to the assets path, e.g. config.assets.paths << Rails.root.join('public', 'sprites'). Finally, we can easily add public/sprites to our .gitignore.

The other gotcha we encountered today is that compass-rails only regenerates the sprite file when the sprites CSS file changes, not when you add or remove files from the globbed path.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Phil Goodwin

Standup 5/3/2012 Time, time and more time

Phil Goodwin
Thursday, May 3, 2012

Helps

“How do I avoid timing problems while doing integration tests on single page apps?”

  • Use a wait_until block with a selector which has not been cached.
  • Use a wait_until block with a piece of javascript using evaluate_script which you expect to return when your page is finished loading.
  • Use a wait_until block which waits for all AJAX to stop using $.ajaxStop().

Interesting

  • Time.parse(invalid) will throw an exception, but
    Time.zone.parse(invalid) will return nil. Because Time.parse is part of the Ruby library while Time.zone is part of Rails.
  • parallel_tests really does speed up your tests. It munges all the output together into an ugly mess though.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Joanne Webb

Using Epics for Your Project

Joanne Webb
Thursday, May 3, 2012

We recently launched epics, to make it easier to plan and track progress of large features at a high level. Whether you are in the early stages of defining your product or have a Pivotal Tracker project you are working in already, epics can help you manage your work more effectively. In this article, we’ll show how to create epics, for a hypothetical shopping site project.

Roles and activities

The web site allows people to do all the typical things you would expect while shopping online. Customers can browse for products, search for specific items, put them in a cart, sign up for an account to track their orders and make future shopping more convenient, check out, etc.

To help us design the site, we want to identify all of the key “activities” for all user roles. To start with we can think about admins who will stock and manage the site, and shoppers who actually use it. Each has a specific set of wants and needs that we might consider as stories that will be entered in Tracker. As well as feature stories, there are activities to do with setting up hardware and infrastructure for the site which can be added as chores.

As we think about these activities, they fall into natural areas of functionality such as ‘deployment’, ‘admin’, ‘shopping’, ‘’search’, shopper accounts’, ‘checkout’, ‘orders’, etc.

At least some of these will have enough stories associated with them, that to get a higher level view of each and more easily manage their priority, you can create an epic.

Creating epics

You can either click EPICS toward the left of the Tracker project page to open the Epics panel, then click the plus icon at the top, or type ‘e’ (when the cursor is not in an editable field).

Alt text

Alternatively, if you have already entered and labeled stories in Tracker, you can convert a label to an epic. The label will remain, but change color from green to purple to identify it as an epic linked label.

Alt text

Alt text

Describe and discuss large features

In your epic, you can describe the high level goals of the feature and attach mockups that demonstrate desired designs. Comments can be used to have a conversation with the team about the feature and record overall decisions.

Alt text

Planning your stories

The feature or activity described in the epic can then be broken down into small, concrete, actionable stories. For example, with the Shopping epic in mind, you might have a story called “Shopper should see list of products, with primary photo as thumbnail”. After entering your stories, you can drag and drop them onto a collapsed epic, so that they get the epic’s linked label and become part of it. Click the arrow icon to the right of the collapsed epic to see all the stories in the epic or simply type shift+e. You can also drop stories into the epic stories panel and start ordering them by priority, the most important being at the top.

Then you’ll want to determine the level of effort for each story, and can go through and estimate them.

Representing milestones

Having broken down each epic into stories, it helps to put a release marker into the backlog to represent the “minimum viable product” milestone (or “first demo to investors”).

Then drag all the stories for that milestone into the backlog, above the release marker. Release markers should always go at the end of the set of stories that the milestone or release will include, not the beginning, then they follow those stories through the workflow.

Alt text

Keeping track of progress

As you start working on stories, their state is represented in the epic’s progress bar. It gives an immediate overview of how far along the epic is. The colors in the bar match the color of stories, and it’s width represents the size of the epic, relative to other epics. As your stories are completed and accepted, the bars update to reflect what’s happening.

Alt text

Mousing over a progress bar reveals a more detailed breakdown of progress, including an estimated completion date. This date is the last day of the iteration that the epic’s last prioritized story appears in, in the backlog.

Alt text

Re-prioritizing stories

Priorities always shift during a project and you can reprioritize stories directly in the backlog, or in the epic story panel. The changes you make are always also made throughout the project and reflected in the different views of it.

Stories moved in the epic story panel are reprioritized relative to other stories there. The following show a selected story before and after it is moved:

Completing epics

As you complete your stories, epics are considered done (and appear in green) when all prioritized stories in them are accepted. Stories in the icebox are not considered to be “in play” – they’re on ice, and in most cases epics will have stories in the icebox indefinitely. It’s often the case that everything you wanted doesn’t actually get done, yet the feature is perfectly usable. However, as soon as you drag a completed epic’s story from the icebox to the backlog, it will stop being green.

Alt text

Done epics remain in the Epics panel until the iteration in which stories in them were accepted is over. Then you’ll see “Show x Done Epics” at the top of the epics panel instead.

More information and feedback

We hope this helps you get the most out of epics for your project. For additional information, please see the FAQ, and watch this brief overview video. As always, we value feedback, so we’d love to hear from you in the comments here or on Facebook, Twitter, or by email to tracker@pivotallabs.com.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Phil Goodwin

Standup 5/2/2012 A hack a day…

Phil Goodwin
Wednesday, May 2, 2012

Interesting

  • Date.today is not aware of the local timezone, but Date.yesterday is. Use Date.current or Time.zone.now instead.
  • Hackathon May 12-13 for mobile game development. More info
  • 0 Shares
  • Share on Facebook
  • Share on Twitter

Topics

  • agile (783)
  • rails (117)
  • testing (90)
  • ruby (86)
  • ruby on rails (71)
  • jobs (62)
  • javascript (59)
  • techtalk (44)
  • ironblogger (42)
  • rspec (39)
  • bloggerdome (34)
  • productivity (34)
  • activerecord (30)
  • rubymine (30)
  • git (29)
  • gogaruco (29)
  • nyc (27)
  • design (24)
  • mobile (23)
  • pivotal tracker (22)
  • process (21)
  • cucumber (21)
  • jasmine (19)
  • ios (18)
  • tracker ecosystem (17)
  • webos (17)
  • objective-c (17)
  • fun (16)
  • android (16)
  • palm (16)
  • ci (16)
  • "soft" ware (16)
  • bdd (15)
  • tdd (15)
  • cedar (15)
  • rails3 (14)
  • performance (14)
  • css (14)
  • gem (13)
  • mouse-free development (12)
  • selenium (12)
  • goruco (12)
  • bundler (12)
  • api (12)
  • keyboard (11)
  • meetup (11)
  • railsconf (11)
  • nyc-standup (11)
  • capybara (10)
  • mac (10)
Subscribe to Community Feed
  1. ←
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. →
  • About
  • Case Studies
  • Team
  • Community
  • Careers
  • Tools
  • 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 >