Saturday, January 19, 2008

JavaZone 2008... Rocks!

JavaZone 2008 has opened Call for Presentations!

I have been to quite few conferences, and I have to say, JavaZone is probably the best one.

So you are wondering why...well let me tell you:
  • JavaZone is for everyone - basically anyone can give a talk here (if the quality is good enough).
  • JavaZone is about what is hot - they get the best speakers in all categories of Java development.
  • JavaZone is not just about what is hot - they get talks about what was not so great, and what you probably should do, in stead of believing the hype.
  • JavaZone is created by volunteers, for volunteers, for the community.
  • No "product presentations" - you cannot buy a slot for a presentation at JavaZone, your presentation has to be relevant and good enough to be accepted.
  • Its a great place to make new contacts and friends.
I guess one of the really good things about JavaZone, is that is non-commercial. They have a program committee which is not paid off in any way, they just choose the the best talks. This does not mean that they do not have sponsors, but sponsors are treated equally to anyone else who wants to send a Call for Presentation.

I am not the only one who think JavaZone is great:

"This show is definitely similar to JavaPolis in many ways. You can tell that the conference committee has a lot of fun with it and the show is huge. I think these beat JavaOne hands down." --Dion Almaer's blog.

"JavaZone totally… Rocks!" --Alex Popescu's blog.

I hope to see you in Oslo in September. And please, if you have something to tell the community, send JavaZone a presentation proposal!

Check it out: http://www.javazone.no/

Wednesday, January 9, 2008

Programming language performance

Newer versions of Java executes really fast thanks to the innovations of hotspot and especially Java 6. But how fast is it actually compared with other languages. 

I stumbled upon an older blogspot posting by Charles Nutter, one of the developers on JRuby, called Alioth Numbers for JRuby 1.0. In the post he talks about performance benchmarks done on JRuby compared with Ruby.

The posting is based on performance benchmarks from The Computer Language Benchmarks Game project. This is an open source project, with the following statement on site's front page:

Benchmarking programming languages?

How can we benchmark a programming language?
We can't - we benchmark programming language implementations.

How can we benchmark language implementations?
We can't - we measure particular programs.


I don't think this project has gotten the attention it deserves in the Java community. It seems to me like the only serious attempt to compare different language implementations and their performance. This should be of special interest when comparing different languages running on the JVM.

The project compares 40+ languages with 18 different benchmarking programs/algorithms. Among the languages are Scala, Groovy, JRuby, JavaScript Rhino, and various versions of Java.

The fun part is to change the weighting of the test programs to try to make your favorite programming language rank higher.

Finally we have actual benchmarks to back our discussions on which is the better language, with regards to performance.

Go try it out!

Wednesday, January 2, 2008

My new favorite Java framework: Terracotta

I love frameworks that promote non-intrusiveness. For me Terracotta is the definition on non-intrusiveness, it offers no API.

Terracotta is a framework for clustering java apps. It has many use-cases and the most common are as described by the Terracotta site:
  • Distributed Caching
  • Hibernate second level cache clustering
  • HTTP Session clustering
  • Virtual Heap for Large Datasets
  • Clustering OSS Frameworks
  • Master / Worker
  • POJO Clustering
Terracotta works at the instruction level of the JVM, and it manages objects in a completely transparent way for the developer. In most cases you can add Terracotta clustering after the code has been written and get all the benefits without much work.

Since Terracotta is so transparent to the program, it might seem like a bit too much magic to some. I believe this is one of the reasons that some developers turn to other API based frameworks for clustering. However, Terracotta has been proven many times, and the Terracotta team is currently working on publishing many case studies from well renowned customers, according to Ari Zilka, the founder of Terracotta. I had a really nice chat with him at JavaPolis.

Their current customer brag list:
http://www.terracottatech.com/customers.html

Another really cool thing about Terracotta is that they offer commercial support. They actually let you buy an enterprise subscription, which gives support with guaranteed response times. This also provides indemnification assurance, which I have never heard has been done on other open source projects. I have worked for several companies in the public sector, which won’t touch a framework it they cannot buy support. I guess they have no excuse not to check out Terracotta.

Check out the Terracotta Enterprise subscription:
http://www.terracottatech.com/buy.html

You don’t have to buy a subscription to use Terracotta, of course, it’s open source! More precisely, it is a slightly modified Mozilla Public License:
http://www.terracotta.org/confluence/display/orgsite/Licensing

A final note, just download it and try it out! You get a really good impression on what it’s all about just by checking out the demo apps. Unzip the archive, and then it is basically one click to go.
http://www.terracotta.org/

Wednesday, December 26, 2007

10 characteristics of a bad developer

We meet them all the time, but we hope that we won't have to deal with them on our next project. Sadly there are many developers that fall under this category. Are you one?

I think it is important to distinguish between a bad programmer and a bad developer. Being a programmer, delivering code is one part of our job. But being a developer, making the project happen, is much more than just delivering code; it is working in a team, sharing knowledge, and most important, helping the customer get the product they need.

I have met great programmers, which are poor developers, and vice versa. However, the two are often related, and then you basically just have a bad resource.

In my opinion, being a bad developer is a lot more expensive for a project than being a bad developer.

Here is my list of top 10 characteristics of a bad developer:
  1. Has a big ego and is more interested in his/her own success than the success of the team/the project.
  2. Does not want to share knowledge of technology or domain.
  3. Protects his/her own code at all costs, that is, does not let others criticize the code.
  4. "Never does anything wrong".
  5. The best defense is an offence. Attacks others before they can attack them.
  6. Writes code in their own style, they are above any standards set by the project.
  7. Only accountable when it suits them.
  8. Often leaves others to solve their problem.
  9. Talk about other team members behind their backs.
  10. Usually delivers poor quality work, but not because they cannot do better, they just don't care to.

10 characteristics of a great developer

There are plenty of blogs on this issue, but here is my interpretation of the characteristics of a great developer. I have worked with a few, and I strive to become one myself.

  1. Expert in communication. Can communicate successfully with any person on any level of any organisation.
  2. Always looking for improvement. Even when things are great, they can always be improved.
  3. Never (or rarely) present a problem without possible solution(s). It is easy to find problems, it may be hard to find good solutions.
  4. Never (or rarely) say no to inquiries. Always takes time to help both the team, and the people around.
  5. Is constantly critical about code. Always seek to improve his/her own code as well as others.
  6. Thinks of every line of code as equally important. Never writes any code without purpose. Always rationalise every line.
  7. Knows something about everything. May be an expert in one field, but has enough knowledge to have constructive discussions on the matter.
  8. Constantly seeking new knowledge.
  9. Constantly helping others become more knowledgeable.
  10. Is always accountable for own actions.

Tuesday, December 25, 2007

The FIVE DYSFUNCTIONS of a TEAM

Do you work in a team and feel that team efforts are wasted, that meetings are boring, and that your team members doesn't really help you at all. Well, you are probably a part of a dysfunctional team.

Patrick Lencioni's leadership fable is not just amusing to read, it also gives great insight into how to deal with team dysfunctions. The fable introduces us to seven team members, most of which you can relate to some of your current team members. But the problem at hand does not really relate to one or more individuals, but how these individuals interact as a team.

The book is easy to read, you easily finish it in a day, and it makes only a few (5 actually), strong points on how to improve you teams productivity.

I read this book, because if was recommended by the Scrum book "The Enterprise and Scrum" by Ken Schwaber, a fine book on Scrum.