Popularity of Programming Langauges

I saw this interesting post regarding the popularity of programming languages and it made me start thinking - why so many languages?

I'm a big lover of Programming Languages. I know there is not one language suited for all tasks and whilst I may dislike certain languages I also realize that in the end most things can be accomplished in any of the common general purpose languages available today. Not all will be as concise or as readable or as "pure", but give or take you can express most problems in a slew of different languages. Of course there is the odd whack job who thinks you can do everything in SQL or COBOL, in fact I remember meeting a guy who actually wrote a COBOL compiler in COBOL - now that was a dedicated individual!

When I wrote my Ph.D. I developed five different special purpose languages and wrote interpreters for them all. The core language was called CARESS - no it was not a contraceptive, but stood for "Concurrent Assignment REpresentation of Synchronous Systems". It was even used by the third year undergraduates at the time. Nothing earth shattering but I felt the need to write these languages and they became a integral part of my Ph.D. Naturally, those languages don't exist today. But many from the 70's, 80's, and 90's do.

But why so many? I'd like to think it is not just about making money and market share, but rather because developers are passionate people who feel so strongly about their craft, that they design a whole language that enables them to express themselves perfectly.

Looking at the list I get a warm satisfaction seeing that my old love "C" is at 2, and Python is at 7 and rising.

I'm looking forward to doing a lot more with Python later this year, although sadly it seems my current project will take longer than I hoped - if only I had a more expressive language ...

Zig-Zag Illusion

I have been collecting and performing magic since I was nine years old. However, when it comes to software my best advice is to avoid as much magic as you can. It is easy to think writing software that does all sorts of magic is a good thing. But after years of being burnt by such software I have come to the earth shattering conclusion that there is no place for magic in software.

The worst kind of software is code with multiple side-effects - it is a nightmare to maintain and never does quite enough magic to make it worthwhile. It doesn't mean you can't write useful scripts and routines that perform multiple tasks, but each task in the script needs to be spelled out rather than things happening "as if by magic."

This revelation might seem obvious to many but for me it has really only been in the last five years that the truth has become crystal clear. These days I aim for simple and explicit code and although I like to think what I write is still cool, it is no longer magical.

iPhone 3GS
Motorola RAZR V3

2010 is clearly the year of upgrades.

I'm not a big cell phone user - I only use my cell phone for voice calls, no texts or emails and certainly no apps. I've had a trusty Razor (Motorola RAZR V3) for about four years now, and have been very happy with it. I had no plans on "upgrading" anytime soon.

For Christmas two of my best friends purchased an iPhone gift card for me and so I decided maybe now was the time to upgrade. My wife and kids were already on iPhones and Blackberrys, so how bad could it be?

I received my iPhone (3Gs 16GB) a few days ago and must admit if I had some spare time it does look pretty slick. The thought of having my music, photos, contacts, and easy access to emails and the web is quite interesting, not to mention all the cool apps that are available.

So far I have just synced up my iTunes and Outlook. I have not really customized it - my son offers every day to help me. I'm quite sure when I finally give into the potential I'll be as wild about it as everyone else.

I'm not 100% sure having access to all the things that remind me of work all the time is a good thing, but we will see. You have to admit we've come a long way from my little Moto.

Unix License Plates thanks to David Brooks

It should be obvious based on my worship of Bill Joy, but with a number of postings on Windows I wanted to make it clear:

When it comes to web servers and production environments I always use *nix and would never consider using Windows to run my enterprise.

I'm very happy with Windows 7 as my desktop I just wouldn't want to build my server rack using anything but some form of Unix. These days I favor the CentOS distribution. For years I was a BSD guy of course, then an AIX guy, then a Solaris guy, and these days I'm happy with CentOS Linux.

Photo Credit goes to David Brooks, read his blog here.

Keep the Customer Satisfied - Simon & Garfunkel

One of the questions I ask every interview candidate is:

"Is the customer always right?"

I get some interesting responses. My take on this is clear: the customer is clearly not always right, but it doesn't matter as long as they are satisfied and happy. In fact, I like my customers deliriously happy if possible. It doesn't matter if a problem is their fault you need to go out of your way to make them happy.

When it comes to developing applications one of the bad traits developers get into is doing things because they are easy to code, rather than because they are easy to use. There is rarely a time where it is a better policy to make the developer's life easier at the expense of the end user. Of course, if possible, you want to make every ones life easier.

One of the most useful things a developer can do is to actually watch customers use their applications. It is amazing how "features" that you are proud of get used and abused by them and you can quickly see things that are poorly designed. Another practice that pays off in spades is to spend a day answering calls from customers and use the tools provided to the customer service staff. Nothing shows the flaws of a system like actually using it under fire!