Friday, December 31, 2004

Stocking seams

made you look!!!

I've just watched, for the umpteenth time, this movie[^] (42nd Street for those of you who don't want to click on the link). I think I first saw it on Channel 9 Melbourne in 1976 after the Olympic Games. The 1976 Olympics were held in Montreal which put them pretty much during the Australian night time. Channel 9 did live coverage which caused many many Australians to miss sleep. They also discovered that transmitter maintenance was much cheaper if they didn't actually turn em off - so after the games were over they went to an all night movie schedule. Those were the golden times for Hollywood musicals on TV in Melbourne. We got three or four different 1930's movies a night on free to air (we didn't have cable TV in those days). Some nights they'd run 4 Marx Brothers movies or another night they'd run Gold Diggers of 1933, Dames and Footlight Parade. I went without sleep!

These movies fascinate me. Over the years I've tried, and failed, to explain to sceptics just why they appeal to me. There's something inside me that yearns for the past that I never experienced. I suspect it dates back to the things no longer remembered that I picked up in my earliest years living in my grandmothers house. I can remember watching Laurel and Hardy on TV when I was about 4 and a half years old and being fascinated not by the slapstick but by the art deco sets. That and the way that Oliver Hardy pronounced the word 'Honolulu'. And make no mistake; things like that DO affect young children.

In 1983 I started taping these movies - they were still regular occurrences on late night TV in Melbourne - well, regular enough that I could tape em. But I suppose the demographics of those who set the programming for late night TV changed during the late 80's; these movies gradually disappeared and by 1991 it was quite the surprise to find Footlight Parade scheduled (Tuesday November 5 1991, 4:00 AM - Channel 10).

So why the fascination with a 71 year old movie that was made by the Hollywood factory? Partly it's the sheer age of the thing. I find that I no longer look centre frame; I find myself picking out a hopeful face, an extra, who in 1933 hoped it would lead to a career. They're all dead by now, those who became stars and those who didn't but I imagine that most of them went on to live normal non hollywood lives. (Anyone who wants to quote Pink Floyd at me about lives of quiet desperation are welcome).

And the music is damn good. Here I have to confess a penchant for (amongst many kinds of music) the music of both the Weimar Republic and 1930's dance music. Again I suspect long forgotten childhood memories; my father, 44 years dead, was a jazz drummer and I dimly recall gramophone records played at home.

Oh and the stocking seams? I watched the movie with my 16 year old step-daughter Morgan. She stayed with it until the musical numbers struck up (it's not really rap). She noticed the black lines on all the womens legs and commented. I'm barely young enough to not remember that as a normal thing - but I was able to explain that stockings up until the mid 50's had a seam that had to be straightened. Her comment? It sucks to be old!

Ah well, one day she too will be old.

Showing off

a couple of hours ago I realised that it's 2 days after the 30th anniversary of my conducting my 1st Symphony.

Way back in 1974 the CAE (Council of Adult Education) and the Melbourne Age jointly ran a competition for young composers. In 1974 I qualified . I submitted my composition and I won!

A couple of months later I found myself face to face with an orchestra. I had about as much idea of how to conduct an orchestra as I did of how to make pate de foie gras out of sawdust! Needless to say it was a disaster and the regular conductor stepped in (kindly I might add) and made the best of my composition. It was at best a pastiche of Mahler and Tchaikovsky but at the time it was my world.

And failure though it was I still treasure the day that I heard my symphony played at a public concert. There was a tape made of that performance but it's been 18 years at least since I last saw it; I fear it is gone forever.

I wrote 3 more symphonies, two string quartets and a sonata for flute and violin after that first symphony and I heard my second symphony played. I'm not sure the world is ready for my third .

Some years later I became 3rd viola for the South Melbourne Symphony Orchestra (an amateur orchestra). I would have been 4th viola if there had been 4 of us . It's impossible to describe to an audience member how it sounds to be a part of the orchestra - the soundscape is soooo different.

I've always loved music - always will.

Thursday, December 30, 2004


or sometimes it's possible to give too many choices.

You've already heard about the C++ app I've inherited. What you don't yet know is how it abuses the registry. A typical export of our registry key in NT4 text format runs to over 500K! Yep, over 500,000 bytes. There are places where it makes perfect sense to have registry settings to control how your app behaves but ye gods - 500 K worth of text to control it? The code is littered with registry fetches; if this value is this then do that, else do that, and if neither case applies do something else. In some cases this makes sense (I can't really discuss the exact details; hence my wishy-washyness) but in most cases the code seems to have been written three or four distinct ways as an exploration of the best way to achieve the end result and the final decision is controlled by the registry. Naturally, now that the hardware has crystallised, the registry setting is always the same. But did the superfluous code disappear? Of course not!

I can understand the exploratory phase of development when the hardware is still in flux; what one finishes this week may not work next week because the hardware has changed. But leaving all that old code in place; compiled into the executable and bypassed at the whim of a registry setting?

Part of our system involves a device driver which copies a 16K block of data from the hardware into process memory. At various offsets within that block we find data corresponding to condition A in the hardware, or condition B and so on. The way we access data corresponding to condition A is we read a value from the registry that tells us the offset from the start of the block to the data of interest and (possibly) a bit mask that defines which bits of the word, dword or whatever are relevant. Uh, the registry settings are a mix of decimal and hexl. Offsets are decimal, masks are hex. When I asked my predecessor why he hadn't defined a struct (possibly containing bitfields) that mapped onto the datablock he didn't even understand the question!

For each of our 48 distinct hardware entities we have 126 sets of offset/mask pairs, stored in the registry as comma separated strings, each of which must be parsed possibly dozens of times per second. Is it any wonder we have a performance issue? And then we have registry settings that are read at initialisation time; if you change those you have to shut down the runtime and restart it. A pattern to this? No sirreee Bob!

Over time I plan to remove the superfluous code. Over time I plan to remove those offset/mask pairs and define a structure that maps onto the data. All I really have to do is find the time to do it and have a life as well .

For the record; having a life wins.

Bread smells

wonderful. Well real bread does. Wonderbread doesn't. Nor does Tip top (one of the brands of bread sold in Australia).

I have wonderful memories of french bread sticks bought at Highpoint Shopping Centre in Melbourne in 2000; likewise of the bread I bought at a small Vietnamese bakery in Sunshine, Melbourne on the morning of Christmas Day 1994. But none can compare with the smell of the bread served at the Texas Instruments cafeteria in Nice two weeks ago. You have to understand that there I was, sitting in a company caf with a plate of whitefish and someone put a basket of bread on the table. I've never been a bread man; it's always struck me as a waste of space; but there was this wonderful smell wafting over. Just the smell of that bread was enough to make me hungry. I did eat the whitefish but I enjoyed that bread much more. This was the first time I've ever eaten bread without some kind of flavouring; be it sardines, margarine, butter, concord grape jelly or golden syrup. And it was delicious.

Tuesday, December 28, 2004

Dinner a la Rob

for two...

500g of steak. Don't skimp on the steak - the better the steak the better the finished result.
1 large brown onion.
1 small red capsicum (bell pepper).
1 small green capsicum.

Slice the steak into thin strips about half a centimetre thick. Put the strips into a bowl and pour on a couple of tablespoons of extra virgin olive oil. Grind some black peppercorns and some salt (to taste) over the strips, mix well and set aside. I've found that leaving it in the fridge for a couple of hours works well but if you're in a hurry the time taken to follow the next two steps is sufficient.

Peel the onion and cut into eighths. Remove the tops and the seeds from the capsica and slice em thin.

Line your ingredients up in this order: Steak, onions, capsica. Once you start cooking speed is of the essence .

Now take a large frying pan and heat to medium high. It should be hot enough that it's uncomfortable holding the palm of your hand over it for more than a couple of seconds. When it's hot enough throw the steak in and toss it around a bit. Make sure the meat doesn't stick to the pan. As soon as the meat has started to brown throw the onions in and stir again. Grind some more pepper into the pan and enjoy the aroma. Now add the capsica and keep stirring. The goal is to warm the onions and the capsica without reducing them to limpness; they should still be almost raw.

Serve on a bed of plain rice and don't be afraid to pour the pan juices on top. Serve with a Chianti or a nice Cabernet. Merlot also works .

Monday, December 27, 2004

Two kinds of Americans

You'd imagine that for a native English speaker moving from one English speaking country to another English speaking country it would be relatively easy. And for the most part it has been so. The problem is that the English I speak isn't the same English that is spoken here and neither dialect is the English spoken in England, let alone in India, New Zealand,Canada or South Africa.

I buy my smokes at the local Stop'n'Go petrol station. Yeah, I'm being deliberately difficult here. I call it a petrol station; they call it a gas station. Indeed the real reason I continue to call it a petrol station is sheer stubborness. So anyway, I went into the local gas station today and asked for my usual; a carton of Basic Ultra Light 100's. He reached up and got a pack. No, said I, a carton! He shoves the pack at me. No. I want a carton! Then I gesture, rather in the fashion of someone indicating the capture of a 10 inch trout. He continues with the pack and starts to ring it up. No mate, said I, I want a carton! A dim light rose. Oh, he said, you mean a carton!

Unfortunately this is written English, not spoken English, which makes it difficult to convey the subtle differences between the way I 'think' I say the word carton, the way I hear myself saying the word and the way he said it. Remember that, like most of the Western world under the age of 51, I grew up with US TV programs so I'm completely accustomed to hearing the 'American' accent. Of course what we know as the 'American' accent is only a small part of the range. Nonetheless, (and I'm hypothesising here) the locals don't get to hear very much English as she is spoke outside of the USA. They might have stumbled across the odd BBC program but as for Australian? Nope unless you count Paul Hogan or Steve Irwin. I'm closer to Paul Hogan than Steve Irwin.

