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

Davis W. Frank

Come to "An Evening with Palm webOS" at Pivotal Labs

Davis W. Frank
Thursday, July 16, 2009

On Tuesday, July 21st, we’re hosting “An evening with Palm’s webOS” here at Pivotal Labs. Mitch Allen, Software CTO & author of the forthcoming book Palm webOS, and Jesse McDonald, Sr. Manager, Mojo Framework, of Palm, Inc., and I will be speaking. There will be some good introduction material from Palm and I’ll be talking about Pivotal’s experience developing for this new platform.

It’s no secret we’re fans of Palm’s webOS and it’s Mojo framework. We’ve been quoted often over the past few months about how productive the development environment is, especially for those familiar with web development tools & technologies. Over the past few months we have developed four applications that are currently available in Palm’s App Catalog: Mobile by Citysearch, AP News, LikeMe, and Tweed, a client for Twitter.

We previewed Pockets, a set of code for helping with test-driven development, and Jasmine, our JavaScript testing framework in an O’Reilly Media webcast this week- it was well attended & received. Thanks!

Now that Palm has opened up SDK access to everyone, it’s a great time to come learn what the fuss is all about and talk one-on-one with Palm engineers & Pivots about how to get started with webOS and Mojo.

Please register for & come to An evening with Palm’s webOS. See you Tuesday!

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Justin Richard

Standup 7/16/2009: Palm Mojo SDK now available to everyone

Justin Richard
Thursday, July 16, 2009

Interesting

  • The Palm Mojo SDK for webOS is now publicly available. Go try it out for yourself and create your own app for the Palm Pre.
  • Rails does not do class preloading if cache_classes is set to false. This is what you’d expect in development mode, but it also effects test, staging and production modes!
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Chad Woolley

The Great Ruby IDE Smackdown of '09

Chad Woolley
Thursday, July 16, 2009

In a recent thread on the East Bay Ruby Meetup list, several people chimed in with Ruby IDE suggestions. I suggested RubyMine, which we use at Pivotal. Several people mentioned NetBeans and Aptana RadRails, so I decided to have a little contest.

Now, if I am going to work in an IDE and sacrifice the speed of a text editor, I want to see it work for me (’cuz RubyMine can chew through all your CPU and RAM and then some faster than you can say Moore’s Law). That means understanding Ruby, and using that information to save me some significant thinking and work.

I don’t mean code-generation macros or dumb context-aware keyword-completion, I mean something useful like knowing where my classes and methods are. In my book, that leaves out Emacs, Vi, and even TextMate, regardless of their other merits (sorry people, I like text editors too, but I’m making up this test – flame away, the comments section is below).

So, here’s the smackdown scenario:

  • Download the latest NetBeans, RadRails and RubyMine.
  • Open a Ruby project, this example is one of mine (I wrote this three years ago to learn Ruby, so don’t make fun of me for doing dumb stuff…)
  • Test the ability of the IDE to navigate through Ruby language constructs. This should be easy, it is a command-line app using a Dependency Injection architecture, no metaprogramming curveballs!
    • Open the root Ruby class for the project (lib/geminstaller.rb)
    • Pick a variable (app in self.install)
    • Try to work back to the class declaration (GemInstaller::Application) using IDE navigation (Command-click in all the IDEs, although sometimes they ignore you)

Result? RubyMine succeeded, NetBeans and RadRails failed miserably. Here’s what happened in each:

NetBeans

  1. Click create_application class method reference in app = create_application. NetBeans takes me to the method declaration in same class.
  2. Click the app method in registry.app.

FAIL! ANGRY BEEP! app is an attr_accessor on another class, NetBeans can’t find it.

RadRails

  1. Click create_application class method reference in app = create_application. RadRails takes me to the method declaration in same class.
  2. Click app method in registry.app. RadRails takes me to the attr_accessor on the Registry class (without a prompt, and highlighting the symbol, which is even better than RubyMine).
  3. Click (and F3) on the :app symbol argument to attr_accessor.

FAIL! ANGRY BEEP! RadRails can’t figure out the symbol parameter to attr_accessor. It says “Current text selection does not resolve to a Ruby element”.

