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

Christian Sepulveda

Palm Pre and webOS

Christian Sepulveda
Friday, February 6, 2009

Palm shook up the mobile world at CES 2009 when they announced the Palm® Prē™ and webOS™. And while webOS™ defines new possibilities for the mobile experience, it is the possibilities for the developer that sold us and led us to pursue a partnership with Palm.

You can create a great application with many platforms, but it can be far from easy for the developer; at times I swear I hear circus music as I jump through an endless array of hoops, in an effort to build my application.

The Mojo Application Framework is built for the developer, just as a BMW is built for the driver. (Not that the passengers get a bad deal either.) Most mobile platforms frustrate me as they seem like the state of the art in desktop development circa the 1990′s. With Mojo, the development experience is more like using Rails or Django and less like using C++.

Pivotal plans to bring our practices to developing with the Mojo framework, such as Continuous Integration, and Test/Behavior Driven Development. Expect to see a variety of open source tools from us to support these efforts.

Gizmodo’s Brian Lam recently wrote, “Palm dropped their new smartphone and their new operating system on us, and it is maybe the most interesting phone I have seen this decade.”[1] Though the Palm Pre definitely evokes intense gadget lust, webOS and the Mojo Application Framework combine as one of the most interesting development platforms that I have seen in some time.


[1] http://i.gizmodo.com/5127040/catching-up-dear-ces-diary-day-one

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
David Stevenson

Standup for 2/5/2009: Looking for processes with pgrep & pkill

David Stevenson
Thursday, February 5, 2009

Interesting Things

  • pgrep is a sweet tool for finding processes. You can find all your mongrels, for example, without having the problems of running ps aux | grep ruby. It’s in the proctools package on most linux/unix operating systems. For example, on osx use sudo port install proctools
  • kill -482 kills all processes in the group 482. This is great for killing all the children of a daemon like mysql or backgroundrb. ps shows the process group id next to the process id.
  • monit doesn’t have great support for figuring out what happens when a start/stop command runs. It can fail silently, for example. One (bad) way of debugging this is to add echo to dump debugging info to a temporary file before and after these commands. Rumor has it that god doesn’t have these problems…
  • we’ve heard a rumor that Marshal.dump(object) uses a temporary file on disk! This would be slower than it needed to be. Perhaps this is to deal with dumping objects to large to fit in RAM?
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
David Stevenson

Standup for 2/3/2009: SOLR & rails fails with IPv6

David Stevenson
Wednesday, February 4, 2009

Interesting things

  • When we used localhost in our solr.yml configuration, we couldn’t run tests on our OSX 10.5.6 machines. Commenting out the IPv6 localhost entries in /etc/hosts fixed the problem. The better solution would probably be to use 127.0.0.1 in SOLR configuration.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
David Stevenson

Standup for 2/3/2009: Enemerable#sum vs ActiveRecord#sum

David Stevenson
Tuesday, February 3, 2009

Interesting Things

  • When you call user.purchases.sum(), you are invoking ActiveRecord::ClassMethods#sum rather than Enumerable#sum. If you want to invoke Enumerable#sum (which takes a block and is more powerful though less performant), you’d have to call user.purchases.target.sum() {|p| p.price * p.quantity}.
  • NewRelic sometimes makes our app servers malfunction. Several of us reported having these sorts of problems on different projects. It’s always fixed by the NewRelic team with a new version or a configuration change, but we wish that we felt safer about our production server stability. Some projects feel that the value is certainly worth it, and Engineyard uses NewRelic data when discussing scaling, so it’s worth hanging in there.

Ask for Help

  • What’s the deal with using the OSX terminal and bash/readline messing with the terminal? We’re always typing some ridiculously long command and bash starts writing over itself. Especially when we use Ctrl+A and Ctrl+R and edit the line. Anyone know how we can stop/fix this once it happeneds?
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Pivotal Labs

Pivotal Tracker write-up on Rail Spikes

Pivotal Labs
Monday, February 2, 2009

Jon Dahl has a great write-up on Rail Spikes comparing Pivotal Tracker to just about every bug tracking application out there.

http://railspikes.com/2009/2/2/pivotal-tracker-bug-trackers

He hasn’t had a chance to try it out on longer projects yet, but we use it everyday on projects (like tracker itself) that have been years in development and refinement.

Thanks, Jon, for the thoughtful exploration of the product!

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
David Stevenson

Standup 2/2/2009: Rails 2.3 is gonna be sweet

David Stevenson
Monday, February 2, 2009

Interesting Things

  • Neat Plugin: Caio Chassot suggested a patch to rails that makes rails template finder traverse the controller inheritance chain when looking for templates. This would make the view system work “correctly” with inheritance, which one of our projects needed. The patch wasn’t applied, but the code was released as a plugin called inheritable_templates,
    which we are now using and enjoying.
  • What’s the opposite of {:a => 1, :b => 2}.to_a? It’s Hash[:a, 1, :b, 2].
  • Rails 2.3 is going to be awesome! We’re most looking forward to
    • Nested model assignment and views
    • Nested transactions, even on MySQL!
    • Default Scopes, no more adding :order => "position" on every acts_as_list model
    • Smarter rendering of partials
    • Rack support
    • Bringing of Engines back. Pivotal is still going to support Desert at this time. Desert is similar to engines, but loads every class that matches in the load path, not just the first one. This allows you to build plugins that extend previous plugins. Using engines, however, we are hoping to make the source code for desert even more trivial.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Pivotal Labs

Best Buy Remix PHP library available

Pivotal Labs
Sunday, February 1, 2009

It’s getting hard to keep up with all the Remix activity.

Matt Williams has put together a PHP library for Remix.

Code sample:

require_once 'BestBuy/Service/Remix.php';

$apiKey = '12345678'; // Your API key
$remix  = new BestBuy_Service_Remix($apiKey);

// Retrieve a list of stores within 10 miles of a zip code
$result = $remix->stores(array('area(10006,10)'))->query();

// Result objects may be implicitly cast as strings
echo $result;

// Retrieve a list of Movies containing the text "Bat"
$result = $remix->products(array('name=bat*','type=Movie'))->query();

if(!$result->isError())
{
    echo $result;
}
else if(403 != $result->http_code)
{
    // API errors result in an error document with detailed info
    echo current($result->toSimpleXml()->xpath('/error/message'));
}
else
{
    // 403 errors do not contain a full error document, only an h1 message
    echo $result->data;
}

// Retrieve fields from a list of Movies starting with "Bat" in JSON format
$result = $remix->products(array('type=Movie', 'name=bat*'))
            ->show(array('name','regularPrice','url', 'sku'))
            ->format('json')
            ->query();

echo $result;

// Check for store availability of a Playstation 3 in a given area
$result = $remix->stores(array('area(10006,10)'))
            ->products(array('sku=8982988'))
            ->sort('distance')
            ->query();

echo $result;
  • 0 Shares
  • Share on Facebook
  • Share on Twitter

Topics

  • agile (778)
  • rails (113)
  • testing (87)
  • ruby (83)
  • ruby on rails (70)
  • jobs (62)
  • javascript (54)
  • techtalk (44)
  • rspec (38)
  • activerecord (29)
  • productivity (29)
  • gogaruco (29)
  • ironblogger (29)
  • git (28)
  • nyc (27)
  • rubymine (25)
  • bloggerdome (22)
  • mobile (22)
  • cucumber (20)
  • process (19)
  • pivotal tracker (19)
  • 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)
  • tdd (13)
  • selenium (12)
  • css (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
  • 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 >