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
Pivotal Labs

RubyConf awaits!

Pivotal Labs
Thursday, July 29, 2010

Ask for Help

“What do you do when your JS files are so big they crash RubyMine? Like when they are bigger than 300k..?”

Try turning off syntax highlighting. We’re going to try to send a project to JetBrains that reproduces this issue so they can get log a ticket for it.

Interesting Things

  • RubyConf registration starts 8/1 @ noon!
  • You can use swfobject to inject http content into an https page to bypass the warnings in IE. Obviously use this responsibly :)
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Pivotal Labs

Rails 3 RC!

Pivotal Labs
Tuesday, July 27, 2010

Ask for Help

“What good OpenID solutions are there for rails?”

Janrain provides a service and the rpx_now gem that can handle a lot of the OpenID logic for you.

Interesting Things

  • You can use rvm with the --rvmrc --create flags to create a .rc file in any directory that will set the version of ruby to use in that directory. A few people said this is particularly useful to do in the root directory of your projects.
  • jQuery 1.4.3 has a bug with IE7 and live events, e.g. if you register a live event for form submits and for button clicks, when a user clicks a form’s submit button on the click event is fired and not the submit event. 1.42 seems to work correctly.
  • There’s an Android meetup tonight about real time development here in SF. Check it out if you’re interested! We’ve had good experiences at previous meetups with this group.
  • And last but not least… a Rails 3 RC came out late last night! Looks like they’re hoping to have an official release in a few weeks.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Pivotal Labs

Standup 07/26/2010: The Bleeding Edge of Bundler

Pivotal Labs
Monday, July 26, 2010

Interesting Things

  • Bundler 1.0.0.rc.1 was released – try it out and help find any issues!
  • There was a warning that running thin in dev mode can cause all requests to be cached in memory… not so thin. Running in production mode doesn’t seem to have this issue.
  • Another warning today – Rails 2.3.8 and mongrel don’t play nicely together. There are some issues with headers not being passed correctly between the two of them. It was recommended to use passenger instead of mongrel if you want to use 2.3.8.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Pivotal Labs

Standup 7/23/2010: Workin' in a RubyMine, going down-down

Pivotal Labs
Friday, July 23, 2010

“I’ve upgraded Firefox to 3.6 and my selenium and cucumber specs are busted. Anyone else have this issue?”

