Remote Pair Programming

Posted by joe Wednesday, October 31, 2007 03:00:00 GMT

A key ingredient in the success of EdgeCase is collaboration. We decided early on that the most effective way to develop with each other was by pair-programming. It has been fantastic.

An irritation I had before founding EdgeCase was that more companies did not try and work hard enough to figure out how to overcome the barriers of having people offsite. With the plethora of technology available, I was convinced that we could be a very effective organization without either requiring our developers to commute using a 747, or to pass up on great team members just because they didn’t live in Columbus.

The first real test came when we hired Jim Weirich. Jim lives in Cincinnati, two hours south. We had already become accustomed to working with each other in a 100% pairing environment. We made it clear that we had no intention of making him drive up to Columbus every day, nor did we expect him to move. We also had no intention of leaving him alone in his basement and throw work his way. So we decided to figure out exactly how we were going to pair with him in Cincinnati.

Our requirements were pretty straight forward. We needed:

  • ability for us to work with multiple files (When in Rails, you are never in a file for very long, especially when bouncing back and forth between tests and regular files)
  • a way to communicate effectively
  • little or no perceived latency

Secret Sauce

After a lot of trail and error (mainly researched by Jim and Chad) here is what we came up with:

  • ssh to a server that both parties can access
  • screen so that both parties can share a session
  • Emacs (or any headless editor that does not require a GUI environment)
  • Video Skype

ssh and screen

ssh and screen allowed us to create an environment that uses up very little bandwidth. This was awesome for two reasons. One, there is very little latency (especially if you ssh in with the -C option). Two, it gives us extra bandwidth for skype.

If you have not tried it yet, you really should check out screen. It’s a really cool command line tool that most *nix environments come with now days. It allows us to look at the same shell session. So we both ssh into the box, and then join the screen session (in our case one called pairing). Then we can see what the other person is looking at. When the cursor moves, we both see it.

Some of the gotcha’s that we have encountered:

  • Try and ssh in as the same person. This will keep down the amount of headaches you encounter with file permissions, etc…
  • create a separate subversion user for the ‘pairing’ server (again, it helps with file permissions)
  • Tweak your timeout settings. There will be lots of times where you are watching your pair type, and not actually interacting with the keyboard. ssh likes to think that you have timed out and kick you out. This is something that can be configured (I believe in /etc/sshd_config)

Video Skype

While this sounds like a luxury, it’s actually become a fantastic tool for pairing. Nothing beats seeing the facial expressions of your pair. You can pick up some great cues and it feels as if he/she is sitting right next to you. We both are using macs and have a two monitor system. Inevitably you will find yourself looking at the video image of your pair. Therefore we have elected to drag the skype window right below our camera on our laptop lids. This way, when you look at the picture, you are in essence looking into the camera, further helping the feeling of ‘being there’.

Emacs

Unfortunately some people in the company are not advanced enough to use use Emacs, and have chosen to use a remedial editor. Either way, spending time learning one of the main editors is not wasted effort. While it seems like at first you are trying to run through mud, you will be amazed at how, after a month or two, you are working faster than you ever thought possible. Years of effort have been poured into tweaking these editors and making them unbelievably extensible.

All in all, the important thing is that we do not have to launch an entire X instance simply to run our editor. TextMate is a good editor, but it’s not worth moving to something like VNC simply so we can use it (although, a subject for another post, we have actually found that TextMate is fun, and shiny, but just does not give us the support we need anyway).

Another benefit to using one of these editors is the excellent buffer support. Being able to seamlessly move from one buffer to the next, moving text around, and executing files leads to some excellent increases in productivity.

Extra Communication

Not being there does have other challenges. When you are pairing together in person, who gets the keyboard is usually pretty easy to figure out. When you are remote, you simply need to ensure you communicate more. We use phrases like tag when we are about to take over the keyboard, or yield to say you giving control to the other person.

We also do not have the luxury of a white board. So communicating ideas is a bit more difficult. This is the only place where I would say “I wish we were in person.” During our time pairing, we have become better at communicating our ideas. More times than not, we end up thinking in code. Again, it’s not great, but it does help.

Is This For Me?

This is by no means our way of saying, this is the only thing that works. What I am tyring to do is give you some more insight into how we operate, and what things we have found to be successful. While we are encouraged by tools such as Coda and SubEthaEdit they are still a little ways off. Stay tuned, as we continue to bring on more talented developers and put our recipe through it’s paces.

What has worked for you?

Scott Barron joins EdgeCase

Posted by joe Monday, September 10, 2007 17:24:00 GMT

One of the great things about starting a company is the ability to team up with some of the best talent you can find. It’s a nice feeling to be extremely excited when you hire someone. Every time we have brought someone on, I’ve wanted to tell the world. It’s a fantastic feeling.

We are extremely excited to welcome Scott Barron to EdgeCase.

