Blog moved...

This post is a reminder that this blog has moved to http://andersnoras.com/

Please updated your subscriptions:
    RSS 2.0: http://andersnoras.com/blogs/anoras/rss.aspx
    ATOM 1.0: http://andersnoras.com/blogs/anoras/atom.aspx

Blog moved...

This post is a reminder that this blog has moved to http://andersnoras.com/

Please updated your subscriptions:
    RSS 2.0: http://andersnoras.com/blogs/anoras/rss.aspx
    ATOM 1.0: http://andersnoras.com/blogs/anoras/atom.aspx

HTTP 301: Blog moved!

Hello faithful reader!

This blog has moved to http://andersnoras.com/blogs/anoras

Please updated your subscriptions:
    RSS 2.0: http://andersnoras.com/blogs/anoras/rss.aspx
    ATOM 1.0: http://andersnoras.com/blogs/anoras/atom.aspx

I'm back!

I've just returned from the JavaZone 2006 where I gave a talk entitled "Our Stuff, Your Way - Developing Microsoft .NET Applications with 'Java' Frameworks", and reckoned that this would be a good occasion to get back into blogging. I've had a super busy few months, so this conference was one of the few chances I've had to go out and meet industry coleagues in a while. Judging by the number of sessions I actually found time to see, I suspect it was by time I went to an event like this.

 

On Tuesday I went to the speakers dinner party were I got to meet a few living legends such as Mary Poppendieck, Rod Johson and Gregor Hophe to name a few. The latter also put on a "Drinks are on Google" party at the sky bar of the hotel later that night. I had one or two drinks too many on Google, so I should really go click some ad-words to pay them back.
Wendsay mornig I did my talk on developing .NET applications "the Java way". I was a bit disappointend by the attendance, but the people who were there seemed to enjoy it. (http://blogs.ittoolbox.com/bi/confessions/archives/JavaZone-06-Day-1-11659). My talk was a quick run through of how Java developers could just their knowledge of popular frameworks like Spring and Hibernate, to develop .NET-apps with the ports of these frameworks. To close the circle, I rounded it off by showing off how one could apply some voodoo magic to program directly against log4j, or any other Java library, from within a regular .NET application. This was without doubt the most popular demo in my presentation, and also the demo that spawned the most questions.  You should find the slides from my talk here: http://217.199.33.59/jz/2006/slides/4513.pdf

The session was both recorded as a podcast and video with intention to publish after the conference so stay tuned to links to those as well.

 

After lunch, I met up with Bruce Tate, the author of the "Bitter Java" and "Beyond Java" books, to sit down an do a back-to-back comparision of C# 3.0 and Ruby. As allways, LINQ is impressive, but C#'s extension methods aren't nearly as cool as some of the stuff you can do with Ruby mixins. I'll try to write a proper post on this some time soon.

 

I rushed off to do a panel discussion on SOA immediatly after my meeting with Bruce. The panel was a meet the experts forum, where the conference attendatnts were taking part in the discussion. Apart from myself, people like Interface21's Arjen Poutsma (http://blog.springframework.com/arjen/) who is the dev lead of the Spring Web Serivce framework, Mads Nissen and IBMs Gobal Sales Manager for their WebSphere suite, amongst others. We made no real, hard conclusions, but there seemd to be a consenus that a service's data was more important than its operations and that contracts should be spilt in operational and data contracts.

 

Wedensday night was party-night. Being tired from the night before, I kept my cool and went home after having a beer with Kevlin Henny and chatting about lean methods, kids and moving house.

 

Thursday I had a long meeting with Microsoft's Jürgen Pfeifer mostly about my current project which I can't tell you much about due to a NDA, but it's a large service oriented application for an insurance company. Naturally our talk was around SOA-stuff like orchestration and governance.

Later I gave a more detailed version of my "using JAR's from C#" demo to Alexandru Popescu (http://themindstorms.blogspot.com/), extending it to also using .NET assemblies from a Java application. It was the first time he'd seen a thing like that done, and I was real cool to help him out with a problem he'd been think about for some time.

 

During the entire conference I only saw one presentation, which was  Erik Doernenburg (http://erik.doernenburg.com/) and Gregor Hohpe's (http://www.enterpriseintegrationpatterns.com/ramblings.html) talk on software visualization. The rest of the time I just hung around, talking to people. This is one of the cool things about the JavaZone conference, the atmosphere is really laid-back and allmost every session is either web or podcasted, so you can catch them after the conference. This year it was all networking and having a fun time for me.

IKeyComparer?

The preperation guide for 70-536 Microsoft .NET Framework 2.0 - Application Development Foundation points to the IKeyComparer and the IHashCodeProvider interfaces as fundamentals you should be proficient with before taking the test. There is no such thing as an IKeyComparer interface in the .NET Framework 2.0 - the interface was removed after beta 1. The IHashCodeProvider interface has been marked obsolete in .NET 2.0 and you should use the IEqualityComparer interface instead.

The beta 1 design of the IComparer interface grouped all comparison related methods into a single interface to avoid a common design fault from .NET 1.1, where one could pass an incompatible pair of IComparer and IHashCodeProvider to the Hashtable constructor. After shipping beta 1 of .NET 2.0, Microsoft split their original IComparer interface into the IEqualityComparer and a new definition of IComparer after realizing that the new design introduced incompatabilies with classes that currently didn’t implent IComparable and that the IComparable.CompareTo(T) method required types to have natural ordering.

The IKeyComparer was in essence both an IHashCodeProvider and an IComparer that was intend