Anyone that knows me knows that in addition to being a web application developer, server admin, database geek, etc that I am also a biker. And my wife is a photographer and a triker. Part of being a biker is wrenching on your own ride. It makes it more personal and whom else can you trust more than yourself?

My wife does a fair amount of mechanical work on her trike, but sometimes the job is just more than she knows how to do. So, I get to wrench for her. She has a 1981 Trike Shop trike which are made here in White Bear Lake, MN. Essentially it's a custom chassis and fiberglass body with a 1970 VW Beetle 1600cc engine and a fair amount of custom mechanical work on these older versions.

Last month her hydraulic clutch master cylinder was leaking and needed replacing. On this trike the clutch and brake master cylinders are identical and mounted on either side of the center chassis rail. At some point in the life of this trike someone welded a custom brace to the chassis rail and failed to leave enough room for a wrench or socket to reach one of the mounting bolts. This was the last bolt to remove. I had already disconnected the hydraulic lines and transferred the other reusable parts to the new master cylinder. I laid on my floor creeper under the trike for about half an hour assessing the situation. I kept running through a mental list of all the tools I owned and ruling each one out as I pictured each one not being able to fit. A few times I dug into my tools just to test fit something I thought just might work. Several times I found myself wishing I had the ultimate wrench. The fire wrench, that good ol' cutting torch I grew up with and used while in my Dad's gas station garage. I almost went to the store to buy one. However, I kept thinking there had to be a way to solve the problem with the tools I had.

There's an old saying that Mark Twain wrote, "To a man with a hammer, everything looks like a nail." Well with a cutting torch all the world is a potential puddle of molten metal and sparks. Yeah! I knew I could get that bolt out with a torch. I might have even managed to do it without igniting the hydraulic fluid, which by now was all over me. There had to be a better way.

I did pull out my pneumatic die grinder and ground down the area just beyond the bolt head. This gave me a little more room for a socket wrench, but I still couldn't get a socket onto the bolt head. The socket wall was too thick, or was it? I finally decided to measure how much room I had. It was then that I realized I couldn't even get a knife blade between the bolt head and the chassis rail. Not because they were too close together, but because there was twenty years of road grime, grease, oil and dirt built up and hardened in place blocking my sockets and wrenches. From my position under the trike I could not see this gunk. After scraping it out my socket slipped on perfectly. A few minutes later I had the new master cylinder in place, hydraulic  lines attached and was ready to start bleeding the hydraulic fluid through the system.

What does this have to do with ColdFusion or programming in general?  Tools.

As programmers we have our tool sets. These are the languages we know, programming methodologies we've mastered and certain code tricks we like to use. To young programmers the world may look like a series of IF statements. All lined up in a neat row waiting to be called upon one after the other. As we grow our tool sets we realize there are different ways to do things, maybe even better ways. We find that reusable code makes life easier and the code becomes easier to maintain even if at first it seems way more complicated than the other way. Code chunks or objects that do one defined job with no strings attached to other code means we can mix and match code like building blocks. Each block independent to itself and minimal, but when combined with other blocks they wield great power, strength, flexibility and a certain beauty.

The world throws us all sorts of problems to solve with our code. When all you know is procedural programming then all the problems in the world can be solved with a series of IF statements. When you take the time to learn different programming methodologies such as the object oriented methods you will start to see the world's problems differently. You will begin to see unique objects and reusable patterns. Even if you can not see that now, even if it looks more complicated than the way you’re used to, there are better tools and better solutions.

Twenty years ago when I was a young mechanic in training I was hot stuff with that cutting torch. Last month I discovered that I exercised more critical thought and found a different or even better way to solve the problem at hand. Even though at first I could not see the real problem that I was trying to solve. It turns out it wasn't my tools that were all wrong, it was how I viewed the problem that was leading me to the wrong tools.