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

Pivotal Labs

Great Erector intro

Pivotal Labs
Monday, June 15, 2009

by Russell Edens. He has a great take on why Erector is interesting, complete with code examples:

With erector [views] are first class plain old ruby objects. Why is this good? It gives you all the tools of inheritance and mixin’s for your views. That is cool. Especially for an application with multiple views of the same underlying models. You can refactor your views into base classes that derive and render the same data in different ways. This is object oriented design for views. Nice.

I’ve seen object oriented view code in other languages and it leads to some very powerful re-use that all OO programmers can understand. The most ambitious of these attemps was by an HR company …[that] created their own markup language that was object oriented. The nature of HR data is that it has very complicated rules regarding who can see what data and when. The OO design of the language allowed that to be abstracted to the base classes and a functional programmer simply focused on the problem at hand. They took it further, as all commercial enterprise applications do, and they allowed the customer to define new models and views. Those views were very easy to write with this advanced data access logic abstracted out. Their customers loved it. They wrote very advanced business applications on top of this abstraction.

Views as simple classes, methods, and objects in Ruby – perfect!

Erector Hello World:

class Hello < Erector::Widget
  def content
    html do
      head do
        title "Hello"
      end
      body do
        text "Hello, "
        b "world!"
      end
    end
  end
end

For more see the Erector user guide.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Parker Thompson

Need a Job? Come Work With Pivotal Clients

Parker Thompson
Thursday, June 11, 2009

At Pivotal Labs, one of the services we provide is bootstrapping startups, including helping them interview and hire. We currently have clients looking for skilled engineers to build their development teams. This is an excellent opportunity to learn Extreme Programming by working side-by-side with Pivotal’s talented and experienced developers while at the same time getting in on the ground floor of a small and dynamic product team.

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. General technical requirements include serious web development experience, and a significant subset of Ruby, Rails, CSS, JavaScript, or MySQL.

Here’s a short description of Oneforty, Honk and Mavenlink, Pivotal Labs clients currently looking for developers. Their full job postings follow at the end of this post.

oneforty is a Twitter ecosystem/API venture with considerable traction. oneforty comes with all the excitement and opportunity of a Techstars startup backed by talented and successful investors/advisers who have built some of the best known companies on the web. The founder authored Twitter for Dummies and does tons of press and public speaking and the investors and advisors include Guy Kawasaki, Laura Rippy, Jeff Bennett and many others. oneforty has closed their angel round and is looking for RoR developers fired up about building something that will be highly visible and well-promoted.

Mavenlink is a funded startup that is changing the way people find experts who can help them and is providing the necessary tools to get their work done online. We are founded on the principle that virtually everybody needs qualified professional services that are readily accessible, affordable, and there when they need them. We’ve been working with Pivotal Labs to get our product launched, so we’re serious about being agile and we’ve got the right engineering process in place. This is a unique opportunity to join the Mavenlink team and contribute significantly to the direction of the company. We’re looking for someone who is not only passionate about development, but also shares our vision for the tools and capabilities necessary for making remote work better than working in person for both the client and the maven.

Honk.com is a new online automotive website that will make car shopping fun and social. We will enable consumers to experience a new way to explore new cars. We have partnered with a top social website to deliver this new way of car shopping and are funded by one of the largest media companies in the world. Our small team is made up of an experienced group of humble, efficient, and hyper-passionate individuals who are veterans of the automotive industry and social media space. We are proud of our ego-less culture, one that promotes team thinking, not individual accolades. If you’re interested in helping prove that social media and car buying go hand in hand, social networks serve a bigger purpose than keeping up with one’s day, and a small team can outdo the work of an army – then we may have a seat waiting for you.

If you are interested or for more information please contact each company directly. This is an exclusive service provided to our clients, no external companies or recruiters please.

Full job postings follow.

oneforty

oneforty is your opportunity to join highly motivated team to build a high profile, already funded startup and participate in TechStars Boston. Your RoR (and other) engineering skills, intelligence, passion and experience building consumer web startups is your ticket. You will meet amazing people, learn Pivotal Labs-style XP/agile development and build something great that other developers need. oneforty comes with all the excitement and opportunity of a Techstars startup backed by talented and successful investors/advisers who have built some of the best known companies on the web.

