Archive for September, 2003

FOAF can FOAD

Monday, September 29th, 2003

For those of you lucky enough to have not heard of this, FOAF is ‘friend of a friend’. FOAF is an xml format, to basically describe ‘people’. Stuff they do, like, think, masturbate to, have a vague interest in, and so on. It also includes contact info, and all the usual nonsense.

The point of all this is to in essence describe and encapsulate oneself and one’s relations into a ‘machine readable’ format. The point of that, in turn is…well it’s hard to tell. Make friends? Be cool? Meet yet more random strangers on the internet to stand in as virtual friends?

The first time I came across this, I thought it’s a joke. Someone was making fun of how ridiculous xml is, and invented FOAF as a satirical statement on the dire uses xml is put to these days. Alas, this is not the case, people seem to genuinely, truly believe this is a Worthwhile Endeavour. That describing yourself, and meeting people online with similar interests who are a few degrees of separation away is still as interesting and exciting in 2003 as it was in 1995. Now, I’d understand it if it were some sort of lame dating service, or clearly billed as a tool for the idiot masses who inhabit the internet. Sadly no, it’s pretty much a tool for techies to behave like utter tools.

To get an idea of the sort of genius this idea attracts, go to foaf-project.org and look at the getting started page. Note the comments. My favourite is ‘Need a new friend.’.

Setting aside the ludicrousness of using xml for this, or the point of it all, has nobody thought of how very 90’s it is to assume that a person can be encapsulated in a few simple online words? Are you really going to be attracted to or interested in someone who happens to enjoys reading books, watching movies, and writing? Much as I hate this particular form of abuse, but how socially dysfunctional can you possibly be for that to be appealing? Are you so utterly incapable of conducting any sort of communication that the only way you can manage is by FOAF-supplied info to fall back on?

What’s truly depressing is the amount of energy and effort that people have poured into this crap. They could have been out there making a difference, planting trees, preaching world peace, solving the middle-east crisis, advocating a two party system in the US, saving whales, work for an aid agency helping African societies decimated by AIDS (no US aid for them of course if they also preach contraception and family planning), but no, they instead make up little xml documents that define their humanity, or lack thereof. Grrrr.

A new village idiot award

Saturday, September 27th, 2003

It’s been a while since any hats have been handed out, and so it’s time to remedy that dire situation. Before we get to the crowning ceremony though, some updates and suchlike and so forth.

First to Jason Bell, the J2SE editor at JDJ (and a what a stellar credential THAT is), who seems to have missed the gist of the freeroller vs javablogs entry. The idea here Jason was to do a user-centric AOP style comparison. It was about comparing crosscutting concerns and aspects of the two systems (haha!). Y’know, identifying the aspects and discussing the different implementations. I fully realise that the two systems do not perform the same function.

Thanks also to Matthias (who I still don’t like, but gotta give credit where credit is due) and Ara, for both having intelligent things to say about my criticism of xdoclet. I’m always surprised when someone responds rationally and doesn’t just respond with the same amount of rudeness I dish out.

I’ve also added a search box and a bileindex of the last 60 entries. This should enable quicker and more convenient access to bileage, saving you the effort of flailing about helplessly trying to find exactly why maven, commons-logging, tibco, commons-lang, maven, xdoclet, jboss, websphere, Fred Grott, javablogs, freeroller, or pretty much anything else sucks.

Also, a minor correction. Greenspun is a fair bit richer than I suspected. I guess that makes him a rich and famous moron.

Now, the moment you’ve all been waiting for. The reason you trawled through the boring crap above…I give you your new village idiot! The winner is…Rick Ross!

Rick didn’t work hard for this award, it must be said. His stroke of genius though was manifested in one seemingly innocent and simple action. Yet, this action was so evil, so insidious, so stupid that it earned him a village idiot hat on the spot.

For months now, Gerald Bauer has been twitching uncontrollably on the javalobby forums. Gerald, as everyone knows by now, is in essence a paranoid brain-damaged gimp. His posts basically resulted in many replies and responses (or in Rick Ross speak, traffic), consisting mostly of people pointing out what a moron Gerald is, and by association, how idiotic javalobby is.

Ricky’s genius solution was to spin off Gerald’s lunatic ravings into a forum of its own. On the surface, this seems like a good idea. Gerald gets to spray his unique brand of spittle out of harm’s way, like he does on everything else he touches. This way the frontpage of javalobby would remain unsullied by his nonsense, and could remain focussed on the other stupid discussions that have been its hallmark.

Imagine my surprise though when I go to javalobby for a giggle, and see that Gerald’s forum now has its own little box on the right hand side. Yes, above javablogs, above all other content, were the deranged ramblings of a basketcase. Stunning.

Later on that day, that box went away thankfully. Still, the image has been burnt into my memory, and it is not one I can forget or forgive easily. The forum itself consists of absolutely nothing more than our dear little Gerald posting merrily, then replying to himself endlessly. It’s a little scary, a little disturbing, but mostly it’s very obscene. He’s even starting posting product announcements (can I have my own forum on javalobby where I get to talk to myself, Rick? Can each of my friends?) What a dismal place Gerald’s head must be.

Rick, let me explain something to you. Not all traffic is good. I’ll draw an analogy to illustrate the problem. Now and then, theserverside.com was in the habit of posting .net stories. Now, these did generate more traffic, and the threads invariably had very many posts. Most of these were angry and irate ones, pointing out how irrelevant .net stuff is, and how it is an inappropriate topic for a j2ee website. Your Bauer friend is the exact same thing. The reason he gets traffic is because his material is offtopic, irrelevant, and nothing more than flamebait trolling. It is not, by any stretch of the imagination ‘lively’, ‘interesting’, ‘insightful’, or ‘worthwhile’.

Still, the cosmic balance is somewhat restored, as so far,as promised, I have deleted 3 or 4 comments that Bauer made here. I can only hope he keeps commenting with irrelevant pimping of his pitiful material so I can keep deleting.

