December 29th, 2002

RSS feed on a Wiki. Nice. Useful. Should be done more.


December 29th, 2002

Community antipatterns, from the when-I-have-time-to-spare department. Thanks, Steven.


December 26th, 2002

The more frequent visitors of my blog may have noticed that I've been raving about some itches recently (and even not so recently). While writing all these, I thought I was feeling the constraints of time, being a young dad and all. But this morning, it hit me: I wasn't feeling a shortage of time, I was feeling Waste. Waste of time, yes, but also waste of energy, waste of opportunities, waste of happiness, etc etc.

Let's have a look at the more obvious subjects of my ravings:

  1. Traffic jams. They're not only a waste of time, they're also a waste of energy. Instead of being at work in 20 minutes, it takes me 1 hour. That's 40 minutes of my lifetime that basically has disappeared in void. Multiply that by 200 (about the number of days I work a year), and it makes you depressed. Moreover, it's also a waste of energy. While I know it's no use to be mad because the car before me leaves a gap of 100 meters, I can't help myself. Frustration overboiling. The waste of opportunities is pretty obvious (I can use this time for being with Lowie, my son, or Sandra, my girlfriend, or Dora, my cat, or Gonzalez, my PC ;) ) The waste of happiness is a consequence of all of the above.
  2. Linux. Well, maybe this is a bit too general. Linux is not a waste of time or anything else, if you want to learn how a computer works (or, as some like to say, how some computers work). However, if you want to learn something else, or just want to get other work done, it gets in your way. What gets in your way, has to be removed. If it's in your way, you'll feel unhappy about it, and no longer consider it as an opportunity but as a waste of time.
  3. "Community blockers". I like a good discussion. I enjoy a good discussion. In fact, a good discussion opens your mind, refreshes your view, learns you something. However, I despise a discussion for the sake of discussion. "Here's something I can bitch about, let's do it". This takes away so much time of the people that want to get things done, that they will get unhappy and turn away. And instead of a win-win situation (one offers advice, the other implements it), you now have a loose-loose situation (nothing gets implemented, and there even is nothing to bitch about anymore). For the sake of honesty, I have to admit that I have been tempted to do that in the past. That was before I realized that the people writing and reading those mails were real people. They're not part of your PC, you know, they are real living human beings, with good qualities, sensitive points, and everything else that constitutes a human being. If you think about this right before you press ctrl-enter, you won't press it in many cases. Stefano.
  4. Administration. I'm one of those "lazy" guys. If I'm going to program a string-reversion method, I don't think giving my project manager a detailed time planning for it is useful. If people know I'm in the office every day for 7h36m (overtime is not accounted for anyways), I don't know why I have to put that on a piece of paper every month and get it signed three times. If I want to contribute something to the better of the world, I don't know why I have to worry about GPL/APL/license of the day. Administration gets on my nerves. I want to take one step forward, and I have to take 3 others, totally unrelated ones in my view, in order to do so. This is a waste of energy, of time, of happiness, ... well, all the ones I mentioned already :-)
  5. NullPointerExceptions. If you're a Java programmer (or any other programmer, for that matter), you know what I'm talking about. Programming is fun. NullPointerExceptions aren't. While they're mostly your own fault, they are frustrating. They get on your nerves. They make you unhappy.
