Archive for January, 2004

The top 50 asshats

Friday, January 30th, 2004

Looks like TSS is running some kind of nonsense about the top 50 enterprise java kids, which needless to say provides plenty of scope for mockery and taunting to be applied to a huge variety of people. I could of course mention the 50 worst people, but that’d be too easy. Instead I’ll try to be as unhelpful as possible and debunk many of the nominations instead.

The basic premise is simple. People shouldn’t get on that list if they’ve done something stupid in public, and not apologised sufficiently for it.

First let’s deal with the TSS nominations. Aslak might well be a nice guy, but he isn’t sufficiently apologetic for the sorry state of xdoclet for my liking. Nevermind that counting picocontainer as innovative or amazing or particularly useful would certain require a hyperactive imagination and a cruel disregard for any kind of truth. Billy Newport deserves to be off the list because he’s vaguely related to Websfear. Martin Fowler, while a smart cookie, should definitely be off the list for the horrific damage he’s done to the java community with his bullshit. He should focus on putting his house in order first before spreading that kind of pretentious twaddle to the world at large. For example, feel free to peruse Jon Tirsen’s blog where he disagrees with fellow ThoughtWorker drones Dan North and Aslak about what TDD is or isn’t. If the kids who suckle at the Fowler teat can’t agree on it, surely us mere mortals haven’t a fart’s chance in hell?

Jiramike also does not lead opensymphony anymore. While javablogs is a good service, it certainly won’t break any records when it comes to uptime. It seems to delight in taunting us poor users. I remember how pleased I was that we got the ability to ignore blogs. I was merrily ignoring away (current count is 15 ignored blogs), but then as suddenly as it arrived, it was cruelly taken away from us. Now all I get when I try to ignore is one of those infamous atlassian stacktraces. The fleury clanleader also should not get a nomination, for his evil plans of world domination by way of badly written software. It’s one thing to write a bad novel and try to take the literary world by storm, it’s quite another to try to do so by waving around a wet paper bag with a logo crayoned on.

Next we have the candidates suggested by the wise and all-knowing TSS readership. Here is where we really start to wallow in the mud. Craig McBlahblah for Struts! Ha! He should be hung, drawn, and quartered for all the evil he’s brought to the world. His list of crimes is longer that Gerald Bauer’s medication list. Struts, JSF, tomcat, he’s a veritable king Midas but with a touch of shit.

Rick Ross, another hilarious nomination; the guy who offered the legions of javalobby cannon fodder to NASA to help them fix a bug. Ahahahaha! Fewer communities have a more pathetic or embarrassing self-styled Fearless Leader. James Strachan hasn’t apologized for much of his crimes either, so he’s off. Jon Tirsen’s nomination is hilarious too. Sure, he’s a nice guy, but the memory of a guppy coupled with religious fervour make for a bad combo in this industry. Bob McWirther should also be knocked off for all the shite that is in codehaus. He might be a good leader, but he can’t code for crap. Carlos Perez…well….see past blogs. Gazing endlessly into one’s navel is amusing for about 3 seconds.

Really, the list of bad nominations goes on and on. Instead of a top 50, I propose a list of top 50 not to be. Or a list of the 50 most dedicated people to killing java from the inside. Admittedly, a top 50 certainly does not have to be competent or worthwhile people, all it has to do is pick 50 that aren’t complete fuckups (which is what TSS’s list aims to do I suppose). It’s a shame we don’t aspire to something higher.

Commons Collections 3.0 ha ha ha!

Monday, January 26th, 2004

It’s hard to describe the glee I feel at the release of commons-collections 3.0. The sheer suffering and pain that this release will hopefully cause a lot of people is making me giggle like a little girl. It’s hard finding words to fully capture my gratitude to the commons monkeys for thoroughly screwing their users and showing themselves to be the evil bunch of spastics I’ve always insisted they are.

So, what’s so bad about it? Well, the fine Jakarta folks decided with one mighty menu click in IDEA to refactor. Classes have moved packages with impunity! API methods have been changed! Someone went wild with the deprecated tag!

As if that wasn’t hilarious enough, they decided to split it even further into more jars! It’s like a bad comedy sketch at this point. I mean, previously I suppose one could have argued up to a point, then conceded that what they’ve done so far is not explicitly harmful, and merely violates all that is beautiful, clean, and wholesome about Java. No longer! Now it should be plain to see to even the medically braindead amongst you that depending on such shite is a very, very foolish idea.

