Archive for the 'Java' Category

Good riddance, Marc Fleury.

Monday, February 12th, 2007

Well well well, it’s no surprise to anyone, but Marc Fleury has left the building.

Good fucking riddance, that’s what I say. Regardless of what he did or didn’t do, he certainly made out like a bandit, and I for one, like many many others, am very irritated (and jealous) about it.

Ultimately though, Marc achieved very little that is concrete. It’s very debatable whether JBoss’ success had much to do with him. Certainly, it did succeed, and a lot of people got conned out of a lot of money to make it happen, but such is the way of the world. The credit due it is more a matter of timing and of being the only OSS player in the field at the time, not that it’s a great product or was particularly suited for any given task. Witness the abysmal failure that is Geronimo, a product that is arguably better developed, yet the world at large doesn’t give a flying fuck about LGPL vs Apache licensing. Thus Geronimo remains a laughing stock and a head-scratching cautionary tale of OSS gone insane (not to mention that it’s owned by IBM, and has developers that are about as capable of developing a product as Sun is of marketing one).

What Fleury contributed to the world of Java is a personality; love him or hate him, the man certainly deserved to be hated. His incoherent ramblings, the perplexing capitalization, the weak and tenuous grasp of the English language gave us all a lot of ammo, and made for some very entertaining drama.

The fact that he’s also a shady, dodgy, and thoroughly despicable scam artist also helped tremendously. Who can forget the great astroturfing story? It’s nice to see a company bigwig who will get his hands dirty, and openly misbehave in ways that one only expects particularly handicapped children to.

So sure, it is one less personality in Java land, but it’s one we’re all better off without. A testament to how bullshit and angry penis waggling can get you all the material success you want; it’s a depressing lesson for any hopefuls to learn, and shows that even in this most technical of fields, a good con is just as easy to execute as anywhere else.

I wish him failure in his next endeavour, whatever that may be. Here’s hoping that the cosmic balance is finally restored and the justice is served by Bad Things happening to him.

My one wish though is that he’d stop blogging. His blog is so painful to read that I have yet to complete a whole entry. It basically consists of him ranting in his usual incoherent style about whatever happens to have crawled up his ass and died that day. Now, I of all people am quite appreciative of aimless degenerate ranting, but for the love of god, have a care for the poor English language! I don’t know how much of a second language English is to that man (though judging by his style, it might be more like a distant third), but can someone please explain to him that randomly capitalising sentence fragments is not a literary tool? It’s like trying to read with someone punching you every few seconds; you eventually decide you’re better off chewing your arm off than letting some random schmuck repeatedly hit you for no apparent reason.

Even funnier though is the army of JBoss sycophants who comment. You have Andy Oliver still struggling for relevance; nobody has told the poor bastard that he’s as much of a nobody as anyone can be, and that it’s not 2004 anymore. Random other JBoss halfwits chime in with their inane tuppence, presumably in the hope of garnering an acknowledgment from their divine leader, perhaps in the form of an incoherent collection of words and punctuation directed in their general direction.

Perhaps the most astonishing thing about the thread discussing this on TSS however is Bill Berk claiming he has 15 friends. How on earth did that happen? It’s probably him astroturfing again, the reality is more likely to be that he knows 15 people who smiled politely at him as he frothed and mumbled his way through a sentence, as they tried to pointedly ignore his nipple tweaking in an attempt to gain their attention and approval via a well aimed squirt of moobjuice.

Dodgy benchmarks

Wednesday, January 31st, 2007

For anyone following JavaBlogs, you’ve probably skimmed over a bunch of Sri Lankan shirtlifters cooing recently about a highly dodgy benchmark that somehow proves that Axis2 is faster than XFire. These turds are of course the same bunch of clowns who are very busy plopping their tagnuts all over the WS-* racket at Apache. The benchmark is by none other than WSO2; the company that effectively owns Axis2.

What’s interesting about this benchmark is that it manages to compare apples with oranges, and yet has its proponents drawing some truly perplexing conclusions.

There are some, ahem, issues with this benchmark. Like any vendor driven benchmark desperate to compete, It manages to compare wildly different things, just to find a case whereby they ‘win’. Instead of comparing the stacks fairly, they focussed on comparing the data binding parts. What they proved in fact is that ADB (a proprietary Axis2 data binding framework) is faster than JAXB (data binding specification). OK, not so surprising. If you wanted to be fair and picked the fastest data binding for XFire too, you could test Axis2/ADB against XFire/JiBX (JiBX being a frightfully fast OSS data binding framework). You’d see that XFire shoves a sharp pointy plunger in the general (or maybe even not general) vicinity of the WSO2′s development team’s collective asshole.

In fact, buried in the so called benchmark, you’d find the results themselves prove that XFire is faster than Axis2 when the comparison is fair and uses the same binding framework. Somehow though, this rather crucial fact is lost in the conclusions.

What’s more impressive is that no sooner than the company issues this highly dodgy report, its employees all start blogging about it and bragging that they finally managed to concoct a benchmark whereby they beat their competition.

Eran Chinthaka’s (whoever the fuck he is) blog has a particularly hilarious entry, with such gems as ‘We never did marketing for Axis2 telling bad things about other stacks’. Well my friend, I certainly am going to tell bad things about your stack, given your smug, snide, and ignorant post. The real icing though has to be ‘…then I feel Axis2 is even better than the numbers mentioned in the paper’. Huh? What, you, someone with a vested interest in your product, feel that the benchmark that you published and skewed to highlight your product, is not as biased as it should be? That reality, despite not even conforming to the distortion field imposed by your assumptions, somehow goes above and beyond it? I had no idea that the drugs available in Sri Lanka are so superior to those available to the rest of us.

This is of course, another ‘open source’ company. I thought that with JBoss being bought out and the old cabal being effectively neutered, we’d seen the end of the snide slimey comments by OSS against OSS, but our Sri Lankan friends seem keen to assume the throne of corporate fuckwittery in the name of OSS.

I hope this benchmark is taken as what it is, a company defending its own product against what is obviously a superior OSS solution. Friends don’t let friends use Axis2. Do you want to base your webservices infrastructure on a product from a company desperate to take your money, written as a student project, with a bunch of incompetent weasels at the helm trying very hard not to look like used car salesmen? Do you want something that integrates and embeds well withint your existing infrastructure, or do you want something that hijacks it instead?

Still, good thing we have the goodship Apache; that thriving haven of open communities, that final refuge for corporate flotsam and jetsam, that last bastion against whored solutions foisted on an unwilling and uninterested public, eh?

What makes for a good JavaOne submission

Friday, January 26th, 2007

For some inexplicable reason, I’m one of the external reviewers for this year’s JavaOne EE and Web tracks. The one thing that’s utterly perplexing about it is the dire quality of some submissions.

Tempting as it might be, I’m not going to name names. I’m not going to point out how many vendors pitches there are, or how much they suck. Instead I’m going to try and understand what on earth some submitters were thinking.

For vendors, honestly, what were you thinking? Do you think the people reviewing these things are stupid? Do you really think that JavaOne attendees love to hear about how you solved problem X using your own technology, that nobody can actually use without dropping trow, bending over, and paying for the privilege of being molestered?

The open source crap is just as bad. Here’s a hint to you budding open source wankstains. If your project doesn’t have a community, has no buzz around it, and is not particularly innovative, then don’t bother. JavaOne isn’t some whore you can throw your dirty papers at for a quick show and tell. Nor is it a venue for you to idly gaze into your navel and pick out lint in public, musing on its quantity, quality, and what possible use it might have.

Of course, some of the submitters are savvy to this culling process, and it’s obvious that they’re working hard to try and make the proposal not sound like a product pitch. Unluckily for you though, the reviewers actually do know what’s going on in Javaland, and all of them have attended other conferences and know who has talked about what, and how successfully. So be careful, one misplaced vendor pitch could ruin your chances at playing with the big boys.

I don’t understand how hard it can be to put yourself in the shoes of the average attendee. The goal of this conference (and ANY good conference) is to help said user, NOT to help the vendor or presenter. The fact that you get to strut your stuff and waggle your genitalia at a few hundred people at a time is its own reward.

