TheServerSide communities are now running on Tapestry on the front end, and Kodo JDO for the data access.

We had known for awhile that it was ready for a change, and it was an interesting experience choosing what we wanted to port TSS over too.

There are many great web frameworks, and data solutions, but we definitely ended up happy with what we got.

The port was done in record time, in no part thanks to having Howard Lewis Ship on the team. If you are ever doing a Tapestry project, you owe it to yourself to bring him in for a bit. Not only does he obviously know Tapestry inside and out, but he is just a top class developer which great ideas!

Looking at the before and after version of TheServerSide is very interesting. Now TSS has a great, component-based version which is easy to extend. Before, it was always a fight to change / add anything.

It also doesn’t hurt that the site is faster and more stable than ever before. Kodo JDO has been top notch on that scale, and it has the solid Tangosol Coherence under the scenes as the distributed cluster technology.

We shouldn’t have to think about this, and languages like Groovy let us get around it. Since, I like this, I decided to back-port the idea into Java code, so now I have the following available to me in Java:

Iteration.each(collection, new ObjectUser() {
public void use(Object o) {
// do something with the element from the collection
}
});
Iteration.each(objectArray, new ObjectUser() {
public void use(Object o) {
// do something with the element from the Object[]
}
});
Iteration.each(string, new ObjectUser() {
public void use(Object o) {
// do something with the Character from the String
}
});

We shouldn’t have to think about this, and languages like Groovy let us get around it. Since, I like this, I decided to back-port the idea into Java code, so now I have the following available to me in Java:

Iteration.each(collection, new ObjectUser() {
public void use(Object o) {
// do something with the element from the collection
}
});
Iteration.each(objectArray, new ObjectUser() {
public void use(Object o) {
// do something with the element from the Object[]
}
});
Iteration.each(string, new ObjectUser() {
public void use(Object o) {
// do something with the Character from the String
}
});

“A new grid computing climate research project, climateprediction.net, has come up with its first major results, and they’re really not good news for the planet according to the BBC. The simulations suggest that over the next hundred years we could see average rises of average temperatures of up to 11K, more than twice what was previously thought.”

Scary stuff. I talked to someone who worked at NASA trying to work out the effects of our abuse on the planet (were we seeing natural changes in climate?) and after 10 years the results weren’t good then, and these look worse.

Of course, the first question that comes to mind, is what do you want to standardize?

The AOP Alliance got together several years ago, and gives you an API for dynamic proxy impls to play nice together (you can reuse advice and such with Spring AOP, dynaop, AspectWerkz, etc). However, the effort has stalled to some extend (maybe because it has done its job).

I think people wanted standardization because they wanted to be able to plugin different AOP systems like dynaop/Spring AOP/AspectWerkz/AspectJ. But we haven’t been in a place to do that yet, as the different platforms were really very different. We also don’t want to restrict to a low denominator too early, as we need to allow different frameworks to experiment and push things.

The AspectJ and AspectWerkz merger may well be the end of standards talk. When AspectJ 5 comes out it will be a top solution. We will have the full power of the AspectJ semantic model, yet for those who want it, they can use a Java/annotations view of things versus the AspectJ language.

AspectJ 5 will become the absolute de facto standard. I think it will be great for AOP as people will be able to get stuck in, and move on to more interesting problems, such as practices for using AOP, and even the holy grail of reuseable, REALLY USEFUL aspects :)