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: July 2011

Pivotal Labs

NYC Standup: 2011-07-29

Pivotal Labs
Friday, July 29, 2011

Help

“How to test content_for in a view using rspec-rails 2?”

It looks like rspec used to have a convenience method for testing what was passed to a content_for in a view. What are the options for testing this? One option is rendering the entire view in a controller test using render_views and testing the content there.

Mocking out the call to content_for would be nice, but it’s difficult to get a hold of the view object which this method is called on in your view.

“What do you recommend for autoresizing textareas as users interact with them?”

A few projects are using Autogrow Textarea.

This one looks nice as well, though I haven’t a chance to use it besides the demo on the page.

Interesting

“apply @font-face directly to elements containing text, not their parents”

Looks like you might get some unexpected aliasing artifacts with @font-face if you don’t heed the advice given above.

“fields_for: child-index vs. index?”

You might come across

f.fields_for :object, :child-index: => i

or

f.fields_for object, :index => i

when you’re making many fieldsets. What’s the difference?

As you might notice above, the form helpers use child-index for the indices on the inputs when the object to render fields for is a symbol (or a string), and index when passed an actual object.

–

Now for some gems that some Pivotal folks have found useful recently

  • validates_timeliness for your date and time validation needs

  • hash_syntax converts hashes between the :key => value and key: value syntax (or the other way).

Events

Yoga tonight. Stay cool over the weekend!

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Sean Beckett

New Tech Talk: Metrics, Metrics Everywhere

Sean Beckett
Tuesday, July 26, 2011

If you don’t measure it, you can’t optimize it. Coda Hale, Infrastructure Architect at Yammer, talks about service-level performance metrics, how they use them to guide their development strategy, and how you can improve the transparency of your own software.

This talk was recorded on a laptop webcam. We hope the reduced quality doesn’t affect your enjoyment of the talk

See all our talks at http://pivotallabs.com/talks

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Glenn Jahnke

Performance stories – Writing two stories instead of one

Glenn Jahnke
Monday, July 25, 2011

TL;DR

Estimating performance stories are total bike-shed conversations.

  1. Write a figure-out-what-to-do story which generates the knowledge to estimate #2 (with repeatable benchmarks)
  2. Now estimate and execute the actual story around doing the optimization (and compare benchmarks)
  3. Repeat until your slowness is gone

Estimating Optimization is hard

Don’t Pre-optimize

We are always told to never pre-optimize our code. This is generally a good practice; it tends to keep you focused on writing readable, correct code. It also keeps you from making the common mistake of optimizing things that you think are expensive and are not anywhere close to the hot-spot.

Okay, okay, but something really needs it

Given enough time though, some part of the software you are writing will eventually become slow enough that it actually affects the usefulness of the code. A product manager should eventually see these performance-related issues and request stories around fixing it.

Avoid the Bike-Shed Conversation

Unfortunately, on many occasions I’ve sat at a planning meeting being asked to fix aforementioned performance issues, and I’ve nearly always seen a huge bike-shed conversation snowball, taking up lots of time, and rarely generating actual value such as what to optimize and how. Even worse is attempting to estimate the difficulty of optimizing. Optimizing code can have wildly different amounts of effort. Sometimes some simple cacheing can make huge impacts in a couple lines of code, but sometimes extravagant new algorithms are required which take weeks to write and test.

Estimating Two Stories instead of One

Optimizing might be hard, but avoiding wasting copious time estimating stories in Tracker is easy: write two stories.

The Find-Something-Juicy-and-Benchmark-It Story

The first story is simple: analyze your code. Try to instrument your code as best you can, it can be hard but make sure you get real numbers, and record your efforts. Find low hanging fruit in code that is both taking lots of time, and you have a couple ideas on how to make faster. The primary output of this story is your benchmark results, and an estimation of the work it will take to optimize. It may be useful to timebox your work, this will make your product manager happy because they know you won’t be running off into the distance chasing things that aren’t going to deliver value.

The Actually-Fix-It, Estimatable Story

The next story you write is simple, do the optimization, and then run the benchmark again to see that you got some results. Doing anything but going off of repeatable benchmarks is just silly. Having simple metrics which prove you actually sped things up is also very important as it is the only way a product manager can truly accept your story most of the time. Proving some batch process ran 30 percent faster is not fun for a product manager, letting them see a graph that proves it is.