So given that the average reader here is a discerning (if somewhat mentally unfit) Java type person, with one finger on the pulse of the community, and another firmly in an orifice, I’d like to you know what you think. What would make a good talk? What talks have you gone to that sucked so much you wanted to shove Gavin Fleury, 3 TDD zealots, and a Websphere consultant into a blender and smear yourself with the resulting goop while making sweet manlove to Howard Lewis Ship’s beard?

On and before I forget, HAHAHA VIRTUAS IS OUT OF BUSINESS!!!! TOLD YOU SO!

5 things I don't want to know about you

Sunday, December 31st, 2006

The whole ’5 things that make me look cool’ thing is getting out of hand. It’s insidious and evil and idiotic, all at the same time.

For one thing, who on earth would give a flying fuck about all of these irrelevant, tedious, boring, repetitive factoids? This approach works well enough as a social lubricant; it’s aimless little drops of pre-cum you can jizz out during a conversation just to keep things lubed up. Online, it makes you look like a tool at best, and more likely a self-absorbed child molesting fruitcake with nothing better to do that masturbate in front of random passers by in the hope that someone will stop and gawp at your pathetic flailing.

The real genius of it though is that it allows the tawdry twats who succumb to it to happily whip out their genitalia in public, rub it against their own orifices and spooge dramatically all under the guise of ‘playing along’ and doing it for other people.

Almost everyone agrees that a personal blog where one randomly defecates their incoherent and tedious ramblings is a Bad Thing, and most people have learnt (usually through being mocked horribly, especially in our industry) that nobody really gives a flying fuck about how many cats you have, how good you are at fucking your significant other and producing more boring people in your mold, or how excited you find penis slapping. This new approach though enables you get rid of any possible guilt, common sense or simple social graces you have with regards to regaling the world with this tedium, since someone else asked you to do it and it’s for some obnoxious and incredibly not funny ’cause’.

Of course, it works well in nerdy culture. Who could resist the chance to brag or boast about themselves? It’s considered fairly rude to do so in conversation unless it’s a contribution of some sort, but online, you can regale people with your exploits with nary a care in the world, and even better, ‘tag’ (a polite way of helicopter peeing on) other equally fuckwitted chozgobblers so that they can also participate in this sick and twisted pyramid scheme of self-gratification.

Let it end. Those of who you have already gotten your jollies off, well done. You got to spooge onto the world’s face, you felt better about yourself, and took your fill of the public buttplug all in one go. Good job. The rest of you who are vaguely pondering succumbing to this evil, resist. Resist long, and resist hard. Don’t become another statistic, don’t for one second assume that you’re special or clever or a ‘someone’ just because some random pillowbiter diddled your sensitive spot. You’re still a nobody, and far more importantly, people still couldn’t give a flying fuck about random trivia concerning your tedious, ‘I’d rather have my orifices plugged with my own feces while forced into a grouphug with 3 rubyists, martin fowler’s beard, and 2 thoughtwankers than be this guy’ mockery of a life.

Here’s hoping people spot this pathetic agonising plea for attention for what it is. It’s not funny, it’s not interesting, it’s just sad in that way that only a mentally handicapped 56 year old woman masturbating in public can be.

Happy new year!

Open sores scams

Tuesday, December 26th, 2006

It’s funny how whenever there’s a whiff of money in the air, all the shysters and scamsters come out of the woodwork to try and make a quick buck. What’s more depressing is how often it actually works. Witness Marc Fleury, for example, or Gluecode’s sale to IBM.

The Java world has a good few companies like these, companies which don’t really offer much, but have somehow managed to waggle the open source penis sufficiently that others have thrown money in their general direction for a quick stroke and lick.

It’s delightful however to see that this particular scam doesn’t always work. Two brilliant examples that come to mind are Mergere and Virtuas.

For the unintialised, both of these companies have no actual offerings, beyond brand. Mergere has a fairly inxplicable business plan; to build a company around maven. Not the actual product, but the idea. Suffice to say, they’ve flushed away a ton of money down the toilet and gotten absolutely nowhere, just like I predicted a year ago.

Virtuas is a really special one though. The basic premise of Virtuas is….well, it’s hard to tell. They seem to have something to do with OSS, but what, nobody is quite sure. They do throw nice parties though, and I fairly gleefully drank their alcohol and wasted their food at various conferences. A fool and his money are easily parted.

The three ‘brand names’ that Virtuas has (well, had) are Jeff Genender, Matt Raible, and Bruce Snyder. Matt is famous for being the webmonkeyest person in Javaland. Matt to the average Java developer is what George Bush is to the well intentioned republican; an oafish figure that’s vaguely embarrassing, but that you can relate to on some level because he’s as dimwitted as you are.

Bruce jumped ship fairly early on to join a similar scam with slightly better business prospects, LogicBlaze.

Jeff on the other hand seems to have just left Virtuas to move onto bigger and better (and more commercially viable) things. How do I know? Well, Jeff had posted a superb blog entry airing some of fun stuff going on at Virtuas. Sadly, the article was yanked. I imagine the powers that be sent poor Jeff some mean letters that deprived the rest of us of his literary genius. The article wasn’t even that bad, but it did point out that Virtuas spent a ton of money, and achieved nothing whatsoever. Really folks, if you’re going to force someone to yank an article, someone somewhere is going to notice, and the negative publicity you get from THAT is likely far worse than if you had let the article stay and ignored it. After all, I wouldn’t be writing about what turdburglaring arsebandit chozgobbling pillowbiting chocolate log miners Virtuas are if Jeff’s original article wasn’t yanked.

I remember being aghast actually a year or so ago when I first heard of Virtuas. The word on the street was that basically, the principals had managed to scam some Indian fund (the native kind, not the Asian kind) and that they had, in effect, unlimited funds to spooge over and so could do stupid shit like throw hundreds of thousands of dollars at JavaOne parties that generated no income or leads whatsoever.

Honestly, when I hear about these people, I’m tempted every now and then to draw a big chart outlining all the incestuous relationships between all these companies. It’s like one of those mob charts you see in cop movies. We have Gluecode, which was headed by Winston. Winston has a Philippines based sweatshop where most of the coding is done. He sells Gluecode, and is immediately astounded at his own business acumen. He goes on to form Mergere and Logicblaze through some more money he’s scammed, in return for gobs of shares. The rest of the gluecode people disperse to one of those two companies or IBM. On the periphery are people like Bruce and Jeff, who go on to form Virtuas, but also to work on Geronimo. Geronimo uses a bunch of products which happened to be commercialised by Mergere and LogicBlaze. Employees between all of these companies seem to happily hop between them, with IBM at various points no doubt injecting money to keep the whole thing sustainable. Matt Raible grins idiotically throughout the whole thing.

Another brilliant example of the OSS marketing approach is Terracotta, who have recently open sourced their flagshit product. Now, let me ask you this, if you had a product that cost 10k/cpu, and you had a ton of customers, why would you opensource it? The answer is actually pretty simple. You’d do so if the loss of income from license purchases was insignificant, which is the case if in fact you DIDN’T have many customers.

Terracotta also has a fantastic burn rate. Fancy offices, highly competent developers that likely cost a fair few limbs, and one of the stupidest marketing plans ever seen outside of Virtuas. Ignore all the spin, the OSS gesture is a last gasp effort, which might or might not pay off. Don’t make the mistake of assuming it’s a choice they had to make; it was a choice forced on them to try and salvage something out of what they’ve built. Ultimately, choosing terracotta or coherence boils down to whether you are building toys, or enterprise applications, at least for the near future.

So do yourselves a favour and avoid all these companies, their shelf life is highly suspect, and they’re all a bit too blatant about trying to scam you.

JetBrains' TurdCity

Thursday, October 26th, 2006

When renewing a whole bunch of IDEA licenses, I was pleasantly surprised to find out that this also gave us a bunch of free TeamCity licenses.

TeamCity is the new build server from the wise and wonderful people who brought us IDEA, so surely it’ll be the first CI tool that’s usable and functional.

Turns out there’s some good news, and some bad news. Lets get the good news out of the way first (this won’t take long). Unlike every other CI tool I’ve tried, TC mostly works. It’s managed to build stuff (though you’ll have to grab the latest EAP for that, 1.0 didn’t know what to do with my build.xml). This already puts it in contention for the perplexingly small list of contenders for the coveted ‘CI tool that does stuff’ category. It also is free for IDEA 6.0 users (though why anyone would pay for it in its current incarnatio is a question best left unexplored.)

