All the time I've used computers, I've wanted to learn to program. I started out on my dad's Apple II about 20 years ago, with some kind of Basic-like language trying to write some kind of roleplaying game. I read a book about it, and tried to do some of the examples in there.
Time went on and my dad got a new job where they used Macs. He used to bring some of them home, so he could show us the endless possibilities in the world of computers. It was fascinating to see what you could do with them.
After getting to know the Mac's a bit better, I continued on my quest for programmer knowledge, firing up CodeWarrior and following their C++ tutorials. I never understood a single line of it, couldn't grasp how it all fit together, so I moved on to Java and past that, without even trying to write some of it. For me it was just another C++ that I never could master. I then started to use Linux and work with Perl which I grasped a bit of but never used for anything useful.
At that time, I started my first small, one-man company, selling Linux solutions to small and mediumsized businesses. I never got to deliver a single Linuxbased solution, and all the work I did while I had that company, was windowsrelated consulting work.
But I used Linux in all my spare time, and fell in love with the simplicity of Python, a language I felt was easy to read and easy to understand. But although I got the basics of the language, I always fell back to bashscripts, if I had to do something work related. So I never made python my main language to solve my problems, although I always felt very strongly for the language and always tried to promote it to others.
I've tried several times to learn python well enough to use it in my daily work, but somehow I haven't had enough time.
In the fall I decided to check out a configuration management tool called puppet. I'd known about it for about a year but avoided it, because I already had decided that cfengine was the tool of choice for me. But my curiosity killed my pride and made me take another look at it. And I was astonished to see that it really had something new to offer, some of it I really missed while using cfengine. And that tool was written in.... Ruby.
Ruby was a language I'd avoided because somehow I've got the notion that it was "so Perl-like" and I try to avoid everything Perl. But seeing that puppet really was a good thing made me check out Ruby too. And after trying it in my browser on
http://tryruby.hobix.com/, I was sold.
I don't know exactly how to describe it, but after following the onscreen guidelines, I moved away from the path suggested by the guides and got my feet wet in some experiments: What if I do this, and can I do it this way - and I actually got the results I expected. The feeling I got was a bit like returning home, after having been away in a long, long time; everything was as I expected it to be.
I know it sounds silly, and that it actually could be because I now know a lot more about programming than I did five or seven years ago. But what I feel is different from that. It's like I know that the Ruby way is The Way for me, like Hal Fulton describes it in his book, The Ruby Way.
Before this gets too Zen-like, I'd like to point out, that Ruby really is a remarkable language, constructed to get wrapped around your brain, instead of you having to wrap your brain around it. As a goal, I'd like to make it the primary language in my toolbox.
And for those of you who don't know it: Check it out. It's really cool...!