simple-jndi shoots self in foot

Friday, September 26th, 2003

Following a suggestion from my rant against the lack of a simple jndi provider that can be used outside of an appserver, I decided to try out simple-jndi.

Needless to say, this turned out to be yet another colossal waste of time. Simple-jndi is tainted with all the idiocies of your average open source java crap. First of all, the website itself has that maven cookiecutter feel to it. Incredible amounts of utterly useless links. For example, why do I care if the site is generated by maven? Why have a link to it? Secondly, what’s the point exactly of having a clover report up there? Do I, as a user, actually care about how much of the code is covered by testcases (it’s 0%, incidentally). There’s also the useful ‘development process’ link which points to a maven page. A dazzling array of pointless project reports is also there to fool retarded 2 year olds into thinking that it’s actual content (more on these some other day).

Of course, the site is also out of date with regards to the actual code. The task list leads one to believe that no work has started on v0.6, when in fact it’s already been released. There’s also an about page, which is the default. Yet the link to this homepage is under project documentation, rather than the overview top section.

All this can be forgiven if the actual product were up to scratch. I felt a sudden rush of glee and joy as I saw that the download was <100k. I assumed this is the promised small, no-depencency, functional, focused product I was dreaming of.

I came to a rather rude awakening when trying to use the damn thing. Of course, the small download was nothing but a mirage. The source download just doesn’t include any of the dependencies (which you have to work a bit to find). Turns out it has 3 dependencies, some gen-java.jar, commons-collections, and commons-lang. I squinted, I glared, then I flailed about ineffectually trying to remove said dependencies. In the process I found such delightful items as a class called ClassW, and another called CollectionsW. These names are simply too disgusting to allow anywhere in civilized society. Someone somewhere ought to be very ashamed of themselves.

The final nail in the coffin was the build process. The bundled build.xml is autogenerated by maven. This monstrous piece of work tries to download dependencies (which is why they aren’t included in the download). Shame I’m behind a firewall and this has no hope of working.

So, here’s another ant tip for free. Do NOT force your users to have a network connection. A source build should ‘just build’, and require no work by the builder. If you persist in this barbaric approach of downloading crap and all the other rude gestures mentioned above, then what happens is very simple. Your (lazy) end user will just give up.

I never even got to running simple-jndi, because I saw enough to know that I want nothing to do with it. This is a shame, since it could well be a good functional API that does what it says with ease and poise. The wrapping and method of delivery is painful enough though that I’ve lost all urge to find out.

No Experts in Servlet Expert Group

Thursday, September 25th, 2003

For a very long time, I’ve held a grudge against the servlet spec. This grudge is always amply justified every time I work with servlets. What’s depressing is how easy it is to fall in and start considering all these limitations normal and sensible.

For starters, there’s the astoundingly braindead url-pattern format. Someone clearly went out of their way in coming up with a syntax that hints at some customisability, yet manages to offer the absolute bare minimum. It’s abundantly clear that whoever came up with this format has never done much beyond written a simple ‘howto’, or probably one of the bunch of idiot authors who feel that writing a book about servlets or jsps somehow means they have real world experience with said technology.

It is absolutely impossible to use this limited form of url mapping. I’m not asking for regex support here, which would be overkill, but proper wildcard support, or even ant-style wildcards surely can’t be THAT hard for users to learn or adapt to? Lets not even consider the fact that there’s no way of specifying exclusions (eg, apply this filter to everything except *.html files).

Next up we have the good-on-paper but mostly useless form based auth. It isn’t particularly endowed with customisability, and generally (at least in the early days) had every appserver somehow manage to fuck up their impl of it. It’s particularly disheartening that even something this simple had vendors befuddled, stumbling about like a bunch of retarded children.

This wouldn’t be so bad if there were some sort of programmatic login, that way one could just bypass the whole auth mess and just use the API. Alas, no such luck. The best that the retarded servlet 2.4 group could fart out was a logoff method in 2.4. Maybe by servlet 2.6, they’ll actually start paying attention to users and add the natural complement to a logoff method.

Then we have the cute little inconsistencies that are the signature of brainwashed buffoons everywhere. We have sendRedirect requiring a context path, but forward not requiring one. Consistent API be damned, instead it’s better to force the user to understand that all they’re doing is setting a header and sending back a status code! Heaven forbid servlet container developers are actually forced to do any actual work or make the life of application developers vaguely tolerable. They’re all too busy pimping their own idiotic implementations, in the few spare minutes they have between bouts of trying desperately to milk their book author credentials for all its worth.

TIBCO naming convention joys

Wednesday, September 24th, 2003

As promised, here’s another rant pointing out how tibco is in fact firmly stuck in 1997. This time I’ll address their ludicrous, nay, obscene, naming conventions and general approach to javadocs within their Java SDK.

First, the javadoc issue. I realise tibco is very much an ‘old school’ type company. They believe in doing things the old fashioned way. The reasons for this are forgotten in the mists of time, all that remains is an obsession with an approach to java made popular in the early days. Namely, providing javadocs in winhelp format.

I cannot possibly stress how painful this is. Picture a large, sharp object with many pointy bits. Picture said object being wrapped in sandpaper. Got it? Now, picture said sandpaper-wrapped object being inserted repeatedly, persistently, and violently into orifices that god intended to only expel stuff. At this point you’ll begin to be able to imagine how painful it is to use javadocs provided in this horrific format.

I’m sure that as I write this, tibco lovers everywhere are dying to point out that html docs DO exist. Yes, they do, except that of course, they’re not even vaguely sensible to navigate. They’re just exports of the winhelp format to html. Not exactly useful.

Now, assuming that you make it this far. You decide to actually use said javadocs to write some adapters. The first slap in the face is that every single class, exception, and interface starts with the letter M. I don’t even know what to say to this. All one can do is shake one’s head sadly and weep hot tears of bitterness at the cruelty of the world. Why M? Member? Masturbatory? Master? Malfunctioning? Mostlyharmless? What on earth could it stand for? More importantly, if it’s a universal property of every single class and interface, why does it merit mentioning?