Sadly, that’s where it ends. It looks like the people who develop this tool have a fairly serious identity crisis. Their father seems to be a desktop developer, and their mother is a cheap whore.

The traits inherited from their paternal genes are the wonderful ignorance with regards to long running processes. TC will happily run out of memory, it’ll periodically hang and refuse to play until you kick it in the face, and generally performs as well as Swing 1.1 does.

From its mother, TC inherited that trashy superficial ignorant love of Ajax pioneered by ajaxian.com. That idiotic shiteating grin towards any and every usage of ajax. The goal is to arouse sexual curiosity in the developer, even if it ends up shoving a big black dildo up the ass of the user as a side effect.

In practice, this means that TC has some truly perplexing uses of Ajax. There are tabs on the top, for example. Some of which function the way that God intended (you click on a tab, you switch to that tab), and some of which mysteriously popup a ajax inline window. Huh? What school of UI design advocated THAT approach?

Similarly, when you go to view a logfile, you get the main page which shows notmuch, and you get its body loaded in via ajax. In practice, this usually means a browser hang, and more often than not, the page crapping out.

Of course, when you dig deeper in, you start to become very very scared. Little girl molested by a guy offering candy kind of afraid. Suffice to say, there is much soiled underwear at this point.

For one thing, TC decides to write to your home directory. Yes, it’s a server process, but I guess they think it’s a desktop app, so even if you’re installing it in /usr/local, it’ll try to create its db in /home/poopy. God help if you if your home dirs are on an NFS mount (where file locking just doesn’t work).

Looking at the horrorshow that is the buildagent runtime, you’ll note that for some reason, it specifies all this extra emma gunk (why the hell they chose such a shitty product to integrate it is beyond me) even though you don’t have code coverage enabled. Looking over the environment variables it specifies is also going to cause a good deal of eye gouging/ear bleeding, depending on your disposition.

What app is complete without unhelpful error messages? TC continues the fine tradition already well established by other Java apps of providing cryptic unintelligible error messages, when things do go wrong. Fear not, things go wrong often enough that you’ll soon be enjoying these messages, and puzzling over them for days to come.

The IDEA integration is nice, but of course, suffers from the same half baked approach that the whole product has. When something is being built, the icon in IDEA does not denote that, instead it shows a broken build image. Running the default inspection profile on the server on a medium-sized project results in ‘too many errors’, where you can’t actually see the inspections in IDEA short of visiting every class, thus making it all rather pointless. 1.0 didn’t even let you schedule builds (which is fixed in the latest EAP).

I hope the product gets better. I’m actually quite optimistic, as I don’t see it getting much worse. There are a lot of very clever ideas in there, they’re just badly done and have about as much polish as a turd. The 1.0 version is about as productive as a conversation with a JBoss employee, so avoid that at all costs, and grab the EAP.

The death of Agile

Wednesday, September 27th, 2006

It’s a little disturbing seeing the agile crowd at work. In a relatively short period of time, an energetic group with potentially something new to offer has quickly sunk into a oft-derided group of greedy consultant used car salesman types.

I’ve spoken to a lot of people about this, I have yet to meet a single person who thinks agile, as sold by the agile crowd, is a good idea. I’ve ensured that everyone I spoke to had at least tried it, in some form or another. Pair programming, TDD, XP, little bits of paper, incremental releases, smug turdy devs, all experimented with and eventually discarded like a used tampon. Pair programming is inefficient and wasteful when compared to individuals who don’t slack off, the little cards more often than not end up with the wrong things scribbled on them, the incremental updates result in a big badly thought out ball of mud with no coherence, and the tests end up testing the wrong thing more often than not.

Is it possible to fix all that? Sure, but agile isn’t the way to do it, because the practices it espouses do not lend themselves to easy adoption. It’s a high barrier that continues to punish, and never rewards its participants beyond that air of smugness and that perplexing ‘I just shoved a big dildo up all my orifices and its strangely alluring’ look.

The reason for this disillusionment isn’t that hard to find. As many have noted, it’s rooted in the feeling of incredible disappointment when you realise that no time has been saved, your love life has not improved, and your customers are no happier when you follow this crap.

Genuine techies don’t react well to religion, usually. The agile crowd has committed the cardinal sin of stepping over the pragmatism line into the realm of faith. We’re surrounded now by the debris and detritus of less than successful agile projects. Instead of questioning the agile practices that might have contributed to the failure, agilists will instead scream out that the flaw is in the implementation, not the principles. Whatever happened to the scientific method? Why are the principles now held to be sacrosanct?

It’s that sort of attitude that makes normal people think that agilists are, on the whole, a bunch of greedy fuckheaded navelgazers more intent on group teenmasturbation than concern for fellow man. The irony of their very name is becoming apparent to all; there’s nothing agile about their thought processes or acceptance of external input. Either you’re with us, or you’re not doing agile ‘properly’, and you can hire us or attend our seminars for the cheap price of a few thousand dollars.

Just say no to agile. Say yes to sane practices that work for your particular need. In the real world, it’s not about doing either waterfall or agile, both are silly extremes that in practice never happen. The agilists initial point is well made, one should adapt and be prepared to think outside the box. Taking that advice in earnest involves discarding the modern day agilists and their newly discovered snake oil.

Please, no more logging!

Monday, August 28th, 2006

What is it with opensores and logging? I am utterly perplexed by why so many popular frameworks think that everyone cares about their startup cruft.

Maybe the whole problem can be traced to the linux kernel bootup console. We all probably remember the thrill of seeing that, of feeling faintly hackery and l33t, even though we’re not kernel hackers and most of it was in fact gibberish. It didn’t matter that what the messages actually said had no real impact on the end result (either the system came up or it didn’t, and which one happened had nothing to do with the messages). What mattered is that it made the average nerdy fuckface feel cool and hackerish.

Fast foward a few years, and those linux chocolate log miners stumbled bleary eyed into the enterprise world and had to learn Java. Being linux communallovefaggotarse types, they had to bring in the same spirit of assholeness to everyone else.

So, what do we have as a result? We have JBoss, with 6-7 pages of output when things go well, and a (not very) abridged version of War and Peace when they (usually) do not.

We have Hibernate, which feels it’s important to inform you of every time a Fleury inserts anything into Gavin’s ass, or every time Christian (he’s the asshole right? I always confuse him with Emmanuel, one of them is an utter turd, the other is not) defecates on a homeless person.

Not to be outdone, Spring jumps into the fray as well. Reams and reams of utterly worthless output, all about how its beans are busy molesting one another with gay abandon. Thank fuck for the full list of every worthless little bean that’s defined, because, you know, it’s important to be told of what your own XML files say. It’s not like you wrote them or anything.

It’s like there’s a whole generation of developers that’s developed collective amnesia over the difference between DEBUG and INFO.

I beg of all you opensores people, please please think of us users when you poop out your logging. Put messages that WE think are useful, not that you like to masturbate to. When I start up a library or framework, I expect it to start, and don’t need to know the details. I want to know when things go wrong, not when things go right. Maybe being mentioned in log4j.properties files everywhere makes you feel special. The person mentioning you though is far, far more likely to think you’re an inconsiderate self-aggrandising shithead.

Hell, I’m extending an offer to go over your app for free and send you a patch to remove all the suprious startup messages (hint hint, spring/hibernate people). Just holler if you’re interested.

Oh and apologies for the long hiatus, I got married.

Another googleturd

Monday, July 31st, 2006

Surprise surprise, google release yet another half baked idea, and techies everywhere bend over and demand that the biggest black object in sight be crammed up their orifices so they can ooh and ahh and generally behave like a bunch of desperate teenagers aching for a fisting.

This time it’s google code, and I am astounded (though I should be used to this by now) that anyone in their right mind thinks that this is an improvement over anything equivalent that already exists.

Granted, it does have one tiny benefit over sourceforge, which is that you can access its source control and get up to date files. It’s far worse than every other project hosting facility there is out there in every other respect (java.net now offers svn, so the svn support is not such a differentiator anymore.)

What’s odd about this particular offering is that while google stuff is generally useless and good for eye candy, it’s usually reasonably well executed. In this case it seems like they just rounded up a bunch of apache hippie types and let them futz about with this idea just to stop them from damaging anything important.

