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 2010

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
Dan Podsedly

Pivotal Tracker moving to new servers Thursday, Jul 22

Dan Podsedly
Tuesday, July 20, 2010

Pivotal Tracker is moving to a new private cloud hosting environment at Engine Yard this Thursday, July 22, starting at 8pm PDT.

Planned downtime is approximately one hour, but because we’re changing IP addresses of the Tracker servers, it may take longer for DNS changes to full propagate.

If you’ve opened your firewall to a specific IP address for Tracker integrations, you’ll need to make changes. We’ll post the new address of the integrations server after the move, you can also ‘ping api.pivotaltracker.com’ to resolve it.

Apologies for the inconvenience, we’re hoping for noticeable performance improvements in the new environment.

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

Problems with Photo tweets and more in version 1.8

Christian Sepulveda
Tuesday, July 20, 2010

As you know, photo and video tweets are broken in version 1.8. The reason has to do with Twitter’s new authentication mechanism, but the core problem was a mistake on our part.

Tweed (like most Twitter applications) used to store both your username and password.

Twitter is requiring all third party apps use their new authentication mechanism (for more on that, see Twitter’s developer docs ). With this new mechanism, Tweed no longer stores your password, which is better from a security standpoint.

This caused media integration to break, as third party services like TwitPic or yFrog, typically also use your Twitter username and password. As Tweed no longer has your password, it is failing to upload your media.

Twitter was requiring that all apps be ready by the end of June (the cutoff date has now been extended). Unfortunately, our developers bandwidth was limited and, in our rush to update Tweed, we did not account for the changes to the media integration.

Many of these services offer a compatible authentication mechanism. We are in the process of changing Tweed to use these methods. We should have done this before version 1.8 was released and we are sorry for the frustration this has caused users.

There are some other bugs that have been reported, such as broken Conversation view with protected users. We are working on these as well.

We also are sorry we have been so silent on Twitter and email lately. As you know, we are normally tried to be responsive and engaged with our users. Unfortunately our Tweed resources are not dedicated to Tweed and they’ve been juggling responsibilities at the moment.

We hope to have the fix submitted to Palm soon.

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

Standup 7/20/2010: The Daily Rubymine

Pivotal Labs
Tuesday, July 20, 2010

Interesting Things

  • RubyMine 2.0.2, refactor => extract partial == FAIL. If you select multiple divs and perform
    extract partial, the selected region is removed, but only the first complete div is included in
    the new partial.

  • Rspec/Rubymine focused tests. Rubymine attempts to run focused tests using the
    --example 'text' option. Rspec apparently finds the example group, and runs the examples that are
    directly a part of that example group, but does not include descendent example groups — *which can
    lead you to think examples are passing that were not actually run*. Apparently this is
    fixed in rspec 2.

Ask for Help

“Display of time is off by an hour, presumably due to Daylight Saving Time”

The team is displaying time stored as utc in the database, using strftime, and the time is off by an hour.

“Binding Click to Checkbox with Jquery”

A team was trying to check the value of a checkbox during the click event, but getting the opposite
value. They worked through it but was hoping to find a better solution.

“Why is there a new default for include_root_in_json for rails 3?”

Just curious.

“Fakeweb, Capybara w/Selenium Webdriver == end of file?”

Getting “end of file” failure on CI. There were a few suggestions:

  • There is a fork of fakeweb that allows it to ignore localhost.
  • Consider using Webmock instead of fakeweb.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Adam Milligan

iPhone UI Automation tests: a decent start

Adam Milligan
Tuesday, July 20, 2010