Next, in order to create a tibco adapter, you need to subclass one of their classes. Setting aside the issues with inheritance, base class evolution, and all that nonsense (all easy to handle sensibly, despite Jason Carriera’s doom and gloom warnings), then class is called….MApp.

MApp?!? What’s so bad about oh I dunno…AbstractAdapter? BaseAdapter? ApplicationAdapter? MApp tells us absolutely nothing. Now if this were an isolated incident, they could be forgiven. Someone made a stupid name suggestion in 1996, and now they’re stuck with it because they don’t like screwing their existing users with every new release (are you paying attention, OSS people?). Sadly though, this genius didn’t just name that one class. We also have such gems as MData and MInstance.

It’s truly surprising the difficulties that many people seem to have with naming things. Java has a very clear guide on how to name things, and what the prevailing conventions are. Sure, it requires a miniscule amount of creativity and thought. One would think that that tiny amount is a prerequisite to being able to write said classes in the first place. Sadly, there is far too much evidence to the contrary.

Greenspun unspun

Tuesday, September 23rd, 2003

I’m sure most people have now read the hilariously ignorant and childish ‘Java is like an SUV’ article by internet celebrity Phil, that senile old has-been who managed to get tossed out of his own company.

First, he seems to think that JSP’s are a separate entity from J2EE, a totally unrelated technology and in many ways is the ‘opposite’ of J2EE. Secondly, he then points out how incredibly retarded academia is by stating that seniors and graduate students can’t even understand JSP pages. I don’t know what these kids majored in, but even the stupidest of undergrads we get in #java can usually figure out how to write a jsp. In my company the interns we hire (all undergrads) simply wouldn’t be there if they couldn’t write a jsp, and do that rather well. Yes, even if they knew nothing about jsps specifically beforehand, and only had basic java knowledge. Maybe he should stop expecting music or history students to churn out enterprise apps after listening to him babble on for a couple of hours eh?

Somehow though, after proclaiming JSP’s to be the only thing worth using, he then goes to point out all the flaws with using pure JSPs, such as tons of code at the top of every page. What a genius. Might as well blame the sledgehammer when it fails to tighten the screws on your glasses for being a cumbersome ugly tool.

Phil seems to be nothing more than a somewhat articulate Slashdot monkey. He made a stab at being rich and famous, and promptly failed, so he stuck to attempting fame. I remember reading with much hilarity his posts a few years ago detailing why he got tossed out of Ars Digita. I thought at the time, what a tool, thinking that somehow the world should owe him something since he had good intentions.

I’m glad that he slithered back to the academia orifice he crawled out of. Lets just hope he stays there and keep those Slashdot imbeciles entertained, instead of inflicting more of his unique brand of idiocy on those out in the real world.

XDoclet is a miserable failure!

Monday, September 22nd, 2003

There are many people out there, myself included, that use xdoclet on a day to day basis. It certainly is a rather useful tool, and makes EJB development vaguely tolerable. However, I’m starting to think that XDoclet, at the time of writing, is a horrific trainwreck with many wounded and dying lying around.

Of course, it depends on what scales one measures success. In terms of adoption, xdoclet certainly wins out. There are thousands of users. However, the picture is a little bit less rosy if we consider pretty much any other scale.

For example, the mailing list (user) is fairly stagnant. A few questions a day, with developers on the whole going to great lengths to remain as silent and invisible as possible. Of the 26 developers, maybe 2 or 3 can be considered remotely active and contribute in a meaningful manner.

This problem is highlighted amply in the jira issue tracker for xdoclet. There are 255 outstanding issues. A bunch of these haven’t been assigned to anyone because nobody wants to touch them. Many are plain unfixable, as the person who wrote the code has gone onto bigger and better things and the codebase is such a horrific mess that it is no longer humanly possible to make sense of it.

The issue of developer exodus is a pretty big one in the xdoclet world. A trigger happy commit access granting policy resulted in a ton of developers, with almost none pulling their weight. The usual case is that developer X gets commit rights, developer jumps up and down and is happy and commits stuff for the next week, developer X gets bored and wanders off to pick their nose or get commit rights elsewhere.

Then there’s the issue of releases. After months of struggling with an astoundingly bad codebase, the xdoclet team finally managed to fart out a couple of beta vesions. Beta 3 came out somewhat screwy and wasn’t usable out of the box, so another halfhearted attempt was made and b3 was released, this time with missing dependencies included. That was back in June. The developers are now bored to death of this codebase, and in true open source spirit, have decided that all energy is best spent on xdoclet2, which will be cooler and more fun all round. On the plus side this is a completely clean break from the current codebase, so none of its filth will go forward. However, I bet some of the guys responsible for much of the stupidity will still be adding their brand of genius to xdoclet2 in time (if they haven’t already). On the downside, all the hard work and effort that people have put into various modules for xdoclet is down the toilet. I suspect 1.2 will never get to be a final release, and the majority of those bugs will never get fixed.

In my mind, xdoclet will always be a textbook case of what happens when developers work in an environment utterly divorced from reality, where they get to do all the dumb things they want to do in the name of coolness and nifty features. The complex and enormous subsystem for i18n support for ant build messages is a timeless classic, and the xjavadoc tool is now going to be ditched apparently for QDox (which already existed back then). Still, I’m sure glad that the developers don’t feel about bad all those endless wasted hours working on something essentially useless that’ll just be thrown away in a few months, and serve no meaningful purpose in the meantime.

Ah well, you get what you paid for, you dumb bastards!

Freeroller vs Javablogs shootout

Saturday, September 20th, 2003

Freeroller’s service level has gone up a bit, and javablogs’ has dropped, so I think it’s now fair to have a fight between them. So to celebrate javablogs being down, I present to you the freeroller/javablogs shootout

Freeroller: Recently added entry is always consistent and up to date, and never shows duplicates.
Javablogs: Recently added is random, almost always has duplicates, and never up to date.