For a start, there are some rather important features missing that make this repository, at best, a good backup solution and nothing else. There’s no file repository, so you’d have to go elsewhere to actually host your releases. In fact, there’s no release mechanism or notification support either, so even if you did by some miracle get some morons interested, you have no way of keeping them updated. The list of project users is also what you’d expect an intern to come up with; it’s just a list of logins, with no real names or any way of seeing who ‘flibbity.gibbet’ actually is, or any way of contacting said person.

Even more surprising, there isn’t a single innovative feature here. What’s so bad about having a nice searchbar at the top of the svn browsers, instead of the skanky faggotarse default apache svn view? Why can’t I use google pages to write docs? Why can’t it host my documentation for me and make it searchable via googlemagic?

Trying out this pile of worthless gunk reveals even more flaws. Really basic stuff that shows that Google apparently has a severe QA engineer shortage, or thinks that for trivial toys like this, it doesn’t matter if it’s halfassed. For example, if a project has ‘Apache License 2.0′ specified, the link doesn’t go to the 2.0 license, but to the generic Apache licenses page.

This sloppiness is prevalent throughout the app. For example, all ‘home page’ type links go to code.google.com, but nothing pointing to the hosting home, code.google.com/hosting. You’d have to go all the way to the top, then drill down to get to the main entry point.

The form validation is also bizarrely crap. On the project creation page, the create project button is disabled unless you have a description and summary > 3 characters. All good and well, but if your project name is just one char, that’s fine, the button is enabled. When you submit however, you’re told that the project name is too short. What’s so evil about having the same validation mechanism for all the fields? Maybe I’m a dimwitted user, but it’s not entirely intuitive to me that I MUST specify a summary and description, and that they must each be more than 3 characters long.

Of course, if you’re the kind of guy who likes to create dummy projects just to write bile entries about how much google sucks, then just use Safari. You can happily hit enter there and sneak in 2 character summaries if you so wish.

The issue tracker is somewhat interesting, I do like the freeform label support, but of course, for the sake of consistency with the rest of the app, it’s useless for any real world projects. There’s no way to add custom tags, so you can’t for example add tags for your specific versions. This of course means that for every single issues posted, the first comment you’ll get back from the developer is ‘err, so what version is this again?’

There’s also the issue of stupid defaulting in the issue tracker. I can click new issue, then click submit. There’s no detection for the default content being specified, so it’s very easy to spam a project with a ton of boilerplate issues.

Editing an issue is equally badly done, there’s a ‘Add a Comment and Make Changes’ title, but all that is under it is a ‘enter your comments’ textfield. Where’s the make changes bit? Ah, you click on the textfield, and the rest of the form magically appears! Yet more bad jarring UI.

All in all, an abysmal effort. Shame on you google, but the real blame here is for all the google fanboys who allow them to get away with such tawdry offerings. In any other company, this sort of half assed effort would never be released, and someone would be held accountable if it was. Maybe google developers pride themselves on not being in ‘that sort of company’, but in their place, I wouldn’t feel so smug about being so sloppy.

InfoPoo

Wednesday, July 19th, 2006

It’s pretty funny seeing an idea go horribly wrong. It’s even funnier when someone thinks ‘I can do that’, and totally ignore the fact that the marketspace they’re shooting for has room for just the one player, and that player is in that position not due to technical brilliance, hard work, a flashy interface, or even a particularly useful piece of functionality, but due more to sheer dumb luck.

Such is the relationship between InfoQ and TheServerSide. InfoQ’s idea is to basically take TSS, and make it usable, useful, and relevant. The end result? The deafening sound of a silent and mostly indifferent world.

There’s something pretty embarrassing about seeing entry after entry boasting that ignominious ’0 comments’ stamp of shame. One might well wonder, what went wrong? Why does this site, to put it bluntly, suck so much ass?

There are a variety of reasons for this humiliating performance. The look of the site for example is too cartoony, but that’s just icing on the shitpile. The problem really is with the content. The top level subjects seem to be less ‘here’s what relevant to subset X of the IT landscape’ and more ‘here’s random stuff that’s better suited to blog categories’. As a potential user, I have no interest in Ruby or .net, but that’s fine, they’re at least alternatives to Java, so the domain space is at least similar. SOA and Agile though….omgwtfbbq. How do these relate to the other categories? The community divisions mean that an entry has to be either in SOA or Java, but not both. Nevermind that SOA is still a rampant cloudfest, which results in the hilarious but likely unintended consequence of all SOAP related entries being filed under SOA.

By far the worst culprit though is the Agile section. ‘Patterns for Daily Stand-up Meetings Published’ might sound like some kind of dirty joke you’d read about here, but sadly, it’s a real entry. The agile posts in fact are almost all about a prolific crowd that thrives on hunting out penises and gobbling up as much as possible. They’re in fact a set of genetic mutants, where any trace of a gag reflex has been long since eliminated. What next, ‘Agile sex in parking lots for TDD fuckstainwanktitshitnipplearsebandits’?

Even more hilarity of course can be found with the odd ‘oops’ moment. For example, they had posted the fact that ThoughtWanks is fucked, and owes VC’s a ton of money, then within a couple of minutes pulled the story. Later on that day they posted a rather biased piece about it from a ThoughtWanker instead. Just so you all know, ThoughtWorks DOES owe a fuckload of money, they obviously won’t be shut down due since nobody wins in that case, but it wouldn’t be surprising if a few top level people suddenly decided to leave to ‘focus on family’ or for the VC to add in more people that actually know how to get their money back. It’s pretty easy to hunt down an ex-TWer who has jumped ship and who’d happily reveal how much trouble they’re in.

TSS is where it is due to dumb luck, nothing more, nothing less. It happened to be the only venue at the time that served up content of that sort, and through some freak accident of nature, the average readership for some reason ended up with a few IQ points higher than JavaLobby. Poor InfoQ thought it was some kind of winning recipe, and proves day by day now it really, really, isn’t.

Defecating on a JDK

Monday, June 19th, 2006

In a rather perplexing move, it’s announced that the Java 6 JDK will include Derby, the turdy little unwanted IBM poop plopped onto Apache (about par for the course, since large swathes of Apache seem to exit solely as an IBM marketing tool.)

What’s perplexing about this decision is how incredibly arbitrary it seems. I have yet to see a single rational justification of its inclusion, even from within Sun or from the community at large.

It’s one thing to suffer from the tyranny of the masses. We have plenty of cases of that in Javaland, do we really need to now add arbitrary bizarre decisions that not only pop up out of nowhere, but also have nothing at all do with the community?

Honestly, not even the JDK6 Expert Group decided on this addition. It’s literally as if someone at Sun woke up one day and thought ‘you know, I miss the old days when we could add random shit to the jdk without all this community and expert group nonsense, I’m going to sexually arouse myself now by doing just that’, in one of the most harmful public displays of nostalgia ever seen in a technical forum.

I honestly cannot conceive of a single reason for this. It doesn’t even make life easier for anyone. You can’t rely on it being there since it’s not in the JRE, you can’t actually do anything with it since you have to ram various awkwardly shaped objects into unexpected orifices to create a db and manage it using derby’s amateurish and unpleasant tools. It’ll work out of the box much the same way as an Oracle 8 install CD can be considered functional.

Even the silly ‘explanation’ from Mark Reinhold on JavaLobby says nothing compelling. It really does seem like a completely random decision based on a freakish whim. The motive in fact is fairly evil, getting people hooked onto JDBC 4, which will be a nasty thing to hook people onto since invariably they’ll need to move onto a real database, and end up being exactly where they are now; at the mercy of the real DB vendors, with nothing useful at all gained from the fact that they got to play with some half baked alpha pile of IBM dingleberries; a dubious joy at best.

This is even bad news for the handful of morons who are incompetent and desperate enough to use Derby. Now you’ll have to bend over and invite over a large group of chocolate log miners and perform things your mother would be very upset about just to upgrade your db. Of course, you WILL want to upgrade it. It has hundreds of open issues, and is clearly labeled alpha.

Even if those issues are miraculously addresses in the next few months, we’d still end up with more IBM shit in the JDK. Honestly, when will people finally realise that IBM has never produced anything of worth, beyond genius marketers? How many times must I mention java.util.Calendar and java.text before people start listening?

