Friday, May 9, 2008

Best Quote at JavaOne '08

"It's essentially impossible to avoid Swiss cheese." --Gil Tene, Azul Systems

Want to guess about the context? :)

Update: I think I've allowed enough time for everyone to guess. Jeff, with his more serious answer, was the closest. The quote came from the Q&A period that followed a Friday morning technical session, Performance Considerations in Concurrent Garbage-Collected Systems. Gil was explaining that whatever form of memory allocation you use, you'll eventually end up with memory fragmentation. In a JVM, if you use a garbage collector that's both parallel and concurrent, cleaning up that fragmentation can be done without a stop-the-world pause. Conveniently enough, the JVM that comes with Azul's boxes can be run in parallel/concurrent mode. :) Sorry that the quote is less funny when put in context.

Wednesday, April 16, 2008

Great Saturday Night Live Skit

A friend sent me a link to a Christopher Walken skit on Saturday Night Live. It was so funny, I had to post it. Mr. Walken and odd humor - the perfect combination.

Wednesday, April 2, 2008

RightScale - managing Amazon EC2 instances

I was recently reading some postings on High Scalability and came upon one discussing some cool new features in EC2. It also mentioned a company, RightScale, which has a product for automatically managing your EC2 instances, including automatically launching and killing them based on spikes in demand. The company also has a good EC2-related blog, which unfortunately seems not to have an available RSS feed (odd!).

Saturday, March 8, 2008

Groovy versus Scala

After looking at Groovy and Scala for a bit, I've come to a decision about how I plan to learn and work with them in the near future. I'm going to learn and use Groovy first and then move on to Scala. In this post, I'll explain why.

First, I'll cover the areas in which I see the two languages as similar. They are both script-friendly, object-oriented, can integrate easily with Java libraries and run on a JVM, and make heavy use of closures. Once you're familiar with either of the languages, it's obvious that they'd be great for dashing off a quick script. At the same time, their fundamental OO natures helps you produce (but does not guarantee!) maintainable code. Being able to use and interact with Java code means that you can take advantage of investments in existing technologies and that you can gradually transition a code base from Java to Groovy or Scala. Closures are a very succinct, clear way of expressing solutions to a lot of common problems. Whether or not Java gets them as a language feature, they're unlike to work as well in Java as in these two languages, where they haven't been shoehorned in.

Of course, there are also ways that the languages and developing in them are different. Scala has a greater emphasis on functional programming, has implicit static typing, and (having looked at a decompiled bytecode generated by scalac and groovyc using Jad) appears to translate into tighter code. On the other hand, Groovy looks much more like Java (making the transition easier), Sun has endorsed Groovy, the development tools for Groovy are currently in better shape (and that's without trying what they've got in NetBeans), and Grails seems like a very promising application framework.

So, when I put all of those considerations together, blended them a bit, and took a drink, I decided that Groovy should come first. It helped me make the decision to realize that whatever time and energy I put into Groovy should pay off when it comes time to move on to Scala. I think the languages require a similar mindset and follow similar enough philosophies that once I've got one down, the other should be substantially easier.