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: February 2012

Gregg Van Hove

Standup 02/23/2012 – Charts are cool

Gregg Van Hove
Thursday, February 23, 2012

Ask for help

  • A team is migrating from PaperClip to CarrierWave and while the site seems to work fine, however tests are failing in strange ways. Specifically, tests about replacing images aren’t saving any changes to the database, but there are no validation errors.

  • What javascript charting libraries are cool?

The easy recommendation was HighCharts (http://www.highcharts.com/)

And there is also D3 (http://mbostock.github.com/d3/) but it is much more low level

Interesting things

  • According to Amazons AWS newsletter, S3 now has 762 billion objects and is serving 500,000 requests per second.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Ronan Dunlop

Tracker Ecosystem: Meta collaboration tools

Ronan Dunlop
Wednesday, February 22, 2012

Is it a sign of the times that the cloud-based tools that allow us to work together better now need a tool of their own to work together better? A meta betta togetha tool in other words.

Sounds ironic, but it’s a fact that we struggle to manage the multiple communication streams we’re connected to – we’re running out of sandbags to contain the overflow.

For those of you that have Pivotal Tracker as one of your streams, we have many friends in the community that are seeking to help folks stay on top of and act upon all that valuable info in these multiple streams. One pond that all your streams feed into if you will. Not wishing to play favorites, here are some of our more recent partners in alphabetical order.

Try them out and please tell us what you think.

300 Miligrams
all your business information from various cloud services together in one place.

BusyFlow
A workspace that makes your web-based productivity and collaboration apps work together.

Clutch
All your project updates in one beautiful feed, and works with many popular project management systems.

Flowdock is a collaboration web app for technical teams.

Hojoki lets all your cloud apps work as one.

Teambox
Joining social collaboration tools with online project management.

Traction Stream
Listen to your applications and streams – curate and share what matters.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Gregg Van Hove

Standup 02/22/2012: Apache trying to compete with Nginx?

Gregg Van Hove
Wednesday, February 22, 2012

Ask for help

  • Where are the cool parking garages around the new office?

There appear to be many options close by.

  • What is the best way to estimate hosting costs? (e.g. how many dynos on heroku etc.)

One suggestion was to try load testing the app in the real hosting environment to get an idea on what you can realistically take.

Interesting Things

  • A new version of Apache has been released that is trying to compete better with nginx
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Mike Barinek

Rails Contained: A Container for Web Application Development and Deployment

Mike Barinek
Tuesday, February 21, 2012

You might call this post Part 2 in a component based architecture series. The first post describes a solution for better organizing loosely-coupled, highly-cohesive components within a singe Rails application.

This post describes a component based solution that aims to support vastly different user experiences and client side strategies across multiple web applications that share a common domain while allowing developers to work independently within individual web applications or components.

Here’s the scenario…

You’re tasked with building a fairly large web application, several user roles each packed with handfuls of high-level activities. The larger application could clearly be broken apart into smaller web applications. It’s a clear win to break things down. The smaller applications would have unique responsibilities and developers could work within the context of one application without worrying about introducing breaking changes across applications. However, the smaller applications, although independent, share a common domain or database.

You start thinking about how you’d expose subsets of the domain as RESTful services and maybe introduce a single sign-on approach, although you’re concerned about managing, versioning, and deploying multiple web applications and services, not to mention how this might impact the early development rhythm. There’s no clear path to success, so you write the classic uber app.

The tide could be changing in your direction. Here’s a solution that’s shown early success for developing and deploying large Rails applications: move loosely-coupled, highly-cohesive web applications and components to a components directory within a container Rails project.

Until recently such an approach might be difficult to imagine. Although, with the addition of mountable engines in the latest versions of Rails, the approach is now possible. Here’s an example that describes the project structure…

container_rails_app/
  app
  config
  components/
    component_1/
      lib/component_1.rb
      lib/component_1
      test/lib
      test/test_helper.rb
      Gemfile
      component_1.gemspec
      Rakefile
    component_2/
    component_3/
    web_app_1/
      app
      config
      test/lib
      test/test_helper.rb
      Gemfile
      Rakefile
    web_app_2/
      app
      config
      ...
  ...

The container application simply mounts dependent web applications as Engines, exposing each with their own context or url. Engines in turn reference in any Engines or Gems they depend on.

However, there is one twist, we keep everything in a single Git repository.

Engines are organized as prescribed within their corresponding directories, although they’re not built nor do they have their own Git repository. They’re referenced directly from the containers Gemfile.

As database migrations trigger sweeping changes, the refactorings become simpler and you don’t need to worry about deploying updates to multiple applications/services as all your code is in one place, versioned together.

As important, each Engine or Gem has it’s own Gemfile, test_helper, test suite, and continuous integration environment. As mentioned in the first post, the unique Gemfile and test helper allows you to remove unnecessary dependencies while the individual test suite and continuous integration environment helps to avoid circular dependencies.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Mike Barinek

Unbuilt Rails Dependencies: How to design for loosely-coupled, highly-cohesive components within a Rails application

Mike Barinek
Tuesday, February 21, 2012

I’m sure a few of you have encountered this scenario…

You’re a year in and your Rails application is growing in size as well as complexity. It’s becoming increasingly difficult to navigate through a sea of models, not to mention that your test suite is grinding to a screeching halt.

You have a handful of 3rd-party services you integrate with so you start thinking about extracting Gems. Although you’re nervous, as you’ll now need to manage and version multiple Gems. You’re looking at a mountain of work with little feature development.

Here’s a solution that has worked on several projects that might help to avoid this scenario: move loosely-coupled, highly-cohesive components to unbuilt gems within your lib directory while maintaining a single Git repository.

Sounds strange? Here are a few important facts that might help clarify the solution…

There’s only one Git repository and dependent gems are never “built”, their gemspec is simply referenced via your Rails Gemfile. This defers the need for a Gem versioning strategy as you Rails application moves forward with multiple dependent components all under the same umbrella.

From within your Gemfile…

gem 'component_1', path: "lib/component_1"

All your source is in one place. This allows you to continue to develop within a single environment with cross-component refactorings, which is now supported by tools like RubyMine.

Components have their own Gemfile, test_helper, test suite, and continuous integration environment. The unique Gemfile and test helper allows you to remove any unnecessary dependencies (Rails for example). The test suite and continuous integration environment helps to ensure downward dependencies and avoid circular dependencies.

As a result, you tend to end up with loosely-coupled, highly-cohesive components and avoid accidental design. In addition, test suites tend to run faster as they’re loading far fewer Gems and you’ve honored the timeless way of building large applications.

Here’s an example that describes the project structure…

rails_app/
  app
  config
  lib/
    component_1/
      lib/component_1.rb
      lib/component_1
      test/lib
      test/test_helper.rb
      Gemfile
      component_1.gemspec
      Rakefile
    component_2/
      lib/component_2.rb
      lib/component_2
      test/lib
      test/test_helper.rb
      Gemfile
      component_2.gemspec
      Rakefile
  test/lib
  test/test_helper.rb

Probably the most compelling argument is prematurely trying to identify and extract components. 3rd-party service integrations seem like a reasonable place to start, however, more recently we’ve been teasing out a variety of components very early within the development lifecycle with much success.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Robbie Clutton

Achievement unlocked! One month at Pivotal.

Robbie Clutton
Tuesday, February 21, 2012

There’s always been an mix of excitement and fear when starting a new job for me. There are many questions that you cannot know the answer to until you’ve experienced it: Will I enjoy the work? Will I get along with my new colleagues? Will I pick up the new tools, languages and processes quickly enough not to be an annoyance? Will the company be everything I think it is?

I tend to have these questions floating in my mind for every new position I’ve started. I’ve never had to throw in a heady new mix of relocating to a new city, a new country, at the same time. I’ve travelled abroad for work before, but I’ve never relocated. The few days before and after starting at Pivotal were filled with that particular doubt that comes with things that are very difficult or impossible to undo: Had I made the right decision?

A close friend of mine said it sounded character building. That’s probably very true and certainly the most polite way I can think of putting it.

As it turns out, I needn’t be worried. My new team-mates were jovial and bright. They made me feel at home and were very patient with me while I fumbled my way through unfamiliar tools and frameworks. Although I did feel like a bit of a dead weight on certain things, I felt immediately at home with the pro-agile processes and good engineering practices that I had worked within for most of my career.

The first few weeks were intense and fast moving. It felt like going on holiday with a basic grasp of the local language only for everyone to speak at a hundred miles an hour while you try and keep up, trying to keep your head above water. Most nights I would go home drained, feeling like I’d completed a mental marathon. I found my feet a little more each day, and felt like I was chipping away at the burden/contribution ratio.

A month in now and I feel I still have a lot to learn, but that’s an environment I enjoy being in. I regard software engineering as professional problem solving and if I’m not learning I feel like I’m standing still. Standing still makes me feel like I’m solving the same problem over again. Looking for opportunities where I can learn more has always been a big motivating factor for me when choosing a new job, and there are great opportunities here.

That early doubt about moving to the US, to New York and joining Pivotal has been soundly banished. Had I made the right decision? Definitely.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Bleicke Petersen

Standup 02/21/2012: Cute title goes here

Bleicke Petersen
Tuesday, February 21, 2012

Helps

“Want to teach college students Rails/Pairing in a Software Engineering class?”

Write an email to Rob. Details to follow soon.

“How do I set the type of a Backbone class to not always be “child”?”

You can rename the constructor, it’s going to have that name. Don’t forget to call the constructor of the super class in it.

“Is there any tool to run Jasmine tests in several windows/browsers in parallel?”

Let us know.

Interestings

CSS Box-Sizing

The CSS property ‘box-sizing’ allows you to control the width of an element, including its border and padding.

box-sizing: content-box;

is the default setting, where the width specifies the width of only the content

box-sizing: border-box;

specifies the width for both the content, and the border and padding

box-sizing: inherit;

have a wild guess.

Ember.js Meetup tonight at 6:30pm

Technically sold out, but if you just stick around after work, you can still attend.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Georg Apitz

[Standup] [Boulder] Make your own carousel

Georg Apitz
Friday, February 17, 2012

if you need to display complicated html in a javascript driven carousel, write your own,

jquery plugins tend to mess with your markup and force it into a specific layout
which can break your behaviour

acceptance vs. non acceptance rspec

When running regular rspec tests and acceptance test combined slow build time were observed,
breaking them out into different builds resulted in a 25% speed up
(combined 21 min, only rspec 5min, acceptance 10min)

  • possible help: leave transactional_fixtures as true for acceptance
    supported by forcing one db connection as described here:

    http://blog.plataformatec.com.br/2011/12/three-tips-to-improve-the-performance-of-your-test-suite/

  • reopening the rspec config block in the acceptance helper can have unintended side effects, if you are running
    units specs and acceptance specs together
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Dan Podsedly

Updates to the Pivotal Tracker story redesign

Dan Podsedly
Thursday, February 16, 2012

Last week, we launched a complete redesign of stories, as part of our ongoing effort to make Tracker easier and more enjoyable to use. We’ve received a great amount of feedback about what’s working well in the new design, as well as what could be improved. As a product team, we’re extremely lucky to have users who time and again have shown such passion – thank you, we really couldn’t do this without you!

The redesign was a big change and involved some significant behind-the-scenes investments for big upcoming features. There were a few bumps after the release, and we’ve rolled out a number of fixes over the last week as well as some design tweaks based on your feedback. See below for the complete list.

Here’s what’s new since last week.

  • You can now navigate through all of the drop-downs and select values with the keyboard.
  • When adding a new story, in addition to being able to move through the story types and point estimates with your left/right cursor, you can also choose values with a single key. Use F/B/C/R for Feature/Bug/Chore/Release, and the number keys to pick an estimate.
  • CTRL + S (or CMD + S on a Mac) now save stories.
  • Enter and escape work everywhere again, to save changes or cancel.
  • The overall visual design has been adjusted to improve contrast and scannability, especially in the top section.
  • There’s now a save button at the top of new stories, for more consistency between creating and editing.
  • We’ve adjusted the gray background to a warmer color.
  • Clicking on a file attachment thumbnail or file name should open the file inline in the browser, at least for most file types. To download a file, use the cogwheel menu next to file attachments.
  • The ‘view all images’ page now shows upload date/times.
  • The Flash-based ‘click-to-copy’ feature for story ID and URL can ow be explicitly disabled on the Profile page, for those having trouble with Flash. When disabled, your stories will show a text field for both story ID and URL, which should auto-select when clicked into for easy copy and paste.
  • Story tasks can once again be disabled in project settings, if you’re not using them.

We’re by no means done, and the design will continue to evolve, and we’re working to improve story manipulation and drag/drop performance, especially on larger projects.

Thanks again for all the feedback!

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Ronan Dunlop

UC Berkeley features Pivotal Tracker in FREE online SaaS course

Ronan Dunlop
Thursday, February 16, 2012

Learn all you need to know about the state of the art in Agile SaaS. Don’t miss this FREE five week course from Professors Armando Fox and David Patterson of UC Berkeley, the authors of Engineering Long-Lasting Software.

Aside from the fact that they’ll be using Pivotal Tracker extensively while teaching the benefits and how tos of test driven development, bi-weekly iterations, velocity and more, the course will also cover other tools such as Github, Heroku and Cucumber.

Class starts February 20th, so don’t dither, register now at http://www.saas-class.org/

  • 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. →
  • 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 >