The Tea-Bag

I was just making myself a cup of good-old British Tetley tea when the following conversation (from Frederick Pohl and Cyril Kornbluth's truly brilliant Science Fiction novel The Space Merchants; required reading…seriously) came into my mind:

"First, words. We want words that are about Venus, words that'll tickle people. Make them sit up. Make them muse about change, and space, and other worlds. Words to make them a little discontented with what they are and a little hopeful about what they might be. Words to make them feel noble about feeling the way they do and not foolish. Words that will do all these things and also make them happy about the existence of Indiastries and Starrzelius Verily and Fowler Schocken Associates. Words that will do all these things and also make them feel unhappy about the existence of Universal Products and Taunton Associates."

He was staring at me with his mouth open. "You aren't serious." he finally exclaimed.

"You're on the inside now." I said simply. "That's the way we work. That's the way we worked on you."

"What are you talking about?"

"You're wearing Starrzelius Verily clothes and shoes, Jack. It means we got you. Taunton and Universal worked on you, Starrzelius and Schocken worked on you-and you chose Starrzelius. We reached you. Smoothly, without your ever being aware that it was happening, you became persuaded that there was something rather nice about Starrzelius clothes arid shoes and that there was something rather not-nice about Universal clothes and shoes."

"I never read the ads," he said defiantly.

I grinned. "Our ultimate triumph is wrapped up in that statement," I said.

"I solemnly promise," O'Shea said, "that as soon as I get back to my hotel room I'll send my clothes down the incinerator chute-"

"Luggage too?" I asked. "Starrzelius luggage?"

He looked startled for a moment and then regained his calm. "Starrzelius luggage too," he said. "And then I'll pick up the phone and order a complete set of Universal luggage and apparel. And you can't stop me."

"I wouldn't dream of stopping you, Jack! It means more business for Starrzelius. Tell you what you're going to do: you'll get your complete set of Universal luggage and apparel. You'll use the luggage and wear the apparel for a while with a vague, submerged discontent. It's going to work on your libido, because our ads for Starrzeliuss-even though you say you don't read them-have convinced you that it isn't quite virile to trade with any other firm. Your self-esteem will suffer; deep down you'll know that you're not wearing the best. Your subconscious won't stand up under much of that. You'll find yourself 'losing' bits of Universal apparel. You'll find yourself 'accidentally' putting your foot through the cuff of your Universal pants. You'll find yourself overpacking the Universal luggage and damning it for not being roomier. You'll walk into stores and in a fit of momentary amnesia regarding this conversation you'll buy Starrzelius, bless you."

O'Shea laughed uncertainly. "And you did it with words?"

"Words and pictures: Sight and sound and smell and taste and touch. And the greatest of these is words…."

So here I am in Australia…buying Tetley tea bags. The very same Tetley tea bags that were advertised to me when I was a youngling.

Prescient and scary!

Tags: Rant

You Cannot be Serious!

Is what Tennis Great John McEnroe would be shouting at the Australian Government after hearing this plan:

The federal government's $42 billion Nation Building and Jobs plan is aimed at stimulating the economy and supporting up to 90,000 jobs during the next two years.

It includes:
$14.7 billion to be invested in school infrastructure and maintenance and bringing forward funding for trade training centres;
$6.6 billion to increase the national stock of public and community housing by about 20,000 new homes;
$3.9 billion to provide free insulation to 2.7 million homes and solar hot water rebates;
$890 million to fix regional roads and blackspots, to install railway boom gates and for regional and local government infrastructure;
$2.7 billion small and general business tax break to provide deductions for some equipment purchases before the end of June 2009;
$12.7 billion for immediate one-off payments to working Australians, families with school-age children, farmers, single income families and for those undergoing training.


Shenzhen, China

Last month, the National Development and Reform Commission announced revised plans to transform Guangdong and neighboring Hong Kong and Macau into a "significant innovation center" by 2020.

One hundred R&D labs will be set up over the next three years. By 2012, per-capita output in the region should jump 50 percent from 2007, to 80,000 yuan ($11,700) And by 2020, the study predicts, 30 percent of all industrial output should come from high-tech manufacturing.

Favored companies, like Huawei Technologies, China's leading telecommunications equipmentmaker, got free or low-cost land and utilities, says Kroeber.

From Beijing's perspective, the returns are worth the investment. The auto stimulus will benefit companies like BYD ("Build Your Dream"), a battery manufacturer-turned-carmaker that has advanced China's green-car prospects and won it prestige as a globally recognized brand.

[it's worth listening to the associated audio clip, by the way…]

Which plan represents true nation-building and which is simple pork-barrelling, PR and political expediency? You be the judge.

Tags: Rant

Real Life vs The Nerds

Couldn't resist linking to this:


It's so true!

Tags: Rant

Further Back in History

I thought I'd dig a bit further back into my personal history and take a look at the Intelligent Filestore Project.

This project started at Manchester University and was taken to The University of Essex by it's head, Prof. Simon Lavington. It's aim was to make prolog-database-style knowledge management efficient by building a highly parallel hardware search engine.

The project won a couple of awards…a Silver medal from the BCS (before my time, when the project was still at Manchester Uni.) and a Bronze award from the Alvey Directorate (the people paying the bills).

The kit had a hardware "Lexical Token Converter" (a hashtable for symbols), a main controller CPU and 128 custom designed and built search processors, each with 128Mb of RAM (this was the mid-80's, remember).

You can see this hardware:

It isn't me in the picture… Actually, I had more hair in those days.

This picture shows two of the systems: the dev/test rack and a finished half-height cabinet (at the right). This unit was eventually shipped off to the University of Edinburgh's Artificial Intelligence Applications Institute.

My job involved adapting a bog-standard Sun 3/75 VME-bus based workstation to act as the controller for the specialised hardware. It's in the picture, on the half-height rack. This work was interesting…we even got the schematics for the box from Sun (under an NDA) and eventually found a bug in their hardware. Of course, they found lots of bugs in ours…

I also found myself doing a lot of general Sysadmin-y stuff on a variety of unix-based kit (including SunOS boxes, Microvaxen, High level Haradware 'Orion' , GEC-63 stuff). This was also a lot of fun. I cut and sharpened my unix/sysadmin teeth here, and *I* think they remain sharp to this day!

I also played a lot of sport: badminton, squash, tennis. This accounts for the wreckage that is my shoulder these days.

I learned a few useful things on this project:

  • All hardware must include 1+ 7-segment LEDs to that you know what the hell is going on.
  • It is possible to write one academic paper per decade. All one then needs to do is reshuffle the paragraphs and resubmit…it'll get published somewhere
  • Any sufficiently advanced technology is indistinguishable from magic (Clarke's 3rd law); "sufficiently advanced" is not the same as "truly advanced" and is very much according to the eye of the beholder.
  • "Thou shalt not work with team 'mates' that are continually getting up and coming down." Nefarious substances can do strange things to people and it is really hard to get a team to ship product when the team doesn't know what day it is or what state they may have left their wife in as a result of last night's binge. The threat of physical violence in the workplace is not conducive to one's best work…
  • If a system needs a reboot, people will complain irrespective of how regularly the system is rebooted or how much advance notice was given. Ignore the complainers and remind them that the rest of the world generally wakes somewhat before noon.
  • "I just found out…" is not the same as "I just performed world-class research." Unless you are applying for a research grant, when it is.
  • Just because it has always been done "that way" doesn't mean that it can only be done "that way."

As an example of the latter bit of wisdom: the Manchester Uni. team had always performed their IPLs (Initial Program Loads) by shipping S-record encoded binaries via a serial port interface on the main board; a slow and error prone process. This is what they had always done. It was what everybody did. Not knowing that, I came along and wrote a 10-line ' C' loader program that ran on a daughter board and simply mapped in the appropriate memory and pushed the requisite bits into the mapped-in segment. Immeasurably faster and easier…

Here's a little secret: the project was demonstrating to "The Minister" for Science and the hardware just wasn't working! The software-only simulator was, so we just demoed that, all the while running a diagnostic tool to ensure that the actual hardware's status lights were flashing happily. The Minister asked a question: "Is it fault-tolerant, as well?" One of my colleagues said "Of Course!" and reached down into the rack and pulled out a known-dud board. The simulator (of course) didn't miss a beat and the status lights on all the remaining boards kept flashing happily. "Amazing!" said The Minister and walked away, very impressed.

Happy days!

Now an exercise for you, gentle reader: go back and brush up on Clarke's 3rd law, it you still haven't understood it…

For all it's ups and downs, this was a good job. I made friends that I still keep in touch with, I learned a LOT, had a good time and at the end, it was a stepping stone for me to get a lecturer's post in the University of East Asia, Macau.

One can't really ask for more from a job, can one!

Tags: Retrospectives

When Trouble Comes A-Knockin'

That's when TCE Answers.

TCE is a call-centre application that I wrote a few years ago that takes an operator through a scripted interaction with a caller, gathering data as it goes so that an appropriate remedial action can be scheduled before the caller hangs up.

Here's a couple of piccys:

My CV says:

Development of Energex's "Trouble Call Entry" call-centre application using the Spring 2.0 Framework with Spring WebFlow. The system is required to support 250 concurrent users and runs using the JRockit Server-side JVM on a load-balanced cluster of JBoss 4.2.0 application servers hosted by Redhat Enterprise Linux 4.2. Performance Testing was undertaken using HP's LoadRunner tool.

It was a good project and I thank the guys at Energex/SPARQ for getting me in to design and build it.

All the webby technologies that I brought to bear (the Spring Framework proper, Spring WebFlow, Spring Valang, Apache XFire WebServices, Toplink JPA) played very well together.

The host RHEL4 systems also behaved very nicely; I set up a pair of servers in a geographically separate arrangement so that if a rain of dead fish put one site out of commission, at least the other site could continue supporting operations. I had some slight concern about performance but subsequent load testing put my mind to rest on that score.

JBoss (a 4-instance cluster split across the two servers) was simple and reliable, as always.

I learned quite a bit (this is the obligatory opinionated part of the post): about how important it is to fight people's misconceptions as soon as they arise, about how a good project manager really is worth his/her weight in gold, and about how a bad project manager can be deadly (I am thinking here of one woman who insisted that she would be the sole point of contact between me and the actual product owner and eventual users. "Coders simply can't understand the business users, so you must always only talk to me." I stomped on that little impending disaster area pretty quickly!).

I also learned (was reminded again, I should say) that although one can argue a point based on one's experience, any possible argument will mean nothing if it doesn't talk to the other person's experience; the comment "my experience tells me this will end up costing you much more in the long run and will lead to all sorts of trouble" really means nothing if the other person's experiences don't cover the same context/domain. "How can you explain colour to a man born blind?" (from the philosopher John Locke?)

Shortly after the application went live, Brisbane played host to one of its regular storms and the application got its "baptism." After the storm was over, I received an email that said, in part:

Feedback from […manager…] was extremely complementary about not only the performance and effectiveness of TCE but all SPARQ supported systems that support customer response.

[…manager…] passed on his and the thanks of ENERGEX for the great work that has been done on our storm systems. He commented that "Looks like the work on our new systems such as TCE, CVU and others worked really well over the last few days as a trial-by-fire. All feedback I have had is that the systems worked well, are good to use, and are very effective. Great step forward, thanks"! - Now for storm season!"

As far as I know, not one bug report has been filed against the application. That's something to be proud of, I recon.

So: if you live in Brisbane and phone up to report an emergency Loss Of Supply event, you now know a little bit about the software guiding the Call Centre Operator you are speaking to…

Tags: Retrospectives

The Story So Far…

I thought it was high time to show a proper index of all the postings on this site up to the present. The "Last 10 Entries" facility really doesn't cut it for me.

Being a true geek, I decided to write a Groovy Script to do the grunt work for me.

Here is the script:

['x=y:09;m:02', 'x=y:09;m:01', 'x=y:08;m:12', 'x=y:08;m:11', 'x=y:08;m:10', 'x=y:08;m:09'].each {

  def slurper = new XmlSlurper(new org.ccil.cowan.tagsoup.Parser())

  def url = new URL('/wordpress/?' + it)

  url.withReader { reader ->
    html = slurper.parse(reader)
    html.body.div[0].div[1].div[0].div.list().findAll { it.'@class' =~ 'entry' }.each {
      h3 = it.h3
      println "[url=${h3?.a.'@href'}]${h3?.text().trim()}[/url]"

Here is the index:

A Little Memento…
Will Code for Food…
Let 'Em Have It!
Another Useful Resource
Is Going for the Low-Hanging Fruit Good Enough?
I, For One, Welcome our new Robotic Overlords…
May The Force be with Your Tests…
And I Only Just Jumped on the Scrum Bandwagon…
Pithy Pieces of Perspicacity
Happy Lunar New Year!
Welcome, Perf4J!
An Interesting Survey
That Vision Thing
The Curious Cat
Perhaps I'll Open a Bag Shop…
The Cleanup Continues…
Ah! Memories!
Head(ing) in(to) the Clouds
A Piccy From the Past
One Source to (D)Rool Them All…
Some Other Very Wise Sayings…
A Better Way?
Instrumenting Java and Groovy Code with JMX (Wonderful WebFlow Part IV)
Load Testing (Wonderful WebFlow Part III)
Testing WebFlow (Wonderful Webflow, Part II)
Wonderful WebFlow
Simple Subversion
Continuous Integration
I Feel So Scrummy…
Mea Culpa, Mea Culpa…Doing Ourselves a Disservice
I am now Certified…
What Features Characterise "Enterprise Applications"?
Another Outstanding Tool: SoapUI
Documentation: Very Wise Words
Documentation: the Bane of Every Consultant's Life!
A Database-Oriented Toolkit
In Flight at NZOUG…
In Full Flight…
Slide Decks for the Presentations on Groovy and Grails
Friends and Associates
AUSOUG; Perth, 6-7 October, 2008
AUSOUG; Gold Coast, 13-14 October, 2008
NZOUG; Rotorua 20-21 October, 2008
Transentia's New Site



This is a piccy of BABI…an application I built for a client a few years back (used with permission):

This image shows a schematic of an electricity substation. The main panel shows the current to-the-second state of the substation. The image is actually an SVG document that can be zoomed and panned and certain on-screen elements can be activated to actually control the sub's activities. A given substation may have many panels like the one shown here.

Here's how my CV describes the BABI project:

Development of a "world first" tool using C/J2EE and Scaleable Vector Graphics (SVG) to enable monitoring/control/visualisation of individual substations in [client]'s real-time SCADA system."

It was an interesting project.

It is an open-standards based system using all the technologies that any web-oriented Java-head will have cut his/her teeth on. It offered XML-based configuration (and I built a tool chain to automatically generate about 80% of that from existing configuration files [some of which were PDP-11 binary dump files]), It used AJAX before the term was coined and it interfaced with fairly grungy C code (that, I am told, traces its ancestry back to assembly-language code built for an in-house operating system running on a PDP-7). On top of all that, it was written to live close to the hardware embedded in the bowels of a substation and also to provide a service to the corporate network to provide management with up-to-date oversight into the power network.

I don't think that there is anywhere else in the world that has tried to do both command and control using these technologies and techniques.

I am proud of it.

While I was hacking it, I received a couple of visits from guys from the Canadian power systems specialists SNC-Lavalin who were blown away by the possibilities the project showed. SNC-Lavalin are trying to migrate away from their home-grown technologies and solutions to more open systems. I hope and believe that this project (in some small way) helped point them along the way…

Sadly, other than my own sense of self-satisfaction, I am not sure what else I can take away from the project: from the start I ran into all sorts of opposition from my colleagues (engineers and inveterate C-heads all): it was too slow, it took too much RAM (it ran under IBM's J9 J2ME JVM on a Pentium II box with 128M of RAM), it used an externally-sourced framework and so was inherently 'untrustworthy', Java could never do anything 'real', it wasn't thread-safe (whoops! a little bug there…in the JNI/C side, ironically [that wasn't deliberate, honest!]), SVG was untried and doomed, ditto Javascript, ditto XML, one can't trust a browser to support a 'real' application, etc., etc.

I'm pretty sure that [client] will do away with it as soon as they possibly can find the excuse to do so (the grapevine tells me that this is already happening). So much easier retreating into a well-tried and trusted comfort zone than trying to learn and understand what they actually have on their hands (a powerful and adaptable bit of infrastructure, if I do say so myself) and we all know that building a whole system from scratch is so much better and more satisfying than relying on open (source) standards like much of the rest of the world…

Note that this was technically a fairly successful project, was driven by management requirements, was demoed to and received management blessing (thanks, guys!) all through the development process, and so on.

Still, when push comes to shove, none of my colleagues want to maintain it and keep applying it…seems like none of them want to be 'tainted' by Java…

I must say that I found/find this visceral, ideologically-driven response vaguely depressing.

[This presentation resonated with me, when I first watched it.]

The aphorism that most readily comes to mind is: "You can take a horse to water, but you cannot make it drink."

That is actually lesson 1.

There IS one other lesson I can take away:

During development, I would be thinking (as one does…sometimes) "here's something cool that could be done in a later version" or "I'll probably have to revisit this in 1.1, but this gets me up and running for now" and so on. I didn't understand at the time that [client] can only really handle the idea of software as "mysterious black box" that is perfect on day 0 and will never be developed further.

[client] does do bugfixes on their code, and occassionally (rarely) adds a new bit of code, as circumstances demand. However, this does not mean that they manage the lifecycle of their systems: they are reactive, not proactive. Engineers fixing problems, not software people maximising, maintaining and developing their investment.

Embedded systems don't get maintained; they get replaced.

Appearances (and IMHO needs) notwithstanding, I was building an embedded system…


If you live in Brisbane, your power is being controlled using this application.

As far as I know, no one has been electrocuted yet, so something must be right about it.

Tags: Retrospectives

A Little Memento…

I am a "recovering academic."

I admit it. I will never be cured. I have to fight these urges every day. Sometimes I lose control and when I do, I pontificate madly about trivial things. This is self-destructive behaviour and must not rule my life…

[deep breath…again…]

OK. I am better now. Please don't feel sorry for me ;-)

Here is the proof that I am a sick personality; a little memento from a former life, circa 1994:

It still works! Amazing!

Tags: Retrospectives

Will Code for Food…

How can the world resist my charms? Here's a cover letter that I just attached to an application:

Hi. I am Bob Brown.

I believe that I am the ideal candidate for this position.

I am sure that you will agree once you have browsed my CV.

In summary:

* I have used both Java and J2EE since they were first launched.

* I have extensive J2SE and J2EE(JEE) experience.

* I have delivered into production a couple of large-ish/critical systems using the Spring framework and associated modules (such as WebFlow, Valang and Caching). I have shipped WebService-based systems and have experience with XML processing in tools such as BEA Liquid Data and Stylus Studio.

* I have shipped on JBoss/RHEL4 and WebLogic and OC4J (9iAS).

* I am on the RedHat/JBoss list of preferred J2EE/JBoss consulting resources in Brisbane.

* I recently took a RedHat interview test (I chose not to take a position) and recieved the following feedback: "Our technical team evaluated your responses to the test and they are quite impressed."

* I have been an authorised trainer for BEA (Tuxedo, Server).

* I am also an authorised trainer for Oracle (Java/J2EE, and Portal courses).

* I also have experience with other frameworks such as JBoss SEAM and Groovy/Grails.

* I have performed Technical Team Leader roles in the past.

* I am a Certified Scrum Master.

* I have developed courseware for XML, Java, Linux courses.

I look forward to hearing from you.

Thanks and regards,


It's all true!

I left out the "Have Wife and Cat to support." bit…thought that would sound too much like begging ;-)

Let 'Em Have It!

Here's tellin' 'em:

As XP / Agile / Scrum have become more popular, many teams and individuals have wanted to do them, or "be" them. This has led to a school of Agile methods that wants to be called "context dependent". The idea is that whatever brand of Agile is under discussion is "too rigid" and "doesn't fit our context". So we have to modify Agile because God knows we can't modify our context.

Well, my dear little children, I've got bad news for you. It is your precious context that is holding you back. It is your C-level Exeuctives and high-level managers who can't delegate real responsibility and authority to their people. It is your product people who are too busy to explain what really needs to be done. It is your facilities people who can't make a workspace fit to work in. It is your programmers who won't learn the techniques necessary to succeed. It is your managers and product owners who keep increasing pressure until any focus on quality is driven out of the project.

There is an absolute minimum of practice that must be in place in order for Scrum or XP or any fom of Agile to succeed. There are many other elements of practice that will need to be put in place. And yes, the context will matter … and most commonly, if you really want to be successful, it is the context that has to change.

Want to succeed at software? Then it can't be business as usual. Study the material, do the practices, get help. Or get out of the way.

Let me put it my way…

Too often do I hear: "we don't do it that way."
Times change, challenges change, technologies change.
So must 'we.'

Tags: Agile