Wednesday, July 18, 2007

LOG4J configuration and JAR libraries gotcha!

I experienced unexpected behavior of LOG4J library. The problem was that I modified configuration of LOG4J and I added SMTPAppender but I forgot to distribute required JAR libraries (activation.jar and javamail.jar) into production.

The outcome was that LOG4J library was not initialized correctly and commons-logging library simply started to send INFO level messages to standard output (not to FileAppender and SMTPAppender). It is not that surprising, however; the problem is that I didn't have a chance to learn that LOG4J was not initialized due to missing JARs.

Is there any easy way to avoid such issues if Maven (or other options) can not be used and one have to rely just on Ant for particular project?

I was thinking about this again and I think there should be a proper way how to learn about this issue - checking error output. I haven't had a chance to test this theory yet but I think this should be a way to go (assuming commons-logging does not swallow important messages).

Tuesday, July 17, 2007

I lived on the Moon

A short film called I lived on the Moon is a beautiful music animation.
Link found thanks to Drawn!

Monday, July 16, 2007

Google Maps street level - new experience

I have never been to San Francisco. But now, thanks to new Street level feature in Google Maps I can experience one of the most crooked street (Lombard St) in an very impressive way! I am amazed :-)

Monday, July 9, 2007

Podcast: Basics of SW analysis

I found a nice podcast about SW analysis (in Czech language only). Slides available too.
I like part starting at 01:15:12 (about time estimations).

Sunday, July 8, 2007

Collection sort method and Java Generics - how to

I was looking into one of my old Java source files and found out that I was struggling with correct syntax of Collection.sort() method using Generics when Java 1.5 was released.

Correct syntax is Collection.<CustomType>sort().

[Excerpt taken from 1]
The sort static method is designed to work with a class T that implements Comparable on T or some superclass of T [see 3], e.g. Object. (Infuriatingly, generics use the term extends [see 2] when they really mean implements).

[2] Collections.sort()
[3] Comparable.compareTo()

Friday, July 6, 2007

Living in Three Centuries - The Face of Age

This seems to be an interesting exhibition project. Black and white photographic portraits of very old people. Notes & quotes section is also worth reading.

Tuesday, July 3, 2007

Pavel Kohout is blogging again

Pavel Kohout is blogging again. I am looking forward to his posts! Actually, I am reading one of his books right now and I found it very interesting (I think every software developer should have some kind of economic education :-).