I've lost count of the number of times a local has asked me if I'm British. I always respond; 'no mate, I'm from about as far from there as you can get and still be on the same planet. I'm an Australian'. At which point they always light up. I've found there are two kinds of Americans. Those who've been to Australia and those who want to go to Australia .

All of which reminds me of July 1986, my second visit to the USA. I was attending Hewlett Packard training in Spokane, Washington State and staying in a hotel at Post Falls Idaho (about 40 Km's away). I had need of some product or another (possibly a razor though I don't remember anymore) and visited the local supermarket. Whatever it was I was looking for I couldn't find it so I asked one of the young ladies in uniform. It was an eye opening experience. I could understand what she said perfectly but she couldn't understand a word I said. We were both speaking the same language, using the same words. The only difference was that I'd grown up hearing the 'American' accent; she hadn't grown up hearing the 'Australian' accent.

Sunday, December 26, 2004

A grinch ought not to

receive gifts but he does :-)

As a long time fan of The Lord of the Rings it came as no surprise that the 4 disc extended version of The Return of the King was under the tree (wrapped in Grinch wrapping paper - strangely enough, all of my gifts were wrapped in that paper ).

There were also two treasures. The first was The Royal Hunt of the Sun[^]. Yikes - what a URL. Wonderful great love it movie. I've just finished watching it after a gap of about 20 years. I'm still impressed by the way the soundtrack (in the first encounters between the Incan speakers and the Spanish speakers) (the Spanish is actually English but let's not quibble) does a cross fade between what I assume is meant to be Incan and English. I'm not expressing it well. But the movie avoids the clumsiness of assuming that everyone speaks the same language without resorting to sub titles. Those scenes start with the Incans speaking Incan, the Spanish speaking English; and in a few seconds of cross fading the Incans are speaking English. I'm still not expressing it well; you'll have to see the movie. But I wish you luck. The DVD is out of print; it was on my Amazon wishlist and my wife tracked down a copy on the secondhand market.

The second treasure is Barfly[^]. Well, perhaps it's not a treasure but it is a movie that I really enjoy.

As for the day itself? It was perhaps a little less painful than it could have been. The 'unwrapping of the presents' (why am I reminded of Gormenghast?) was mercifully short. In part this was because Morgan, the 16 year old, was less of a bossy boots than in previous years. In part it was also because the number of 'stocking stuffers' was markedly reduced. When you're dealing with a 20 year old, a 16 year old and a 13 year old one tends to go for fewer items where each item costs a bit more.

But the buggers do listen. Amongst my presents were two bottles of Malt Vinegar and two bottles of real Australian Rosella Tomato sauce . As I said to them at the time, if anyone in Australia gave a bottle of Tomato Sauce as a Chrissie pressie the recipient would look at them and think 'you cheap bastard'. But here in the USA it was a whiff of heaven. Indeed I grossed Morgan out by dabbing malt vinegar behind my ears. I said it was to keep the teenage girls away . I'm not sure she bought it.

We also had a drama. Sometime during the night the water main broke. Our apartment is three level. The floor of the room I'm sitting in as I type this is about 5 feet below ground level. To my left is the living area - at ground level. Above that are the kids bedrooms. Anyway, the windows of the rooms on the lowest floor are at ground level (which suits the cats just fine I might add). Just outside the ground level windows is typical Arizona desert with a small depression. Enough scene setting. At 11:30 our neighbour knocked on the door and told us we had a small lake behind the apartment. We took a look and sure enough there it was. See my third image gallery over there <--- for a pic. Tomorrow I'll take (and add to the gallery) a picture of how it looks normally.

Our neighbour (whose apartment wasn't in the least threatened as far as I can tell) was out there with a sledgehammer knocking a hole in the cement kerb to let the water drain out. He had and has my thanks! He didn't actually succeed in creating the hole; that honour went to my eldest step-daughter Shelby's boyfriend Matt.

Look at the tree in the picture, centre frame. See the high water mark? That was where the water was about 5 minutes before I took the shot. The second photo shows Matt being a dag!

Thus passed noon!

At 4:30 PM all was in place for Christmas dinner. A rather large ham (I fear I'm going to be eating ham for a month) plus a few dishes that I, an Australian, don't understand. How on earth can one marry ham with marshmallows? Americans, it seems, can achieve that feat without even batting an eyelid . Worse, they seem to enjoy the experience! Americans are strange people! But I did manage to hold my own - I shocked the buggers by mixing Keens Extra Hot English Mustard with Malt Vinegar (a chrissie present) and smearing it on my ham. Delicious.

After dinner we played scrabble. I won even after giving Andrew and Morgan (the younger two) a freebie by pointing out that the letters A C N E could be placed on a triple word score. At 10 PM I'd had enough and anyway, Chef! was starting on PBS followed by the Red Green show.

One of the least painful Christmases I've endured. But I'm sure I'll never get to the point of actually looking forward to Christmas.

Bah Humbug!!!!

Friday, December 24, 2004

I'm a grinch!

which term I had never even heard of until fairly recently. (When you're 50 5 years ago seems fairly recent :-) ).

But I have to say that I am. I don't like Christmas and haven't for about 30 years. I'm not a believer so Christmas doesn't have that particular significance to me.

Our receptionist turned up at the office three weeks ago wearing a pair of reindeer antlers! She smiled sweetly and expected me to be overcome with a spirit of festiveness. I was more overcome with a feeling of WTF! I told her my middle name was Scrooge and she giggled a little and then said, with apparent seriousness, that she'd never met anyone with such an unusual middle name. I have to confess it took me a few seconds to realise she was serious! For the record, my middle name is Clyde.

So why do I dislike Christmas? Actually, why do I hate the damn thing?

It's partly family related. The world + dog trumpets Christmas as a family time. I happen to not much like my family. The old proverb about you choose your friends is true here... I like my youngest sister and I have a lot of respect for my mother; for the rest of the bunch.... Some of you might have picked up the odd whiff of my wishing I was back in Australia rather than here in the US but I assure you, that whiff, whilst quite real, isn't because of my family. It's much more that I miss my best mate and I miss the places...

But it goes deeper, much deeper, than family. Christmas is the time when one has to endure mind numbingly boring songs, carols, advertisements, childish lighting displays and people who try to jolly one up and seem to take it as a personal insult when they learn that one doesn't share their enthusiasm! I'm very enthusiastic about the Operas of Philip Glass and John Adams but I don't take it as an insult if you don't share my enthusiasm! Let us not even start on the Nativity Scenes. And I have to say that the stuff that passes as music this time of year has, to my tastes, as much relationship to real music as a dead dog has to architecture. If I have to listen to the 'little drummer boy' or 'silent night' or 'frosty the snowman' one more time I'm going to puke!

It's impossible to walk into a supermarket (here or in Australia or France) without being assaulted by the mindless pap intended to alert the forgetful consumer that this is Christmas and it's time to open your wallet.

And then comes the day itself. One is expected to sit there and ooh and aah over every frippery and watch with rapt attention as one present after another is unwrapped and the lucky recipient fakes surprise and enthusiasm. Worse, one is expected to play this act oneself. Woe and betide the person who is more interested in reading a book than playing this mindless game! Well thank you but I have better things to do with 4 hours of my life than to sit around like a moron watching you play the game.

So I'm a grinch and damn proud of it.

Continuing with the Gulag

Last Sunday I flew from Nice to Amsterdam, thence to Minneapolis and finally back home to Phoenix. Economy class.

If you've done any long haul travel in economy class you know the drill. Not much leg room. Not much elbow room and a long wait for a free dunny (toilet). Thankfully the flight from Amsterdam to Minneapolis is only 9 hours. But on this particular flight I was reading (quite by chance inasmuch as it wasn't planned) those chapters of Volume 1 of 'The Gulag Archipelago' that deal with prison transport. Reading Solzhenitsyn's account of prison transports across the USSR in the 20's, 30's and 40's put modern air travel into perspective. He describes in excruciating detail the cramped conditions, lack of drinking water and limited toilet opportunities that millions of people went through against their will. Compared with his descriptions the miseries of modern air travel are nothing.

I'll always prefer business class or, failing that, Singapore Airlines Executive Economy; but I'm pretty sure I won't bitch in future about it taking 46 hours to travel from my house to Baguio City, Philippines.

Thursday, December 23, 2004


I've always been a cat man. Never a dog man.

For as long as I can remember cats have been a part of my life. They range from the unimaginatively named 'Tom' I met as a toddler in my grandmothers house about 1958 to the equally unimaginatively named 'Pussy' who lived with us in Seddon in 1966. We moved from Seddon to St Albans (both Melbourne suburbs - maybe 5 miles apart) at the end of 1966 and 'Pussy' went with us. Within a week she disappeared but she came back six months later. We don't know for sure but we speculate she went back to the first house, couldn't find us and came back.

There were other cats in the late 1960's at St Albans. I no longer remember all their names but I remember the one who found a roast chook (chicken to non Australians) awaiting carving, grabbed it and made it to the back fence before being caught! To put things into perspective, my mum wiped the dirt off the chook, carved out the bit mauled by the cat and served it anyway. I'm here 35 years later (and so is everyone else who ate the chook apart from the cat) to tell the tale so it was obviously not harmful .

And then, in 1976, I shared a house with my younger sister in West Footscray. We adopted a cat but couldn't decide on a name. She was a dark tabby; I wanted to call her 'Black Jesus' (don't ask). My sister demurred - she had a point - could I see myself at the back door calling 'here Black Jesus, here Black Jesus'? We compromised and called her Bruce. Bruce lived to the ripe old age of 18 years with my sister.

In 1980 I started living with Sue, my first wife and still a good friend. We had at various times cats called Katzen, Kirsche, Jane, Pooter and Broey. We also had a number of transient visitors who found the cat door and helped themselves to a free feed. One in particular hung around for over a year and I christened him Voskoboinikov. I remember winter nights in the early 80's with myself, Sue and 4 cats all under the covers; two at the foot of the bed and two fighting with us for pillow space .

In the late 80's Sue and I divorced; I wound up living with (and eventually marrying) Peta. Of her, the less said the better (I'm entitled to my opinion!). We had two cats we adopted from the Lort Smith Lost Dogs Shelter. Those two kittens were sure lost! Manon and Kafka. Manny is an english shorthair black and white; Kaffy was an American Calico. Kaffy died on September 27th 2000 and I don't mind admitting I cried like a baby that day. She had throat cancer and taking her to the vet to be put down was, frankly, the hardest thing I've ever had to do. (I'd always sworn that I'd never do it but it was so obvious that she was in a great deal pain and equally obvious that no cure was possible.)

Manon was as frisky as ever at the age of 16 when it was time for me to move from Australia to the USA. But she freaks at travel. Even taking her half a kilometre to the vet makes her panic - how would she cope with a 15,000 Km journey? So, reluctantly, I asked Sue, my first wife, if she'd adopt Manon. She agreed (it turned out not to happen that way but we won't go into the subject - suffice it to say that Manon had to travel 70 Kms instead of 15,000).