How hard is it really to install lightweight pure Java DB? We have mckoi, we have hsqldb (in its various incarnations), and we even have a halfassed one from Apache (Derby). All of these (except derby, funnily enough) are very easy to download and install, and are perfectly adequate for testing and playing with and the odd bout of sexual experimentation for the curious. In ALL cases, this should NOT be in the JDK. Why should one DB be blessed above all others? Did we learn nothing from the crimson fiasco? Mark also naively claims ‘Vendors of little DBs are already threatened by Derby whether or not a copy of it is co-bundled with the JDK. I don?t see how doing that fundamentally changes the picture for them.’ A clearly ludicrous claim; just look at how successful Tomcat is. That lovely servlet engine that’d have gone nowhere had it not been the RI. I don’t envy the little guys having to compete against a product called ‘JavaDB’.

The branding of the whole thing is equally ludicrous. JavaDB? What next, renaming Glassfish to The Java Application Server and making obscene lawyery gestures at anyone wanting to refer to their appserver by that name?

I’m one of the few people I know who will publicly admit that he’s a Sun fan. I think they’re an excellent steward of Java, and have done a remarkable job in every way (except marketing of course, I can’t think of a company that’s more incompetent in terms of how they present themselves to the public or of the ludicrous stuff they seem to push). How out of touch do you have to be to be ‘honestly surprised at the reaction to all this’ according to Mark? Have you people lost all respect for what we love and care about our platform, and felt that for the sake of consistency, you should whore the rest of the JDK and sell all your products NetBeans style? Come on, surely there are enough technically minded people still at Sun, who have some say and can prevent this travesty from taking place?

Stabworthy office denizens

Tuesday, June 13th, 2006

Is there a polite way to inform a coworker that they have a personal habit that makes one want to slowly rip off one’s own arms and hurl them in the general direction of said coworker just to get them to stop, however briefly?

Over the years, I’ve been confronted with what feels like more than my fair share of obnoxious habits. So much so that I’m starting to suspect that it could just be that I’m such a sensitive sort that the merest distraction is enough to make me want to cry like a little girl.

It all started with the tapper. At the time, I was working in a location where the floor had no carpet, in an artsy sort of venue, where most of the developers laboured under the foolish notion that they’re also musicians and expert music critics. The tapper’s methodology would go as follows. He’d bring in his fatass Seinheisser headphones, plop them on his severely underpopulated head, and listen to music. All is well so far, perfectly anti-social and work-friendly behaviour. The fun though starts shortly thereafter, where he starts twitching his entire body in sync to this imaginary music. This was no mere head bobbing up and down sort of event, nor is it the odd foot waggle. Oh no, it’s a full body spasm, where the feet tap furiously, the arms jerk onto the desk, and the wheelie chair he’s on periodically slides out from under him. It got so bad that I would have to take regular breaks from work depending on his energy levels. This went on for six months, and I never figured out a polite way of suggesting that my life would be vastly improved if he either became a quadriplegic or lost all his limbs.

Next we have the eater. The eater consumes lunch at the office (nothing wrong with that, of course.) The eater however does not consume his lunch in a manner than civilised people have been taught to. The eater consumed it with a perplexing disregard for that simplest of eating axioms, close thy mouth, you obnoxious loud fuck.

The eater feels the need to share every single chew with his mesmerised audience. Whether or not you want to, you will discover the exact texture of everything the little shit ingests. Soups will be slurped, moist sandwiches will be squished moistly, and every bite will be followed with one of those loud caricatures of a swallow that normal people only use for the sake of exaggeration or effect. Don’t even get me started on the deafening roar of drink gulps.

There are other varieties, depressingly. Just when you think you’ll never have to deal with one of these again, you’re confronted with a…nail clipper. Yes indeed, some people think it’s perfectly sensible to clip their nails (all 20) in the office.

The problem with these, unlike the farters and burpers, is that it’s impossible to tell if they’ve just never found out that behaving in this manner is uncouth and unacceptable, so you can’t make a joke about it or even tell them off. A farter knows he’s doing something wrong, and will either look sheepish or brag in the face of authority. The tappers, chewers, clippers, heavybreathers, twitchers, rockers, pokers, patters, sportsyellers, arsebandits, hairstrokers, beardedwonders, turdmisflushers, malpissers, snotwipers, peepers, (those who come up behind you, ask you a question, then just stand there indefinitely looking at your screen), and other such office flora and fauna seem to be blissfully unaware. I’m sure I haven’t even covered the worst of it. Is there an acceptable way of dealing with such without committing a crime or copious amounts of blood?

JavaOne EJB 3.0 optimisation…right?

Friday, May 19th, 2006

The current talk I’m in is (allegedly) about EJB 3.0 performance and optimisation. The first ten minutes are, to put it mildly, utterly and thoroughly pointless. What on earth is the motivation to discuss the deployment/initialisation performance? There’s next to no magic involved, a bean is created, stuff is injected into it (looked up from JNDI by the container for you if it’s a naive implementation, or more optimised, either way, pretty cheap). Once that’s done, it’s done, init is complete, nothing to see here.

Sadly, the next bit doesn’t get much better either. We have a discussion of local vs remote session beans. This might come to a shock, but it turns out that….remote beans are slower than local ones! Remote beans should be coarsly grained! Local beans are better! Waggle waggle!

Having made the astounding leap of faith of preferring local beans over remote ones, you should next, apparently, look up resources once then cache them. Will the craziness never end? A revolution in enterprise development is surely afoot.

There were some surprising results though, to be fair. For example, the cost of one interceptor is negligible, but having multiple interceptors is far more expensive. I suspect this is due to a not insignificant amount of incompetence within the implementations that were tested for this talk.

The next bit about transactions, while horrifically sleep inducing, did manage to sneak in a useful tip or two. Thankfully, these were buried in amongst a bunch of other useless guff, so they’re very easy to miss.

There is a hint of usefulness wafting in the air though, with the preview of entity bean optimisations! Alas, this hope is quickly squished as it turns out that this bit is nothing more than a cascade type discussion that proves to be a red herring, as well as a explanation of the difference between eager and lazy fetchtypes (how that could require an explanation is beyond me.)

The most hilarious aspect of the whole talk though is the graphs. For each of the points raised, the poor presenters decided to ‘prove’ their claim with a graph showing the relative performance of the issue at hand. The hilarity however shows up when half the graphs show two tall bars, showing that the point at hand is in fact nonsense, and actually has NO impact on performance. I’m fairly perplexed this approach, given the title of the talk. What exactly is the point of claiming that something is slow, then showing proof it isn’t? Is the talk just horribly mistitled, and should have been called ‘things you might think are slow if you don’t know much about stuff but actually aren’t slow and are in fact irrelevant when working with ejb 3.0 beans’.

The final section shows some real world performance data for various operations, comparing two appservers (referred to as appserver A and appserver B), comparing results for EJB 2.1 and EJB 3.0. I can only imagine that the two servers are Sun’s and JBoss’ (since one appserver was consistently slower across every single test, no marks for guessing which one).

JavaOne BEA Keynote

Wednesday, May 17th, 2006

Having managed to blag my way into sitting on the second row during the BEA keynote, and having subsequently borrowed a BEA laptop to bile on, I almost feel bad for doing this. Still, it must be done, life can be so cruel sometimes.

First we have Bill Roth (BEA VP type dude), who starts off with debunking a lot of the shit that spotty little open sores sycophants have been spooging about in the last year or so. You know the usual crud, opensores will 0wn j00, java is cobol, ruby will make your penis big and tasty to hot little teenagers of the girl variety, and so on and so forth.

Patrick Linskey goes up on stage next, I don’t know if he has makeup or not, but his pate looks awfully shiny, so it’s a bit hard to focus. Regardless, the talk starts off with a rather boring ‘middleware is great, we love middleware, middleware is prevalent, middleware lets you write applications, middleware gives you the flexibility to be flexibly flexible, you can embrace change, have sex with it, then surprise it with a hot lunch/cold karl combo.

The next issue to address is whether middleware has been commoditised. Unsurprisingly, the BEA answer is a fairly resounding ‘nooooo’ waily sound. All is forgiven though since Patrick just said ‘holistic’ and you really can’t go wrong with that word.

