Problems with self-organization

I just listened to the November 21st episode of the Freakonomics podcast , on what economists call “spontaneous order .” It’s an interesting phenomenon – essentially, it’s self-organization. Daniel Klein (an economics professor at George Mason) describes it through the metaphor of a skating rink : imagine a hundred people all skating at once. There’s no dictatorial authority telling one person to speed up or a couple to move to the outside – there are minimal imposed rules (just the skating direction, say), and beyond that pure self-interest keeps the whole thing from devolving into chaos.

On valuing people

Ernie and I are going through many of the same experiences right now, so his post on how interviews are broken resonated with me. In particular, I wanted to expand on his “I am special” point. I don’t know that I’m particularly special; that carries a slight note of “better-than” that I’m uncomfortable with (though I don’t see that in the context of Ernie’s post). I am, however, convinced that everyone is different.

On contact management

I have a problem: every time I open up an application that has a contact list, I find something confusing or frustrating. With Skype, it’s people I talked to once, years ago, and no longer remember who they are. With Messages, it’s duplicate accounts that I know map to the same person. With Google Contacts, it’s outdated email addresses that I never got around to changing. With Contacts.app, it’s crazy merge artifacts.

On interview coding

Oh hey, I’m unemployed again (this time was, sadly, involuntary – my company shut down). That means I’m doing a lot of talking, to hiring companies and to people about the hiring process. One topic that I find myself feeling surprisingly strongly about: interview coding questions. One company (I won’t name them) asked me to write code to reverse an array. In Ruby. Which has Array#reverse. I understand the abstract point here, but… really?

On Ansible

In my post on flexible infrastructures, I mentioned in passing that I was managing my ops work with Ansible rather than the more traditional Chef or Puppet. Several factors guided me towards this choice: The overarching goal for the new infrastructure was to have disposable servers in every role, instead of maintaining long-running servers over time. As a result, I focused on the initial provisioning much more than the ongoing configuration management experience.

On a flexible infrastructure

I’ve been having a lot of fun over the past couple of weeks shading into the ops side of things – I’ve been experimenting with an alternative to the existing infrastructure at my day job, and have been learning a ton. There’s a long way to go, but I think I’ve got the start of an interesting, flexible setup. Configuration At the heart of this cluster is a configuration server; I wanted to have new instances easily register themselves and discover existing instances and services.

On GitHub, DDOSs, and deploys

When GitHub goes down, you can almost hear the wailing in the streets. GitHub has cemented itself as a central part of many development workflows, and while much of that is unaffected by the occasional DDOS, one element in particular has the potential to cause a lot of trouble: deploys. Standard practice for many deployment tools (e.g., Capistrano) critically relies on the GitHub repository being available – checking out the latest code either on the remote server itself or locally before pushing it to the remote box.

On a schema.rb mystery

Imagine, if you will, a database table with your average, everyday foreign key. It’s an INTEGER column. Now, imagine a coworker opens a pull request that, among other changes, has a line in schema.rb changing that column to a VARCHAR. There’s no associated migration, and when she manually rewrites her schema.rb (THIS IS A BAD PRACTICE AND YOU SHOULD NEVER DO IT), a simple db:migrate allows the offending line to reappear.

On the conference I’d like to see

I’m in Sweden at the moment, taking part in an amazing Nordic Ruby conference. Yesterday, I gave a talk called Better: A Field Guide to Continuous Improvement, which was about topics that have been much on my mind over the past few years. Several of the other talks here have dealt – directly or indirectly – with the same topics, and being here has just reinforced how much I’d love to see a specific sort of conference.

On what I want to do

We just wrapped the 2013 edition of RailsConf, and I’m both exhausted and excited. There’s nothing quite like being surrounded by 1500 of your peers, all sharing knowledge, experimenting, and having fun for a few days. Every year at RailsConf, we have a job board – and every year, it fills up on the first day. Hundreds of hands shot up when we asked who was hiring on the first day, and being around that many people thinking about jobs and recruiting and whatnot meant that I got to explain why I’m funemployed (and what would cause me to leave it) several times in the last few days.