New blogger joining the fray

Just to announce my younger, (but smarter and better looking) brother has just started blogging. He’s a primary school teacher with a great command of the English language. He spends his days teaching in the Middle East which makes for very engaging stories. So, make sure you do yourself a favour and go and read it.

WSAD is broken, evil and wrong

Just started working on a project, integrating some new functionality with a pre-developed “framework”. So, the first thing to do is to try and build a really simple application to make sure the framework, “works as advertised”, and to get a little experience with it.
So, after a few hassles getting the environment setup, and we’re using the miserable steaming pile of shit that is WSAD 5.0. Anyway, let’s write a jUnit test to do a JNDI lookup. Seems easy, set up a HashMap, stuff in some properties, grab an InitialContext() and try and do a lookup().
Get some weird-ass error about a PartialResultsException. Hmm, WTF ?
Wander down and chat with Simon Harris who I know has done the same thing, in the same environment, but without needing to use WSAD. Quick chat, basically doing the same thing, but as I wander away, Simon says that “we don’t do anything special, because the IBM JVM 1.3 gets the correct InitialContext()”.
Oh no. This smells bad.
Wander back to Dave Kemp (who’s been working on this all day, and I’ve just inflicted myself on him for the last hour) and we have a look at WSAD. Now, this WSAD is a fresh install, on brand new hardware, with a fresh install of Windows 2k. It doesn’t get any more virgin than this. A JAVA_HOME that points to the bowels of the WSAD installation to get the IBM JVM, but that’s it.
Turns out that WSAD has chosen by default some other JRE as the default runtime JRE, BUT when the internal WebSphere is running, it uses it’s own JRE !!!! How mind-bogglingly stupid is this. A new level of stupidity that only IBM can provide.
Anyway 10 seconds later, green bar, Dave and I are leaping around cheering at this breakthrough.
However, I’m pointing at the screen in an accusing manner saying “this is why you don’t run tests in an IDE”. The stupid things hide far too much, and it’s too easy for different configuration options to be used at different points.
I know people are going to say that we should have CI tools running the tests, and we should have Maven/Ant for running them from the command line. And, you’re all correct, and if we’d done that first, we (well, Dave actually) wouldn’t have suffered as much.
So, learn from this lesson. IDE’s are great for writing code, but test your code outside the IDE please, or at the very least use an IDE that works.

Categories of Customers

What type of customers do you work with ? In my years of working, I’ve generally found customers to fall into 3 broad groups:

Passively Ignorant
They don’t know what’s going on, but are willing to be told what to do and will be educated.
Actively Ignorant
They don’t know what’s going on, and aren’t really interested in the project, or learning more about it.
Aggressively Ignorant
They don’t know what’s going on, but regardless of that are not going to be educated and will continually argue and disagree with solutions to their problems.

I use the term ‘ignorant’ in the “unaware or uninformed” sense, not in a derogatory sense. I’m ignorant of US Law. That doesn’t make me stupid, and if I had the desire I could learn US Law. I’m sure you all understand.
What does the type of customer change in the risk profile of your project ? Does it make it harder ? Does it change your success criteria ? Do you ever notice ?
Can you change the customer ? Is that part of the project ? Or a pre-requisite ? Can this categorisation be applied to your co-workers ?
Hmmm, so much to think about. So little time.

MT-Blacklist is like a shield of steel

Burn in hell you stupid spammers. My blacklist is like a shield of steel. Your stupidness knows no bounds, you are stupider than a stupid thing that’s extra-stupid.


2004.07.07 13:36:49 218.145.25.80 MT-Blacklist comment denial on That’s so stupid that it’s not even wrong: casinos-jp.com
2004.07.07 14:30:03 207.241.152.39 MT-Blacklist comment denial on That’s so stupid that it’s not even wrong: casino-jp.com
2004.07.07 14:30:05 200.56.224.5 MT-Blacklist comment denial on That’s so stupid that it’s not even wrong: (online)[\w\-_.]*casino[\w\-_.]*\.[a-z]{2,}
2004.07.07 14:30:07 66.14.159.125 MT-Blacklist comment denial on That’s so stupid that it’s not even wrong: casinos-jp.com
2004.07.07 14:30:10 218.145.25.80 MT-Blacklist comment denial on That’s so stupid that it’s not even wrong: casinos-jp.com
2004.07.07 14:30:11 67.95.211.196 MT-Blacklist comment denial on That’s so stupid that it’s not even wrong: government-grants.org
2004.07.07 14:30:11 81.72.102.155 MT-Blacklist comment denial on That’s so stupid that it’s not even wrong: (online)[\w\-_.]*casino[\w\-_.]*\.[a-z]{2,}
2004.07.07 14:30:13 200.31.207.186 MT-Blacklist comment denial on That’s so stupid that it’s not even wrong: government-grants.org
2004.07.07 14:30:14 81.72.102.155 MT-Blacklist comment denial on That’s so stupid that it’s not even wrong: casino-jp.com
2004.07.07 14:30:14 210.240.188.81 MT-Blacklist comment denial on That’s so stupid that it’s not even wrong: (online)[\w\-_.]*casino[\w\-_.]*\.[a-z]{2,}
2004.07.07 14:30:14 200.75.38.202 MT-Blacklist comment denial on That’s so stupid that it’s not even wrong: (online)[\w\-_.]*casino[\w\-_.]*\.[a-z]{2,}
2004.07.07 14:30:14 211.23.17.18 MT-Blacklist comment denial on That’s so stupid that it’s not even wrong: government-grants.ws


Domain Driven Design

I’m two thirds of the way through the book of the same name by Eric Evans. If you’re a software developer and even remotely serious about your craft, run, don’t walk to the nearest bookstore and buy this book. Then lock yourself away for a weekend and do nothing but read it. Then read it again.
It’s good. Really good. Change the way you think about writing software good. Why are you still reading, and not buying. Go away!

Acceptance tests are exams for developers

I had a great evening of drinking and talking (thanks Jared & other guys). Jared is a kick-ass tester, and has a great handle on the whole agile thing. It’s really awesome to spend time talking to people who actually “get it”.
Anyway, Jared provided this great analogy about doing acceptance testing. Acceptance tests are exams for the developers. They get the exams up front, they get to see the questions and spend time preparing the answers. Of course, the answers are obvious, so developers will know when they are right or wrong.
Now, this is really cool, because who’d think of giving an exam to people without providing them the questions ? You’d have all these developers writing answers that will hopefully be to the questions that the exam will contain, and you’ll have a good idea, but you’ll never know the exact questions you need to answer. It appears that plenty of software projects do this, and it’s broken, and wrong.
So developers, make sure you know the questions in your exam, before you start, or otherwise, you’ll never know what answers you need to provide.