Apple’s inclusion of the UI Automation component in Instruments with iOS 4 is a definite step in the right direction. It’s the first reasonable way to write tests that externally exercise your actual app, rather than weirdly injecting test code into it. It’s also the only way to programmatically test lifecycle issues, such as how your app behaves when put in the background, when rotated, when the device locks, etc. Good stuff. Unfortunately, the current implementation of UI Automation also has some significant problems:

  1. There’s no way to run tests from the command line. The subtitle of the WWDC talk for UI Automation was “find bugs while you sleep;” unfortunately, you can’t find bugs while you sleep if you have to wake up to click the “Run” button.
  2. There’s no way to set up or reset state. The lack of fixtures which set up a known state at the beginning of iPhone tests has been a problem for unit testing (with OCUnit, Cedar, or what have you), particularly for apps that use CoreData. Now it’s worse than ever, because UI Automation manipulates the actual state of the app on the device, much like Selenium does in a browser. Sadly, UI Automation provides no method for reseting the device’s state, making it nigh impossible to prevent tests from affecting one another.
  3. Part of the previous problem is that UI Automation has no concept of discrete tests; it provides no form of organization for your test scripts. No test methods, no set up or tear down methods, just one big stream of consciousness line of execution. Obviously you can break this up into functions as you see fit, but why reinvent the wheel? Since the test script is JavaScript, I like the idea of using Jasmine for this.
  4. There’s no way to programmatically retrieve the results of the test run. You could debate the value of solving this issue at the moment, considering there’s no way to programmatically start the tests either. However, even if you were to write some clever AppleScript to kick off the tests automatically the only indication of the pass/fail status is in the Instruments UI, so you still have to wake up to check the results. I searched around a bit for information on deconstructing the protocol that UI Automation uses to talk to the device, but I came up empty.

I’ll definitely use UI Automation, particularly for app lifecycle testing. But, not being able to add those tests to a CI build definitely stings. I very much hope Apple keeps their momentum for automated testing and makes it more developer-friendly.

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

iPhone UI Automation tests with Jasmine

Adam Milligan
Sunday, July 18, 2010

Since the language of the new iPhone UI Automation component is JavaScript I figured the easiest way to organize tests is to use a JavaScript testing framework, such as Jasmine. So, I created jasmine-iphone, which is little more than a few simple scripts to make UI Automation and Jasmine play nice.

Once you clone jasmine-iphone from GitHub (it includes Jasmine as a submodule, so be sure to git submodule init && git submodule update) you can copy the example-suite.js file, import your spec files, point Instruments at your suite.js and go.

As an example, I set up a trivial example in the Cedar project. The directory structure looks like this:

Project Directory
- Spec
    - UIAutomation
        - jasmine-iphone     <--- submodule
            - jasmine        <--- nested submodule
        - suite.js
        - thing-spec.js
        - other-thing-spec.js