Save Your Breath and Overestimates

Now your PM doesn’t have to choke on an hour long conversation, or a grossly over-estimated story because there is so much risk in actually delivering an optimization story. All you had to do was stop spending time trying to estimate things that are really hard to predict.

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

Orbotix is looking for a Senior Rails developer to join their team in Boulder

Mike Barinek
Monday, July 25, 2011

At Pivotal Labs, one of the services we provide our clients is helping them interview and hire. Pivotal Labs and our clients place a strong emphasis on Agile development and its many aspects: Pair Programming, Test-Driven Development, rapid iterations, and frequent refactoring.

Summary:

We’re looking for a brilliant Rails developer to join our star team in Boulder, CO and take the lead on all web development projects. If you want to share your knowledge while learning from others, work smart, and contribute to some awesome projects, we think you’ll have a blast with us. As a bonus you’ll get to play with robots, games and mobile devices all day long.

Job Description:

  • 2+ year experience with the Ruby language and the Rails framework, must have a proficiency with the entire Ruby on Rails stack.
  • 4+ years of standards compliant HTML/XHTML, CSS, JavaScript, and JQuery.
  • 4+ years of Java, PHP or equivalent platform experience (including related DB experience such as MySQL, PostgreSQL, etc).
  • Awesome attitude and fun personality.
  • Ability to communicate with both technical and non-technical team members

About Orbotix

Although you are encouraged to send a traditional resume, a resume will not alone won’t make you stand out. So along with your resume please send a brief explanation about who you are and why you would be a good fit for Orbotix. Include pictures, videos, or screenshots of your previous projects, both professional and personal. We’re just geeks like you so don’t hold back. Email us… jobs [at] orbotix (dot) com.

Orbotix is a venture backed startup with the vision that you shouldn’t be limited to emailing, getting directions, and playing a game of scrabble on your mobile device. You should be able to just as easily download an app to control all of the physical devices around you. No more remotes. No more clunky interfaces. No more keys. Everything is done with the powerful mobile device that you already carry with you. We’re looking for someone great to join our small but hardcore engineering team to help design and implement our products, starting with Sphero, a powerful robotic entertainment device.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter

SoundSeed.me

Friday, July 22, 2011 | Run time: 42:35

Jared Cosulich of Irrational Design recently started a new music site, SoundSeed.Me. He discusses the process as he launches a new product, getting it built, finding the first users, iterating, testing, and trying to get the right market fit.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter

Metrics, Metrics Everywhere

Friday, July 22, 2011 | Run time: 46:43

If you don’t measure it, you can’t optimize it. Coda Hale of Yammer talks about service-level performance metrics, how they use them to guide their development strategy, and how you can improve the transparency of your own software.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Onsi Fakhouri

The Vegetarian Version | It’s Pure and Good

Onsi Fakhouri
Friday, July 22, 2011

Ask for Help

“We’re trying to get the Google Docs API working on our project but we keep hitting unauthorized/bad request responses. Help!”

One thought: some ruby OAuth implementations are known to fail. Try shelling out and running a command line OAuth to make sure this isn’t an incompatibility with your ruby OAuth library.

Interesting Things

  • Ruby is slower than node.js.

    Two loops and a square root turns out to be a recipe for ruby slowness. The v8 engine wins again!

  • Ubiquitous Singaporean Chile (”Sambal Chilli”) now available – briefly – in the San Francisco lounge (courtesy of Nate Clark).

    To quote Nate: “It’s usually Shrimp based but this is the Vegetarian version which I find to be pure and good.”

  • Gogaruco sign up is now open.. and the early bird tickets are gone. Sign up soon!

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

Agile Productivity Tips for Developers and Entrepreneurs

Pivotal Labs
Friday, July 22, 2011

Cross post from: http://www.women2.org/productivity-tips-for-entrepreneurs-from-an-agile-developer/

A few months ago, I attended the TechCrunch hackathon in NYC. I expected an intense all-night session where programmers would crank out crazy amounts of code at top speed. As it turned out, my assumptions were far off from reality. Walking around the room there was conspicuously more Redditing than programming on my fellow hackers’ screens.