Freeroller: Randomly spits out 404’s, or refuses connections for a day or so. Rewards persistent users.
Javablogs: No such thing as a short downtime. It’s either up or down for days.

Freeroller: Shows reasonably accurate stats, and has smarter hit tracking.
Javablogs: Very easy to abuse and stats reset themselves depending on the phase of the moon.

Freeroller: Allows you to edit, add, and maintain your blog. Yay!
Javablogs: Allows you to add a blog.

Freeroller: Has only one kind of ’stats’ page, the front index page that shows most popular blog for the day, and latest entries.
Javablogs: Has an dazzling array of stats pages. Shame the numbers are random and reset themselves at whim.

Freeroller: No history views.
Javablogs: Can look back and find entries for any day.

Freeroller: No search.
Javablogs: Worthless search.

So in conclusion, I think freeroller wins out by a bit. The most telling revelation from this shootout though is that freeroller on the whole is a lot more honest. When it breaks, it breaks. Javablogs on the other hand seems more deceitful, it’ll lie to you while stabbing you in the back. It’ll smile cheerfully at you while feeding you useless irrelevant crap.

[update]: While working on some open source stuff, I thought of more points:

Freeroller: Source is available. Those who find it utterly intolerable are free to dive into that mess, should they feel stupid/brave/pretentious enough to do so.
Javablogs: Closed closed closed. Down with proprietory source! Code wants to be free! New economy! Viable business plan! Lalala!

Freeroller: Has davetest, who regularly tells us how crap freeroller actually is and how it needs to be restarted 5 times a day, and how worthless Tomcat is.
Javablogs: A mysterious black box, where downtime is never mentioned or spoken of or referred to. All rather inexplicable.

TIBCO's JMS foolishness

Friday, September 19th, 2003

I must admit, I am somewhat baffled by some of the strange things that ‘old school’ MOM (messaging-oriented middleware) vendors do. They often seem to operate in a bizarre world where it’s perfectly reasonable to treat developers like scum, as people who enjoy nothing more than an obtuse and obfuscated development process, and are fanatical about cryptic and unhelpful error messages.

This is understandable somewhat given their background. They deal with mainframe freaks, historically sex appeal has never been part of their message, and revamping that now just isn’t that high of a priority. Their customers would likely feel threatened and befuddled by this new sexuality anyway, preferring instead the ‘professionalism’ of a tedious boring run-of-the-mill type product.

Enter JMS, the potential for sexiness is suddenly within grasp. JMS allows those MOM vendors to be sexy to those who like that type of thing (JMS kids), and remain staid and plainjane to those who don’t (every other endpoint). Everyone wins! Nobody is threatened. The new kids feel they’re working on something cool, the old kids don’t feel threatened and upstaged by the newcomers. Through the wonders of a JMS layer on top of the old crap, you get them talking to one another like they’ve known each other for years. They can focus on the message format and its contents, and let the vendor worry about everything else. All good and well.

Except that one vendor that doesn’t seem to ‘get’ it is Tibco. Tibco’s JMS solution is a completely different product to their Rendezvous-based ActiveEnterprise crap. The latter has its own SDK (more on how horrific that is some other day), which is completely divorced from JMS. So if you have the old school guys and want to hire new kids who are JMS savvy, you have to go out and buy a whole separate product. Note, it isn’t an add-on, or an extra feature. It’s a whole separate product with its own broker, that does not integrate at all with the ‘main offering’. Well, that’s not entirely accurate, it is possible to set up topics to publish to or receive from Rendezvous equivelants, but there are a bunch of restrictions and it’s a royal pain in the ass. Your middleware group ends up having to support two MOM products that are for all intents and purposes doing the exact same job.

I don’t get it. I thought part of the coolness of JMS stems from the fact that you can get a standard-based API over a ‘traditional’ solution that allows you to talk to all sorts of different languages and platforms without knowing a thing about them. You just shoot our your message into the ether and magically it can be picked up by almost anything. As a vendor, what on earth is the advantage of a JMS solution that has little to nothing to do with your ‘old’ underlying messaging product?

Gavin Fleury

Wednesday, September 17th, 2003

Well well well, it looks like the young and impressionable Gavin of Hibernate fame has had his little head turned around and dazzled by the Fleury cabal’s sleight of hand tricks.

I’m sure Gavin knows better than all those others who have walked down that particularly skanky road. I’m sure he’s well aware of how well the Jetty guys were treated when they were invited for a pleasant romp in the ever-growing Fleury orgybed. This deal of course is nothing like that one, it’s not like Hibernate will suddenly be offering JBossGroup services. Ha!

To be fair, from the perspective of the cuddly red-haired kid from down under (I’m so, so tempted to reveal what his girlfriend calls him, but he’d probably hunt me down and kill me if I did), this is a jolly good thing. He now gets paid to piss about on Hibernate. Who the hell cares who signs his paychecks as long as they keep rolling in? Worst comes to worst, impressionable young Gavin realises how evil the cabal is and storms off in a huff and finds a job with a real company. Provided he doesn’t end up spending too much time within the hive he’s likely to remain quite hirable in the near future. It’s fairly obvious that the plan all along once Hibernate became successful was to sell out to the highest bidder.

As for the Hibernate users, well, who the hell cares? They get Hibernate same as they ever did. So what if Gavin is now spending more time ‘adding value’ to his new employer? Of course, I’m sure that working for JBoss is nothing like working for a real company. The Fleurites would never expect Gavin to spend most of his time contributing to their cause, ohnosireebob. I’m sure they’d be thrilled to pay him to do nothing but work on Hibernate stuff that is completely independent and unrelated to JBoss. After all, he’s being hired purely out of the goodness and kindness that positively oozes out of Fleury’s every pore. They’ve hired him simply because Hibernate is great and they want to contribute to its continuing success. Everyone knows that JBossGroup is a charity in disguise, they have no goal but the betterment of the Java world and to fund cool stuff. Indeedy.