The suite.js file is relatively simple (note that I moved it up one directory from where the example-suite.js file is, so the #import statements are slightly different):

#import "jasmine-iphone/jasmine-uiautomation.js"
#import "jasmine-iphone/jasmine-uiautomation-reporter.js"

// Import your JS spec files here.
#import "thing-spec.js"
#import "other-thing-spec.js"

jasmine.getEnv().addReporter(new jasmine.UIAutomation.Reporter());
jasmine.getEnv().execute();

You can write the specs themselves the same way you’d write Jasmine specs for anything else. The UIAutomation subclass of the Jasmine Reporter takes care of marking the start of each spec, as well as reporting if it passes or fails. You’ll need to use the UIAutomation classes and methods for driving your application’s state, of course.

That’s it. Try it out and see what you think.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter

Windowed String Comparison for RSpec

Alex Chaffee
Friday, July 16, 2010

When two strings fail to match, if the difference is somewhere in the middle of the strings, it can be annoying/impossible to track down the
actual difference. I’ve written a little Comparison object that
overrides the failure message for .should == like this:

Strings differ at position 12:
expected: ..."efghijklmnopqrst"...
  actual: ..."efghijklXXopqrst"...

It shows a “prelude” of a few characters, then the difference, lined up on successive lines so they’re easy to visually scan. It also does the right thing (or tries to) if the difference is near the beginning or end of the string (i.e. does or doesn’t show ellipses).

http://gist.github.com/474363

For people who can’t wait for this to get incorporated into RSpec
proper, you can grab the code from github and require "comparison" in your spec_helper.rb and it’ll override the existing RSpec == matcher. Or wait for Issue 9 to be pulled into version 2.1 (maybe). Or if you want to use it in your favorite testing framework, the object is completely self-contained and should be easy to call from your own assert_equals or whatever.

One open question is whether the exception message should show the
full actual string as well as the comparison… On one hand, it adds
to screen clutter, but on the other hand, it can be important in
tracking down the problem, especially if the prelude is ambiguous.

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

New Tech Talk: Managing Application Ecosystems

Sean Beckett
Thursday, July 15, 2010

Daniel Lieberman of BitPusher says that ten years from now, much of what we think of as “operations” will be obsolete. The current trends in operations automation, reliability engineering and cloud computing will combine and mature into a nearly-commoditized blend of operations and infrastructure. Today, the practical impact of these trends is that there are new tools and service offerings which add more complexity to operations practices, but if used well allow operations teams to manage some aspects of their environments more holistically, and sometimes do a better job with fewer resources. This talk provides a snapshot of what operations practices look like during this period of transition.

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

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

oneforty Seeks Rails Developer in Cambridge, MA

Sean Beckett
Thursday, July 15, 2010

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.

oneforty, a Cambridge, MA company, is looking for a Rails Developer to join their team. The full job posting follows.

oneforty is looking for a talented and highly motivated Rails developer to join our funded startup.

We’re a small, ambitious team building a marketplace for Twitter applications. We’re looking for self-starters who get things done and are fired up about building a social web application. The position offers competitive salary with equity, benefits and an opportunity to join an early-stage startup to play a key role in growing an exciting business.

This position is to join a small development team (3 engineers & UX designer) to contribute to all aspects of developing our site. This will include helping define new functionality, coding the implementation, testing and creating metrics to define success.

This position is full-time and on-site in Central Square, Cambridge, MA (right above the Red Line stop on Mass Ave).

An ideal candidate is someone who:

  • is an excellent coder who is comfortable tackling open-ended problems.
  • has prior at least 2+ years of web development experience, having built & deployed apps in Rails with a strong understanding of the lifecycle of a web request (DNS, HTTP(S), cookies, etags, etc.). Prior experience with web performance at scale is a plus.
  • is a generalist and is knowledgeable (although not necessarily expert) with related backend technologies (Linux, MySQL, AWS), front-end technologies (HTML, CSS, Javascript/JQuery) in addition to web programming practices (TDD, git).
  • demonstrates love of continued learning (ex. hacking on NoSQL, building a node.js app, reading up on HTML5, etc.), and has contributed to open source or personal projects.
  • has a background in Computer Science.

Perks

  • Using Twitter is part of the job.
  • Loaded MacBookPro.
  • Stocked fridge.
  • Ping pong table.
  • Flexible hours. We prefer to work smart over long hours.
  • Laid back culture.

If this is you

Please visit http://bit.ly/oneforty-rails-developer to send us your resume and links to your Github account, blog, projects you’ve built, your Twitter handle or anything else you’d like to share. We’d love to talk with you!

  • 0 Shares
  • Share on Facebook
  • Share on Twitter

Topics

  • agile (780)
  • rails (113)
  • testing (88)
  • ruby (83)
  • ruby on rails (70)
  • jobs (62)
  • javascript (55)
  • techtalk (44)
  • rspec (38)
  • ironblogger (32)
  • productivity (30)
  • activerecord (29)
  • gogaruco (29)
  • git (28)
  • nyc (27)
  • rubymine (26)
  • bloggerdome (23)
  • mobile (22)
  • process (21)
  • pivotal tracker (20)
  • cucumber (20)
  • jasmine (19)
  • design (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)
  • bdd (14)
  • gem (13)
  • css (13)
  • tdd (13)
  • selenium (12)
  • goruco (12)
  • bundler (12)
  • meetup (11)
  • railsconf (11)
  • nyc-standup (11)
  • capybara (10)
  • mac (10)
  • mojo (10)
  • chef (10)
  • api (10)
Subscribe to Community Feed
  1. ←
  2. 1
  3. 2
  4. 3
  5. 4
  6. →
  • 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 >