oneforty inc. is a Twitter ecosystem/API venture with considerable traction…
* founder authored Twitter for Dummies and does tons of press and public speaking
* selected to participate in the acclaimed TechStars program
* closed our angel round
* starting with the best in the business — Pivotal Labs
* investors and advisors that include Guy Kawasaki, VCs, Laura Rippy, Jeff Bennett and many others.

We’re looking to hire YOU, if…

  • You have a proven track record working in a fast paced start up that created and managed a highly scalable web platform
  • You want to build a thriving community and serve other developers
  • You get things done and are fired up about building something that will be highly visible and well-promoted
  • You understand the range of related technologies well enough to identify the right tools for the job AND to roll up your sleeves and code well
  • You have the vision and drive to direct technology decisions and the technical team

Show us your stuff! Tell us what you’ve built and what really gets you fired up.

You will meet and work with name brands in the tech industry. You will build tools and systems that hook up other developers. Your work will provide them with a place to get rewarded by their users and make their stuff shine. Longer-term you could get to build serious tools that serve developers in many API communities.

If this is you, find more details and an online application here or contact laura@oneforty.com. Let us know what you’ve built and how you keep projects organized, well managed and iterating swiftly. Please send us your links: blog, projects, Twitter ID, social media profiles, resume, or anything else you’d like to share.

Mavenlink

Mavenlink is a funded startup that is changing the way people find experts who can help them and is providing the necessary tools to get their work done online. We are founded on the principle that virtually everybody needs qualified professional services that are readily accessible, affordable, and there when they need them.

We are looking for a Ruby on Rails developer to join our team. We’ve been working with Pivotal Labs to get our product launched, so we’re serious about being agile and we’ve got the right engineering process in place. This is a unique opportunity to join the Mavenlink team and contribute significantly to the direction of the company. We’re looking for someone who is not only passionate about development, but also shares our vision for the tools and capabilities necessary for making remote work better than working in person for both the client and the maven.

Job Description:

  • Developing Mavenlink’s Ruby on Rails application
  • Test Driven Development
  • Pair Programming
  • Aggressive Refactoring
  • Using Pivotal Tracker to estimate and knock down stories
  • Participating in stand-ups and retrospectives to improve

Mavenlink’s product, process, and culture

Additional Skills desired:

  • HTML/CSS
  • Javascript & jQuery experience
  • Experience with rSpec, Webrat, and other testing frameworks
  • Rails application deployment experience
  • SQL

Compensation and benefits:

  • Competitive salary
  • Equity stake
  • Full medical and dental

Interested? Send your resume to jobs@mavenlink.com

Honk

Honk.com is a new online automotive website that will make car shopping fun and social. We will enable consumers to experience a new way to explore new cars, focusing on what other real people actually think, not product specifications or biased editorial. Our site will be 100% consumer driven with no journalists or former race car drivers telling you what minivan or sedan you should purchase. Instead, users will find real people like yourself sharing their opinions and experiences. We have partnered with a top social website to deliver this new way of car shopping and are funded by one of the largest media companies in the world. Thankfully, our partners allow (and encourage) us to remain financially independent, unpolitical, and fast-moving… a true start up.

Our small team is made up of an experienced group of humble, efficient, and hyper-passionate individuals who are veterans of the automotive industry and social media space. We are proud of our ego-less culture, one that promotes team thinking, not individual accolades. If you’re interested in helping prove that social media and car buying go hand in hand, social networks serve a bigger purpose than keeping up with one’s day, and a small team can outdo the work of an army – then we may have a seat waiting for you.

Honk is developing a platform of distributed applications and a destination website that will engage consumers’ existing social networks. To be clear, we are not building yet another community or social network. Many of our social applications will reside on our partners’ sites with the intent to drive users to honk.com for a richer experience, including unique content, interaction, and transaction-oriented tools. Our integration with our core partner is currently underway and our beta launch is scheduled for 5/27. We will continue to expand our product over the next twelve months. In addition to deep knowledge of Ruby on Rails and Agile / Test-Driven Development precepts, we hope you have a thorough understanding / are comfortable with:

  • Amazon S3/SQS/EC2
  • CSS/Javascript/JQuery
  • Thin/NGinx/Mongrel
  • RSpec/Webrat/Selenium
  • CSV and XML data feed integration