Having said all that, from the perspective of someone who has long found Hibernate infuriatingly difficult to bile, this move is a gift from the gods. All you Hibernate monkeys can now be dispatched with ease by the clumsiest of people. Your leader is Fleury, you have been assimilated. Time to get off that pedestal kids. You’re now no better than all those wankers who use JBoss and proclaim it to be the best J2EE server in their pathetic little mbean infested world.

A bunch of days in review

Tuesday, September 16th, 2003

First, I’d like to toss a mocking comment or two at our dearest Fred Grott. Turns out that he does in fact read my blog, surprise surprise. He just couldn’t resist mentioning it in a response to my J2ME bashing. Poor bastard, one can just picture him, twitching and writhing away, cursing the day he proclaimed he no longer reads this, thus forever losing the chance of being able to boldly refute anything I say. Also worth noting is the fact that he’s now merrily using a GPL library for his oh-so-tedious moonbuzz game. Teehee.

For those of you who remember the little spat where Andy Oliver (POI head honcho) got his panties in a twist over JExcelAPI and proclaimed how it was a rip off and sucks, I’ve received any email from Andy Khan (the JExcelAPI guy). He (very politely) informs me that his only contact with Andy was two years ago, where he refused (politely) to join efforts, and that he has not, since, looked at or consulted POI source code, binaries, output, etc etc. He was rather indignant at his effort being branded as nothing more than stealing stuff from POI. Make of that what you will.

As for the Gerald Bauer commentors (there are 5-6 of them as far as I can tell), I’m warning you all…enough with the Bauerisms! I don’t care if you’re upset that Java isn’t OpenSource(TM), or that Sun one day stuck foreign objects in your ass that have made walking a challenging task, or that the Mozilla XUL gave you hot manlove the like of which you have been unable to experience ever since. Keep it off the comments. So from this day forth, I’ll be deleting Bauerisms with no notification. If nothing else, it’ll be fun to see him rant and rave about how Sun has bought me and is out to silence him blahblah.

Regarding my ‘w3c buttons’ rant, a lot of people missed the point. The point isn’t that one should go out of one’s way to flout standards. It’s that proudly adding a button to your site proclaiming that is retarded and pointless. Yes, I know about csszengarden, and good job to them. How many people you think are capable or skilled enough (or can justify the time spent in a business) to produce what they have?

I’m also quite amazed at the less than bright suggestions at my simple memory based JNDI provide request. Someone suggested using the preferences API, someone else missed the fact that I was ranting about READING properties, not writing (thus, URL is fine), and another genius said that it’s not necessarily easy to convert between file and URL…toURL and getFile (respectively) seem pretty easy to me. Yet another suggestion is to use the horrible Tyrex, and be lumbered with a completely unasked for and unrequired JTA. Wheee.

Finally, thanks to all the wives/significant others that have posted in defence of their husbands/boyfriends/whatevers. These women are rather witty and have a marvelous turn of phrase. One has to sometimes wonder what on earth attracted them to those men in the first place. Although Greg Wilkins (Jetty guy) seems to be as cool as his wife, and genuinely concerned and interested in improving Jetty. Jason Carriera and Marc Fleury on the other hand seem blessed with a far superior and wittier better half.

Jetty: how to NOT package stuff up

Monday, September 15th, 2003

I needed to have a small lightweight webserver to just dish out some simple html. Nothing fancy, not even a servlet in sight. Being a java bigot, I thought a java solution would be a jolly good idea. I foolishly selected Jetty, thinking that it’s about time I punish myself with some of that nonsense.

The ‘installation’ and distribution process left a skanky bitter sour taste in my mouth, it has to be said. Now, Jetty is advertised as being a lightweight simple alternative to the Jakarta-beast-that-must-not-be-named. That myth is shattered when one is confronted with the download size. It’s almost 8mb. I could have downloaded Orion twice in that amount of time, and gotten a full J2EE stack to boot. This does not bode well.

The reason for this bloat becomes apparent when viewing the ludicrous crap that is included as part of the ‘binary’ release. Yes folks, you guessed it, you get a FULL source tree, complete with build.xml and ant.properties. They’re just so proud of their source and how open it is, that they feel it should be included with every binary release too. If you’re brave (or stupid) enough to actually try to build from said source, I suspect you’ll likely fail rather miserably as a bunch of jars are missing (to be fair, I wasn’t brave enough to attempt it).

If you’re not insulted enough at this point, there’s more in store. The packager, in his or her infinite wisdom, decides that it’s also vitally important that you be aware of the unit test results. So alongside all the other rubbish included, you also get 3-4 xml files that JUnit has farted out at you. I’m sure they’ll come in handy at some point…why else would they be included?

Nevermind all that, time to run this little baby. I’m sure all will be forgiven then. Oh wait, fat chance of that. I’m one of those freaks I guess who likes to run servers on non-windows machines. The jetty folks’ idea of unix is likely a halfassed install of cygwin. Why else would the .tar.gz download’s jetty.sh file contain windows linefeeds? Fixing that of course is easy. The next wall to walk into is the fact that the damn script is broken and won’t work on Solaris.

Ah well, I’m a java bigot after all and unix scripts are for losers. I’ll just run java -jar jetty.jar, the way a purist would. Oops, foiled again. Turns out the Class-Path in said jar is, to be it mildly, fucked. I’m confronted by a cute and cuddly NoClassDefFoundError proclaiming that javax.servlet.Cookie does not exist. Maybe start.jar can show me a bit more love?

Well, it turns out it can. My web server is up and running, although I do get a couple of WARN messages with healthy sized stacktraces jabbering something about IndexOutOfBoundsException. The stacktrace of course is refreshingly context free, the only way to fix it is the opensores way; trawl through someone else’s shitty code and figure out how they could have been stupid enough to not guard against such a obvious highly likely startup error.