The real fun starts of course when the more enlightened OSS users amongst you decide you’d like to upgrade. Like a good little OSS monkey, you use a whole bunch of other OSS crap. Most of which, needless to say, casually uses commons-collections like a cheap whore in a time of need. Sorry kids, you can’t upgrade. You have to upgrade every single thing to use this shiny new API, or upgrade none. Woe unto you as some of the libs move on to collections-3.0 and refuse to support your current version, with that standard OSS battle cry of ‘just upgrade, it’s fixed in the current version!’. You could always of course go for deploying both versions, although I don’t know how you’d be able to sleep at night knowing you had done such an evil thing.

Astoundingly enough, there doesn’t even seem to be a guide anywhere as to what classes moved or why, or a clear description of the API changes on the pile of crap that maven shat out onto jakarta.apache.org. I’m sure one exists, but is buried somewhere deep in that rotting pile (or go through the shame of actually downloading the release). After all, it’s not nearly as important as being able to see TODO list for the project and all the shiny project metrics.

The saddest part about this is all the people who will still advocate this idiocy, and dig deep to try and find some justification for the madness. For these people, enough is never enough, they will cling to their false prophets in the face of all adversity, resolutely refusing to ever learn or evolve beyond the drooling simpletons they are.

Aren’t you glad now that there’s no spec mandating future behaviour or contracts?

J3EE is moron bait

Friday, January 23rd, 2004

I’ve been trying to ignore this nonsense, but frankly, it’s just so ridiculous and such a nice big fat juicy target that it’s hard to pass up.

The ‘J3EE’ discussions highlight precisely what is wrong with the java community. It strikes at the core of what inspired me to start writing. That gleeful, childish, shameless tugging of one’s own genitalia in public in order to encourage others to also tug at said genitalia for no discernible purpose other than the very obvious.

Where would one start? I mean, half the people realise that the J3EE term is a joke, the other half though are perfectly willing to entertain it as a serious name (setting aside legal issues). Now it’s not too odd to have someone partake of the crack pipe every now and then, but this idea is no crack pipe side effect, it’s so braindamaged that it can only be caused by a full frontal lobotomy.

Amazing as this might be to you toy app junkies, J2EE is not there for fun. It’s not there because a bunch of wankers got together and started an opensource project of stuff they thought is ‘neat’. You might all get off on agile development, TDD, role playing, and silly hand-scribbled notes to do your design. Sadly for you, that’s not how specs work. A spec is indeed a big lumbering giant, one that often is unpleasant and annoying to work with. The value proposition however is not that it’ll make you code any faster, but that it’s a specification for future behaviour, and a commitment to certain contracts and behaviours.

So this insane J3EE idea suggests using hibernate, spring, and pretty much everything that is currently cool. Gosh, I wonder what happens in a year, when all you cutting edge fuckwits have moved onto the next cool thing. You won’t care of course, you can be your happy-idiot self and stumble along giggling at every new thing. The people who will care though are those stupid enough to be taken by your childish hype and enthusiasm and actually went with your ‘J3EE’, and are now stuck with a bunch of legacy apps that even the original developers thereof will say ‘oh, we only support the latest version, and anyway, Hibernate/Spring/AOP/IOC/Pico/Geronimo/JBoss 3.2/Microkernels/JDO/yourmom are no longer supported by us and we recommend you use cool thing X instead. So much for vendor neutrality! You’d basically be choosing to stake your future on about 5 guys, most of whom have shown in one way or another that they’re at least partially retarded.

The only light at the end of the tunnel though is that there are some lone voices out there that ‘get it’. Juergen Hoeller from springframework seems to ‘get’ it, he understands that this silly new proposal has nothing to do with J2EE, and is a layer that would sit on top and make the life of webmonkeys easier, and is at best a ‘best practices’ sort of guide. Cedric Beust also gets it (as shown in a comment on TSS). For those of you who took this ‘joke’ a bit too seriously, it’s time to wake up, or even better, fuck off to another profession.

How to be popular

Tuesday, January 20th, 2004

The Anti-Richard Saunders was feeling particularly inspired (read, hate-filled) at some point last week and so emailed me a rather entertaining list of rants against the world. So they in turn inspired me to enrich and expand on them. Those of you who are finding that your blogs are not getting that much traffic would do well to print up this list and put it up on your bathroom, so you can review them every time you puff and pant and try to expel things from various orifices. Not only will your turds be expelled more forcefully and enthusiastically, but you will also increase traffic to your blog.