Previous experience working in online automotive or social media is desired, but definitely not required. Honk is currently co-located in San Francisco and Los Angeles. Honk headquarters is currently located in West Los Angeles, right on the border of Santa Monica. Our ideal candidates should reside in one of these two major metro areas, although we are open to “off site” developers who have the right skills and background.

Please send inquiries to Bruce Krysiak, CTO: techjobs@honk.simplicant.com

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

Sanitizing POST params with custom Rack middleware

Pivotal Labs
Thursday, June 11, 2009

The problem: Improperly escaped post data

I recently worked on an app that processed xml files. Once a week, a legacy system posted a large xml document to the app. For almost a year the app worked perfectly, and then we updated to rails 2.3.2 and the posts started failing spectacularly. Looking at the log files, I noticed that the params were incorrect:

<code>{"message"=>"hello", "xml"=>"<xml>Foo &amp", "Bar</xml>"=>nil, "action"=>"not_scrubbed", "controller"=>"examples"}</code>

After looking into it further, I realized that the data that was being posted contained semi-colons:

<code>xml=<xml>Foo %26amp; Bar</xml>&message=hello</code>

It turns out that rails used to only split params on ampersands, but that rack splits on both ampersands and semi-colons. We couldn’t change the legacy system, so we had to remove the semi-colons before the post params got to rails.

The solution: Rack middleware

Using Rack middleware it’s was easy to insert code before rails params parsing code executed. To start, build a class that conforms to the signature of a rack middleware layer, like so:

<code>
# lib/scrubber.rb
class Scrubber
  def initialize(app, options)
    @app = app
    @routes = options[:routes]
  end

  def call(env)
    scrub(env)
    @app.call(env)
  end

  private
    def scrub(env)
      return unless @routes.include?(env["PATH_INFO"])
      rack_input = env["rack.input"].read
      params = Rack::Utils.parse_query(rack_input, "&")
      params["xml"] = Rack::Utils.unescape(params["xml"])
      env["rack.input"] = StringIO.new(Rack::Utils.build_query(params))
    rescue
    ensure
      env["rack.input"].rewind
    end
end
</code>

Then register the middleware from environment.rb:

<code>
  config.middleware.insert_before ActionController::ParamsParser,
                                  "Scrubber",
                                  :routes => [ "/examples/scrubbed" ]
</code>

To verify that this works, use curl to send the request, like so:

<code>curl -d 'xml=<xml>Foo %26amp; Bar</xml>&message=hello' http://localhost:3000/examples/scrubbed</code>

I’ve put together a sample app on github that gives a working example of the code above which you can find at http://github.com/zilkey/params-scrubber/tree/master.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Colin Shield

Standup 6/9/2009 Spring Cleaning. rspec should == useless

Colin Shield
Tuesday, June 9, 2009

Ask for help

Using Rspec 1.2.6 and an expression of some desired behavior such as this:

it "should score 0" do
  score = 0
  score.should == 0
end

Will sometimes result in a ruby warning:

warning: useless use of == in void context

There was a little confusion as to why this warning was sometimes appearing.
It turns out that the warning appears when the command ruby -w is used to run the spec rather than spec.
This seems to be the case when rake is run for a non rails project, say a plugin.

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

Standup blog

Pivotal Labs
Sunday, June 7, 2009

A couple more items from last week:

  • Help: acts_as_soft_deletable doesn’t seem to work with STI. The plugin has been out for a while and it’s surprising that nobody has had a problem with this before now.

  • Q: What’s a good way to bulk insert a bunch of joined-up models? A: insert into a view. MySQL has updatable views now. This is also a great trick to use in Oracle.

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

Announcing Tweed for the Palm Pre and Palm webOS

Christian Sepulveda
Saturday, June 6, 2009

We are happy to announce Tweed, a twitter client for the Palm® Pre™ and Palm webOS™

Check out http://tweed.pivotallabs.com for info, screenshots and a video.

