Vita Rara: A Life Uncommon

My Programming Tools


Categories:

A friend of mine wrote up a list of the tools he uses on a regular basis. Sometimes it's good to see what others are using to get ideas, confirmation, etc. So, here's my list.

Computers

I currently work on two machines. I have an original Mac Pro 2.66GHz Quad Xeon running OS X Leopard for my workstation with a 30" and a 23" display. This provides a lot of real estate for working. I only got the 30" after my wife put me in front of it at the Apple store and asked me how I'd use it. Up until then I thought 30" was too big. Then I got the 23" to go with it.

My second machine is a new 15" Mac Book Pro i7 with the hi-res anti-glare screen and 8GB of RAM running Snow Leopard. I went with the regular 500GB drive rather than the solid state drive. The price delta for the solid state was too much for me to justify. I really love the greater resolution of the new screen and the anti-glare ROCKS! I wish it was standard.

Languages

I've used a lot of languages over the years. In recent years I've used Java, Groovy and Ruby. All of my new work is in Ruby. We still have a lot of Java and Groovy to support though. We might end up porting some stuff to Ruby eventually though.

Regarding Ruby I find the fluency and freedom of the language liberating and productive. The culture of testing and the tools to support it are just amazing. Rspec,

Frameworks

Currently for web stuff I'm using Rails. It's pretty much the de facto framework for web development in Ruby. There are others, but Rails really has the mindshare.

I have found Rails to be the most productive web framework I've ever used. I have used Servlets/JSP, Enhydra, Struts 1, Web Work 2 and Struts 2 for large scale development. (Typical projects consisting of several hundred different actions with hundreds of backing tables.) I've evaluated and passed on JSF, Tapestry, some PHP frameworks, and Django. I think Rails is head-and-shoulders above the them.

Editors

Currently my main workhorse is TextMate. I really like the simplicity of it. I use it for Ruby, Groovy and Java work now. Rails is what got me using TextMate.

I used to be a heavy vim user. I've considered taking a look at it again, now that it has better Rails support. It's just a matter of finding the time.

Shell

I was a tcsh user for years, but I'm trying out zsh now. We'll see how that goes.

Version Control

I've moved everything I and my company do to git. It's an amazing tool. Distributed version control is the only way to go today.

Project Management

We use Mantis to track our products that are in production, and we use Pivotal Tracker for new projects under development. I also use Basecamp for non-software projects.

Contact, Lead and Personal Management

I use Highrise to track all of my business related contacts, tasks, leads, and deals. I find having a centralized web based repository for all of this invaluable. We have multiple people following up with clients now. Without Highrise we would loose track of where we are.