Glad You're Ready. Let's Get Started!

Let us know how we can contact you.

Thank you!

We'll respond shortly.

JavaScript Performance and Debugging for Web Apps

As browsers on mobile and desktop progress, JavaScript on the client side has continuously become more robust and is powering a wide array of increasingly advanced applications. JavaScript applications are becoming larger and moving to mobile; both situations warrant a more serious look at performance than JavaScript implementations of the past.

Read more »

Making life easier after your organization requires two-step authentication

My normal workflow at home used to be that I would use one session of Chrome for normal internet browsing with my personal accounts, and I would simultaneously use an incognito session for work email and other work-related accounts.  However, since Pivotal Labs is now requiring two-step authentication for our Google Accounts, this would mean that every time I open an incognito window to check my work email from home, I would have to wait for a text message on my phone and enter the code.

Read more »

Chrome 22.0.1229.79 Rendering Bug

The latest update for Google Chrome for OSX has a rendering issue where web pages render once upon load and never again. The bug completely prevents the user from properly interacting with a website because it won’t re-render a page after it loads. 

Read more »

Make Jasmine run at (near) full-speed in a background tab

Jasmine environments have a default updateInterval value of 250 that determines how often, in milliseconds, execution of the next spec will be deferred so that the screen can be updated.

    var now = new Date().getTime();
    if (self.env.updateInterval && now - self.env.lastUpdate > self.env.updateInterval) {
      self.env.lastUpdate = now;
      self.env.setTimeout(function() {
      }, 0);
    } else {
      if (jasmine.Queue.LOOP_DONT_RECURSE && completedSynchronously) {
        goAgain = true;
      } else {

Both Chrome and Firefox now require a minimum value of one second for setTimeout in a background tab. This basically means that for every 250ms of work that we do, we end up sleeping for 1000ms.

This gist shows one way to tell Jasmine to not even bother trying to update the screen when running in the background.

var foregroundScreenRefreshRate = 1500;
var backgroundScreenRefreshRate = 9000;

jasmine.getEnv().updateInterval = foregroundScreenRefreshRate;

$(window).focus(function() {
    jasmine.getEnv().updateInterval = foregroundScreenRefreshRate;

$(window).blur(function() {
    jasmine.getEnv().updateInterval = backgroundScreenRefreshRate;

(Please refer to the gist for the most up-to-date code.)

This code makes Jasmine run at full-speed in a background tab in Chrome, but continue to be updated about once every 2.5 seconds when in a foreground tab. However, using this as-is in Firefox will result in a warning about an unresponsive script, if the tab is inactive. Luckily, you can continue to run Firefox in the foreground fine with this script (good for CI perhaps), or you can just override the dom.max_script_run_time variable to never get that warning, or you can set updateInterval to something less than the default 10 second max script run time.

Chrome and Firefox throttle setTimeout/setInterval in inactive tabs

Do your Jasmine tests (or anything else) seem to lock up when they aren't the active tab in your browser?

Unfortunately, your new and modern browser is to blame. There are a few workarounds, but none of them are ideal in my opinion.

Standup 4/1/2010: “update_attribute is almost never the right thing to use”

Ask for Help

"mp4s do not play during download in chrome"

Talks at Pivotal are recorded and published in various formats. Our talks page has an embedded viewer so that people can watch the video without downloading. We also offer a downloadable version in mp4. Most browsers will play the video as it is downloading. Google Chrome does not. Are we doing something wrong?

Pivotal Talks

Interesting Things

  • Beware: has_many associated objects are saved before has_one associated objects.

  • update_attribute of foreign_key value on belongs_to association does not save...when object was created by factory girl?

This is pretty specific, but perhaps not enough to be useful. The team tried to do an update_attribute on an object generated by factory girl, changing the belongs_to column value. However, no database update would occur. They later resolved this by doing a reload on the object before the update_attribute.

"Update_attribute is almost never the right thing to do" --anon