And here in the USA we have 4 and one half cats. Two of em lived here before I arrived. Cleo and Roo (short for Kangaroo - named before I got here). I call her Rooster. Then we have Kitten. She was bought for the kids Dad as a very young and not housebroken kitten. Guess what not housebroken kittens do? Yep, they shit where the need takes em. So Dad (who is not me ) decided to lock Kitten in the bathroom. Now I ask you, is that a fit place for a kitten? I thought not. We adopted her and cleaned up the poo. It's not that difficult a task. And we have Ginger. He walked in one night, fully grown, and meowed at me. What he said (translated) was 'this looks like a good place for cats - I want to live here). We did the neighbourly thing and posted notices on trees about a ginger cat one year old and his owners claimed him. Next night he was back and curled up on the bed. We did the neighbourly thing again and they didn't want to know. He's lived here ever since - about 15 months. His orignal people moved out and...

And now we have the half a cat to account for. His name is Einstein. He eats here and he lets us pat him but he's not yet ready to claim sleeping space. I suspect that as we move into January and even colder (it STILL feels unnatural for January to be cold) we'll find Einstein sleeping here. He's more than welcome.

Way back when

1968 to be precise, Footscray Tech set 1984 as one of the novels to be read by Form 3 students. God knows what they expected, given that it was a trade school meant to turn out apprentices, of which I was one. I've always been a voracious reader; I could already read by the age of 4 or so; but I couldn't make head or tail of that book when I was 14! But never mind, in 1968, to a 14 year old boy, the year 1984 was unimaginably far into the future!

In 1976 I found the four volume set of the Collected Essays, Journalism and Letters of George Orwell and devoured the lot! For about a year those four volumes were always on my bedside table and read cover to cover umpteen times. (Alas I've long since lost the original Penguin volumes - a danger in lending them to friends. I now have a bound single (very thick) volume of his essays and columns but it lacks the letters). Which of course lead to my reading 1984 again in 1976. After reading his essays about James Burnham's 'Managerial Revolution' etc 1984 clicked. I was even moved to write a movie screenplay in 1977 on a similar subject greatly influenced by reading Solzhenitsyns 'Gulag Archipelago' (a sin of my youth best swept under the carpet - though we did start shooting - enough to convince me I'm no director!).

So in 1984 out came the remake of 1984. Remake? Of course. There was a film made, in the US, in 1956[^]. I saw that version sometime in the very late 70's and thought it was pretty good. But everyone who even knows about the book will remember the 1984 version[^].

Tonight I borrowed the DVD from the Phoenix public library. I haven't seen it since its 1984 theatrical release in Australia. Aeiiii what a mess of a movie! It does kind of stick to the story but it would confuse the hell out of anyone who hadn't read the book beforehand. Room 101 appears symbolically about 10 minutes in with nary a hint of what room 101 might actually mean. Having read the book years ago I of course knew what room 101 was and it's difficult to place myself in the position of someone who sees the movie without prior knowledge. But I imagine considerable bewilderment.

On the other hand, casting John Hurt as Winston Smith was inspired. Back in 1978 when I read the novel for the second time I had images of what Winston looked like and John Hurt matches em to a tee. Of course, I could also see Tom Courtenay playing the role - his Ivan Denisovich felt right to me. And seeing John Hurt as Winston Smith might have been influenced by his role as Timothy Evans in 10 Rillington Place.

Should I confess that the opening scenes bring a lump into my throat? It's partly the music (I'm a sucker for lush Post-Romantic music) and partly the way the movie takes me back 36 years).

As to just why I borrowed the movie tonight? Firstly it was on the shelf. It was also a vague remembrance of the soundtrack. But I've also been reading Annie Applebaums 'Gulag' and 'Gulag Archipelago' (the latter for about the fourth time). It seemed right that I should watch a movie on a related subject.

Wednesday, December 22, 2004

Seeing is believing

I got a new laptop via work this week. Well it's not actually new - it's a hand me down from a former employee but it's a 2.8 GHz P4 so it's not too shabby. It's a Sony Vaio with a very very nice screen; the only thing lacking is that the hard disk is 'only' 60 gigs! Only? Oy vey! It also has a DVD burner that does both + and - R. Enough showing off .

Among other things the new laptop has wireless networking. Given that the whole point of wireless is that you can use the net anywhere it was obviously time to upgrade our house router to a wireless one. So I went out and bought, at Frys on special, an Airlink AR315W router. It does 802.11g and b and also has 4 UTP ports. I brought the router up without actually connecting it to the cable modem so I could lock it down before exposing our home network. I was pleasantly surprised.

Out of the box the router has, of course, a standard admin password (how else could they keep the price down to US$25?). But what pleased me was that remote administration was turned off by default and the firewall was turned on by default. I suspect I could have avoided the extra step of bringing it up without a net connection and not have risked anything.

So I get the box configured the way I want for our three wired PC's. Did a Shields Up check and was happy to see that we're still invisible to casual passers by. Now it's time to configure wireless access. I set the SSID to a particular value (which I'm not going to mention here ), turned off SSID broadcasts and turned on WEP 128 bit security - entered a key phrase and let it generate a key. (I don't have a choice on WEP - the Sony drivers don't support WPA). Then I turned on the wireless card on the Sony. It found three access points. One called 'Linksys', one called 'Netgear' and one with my SSID. Just for kicks I connected to the 'Linksys' and sure enough, there I was on the internet through someone elses connection. Close that one and connect to 'Netgear'. Uh huh, different IP address but I'm out there on the net and able to download kiddie porn that would incriminate that user. I hope it goes without saying that I'm talking theoretical possibilities rather than reality. If not then read my lips; this was and is a theoretical possibility; I don't do that kind of stuff!

Hence the title of this post. I've read about 'wardriving' and how people install all this wonderful new technology and don't know how to lock it down. Now I've seen the evidence with my own eyes.

I've read that WEP is easy to crack (the help files on the router even warn that WEP isn't particularly secure) but if I'm in a neighbourhood where there are three wireless networks available, two of them totally unsecured, what do you think the chances are that I'll be the one hacked?

Meanwhile I've turned on maximum security, aggressive DOS detection and set the router to email me the logs whenever they fill up. I've recieved 7 emails already and the router has been connected for maybe 8 hours. There are some nasty people out there!

Tuesday, December 21, 2004


or how I learned not to repeat myself

The saga of my inherited legacy C++ application continues.

I had occasion last week to rewrite a dialog procedure. We needed some extra functionality but what I found along the way amazed me.

The dialog in question has the standard OK and Cancel buttons. It also has two listview controls. The listview controls are used to input and display information for 48 individual but identical entities. 24 on the left and 24 on the right. Interaction is done by double clicking on an item or by right clicking on an item. In the code there are four event handlers, one each for double clicks on the listview and one each for right clicks as aforesaid.

I said above that the listview controls (plural) are used to input and display information for 48 individual but identical entities. So it follows, does it not, that the actions in each of the pairs of event handlers are going to be almost identical, varying only in which listview is acted upon and the indexed item clicked upon. Right? Which not terribly obscure insight would lead the intelligent programmer to write a private, generic, class member function, called from each event handler, passing a reference to the listview control and an index specifying the base index.

Not in this code! Instead we had two complete copies of the same 100+ line function where the only thing that varied was the instance of the listview control and the base index.

Yikes! Fortunately it was pretty easy to collapse all that repeated code into two private functions. I was able to cut about 500 lines of code to less than 200.

What bothers me though is how anyone could have thought this was a good way to go. I can understand that the original function was written and tested on one listview and, once the bugs had been ironed out, extended. But it beggars belief that anyone could have imagined the best way to extend was to copy and paste! And I'm being generous. The 48 seperate entities are directly mapped onto 48 separate entities in our hardware. Now it seems to me that if you're designing a half million dollars worth of hardware the basic specs for that hardware are going to be mapped out before you start writing code. Details will change over the development cycle but one thing that won't change late in the development cycle is the number of entities. Thus, the guy who wrote the code I've inherited already knew that there would be 48 entities to control. A 2 * 24 layout fits much more naturally onto our normal CRT displays than a 1 * 48 layout. So if he knew, before he started, that he'd be mapping those 48 entities onto 2 listviews why on earth didn't he write the code to be more generalised in the first place!

I'm not even concerned about the compiled code duplication (though that's a concern). How about maintainability? If I find a bug in one event handler I have to make the same changes in the other event handler. Heck, I even have to worry about whether the code in the first event handler matches the code in the second one.