Follow us on Twitter @tweed

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

Welcome Palm Pre and Palm webOS

Christian Sepulveda
Saturday, June 6, 2009

Today’s the big day: the Palm® Pre™ has launched.

We’ve been happy to be partner with Palm and we’ve been working very hard towards this day.

We are happy to have several applications in the App Catalog:

  • AP Mobile
  • mobile by Citysearch
  • LikeMe
  • and our own Tweed, a Twitter client

When the Mojo™ SDK is publicly available, we will be releasing various open-source tools to aid development:

  • Jasmine: BDD testing framework
  • Pockets: various libraries and utilities for Palm webOS development
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Pivotal Labs

Standup blog

Pivotal Labs
Friday, June 5, 2009
  • There was a problem uploading files to s3 through Paperclip with # characters in the name (s3 doesn’t like # characters). There’s a fix on Paperclip trunk, but that hasn’t been packaged into a gem. Perhaps the Paperclip people could be convinced to cut a release?

  • One team is seeing files on s3 disappear occasionally. They’re using v2 of the s3 api, where the s3 gem uses v1. The team has now turned on s3 logging (which is off by default) – which they recommend everyone turn on as a general good practice.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter

git config push.default matching

Alex Chaffee
Thursday, June 4, 2009

Upgraded to git 1.6.3 yet? You should, and Jason Rudolph says why (and if you’re on a Mac, Rob Sanheim says how.)

Sadly, after you do upgrade, when you start doing “git push”, your console will start to be littered with the following oddly patronizing message:

warning: You did not specify any refspecs to push, and the current remote
warning: has not configured any push refspecs. The default action in this
warning: case is to push all matching refspecs, that is, all branches
warning: that exist both locally and remotely will be updated.  This may
warning: not necessarily be what you want to happen.
warning:
warning: You can specify what action you want to take in this case, and
warning: avoid seeing this message again, by configuring 'push.default' to:
warning:   'nothing'  : Do not push anything
warning:   'matching' : Push all matching branches (default)
warning:   'tracking' : Push the current branch to whatever it is tracking
warning:   'current'  : Push the current branch

While I’m generally in favor of verbose warnings, this one is kind of bizarre. Essentially, it’s saying, “Warning! The command you just ran will continue to operate exactly as it did before!” Guys, telling us about new options is great but that’s what release notes are for.

Worse, they don’t provide keystroke-level instruction beyond the offhand gerund “configuring” on how to shush it. Here’s the result of my 8-minute speluking inside the output of “git help config”:

git config push.default matching

[Or, thanks to Alastair Brunton below

git config --global push.default matching

]

There, now, that wasn’t so hard after all, was it?

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

Press Reaction to the Palm Pre

Pivotal Labs
Thursday, June 4, 2009

As we’ve been working on applications for the Palm Pre, lots of people have been asking us a lot of questions, most of which we couldn’t really answer yet.

One of the big areas people asked about was what the phone was like. And we just weren’t allowed to say that much to date. But with the launch only two days away, the press has been given a look at the phone, and the response has been overwhelming. And I’m not talking about the Palm trade press, but folks who have been pretty hard to impress, including some big fans of Apple products for years, people like David Pogue, and Walter Mossberg.

So I thought I’d share with you some of the recent articles:

  • David Pogue, in the New York Times:
    Palm Pre, Elegant Contender
  • Walt Mossberg, in the Wall Street Journal:
    Palm’s New Pre Takes On iPhone
  • Peter Svensson, The Associated Press
    Review: Dazzling Palm software beats the iPhone
  • Engadget’s Joshua Toplosky:
    Palm Pre Review

We’re excited to see such leading journalists in the tech space share our enthusiasm for this great new platform. We’re ready to build more great apps for the platform, too, so if you’re interested in how we can help, give us a shout.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter

Topics

  • agile (781)
  • 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 (21)
  • cucumber (20)
  • design (19)
  • jasmine (19)
  • ios (18)
  • webos (17)
  • objective-c (17)
  • android (16)
  • tracker ecosystem (16)
  • palm (16)
  • "soft" ware (16)
  • fun (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 >