RubyMine

  1. Click create_application class method reference in app = create_application. RubyMine takes me to the method declaration in same class.
  2. Click app method in registry.app. RubyMine pops up a dialog asking if I mean the attr_accessor on the Registry class, or the local variable I’m declaring. That’s rather silly, I admit, but the point is it followed the reference to another class.
  3. Click on the attr_accessor choice. RubyMine takes me to the attr_accessor line in Registry.
  4. Click on the :app symbol argument to attr_accessor. RubyMine takes me to the point where the @app instance variable is initialized.
  5. Click on the Application class name in the GemInstaller::Application.new constructor invocation. RubyMine pops up a dialog asking if I mean the Application class in my application, or two other Application classes that happen to be in my Ruby installation. This is also a silly question – it should have known the correct choice because of my namespacing, but it still found the class.
  6. Click on the GemInstaller:Application choice. RubyMine takes me to the class declaration.

SUCCESS! RubyMine drilled all the way to the class declaration, even through an attr_accessor, albeit with a couple of stupid questions.

Summary

I personally think this is a Big Deal. In the past, I’ve mocked Ruby IDE functionality as a poor simulacrum of the vast power in Java IDEs. When using Eclipse in Java, I could perform epic refactorings, extracting superclasses and adding parameters to method signatures; refactoring scores of classes across multiple projects in a few mighty keystrokes. Yes, I’m fully aware that this is because Ruby is a dynamic language, but that doesn’t make me miss a real refactoring IDE any less, and others have long lamented these shortcomings, as well.

So, for years, even though I’d always indulge my pairs if they wanted to use an IDE, I’ve done all my personal hacking with a fast, lightweight text editor and command line tools. To me, the benefits of a memory- and processor-sucking IDE with tons of unnecessary, unconfigurable, resource-eating tiny-ass-fonts and chrome did not justify giving up the speed and responsiveness of a great text editor.

However, RubyMine can now navigate code for me. I don’t have to think and manually find that class, RubyMine knows where it is. Granted, that ain’t no Extract Superclass, but it saves me a lot of thought and time, both of which are increasingly rare commodities for me.

To be fair, this is really just a problem related to parsing and interpreting attr_accessor declarations, and I expect that NetBeans and RadRails will pass this test as well in another release or two. That’s all great news, because it means that Ruby IDEs are finally, slowly, coming of age. I think I’ll still be waiting a long time for an automated Modify Method Signature refactoring, though…

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

Rotate Your Pairs Every Two to Three Points

Will Read
Wednesday, July 15, 2009

An informal survey conducted earlier at Pivotal Labs asked “how often do you rotate pairs on your project?” The answer for the Best Buy Remix team is usually every two days, but three days is the hard stop. It was about the same when I worked on the Palm Pre apps. But back on Mavenlink, we rotated ever single day.

Instantly I wondered why there was a difference. I really liked rotating every day on Mavenlink, and my gut feeling has always been that rotating that much on Best Buy wouldn’t fly at all. I think the difference is tied to story size.

At Mavenlink, a one point story is 10-15 minutes of work, like “Change the text to read…”. Two points is half a dayish of work, and four was a whole day plus a little kind of task. In comparison, on Best Buy we don’t really have many 10-15 minute tasks. Really the smallest story we see with regularity is about half a day’s worth of work – some of that is due to our client being off site and in a different time zone – so those get one point. Then two points for 1-2 days worth of work, and four points for something that might take nearly all week.

So looking at it that way, in both situations, we rotate after 2 to 3 points of work have been completed. That seems about right. Two points may equate to one day, it may equate to one week depending on your project, but I think if you use the Pivotal Tracker scale, two points is about the time you ought to think about rotating. Any more and a pair starts to “get married” and knowledge doesn’t get shared through the group. Any less and the pair can’t get enough knowledge around a problem to be able to solve it.

Despite our different rotation patterns and point values, there seems to be an underlying rule for rotation. In the middle of the scale, from trivial to monolithic, is a sweet spot where pairs can get things done, feel accomplished, and move on to a different task.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Justin Richard

Standup 7/15/2009: webrat + selenium-client + cucumber works out of the box; possible RSpec bug

Justin Richard
Wednesday, July 15, 2009

Help

“How to modify a URL with rack middleware before it hits rails routing?”

Interesting

  • The latest versions of webrat, selenium-client and cucumber gems all work together out of the box now. The only caveat is the latest webrat (0.4.5) hasn’t been packaged as a gem yet. Until the official one is available you can use pivotal-webrat. It’s a gem of the latest webrat.
  • Test pollution between RSpec examples was observed when two sequential examples in the same describe block depended on rails flash messages. Moving each of these examples into their own respective describe block eliminated the cross test pollution. This seems to be a bug in RSpec.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Christian Sepulveda