Bill takes over again, with a great jibe at how stupid IBM is. It’s really hard to agree, one would be hard pressed to find a company that manages to produce as much shit as IBM. Never, ever forget or forgive the crime of java.util.Calendar for which they are responsible.

The one piece of great news is that Spring now supports the non-JPA bits of EJB 3.0 (DI, session/message beans). The best part, of course, is that JBoss now has it stuck to them up the bottom with a sharp splintery thingybobby. There’s absolutely no reason to use it now if you care about EJB. You can use kodo with spring, and have full EJB 3.0 support, running in tomcat if you want. Unless of course, for reasons that are entirely inexplicable, you enjoy chewing off your arm, cramming it up your ass, while singing twinkle twinkle little star in a strained and fairly uncomfortable voice. No doubt the Geronimo people will find this very useful (the spring thing, not the arm-in-anus thing), given that the only hope that poor little project ever has of not being a laughing stock is to beg for charitable donations from other entities that can actually deliver software.

Surprise surprise, it also turns out that SOA is NOT ‘the’ next big thing, but merely ‘A’ next big thing. I’m sure that by next year, we’ll have an ever more sheepish nod in the general direction of this obscene cloudfest.

Patrick however lost me at his praise of Apache. He seems like such a sane normal guy, and here we have a blatant nod in the general direction of Apache. Someone must have given him the wrong suppository to make him say such horrible things, come on, of all people, surely he’d know that Apache does NOT have ‘cool software’?

The real problem I have with this talk though is that the general theme is, unsurprisingly, bullshitty. They basically decided to use ‘blend’ instead of ‘integrate’, and are somehow pimping this as some kind of astounding revelation. Gosh, thank god I attended, I’d never have ever figured out that I should be using the right language for the right task, or that I should pick the right tool for the issue at hand. Now that I can ‘blend’ stuff, I’m sure my productivity will skyrocket! Pffft.

No pimpage is complete these days without some kind of IDE arm flailing with a promise that this could be almost as gratifying as self-asphyxiation. In this case, it happens to be BEA workshop. They’re also doing something some Google AJAX talk I went earlier did; having one guy casually ask the other various leading questions ‘so for example, if you change a dependency, it’ll show up right away, right?’ ‘why yes, funny you should ask, but it will show up right away!’ ‘Great!’ ‘Great!’ ‘Wanna cyber?’ ‘Funny you should ask, but yeah!’

Still, despite all that, one can’t deny that having another open source ejb3 provider is a great thing, and being able to run the whole thing standalone via Spring is enough to shake the limpest penis.

UPDATE

: I’ve gotten way too many questions about these during the last few hours, so for the uninitiated, here are some definitions:

Hot lunch: the act of shitting in clingfilm stretched over someones open mouth then fucking the mouth and at the point of ejaculation bursting through the clingfilm giving the recipiant a mouthful of shit and spunk, not to be confused with a hot buffet (the act of shitting, pissing and vomiting on your partners chest.)
Cold karl: The act of defecating on a glass table, while another person’s face is directly below the table/feces. Similar to the hot karl (form of assault in which the assailant procedes to fill a tube sock with his own faeces, ready to engage in fierce guerrilla warfare) and the warm karl (The act of defecating on another’s forehead with only a piece of cling wrap separating the feces from the forehead).

JavaOne, day one

Wednesday, May 17th, 2006

There’s something particularly endearing about standing in the lepers line at a particular session at JavaOne this year. The lepers line, in case you weren’t aware, is for the poor sods who showed up to a session thinking they had registered, when they in fact hadn’t. You stick you card on the cute little reader, and it flashes an angry accusatory red, insisting you have not registered. The nearest usher will then calmly but surely place you in the lepers line, where you get to shuffle about uncomfortabely and look like the dumb bastard who couldn’t figure out how to register, or was too lazy to do so.

Having been one of those rejects twice, I’d argue that the members of the line form a kind of silent (and often not so silent) bond. Sure, we don’t know how to navigate one of the most poorly written webapps for selecting and scheduling sessions, but by god, we’ll give it our best shot.

Pitifully, I managed to attend just one session yesterday (not including my own), so there’s not much to report on that front. However, this JavaOne is, perplexingly….vibrant? There’s a certain energy that seems to have been lacking recently. I’ve noticed more than one person comment on the quality of the talks and topics, and how much fewer of them seem to be pointless fluffy Sun penis wagglage marketing poop.

Of course, the real highlight is all the drinking, socialising, and awkward moments when you find out you’ve just accidentally run into Bill Berk and he still hasn’t developed any social graces.

The linux distribution license thing announced yesterday is worthy of note; it’s always thrilling to see another nail hammered into Apache Harmony’s coffin. Why all the members of that project don’t just crawl into Stallman’s beard and die is a mystery as yet unsolved.

Ex-TSS Floyd also launched his new ‘it has nothing to do with tss nor is it competition and I’m not bitter honest honest’ site, infoQ. It’ll be at least interesting to see how the content evolves, given that some of the editors (well, one of) can barely string together a coherent sentence, and has the mental acumen of a small pebble.

Tonight there’s the Geronimo party, where I hope to point and laungh at the fact that these monkeys still seem utterly incapable of doing more than running around very quickly in tight little circles. To reward this rage and anger, they’re going to give me free food and beer. Aint JavaOne grand!

Axis2: Why bother?

Monday, May 8th, 2006

The Axis team is kicking up a big fuss about their recent release of Axis 2 (1.0!) Surprisingly, this library is so so abysmally bad, that I have yet to find someone who has managed to successfully use it.

I will attempt to give a whirlwind tour of some of the things that are wrong with it. Most of these can be seen through a very very superficial cursory glance, it’s stuff that anyone trying a ‘hello world’ app will run into.

The first thing that’d strike any English speaker is how astoundingly bad the documentation is. I take back everything mean I’ve said about WebWork 2′s documentation; it looks like a bunch of professional tech writers got together and produced that, compared to the hilarity in Axis2. Some samplers:

  • Modules are in one of three states: “available” and “initialized”.
  • When engaging this module to some service or operation , module will be notify by calling this method there module author can validate , add policy and do any thing that he want , and he can refuce the engage as well.

This comical approach to text is followed through in every aspect of this abysmal project. In the code generator for example, the bit that turns WSDL into Java, we have: constructorMap.put("javax.xml.namespace.QName",

"new javax.xml.namespace.QName(\"http://double-double\",
\"toil-and-trouble\")");

It becomes very clear that the authors of the documentation have only the most rudimentary grasp of the finer points of the English language. These kids clearly played truant on the days when coherent sentence structure was taught in school.

For the sake of consistency, this spastic approach is present in every aspect of Axis2. The code is riddled with typos like ‘sceahm’, ‘mdoule’, and ‘getFaulReasoFromException’. Lest you be comforted that the idiocy is restricted to abuses of the English language, rest assured the code is equally incompetent. For example, the recommended way to develop is to start from a WSDL then generate java using their helpful plugin. Obviously, the plugin is utterly unstable and will not generate skeletons no matter how angrily you glare at it or how furiously you waggle your genitalia. Apache and Swing do not mix, they never have. Swing development requires people with at least a double digit IQ, which (with maybe two exceptions) nobody at the Java side of Apache has managed to evolve to. I won’t even get started on the numerous usability and UI issues.

The Axis2 main servlet is in fact a worthy contender to Tomcat’s DefaultServlet. The servlet introspects itself! Mapping all its processXXX methods to /servlet/XXX. So much for encapsulation eh, where a class has to allow itself to be extensible enough that you can look at the bottom of the file without having to know anything about the top!

Of course, unlike some bits of Tomcat, ALL of Axis2 is plain old rubbish. Instead of simply substringing a class’ name, the code is littered with Class.getPackage().getName(), nevermind that the javadocs for getPackage make it very very clear that you really can’t expect it to always be not null.

It really is a gift that keeps on giving. Deployment brings its own special joy sauce to burn your eyes out with and make your bottom cry rivers of brown sadness. Everything is hardcoded to a specific context path, and deploying the simplest hello world service is more likely than not to result in a jbossian stacktracefest.

It’s easy to argue that all these issues are technical glitches that can be remedied by hiring a English speaker or two, along with a Java developer. Sadly, the same people who have come up with the implementation of this monstrosity seem to have had a hand in its design and goals.