No, as far as I'm concerned this was pure laziness. My predecessor got the code kinda working in one event procedure and then couldn't be bothered to generalise the solution. It was easier to use the class wizard to add a second event handler, copy and paste the code and then change the listview reference to the second listview. Bugger the future! Bugger bug fixes (and there were a few along the way).

I know there will be future surprises like this.

If you're an Australian

one of the things you grow up with is bushfires. They may not be close to home but you can smell them wafted in on summer winds even if you grew up in Footscray (a suburb of Melbourne, about 4 miles from the city centre).

Later on you learn from the news that Southern California and the South of France also suffer from bushfires and you don't think twice about exactly why you see, on the news, there are bushfires in those places.

Somewhat later you (meaning me ) visit Southern California, see the Eucalyptus trees that flourish there and you understand. But France?

And then, one day your boss tells you you're going to Nice. Great!!! And what is almost the first tree you notice there? A eucalyptus! I hugged that tree. It had never been to my home but it was as Australian as I am.

On February 16th 1983 bushfires rampaged through southern Australia. 62 people died that night. I remember that night well. Dr Zhivago was running on Channel 7 and during an ad break I went outside and smelled the smoke in the air. TV news broke into the movie describing how the bushfires were burning to the east, to the south and to the west of Melbourne.

The following morning my parents called. They had been living at Woodend, about 60 Kms north west of Melbourne. Their house was burned down. Feb 16th 1983 was a Wednesday - Ash Wednesday. On the friday I drove north and we went back to the house they had been living in. It wasn't there! There were exacly two things we could identify. The first was their TV set - a mass of melted glass globules. The second was the billiard balls from their pool table (and we only knew that by extrapolating where the table was before the fire).

My stepfather described the night as they'd experienced it. They got a call from the local police advising them to get out now. He went out the back door to see where the fire was; it was at the top of the hill leading down to their house. Seemed far away. So he cast about - what did he want to save? His TV of course! So he switched off Dr Zhivago (doubtless with a wrench) and took the legs off and put them in the boot (trunk) of the car. Then he took a second look out the back door. This time the fire was at the bottom of the hill and racing back up toward the house. So he abandoned the TV set and they took off. The only things he saved from that fire were the legs of a $500 colour TV set! Those photos of me as a cute 5 year old were gone forever and so was any claim I might have made to being cute!

They tried to get out on the Woodend - Gisborne road - but it was blocked by fire so they went back to the Woodend pub. There were close on a hundred people huddled in that pub that night; and the fire jumped the pub. It was almost the only place in that region that didn't burn.

As I said, I went there on the Friday. There was smoke wafting around; and at the piece of land on which my parents home had stood there were dead Kangaroos huddled up against the fence. That was the saddest thing.

Monday, December 20, 2004

Flying to Amsterdam

I wanted to use the title 'Well I'll be Amsterdamned' but that seemed a trifle tacky. I got the title in anyway .

I flew from Phoenix to Minneapolis, thence to Amsterdam and Nice. Those cities should identify the umbrella airline - KLM. However, the only KLM airplane I flew on was a KLM city hopper from Amsterdam to Nice - the other flights were on Northwest Airlines. That was the first time I've ever seen a flight attendant push a trolley down the aisle and invite me to pay 7 bucks for an inflight meal (Phoenix to Minneapolis). I declined the offer.

We missed the first approach to Minneapolis and had to go around and try again. As we were taxiing to the terminal I could see outside the window this strange white stuff being blown along in the wind. So we arrive at Minneapolis. The temperature outside was about -25 C and I've never been in temperatures that low before. Even in the air bridge from the plane to the terminal it was colder than my bosses heart at pay rise time and it was a real relief to get into the terminal itself. I decided to forgo my usual smoke (even though the flight had been about 3 hours). As it turned out, that was a wise decision. Because we'd missed the first attempt at landing we were running late and I had just enough time to get to the next flight without facing the gamut of US airport security.

About 9 hours later we reach Amsterdam. By now I've been 14 hours without a smoke. We arrived at Terminal G and a quick check of the flight boards tells me I need to be in Terminal B. So I followed the signs to the terminal and hit passport control. Now you have to understand that I'm used to US style passport checks. All I saw at this point was that if I wanted to get from Terminal G to Terminal B I needed to pass through this passport check. The full significance didn't dawn on me until a day later. So I stood in the line and eventually reached the desk. Hand over my passport and my boarding pass. I swear I was watching what was done with my passport the entire time and what was done was nothing. Nada! Zip! The guy compared the photo with the ugly bastard standing in front of him, decided it was a good match and stamped me into the EU! I'm completely certain that he didn't note my name, passport number or nationality anywhere! One minute later I was undergoing an almost erotic pat down and I was through.

Now you'd think I'd have realised that I was now on the free side but I didn't. So I went without that smoke.

Before I left home on this trip I made sure I had a pen in my carry on luggage - airlines are not so helpful these days as they used to be for travellers who need to fill in an immigration/customs form on the flight. So I was prepared for French customs and immigration. We landed at Nice and no sign of a form. I followed my fellow travellers with my passport at the ready. And there, in front of me, was a green door for 'nothing to declare'. I passed through the door and I was outside! And that was it! Time for a smoke and hail a cab to my hotel.

How do I describe that first smoke to a non smoker? I can't. It's a high and if the flight is long enough it makes your head spin. This flight was just long enough.

Now at what point do I conclude that entering the EU is easier? I didn't realise that passport control, at that point, constituted entry to EU. My failure of realisation was based on previous experience. When one enters the US they take great care that you cannot leave one flight and join another without passing through US immigration control. (To be fair, Australian airports do the same thing). Or should I compare the attitude of a US immigration inspector to the guy at the EU counter? There's no argument that the EU immigration inspector made me feel a whole lot more welcome than any US inspector ever did. Maybe it was my passport? Maybe the EU doesn't consider Australian nationals to constitute a threat?

On my return flight I knew the ropes. We arrived at Terminal D and I had 2 hours to the next flight, so I took the opportunity to go through the green customs door and venture outside for a smoke. It was 5 C outside which is about as cold as I've ever experienced and just cold enough that I wanted only the one ciggy. (Incidentally, I know it's very flimsy but I'm counting the Netherlands as a country I've visited. I didn't get out of the airport but I was on the free side - I could have, had I wanted to, hailed a cab to downtown Amsterdam and the only question asked would have been - can I pay for it?).

After my smoke I went back through passport control to the international side of the terminal and eventually passed through security for my specific flight. I'm assuming that US authorities mandate what happened next. (Some of what happens really is mandated by the US. All airlines flying to the US have to pay a fine if any passenger they carry cannot, prima facie, pass immigration. There was a case a couple of years ago where Qantas was fined over US$100,000 for transporting 13 chinese nationals from Sydney to Los Angeles without US acceptable travel documents. This I accept as fair and reasonable). But taking the parenthetical comment into consideration, I think that what the Northwest Airlines employees wanted was unreasonable. I was travelling on an Australian passport, with a just expired greencard and a letter from BCIS extending my greencard and travel authorisation until mid November 2005. They wanted to know the ins and outs of a ducks bum (an Australian expression meaning they wanted to know much more than was required). Who did I work for? What exactly was my job? What did I do there? Did I have a business card? (And if I didn't have one what then?). What was the exact purpose of my travel? Where did I stay? Did I visit any other countries? How much had I spent? My god, I half expected them to ask if I'd masturbated whilst in Europe!

And all the time when being questioned thus one doesn't dare explode and say 'what business is any of this of yours'. One dare not say 'there are my documents; honour them'.

So eventually I'm allowed to pass through security and board the plane. 10 or so hours later I'm in Minneapolis and I have to face, for the first time since my greencard expired, US immigration. It started well. I handed over my passport and my expired greencard aforesaid. I also handed over my customs declaration and my letter from BCIS extending my residency and travel authorisation until November 2005 aforesaid. And she looked at my passport and saw a sea of red ink.

Let me explain. US Immigration law requires that every immigrant to the US has a passport valid for at least 6 months after the date of their entry to the US as a permanent resident. US Immigration law also requires that the immigrant be always able to prove that their permanent residence is inside the US. Again, this is fair and reasonable and I have no problem with that requirement. My pre immigration passport was due to expire about 15 months after I arrived so I got a new one. The first entry in my passport is the temporary I551 stamp which is the equivalent of a greencard. Thus, every stamp in my passport either dates from my entry to the US as an immigrant or is later. So she saw stamps representing 6 trips outside the US since my arrival as an immigrant on my new passport. Somehow she added this up in her mind to be 10 months worth of travel outside the US. In reality it is 13 weeks. It took a lot of calendar work to convince her that I was well within the guidelines. Eventually, and grudgingly, she approved my re-entry to the US and let me go home.

And I'm back home!!!

After a whirlwind visit to France. I really enjoyed Nice! I would have enjoyed it more if I hadn't been there for work but, on the other hand, if I hadn't been there for work I wouldn't have been there at all! Our customer has facilities in the US, in France and the Philippines and, as you know, I've been to the Philippines a couple of times. The facility there is production; they run 365 days a year and we're expected to front up for work every day. In France they're more civilised - they don't work weekends and so we don't either!

If that was Nice during the off-season I'm not sure I want to see it during the on-season! We dined in the old quarter and it certainly seemed crowded enough for my tastes. That said, half the restaurants seemed to be closed. Those that were open certainly served up wonderful food (bear in mind we're on the company dollar so we weren't as restrained as we might have been). I quite got the taste for a Pastis aperitif! I also pigged out on Pate. I haven't yet found a place here in Phoenix that has a decent Pate and after 2 years without I really missed it.