Slides for Unit Testing on webOS Webcast

Christian Sepulveda
Tuesday, July 14, 2009

I gave a webcast this morning on unit-testing on Palm webOS, using Pivotal’s Jasmine and Pockets framework.

Here are the slides.

Here is a link to the webcast.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Christian Sepulveda

Tweed Update: v0.9.10

Christian Sepulveda
Tuesday, July 14, 2009

A new version of Tweed is available! (v.0.9.10)

Bug Fixes

  • if you view a timeline, it will clear any pending/open notification dashboards, for that timeline

Features

  • photo integration: configure service of choice and Tweed will auto-generate an email for posting
    • optionally configure sound and/or vibration for notifications

Photo Integration Notes

You can use any photo service that supports email for posting, such as TwitPic. The photo service needs to follow the following guidelines:

  • Subject Line is tweet text
  • To: address is for posting

For services such as posterous.com or twitgoo.com, you will need to register your sending email address (one being used on your Palm Pre).

Let us know your feedback either @tweed on Twitter, tweed-support@pivotallabs.com or http://tinyurl.com/satisfaction-tweed

You can change your photo settings from the AppMenu, Preferences & Accounts, then tap your account. Then tap the Edit Photo Settings button on bottom of the screen.

Tweed

Tweed

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Justin Richard

Standup 7/14/2009: How to test your code that uses Event Machine?

Justin Richard
Tuesday, July 14, 2009

Ask for Help

“How have others effectively tested their code that uses Event Machine?”

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

Priorities and Speed

Will Read
Sunday, July 12, 2009

Working for Pivotal Labs is different than any other software shop I know. A big part of this is that it is easy to feel good about the product you’re delivering to your client. Another reason is that we constantly challenge our own practices, ensuring that we continue to do the right things for the right reasons.

Let’s assume Pivotal Labs emphasizes these things in this order:

  1. Code Quality
  2. Product Quality
  3. Speed of Features Released

Whereas a typical client may want this ordering:

  1. Speed of Features Released
  2. Product Quality
  3. Code Quality

It made me raise my eyebrow. First, this is a totally expected response to making code quality #1. I’ve been in those fights where devs want to refactor, and management wants a feature. It also could get under my skin that someone thinks that delivering features was “low on our list”. Then I thought about “why”.

We do deliver features quickly. Faster than any other place I know. This is true across all three projects I’ve worked on, and I assume all projects at Pivotal Labs. But the reason we can do that is largely due to code quality and concerns for product quality.

If my code was crappy, and patched, and buggy, and untested, each feature I’d add on would make the problem worse. And while it is true I could deliver the first few features this way with great speed, I can’t sustain it for long at all. Delivery speed drops off exponentially as time progresses that way. But if I refactor, write tests, and do my best to write good code up front, I can sustain that, even make incremental improvements as I go and deliver more features in the same amount of time.

Product quality focus also helps speed in a less direct way. If sheer number of features was indeed my focus, then my team may crank out features X, Y , and Z this week. When X,Y, and Z go public though, we may find that no one wanted Y, and Z, and so we wasted our time doing them when we could have been adding the killer feature that people did want if we had only “slowed down” and asked those questions of our product owners. In this way we don’t deliver “more” features, we deliver higher value features, meaning that the client gets a lot more bang for his buck.

Code quality is what we do. It enables us to deliver more features over time. Product quality lets us deliver better value. Together, they take care of the “speed” request that every client has.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Edward Hieatt

Webcast: Unit testing with the Palm Mojo SDK

Edward Hieatt
Friday, July 10, 2009

Next Tuesday, July 14, at 10pm PST, Chris Sepulveda from Pivotal Labs will be broadcasting an O’Reilly WebCast on automated unit testing with the Palm Mojo SDK. Developer testing is at the heart of Pivotal Labs’s development practices, and we’re excited to be involved in bringing testing to Mojo development. The WebCast will cover the following:

  • Introduce BDD & Jasmine
  • Installing Jasmine & add related code to the app to support BDD
  • Discuss how to write a failing test first, then add functionality to make a test pass
  • Develop a simple webOS application test first, with the Mojo SDK

There’s more information about the WebCast on webOSHelp.net.

Date: Tuesday, July 14th at 10 am PT
Price: Free
Duration: Approximately 60 minutes
To register: http://oreilly.com/go/palmmojo

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