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 2012

Joseph Palermo

06/25/12: capybara-webkit on Centos?

Joseph Palermo
Monday, June 25, 2012

Helps

  • capybara-webkit and Centos

Capybara webkit works with one app using lobot with a trivial spec. With another app, it fails with a Errno::EPIPE: Broken pipe every time. It seems this error message means “something went wrong” which isn’t particularly helpful. We’re wondering if anyone else is using capybara webkit on centos with success?

Some talk of font differences and CSS selectors was mentioned.

Interestings

  • filepicker.io

The guys from filepicker dropped by the SFDevOps hack day on Sunday, and it looks like it could be an interesting way to handle file uploads. They have various integrations, and your user can chose to “upload” a file from dropbox/box/facbook and gives you back a url for your app to grab it from. Haven’t tried it, but it seems like it could be a quick win.

Events

  • eXtreme Tuesday Club

We meet each Tuesday to discuss TDD, XP and architecture over pizza and Tuesday lunch’s leftovers.

See the meetup.com page for more information.

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

[Standup][NY] Threadsafe default in Rails 4.0

Matthew Parker
Monday, June 25, 2012

Helps

custom time components in rails 3.0.*

Overridden method from AR::Base so that we can use parameterized date/times, but not the typical fields used by Rails date/time pickers.

However, in the error state, the original value is lost. Typically Rails uses <attr>_before_type_cast to get the error data, however, it doesn’t work in this case.

Help!

Interestings

Vim-Clutch

I’m sure we are all tired of pressing ‘i’ and escape to enter and exit insert mode in vim ; vim-clutch lets us pretend we are using a sewing machine and use our feet. Pressing the clutch sends an ‘i’ signal, and releasing it sends an escape.

https://github.com/alevchuk/vim-clutch

Threadsafe is on by default in the next Rails

  • 0 Shares
  • Share on Facebook
  • Share on Twitter

Big Data

Wednesday, June 20, 2012

A talk by Jacob Maine about collecting, analyzing and presenting very large amounts of data.  Introduces the problems of big data, mentions some of the relevant technologies and gives a bit of advice about designing solutions.

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

Hey there Qt

Will Read
Wednesday, June 20, 2012

Interestings

  • Keep your Qt up-to-date

Qt, the cross-platform system that Capybara-Webkit & PhantomJS use, does not get updated when you update the capybara-webkit gem.

So make sure you keep Qt up-to-date on your dev boxes and CI, and keep dev/CI in sync, for best performance and least pain.

E.g.,

$ brew install qt
$ gem uninstall capybara-webkit
$ bundle

Events

  • SF Pair eXchange 6:15pm
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Will Read

Bored? Add Cats

Will Read
Tuesday, June 19, 2012

Interestings

  • –format NyanCatFormatter

