Virtual Surreality

It's too real to be true

Browsing Posts in Personal

From Incite comes Insight is not only one of my favourite blogs for Enterprise Architecture, but one for good ideas about each doing our part to make the world a better place. The latest one helps pour some soothing balm on the inner cynical voice.

Just for kicks, could all my ThoughtWorks colleagues do a trackback to http://duckdown.blogspot.com/2007/11/india-and-charity.html — especially the those in Banglore, Pune, Xi’an, Beijing, and Hong Kong.

I’ve added the ONE banner to my blog site too — RSS/ATOM readers, click the link ;-)

Off to QCon in San Fran… hopefully lots to follow.

What do troubadours, Joe Guttenburg, and Jimbo Wales have in common?

They each have done their part in helping spread knowledge amongst their fellow humans.

Wales’ Wikimedia Foundation is currently running a fund-raising appeal. When you see the link on the next Wikipedia page you use, why not throw a few dollars their way, and help your fellows in developing countries have access to the deep well we take for granted.

I’m happy to see that 2 days ago, I was the 800-and-something-th to contribute, and now there’s over 2,000. Makes me feel a little less cynical.

Recently, Les Hatton wrote a compelling article entitled The Chimera of Software Quality. (Les Hatton, “The Chimera of Software Quality,” Computer, vol. 40, no. 8, pp. 104, 102-103, Aug., 2007)

A section of the article headed The cost of poor quality points out the economic impact of poor software quality, and the almost belligerently ignorant and/or apathetic approach to it by people and businesses in the technological nations.

He summarises this in what he postulates as Hatton’s Law:

The technological societies will collectively trash around [US]$250 per person per year on systems which will never see the light of day or, if they do, do not come close to what their users wanted, assuming they were asked in the first place. This they will ignore.

(emphasis mine.)

If you aren’t flabbergasted or at least peeved by that figure (except because you’ve already come to the sad realisation), stop reading now and go and defragment your hard disk, ignoramus.

As we say Downunder, “Goodonya, Les!”. Although he didn’t suggest where that money should go, he did indicate that it’s not just about the money, it’s about the engineering legacy we’re leaving. I have no idea if he shares my views, but other engineering disciplines have helped make the world better by avoiding the cost of poor quality. Pastoral tools, houses, clothes, toilets, aqueducts, fishing nets, boats, glass, the list goes on (and will probably not include the iPhone, people!).

Of course in software there are tactical actions taken, especially when shareholders start raising concerns over short-term cost-benefits of IT (or, more accurately, when executive bonuses are impacted by it by more than a few percentage points). But this is not enough.

Sometimes, I’m accused of being aggressive in the indignation I display when I see woeful technological systems. I suppose that’s because something inside of me has always been thinking that the money spent on building that pile of steaming crap could have been used for much more constructive purposes. In that sense, I’m not nearly aggressive enough. Perhaps I’ll stop calling it “technical debt” and start calling it “karmic debt”.

Stop writing shitty software and you could do something even better than increase shareholder value or boost your annual bonus. You could help take a stand against poverty – in your own country and around the world.

There are many corporations who divert some resources to social responsibility. Think how much more they could do if they did some of the simplest, mind-numbingly basic things to avoid spending massive sums on poor software. Those things aren’t just throwing money at a problem, but the money or more freedom from cost constraints allows corporations and their employees to do so much more.

Even corporations in industries you’d normally least expect to understand are being more socially responsible in a way that doesn’t raise the eyebrows of the cynics like me. I’ve personally witnessed the activities undertaken by employees at Westpac, a large Australian bank. I also know that avoiding the cost of poor software quality would allow them to do more. ThoughtWorks is not immune either. We use a couple of systems internally that are so fantastically crappy and impact both our effectiveness and efficiency that it beggars belief (I must point out this is relative to a benchmark one would expect of a company with our ideals, and would be otherwise more than reasonable almost anywhere else — we have the luxury of being very picky when critiquing internally). One of my clients laughed at me the other day when he found out what email client we use, because he made a lot of money (and stomach ulcers) supporting it in years past and he knew the impact that its poor quality has on its users (not that most of the alternatives are a benchmark for excellence).

