Introducing Consort 0.1.0.pre

For newer Rails projects, I’ve often found myself combining SQL with noSQL technologies, taking advantage of each solution where its strengths lie.

Sometimes you can even get away with your “NoSQL” needs using only an SQL product; Postgres offers hstore, which hits a good swath of use cases and is easily integrated into an ActiveRecord environment via Juan Maiz’s activerecord-postgres-hstore.

But when you need to combine, say, Postgresql with MongoDB, things get less pretty. For obvious reasons, most ORMs and ODMs only support associations within themselves. (DataMapper neatly works around this by supporting multiple data stores, so if you’re a DataMapper user, stop reading this and go read the much-overlooked “multiple data-store connections” documentation instead.) You start to miss the convenience of easily accessing associations that you get with a single-database stack. And so you end up writing glue code.

Maybe you write really simple glue code. Maybe you find yourself writing so much simple glue code that you adapt it into metaprogramming. Maybe you’ve even finally gone off the deep end and done some hideously clever monkey-patching to turn method_missing into the grand prize winner of the Bad Idea competition.

That’s why I wrote Consort. Tired of writing nearly-identical glue over and over, I went meta. And at the point I’d gone to that much work, I figured why not bundle it up into a gem and save the world’s supply of horses from the glue-hungry fists of the world’s Ruby developers? (Sorry, horses, but you’ll still have to contend with Python and Java users.)

Today marks the release of version 0.1.0.pre. All the association-y goodness of versions 0.0.1 through 0.0.3, now with the added goodness of MongoMapper. It’s on rubygems now; grab it, give it a spin, and hit me on github with any issues or feature requests!

Satisfaction is a binary state

The biggest lie perpetrated by modern industry is that customer satisfaction is quantifiable on a scale.

How many surveys have you taken where the options range from “Completely Dissatisfied” to “Completely Satisfied”?

Let us consult the Oxford:

satisfaction |ˌsatisˈfakSHən|
fulfillment of one’s wishes, expectations, or needs

Fulfillment. Not half-bakery, not partial implementation, not attempted fulfillment. Fulfillment, full stop.

Options on a satisfaction scale are expressing nothing useful. The customer’s either satisfied or she’s not. Calling it “partial satisfaction” is just a way for a company with terrible customer service to justify it while patting themselves on the back. Ah yes, the board can say, our customer satisfaction metrics are up! 70% of surveyed customers were at least partially satisfied! Which, back in the real world, means probably 60+% of your customers think your customer service is shit. If they were satisfied, they would have responded with “fully satisfied.”

Think back to the last time you answered a survey yourself with “Mostly Satisfied” or “Somewhat Satisfied.”

Did you actually mean “my issue is resolved and I am a happy customer”? Or did you mean “well, that didn’t really solve anything, but I guess it’s the best I’m getting. Screw you, Dell/Comcast/Verizon!”?

If you really want to know how you’re doing, cut the charade and quit wasting your customers’ time: Make satisfaction a binary option.

Find out if they’re really happy.
Find out if their problem is really solved.
Find out if they’d really recommend you to a friend.

Don’t give yourself an out. Don’t coddle yourself. Ask. Yes, or no?


Hi. I’m Colin. I write software, do technology consulting, and make photographs, but I’ve found myself boxed in to those topics when blogging in those professional capacities. And so I now have this blog. Here, I’m free to talk about whatever I like—being a photographer, being a developer, delivering awesome customer service, being an avid outdoorsman, or where to find the best chorizo in Phoenix.

If you know me through either of those professional capacities, bully for you; just know that this blog is relatively unfiltered. FCC Safe Harbor rules are not in effect, so there may well be swearing, but I’m also not George Carlin.

Got something to say about something I post? Discourse is always welcome in the comments, just keep it civil.