Life is supposed to be about having fun. Each and every point of the above is fun for some people (although I don't know about the traffic jams -- I suppose you have to be a bit masochistic for that). It's fun to learn the ins and outs of your pc. It's fun to have an open discussion with your peers. It's nice to have a clear idea of what you're doing and where you're going. It's fun to spend two weeks working on some code, and then finally have a sprite that moves across your screen. But I seem to have come in a point in my life where the downsides of all of them have become more obvious to me than the upsides. Time to stop moaning, and to find a solution. I have the feeling that the previous switch isn't going to be the only one.

A final note: don't forget that the title of this blog is not "Thought".


December 24th, 2002

From De Standaard:
Zelfstandigen werken (te) hard
BRUSSEL -- Zelfstandigen stoppen zoveel tijd en energie in hun zaak dat er (te) weinig tijd overblijft voor het gezin of voor vrije tijd. En door de stress en het gebrek aan vakantie kampt een op de drie zelfstandige ondernemers met gezondheidsproblemen. Volgens Unizo zijn er dringend maatregelen nodig om de levenskwaliteit van de zelfstandigen op te krikken. (...)
This one is going with my previous one in my upcoming "Time" blog (together with a translation) ...


December 24th, 2002

People enjoy the same stuff everywhere: Greg's spent a day with his son. I did the same yesterday with mine, because he was sick. I just called to work to say I wouldn't come in, laid in the coach, put Lowie on my belly (that's his all-time favorite location), and just laid. And laid. It certainly was one of the finer moments of the past few months.

I'm one of those romantic guys who think that spending time with your family is important. If I could save 1 hour every day commuting, I could spend it on being with my son. One whole hour a day. Just me and my son. That beats "community"-based ranting and raving any time. A community is a place where people gather together to reach a common goal. It's not a market place where you just stand on a craddle and start insulting and discouraging other people. Alas, it's the second one that I see more and more going on. So expect me to spend more and more time on my son.

Hmm, this one seems to be a bit confused. I'll try to iron it out next time. I just wanted to mention Greg's good times anyways, but the rest just spilled the rim.


December 24th, 2002

Auch. Maybe we should first raise a committee to decide who is to be in that committee? But before we can do that, of course we need a committee to put down the rules of voting for that committee. Who's going to be in that ruling committee? Maybe we should write an RFC for that. Is anybody volonteering for writing that RFC? No? Damn Apache... nobody volunteers for anything anymore...

Seriously: if you want to contribute something to Apache these days, it seems like you better are a good lawyer. Not for the licensing stuff, no, but to wade through tons of "internal" documents describing what you have to do and what you cannot do. Add to that the huge amount of politics (including the opposition, which is very Belgian: just block every move from the majority), and a lot of the fun of working with a community is blown away. Of course, there are people thriving on stuff like this (you know who you are). But that are not the ones who code.


December 22nd, 2002

Nice tool if you're transferring your files from an ext2 file system to a Windows environment: explore2fs.

Star Wars II

December 22nd, 2002

Saw ATOC yesterday. Just a quick note to tell you that I liked Yoda jumping around like a pinball. I thought it would be a bad move from George Lucas, but I enjoyed it.

The Switch

December 22nd, 2002

Well, I've given in. After 10 months of Linux, it's been enough. I looked back last week, and saw nothing but frustrating installing routines and tons of HOWTO's, but very little actual work done. Yes, now I know how a font is rendered on a LCD screen, but how's that going to help me in developing an intranet application? And when I wanted quickly to install Eclipse, to be more productive, I was started for 3 days of frustrating poking around. Enough is enough. I only have that many hours in a day, and I don't want to waste them anymore on things that are done in seconds on a Windows PC. I've lived 10 months of tiny frustrations and tiny victories. Victories are just easier to achieve for me on W2K. I don't want all those nice features that Linux offers you, but that are only interesting for sysadmins. What I do want, is to plug an USB mouse in my laptop and start using it. What I do want, is to be able to scroll my window by touching the sides of the touchpanel. Even more: what I do want, is a decent RSS aggregator. And Aggie is the best one I've encountered so far. I know about Mono, but I refuse to spend a week on trying to install Mono, when .NET is installed by checking a box on

Don't get me wrong: I still believe OSS has a feature. But as things are today, you have to master the underlying technologies in order to use it. I'm still madly in love with Cocoon, but I do know how to run ant, and where to find a jar. I know jack shit about C/C++ development, and I don't even get how you're supposed to install gcc. To let alone the version hell of glibc and collagues.

Maybe I'll turn back in a week or so, when I've encountered the zillionth blue screen of death, but believe me, the zillionth "glibc not installed correctly" gets on your nerves also. And makes you feel like a complete idiot, a feeling that I don't like at all. See you all next time, I'm going to now...

Exception tracking

December 20th, 2002

Free Java tip of the day: If you're hunting down an Exception somewhere, get the stack trace! Some people like the "concise" System.out.println(exc.getMessage());, which isn't of much help. I've just seen some people that I thought knew a bit of Java, looking at an error message ("NullPointerException"), and at some code, trying to guess where the error occurred. tomK's rule #412: a NullPointerException always occurs on another place than you think. You'll end up spending several hours trying to fix an NPE that wasn't there in the first place. The first thing you should do when you have to fix an Exception like this, is to get the stack trace, recompile, and re-trigger the bug. To make life even easier, include the stack trace when writing the code (in a file! exc.printStackTrace() is useless when running on a server).


December 18th, 2002

It's been my son's first day at the creche today. I got to play the hearthless dad that leaves his child with some complete stranger, and my girlfriend was the loving mom that came to pick him up...

Anyways, time to put up his photo ;)

Nicola Ken

December 16th, 2002

Auch, Nicola Ken seems to be a bit blue. From what I can tell, he's experiencing some or several of the following, to which I'm not totally immune either:
  • Winter. It's cold and wet in Europe during winter. Everybody longs to live in California these days.
  • The world. It's not such a nice place as you thought it was when you were a kid.
  • Lack of recognition. You're putting a lot of voluntary work in some projects, and you don't get any feedback. Even not "hey Nicola, thanks, I'm using your stuff!".
  • Everybody out there wants to live on your effort. Everybody wants what you're making, but nobody wants to contribute to it. Combined with the previous one, this is a killer.
  • Too high expectations. I read this once in a comic on the web (forgot its URL though :( ): "I was expecting we were going to make one great breakthrough after the other one. I didn't expect to just go to work and make money." I guess a lot of techies/geeks/whatever you call yourself/... are experiencing this.
I just hope this link increments Nicola's referer count, so that he knows he's not alone out there :-)

REST reading progress

December 13th, 2002

I've been scanning the REST paper quickly. From what I've seen so far, this is REST in a nutshell:
  • everything is a URL, and
  • everything is stateless.
This is
  1. one guy's wet dream of the Web, and
  2. the goal I (and many other web application developers, I suppose) have been prosecuting for several years now. Yes, you probably too. Have you ever said "I don't like sessions. Sessions are bad. Sessions expire." ? Then you're supposedly a REST-guru without you knowing it :-)
That said, I know that this is a hard goal to reach ("Put the object in the session, it's soooo easy!" - "Yeah, you're right, there's a deadline coming up.") and I'm curious if the paper will reveil magic solutions for this. Object of the next 5 minutes of time.


December 13th, 2002

During my college studies, I've seen many algorithms of which I thought "Hmm, nicely done, but will it ever have any practical value in the rest of my life?" Dijkstra's graph coloring algorithm was one of them.

Now, I'm working on a supply chain planning project. And one of the things I have to check is "We have a number of facilities with delivery lanes between them. We have to take care that no closed loops are created between those facilities." Up came Dijkstra's graph coloring algorithm (to my utter astonishment).

Lessons learnt:

  • it never hurts to learn lessons
  • it's hard to find a link explaining Dijkstra's graph coloring algorithm. I'm even doubting now that it was Dijkstra's. If you know a page where the closed-loop detection algorithm is described, feel free to send it to me (I've got it on hardcopy, but I'm not going to type that over ;) ).


