You can find our new Cloud Foundry CLI, written in Go on github.A complete rewrite, and yes, we changed things
We hadn’t been happy with the Ruby CLI for a while. We had three big problems: it was hard … Read more
I had the pleasure of appearing on the Ruby Rogues podcast this week talking about how Pivotal Labs does Extreme Programing (XP). Accompanying me was ex-pivot Josh Susser, James Edward Gray, Avdi Grimm, and Charles Max Wood. I had more … Read more
I had really poor experiences with Cucumber. The annoyance with Cucumber comes nearly all from a case of indirection. If devs are writing the Cucumber tests and then writing all the regular expressions to implement the steps, then you often … Read more
We’re growing. You may have heard that we were acquired in 2012. You might also have heard that we’ve been spun out again as a core part of a new company that shares part of our name. From when I … Read more
This is yet another post where the tl;dr is “SHIP IT!” but with a Pivotal perspective. It can be easy to hold back an initial launch, especially when you’re trying to attract customers, not offend them. I submit that with … Read more
Over my four year tenure at Pivotal Labs I’ve heard it a lot: “You guys really drink the Kool-Aid around here, don’t you?” and I’d shake it off with a joke, “Yeah, you can grab anything from the fridge you … Read more
One of our directors shared this article with the managers here at Pivotal Labs about having a personal retrospective. It immediately sparked a healthy debate, and I latched on to the idea because I think it fills a very real hole in getting feedback. We do great at gathering, weighting, and aggregating feedback from a pivot's peers and delivering that in a constructive way. However, we don't have a great way to get direct feedback on a level above the day-to-day pairing feedback. To see if it would be useful at our company, we needed to try it out so I volunteered. In addition to learning about myself the personal retro had several unexpected, positive effects. My experience was very personal and I'd be happy to talk about it in more details in person - what follows here are my findings on how to run one successfully in the hopes that others will find this tool useful as well.
Google has a ton of APIs, and a fistful of authentication methods to match – everything from 3-legged OAuth2 to proprietary protocols like AuthSub. I’m in the middle of building out a One-click installable Google App for Enterprise/Education (ya know, … Read more
On the project I'm currently working on we have a main portal that provides a user registration system and a generic billing mechanism. It also has several sub applications which need to know some information about the user and be able to publish billing events. With a fairly easy to articulate boundary, we thought it might make sense to be deliberate in how we organized our code - we came up with three main solutions:
- One big app, just use namespaces
- Create the portal and expose API endpoints over HTTP to get user data and set billing data.
- Create the portal, and have each sub application contained in a Rails Mountable Engine.
Our Boulder office had been making some noise about Rails Mountable Engines for some time, gave a presentation in the SF office, and I had experience working with engines both in the dark times of engines in Rails 2.x and the markedly improved days of Rails 3.x, and even better still in 3.1+. We had need to scale one sub-component of one of the applications independently, but not entire apps as the primary usage of the system would be low-volume. We set off down the engines path...
- Potential Heroku/PG/hstore bug in 9.1.3
One of our tables was using an hstore to collect data (a really big json object). We discovered that the primary database on staging was using PG 9.1.3 while our acceptance & production apps were using 9.1.4. Pushing this very large (58K) object into the hstore caused a Postgres failure:
ActiveRecord::StatementInvalid: PGError: ERROR: cannot execute INSERT in a read-only transaction : INSERT INTO "xxxx" ("created_at", "data", "updated_at", "user_id") VALUES ($1, $2, $3, $4) RETURNING "id"
while saving the same data into our acceptance app did not cause the error.
We suspect that there is a bug in PG 9.1.3 when inserting "big" strings into an hstore that is fixed in 9.1.4.
We promoted a new 9.1.4 db on our staging app. This cleared our problem.
- postgresql_cursor and streaming in rails
We were able to stream the contents of a table to the user without loading the whole dataset into memory.
- RubyConf CFP ends Friday
It's in Denver this year. https://rubyconf2012.busyconf.com/proposals/new