Scott is a member of the Ruby on Rails Core Team, avid twitter monkey (although we will have to work on his nic), and incredible developer. We are looking forward to not only working with him, but helping him with his incredible contributions to the open source community.

Scott lives (and will remain) in Cincinnati. We have worked hard on creating an environment that allows us to pair-program even if the person is remote. It works really well for Jim and I. With video skype, we are able to feel as if the person is right there, combine it with ssh + screen + emacs and it’s no different than sitting in the same room.

Welcome Scott!

Jim Weirich joins EdgeCase

Posted by joe Monday, May 14, 2007 12:17:00 GMT

Back in 2003 / 2004 I was part of a really cool user group down in Cincinnati; xp-cinci. We were actively developing a product written mainly in Java, except for this little part of it that was being handled in some obscure language. I was introduced to Jim and really struck at how excited he was about this language called Ruby. I asked him to what the language was all about. So he brings me over to this laptop that … well let’s just say it wasn’t new. He fires up a window manager for Linux that I have never seen before and fires up emacs. Doing what every self-respecting Java developer would do when being shown something outside of an IDE, I blew him off.

About four months later every email to Jim began with “I’m so sorry I did no take you seriously, but I have a question …” I finally understood the infectious nature of this language. Ever since I have become good friends with Jim and watched as he helped the community transform this obscure language into what it is today. How has he helped?
  • working at a hotel bar with a jump drive for a CVS repository with David, Paul, Chad and Rich to develop Ruby Gems.
  • Complaining about make on a white board and creating Rake
  • Giving us one of the coolest demonstrations of Ruby’s DSL ability with Builder
  • Helping us test better with flexmock.

as well as many, many other contributions.

Late last week, Jim accepted an offer to come to EdgeCase. Jim is going to help us increase our training as well as the obvious ability to add to our development arsenal. Our mission of helping spread Ruby into the world at large fits perfectly with Jim’s personality. Jim brings with him, not only an unmatched passion for Ruby, but also a great deal of enterprise experience.

Have you helped change the world?

Posted by joe Friday, January 05, 2007 00:14:00 GMT

It’s not often that as developers we get a chance to work on projects that are truly going to change the world. Changing the Present is one of those sites. In a partnership with Arvato Systems and WellGood LLC, EdgeCase has had the chance to help build this fantastic site that is helping change the nature of gift giving.

The premise is simple but powerful: you pick the cause you want to donate money to (children, education, environment, cancer, human rights, whatever). You then browse the various gifts available. You can choose gifts ranging from small to large, each specifically targeted to give exactly what you want to give. From the website:

For just a few dollars, you can protect an acre of the rainforest or fund an hour of a cancer researcher’s time. You can provide a child with a first book, an AIDS patient with life-saving drugs or a hungry family with a nourishing meal.

Wish lists, registries and printed, personalized greeting cards make these donation gifts an attractive alternative to traditional gifts. After all, many of us just don’t need more stuff.

That’s the beauty of Changing the Present as they say:

ChangingThePresent will do for nonprofits what malls have done for shopping. And it will do for shopping something that shopping has rarely done for anyone: elevate spirits and add meaning to our lives.

Technically this has been a fun project to work on as well. The site has quite a few challenges that were interesting for the teams to overcome: large quantities of shared data, a large amount of people administering their own sections of the site, and very high traffic. Simple caching does not work. It required a whole new way of approaching the problem.

We have also been able to work very closely with Jason Hoffman of Joyent. Jason knows scalability and the issues behind it inside and out. He’s helped Changing the Present in their quest to fill the enormous traffic needs they have. He’s taught us a lot about load balancers, mongrels and deployment. kudos.

Thanks go out to Bruce Tate for introducing us to the project and Arvato for allowing us to partner with them.

erubycon - Enterprise Ruby Conference

Posted by joe Thursday, November 02, 2006 01:30:00 GMT

EdgeCase is proud to announce erubycon, the first conference specifically for demonstrating Ruby’s place in the Enterprise world. Many of you out there have stood back and watched as Ruby and Ruby on Rails have gained popularity. Many of you have had the same questions:
  • Can I use it for real applications?
  • Can I integrate it with my current systems?
  • Will it scale?

We have gathered an exceptional group of speakers to come and share their experiences with Ruby in Enterprise organizations. These speakers will answer these questions and more. The speakers have had extensive experience and success in many environments such as Java and .NET. They have also found tremendous success and enjoyment with Ruby.

We will have announcements soon about many of the other exciting speakers you will get to hear from at the conference. We will provide a balanced view of the state of Ruby and what it can do for your organization.

erubycon takes place Feburary 9, 10, and 11 in Columbus Ohio. Registration opens November 15, and pricing will be announced soon. Tickets will be limited in order to offer a more intimate setting and chance for everyone to hear the speakers. A lounge area will be setup for speaker Q&A sessions, coding help, or just to hang out.

Stay tuned to erubycon.com for more details as the days progress.