December 12th, 2002

Did you notice the current hype around REST? Everybody seems to be talking about it, but nobody seems to link to some explanation. I decided to make the world a better place: what I think all the fuzz is about.

First observation: you can get titles in "DOCTOR OF PHILOSOPHY in Information and Computer Science" nowadays. I wish I knew that sooner. Seems like a very nice study field.

Second observation: doctors of philosophy are wordy. If someone could send me a summary, I would be much obliged :-) On my to-read list for now. Comments later.


December 12th, 2002

I agree with him. I think in general, the type-appending is A Bad Thing. If my variable changes from an int to a long, I don't want to change its name. If Person is a class, and suddenly I want it to be an interface, I don't want to go through all of my code to change it (moreover, if I'm maintaining an API, I don't want the users of my API to have to change their code).

'nuff said. Just a "me too" post.

Wanted: DB cache

December 9th, 2002

I'm on the lookout for a DB cache: if I have one JVM that's running to update a DB (and I can guarantee it's the only client of the DB at that moment), it should be possible to have a in-JVM cache for the DB: have several inserts and updates, and have selects that can take these writes in account. Once in a while, the cache is flushed. The cache would be the interface we talk to, and it delegates stuff to the real DB as necessary. Am I the first one with this itch?

Update: looking into JCS (gotta love Apache) and JSR 107 (which seems like a work in progress).

Job Hunting

December 9th, 2002

Seems like somebody else also has read the SlashDot article on job hunting :-) He's done a better job than me though: he described the ideal job. Well, mine is located somewhere reachable within 30 minutes from my home (Wilrijk, Antwerp, Belgium) (by car, or even better: by bike :) ), involves high-level Java (analysis and design, architecture, education and mentoring, ...), and earns enough to support (part of) my girlfriend and my son (of whom BTW I'll have to post some pictures soon).


December 9th, 2002

Hacking Log has noticed my thing on community and stuff. Looks to me that we movingly agree without admitting it. This seems to happen a lot to me. Note to self: investigate why this is.


December 9th, 2002

Random Thought has fallen for a conspiracy theory (also noted by sstirling). We knew from the beginning that Bush was pushed forward by the US weapon lobby, and of course this lobby hasn't hesitated to take as much advantage as it could from the 9/11 attacks (side note: did anybody ever notice that 9/11 is the same as the urgency number in the US? Coincidence?). But that's an entirely different thing than proclaiming that the weapon lobby effectively has committed the attacks. Anyway, if you're an American citizen, please consider carefully before revoting for Bush next time.

Java performance

December 5th, 2002

Stuart Roebuck is writing about profiling Java. I had the same experience (except for the MaxOS X part). Have to read this site.