While the rest of the world is moving to a POJO flexible embeddable testable minimal non-invasive API world, Axis2 is keen to march in the exact opposite direction. Now there’s a repository with a weird fixed structure. There are new file extensions and ‘hot deployment’ modules. Good luck finding an IDE that’ll grok .aar or .mar files. Who the fuck asked for such a feature? Axis is NOT a platform, nor should it ever become one. Of all the thousands of spotty fuckfaced shiteaters who use Axis 1, I suspect there are maybe two that don’t use it in an existing container of some sort, on the server side. Didn’t your mothers warn you against juggling custom classloaders in your webapps? What sort of example are you setting for the hordes of jizzgobbling turdburglars who will look up to this monstrosity?

However, it looks like some of the people involved realise that what they have on their hands is a steaming pile of doggypoo, and have looked around at the Java landscape and observed JBoss’ success, and decided to take a similar approach. Enter marketing!

I had to do a double take when reading some of this stuff. There’s a developer.com article that talks about ‘avoiding mistakes using Axis2′, which on closer inspection reveals how fucked up Axis2 actually is, by accidentally highlighting many of its warts. The author (Deepal Jayasinghe) is obviously an Axis2 developer, as evidenced by the typo in his very first point: Trying To Do Advance Tasks Without Knowing Basics of Axis2

The JBossian approach is scary. As much as I hate Apache, one thing one could always count on is their moralistic holier than thou good behaviour. They won’t lie or decieve, and when they do so, it’s usually out of ignorance and simple minded idiocy than any actual malevolence.

This perception was shattered a couple of days ago. As someone who has contributed the odd piece of XFire documentation, I’m subscribed to watch any changes in the XFire confluence wiki. Imagine my surprise when I see that the ‘stack comparison’ page was changed 4 or 5 times by a lead Axis2 developer, Davanum Srinivas. He merrily snuck in and modified the page to make Axis2 look a lot better, both by changing existing points and adding new points that he knew are not relevant to WS in any way, but that Axis2 supports anyway. Is there no accountability? If someone from JBoss has done this there’d be an article on TSS discussing these evil underhanded tactics, but since it’s Apache, we can all ignore it and pretend they’re honest people with no ulterior motives or evil actions.

After all, why would an open source developer like Davanum Srinivas do this, if it weren’t just to set the record straight? Oh wait, he’s the Co-Founder & VP Engineering of WSO2, a consulting company that just managed to get funding for….Axis2, and that coincidentally has some cockamamey scheme on making money off of Axis.

WSO2 is, depressingly, a Sri Lankan company. I say depressingly because I despise all the stereotypes in IT about south east Asian developers. Projects like Axis2 do much to encourage that sort of stereotyping, unfortunately. Digging into the history of the project, the developers brag of the fact that it was written by a bunch of students who knew nothing about xml or web services, or any specs in that space. It should be written off and its developers put out to pasture, and everyone should just switch to XFire to make the world a better place. WSO2 should die the horrible death it has so richly deserved in its short pathetic life.

CodeFutures stuck in the past

Thursday, April 27th, 2006

It is perhaps unsurprising to see vendors who are harmed by Java EE lash out against it. The latest such foray in fan fiction comes from none other than CodeFutures.

CodeFutures, for those who don’t know (and nobody can blame you, they’re a bunch of nobodies desperate to sell a product nobody wants), provides Java persistence code generators. Basically they generate a bunch of poop around hibernate or whatever else you happen to be using. Potentially useful sometimes, hardly earth shattering, and is one of those funny little products that owes some of its success to how much ejb2 entities sucked.

Anyway, that’s all good and well, but today they had to brag about how application servers are dead. They go about this in a way that’s rather reminiscent of 2003; they attack J2EE 1.3.

Lets go through their claims, shall we? First, they insist that J2EE is too complex for most problems. That’s a shocking liberal use of the words ‘complex’ and ‘problems’. What are most problems? intranet CRUD apps? Million hit staticy public facing sites? Personal homepages? Penis pump vendors? Java EE 5 has in fact hugely lowered the complexity and barrier to entry. It’s shocking that a vendor who prides itself on any sort of up to date Java work would be so blind to the platform and where it’s going.

Next up, they do the furious arm waving dance that is ‘scalability and performance problems’. So, how many examples do we have of applications using appservers that ‘don’t scale’, or having problems doing so? How many vendors don’t support clustering? (answer: Just one, Geronimo, but that’s not a real appserver anyway). More importantly for the purposes of their deranged ranting is how this issue is specific to EE. They rail against server farms saying they’re a ‘traditional’ approach, and that you don’t double your performance when you plop in a new CPU. Duh, we were all amazed at that back in 1991, but if you find anyone who thinks so in this day and age then they’re probably the kind of people who say ‘my internet is broken.’

Next up we have the commoditisation argument. Unlike anyone else who has ever made this point, CodeFutures manages to sound both incoherent and clueless at the same time. Yes, commoditisation of EE is happening, and vendors are latching onto the idea. Many of the EE 5 API’s can be cherry picked and plopped into any environment. Saying that the major vendors are not pushing SOA is a huge compliment to them that is sadly misplaced. You’d be hard pressed to find a high level guy not waving every limb and flappable item of genitalia he possesses in the general direction of SOA. You’d be equally hard pressed to find an actual developer who gives a monkey’s ass about it. SOA is a cloudfest, and nobody in the real world develops with clouds.

Then we have the rise of SOA. As the internet puts it…OMGWTFBBQ. SOA is lightweight? Since when? Did someone redefine it while I wasn’t looking? It’s loosely coupled huh, I guess that depends on how loosely coupled you think a schemaorgy is. Highly distributed? That’s certainly true. Shame it contradicts an earlier point about ‘most problems’. Are they now saying that most problems in fact require remote/distributed solutions?

PJ Murray, the author of this article, seems to be about as clueless as they become. I’d strongly suggest a horizontal career move to that of a TSS commenter, he has the tone and mental acumen to fulfill THAT role sufficiently, at least. The article would look far more at home on JavaLobby than on a corporate blog, since one would imagine most corporations tend to have idiot-filters that prevent their deranged employees from soiling themselves so thoroughly in public. Alas, not so this time.

Why I hate tomcat

Thursday, April 20th, 2006

Everyone uses tomcat, and nobody believes the tiny minority of us who hate it. Tomcat sucks, plain and simple. For such an important piece of infrastructure, you’d like to think that smart people who know a thing or two about good java code were involved. So, in an attempt to prove my point, I will discuss a single class in Tomcat, and we can all have a look at how brilliant the code is. I specifically picked a class that was written by ‘important’ people, just to ensure you idiots know not to trust these monkeys ever, ever again. This is just ONE class, there are many many worse ones.

The class we’ll look at is Tomcat’s , written by Remy Maucherat (jboss monkey now, I believe) and Craig youknowwho.

Where does one start, really? Any intern at my company who writes code like this would earn a serious ‘talking to’. It’s in fact probably wiser to just take them out back and shoot them, doing both them and the world a favour. Alas, opensores has no such safeguards, and both of these wankers are alive and well, still defecating out huge reams of code in the community’s general direction.

So let’s get started. The first issue is the fact that everywhere, Throwable is caught. Yes, even Error type exceptions are caught. Things that god and Sun never intended for applications to even try to handle, tomcat will (silently) catch and ignore. After all, when you run out of memory, best thing to do is keep going right?

We also have methods that happily check for exception message strings (search for broken pipe), so I’d advice you to never use that string in any of your own exceptions. The comment around that bit of code is also particular amusing. The exception is caught, next comment says //ignore it, and the next line? You guessed it, throw the exception!

If you’ve ever wondered what the urge to chew off your own face feels like, then look no further than the parseRange and copyRanges methods. It’s like the authors fell off the antipattern tree and hit every branch on the way down, while somehow also managing to do things to exceptions that’d make your mother blush. We have returning concrete collection types when an interface will do, a million random exit points halfway through the method, using exceptions for logic flow rather than…well…exceptions. Hell, copyRanges even RETURNS an exception (which is ignored, sometimes). Come on Craig, you work at Sun, just go down the hall and for fuck’s sake, ask someone to explain exceptions to you. You’re bound to find SOMEONE who understands the very basics.

At no point in the code is any stream closed in a finally clause, needless to say.

