Our Values...
... are the foundation for all decisions. They serve as the compass that guides us through our personal and professional lives. All action; all thought; in every way we represent ourselves; we must represent our values.

Be fair.
Find the answer that best serves all parties. Act upon your highest sense of right.

Grow continuously, personally and professionally, in small ways. Evolution is the sum of many tiny, nearly indiscernible adjustments.

Seek new ways; seek new means; do the unexpected.

Take Initiative.
Present your ideas. Put forth the extra effort. The one who make the most mistakes, learns the most lessons.

Be accountable.
Answer for your mistakes and your deserved praise will come.

Be forgiving.
Seek to understand and assist. Do not condemn others for their differences. To criticize and dismiss leaves neither party better off.

Become truly involved. Make this your team, for it already is.

Have respect.
Honor your coworkers and clients.

Make your life rich in many ways. Seek new experiences, new relationships, and a new perspective. Then bring it back and teach others.

And always, Tell The Truth.

- Michael J. Norton (1997)

Code Retreat #2

Yesterday was the second Code Retreat. Thanks to LeanDog for the use of their facilities. We didn't quite hit 40 in attendance, but we came close. With participants like Chris Judd, James Shingler, Corey Haines and J.B. Rainsberger, we had some real ninjas present. I had the fortune to pair with Corey and J.B. as well as several others. All of the pairing experiences were fantastic. I learned something new with each iteration of the kata. I couldn't have asked for more.

The format was pretty simple. We paired (or tripled) for 40 minutes with 10 minute breaks. Using TDD and ping-pong or carousel, we attempted to create a program for Conway's Game of Life. At the end of each 40 minute session, we threw away the code, changed partners, and started all over again.

For many, this sounds like an exercise in torture. It is nearly impossible to write a solution for Conway's Game of Life in under 40 minutes. So how did we expect to achieve anything for the day?

I came to genuinely understand the purpose of the day early into the second round. I was in a triple the first round and we'd made it pretty far. We were satisfied with our approach and were confident we were on the right track. One of our members swapped out, so I was in a pair with a gentleman I had already completed a round with. Dumping the code was painful. All that progress lost. We decided to quickly rebuild what we'd previously developed and move forward with our solution. While he was writing a test, Corey Haines joined our team. I was explaining our approach to Corey. He remarked how different it was from the approach his prior team had taken. We were coding as we spoke. Before we knew it, we'd taken yet another approach to the problem. One neither of us had previously considered.

This was the purpose of the day. We weren't there to use Java. We weren't there to practice a few agile techniques. We certainly weren't there to write the Game of Life. We were there to sharpen the saw. To share. To learn. To grow. This was everything about the journey and nothing about the destination.

There was no right approach. There was no wrong approach. There was only approach. Working together, sharing ideas, joking, and honing our skills.

You may not be comfortable with Java (or Ruby or C# or ... ). You may not know much about TDD. You may have never paired before. None of these things matter. If you are a professional developer who understands that what you do transcends a language or tool set, then Code Retreat is certainly for you. Wether you are new to the profession or have 30+ years of code behind you, there is something to be gained from sharing with others.

If you knew about this one and didn't make it, you missed a fantastic moment. Be sure to make the next one.

Installing git on a Mac

I've seen a lot of posts on bulletin boards and other sites regarding the install of git on a Mac. It appears many people have tried to download the source and compile it only to discover missing dependencies and other annoying issues.

I did the following and was up and running in 5 minutes.

Install MacPorts
If you have MacPorts installed, you just need to update it.

The full details for installation of MacPorts are available on their site.

Confirm Latest Update of MacPorts
sudo port selfupdate

Install git
sudo port install git-core [+svn]
Use the optional +svn parameter if you will want to import from svn

The  git install may take some time. There are a number of dependencies that need to be installed as well, but MacPorts takes care of it all for you.

That's it.