As it turns out, developers goof around. A lot. It’s understandable. Everyone procrastinates and it’s even more difficult to focus when your job is the internet. The result is that programmers tend to spend a lot of their work time caught in internet wormholes. For most, the hackathon was no exception.

In contrast, my friends and I were able to effectively work for nearly the entire time. This meant that we finished early enough to head home and catch some sleep. When demo time came around we presented Nerd Nearby, a feed of photos tweets, checkins and other social activity happening around you. We even had time to buy our URL and point TechCrunch readers to our site. Other teams had stayed up all night to come up with half-finished and buggy pieces of software. Many of the teams didn’t even complete their hacks.

The Nerd Nearby team didn’t have special abilities, we’re just experts at optimizing time. Three of us are engineers at Pivotal Labs, a consulting company that prides itself on efficient engineering practices. Pivotal has developed practices to make engineers happy and productive (it doesn’t hurt business either) and I’ve happily stolen their ideas for my own pursuits.

Here are some productivity tricks I’ve learned to help get me through programming sessions, hackathons and beyond.

Pair Programming

Nothing beats it. With a pair in tow you absolutely cannot sit there and check your email when you intended to be programming. Try it, I dare you. At the hackathon my friends and I spent the entire night pairing. It paid off. When we got up to take breaks we’d see other people sitting around browsing the internet, on gchat, doing anything but programming. By pairing, we were able to get work done the entire time we were in front of our computers. As a bonus, we got to spend the night being social rather than wearing huge headphones and attempting to shut out the world.

Turn Off The (Distracting Part Of The) Internet

While pair programming is ideal sometimes it’s just not practical. Maybe you are working on something by yourself or with someone non-technical. Or if you do have a pair your schedules don’t always perfectly coordinate. The next best thing is to start blocking out distractions. There’s some great browser plugins (such as Stay Focusd for Chrome) that allow you to firewall specified websites either completely or with a time limit.

Different Computers For Different Contexts

Sleep experts recommend that you use your bed only for sleeping. Why not apply the same principle to computers? You’d never pick up your Xbox and think of work. Why would you pick up your Facebook machine and expect to get some programming done? If you have the resources, a second computer just for work can be indispensible.

A Different Profile For Your Computer

Having 2 computers can be expensive and unrealistic for many. Setting up profiles, on the other hand, is free and easy. I recently set up new profile on my laptop using parental controls. In my profile I blocked a bunch of websites as well as certain applications. I can still use my computer for fun stuff but when I log into my new account my computer goes into workstation only mode. I can pretend it has nothing in common with the YouTube player I just closed.

Take Real Breaks

Everyone needs breaks. Make sure you take them knowingly. There’s nothing worse than realizing you’ve just unintentionally taken an hour break from work while getting lost on Wikipedia. Instead, put down your computer, stretch your legs and leave your desk for a bit.

Get Out Of The House

Sometimes a change of space is all you need. It’s tempting to work from your couch but that’s the place you go to veg out and watch TV. Go to a coffee shop or cafe, somewhere you can associate with work only. With other busy workers around you can’t very well spend 2 hours on Farmville. If you must work at home try moving away from your recreation area. Even if you’re apartment is small, there’s always the floor!

Set Clear Stopping Points

Set achievable goals and give yourself a treat when you achieve them. It’s difficult to work with an indefinite ending. It feels like you’ll be going forever so you procrastinate actually getting started. Try planning to take a break once you’ve reached a milestone, or done a specified time’s worth of work. It’s much easier to work for four hours straight if you’ve already decided that is the maximum work time for the day.

Break It Down

An important lesson from Pivotal Labs is the power of breaking down and organizing your tasks before you start. Figure out the smallest possible chunks you can accomplish and track your progress (Pivotal Tracker is made for just this). I’ve often suffered from not knowing what to work on next once a goal is reached. An orderly backlog of tasks makes it easy to keep going at a steady clip. By frontloading the planning part of your project, you can focus your mental energy on speeding through the implementation.

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

Pivotal Tracker Pricing Introduction – 6 Months Later

Dan Podsedly
Thursday, July 21, 2011

It’s been six months since we announced pricing for Pivotal Tracker. As Tracker grew to become the world’s favorite agile project management app, and an essential service for thousands of companies around the world, this became a necessary step for us, in order to continue providing a great product with world class support.