Language? What could I say? Apart from watching a few classic French movies (Rififi, A Nous la Liberte, Le Belle et la Bete) etc I have no knowledge of French. Well that's not quite true, I could muddle my way through a menu and not be surprised at what appeared on my plate but as for actually speaking it? Non! I have enough trouble, with my Australian accent, being understood here in Phoenix; I certainly wouldn't expect not to cause excruciating pain in the ears of any French speaker who heard me massacre his language. Pointing is a wonderful tool! That said, I did master the following phrases. Bonsoir! Bonjour! Merci! Mousse au Chocalat and my favourite, Vin Rouge! If anyone is offended by the way I expressed that please forgive me - no offence is intended. The reality is that I came away from the whole experience humbled by my inability to speak another language and impressed at the way that almost everyone I met went out of their way to understand me.

What would a visit to France be without trying Escargot? Very tasty if somewhat chewy.

Nice is farther from the equator than I've ever been before (at least during winter). Even though I know intellectually that days shorten it still came as a surprise to me for it to still be dark at 7:45 AM and for the sun to set at 4:45 PM. If you haven't experienced that before it can be slightly disorienting. I was once in Sydney in winter and had to catch a 6 PM flight. I don't wear a wristwatch (and haven't for 15 years) so I was telling time by asking various people. They kept assuring me I had plenty of time to get to the airport. Eventually it was time to leave and we emerged into darkness. But they were telling me it was only 5 PM! My internal clock (calibrated on Melbourne time) insisted it was nearer 5:30 PM. But they were right. Sydney (though in the same timezone) is about 20 minutes to the east of Melbourne - enough to make a significant difference in winter.

Tuesday, December 14, 2004

Greetings all

from Nice. And very nice it is too! But I'm supposed to be working so I suppose I'd better get back to it. Busy installing VC6 right now so I can get started with bugfixes.

Sunday, December 12, 2004

I spoke too soon

but I will in fact be out of the US next week. I'm going to Nice, France. Nice! . (There, I've got the pun out of my system).

I have no idea what I'm expected to do once I get there but it'll be an adventure and my first time in Europe.

Friday, December 10, 2004


the 1987[^] DVD joined my collection today. Wow!!!

I saw, and enjoyed this version[^] at the National Theatre, St Kilda, Melbourne sometime in 1976. That version was a filmic version, in the sense that it was shot as a movie with the actors singing. The version I bought today is a stage version, shot (presumably over more than one performance) at the Vienna Opera house. So you'd expect that it'd look stagey, which it does. Nonetheless I flinched during the scene where Marie's throat is cut (which may have as much to do with events in Iraq over the last few months as with the opera).

I thoroughly enjoyed it. What more can I ask?

Kentucky Colonels

Some of you might have read my profile over on CodeProject and seen that I claim to be a Kentucky Colonel. Which I am. It has nothing to to do with the chicken!

So let me explain .

Way back in 1996 I wrote some software, used on MSN, to run trivia games on a chat server. (The software is MindProbe if you're interested - a google search will turn up some results.).

In 1998 I was running a game and a regular by the nickname of Arfur mentioned that he was a Kentucky Colonel. I, at the time, had no idea what this meant. I quizzed him and he offered to nominate me as one. I thought nothing more of it. So you can imagine my surprise when I came home one night in early December 1998 to find a large envelope from the Governor of the State of Kentucky on my doorstep. I was, at the time, still living in Australia so the return address certainly got my attention. To be honest, living now in Phoenix Arizona a large envelope from the Governor of the State of Kentucky would STILL get my attention .

Anyway I opened it up and discovered that I'd been made a Kentucky Colonel. What does this mean? It means that I've been recognised for my contribution to humanity. I'm not sure that writing a game program used on IRC channels really qualifies (especially when I learn that I share this honour with Winston Churchill and Albert Einstein) but I'll go with the flow. And I'm proud to have been nominated and accepted.

It turns out that my wife is distantly related to Governor Isaac Shelby of Kentucky, 1813, who started the original order. It was restarted in 1931 as a charitable organisation and yes, Colonel Harlan Sanders really was a Kentucky Colonel.

Thursday, December 09, 2004

My next trip

My next trip is, fingers crossed, to Korea and Japan. It was supposed to happen this week but one thing and another delayed it; at the time of writing it's going to happen next week. I'm going to Korea to discuss, face to face, some problems we have with a PLC (Programmable Logic Controller) that's at the heart of our hardware product. And I'm going to Japan to play the futile game of cornering a customer who wants some modifications to our software. The customer wants some remotable capabilities but can't give us a written spec. They DO want a delivery date. I, of course, can't and won't give them even the vaguest delivery date without a much more solid understanding of what it is they want. Hence the meeting in Japan.

I know, ahead of time, that whatever I do I'm in a lose/lose situation. We can speculate and specify to our hearts content but if the customer doesn't know what they want I have no chance of delivering anything that will fit their expectations. So I'm viewing this trip to Japan not so much as a Q&A as an educational priority. I have maybe 2 days, if I'm lucky, to teach my customer the process of software specification.

But at least I'll have the experience of visiting Japan .

Which reminds me of Christmas 1960. My father had just died (based on my memories of him no loss to humanity ), My grandmother gave me a toy police car and I was playing with it. Somehow or other my grandmother realised that the toy she'd given me was Made in Japan. I remember so vividly how she said 'if I'd known it was made in japan I'd never have bought it'. I had no idea, at age 6, why she'd said that. I found out somewhat later that one of her close friends had spent time in Changi Prison, Singapore, as a Japanese prisoner of war. It still feels somewhat strange, when I travel through Singapore, to be in Changi International Airport. Is it on the same site? I don't know.

I caught up with my grandmothers friend in 1989. His name was Keith and when I was a small child he always scared the bejeezus out of me; he seemed so stern. At that age I had no understanding of what he'd been through; he just scared me. But in 1989 I was maybe a foot taller and 50 years younger and perhaps had a greater understanding of what he'd been through; I walked away from a very very cordial remembrance session wondering how on earth I could have been so scared. I very much doubt Keith is still alive; rest in peace Keith, my grandmothers friend, and a friend to me long after my grandmothers death.

I finally worked out how to add a photo gallery

So I'm a tad slow sometimes so shoot me (in 35mm) .

These shots were taken with a Vivitar 3.5 Megapixel Digital camera. It cost maybe a hundred bucks. It lacks the flexibility of my Pentax MZ-50 but it costs bugger all to use and it fits into a pocket. What I do appreciate is the essentially zero cost of a shot. I spent almost as much as the basic camera itself buying a 512 Meg flash card that stores about 300 photos at maximum resolution/minimum compresssion. I'd really have to be shutterbugging to fill that card in a day of shooting

The nice thing about zero shot cost is that you no longer have to worry about processing costs. Just shoot and shoot and delete the shots that don't work. Who'd have thought even ten years ago that this kind of technology would be around and so affordable?

Monday, December 06, 2004

The joys of modern music

which title doesn't mean at all what you might expect.

I've just watched Fight Club - the closing credits, whilst nothing special, have an absolutely fascinating soundtrack. The song is "Where Is My Mind?" performed by a band called 'The Pixies”. Interesting guitar work. Interesting enough that I'll probably steel myself to visit the odd CD shop in malls sometime over the next week.

Anyway, it all reminded me of the time about 6 years ago when I heard a song by a band called Harvey Danger. It was in one of those ten songs in a stretch thingos, about the seventh song. At the end of the bracket on comes the DJ, breathlessly racing through band/title (or was it title/band) pairs (I never did work out which one it was). Anyway, at the end of the announcement I was no wiser than at the start. Can you imagine the strange looks I got when going into record shops asking for the song where one of the lines goes 'you cut off my legs, now I'm an amputee, goddamn you'.

The song was Flagpole Sitta. I'm sure you can see how I could confuse song title with band name .

Whilst on a tangentially related subject; I've been listening to classical music for 33 years now. I remember walking into Allans music, Melbourne, back when I was a smartarse 17 year old and asking for the score to Ilya Kuryakins 3rd symphony. Somehow it seemed funny at the time .

Saturday, December 04, 2004

I just added the third movie

to my collection. Not, I hasten to add, the third movie in absolute terms, but the third of the three classic Russian movies dating from the 'thaw'. In the order that I like these movies they are:

curiously enough, they joined my collection in that order but that's purely by accident.

I caught all three of these movies on TV in about 1983 during a season of Russian movies run by SBS Australia (for those not in the know SBS Australia is the fifth TV network - the name is Special Broadcasting Service and it runs Multicultural stuff - and it is, in my opinion, the best thing that happened to TV in Australia ever). I taped em on Beta and just about wore out the tapes. Rather regretfully I left the tapes behind when I moved to the US - where was I going to find Beta players that could read PAL tapes and convert em to NTSC output? Imagine my delight when I discovered that all three movies were available on DVD!

I don't speak or read Russian and can barely understand one word in a hundred - so I watch em with English subtitles - but that doesn't detract from the pleasure I get from hearing the spoken language.

Today I finished my first real C# app

I wrote the app twice, once in C++ using MFC and again in C# using the .NET framework. It's a pretty simple app; it reads an access database and populates a ListView with a list of sessions; you can filter the list by various criteria and generate a printed report (I'm being deliberately vague). The printed report is created as an Excel spreadsheet and none of the mechanics of actually creating the report is done by the app - all it does is launch a Javascript applet which instantiates Excel and calls a VBA function within an Excel template, passing a session ID.

This was an experiment in seeing how well (and how easily) the .NET framework could match what I can do in C++. Writing the C++ app took about 8 hours which was about what I expected given that I've been writing C++/MFC apps since version 1.0 of MFC (1992?). Whatever. The point is that it's become almost second nature to think in terms of OnInitialUpdate and OnInitDialog et al.

The C# app took about 16 hours. I'd reckon close on 12 of those hours were spent searching through MSDN for how I could do, in C#/.NET what I already know how to do in C++/MFC. On that score C# wins. If I was as proficient in the .NET framework as I am in MFC I reckon it would have taken 4 or 5 hours.

My biggest problem was wrenching my mind away from MFC's thin wrappers over the windows controls. For example, the app uses a combobox containing a list of all the unique values in a particular database column. I found myself thinking in MFC terms; there had to be an AddString function in there that applied to the combobox. It took a while to realise that the Items collection is how one adds an entry. I'd already found the Items collection on the ListView control and once I found the same thing applied to the combobox it all fell into place. Makes sense and it's nicely orthogonal.

On the other hand, in a lot of ways it felt like writing VB code with C'ish syntax. I'm sure there are better ways that I'll learn as I go to communicate between the main Form and a Child Form masquerading as a dialog. It just doesn't feel right to have the parent Form fiddling with the Childs variables before calling ShowModal(). And it definitely doesn't feel right to be making the parent Form variables public so the Child form can change them. It was also a wrench to stop worrying about matching new calls to deletes and just let GC take care of them

Most of what I've said is actually .NET related; it has not much of anything to do with C# as a language. As a language I like C# - all the advantages of C++ without many of the dangers. For example, the fact that a switch statement doesn't need break to terminate a case. Heck, they even covered the case where one might want to fall through to the next case, at the cost of a single line of code!

And I really really like the way that you get a runtime exception if you declare a variable but forget to initialise it. Yes, that's part of the runtime but the compiler enforces the rules. I like that a lot.

Friday, December 03, 2004

Planning for change

Our software has a runtime component and a design time component. I'm responsible for the runtime side of things and I have very little to do with the design time tools. They produce various output files that I have to interpret and run but as for the editing of those files *shrug*.

As you're probably sick of hearing, we did a major release two weeks ago. Nice shiny new versions of everything packaged up in nice shiny installers on a nice shiny CD. Yesterday we get an email from the customer. The basic question was 'testplans created in earlier versions of the design tools won't load in the latest version'.

The response from the developer was along the lines of 'yes, I know. It would take longer to write a conversion tool than for me to do it by hand, so you send me your testplans and I'll convert them for you'.

Ye Gods!!! Am I the only developer reading that who's thinking WTF??? I hope I'm not . Let's explore the first issue, which is that the software for which I am responsible knows about testplan formats. If the design tools can't load em do I know my stuff can? At the time of writing I don't. What I know is that I haven't had occasion to change that part of the code and, more importantly, I haven't been informed of any changes that would affect me. Now you might be inclined to write this off as a lack of communication; which would be correct. One problem is that there are four of us; one is on the other side of the continent (when he's in the US). One lives locally but only occasionally comes into the office. The other two (myself and another developer) do come to the office daily. I used to do the working at home thing, back in 1985 and again in 1993, and let me tell you it was good but that was on one man projects. No need to communicate changes to other members of a team. I can even see situations where the working at home thing works for small to medium sized teams; if each team member takes the effort to communicate, by whatever method, changes to important data structures and file formats. Alas, my fellow team member seems to lack that kind of discipline. For the purpose of this discussion source code diffs isn't any kind of effort to communicate changes!