JSR 201

December 5th, 2002

Sam Ruby is referring to a JSR, apparently led by Joshua Bloch, the writer of one of the most interesting Java books ever.

Enumerations: gotta love it. No more public final static int FIRST_CASE=0; Autoboxing: seems to solve the main drawback that Java has compared to C# these days. Enhanced for loop seems to be syntactical sugar, and the static import seems even dangerous (at a first glance). But I want the former 2!


December 4th, 2002

I finally found the instructions for using w.bloggar on Let's rock!

Next step will hopefully be MozBlog, bug that didn't work out for me yet.


December 4th, 2002

Oh my, something serious seems to have happened to the Avalon community. I'm curious for the details, but a quick scan of the mailing list archives didn't help...

As for the second part of the article, I'm not sure if I agree with Andrew. I think territory is a good thing. Not "this is my code, and you can't touch it", but "this is my code, and if you want to touch it, please pay respect by trying to understand it before you change it". Why one thing was done in one way, and not another one, is often caused by zillions of reasons, some of which are not obvious to one who steps in head over heels. Let's take the oh so popular car analogy: if I look at a car, I see some thing on four wheels. Why four? A plane is formed by 3 points, so I can easily remove one wheel. I might have to move the other 3's position a bit, but I will end up with a car that can drive straight forward. Vwala, I've fixed a bug in the car design! And then the next person steps in, and tries to make a turn... He'll experience why there were 4 wheels in the first place.

I guess what I'm trying to say is this: not all code breaks are maliciously done. In fact, most are not. But many code breaks are caused by somebody "fixing" something without a perfect understanding of why it was that way in the first place. You have to consider that before saying "lets open all code to everybody". Somebody who has proven to have a clear understanding of Log4J, doesn't necessarily have a clear understanding of how a servlet container works.

What does need to be considered, however, is the openness of the "get commit access" procedure: if a Log4J committer comes knocking at Tomcat's door "hi guys, I want to fix code I broke in Tomcat", the treshold should be very low to let him in.

Disclaimer: I'm unknowing of the actual situation in Apacheland. Consider this as "an outsider's theory". I don't want to pretend that I can come in head over heels and fix everything.

Jobs in OSS

December 3rd, 2002

Slashdot has a nice article on how to get jobs in OSS development. I think I've got pretty much everything covered, but for the last paragraph. And that's why blogs exist :-)

RSS email aggregator

December 2nd, 2002

Strange things happen when you write weblogs. I just wanted to say I started working on an RSS-to-email aggregator, and I tried to find this link again with Google, to tell you about how I feel the same way and stuff. But I must have typed in something different than on my previous quest for a good Linux RSS aggregator, because the first thing that showed up was this. So it seems that I have waisted yesterday on reinventing the wheel ;-)

I'll have a look at it tonight, to see if it will work for me.

But what I wanted to say: RSS-to-email aggregation seems perfect for me. I'm used to managing an email box that is read on several computers with several interfaces and stuff, and that's exactly what I want to be able to do with my RSS feeds. Another option would be to put it on some HTTP server somewhere, but that requires ... a server. In Belgium, we have this strange thing that broadband home connections cannot be used as servers, so that's a no-goer. With the email solution, you only need a pc that can get feeds via HTTP, and send mail via SMTP, just like a "legitimate" client pc. You'll still need a 24/7 up machine, so maybe it might be a good idea to have it on some server anyway, but still...

Final thought: it seems that I've been spending much of last week's time on getting comfortable with all this blogging stuff. Maybe I should start developing a bit more again :-S

December 2nd, 2002

Just followed Ovidiu's advice.

Mr. Flow

December 2nd, 2002

This is getting spooky. I'll better start watching my mouth now ;-)

Oh wait, that's not why I started this stuff...


December 2nd, 2002

It seems that breakpoints are pretty well hidden in IDEA. I can assure you that they're not in Eclipse (perspectives, remember?) ;-)


December 1st, 2002

After boasting about Eclipse the other day, I decided to give it another try on my KDE box.
[tomk@gonzalez eclipse]$ ./eclipse
** (:3215): WARNING **: Cannot open font file for font Arial 10
** (:3215): WARNING **: Cannot open fallback font, nothing to do
** (eclipse:3214): WARNING **: Cannot open font file for font Arial 10
** (eclipse:3214): WARNING **: Cannot open fallback font, nothing to do
[tomk@gonzalez eclipse]$
Grmbl. Eclipse announces to run on Gnome, but apparently not on KDE. And Gnome doesn't run out of the box on my Mandrake 9.0 distribution. And I don't feel like spending another few days on trying to install it. So back to jEdit it is :-)

You're looking for something older?