Human’s Coding

Global Day of Code Retreat 2013

For one day every year, on the same day, across the world, software developers come together to practice the craft of programming. Yes, the craft. We are craftspeople, after all. And like all good craftspeople, we study and practice. The Global Day of Code Retreat is a time for us to reflect on that practice.

In Manhattan on December 14th — at the offices of Tacit Knowledge — a Rubyist, a JavaScripter, two Javans, and a faciliator came together to practice our craft. Gil, our facilitator, set the tone as this small group got acquainted around bagels and coffee. We chatted about shared experiences and places we’d worked, code we had worked on and the general stuff software professionals kick around. This was important to me — though I very much like people, I’m often reserved in a crowd of software developers. I guess it’s a matter of imposter syndrome. But talking about shared frustrations and victories, I loosen up as I understand my experience is at least on par with my peers.

Creating Culture: Hug Your Customers

Your customers are your business — do you know who they are? You do? What are their names?

Those are the fundamental questions Jack Mitchell, author of Hug Your Customers, thinks you should be able to answer. Not only that, you should know their likes, dislikes, children’s names, shoe size and the last time they purchased a Hermès scarf. The last few make sense in the context that Jack is the Chairman of his family-owned chain of clothing stores. But they can apply to anyone who services a customer. You do service customers, don’t you?

Crystal Code

Last week I had a conversation with a Ruby/Rails developer who is somewhat well-known, let’s call him Axel, a maintainer of several active gems. We were talking about a codebase my team maintains that has five years of history behind it and had no unit tests until about a year-and-a-half ago.

I always feel a little defensive when referencing this, so I’m quick to point out that as we touch areas of the code without tests, we write them. Axel surprised me by saying that he’s not a big fan of unit tests because they can cause a system to “crystallize” — the tests become as rigid as the code under test. Refactoring becomes painful.

I was intrigued.

QuickTip: ctrlp.vim

If you’re a day-to-day vim’er, you are very likely familiar with Command-T, the super useful plugin from Wincent Colaiuta. And that means you have probably struggled with compiling and installing it correctly. Command-T is highly sensitive to the version of Ruby used in the compilation of your Vim installation. The often given advice is to compile Vim with system Ruby and do the same with Command-T. On my machine, that means Ruby 1.8.7 — yuck.

My old Macbook Pro started acting weird, so I have a loaner and needed to get setup with my basic tools. Fortunately, I have all my dotfiles in Github and downloading/compiling Vim 7.4 is easy enough. But I chased my tail trying to get Ruby 2.0.0, the OSX system Ruby and Command-T to work together nicely.

Polymorphic Spree

“Describe the relationship between polymorphism and inheritance.”

That’s the question posed by Gary as we conducted the technical interview of a PHP developer yesterday. I don’t remember the answer the candidate gave — I was busy rolling the question around in my own head: what would my answer have been?

I asked Gary what he meant. He described an inheritance scenario where classes inherit common base methods and override them in the children to get different bahaviors from the same interface. That’s inheritance polymorphism, but there’s more to the story than that.

Elixir and Ruby: My First Lighting Talk

Our technical staff decided we’d try some lightning talks. We have the occasional “tech talk” or “lunch ‘n learn” but they’re not regular enough, and one of the things we’re trying to do is get more people comfortable speaking. Lightning talks seem like a good introduction to speaking in front of a large technical audience. The speaker only has to fill five minutes. There’s no way to bore an audience, and you don’t have to be an expert in your topic since you’re covering such a small portion of it.

Railsbridge, Why Diversity?

The day before the Gotham Ruby Conference (GORUCO), Railsbridge NYC held a successful workshop devoted to teaching Ruby and Rails to women with little or no programming experience. Men are welcome as volunteer teachers and TAs and as students if they are accompanied by a woman participating. I am a man, and I volunteered because I think we need more diversity of all kinds in technical fields.

Bridging the Gap: Tmux for Remote Pairing

My team has been pair programming for several months. We work out of New York City, but some of us are based in other cities where we spend time. We tried a few different methods of pair programming remotely, but nothing really captured the feeling of being at the same computer.

We tried the various methods for screen sharing such as Skype, Google+ Hangouts, and direct Mac screen sharing. We also tried using the SubEthaEdit editor which worked for basic document editing but didn’t fit in with the flow of coding wanted. After reading several blog posts about tmux, I felt that we could use this tool along with the vim editor to create a real remote pairing environment that did not impede our existing workflow.