Yes, someone actually wrote a [http://mattsears.com/articles/2011/11/16/nyan-cat-rspec-formatter] NyanCatFormatter

Events

  • Wednesday after-work drinks
  • Write code AND drink

Bringing back the Pair eXchange and we need pivots to help show off the value of pair programming. The Meetup is full but any pivots who appear on the waiting list will get approved.

http://www.meetup.com/pivotal-labs-sf/events/67463192/

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

Meetups Galore

Will Read
Monday, June 18, 2012

Interestings

  • jRuby OpenSSL behavior different than MRI

Our project was having trouble converting from MRI 1.9.3 to JRuby. We’re using OpenSSL to decrypt a string, which worked fine in MRI. However in JRuby the same code raised the error ” OpenSSL::Cipher::CipherError:
Given final block not properly padded”.

We discovered that OpenSSL on jRuby is stricter and you must set an initialization vector, e.g. cipher.iv = “” * 16

Events

  • SF DevOps Hackday

Join us for a sunday afternoon of devops talk and hacking. June 24th at the Pivotal Labs office.

  • eXtreme Tuesday Club

XTC-SF is a new meetup held at Pivotal SF at 7pm, from Tuesday 19th June.

Inspired by the London group of the same name, topics include XP, TDD, mocking etc.

The first proposed topic is “How do we teach people to refactor to an architecture, or value an architecture at all?”

Informal discussion, pizza, beverages. All welcome.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Steve Ellis

Tuesday Brown Bag: @ykatz

Steve Ellis
Monday, June 18, 2012

Events

  • Tuesday Brown Bag: Yehuda

Yehuda Katz will be giving a brown bag on Tuesday at 12:30.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Mark Rushakoff

A Great Example of Vendor-Library Abstraction in ActiveSupport

Mark Rushakoff
Monday, June 18, 2012

Depending on what you’re working on, you may have been bitten at least once by a heavy dependency on a third-party library.
This happens when you become very dependent on the API of someone else’s library, and suddenly you can no longer use that library or its API.

When this is a possibility, the defensive approach to this problem is to write your own API to wrap that API, so that if you need to drop that vendor library, you only have to reimplement the way your wrapper works.

You might think that you only need to worry about this in large, complicated APIs, but it can be worthwhile to do even for a simple API.

ActiveSupport::JSON uses MultiJSON behind the scenes.
Even though ActiveSupport::JSON has really only two publicly available “normal-use” methods (encode and decode which transform Ruby hashes back and forth with JSON objects), the Rails developers were wise enough to even wrap the specific error class that MultiJSON raises, as ActiveSupport::JSON.parse_error.

# File activesupport/lib/active_support/json/decoding.rb, line 50
def parse_error
  MultiJson::DecodeError
end

This way, you can write something like

begin
  obj = ActiveSupport::JSON.decode(some_string)
rescue ActiveSupport::JSON.parse_error
  Rails.logger.warn("Attempted to decode invalid JSON: #{some_string}")
end

And then if/when Rails switches from MultiJSON, you won’t have to change anything in your code to deal with exception handling around JSON.

(PS.
I wrote the documentation for that method recently, so that’s why I had to link to the Edge Guides.
If you haven’t seen it, check out my article on how easy it is to contribute to the Rails documentation.)

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Ash Hogan

Birchbox is looking for experienced RoR Engineers

Ash Hogan
Saturday, June 16, 2012

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.

Below is the job description for experienced Ruby on Rails engineers with Birchbox. Birchbox is a smart, streamlined, and fun way to discover high-end beauty, grooming, and lifestyle products. Every month Birchbox members will receive a curated box of luxe beauty samples, spanning beauty categories and delivering exciting products that fit into both your day-to-day routine, and into those days when you want to turn up the drama a notch.

Birchbox is hiring – here’s why you want to work there:

Description:

Birchbox is looking for experienced full-stack software engineers with experience working in Ruby on Rails. You are obsessed with delivering the best possible customer experience, value software engineering practices such as testing, and never forget about scalability and reusability when designing your code.

Responsibilities:

You will have the opportunity to work with our team on all aspects of our technical infrastructure including:

  • developing scalable backend services in key focus areas such as logistics, payments, and inventory management
  • building our internal and developer APIs
  • developing new user facing features for our incredibly engaged customer base
  • working with our data science team to develop an infrastructure for personalization
  • working with the entire tech team to provide a consistent, fast, and delightful, experience to our customers and partners

Requirements:

  • 1+ years experience in the RoR eco-system
    experience with relational databases
  • you value testing and have experience with the associated tools/frameworks e.g., RSpec, Cucumber, Selenium
  • you have a solid grounding in computer science, you understand the efficiency of the code you write in terms of time and space, and you put thought into your choice of algorithms, data structures, and db schemas
  • enthusiasm for learning

Pluses:

  • Java or C/C++ experience
  • Bachelors, Masters or PhD in Computer Science
  • Startup experience
  • Experience relevant to Ecommerce

Tech @ Birchbox:

The tech team at Birchbox is responsible for maintaining and improving the company’s customer-facing site birchbox.com, managing hosted and cloud infrastructure, and closely supporting other teams (logistics, marketing, et al.) in our 60+-person company. We work with a wide variety of open-source technologies: Debian-based servers; Chef deployments; Ruby on Rails and Java services; Python scripts; and even PHP and Perl, God forbid. The size of our team and the breadth of its responsibilities means we rely on our engineers to be self-motivated and quickly follow through on tasks without requiring close supervision. In return our engineers are given leeway to use their own initiative.

Why it’s great to work at Birchbox:

  • The chance to build a fresh infrastructure to express better solutions to old and new problems.
  • The opportunity to work on conceiving, designing and building a next-generation ecommerce experience.
  • The uncommon chance to be at the start of something huge. We have only made a small dent in what we’re planning to do and we are growing quickly
  • We think Cake, Chocolate, Espresso and Indian Cuisine are food groups. Which is part of the reason why we also believe in working out in the office. Push-ups anyone?
  • Free grooming/beauty products and advice on exfoliation (you may not want it, but you’ll find out why you need it!).

How to apply:

Click here to apply. No third party recruiters please!

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Brian Cunnie

Headless && Head OK

Brian Cunnie
Friday, June 15, 2012

Helps

  • asset pipeline testing with RSpec render_views

I’m trying to test the asset pipeline configuration in our project. I’ve tweaked our test environment to it won’t automatically compile assets;

environments/test.rb:
…
if ENV['ASSET_PIPELINE']
config.assets.compile = false
else
config.assets.compile = true
end
…

alas in controller specs that have render_views, breaks:

ActionView::Template::Error:
controllers/application.js isn’t precompiled.

(which is not true)

in most cases I can remove render_views, but that’s not ideal.

–

To fix it, make sure digest is true.

  • capybara-webkit + headless + lobot CI => Locking assertion failure

Tried sloppy locking and downgrading libx11 to 1.0.3, but no success.

Probably a Qt error, make sure Qt is 4.8.1 or 4.8.2 or try recompiling Qt or dependencies.

Interestings

  • rake db:test:prepare with spork

We got frustrated having to shut down spork every time we wanted to run a migration.

We dug in, and found that we needed to close the ActiveRecord::Base connections in the prefork block. ActiveRecord automatically reestablishes the connection post fork.

We opened a pull request on spork-rails with the fix:

https://github.com/sporkrb/spork-rails/pull/9

  • javascript:

Chrome and other browsers are now stripping out ‘javascript:’ from the beginning of urls that are pasted into the addressbar. This is not a problem with links that start with ‘javascript:’

  • Head OK, empty body, JQuery == bad mixture

“Head OK” with an empty body returns a single space & confuses JQuery because a single-space string is invalid JSON. A work-around is to set the content-type to NOT be application/json. Or render :text => ” or render :json => {}

  • 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. 5
  7. →
  • 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 >