Nick Mudge Ignition Software Consulting & Development

My bookmarking website, Newsconomy, has recently reached over 1000 links to cool things on the web. Mostly things about programming.

I think the top 15 most popular tags give a good reflection of the interests of the people that use the site -- well mostly my interests, heh ;)

top left corner   top right corner
bottom left corner   bottom right corner

I've been reading books on Ruby. I want to know the language really well. I'm that kind of programmer. I love to know the exact details of a language as much as possible.

By far the thing I like least about the Ruby language at this point is that it feels like two languages, Ruby 1.8.x and Ruby 1.9.x. Each time I read a paragraph that explains a difference between Ruby 1.8 and Ruby 1.9 I am annoyed. I want to learn one programming language, not two, but which one should I really learn? My answer seems to be both at the same time. Ugh.

It seems to be the most sense to really learn Ruby 1.9.x because that's the future of Ruby programming. But from the looking around I have done Ruby 1.8.x is easier for a beginner to learn for various reasons. Ruby 1.8.x is more stable, has more support by libraries, documentation, help and tools. There's less trouble with using Ruby 1.8.x, but it's not the future. This isn't good for beginners who want to learn and start using Ruby.

As an example of Ruby 1.9.x unfriendliness, say you are a Ruby beginner and you want to get Ruby up and running at work as fast as possible for a little task that needs to be done. Your computer is running windows so you go to look for a download of Ruby on windows. There's a really nice and fast Ruby 1.8.6 One-Click Installer which sets you up nicely on windows and which likely has everything you need, including an editor. This doesn't exist for Ruby 1.9.x.

While having "more than one way to do it" may be the way to go for you depending on if you take the Perl or Python philosophy, I'd definitely say that for beginners learning a language, having choices about what to learn, like which implementation to learn, really sucks. By default newbies don't know anything and asking them to choose when they lack experience and data is frustrating.

Perhaps it doesn't really matter much if you use or learn Ruby 1.8.x or Ruby 1.9.x or both, but as a newbie you just don't know.

I've seen people ask what programming language they should learn and use for making websites. At one time I had that question. It can be a worrisome question and seem important. In my opinion the answer is that for a new person it really doesn't matter much which language as long as it has some good support for making websites. Ruby, Python, Perl or even PHP are fine. Who cares, it doesn't matter. So in reality the question really isn't very important. And maybe choosing between learning or using Ruby 1.8.x or Ruby 1.9.x doesn't really matter either. I'd like opinions from more experienced Ruby programmers about that.

At this point I've sort of arbitrarily decided to go along and use the Ruby 1.8.x implementation of Ruby because Ruby on Rails still recommends Ruby 1.8.x for use with Rails - even though I've heard Rails runs fine on Ruby 1.9. When Rails recommends 1.9.x then I'll switch to that when I can. So in learning Ruby I'm learning Ruby 1.8.x and Ruby 1.9.x and it is annoying.

This multiple implementation annoyance also occurs in other programming languages. I noticed that some of the more popular programming languages I can think of tend to have a single, solid, standard implementation that almost everyone uses. PHP and Java are examples.

Most prominently I think of Lisp when I think of multiple implementations. Maybe it's not so much all the parentheses that have caused Lisp not to become a popular mainstream programming language. Maybe it has more to do with the lack of a single solid implementation. I also noticed that Lisp seems to be big about written language standards, while more popular programming languages more or less follow a reference implementation as the standard for the language.

I've been seeing many articles and blog posts about Clojure. I'm feeling the buzz and excitement about it. Perhaps it is doing so well because it has been created for such a standard and well known and used platform, the JVM. Instead of a Lisp implementation trying to create or grow it's own community (among already existing small Lisp communities), Clojure seems setup to tap the existing very large Java community. That's pretty cool.

I got a personal reality today of why Larry Wall says the first virtue of a great programmer is laziness.

A couple days ago I had the task of slightly changing the format of some CSV files by hand so that a rather inflexible CSV importer could import them into a system.

I really didn't want to do this. I felt really lazy. Naturally and automatically I just kept thinking to myself that I really should just fire up Ruby and write a program that reformats these CSV files and I kept thinking of reasons of why I should and I finally convinced myself and that's what I did.

Yesterday I saw an unexpected error pop-up in a GUI program I'd been working on that I thought was already fine and tested. Today I kept thinking about how I hate having to test everything every time I make some changes to the application.

And then the idea came into my head that I should write automated tests for these kinds of GUI applications -- duh. And I can't get the idea out of my head. I'm so excited about it. Imagine all the manual testing I wouldn't have to do anymore and how much more secure I would feel.

I realized today that I have so much fun and love writing programs that tell computers to do work that I don't want to do. Just give me a boring task and I'll turn it into a computer program.

Of course I realize that you always have to consider if the overall effort of automating something will expend less energy than the long term manual effort.