So Jetty, off you go, you deserve to sit in the same idiot’s corner as that Jakarta-beast-that-must-not-be-named. You’re just as ‘lightweight’. The only possible excuse for such incompetence is that the jboss integration is to blame, and that Jetty is now forever infected with that bloat and incompetence.

File bad, URL good

Monday, September 15th, 2003

A few days ago, a kind soul (Eric Pugh) contributed a bunch of patches to osworkflow. These patches were for testcases that exercised the JDBC store. This is all good and well, and it falls to me to review said patches and commit them, if they are deemed worthy.

The patches depend on a rather handy-looking library called jrunittesthelper.jar from javaranch. This little library basically enables you to have a simple JNDI tree that supports a DataSource lookup. Very simple and effective, does what it says on the tin. Alas, there is one rather horrible flaw in said package. It uses a properties file to initialise the DataSource, except that it requires a FILENAME for this properties file.

Exactly what is the logic of requiring a file when a resource will do? Properties even support inputstreams, so why would you be so cruel to your users as to demand that they provide a file? What’s so bad about an InputStream, or a URL? URL’s in particular I think are an ideal way of reading in any sort of file. You can get URL protocol handlers for pretty much anything in this day and age; Samba shares, jar files, http, whatever. You could even define your own if you’re so inclined. As an added bonus, there are even convenience methods to easily convert a URL to a file and vice versa.

So, inject a little love in your libraries and never demand absolute filenames. Some users are crazy enough to want their apps to truly not care about the current working directory.

Now, can anyone recommend a simple memory-based JNDI provider that doesn’t have a million dependencies and allows for flexible configuration?

Care and Feeding of your IA

Friday, September 12th, 2003

A while ago, I started this really cool new blog I call ‘bileblog’, and I had more fun whining on it than I’ve had in years of whining on IRC. Somehow, this blog is nourishing a part of me that I have apparently been neglecting in recent years. I’ve heard many people talk about taking care of their ‘Inner Geek’, but it has become increasingly clear than it’s much more important for me (and you) to focus on taking care of our collective ‘Inner Asshole’, or IA. A bunch of pretentious gits refer to things like IG (Inner Geek), and now I hope to add my own small contribution by suggestion that the IA should be considered a superior mode of being, not just a lousy peer.

The IA is the part in all of us that revels in discovering a new way to insult or hurt fellow developers. This new way often gets the job of making them feel bad about themselves and making yourself feel superior done in a tenth of the mental effort and a quarter of the technical refutation needed in a serious ‘your design sucks and mine is better’ discussion.

The IA is the part that drives us all to instinctively react negatively to any new idea that is not ours. It is about spinning one’s wheels endlessly without ever producing anything, instead focusing on the diminishing returns one can achieve by endlessly complaining and objecting. The IA is to blame when you try in vain to explain what is so stupid about a new product or technology to people who would much rather swoon and gush over how lovely it all is. It drives you to memorize and categorize innumerable arcane faults and usability issues about products you wouldn’t touch with a bargepole.

You may have a fairly dominant IA, too. The mere fact that you’re reading this suggests that you care more about being cruel and malicious than the average developer. If you’ve thought bad things about your co-developers, or reacted negatively to a product announcement, or smirked as the latest in API’s in shoveled down your throat, then you can be almost certain you have the seeds of a healthy and potent IA. It’s nothing to be ashamed of, either. Those dark years when we had to keep our IA’s in the closet or risk being ostracized and ridiculed are alive and well, and do nothing but fuel your IA. People will dismiss you now, and even though they mock you for being an asshole, they know they secretly envy you your freedom and your proclamations, these loud obnoxious cries of derision that make them momentarily aware of how ludicrous it is to rush headlong into every fad they come across.

Maybe it’s evolution. Maybe there’s a process of progression at work causing more and more of us to have a strong IA and helping us cope with the ludicrous promises and worthless products and API’s hurled at us. Perhaps in some strange way this is part of ’stop insulting my intelligence’, and we are somehow helping developerkind take steps towards becoming more aware, cynical, and less wooed by pansy marketspeed and sloppy implementations.

Alright I’m bored. Go read Rick Ross’ javalobby frontpage editorial for the rest of this, and substitute words as appropriate.

Stupid logo web buttons

Thursday, September 11th, 2003

I’m so heartily sick of sites proudly displaying idiotic stickers like ‘html 4.0 compliant’, or ‘w3c valid!’ or any number of other irrelevant facts about the nature of the html.

What on earth is the motivation for plastering such nonsense on one’s site? Feeling insecure? Desperate to seem cool to the other 2 people in the world who care? Got a gripe against professional looking websites?

What purpose do these logos serve? I understand that they advertise some service, so the benefit for the logo originator is obvious. What is amazing though is how site authors gleefully shovel this crap onto their ill-conceived sites. As if being w3c compliant is worth anything anyway! Chances are, your site (if it is indeed w3c/xhtml/whatever compliant) looks incredibly boring and was clearly done by a developer who likely thinks that ’style and elegance’ implies ‘JBoss’. HTML, for better or worse, is a hacky syntax. You have to jump through many hoops in order to make it beautiful across a variety of browsers. The first thing you usually have to do is chuck out the specs as they describe ideal, and usually highly-unrelated-to-real-world behaviour.

So be warned, the message you’re putting across when you so gleefully proclaim that your site is html 4.0 strict conformant isn’t in fact ‘gosh, I’m so clever and clued in’, but ‘gosh, I’m living in lalaland trying to impress the other inmates while everyone else laughs at me’.

I’m sure I’ve missed huge swathes of idiotic logo buttons to mock, but I’m sure that people will nominate ones that stand out as being particularly stupid or pointless.

Bill Joy Leaves, Bloggers Pretend it's News

Tuesday, September 9th, 2003

At the risk of sounding like a broken record (yeahyeah), I must express my shock and dismay over this whole Bill Joy nonsense. So some high up guy leaves Sun. Eight genius bloggers decide that they need to reproduce this tedious piece of humdrum news in their tedious humdrum blogs. Pretty much everyone one of them had nothing to contribute beyond judicious copying and pasting from some other news source.

