Tag Archives: tools

No Bleeding Edge

I was having a conversation with one of my friends this week about an upcoming project. I was looking at using JQuery with KnockoutJS to solve a problem on one of the particularly dynamic pages, but his inclination was to stick with server-side MVC and just use some JQuery to take care of the dynamic part. Since he’s not a big javascript person, he felt KnockoutJS was too bleeding edge.

This was especially ironic, given in the recent past our roles were swapped and I was the guy tempering his enthusiasm with a conservative eye. The whole conversation though got me thinking about what does “bleeding edge” really mean?

I’m pretty comfortable in both Java and javascript. I like hacking with NodeJS and Express, with JQuery Mobile or Sencha Touch on the front end. I started with ExtJS almost four years ago, so I’ve embraced client-side MVC as a tool for web development.

Programming languages are tools for solving problems. I’m a fan of hand tools for woodworking, so I think the tool that best represents a programming language is the wood chisel. A good wood chisel is a beautiful tool. It is able to efficiently carve a block of wood to your vision, similar to how a programming language carves code to meet your technical vision.

Chisels are sharp — scary sharp. An expertly-sharpened chisel makes your typical razor look like a table knife in comparison. Incorrectly using a chisel can result in a nasty cut, in the best case, or a trip to the ER, in the worst case. But that’s the nature of the tool. You need to practice with it a lot to ensure you don’t hurt yourself, let alone get good results.

Programming languages are very similar. Someone inexperienced with a language can end up in the virtual ER of missed deadlines, cancelled projects and unhappy customers. But a master of the language can produce beautiful, maintainable solutions which solve peoples’ problems.

So is the chisel a bleeding edge tool because of the damage it can do? Obviously not. Woodworkers have been using chisels for a millenium. It is the inexperience of the practitioner that can make it, quite literally, bleeding edge.

Programming languages are the same. Putting me on a Python project could end up causing a lot of project bleeding, given I’ve never written a line of Python before. But it doesn’t mean Python is a bleeding edge technology.

There are no bleeding edge technologies — there are simply people uncomfortable with new tools. Usually, someone calls a language or framework “bleeding edge” when they don’t know enough about it to be productive. It’s like picking up a chisel for the first time. That mirror-sharp edge makes it pretty clear you can seriously hurt yourself with it. The master, though, doesn’t look at the chisel as a way to hurt themselves. They see the chisel as a tool in their box for solving problems.

New Laptop

I finally got my new work laptop yesterday. For the past month and a half I had been using my personal Dell Latitude D620 for daily development. It is a good little workhorse but is getting a bit dated in the CPU department and I’ve never been particularly fond of the screen, which I always found a bit too dim.

Now say hello to my little friend (and the D620’s big brother), the Latitude E6500. I got it with the 15″ LED-back lit screen, which I can’t recommend highly enough. This screen blows away anything else I’ve seen and is on par with the new screens on the macbook pros. Toss in a dual-core 2.8ghz CPU and 4GB of RAM, and you’ve got the perfect software development laptop.

I got my E6500 with Windows Vista. I know there are plenty of Luddites who still stick with XP because they think it is “faster”, but Vista just rocks. I’m using it for Java development and have installed IntelliJ, MySQL 5.1, Apache HTTPD. All work flawlessly and IntelliJ is beautiful in Aero.

Speaking of a developer laptop, since I just had to do this, I’ll share my “Java on Windows” essential tools list:

  1. Java 6 JDK
  2. IntelliJ IDEA 8
  3. MySQL 5.1
  4. Subversion 1.5
  5. Tortoise SVN
  6. WinSCP
  7. Putty
  8. UltraEdit
  9. SnagIt
  10. WinZip Pro
  11. DbVisualizer
  12. Firefox 3 with Web Developer, Firebug, ColorZilla and Tamper Data add-ons
  13. Chrome
  14. Tomcat 6

This is my must-have kit for Java development tools. Yes, some are not free, but they are well worth it. Note that I don’t get into all the libraries. Of course I’m using Spring, JUnit, MySQL Connector/J, etc… This just covers core tools.

Core Tools + E6500 = Happy Java Coder