The luxuriant grass growing about the droppings of cattle in a pasture.

His talk is embedded at the end of this post. The Ruby stuff was very interesting and great, but what stuck with me was the early talk about loving the tool that you work with every day.

As programmers (Dave always titles himself as “programmer”) Dave talks about how we get a blank sheet daily, and if we don’t love the tool that we get to use to make the creation that day, then we will not do the best that we can, and it will show in our work.

I can totally relate to that. Sometimes we may think “use any tool as long as you create somethin useful.” Stick with Java even if you fancy doing something with Rails/Django/… because it is the safe choice.

If you are having fun and loving your tools then you will create (or adapt, which could simply be with config, plugins, or whatever) something so much better. Of course, as I now run a developer tools lab with Ben I don’t think of “tool” as just a programming language, but much more. Your entire environment. The items in the box.

As 2009 rolls around, I can’t wait to create some tools that I love. Something that makes me excited to start building something new. And not only for myself, but hopefully for some of the Web community.

4 Responses to “F**k That; Love The Tool You’re With”

Here’s the rub. I love the tools I use: IntelliJ IDEA, Ant/Maven, GWT, etc. I may not love Java, but I love the tools. I may like other programming languages, but I dislike the tools. I love Emacs as an editor, but it really doesn’t help delving into a huge JS, Python, or Ruby code base the way IDEs like IntelliJ do.

There’s a somewhat biased/stereotyped notion in declaring that someone chooses Java over say, Rails, because it’s “safe”. Many people choose it because of the feature rich tool chain that makes Java development far from painful, and somewhat of a joy sometimes. I use GWT for many reasons, but one of the biggest is simply that using Javascript for big projects with multiple third party libraries is frustrating rather than a joy.

My server-side stuff these days is done with Scala + Lift. The terse-ness of Ruby+Rails, but type checking, Java tools and library integration, IDE code assist and limited type inferencing, plus high performance. I’ve got beefs with Scala too, but hey, it even gives you a REPL/interpreter.

Every language that is successful eventually achieves bloat. Usually, they start out with basic support, in the form of I/O, collections, string handling, etc. Nowadays, that includes support for XML, JSON, and some form of ActiveRecord and Web support.

If the language goes on to achieve a critical mass of developers, most of the early adopters will go on to write libraries duplicating functionality they had in other platforms. As time goes on, and the code base grows, eventually some kind of dependency management, build system, and network repository is required.

Finally, after the peak, when the language gets mainstreamed, the initial die hards complain of bloat, of how the language is no longer as cool as it used to be when hardly anyone appreciated it, and some new upcoming language is deemed the Next Best Thing.