Since then, we’ve rolled up our sleeves, and went to work on a long backlog of features, as promised. So far, we’ve rolled out a number of core usability improvements, as well as new features such as custom point scales, multi-story drag and drop, a brand new iOS app, and more.

As part of the pricing introduction, we offered all existing users 6 months to continue using Tracker for free, in order to give everyone plenty of time to evaluate their options.

This week marks the end of this 6 month free period, and we really couldn’t be more grateful for the fact that the majority of you have chosen to stay with Tracker – thank you! You’ve given us the mandate to make Tracker the best possible collaboration and project management software for development teams of any size, everywhere.

Plan Options

For those still considering options, Tracker price plans start at just $7/month, for up to 3 collaborators and 5 private projects. Public projects are free, with unlimited collaborators. Individual use (no other collaborators) is also free, and we offer sponsored plans for non-profit organizations and academic institutions, by request.

Accounts

Paid plans are managed with accounts. Accounts are not the same as logins – they are a mechanism for grouping projects together for the purpose of sharing access and administration. You can read more about accounts in our FAQ.

Note: Projects at your organization may belong to a number of different accounts – we have an article on the Tracker blog that outlines the steps to consolidate these projects into a single account, as well as how to manage administration and subscription plans in one place.

Transition to Free Plan

Accounts that were on the six month extended free period were completely unlimited in terms of projects, collaborators, or file storage. As the free period ended on July 19, any accounts that were not explicitly upgraded to one of the paid plans transitioned to the free plan automatically. The free plan allows for up to 5 projects for individual use (no collaborators), and up to 200MB of file attachment storage.

As described in recent emails to account owners, accounts that are over the limits of the free plan have become read only. You can still access them fully, but you will not able to add or edit stories until you either reduce collaborators/projects/file attachments, or upgrade the account to a plan that allows for your account’s level of use. See the FAQ for more information on this.

Note: If you’ve already upgraded your account, but find that some of your projects are still in read-only mode, the projects may be in a different account, and will need to be moved. You can see which account(s) your projects are in by going to the My Projects page. Projects can be moved to a different account easily, via the project settings page – more on that in the article mentioned above.

Getting Help

If you have any questions at all, or have problems accessing any of your projects, please do not hesitate to get in touch with us, by email to tracker@pivotallabs.com. We generally try to respond within a few hours.

Again, we’d like to thank all of you for your continued support. We’re looking forward to getting that next big feature out soon!

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Sean Beckett

New Tech Talk: Backbone.js

Sean Beckett
Wednesday, July 20, 2011

Backbone.js is a lightweight Javascript MVC framework great for organizing your Javascript code and simplifying very common AJAX and event-driven DOM update use cases. Because Backbone is so small, you’ll need to add your own Javascript philosophies, patterns and customizations to get the most from it. If you’re using Backbone to build a typical Rails app it may not be clear how to get started. Pivot Jay Phillips shows how any project can get started with Backbone.js and demonstrates how it is used on some projects at Pivotal Labs. He also introduces Ribcage.js, a new open-source library from Pivotal that makes Backbone views about as awesome as its models.

See all our talks at http://pivotallabs.com/talks

  • 0 Shares
  • Share on Facebook
  • Share on Twitter

Topics

  • agile (778)
  • rails (113)
  • testing (86)
  • ruby (83)
  • ruby on rails (70)
  • jobs (62)
  • javascript (53)
  • techtalk (44)
  • rspec (38)
  • activerecord (29)
  • productivity (29)
  • gogaruco (29)
  • ironblogger (29)
  • git (28)
  • nyc (27)
  • rubymine (25)
  • mobile (21)
  • cucumber (20)
  • bloggerdome (19)
  • process (19)
  • pivotal tracker (19)
  • design (18)
  • jasmine (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)
  • gem (13)
  • bdd (13)
  • selenium (12)
  • css (12)
  • goruco (12)
  • bundler (12)
  • tdd (12)
  • meetup (11)
  • railsconf (11)
  • nyc-standup (11)
  • capybara (10)
  • mac (10)
  • mojo (10)
  • chef (10)
  • rubygems (9)
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 >