ThoughtWorks is on an ambitious mission to change the nature of IT. In doing so, we hope to contribute to a better world. Avoiding the cost of poor software quality is one of the things we’re doing to help.

During a recent leadership programme day at work, my penchant for toying with language led me to this one-liner — not worthy of Jason Yip‘s growing compendium of kōans, but I think there’s something in it for all of us.


Be an influencer, not an influenza.

I still hate the handling of spaces – especially when you’re throwing in mixed path delimiters using nice GNU tools on DOS/NTFS.

If you ever want to get rid of SVN or CVS folders (or whatever) in a large source tree after someone has zipped it and sent it to you straight from their workspace, and Explorer’s Search window barfs with that many matching folders all over the place, then try this:

  1. Get unxutils
  2. Use the zsh included
  3. Realise zsh has bipolar tendancies when dealing with “DOS backslash to delimit directories in paths” and “UNIX slash to delimit directories in paths” and “UNIX backslash to quote special characters”
  4. Put unxutil’s usr/local/wbin at the front of your PATH (to get the GNU find, not the DOS one)
  5. Unfortunately -exec ls {} \; doesn’t do the trick because ls can’t handle the spaces and/or backslashes and -exec ls “{}” \; doesn’t have any affect
  6. Use the following neat trick (after 30 mins of mucking around with the bipolar tendancies)

  7. find . -name 'CVS' -print | tr '\\' '/' | while read filename
    do
    rm -r "$filename"
    done

  8. The little translate sorts out GNU find -print returning paths with backslashes and the while loop allows you to do lots of things, including removing the directory :-)

It’s slower than -exec or xargs but it works.

It’s 2007 – you’d reckon everyone would be able to handle spaces in directory names on Windows by now.

You’d reckon the command program on Windows would be able to interpret stuff too so sensible command line arguments would be sent to the program being executed:


C:\Program Files\Java\jdk1.5.0no_not_again\bin\java -cp C:\Program Files\My App\classes you.goddabe.kidding

And even it’s own inbuilts:


dir %JAVA_HOME%

Perhaps the dweeb who decided to call it progra~1 should have decided on ProgramFiles instead. Who wants to clean up batch files with double-quotes around every possible environment variable expansion point?

Rainy day, ClearCase update.
Dormant CPU.
Zen moment – watching paint dry.

Javaâ„¢ isn’t really the success we think it is, you know.

Java programs written the way Gosling et al originally intended would clearly be using the object-oriented paradigm (sure, they’d be applets in a browser, but that’s another story).

What happens when the COBOL crowd (of which I was one) gets their working-storage sections and procedure divisions pulled from under their feet and replaced with interfaces and immutable objects?

What we have, ladies and gentlemen, is a fantastic volume of COBOL programs re-written using Java syntax but with few of those pesky OO semantics.

Look out for RuBOL – the next big thing, where you can MOVE SPACES TO boolean just like in the good ol’ days.

The blinding light of illumination has made me see what I’ve known was there all along. The darkness was comfort. It hid what I didn’t want to look at. Now I see it and I have resolved to deal with it for good, to have dominion over it, to remove it. It’s not going to hide with its insidious hunger and eat away slowly all that is important to me.

It’s why I lived in a virtual surreality. Now the light is comfort.

Thank you to the bearer of that light. The light is burning hot to begin with but as it diffuses throughout the darkness, it becomes a warm, welcoming glow. The initial pain is replaced with happiness. The image of the bearer of the light is with me forever.

Perhaps our core approach to solving problems is much like a sauciér making the perfect jus: reduce and test.

This is applied to any part of the information science process — whether it’s strategy, requirements, architecture, design, coding, testing, deployment, or lifecycle management.

Reduce all along the way: Minimise inputs, activities, and outputs to improve clarity, trivialise change, and realise value at the earliest opportunity.

Test all along the way: Verify and validate assumptions and expectations. Discover and evolve understanding. Innovate and execute.

Lean. Assured. Savour the results.