The pain goes on and on, and never really ends with this class. We have an impressive ignorance of how basic numeric handling in java works, as evidenced by // To avoid 0.0 for non-zero file, we bump to 0.1. We also have renderSize and displaySize, both of which do equally fucked up shit.

Ok, so maybe these kids don’t know the basics of elegant java code, that’s fine, many people don’t. At least they know idiomatic usage of java, right? They understand things like naming methods, idempotent methods, and so on. Haha, right. Calling validate on a range can have an interesting side effect of modifying the end of that range. Cool huh? You could avoid that ludicrous I’m-too-fucking-stupid-to-know-how-to-keep-it-valid-so-I’ll-guard-against-it approach by just having a length() method, that is calculated based on start and end. Anything that reduces the amount of work you people need to exert can only be a good thing, given your intellectual capacity.

This code is so abysmally bad in fact that I know of at least one person (this is NOT a joke) who uses it in interviews, asks people to identify all the things wrong with it. These are potential employees who I’m sure would be paid a lot less than Craig or Remy, but had they the same coding ability, wouldn’t be allowed in. The whole thing would make a fine contribution to dailyWTF, I’m sure.

Of course, I’m sure the tomcat fanboys would quickly whip out their collective penis and wave it about angrily. After all, it’s still popular, right? Who cares if the code is ugly, it does its job! Who cares if it’s riddled with inefficiencies, is confusing to read, can’t be maintained or picked up easily, or a million of those criteria that real developers actually care about, even though nobody else does? You’re right, nobody cares. Tomcat is a great example of how good code is, as I’ve always insisted, irrelevant.

WebWork doesn't Get AJAX

Monday, April 17th, 2006

My adventure with WebWork 2 continues, and the disappointments keep piling on. The problem stems from the fact that almost every framework that sports ‘ajax’ support seems intent on shoehorning it into the existing paradigms, and so ends up failing miserably when you actually want to do Cool Stuff.

Here’s a simple example. I have an administration page, which has a number of checkboxes on it. These checkboxes toggle various bits of functionality. So for example, I could click the ‘tug penis’ checkbox, and that’d result in the server commencing penis tuggage. Ajax fappery means that I don’t have to have a submit, I can wire up (in theory) the checkbox to some method on the server, right? Nope, quite quite wrong in fact. This trivial example was in fact too complicated for poor old WebWork, and is not possible. Instead, you have to pretty much do all the wiring yourself.

The ajax support is in fact as pitiful as it could possibly get. All it does is do the odd bit of form validation. It won’t do ajaxified double select lists, it won’t really add any new cool components (not even standard ones like autocomplete boxes), it’ll just sprinkle some retard newbie myfirstajax type code in various places with no real thought or innovation.

Here’s a tip to all you web framework authors out there. If you’re going to stencil ajax on your collective genitalia, make sure you can deliver. You’re lucky that most of your users are struts rejects and have the communication skills of Kirk Pepperdine, and are thus unable to coherently form sentences vaguely describing their expectations, needs, wants, or even thought processes. Hell, you’re lucky your users more often than not don’t even seem to exhibit thought processes, let alone ones that can be expressed. It takes more than the odd ajaxy validation to impress. I want my ajax support to actually utilise ajax, instead of being a pathetic little demo for one gayass corner case.

Of course, it’s not surprising that nobody has really figured this out. There are now more ajax frameworks than there are web frameworks. There are frameworks that now layer over other frameworks. Most of these are even worse documented than web frameworks. In fact, the ajax landscape right now makes one really look back fondly at the Java web framework arena, which (amazingly) has a great deal of coherence by comparison.

For WebWork, I still find myself fighting the framework. It’s astounding that after all these years, web frameworks still don’t feel natural or elegant. My requirements really are simple:

  • Scalable (the site currently handles about a million hits a day)
  • Doesn’t have that moronic fuckwitty we-separate-concerns-but-still-demand-a-1to1mapping-between-pages-and-code. If my action class is GenitaliaManager, I should be able to have genitaliaUpdate.jsp, genitaliaRemove.jsp, and /genitalia/contribute.jsp if I want, all going off that same class.
  • No pretentious developers who look down on jsp as a view technology. Velocity is by, and for wankers.
  • Reasonable ajax support (optional).
  • No XML hell, annotations all the way.
  • Actually uses Java5.
  • Basic documentation.

    It’s depressing that based on what I know, no such beast exists. I’d be thrilled to be proven wrong, but it’s sad and pitiful that in this day and age, we still have no frameworks with these very basic capabilities. Am I missing something?

  • Vanity Fair

    Wednesday, April 12th, 2006

    I am writing this on behalf of very many people. A huge throng of JBoss ill-wishers, who are dismayed and saddened by their current fortunate turn of events; namely, the RedHat purchase.

    One has to give them due credit though. It’s impressive to be so publicly abusive to a buyer, and have that buyer still cough up untold millions of dollars as a reward. Maybe we should all take a leaf out of that book and fling virtual poo in the vicinity of anyone we’d like to retaliate with some money in our general direction.

    There is much hilarity to be had from Marc’s quotes, as many have pointed out. His initial (now deleted) posting was actually surprisingly accurate, if hypocritical. Marc’s insight into RedHat’s model is in fact a perfect illustration of jboss employee mentality; attack anyone you don’t like for the exact crimes you’re busy committing. RedHat does indeed provide no value, as his garlicness asserted, It’s a vendor for the stupid, the ignorant, and the poor bastards who have to use some third party software from bigco that is only supported on RedHat. Sounds familiar?

    That Marc has a strong personality and a certain kind of magnetism cannot be denied. Sure, he has a miasma of drug related anecdotes floating about him (all of which are pretty funny, to be fair), but he’s smart enough to know how to surround himself with the appropriate coterie of sycophants. After all, in the land of the blind, the one-eyed man is king. The blind in this case constitute the overweight middle aged men, the fat insecure geeky types, and the young my-dad-molested-me-when-I-was-6-so-I-must-find-myself-a-French-American-father-figure types. Naturally, these types can’t believe that they have found someone who is able to construct coherent sentences (without uhmmm, arrrs, and ehhhs, and without each sentence juddering out like it needs to be expelled before it picks another orifice to exit from – anyone who guesses who THAT jboss employee is wins a free copy of the upcoming bileblog book), someone who is in fact able to interact with people in a very impressive approximation of a normal person, and thus maybe even rub off some of the ‘cool’ on them! Having said that, it’s still mildly perplexing how these people’s chosen idol could be someone who has managed to combine the worst parts of American and French culture into one odious personality.

    That is not to say that all JBoss employees are fuckwits. The public mouthpieces all certainly are, but it’s certainly quite plausible to sit down and have an honest conversation with some of them, and interact with them as any functional human being would interact with any other. What is surprising however is how many are incapable of that simple act. They’re a bunch of self-centered religious insecure despicable worms; their every word a constant battle between the urge to finally be loved, respected and admired, and the wild lashing out at being unloved, disrespected, and viewed as wayward children at best, lying scheming cunts at worst. There are few companies that I can think of where the top staff have all lied, cheated, and been so thoroughly unprofessional as this lot. There is certainly a grim sort of entertainment value in following their antics, which I am sure will continue for the foreseeable future.

    It’s a shame really that the Oracle buyout didn’t work out. The best thing that could have happened would have been a buyout by some other Java EE vendor. JBoss would be quietly gutted over the years, and the culprits slowly turfed out on their dirty little asses. Sadly in RedHat’s worthless world, even piles of dogpoo like JBoss seem like a significant offering.

    Of course, it’s easy for jboss fanboys to dismiss all this as jealousy. Let me assure you, it’s far from jealousy. It’s disgust, hatred, and a fundamental lack of goodwill. It’s the same feeling that biblethumpers feel towards prochoicers. The same feeling that lefties feel towards the US, Americans feel towards Arabs, and Germans towards Nazis.

    See? It’s very far from jealousy. We wish you the very worst. May your penises wilt at inappropriate times. May your significant others develop scat fetishes and copulate with your pets. May you suffer dangleberries while armed with a 1-ply unquilted single square of TP. May the world finally, against all odds, punish Evil, for a change. If I cared enough, I’d even download Geronimo in protest. Haha, only joking. I’m not THAT deranged with grief.