Come on folks, the whole point of blogging is, for better or worse, to contribute something personal, to make some form of contribution, to add even a tiny bit of self to the collective cesspit. Reporting news that one can find anywhere else, with no opinion, thoughts, or real content is madness.

Besides, so WHAT if Bill Joy is leaving Sun? Billy has done jackshit for Java recently. Sun is a commercial entity that can ensure that someone vaguely competent and able replaces him. It’s not some opensource project where the lead guy leaves and suddenly you’re left with a bunch of code that nobody is supporting, since the developer who really understands it wants to move on to focus on family/more interesting things/personal matters/watching paint dry.

Perhaps this is the next evolutionary step in blogs, grown up to be news sites that feed off of other sources, endlessly retelling the same story. The motivation though would be different; instead of trying to subtly push an agenda, the goal would be merely to indulge in the pleasure of hearing one’s virtual voice.

Disturbing interviews

Monday, September 8th, 2003

Sometimes, the world does something crazy and unexpected that leaves us all feeling puzzled and mildly uncomfortable. This I’m afraid is one of those instances. This unholy alliance I am unveiling to you is something that would never occur in nature (nor should it), but it’s a sign of the times that such craziness can exist. Without further ado, I present to you…Mike Cannon-Brookes, interviewed by chiara! (if you don’t know who either of these are, then track down their blogs and you’ll get a good feel of their personalities and styles)


C: Mike, your work, it’s so sublime, it makes me want to cry sometimes. i can just feel the great things you’re doing. i wish i could be a part of that, forever thinking, forever basking in the tangible aura of your coding finesse. please, tell us more, tell us something, and show us the scared little boy inside.
MCB: G’day mate. I’m an aussie from down under, but I regularly go on world tours. I run a company called Atlassian, which you might have heard of. We do insanely cool stuff, just a bunch of guys out to have fun, mate. We believe in customer support, jirajirajira. We also believe in buyenterpriselicensesnownow helping developers and the jirajirajirajira opensource movement.
C: Oh mike, your words, they remind me so much of a group of young brazilians. I look at them and I am bursting with pride and joy at the sheer pleasure these kids take in their work. Who would have thought, that a bunch of third worlders could rise up and make a name for themselves. it makes me want to put them in a zoo so we could all enjoy their brilliance, their insight, their keen abilities and youthful vigour. are you like them?
MCB: Mate, us aussies are all like that. We jira work and play together, we also do a lot of jira cool jira stuff. I found this cool app, everyone should try it out! Have I mentioned that jira is the best bug tracking software in the world? How cool is that?
C: What advice do you have for a small voice, a girl lost in the wilderness. i swear, sometimes life is just so precious and heartachingly beautiful that i can’t help but cry. The beauty, it surrounds me yet i am unable to be one with it. The little girl cries, soft beautiful tears escape her bright eyes, eyes that have seen too much yet too little. A world so harsh yet so full of promise. Promises of joy, laughter, all these things that define us as human beings, we must all love, love one another like my friends love each other. Yes and why not, know one another and oneself biblically too. i saw some turnips in the market today, and i was so overwhelmed with their ugliness and filth. Yet they provide us with sustenance, nourishing us, our hungry souls always starving, always crying for love, a broken little girl stamping her feet, always stamping, always demanding attention, no daddy no…they said you’d never leave…come baaack ahhhthepain…
MCB: I think one thing that might help you a lot is jira. Have you looked into it? Jira is good for handling all sorts of issues. An enterprise license I think would be ideal. Jirajirajira. It’s so cool that some users posted a positive review, they must be so clever. Jira.
C: I have to go now…the dreams, they assail me with their grasping claws, drawing me further in. i struggle, i am not of your world i scream soundlessly. death stalks my every step, cliched and hackneyed teenage writing surrounds me and oozes out of my every pore, yet I cannot escape it, it is the sweet bliss of a writer blessed without the joys of introspection, where the words flow from my brain to my fingers, disconnected, disjointed, disassociated.
MCB: Right mate. I’d just like to jira thank you for the interview. It was certainly jira quite jira interesting. In closing, I jira think that jira jira, jira jira. However, jira jira jira, when I jira jira. Jira? No, jira jira, enterprise edition jira, jira! Jira jira jira jirajirajirajiraaaaaaaaa!

Foiled J2ME development attempt

Sunday, September 7th, 2003

Following an unfortunate accident involving some cash and an inappropriately placed t-mobile store, I now seem to own a T610 Sony Ericsson phone. This little beast replaces much loathed and despised T68i which has to be, without a shadow of a doubt, the worst mobile phone I have ever wielded since 1993.

As an aside, why on earth are there no normal ringtones? Whatever happened to a sensible professional ringtone that isn’t a pop song? I do NOT want to be serenaded when someone calls me. I want my phone to ring, like god intended. I googled, I fumbled, I cried, but no sensible ringtones were to be found for love or money.

Back to the problem at hand. Like any normal developer I decide that I should download the J2ME SDK for my phone and write a pointless app to feel cool and manly. After bungling about for a bit I manage to find a download link. Naturally, I had to resort to using google as trying to navigate the Sony-Ericsson site is an exercise in futility.

The first rude awakening was seeing that the download is a Windows-only installer. Why oh why oh why must companies persistently provide Windows-only versions of java stuff? I realise WORA isn’t quite perfect, but it has enough problems as it is, it doesn’t need any such helping hands as downloadable .exe files just to install a bunch of jar files.

Oh, how mistaken I was. It turns out that this work of genius uses all sorts of .exe files to launch java apps. Conveniently, .bat files are offered for some of the apps, so one could flail about with those to get things running, in theory at least. The next hurdle is that the bat files are nothing but teasers. They don’t actually work (not even on Windows!).