Second issue? We sent out a new bunch of software to our customer with an important, backwards incompatible change, and didn't warn them. They install the new version over the top of the old one (did I mention this is the first time we've ever done an installation package) and suddenly things don't work. No advance warning; it just doesn't work. And when they bring it to our attention the response is 'oh yeah, we knew about that'. Did our install create a backup? Not on your life! So how does the customer recover from this situation? Since this is the first installation packaged version we've done they don't have older CD's they can revert to. The best they can hope for is that there's a backup of the machine in question dating from just prior to installing our upgrade so they can claw back the older version of the design tools; or they can email the testplans and wait for the revised versions.

We're not talking a piece of shareware costing $29.95 here. We're talking software used by a multi-billion dollar corporation to run hardware costing over half a million dollars. The dollar value of the products that run through our hardware can run to half the total cost of the hardware per day!

Now I don't really care how much pressure the customer exerts on us to give them an update. I don't care if that pressure results in the customer being burned by a bad release (as this one has turned out to be). As tempting as it might be, we're not in the business of punishing customers for pushing us to produce new versions and it's always been my experience that customers are more likely to forgive late deliveries than deliveries that break older files. If you're going to change a file format you'd better have a good reason to change it and you'd better provide a way for at least the first new version of software that understands that new format to read the old one. The new version may lack the ability to write the old format so long as the user is warned that the file will be incompatible with the older version.

And it's important that installation packages create backups so that you can uninstall the new version and revert to the previous one.

For the record - the runtime installer creates a backup of the previous version including a registry dump of our product keys; and uninstall reverts both the binaries and the registry.

Thursday, December 02, 2004

I'm impressed!!!

I wrote a response to someone elses response to something I wrote here (wow is that convoluted or what? ). Anyway, my response included a couple of links to web pages. Being somewhat lazy tonight (it IS 1:30 AM after all) I just copied the URL's without any special formatting to make them clickable. Hit the Post button and up comes the new response. And the links were changed into hyperlinks on the page. It's pretty simple to do but it's amazing how many web sites don't do it. Kudos to whichever genius behind the scenes (I suspect Anders ) expended the extra effort to make it 'do the right thing'.

Air travel and state oddities

About two weeks ago we had a problem with our software that I was unable to resolve over the phone. So I found myself travelling to Dallas, Texas, on about 3 hours notice. We're a small company; we don't have a dedicated travel person so it fell to me to surf the web and do online bookings. Now you'd think that travelling, by plane, from Phoenix to Dallas would be easy to arrange wouldn't you (even allowing for the fact that this is the Monday before Thanksgiving).

I checked out various options and found the following.

  • I can fly Southwest Airlines for about $500 return, but I must go from Phoenix to either El Paso, Texas or Albuquerque, New Mexico (returning the same way). No direct flight to Dallas. Total travel time assuming no delays and counting from arrival at airport to arrival at airport, about 5 hours each way.

  • I can fly America West for about $900 return, but I must go from Phoenix to Las Vegas and thence to Dallas, returning the same way. Total travel time assuming no delays and counting from arrival at airport to arrival at airport, about 8 hours each way.

  • I can fly United for about $1200 return which is direct Phoenix to Dallas. Total travel time assuming no delays and counting from arrival at airport to arrival at airport, about 3 hours each way.
Well that was pretty much a no-brainer. I took the $500 Southwest flight. Lowest price and middle of the range of travel time. In the event storms made my return flight about 3 hours late but thems the breaks.

Anyway, the reason I'm making this post is that I was puzzled about why I couldn't book a direct flight, on Southwest Airlines, to Dallas. It turns out that there are two major airports in Dallas. The major major one (I've been there and it's huge) is Dallas/Fort Worth International. The other one is Love Field. It seems that when the decision was made to build DFW there was an assumption that Love Field could be closed. But it also seems that some airlines prefer to continue using Love Field (doubtless the gate fees are much lower). So the State of Texas passed a law that restricts landings at Love Field to flights that originate either in Texas or in adjacent states. Hence the stop over in El Paso or Albuquerque.

I chose the flight through Albuquerque. Alas, there was no sign of Bugs Bunny trying to decide whether to take a left turn or not

It was interesting to be passing through Dallas Love Field on November 22nd. The 41st anniversary of the passing of a president through that airport. I'm old enough to remember exactly where I was when the news came through that JFK had been shot and if you'd told me on that day 41 years ago that I'd be living in the US and be in Dallas on the 41st anniversary I'd have thought you had rocks in your head.

Oh, and where was I? The news came over 3UZ Melbourne at 7:45 AM Saturday morning, November 23rd, 1963. I was 9 years old and I had received, that very morning, my first wrist watch. We were driving through the car park at the Victoria Market in Melbourne. Work that time backwards to US time, remembering that in 1963 Victoria didn't do daylight saving. That works out to be 12:45 PM Friday Dallas time. It took a mere 15 minutes for the news to cross the Pacific Ocean. Not bad for a time before satellite TV.

Wednesday, December 01, 2004


So I live in Phoenix Arizona. City of freeways and snowbirds (people who come south to escape the winter). I have no especial love for Phoenix. Indeed, a friend who was born in Chicago, raised in New Mexico and lived in Melbourne Australia for over a decade and then moved to Phoenix describes the place as a city without a soul. Nonetheless, here I am and make the best of it I must. And to be honest, there are some totally breathtaking sights to be seen here. Try sunset in winter whilst driving South on Tatum Boulevard toward Camelback Mountain. Look to the left and see a vista of sharp hill after sharp hill shrouded in fog. Or take Camelback Mountain itself. Just at sunset again, from the corner of 32nd and McDowell. It really does look like a Dromedary at rest. Or try driving along McDowell east of 52nd Street and drop a left at Galvin Parkway, which takes you past the Phoenix Zoo and the desert Botanical Gardens. There's a real beauty to the desert landscape that took me a while to appreciate.

Tuesday, November 30, 2004


I've just published my 32nd article on CodeProject.

It's kind of like a software release. You know you've tested it to buggery and you have a level of confidence but there's still the chance that you've missed something that's forehead smackingly obvious... after the event!

Would I have it any other way? Not on your life. I enjoy writing articles and I'll take my chances with relevance. I won't take my chances with accuracy or correct code - those are both under my control. But as long as these hands can type I'll be wanting to write and share.

Monday, November 29, 2004

This is a little gem

I found this in some C++ code I've inherited. The preceding code isolates a file extension into an STL string, strExt. The code then does case sensitive compares against a range of file extensions and branches to appropriate code. Somewhere along the line my predecessor must have run into a variety of capitalisations, hence this.

else if (strExt == _T(".txt") strExt == _T(".TXT") strExt == _T(".Txt"))

The state of car advertising

If you've never heard an advertisment, on the radio, for cars in the USA you have a treat ahead of you! A 30 second spot usually consists of about 15 seconds of fluff about how if you're not driving an XXX you're going bald, not getting enough sex and have halitosis. That or you're not a dynamic go-getting 20something power broker about to solve world hunger in between brokering a world shattering deal and being kind to kittens. You get the idea.