Incidentally, I don’t know who antisaunders is, nor do I know who saunders is. I’ve gotten emails from both though, amusingly enough. I do find Richard Saunders somewhat fascinating though, in that he seems to embody that guy that exists in every team; that one guy that most of us dislike and hate. The guy that pontificates at length about how great he is and how pragmatic and sensible his approach is, while never actually doing anything beyond being a serious obstacle in everything they’re involved in. So I’m glad he’s blogging now. It give the rest of us an insight into the mind of the enemy, so that we are better equipped to defeat his sort. We can all look forward to the day when VB developers stick to VB and stop this bullshit habit of ‘learning’ java in a month then getting a java dev job.

So, without further ado, I give you the definitive list on achieving popularity!

  • Pick some well-known personality vaguely in the same line of work as yourself, and endlessly express your admiration and awe at them. Insist that they’re humble and intelligent, and lament the fact that not everyone is like them. Regularly thank said personality for brightening up your life and fulfilling you with unrequited sexual longing.
  • Pick some well-known personality vaguely in the same line of work as yourself, and endlessly express your disgust and hatred of them. Insist that they’re retarded and bigoted, and lament the fact that they dare exist. Regularly rant and rave against said personality and proclaim that your life is made intolerable by their very existence.
  • Develop an intimate-bordering-on-sexual relationship with a product of some sort. Spend most of your time saying how amazing this product is, and share ‘tips’ about how best to use its obscure features with everyone. If anyone dares suggest that you have a vested interest in said product or are a paid employee of said company, ruthlessly delete their comments before anyone else starts spreading these hateful lies.
  • If you have a jroller account, obsessively check your blog and set up scripts to regularly hit it to push yourself into the popular blogs list on the jroller homepage. Ask Fred Grott if you’re unsure of how you can do this.
  • Discuss your family. Children are there to be exploited. Brag of how they are now able to make noises better than most children their age, discuss hilarious situations in which the little shits made some pithy comment by accident, and suchlike and so forth. This will show your sensitive side and female bloggers will flock to you like flies to shit. If you have no family, then pointing out cute behaviour of some little animal that is in your possession is also acceptable.
  • Milk personal tragedy for all it’s worth. Breakups and loss of friends and/or family members must be shared with as many people as possible in order to garner the most sympathy and make sure your sensitive side is shown in the best possible light.
  • Complain and bitch about everything in a sometimes amusing but often offensive tone.
  • Kill the TDD crowd

    Friday, January 16th, 2004

    Yes, I realise I’ve mocked and taunted all these test driven zealots before. However, I am filled with an almighty rage right now following a rather heated discussion on IRC. So, thanks to crazybob, Jon Tirsen (for a very very stupid comment on crazybob’s blog), Dan North, and Anthony Eden for the discussion.

    The problem with the TDD crowd is that they’re unwelcome guests in a world that doesn’t want or care about them. I’m very sick of TDD bigots being snooty, getting offended, and angrily tugging at their unmentionables every time they see a unit test that doesn’t meet their ludicrous standards for what constitutes a unit test.

    So, let’s look at a concrete example. I’d like to test a servlet. The servlet is standalone, it doesn’t call anything else, it just Does Stuff. It’s a standalone unit for all intents and purposes. There’s no webwork, struts, or any such crap involved. I don’t want it to be a wrapper with the work done in a POJO. I just want my single damn servlet. Sometimes a servlet is just a servlet.

    The TDD asshats will now start furiously chewing on their desks if you try to use any sort of real container in your unit test. To them, that pollutes the test, you’re in fact testing the container too and not just your servlet. That, astoundingly, makes it an invalid unit test (or at best, crippled, awkward, unwieldy).

    Even more incredible are the suggestions they offer up to overcome this crippling (!) dependency. Suggestions that range from not using a servlet, to using mocks, to getting some POJO’s involved, all so that you can have clean unpolluted tests.

    What troubles me about this is how incredibly narrow sighted it is. Sure, you end up testing some part of the container too. Welcome to the distinction between a unit test error and a unit test failure. It’s trivial to ensure that when the container messes up, it’s very clearly and easy to spot. Not to mention that in the real, sane, sensible world, it’s not exactly heretical to assume that your servlet container does what it says on the tin and can actually manage to run servlets.

    Hell, if you don’t like servlet containers, Why not distrust the JVM too? Write your unit tests to not require a JVM! Hm, OS’s have also been known to flake out, so try to avoid those when writing unit tests. Avoid anything mechanical and electrical either, while you’re at it. They’re all containers or external resources that you must not depend on or assume are present!

    I do understand what the TDD folks preach; they want their design and functionality to be defined in terms of tests. I wish they’d make it clear that this has NOTHING to do with unit testing. The fact that they use junit to do their filthy work is an abuse of junit, and does nothing but piss everyone else off when those jizzgobblers hand out their wisdom down to us mere mortals who are foolish enough to think that unit tests are…unit tests.

    What’s amazing is that these same people will feel no shame whatsoever at using mocks. Forgetting that now you’re running in yet another type of container. Worse, you’re running in a container that has its own quirks and is often quite divorced from reality or how your actual code will run. So not only are you now testing the mock library (and the ones I’ve tried have all been surprisingly rubbish, you spend most of your time writing setup code), but you’re also testing a library that will not benefit you in the slightest when it comes to real usage!

    I don’t write my tests first. I know very few people who do. It’s awkward, fragile and unintuitive. For those who enjoy it and find that it’s none of those things, great! At best, I’ll do a mixture of the two, and have something vaguely functional, then write a testcase and make sure it tests all the conditions I’d like it to pass under even though I know that it’ll fail.

    Of course, I’m sure that the TDD crowd will now get all indignant, and pontificate about how I just don’t ‘get it’. Swine!

    IDEA: What happened to innovation?

    Tuesday, January 13th, 2004

    The new EAP builds of IDEA 4.0 are getting better by the day. Better how, you may well wonder. Well, they’re not crashing as often, and the millions of rough edges are being smoothed out.

    So I think it’s safe to say we’re in the home stretch now, that we’re not getting any more new features. So what has the long journey from 3.0 to 4.0 gained us, in this tumultuous year?

    Not a hell of a lot, to be brutally honest. The new niceties have been covered elsewhere (custom junit runner, weblogic support, module support, ui designer, better cvs integration). What I find disturbing is that there’s very little innovation in all these, and in some cases they’re plain halfassed. Weblogic support is a good example, what on earth is the point of supporting one appserver to the exclusion of all others? I’m not asking them to support ANY appservers, I’d instead be perfectly happy if the openAPI included the j2ee stuff, so that I and others can write plugins for the appserver specific bits. I can’t think of a single feature that has made me think ‘wow, I didn’t know that was even possible!’ in this new version. There are no new features that don’t exist in some form or another in other IDEs.

    The problem is, in my opinion, the users. IDEA users are no longer clever folk, they’re a bunch of fuckwitted morons. Witness the aspectJ support fiasco. I hope the intellij guys have learnt never to take users so seriously again. IDEA users have invariably migrated away from some other wanky IDE. So naturally, they want the same retarded features so their transition is less jarring. So now we have IDEA becoming a lot more mainstreamy and homogenised. I doubt many people will feel that giddy childish glee over this new version that they have over past versions.

    This is painfully brought into focus when considering the new CodeGuide preview release. For the first time in quite a while, an IDE’s new features had me oohing and aahing. A debugger that actually highlights what part of a line is being evaluated! Being able to see the results of an evaluation right there in the source! Logger breakpoints that just print out the results of an evaluation when hit! Now THAT is innovation, when was the last time you had a serious alternative to System.out.println for quick debugging?

    I sincerely hope that for 5.0, IDEA ignores the masses. They’re unwashed, ignorant, and can be entertained for hours just by dangling shiny objects. Keep them mollified by supplying appropriate shiny objects, but in the end, realise that you’re infinitely better equipped to decide what’s best for them.

    Touch my YAUL!

    Thursday, January 8th, 2004

    After months of hard work, I’m pleased to announce the release of a new library that will benefit everyone. I’ve been using it in production for a few months now, and it’s stable, useful, and has saved me much time and effort. Since I’m progressive and down with that whole open source thing, I’m going to release it out in to the world. The code apparently wants to be free! I’m sure many will be grateful and I’ll gain fame and fortune or at the very least a thank you or two for my incredible genius. My library is: Yet Another Util Library.

    Alright, that was all a big fat lie. I was simply trying to get everyone annoyed and irritated over how many damn util libraries there are out there. Barely a day goes by without some little wanker releasing their own collection of randomly put together junk in the name of contributing to the rising pile of garbage that is open source java.

    Honestly, the source might want to be set free, but that whole urge is much like a mentally-challenged 30something fat ugly girl wanting to strip and masturbate in public. It’s just not cool and causes much discomfort all round. There are some times in life where one has to put one’s foot down and say no, you don’t get to do what you want, in the interest of ensuring that society can keep hobbling along in its spastic yet somewhat functional way. I’m willing to go out on a limb in fact and advise you to just say no to your source if it says it wants to be set free. At the very least, tell it to make a compelling argument for itself, rather than trusting its wayward and clearly braindamaged judgement.

    Exactly how many base64 encoders/decoders does the world need anyway? How many jdbc/sql ‘convenience’ methods? How many string replace methods? At one point do people step back from the madness and say enough, we have all the math utils we need, let’s move on now?

    I urge you all, nay, I implore you, no more util libs! End this madness!

    Month in review

    Monday, January 5th, 2004

    Yay, a month’s worth of updates! Dealt with in chronological order:

    First, while I’m as happy as the next guy about inappropriate sexual advances, please do make sure they’re witty or entertaining. Comments that are just rude and mean spirited made anonymously to the fairer sex will be deleted from now on. I realise that many of you worship Nathalie Fleury and she’s become some sort of poster child giving hope to java losers everywhere that they too might end up with someone erudite and charming. However, expressing your love in such crass terms is unlikely to woo her sort, I assure you.

    Next to everyone’s favourite clown to punch, Gerald Bauer. Even javalobby is now getting sick of his delusional disturbed raving. While Gerald has on the whole been a good boy and managed to stop himself from commenting here, he has slipped up a couple of times. So Gerald, any more comments from you about anything being free, or ANY url’s to any of your sites will be promptly deleted. You’re simply too offensive and stupid to allow any sort of platform. Freedom of speech is one thing, but your speech just makes me want to drive red hot pokers into my eyes to numb the pain, so I’d rather just go without.

    Thank you to all the people who wrote in and expressed words of sympathy to the Christmas special bilebile. I was quite hurt, but sadly, it was not a user contribution and the person who said those cruel thoughtless words should be ashamed of himself for thinking that just because he’s talking to himself, that he can take off the gloves and go for the jugular. What a bastard.

    Finally, THAT book review. I still stand by most of what I said. Pat’s blog corrects a few factual errors, and I stand corrected (eg, JPublish’s usage of xwork). It should be obvious to anyone with the slightest whiff of common sense that the authors clearly did not set out to deceive or con anyone, and that the implication thereof on my part was more about perception and appearances, and how certain facts could be interpreted in that light. Now, I cannot clarify this enough, but I am NOT advocating you go to Barnes and Noble, sneak a copy into the bathroom, and smear it with turds or urinate into it. Nor do I recommend using it as toilet paper (for different reasons though, book paper is notoriously sharp and abrasive). Having said that, I also do NOT recommend you go out and buy it and read a few pages to your family every morning to motivate them. Make up your own damn mind, flick through, and decide.

    Now, I haven’t reminded you monkeys of this recently, so I guess another lecture is long overdue. IF YOU DON’T LIKE THE BILEBLOG, THEN GO AWAY. It’s one thing to have someone proclaim ‘this is the worst entry ever!’ (and there’s almost ALWAYS someone else who will say ‘this is the best post ever!’ about the same material). I’m heartily sick of people constantly proclaiming what an awful blog it is, yet consistently and persistently lapping it up eagerly with a shit-eating grin. The blog is self contained, I don’t post this kind of material anywhere else because it’d be rude and inappropriate; I only shit in my own backyard.

    Believe it or not, I DO make an effort to at least not outright lie. So I’m more than happy to retract factual inaccuracies. Still, if it helps some of you to cope with your worldview being challenged, feel free to dismiss everything I say with the customary frantic limb flailing and chants of ‘he’s a superficial idiot who doesn’t understand anything and never does anything!’. Everything you read here is specifically focused towards the negative. I will NOT present a fair argument outlining pros and cons of anything, I never have, and never will. I WILL present the cons and stick to those. The reason is, yet again, because even the most casual observers of javablogs will notice how incredibly tedious, dull, and self-congratulatory all the blogs are, perpetually engaged in a happy circlejerk lovefest, and this is my only way of coping. I’m sticking it to the proverbial man, in my own somewhat sick and twisted way.

    Open Source Java Programming book review

    Thursday, January 1st, 2004

    So, I’m at Barnes and Noble and manage to see the bottom shelf of the java rack chockablock with that worthy tome, Java Open Source Programming. Needless to say, i could not possibly be any less likely to spend any money on it. However, I thought it’d be worth taking it for a test drive in the enjoyable B&N cafe area.

    Thus, said book and I made the long trek to the cafe, and sat down for an intimate book-to-man-to-book chat. It said some words, I said some harsh words, I nodded sometimes, I frowned at other times, and mostly I scoffed and snorted in disgust. It sat there and was eventually flung aside without being returned to the appropriate shelf. I tried to teach it a lesson in the only small way I could.

    So, why shouldn’t you all rush out to buy this book? Well, where does one start? The title I suppose is as good a place as any. A more apt title would be ‘Developing web apps by avoiding all J2EE’. Perhaps ‘Stuff You Can Mash Together’ would have worked too.

    The JUnit chapter, for example, is surprisingly trivial. Granted, it’s early on so perhaps the assumption is that the reader is still pretty ignorant and stupid and needs a serious amount of babysitting. We’re taught how to construct baby testcases, we’re promised a treatise on TDD (top down development or test driven development, depending on Joe Walnes’ time of the month). We’re told that to handle exceptions, we just declare the methods to throw Exception, yet there is no mention between the difference of a testcase error vs a testcase failure.

    Moving on to the mock objects chapter. Here we have some frantic hand waving about how testing big system can be difficult, due to the problem of marshalling resources, environments, external API’s blahblah. All makes sense, and is a sensible intro to mockobjects. The author of this chapter however seems to have gotten bored of the idea fairly quickly, as the example provided is a trivial one which doesn’t really address any ‘real world’ situation where mocks might actually be useful (there’s no environment, resources, or complicated deps to mock).

    The XWork chapter of course continues the fine tradition of outright lies to sell the benefits of this miracle cure. It claims that OSWorkflow uses/supports xwork, which of course is a complete lie. It also says that JPublish uses it (it was considered at some point as ‘the’ command framework then ditched, now it’s just supported), and has a misleading comment about webwork 1 being based on the same command framework (misleading at best).

    It’s pretty clear that when that little gang of four got together, they politely listened to one another, then promptly went ahead and did what they individually wanted to do anyway. The transitions between chapters are jarring and confusing. There’s little to no warning of what’s coming up ahead (except of course where they say stuff like ‘in 10 chapters, you can read more about this!’).

    Of course, we have the Atlassian plugs, JIRA is recommended, and they even manage to sneak in a Confluence mention in a login screenshot. Very cunning! The JIRA mention is actually interesting, because it’s a good example of a fairly insidious tack taken throughout. Whenever there is an alternative to a ‘recommended’ solution, they almost always mention a horrifically bad alternative. The only other issue tracking tool mentioned alongside JIRA is Bugzilla, for example. The IoC alternative mentioned for XWork is Avalon, to ensure xwork is shown in the best possible light.

    The XDoclet chapter is also somewhat confusing. For one thing, it seems to go against the choir by giving helpful information about EJBs, and making it clear that EJB development can be made very easy with proper use of xdoclet. Earlier, needless to say, we have the usual EJB disinformation churned out, with furious flailing of arms regarding bad performance compared to hibernate (due to transactions, and security, apparently!), and how even with xdoclet ejb dev is too difficult since the descriptors are not very…human readable. The xdoclet chapter shits all over this theory though as it then shows us how to generate the hibernate xml file and how it’s equally easy to generate ejb descriptors. If the hibernate file is so damn easy and ‘human readable’, why the hell would you use xdoclet to generate it?

    To be fair, the xdoclet chapter is one of the few that actually lists pros and cons, instead of the condescending shit-eating grin the other chapters provide, where the powers that be are kind enough to tell us what we should do.

    At some point, the book just completely loses the plot and starts telling us about how we should all talk to each other within our teams. I had to rub my eyes a number of times to make sure I wasn’t going blind, they did indeed have a cute little chart that points out synchronous modes of communication (face-to-face!), and asynchronous ones (email! mailing lists!). If you’re the kind of person who needs this sort of advice, you’re hopelessly fucked.

    The security chapter gives us some more frantic flailing of limbs; it discusses the downside of custom authentication (difficulty of propagating credentials) but then promptly pretends the problem doesn’t exist.

    Then, quite suddenly, the book ends. There’s no wrapup, no conclusion, no gentle let down, nuthin’!

    Still, there is one silver lining to this miserable little cloud. The Lucene chapter is well written, educational, and manages to put the ideas across without insinuating that a) the author is a genius, and/or b) the reader is a moron living in a cave. Good job whoever wrote that, you get a belated Christmas pressie of not having to work with the other 3 again. The rest of you, there aren’t enough lumps of coal in the world to punish you for your style and ideas (mostly the lack thereof).