A few minutes of jadding about reveals the magical command line options that need to be used to make cool stuff happen, and where to place a previously non-existent properties file. I am soon rewarded with a (mostly) useless prefs app showing up on OSX. Very cool, surely this is a sign of things to come, I have jad, I know java, this can’t possible be that hard.

I overcome a series of further hurdles and get the emulator to sort of not-die-on-startup for a bit. the final slap in the face though is that the EmulatorWrapper eventually winds up exec’ing semc_midp.exe. Said executable is big, and is definitely not a simple wrapper. I’m screwed, no java knowledge can possibly help me overcome this little hurdle.

So that’s that. I realise that I know very little J2ME. I realise that I’d have gotten bored after writing a Hello World and gawping a bit at how cool it is. Thus, in the long run of things, this defeat won’t deprive the world of some work of J2ME genius produced by yours truly, so no big loss really. However, why oh why oh why must my parade be pissed on so cruelly with this rampant windowisming?

XML is a stupid transport protocol

Saturday, September 6th, 2003

It’s frightening how many ‘enterprise’ projects involve passing XML around. Somehow in 2001, XML became an acceptable and reasonable communication protocol, for reasons that are to this day quite inexplicable.

Now, I realise that it’s human readable, which makes it quite handy. Handy that is, if on the other end you have a guy you need to read out your XML to. Machines actually aren’t that grateful that they now have to parse this hugely verbose format.

Yet day after day, thousands of people are engaged in mapping their objects to xml, transmitting said xml through every medium conceivable to man, then changing this selfsame xml into the objects it supposedly encapsulates. Along the way, chances are you have a whole bunch of things happen to this xml. Transformations, mappings, and other such stains caused by developers masturbating wildly onto this poor ill-begotten xml document.

Now, this would all make sense if you’re going to communicate with external entities, if you weren’t fully in control of both ends of the communication channel. You’d think, hell, why not, let me use something that everyone knows how to parse and handle. Really though, why bother with all this parsing and mapping if you’re talking to yourself? What’s so evil about using a more terse and functional grammar, one which with a bit of luck lends itself better to whatever you’re trying to communicate, rather than shoehorning everything into a tree structure?

Even worse is when your genius ‘architect’ feels that xml and dtd’s just aren’t sufficient, that xml schemas must get a look in too. So now you’re passing complicated xml documents backed by schemas and you have two choices. Either you don’t validate against the schemas (basically you slurp up anything well-formed), or you validate against this lovely schema. The first option means that someone somewhere has wasted a lot of time and effort into an essentially worthless schema. They’ve gone and painted your banana blue. Looks pretty (or at least, eye-catching), but is utterly useless. The second option means that sending this simple object from one place to another is now something that takes days while your validator hmm and ahhs over whether your document is valid. If you’re going to be validating every xml document against its schema at runtime then you really are better off just dictating the xml document to the other side, it’d be faster.

So please, before you inflict xml documents and schemas on your friends and family, consider how they’ll feel about it, and whether it’s fair to inflict your masturbatory habits on your poor unsuspecting victims.

Week and a half in review

Thursday, September 4th, 2003

Alright, enough crap and fun stuff has accumulated that it’s worth summing up all the wild and crazy things that have been said and done in the past week and a half.

First (lets get the happy crap out of the way) a thanks to some of the commenters. As Cameron pointed out, some of the comments are far funnier than the blog entries themselves. Nathalie Fleury’s comment is a work of genius (I think it’s really her, but who knows). Also kudos to Charles Miller for joking about Cat Day, but then going ahead with it as did a whole bunch of other people. A pretty amusing anti-anti-anti-javablogs statement. However, I implore Mr Anonymous to please grace us with something less generic. I don’t care who you are, pick some other anonymous name and use it consistently. It’d make following a 3-way conversation between 3 Anonymous guys somewhat easier to follow.

Also, it’s come to my attention that Mr Matthias Boegart doesn’t approve of me so much, and thinks I do more harm than good. Well Matthias, at least my harm is restricted to words, and does not manifest itself in code. Remember that fiasco that contributed to Victor Salaman resigning from Opensymphony as you kept on reformatting everyone’s code and ‘cleaning up imports’ and checking it in? You leave your particular brand of ‘helpful contribution’ droppings on every project you touch. Lets examine some xdoclet commit messages shall we…

  • 2003-05-25: fixed typo
  • 2003-05-25: Small cleanup
  • 2003-05-23: Fixed title
  • 2003-05-21: Typos.
  • 2003-05-16: change link for appfuse on tools.html page
  • 2003-05-14: Small change.
  • 2003-05-07: Small fix
  • 2003-04-30: Updated javadoc
  • 2003-04-30: Woops
  • 2003-04-25: Fixed javadoc
  • 2003-04-16: Fixed link to SF project
  • 2003-04-16: Added note on download rates and improved spacing.
  • 2003-04-16: Typo
  • 2003-04-15: Minor updates
  • 2003-04-12: Added tools

    Now, this is just a month and a half snapshot, it goes on like this whenever Matthias feels like ‘contributing’. To be fair, sometimes he commits features and bugfixes, but the rate is something like 10 ‘cleaned imports’ and ‘reformatted code’ for every ‘fixed bug/added functionality’. The nice thing about this is that for once, you don’t have to take my word for it, just go to sourceforge and have a look over cvs logs for xdoclet. You can be entertained for hours as you look through his ‘fixed imports’ and ‘reformatted’ checkins before the gems listed above.

    So Matthias, why don’t you take a leaf out of your own book, and stick to blogging where you can’t hurt anyone with your inane and irrelevant (and happyhappy lalaland) chitchat, and refrain from your feeble attempts at ‘giving back’? In a bitter twist of fate, it was in fact Matthias talking about how great commons-lang is that inspired me to rant and rave against it in the first place!

    Mmm, all this Matthias bashing makes it almost tempting to do an OpenSymphony dirty laundry airing…any interest?

    Finally, I’m NOT some airline pilot from Jordan, nor am I balding, fat, or in my mid-30’s. Mind you, it’d be pretty hilarious if I were indeed that guy.