After that initial 15 seconds you get another 5 seconds of how this particular dealership has the best deal. Ho hum.

The final 10 seconds is incredible. I've never heard anyone talk so fast! X does not apply, not subject to Y, loyalty bonus of such and such, residency restrictions... etc etc. I reckon the average dealership manages to cram 15 outs into that final 10 seconds!

So this weekend Lou Grubb Ford, Scottsdale, are advertising a 'dollar below invoice sale'. Yes, you heard right! They'll sell you any car on their lot for one dollar below invoice. Sound too good to be true? Uh huh. In that final 10 second gabble is this gem. 'Invoice may not reflect true dealer cost.'.

How can that possibly represent adherence to any kind of fair advertising code let alone a reasonable state requirement for accurate advertising?

For the record: I drive a Kia.

Thursday, November 25, 2004

Loss of privileges

I've finally bitten the bullet and changed my user account on this machine to non-admin. Yeah I know, should have done it years ago. Better late than never eh? There wasn't any particular prompt for the change (no disaster caused by my being an admin). It just seemed like it was time to 'do the right thing'. It's early days yet but so far everything I do on a day to day basis seems to work just fine.

Almost the only inconvenience is that I'm working on a new series of CP articles involving services. Naturally this means I have to start and stop em at various times which means frequent 'runas' sessions.

Wednesday, November 24, 2004


This article[^] by Raymond Chen got me thinking about the whole software user/developer relationship. Actually it wasn't Raymond's article, it was the responses. It's pretty clear to me that Raymond's readership is primarily software developers. And it's also pretty clear to me that among developers there's a culture of 'I know better than the user'. Which at one level may be true. I do know better than the average user if we're talking about the mechanics of developing software. Does that mean I know better than the user when it comes to how the software shall be used?

You're going to have to argue very very persuasively indeed to convince me that developers know better than the user all the subtle nuances of the ways a user may employ our products.

Raymond's talking about those 'annoying' directories that get created when you install windows. My Documents, My Music et al. Those of us close to the development process have probably been doing it for years and we've learned from prior art. I spent some years (1986 - 1990) working with Unix; to this day my development machine has \usr\src and all my projects below that. I also have \usr\bin for various tools, \usr\man for my documentation and so on... How very non windowsish!

And now Windows comes along and creates My Documents, My Images etc.. I don't want to use those locations for my own stuff, though my reasons for not wanting to use them are totally illogical. I just want to keep on using \usr\ because that's what I'm comfortable with. And yet, whenever my non developer friends ask me how they should organise their system (I'm a programmer so I'm obviously an 'expert') I always advise them to save their documents in My Documents, their photos in My Images and so on. Why? Because I can't advance a single convincing reason, even to myself, to NOT use those classifications. For the most part this is more than enough; and when it comes time for me to be called in my capacity as computer rescuer it makes it sooo much easier to find the stuff I need to backup before reinstalling their O/S.

This is a case where I think Microsoft got it right. I've read enough about how Microsoft approach the user experience to know that they didn't just pull the My Documents stuff out of thin air. I don't know a single developer who uses their classifications; we all have 'good' reasons to stick to the way we've been organising our stuff for the last ten/twenty/thirty years. But I know many users who do use their classifications. The mere act of creating those classifications, on a user by user basis AND defaulting the storage location to those classifications based on document type is a huge step forward for the average user.

[Post shower addendum]
We most of us developers assume a level of knowledge (and ability to care) in our users that just isn't there. It's not a lot different from a car designer assuming that we know how to tune a dual carb system. It's not all that difficult (I learned it 30 years ago and forgot it 20 years ago) but it's just not something I want to do. Likewise our users simply don't want to know how to organise their stuff into nice neat directory heirarchies. Just as I want my (single) carb car to just start tomorrow morning I believe our users want the system to take care of saving their stuff and finding it the next time they want to look at it. Exactly where it's stored is of no importance whatsoever; what's important is that it's stored and easily retrieved.
[/Post shower addendum]

Monday, November 22, 2004

And now for something completely different

I went for a drive today, through Phoenix, for no particular reason. Just because I felt like it. Car radio on, listening to something... well let's not go into which aspect of talk radio exasperated me today... So I decided to switch to FM and go find a classical music station. In a city of three and a half million or so there are, naturally, a lot of radio stations. We even have an embarassment of riches. At least 3 classical music stations.

I found the first one; it was playing Mozart. Went searching for a second one. It was playing Mozart. Went searching and found the third one. It was playing Vivaldi. (I bet you thought it'd be Mozart - I certainly expected Mozart ). I was driving for about 3 hours (and add to that a stop at Starbucks). The range of composers these three stations ran through consisted of:

Carl Ditters van Dittersdorf.
(for a delicious thrill) Salieri.
Early Beethoven. Nothing later than his second symphony.

You might have guessed that I like classical music. Let's not go into the fact that the term 'Classical' has a specific meaning - here I'm using the word as the great unwashed would use it. So how does it happen that of the three 'classical' music stations in Phoenix, not one of them seems able to play anything written later than about 1800? I might add that, though this might seem like a small sample (3 or so hours on a Sunday afternoon) it's actually fairly representative of the fare on offer whatever the day or the hour.

Now why is this? Do the people who create the program lists have a bias toward the Baroque? Don't they know about the excellent music that's been written under the 'classical' umbrella since 1800? Many years ago I went through some musical education: it was biased toward the Baroque. Are these programmers the natural outcome of an educational process that emphasises the Baroque?

This differs a little from the situation where I come from; there we had two classical music stations that I can recall, MBS and ABC. Neither was a 'for profit' station. Indeed, the ABC is government funded. Even in that situation it was rare for a radio station to commit to running a symphony that ran a whole hour, let alone 3+ hours for an opera but they did do it. I'm sure you can see where I'm going with this. I suspect the classical music stations here stick to Baroque due to the relative brevity of a piece - it lets them get more ads in per hour.

Sunday, November 21, 2004

Hidden dependencies

If you've been following my entries over the past week you'll know I've just finished a release. Burned to CD, nicely labelled and dispatched by horny-handed messenger to the corners of the earth.

A couple of days later I installed the release on a clean machine (as I'd done each morning during the release process) but this time I exercised a dialog box I hadn't exercised during the release testing. And dammit, it didn't even appear. Hmmmm. So I go to my development machine running the same code and the dialog box appears. Just to be sure, I installed the release on another clean machine and no dialog box. Actually there were two dialog boxes that didn't appear, but other dialog boxes did appear. The two that failed to appear both use the ListView control. The ones that appeared only use standard pre Win95 controls (edit boxes, buttons etc).

Ok, let's be methodical about this. It works on my development box but not on a clean box. I decided to install the development environment on the clean machine and single step through the code to work out where it's going wrong. So an hour later I've installed VC6, copied the source code from SourceSafe and I'm ready to test. But just to be sure, I run the app again outside the development environment and this time the dialog box appears! WTF?

Hopefully it's obvious that the mere act of installing VC6 (without even running it) fixed the problem. So how does installing VC6 change the system? Well for one thing, it installs and registers a bucketload of OCX's. And, to cut a long story short, that was the problem. This MFC app uses the VB wrapper OCX around COMCTL32.DLL. I ran the app on my development machine under the debugger, waited until all the 'loading *.dll' messages died down and then opened the dialog box. Up pops MSCOMCTL.OCX in the list. Aha!! So I copy that OCX from my development machine to the clean machine (the second one without the development environment) and register it. Voila!! The dialog opens just fine. Unregister the OCX and, of course, the dialog fails.

How did this situation arise in the first place? I inherited this code from another developer who told me he'd started the app in VB6 but couldn't get the performance required so he migrated it to MFC. Along the way he'd taken a control he was familiar and comfortable with and used it instead of learning how to use ListView directly. Well ok, that explains how this MFC app ended up using a VB wrapper OCX. But how come it's taken until now (around 2 years) for the problem to surface?

My predecessor's method of installing the software was to install the development system on each new system (I should note that we have a very restricted audience for this software - it's part of a half a million dollars production machine). Then he'd copy the latest source code from his laptop and compile it in place. His average time to achieve all this was at least a day.

When I joined the company I was aghast at this. I set myself the goal of producing installation CD's and bringing up a new machine in less than 30 minutes. Achieved it too; if you're upgrading an existing machine. Ah well, next months release will contain the OCX so it'll work properly on virgin hardware too.

And now for the mea culpa. It's obvious that my release testing isn't thorough enough. From now on release CD tests will include exercising every dialog box. But methinks I need to test much more than I've been testing. Much thought is required.

Thursday, November 18, 2004

We got it out the door today

and it wasn't even that painful. Ummm what am I talking about? Software release number 1 under my control .

I got to the office this morning and found an email awaiting me that said the tooing and froing about a portion of the release (between two developers) was over and it was ready for the big time. Included in the email were exact instructions from one of the developers about which files I needed to get from SourceSafe to create the installer. So I go to our build machine and 'get' the installer script for that product. It has references to drive H. It turns out that when that developers machine was built there was some kind of USB device exposing multiple logical devices and the XP install saw them first - so his drives C to G are USB devices and his hard disk is drive H. Now you'd imagine that this shouldn't present a problem. After all we all of us use relative paths and we never hard code drive letters right? Right!

Alas, the build product I chose (Visual Build Pro version 5.5), whilst an otherwise excellent product and warmly recommended, insists on having a drive letter as part of every path. I can think of good reasons for this and good reasons against this.

So it's about 10:00 AM. The timestamp on the email telling me which files I need to get is 4:37 AM so I know the poor bugger was up late. I decided to wait until about noon but he rang me a little earlier than that to check what was happening. At this point we have a choice; we can spend most of the day working out what to do and possibly miss shipping yet again or we can do whatever it takes to get it out today and worry about it tomorrow. Part of me says we spend the time to get it right the first time (in terms of the build process). Another part of me says that from the customers point of view they don't care about our build process - they care about getting functional software. My arguments about not releasing whilst we're working through issues with the software don't hold when we're discussing the build process so I decide we'll hack his install scripts to get a working installer that 'does the right things' and 'we'll fix the scripts tomorrow'.

A bit of tooing and froing and we have an installer that installs his software. A bit more tooing and froing and we have a complete set of manuals. I do a couple of test burns of the complete suite and run my standard tests and we're good to go! It's now about 3:30 PM.

So I burn 10 cd's and print 10 labels. 4 cd's go to one location, 2 each go to 2 other locations, one goes home with me (I like trophies) and one goes into our physical library at the office. Each cd passes burn verification and also is readable on other PC's.

So now I've got 10 cd's and 10 labels. Do you remember a post I made a day or two ago about how this was going to be our first release with professional looking deliverables? You'll never guess what I overlooked. Not in a million years. Our cd contains professional looking manuals, professional looking software. When you stick it in the CD drive autostart takes over and pulls up a somewhat spartan but nonetheless professional looking web page with our company logo and a bunch of links to install the software or read the manuals.

I apply the label to the first CD and sit back examining it. Damn damn damn. The one thing I didn't think about was this: when I did my first test run two days ago I'd used a Memorex CD. They have silver printing that doesn't show through the labels. On Tuesday I went to Staples to get a bunch of Jewel Cases and found they had a special - Jewel Case AND blank CD-R for about the same price I'd pay for the Jewel Case. So I got the combo (shrink wrapped) without checking what was printed on the label side of the CD. So we've got this white label on the CD and clearly visible through it is the Staples logo. To make it worse, the large black Staples logo was obviously seen by me as I inserted each CD into the burner and it STILL didn't click. It's now 4:30 PM and there ain't enough time to get more blank labels, a bunch of blank CD-R's without anything printed on the label side, burn the buggers and make the Fedex pickup time. So our first CD release had to go out with the Staples logo clearly visible through the label.

Wednesday, November 17, 2004

Wdevs is doing something right

I just did a search on my name on google and WDevs rated even higher than CodeProject. Yikes, I hope my boss doesn't do these kinds of searches. On the other hand, if you find this blog entry oh boss of mine - you're NOT paying me enough you cheap bastard!!!

In other results, I'm fascinated to see that my article on using MAPI, dating from 1999 on CodeGuru, is featured on a link from the University of Wisconsin where the URL implies that it's the department of Neurophysics. I have good company there; there are also articles by P J Naughter, Chris Maunder and Mike Dunn What really fascinates me about my article being featured is just how bad it is. Back in 1999 it seems that I thought it was enough to present two paragraphs plus the header file and consider it an article. Rereading that article makes me cringe. I redid the article on CodeProject in 2004 with a lot more explanation (and a mention that it had first appeared on CodeGuru).

The other thing that really stands out is how many sites mirror articles from CodeProject. There seem to be dozens of Russian sites that host, in English, CodeProject articles. I haven't yet found a site that translates my English to another language - but rest assured that when I do I'm going to save that sucker and burn it to a CD, purely for ego purposes :)