The selenium-rc jar that comes with webrat needs to be manually updated to the latest version. See prior(http://pivotallabs.com/users/alexander/blog/articles/1241-standup-5-10-2010) posts(http://wjb-tech.blogspot.com/2010/03/ruby-cucumber-webrat-selenium.html).

“Does anyone else ever get ghost files, where RubyMine shows the file as empty but other text editors show the contents, only to have the file return on its own after a few hours?”

Removing RubyMine’s cache directory doesn’t seem to help, nor does restarting RubyMine. Perhaps we can look for a “Mediocre Code Opacity: 0″ in the RubyMine display settings?

Interesting Things

If your debugger stops working in RubyMine, you may want to uninstall all your ruby-debug gems and start from a fresh copy of ruby-debug-ide version >= 3.4.7.

JetBrains often asks for a copy of the project displaying the problem when a ticket is submitted. Maybe we should set up a “RubyMine problem project”.

EngineYard is making progress on their new command-line deploy interface. If you’d like the EY web deploy interface to conform to the patterns of the CLI gem, there’s now a setting in Engine Yard to convert your project over to those rules, meaning you can deploy without re-chef-ing your server. Much faster.

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

Standup 7/22/2010: XML <-> JS scrimmage. Go!

Pivotal Labs
Thursday, July 22, 2010

Ask for Help

“Is there a good heap analyzer to debug some memory issues in our app?”

Some options to look into include rubyprof, valgrind, bleakhouse and memprof.

“Anyone else having problems with RubyMine 2.02 allowing the cursor to be placed at arbitrary locations out beyond the end of the line? We’ve turned off the setting that controls this.”

This can happen if RM is in column-edit mode. Also there’s a setting to “Strip Trailing Spaces” — if you previously were allowing arbitrary cursor placement, you may need to enable this to clean up.

“Anyone have experience dealing with E4X to parse javascript in XML? It seems to be choking on é characters — in the iso-8559 doctype these are legal content.”

No solutions were forthcoming. To recreate this error yourself, plug the following into your Firebug console:

var someHtml = '<p>cr&egrave;me fraiche</p>';
new XML(someHtml);

// => "TypeError: unknown XML entity egrave"

“What is the best javascript XML parser?”

jQuery is recommended in the browser and also works on top of env.js in Rhino. libxmljs is built on top of V8.

“Webmock is having trouble correctly parsing matching query params in SSL. Anyone seen this?”

The easiest thing may be to skip the SSL requirement for the tests.

UPDATE: The webmock issue was resolved using a couple of techniques. Firstly, the keys for your query params have to be symbols, not strings. This avoids a problem with sorting them for the comparisons. Secondly, it’s better to pass the expected url as a regex. This may be related to :443 getting added to the end of SSL requests, or may just be a bug.

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

One team, one Tracker project

Dan Podsedly
Wednesday, July 21, 2010

I often hear questions from Pivotal Tracker users about how to organize teams and projects. We also see many requests for features that would make it easier to see stories from across multiple projects.

Tracker is designed for full immersion in one project at a given time. This stems from how we work at Pivotal Labs.

We organize teams such that a single team (and the people on that team) have a single backlog (and Tracker project). This means that within a team, there are no conflicts in terms of priorities, there is less context switching, and the team is completely focused. It leads to more consistency from iteration to iteration and therefore a steadier velocity, which allows you to have a more accurate insight into how long the rest of the backlog (or a release) might take to complete.

We also make it so that anyone on a given team can grab the next available story from the top of the backlog (or the current iteration). This implies few or no specialists (there is no back-end guy), and is generally referred to as collective ownership. It increases overall efficiency by allowing the team to dynamically re-balance, and minimizes reliance on any individual person (which among other things, leads to more relaxing vacations for developers).

The project’s customer (or product manager) focuses on prioritizing stories in the backlog, and the development team is collectively responsible for delivering software based on the backlog.

We use labels to tie related stories together within a project. These can represent a major feature, specific end customer, etc. Labels can help answer questions like, how much work is left in this large feature?

A single backlog for the entire team does put more work on the plate of the owner of the backlog (customer / product manager), as he or she has to constantly make potentially difficult prioritization decisions, but, thinking hard about priorities is a good thing, and it allows the development team to focus on getting more work done. That ultimately makes everyone happier.

Also, there are people in certain roles (for example executives and designers), that given their nature, tend to be involved with multiple projects at once. Tracker could certainly use some features to help these roles, and we’re thinking about these, but overall, it’s more oriented towards enabling the immersed team.

A single team/project can get large enough to the point where it becomes challenging to manage a single backlog. For us, this point is generally reached with 5 to 6 pairs of developers (or 10 – 12 people). Assuming that more developers can actually add value to the overall project (this is not always the case), it’s probably worth considering splitting the team into multiple smaller teams, each with their own single backlog.

To avoid knowledge and cultural silos with multiple teams, we find it helpful to rotate a few people around teams every iteration. It’s important to maintain consistency (and therefore a steady velocity), so you don’t want to shift too many people around too often – usually rotating just 1 person (on each team) each iteration is enough, assuming you’re pairing and switching pairs within each team often.

In a multi-team (and Tracker project) environment, the product/project manager acts as a load balancer, and allocates work across the multiple teams/backlogs by considering velocity, dependencies, etc. This is typically a full time job. Tracker doesn’t have much out of the box to help with this, but we’re thinking about this as well, although it may be that some of this kind of work is better done in a spreadsheet, or other, more traditional project management tools. (As a side note, we did recently add the ability to move stories between Tracker projects, making things a tiny bit easier for people who manage multiple teams/projects).

I’d love to hear your thoughts on any of this, including suggestions for how to organize large projects and multiple teams (and how Tracker can help with that).

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

Standup 7/21/2010: Heroku Logs have Shorter Memory than a Mayfly

Pivotal Labs
Wednesday, July 21, 2010

Ask for Help

“Is there a way to get better access to the logs in Heroku?”

heroku logs only displays the last 100 lines; This isn’t even enough for the full stack trace of the last error in many cases. One team is having problems using the ExceptionLogger plugin as well. Hoptoad might resolve this somewhat. We’re really looking for a heroku logs –tail, which doesn’t exist.

Interesting Things

  • RubyMine has the handy feature of showing your test failures while the test suite is still running. Unfortunately, should you try to click on a failed test to see the output, RM has a nasty habit of stealing your window to continue showing the output of the current running test. No more. You can click the little gear on the upper right corner of the left testing pane. From there you can uncheck “Track Running Test”.
  • The new RubyMine EAP has a bug where you lose your current indentation when you hit enter twice. A fix is on the way.
  • jQuery will sometimes execute the contents of script tags embedded in HTML before you attach then to the DOM. This occurs when doing a wrap or a replace, and might happen other times too.
  • Tonight is the SFRuby meetup. Rumor has it there will discussions of agile over soft serve ice cream.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Pivotal Labs

Standup 7/19/2010: Solr Transactions and Optimize-ing, GoGaRuCo tickets selling briskly

Pivotal Labs
Monday, July 19, 2010

Interesting Things

  • On Friday someone suggested that Solr offers per-queue transactionality. Further testing indicates this isn’t the case. If a series of changes are entered on one queue and a commit occurs on another queue, all pending changes across all queues are committed and reflected in the index. Consider yourselves warned.

  • Solr has an optimize command to reduce the size of the index. This is important to performance because Solr attempts to hold the full index in memory. Using the optimize command can push index size down to 20% of pre-optimized levels. If you’re using Sunspot to interface with Solr, it doesn’t expose the optimize command. Here’s a way you can call it directly:

Sunspot.session.session.send(:connection).update RSolr::Message::Generator.new.build { |b| b.optimize }
  • If you’re using nginx on EngineYard, you might be surprised when your configuration changes don’t take effect for https:// users. EngineYard keeps ssl configuration in a separate file — look for [project name].ssl.conf

  • We’ve reached the halfway point for GoGaRuCo ticket sales. If you are thinking of coming, now is the time to get your tickets. Sarah Mei has been added to the speaker list.

  • Some of our folks using delayed job were having trouble because they needed access to the RAILS_ENV. They modified their delayed_job start and restart commands to export the RAILS_ENV into the environment. When exported, the ENV value is inherited by the daemonized child process:

cd ./project_root && export RAILS_ENV=production && delayed_job start
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Will Read

Expectations: What if Life was a Rails Project?

Will Read
Monday, July 12, 2010

In any consulting job, a project truly fails when expectations are not clearly communicated. In Ruby, we have a great tool for communicating expectations about code. What if we applied that same tool to real life? The anchors at Pivotal Labs have a wealth of knowledge about what elements contribute to a smooth running project. I have my own ideas about what makes a project fun to work on. Below is a very short start to what I like to see about a project going in. This is not to say that a project that fails this spec is “bad”, just that I feel a lot better when a project already has these things in place.

Check out the Pastie

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Joe Moore

Standup 07/09/2010: Jumbo Edition

Joe Moore
Friday, July 9, 2010

HELP!

“Any recommendations for a recurring-payment system that has to support charge amounts that change?”

Check out Active Merchant, PayPal API, Chargify, or simply rolling your own and charging the credit cards directly.

“I’m having a hard time debugging jQuery live events…”

Check out FireQuery. You can also look at the data attributes attached to the target DOM elements.

“Sometimes our S3 assets download incompletely when using Net::HTTP.”

Things to try include:

  • Save a checksum for all assets and compare that after download to detect incomplete downloads.
  • Check the Content-Length header against the actual content length of the asset.
  • Did you set the Content-Type header? Maybe Net::HTTP is confused.
  • Try witching from Net::HTTP to the S3 gem.

“How can we prevent users from printing the web page?”

Though nothing can prevent users from making a screen shot, deterrents might include:

  • A custom print.css.
  • Some printers will not print the EURion constellation. Try embedding it in the image.

“Our Solr commits have sloooooooooooooooowed doooooooooooooooooooooooown.”

As Solr commits increase the warmers might take longer to spin up. You might need to add more servers or space our your commits.

Interesting Things

  • Pivotal is trying to retire our saucelabs-adapter for Sauce Labs. Sauce has improved their adapters — if you are having problems with them, let Sauce (and us) know!
  • MySQL Partial Indexes can be super handy.
  • YouTube announced a while back that they are changing their URL format for videos. In a nutshell they are moving away from query parameters, changing the “?” to “#!”, so http://www.youtube.com/watch?v=ylLzyHk54Z0 changes to http://www.youtube.com/watch#!v=ylLzyHk54Z0.
  • My Tether turns your Palm Pre into a WiFi hotspot. Sprint only!
  • RubyMine blah blah Rspec blah blah… check out this blog post to find out how to fix Rspec stack traces.
  • SproutCore Founder Leaves Apple to Build HTML5 iPad Apps
  • Don’t use Ruby’s split() method to parse tab-delimited files — you might lose the extra white space at the end of the file when you have empty columns:
  irb> "Mr.tBobtSmith".split("t")
  => ["Mr.", "Bob", "Smith"]
  irb> "Princett".split("t")
  => ["Prince"]
  • 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 agile Feed
  1. ←
  2. 1
  3. ...
  4. 36
  5. 37
  6. 38
  7. 39
  8. 40
  9. 41
  10. 42
  11. ...
  12. 79
  13. →
  • 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 >