At Insurance.com, neé ComparisonMarket, we did a lot of work on a pretty normal Microsoft stack of software. At the end, it was mostly based on C# with bits of C++ that were still leaking through from the code that we originally inherited from Progressive Insurance, one of our investors.
When I moved to Amazon I was mired Java.
I don’t much fancy Java at all. It’s a messy language in my opinion based on some of the early decisions that Sun made.
Some of those decisions were based on some religious principles at the core of the language, things which are strictly not needed should not be added was basically the argument. The canonical example of this is the frustrating lack of function pointers; just because you can make something work with an explosion of interfaces doesn’t mean that you shouldn’t include them.
The other side was the lack of breaking compatibility when moving from Java 1 to Java 2. Generics were hacked onto the system in a very messy way and that legacy has been a sore point ever since.
.Net seems to be far saner in my opinion. It also has the advantage that there is strong leadership in terms of how the framework is growing. Java, on the other hand, has umpteen different, incompatible frameworks for everything.
I started to code up the PastPhoto site in Ruby over the summer… but I think I’m going to swap that over to C# at this point. I just like it more.