Tuesday, November 16, 2004

Wish me luck, part 2

Well, the release didn't happen. I'm going to word this very carefully because I know at least one person at the office reads this blog - but also because effecting cultural change is a slow process and in a relatively creative field such as S/W development it's very difficult to achieve such a change without everyone on the team buying into the deal.

The long and the short of it is that the release didn't happen because a new feature, added at the last minute by one developer at the suggestion of another developer had a bug.

The two developers in question test each others work. I, as the new chum on the team, don't know enough (yet) about what their part of the product does to be able to offer constructive suggestions. Unfortunately, one of the two developers in question is on the other side of the International Date Line at the moment and 15 hours ahead of us. So he gets a new build and tests it - reports a bug and goes to bed. The other guy awakens, sees the bug report, fixes it, sends a new build and goes to bed. The first guy awakens and.... well you get the idea.

So here we are with a release sitting right on the edge and ready to go - with a bug in a new feature. Do you wait another day, just ignore it, or do you conditionally compile out the new feature and postpone it to the next release? I've already said I don't know enough about that part of the product to offer constructive suggestions so my gut feel was to let the author of the new feature make the decision. He believes it's fixed in the build currently awaiting verification (actually, at the time of writing it should have been verified) so I'll let it go another day.

Now understand, I'm not affixing blame here. I've been a software developer long enough to know that curbing enthusiasm is sometimes a good thing but I also know how an idea can take hold of you and beg to be coded. I don't want to, and won't, discourage anyone on the team from offering up ideas for consideration. I also don't want a situation where the 'release date' becomes the all consuming passion of everyone and every decision is warped by that looming presence. Nonetheless, sometimes it's necessary to draw a line in the sand, freeze features and focus on getting a functioning release out the door.

When I arrived at the office this morning I found an email from the developer who's currently on the other side of the IDL suggesting a change to my part of the product. It's a good suggestion, pretty easy to implement and useful to the customer. And my first thought was 'no way is it going into todays release'.

Let's be honest. In part that thought was because even though the idea is a good suggestion, pretty easy....... blah blah..... it's just not sexy and we, as developers, are partly driven by the sexiness of an idea. 20 years ago I'd have probably started implementing it anyway just to prove what a clever/fast bastard I can be. But not now. Now I know that we're not judged solely by how clever we are. Customers want, first and foremost, software that works. In much the same way that I'm no longer impressed by an engine with double overhead cams and an all aluminium head (because I don't care how the car works - just that it gets me to where I want to go) our customer isn't impressed by how cleverly we wrote a multithreaded pool manager. They don't care how we do it - what they want is for their $80,000 batch of semiconductors to be tested in 8 hours and to get an accurate report that tells them which ones to ship and which ones to post mortem.

We've now agreed that we're going to feature freeze 5 days ahead of release date. Let's see if that agreement holds shall we?

[Let down]. So today I created the template for our CD label and wrote the HTML page our CD will offer up when autostart kicks in. I did a test burn with what we had, labelled the CD and tested it on every machine I could see (to be sure the label didn't render the CD unreadable). I'm going to keep that incomplete CD and probably staple it to a wall somewhere to remind me of today.

So we missed the deadline but I still finished the day feeling like we'd accomplished something. I even got to go home early

Monday, November 15, 2004

Wish me luck

Tomorrow (Monday November 15th) we do our first software release for which I take responsibility. It's taken a while to get my organisation to agree that ad hoc releases where someone decides it's 'ready' and emails a copy off to the customer should be a thing of the past.

I've instituted daily builds based on 'gets' from our sourcesafe database. So far no one's broken the build but it's early days yet - we've only been doing this for about 3 weeks. But it has given me a certain level of confidence - we're now able to get unbroken debug AND release builds. My build script (I'm using Kinook Softwares Visual Build) deletes the entire source tree on the build machine, gets the latest source and recompiles from scratch. Then it builds each install package. At the end of the build process it emails the results to me and each member of the team. Each day I review last nights build results. And each day I spend a couple of hours reformatting the hard disk on a computer, install Windows XP and install our packages. It's not quite as wasteful as it sounds. I kick off the boot from the Windows XP cd when I arrive at the office and carry on with normal work with only the occasional interruption. I probably waste more time stepping outside for a smoke than I do with the clean installs

So far it's looking good (and it's orders of magnitude better than the situation I found when I joined this company).

So tomorrow is crunch day. I do the final build - the final clean machine install - the final functional test. And then I get to do it all again on a machine that didn't experience clean machine install. I get to run it all on a machine that's being upgraded from our old (random) version, to our new standardised version. All being well I'll be burning our CD of the release mid-afternoon.

Don't imagine that tomorrow is the first time I'm doing this . I've been playing this game way too long to fall for that.

Nevertheless things can go wrong. If they do I'm going to dig my heels in and insist that, even though we're two weeks past the initial release date, we DO NOT release. Sure, we might miss a date by a day or more (added to the two weeks we've already missed). Will our customer forgive a bad release because we stuck to a date that we and they pulled out of our bums? I suspect not.

If nothing goes wrong our customer will recieve, for the first time, a set of professionally labelled CD's. None of this cheap memorex CD-R with the name and version of the software written with a felt tip pen. Ummm well it will be cheap memorex CD-R's but they'll be properly labelled and looking professional. What's more, when they insert em and let Windows auto notification take over they'll get a professional looking web page with release notes and install links.

Let's be fair to management where I work (especially since I'm part of management - much to my surprise). They hadn't thought in terms of the oobe. Oobe? Out of box experience. I'll be the first to admit that much of what I do is based on what I've read about how Microsoft manage their software development process. They do daily builds and visit the wrath of hell on s/he who breaks the build. As shall I. And they obsess about the oobe.

Two nights ago I had to reinstall the kids computer. Because it's the kids computer it is always the one that has the spyware/malware/viruses on it. They neither know nor care that someone out there wants to own their computer. So every so often I get to the point of throwing up my hands and blowing that machine away, reinstalling and the whole works. This time I installed WinXP on it (instead of Win2K). Imagine my surprise when, after the install, I discovered that it had gone out and found our network printer and automatically set it as the default. This is what I think of as a good oobe experience. It did the right thing.

I'm disposed to like Microsoft (though I don't want to work for them). Our customer is disposed to like us - if we can get it right. I'm disposed toward Microsoft because, despite their flaws, they get most things right. So I come at this whole thing from the point of view of wanting to impress the hell out of MY customer by looking professional AND by getting most of it right. I don't expect to get it 100% right. But if we can, for the first time, deliver them software that works, whatever its imperfections, that's a big step forward.