Thursday, June 26, 2008

Spring - Xerces classpath clash!

If you have problems with your Spring application and you get such error message:

org.springframework.beans.factory.BeanDefinitionStoreException: Parser configuration exception parsing XML from file [...\applicationContext.xml]; nested exception is javax.xml.parsers.ParserConfigurationException: Unable to validate using XSD: Your JAXP provider [org.apache.xerces.jaxp.DocumentBuilderFactoryImpl@6d0040] does not support XML Schema. Are you running on Java 1.4 with Apache Crimson? Upgrade to Apache Xerces (or Java 1.5) for full XSD support.

you have a big problem ;) In my project the problematic dependency is commons-jxpath that includes xerces-1.2.3. If you use Maven 2 solution is quite simple:


But it could cause real problems in runtime - test your stuff properly before committing such exclusion because someone else could depend on Xerces in this version. If that's the case I don't know how to solve it right now.

Friday, June 20, 2008

How to fire the whole IT department?

A friend of mine sent me this link today: I wonder whether our team's manager played version 1.0 last year before we were laid off. It would be funny if it weren't stupid ;)

Anyway Intel is a nice company (you can learn a lot, travel a lot and earn a lot) but some managers really suck.

Be Agile! (and peace out)

Tuesday, June 10, 2008

Bjarne Stroustrup on C++ 0x

Today I attended lecture given by Bjarne Stroustrup (creator of C++) here in Sophia Antipolis. He presented short overview on C++ 0x standard (where x is supposed to be 9 i.e. it should become ISO standard in year 2009) - previous C++ standard was established in 1998.

Bjarne Stroustrup presented couple of interesting examples of "new features" in C++ and I must admit that C++ standardization community took some good stuff from Java (I really don't care who was first so it is possible that Java took it from C++) e.g. simplified for loop. Another good idea is that C++ guys see the power in libraries and see that libraries don't have to be a part of the language. This is what I've always loved in Java (of course some people refer to it as Jar-Hell but they suck in their own misery :) and I don't care about them) - you have a language with some basic feature set and you can download powerful libraries that do good to you. In fact Sun made some heavy s**t quite recently incorporating into JRE everything what it could incorporate (Concurrency, Logging, Apache Derby, etc.) but they know it and probably (I don't follow the news) Java 7 will be light end pluggable.
As you can see C++ standardization community try to incorporate some good ideas. I want to emphasize word "good" because they really want to make C++ easier (Bjarne also stressed necessity to make C++ easier to teach and learn).

At any rate today's most important message for me was Bjarne's description of standardization process: it's slow, bureaucratic and democratic i.e. sucks.

God bless Sun for not standardizing Java!

Well, in fact Java is a standard - there are many JVM providers and they are all compatible - there is only one JVM specification. Of course for many years Sun was the only owner of the Java technology but many companies contributed to its evolution. And what...? It made it only good. Now (not very much now :) Sun decided to make Java open (it was almost always open but in read-only mode) - we all can contribute in JVM or Java compiler development (for example). How will that end? I don't know but definitely Java is evolving faster than C++, Java communities thrive and flourish, Java IDEs are awesome and free of charge, etc. If Sun decided to standardize Java would it be so good now? I don't think so.

My conclusion is that standards are OK but they do not apply to every aspect or technology of engineering. It's good to have a standard TV or electric socket format, it's good to have a steering wheel and pedals in the same place and working in the same way in cars but it's not a good idea to standardize programming languages. Why? Mainly because programming languages are too complex, standardization process takes ages and people just can't wait 10 years for improvements. It's sick! I think that C++ is a very good general-purpose language but it could be even better without standardization.

Monday, June 09, 2008

Scrum teaser

I prepared Scrum presentation for engineers in consulting company I work in and I had to make up some teaser to make people interested in coming to this event. I actually didn't make this thing up but plagiarized (shame on me! ;) Ken Schwaber's book. I think this a good yet very very shallow Scrum introduction for morons.

Most people responsible for managing projects have been taught a deterministic approach to project management that uses detailed plans, Gantt charts, and work schedules. Scrum is the exact opposite. Unlike these tools, which practically fight against the project's natural momentum, Scrum shows management how to guide a project along its optimal course, which unfolds as the project proceeds.

One of the reasons why Scrum works is that it dramatically shortens the feedback loop between customer and developer, between wish list and implementation, and between investment and return on investment.

Scrum doesn't focus on delivering just any increment of business value; it focuses on delivering the highest priority business values defined by the customer (Product Owner).

Scrum turns small teams into managers of their own fate. Scrum Teams accept a challenge and then figure out how to meet that challenge, detouring around roadblocks in creative ways that could not be planned by a central control and dispatching center.

Nice, huh? I wish these were my words :)