Hailing a private hire cab…

We (my travel colleague) and I stayed at a TravelLodge in Portsmouth. The TravelLodge was, as they all tend to be, basic, but comfortable and satisfactory.

We left the hotel, carefully positioning ourselves using the triangulation manoeuvre: find three well known objects and put yourself in the middle of them, it makes it easier for taxi drivers to find you. However, there were two private hire cars right in front of us. So, because we can’t “flag down” or hail private hire cars, we rang the number on the side of the car. Imagine my surprise to hear an answerphone message! We asked the private hire driver to radio his office and to advise them to pick up the ‘phone…but this was to no avail.

So we dialled another private hire firm and gave them the triangulation point. “5-10 minutes” was the waiting time we were quoted. We waited for 15 minutes. Then a licensed black cab came along…which we are allowed to hail.

So we hailed it, got in and sat down just as the private hire car arrived behind us. Naturally, we ducked down in the seats exclaiming “drive, driver, drive!”

DG834G != WGT624

A week past Saturday I advised my client to purchase NetGear’s DG834G wireless adsl modem firewall router from PC store that has stores in the UK yet uses ‘World’ in its branding.

Unfortunately, the unit only worked for a couple of days before it was classed as Dead On Arrival. Not to worry, I advised my client to return to the same store and ask for another identical replacement. This is actually a rather nice little unit – it’s a V2 release, it’s white and it’s smaller than my V1 edition (which has been working well since January 2004, I’m very pleased with it).

Last Saturday, I drove the 140 or so miles (round trip) to install the replacement.

Imagine my horror when I discovered that the replacement was a WGT624 wireless firewall router. No built-in ADSL modem. This unit required an ASDL modem for it to work in a similar fashion to the DG834G unit.

So how did my client end up with the wrong product? Well, as you might imagine, it boils down to customer service: the lack of it.

The sales bloke in the world of PCs was keen to extol the virtues of the WGT624: it was 108mbps vs the 54mbps of the DG834G. And it was only a tenner more expensive. What he forgot to mention was that my client would have needed to purchase an ASDL modem too. May be he didn’t forget, may be he didn’t know?

So, my client and I returned to the offending store, WGT624 in hand. We hunted down the sales bloke, who happened to be chatting to the duty manager at the time. The sales bloke was allegedly busy, so the duty manager offered to take over: result! Or so I thought. He then proceeded to pass it over to a different sales bloke who was a little unhelpful (although I think it was their stock system that couldn’t help him) and was unable to confirm if the DG834G was available in a nearby store.

Whilst I was a little reluctant, we ended up replacing the NetGear kit with DLink’s DSM-604T which does include a firewall, despite the box stating just wireless adsl router. Sorry NetGear, but the said store didn’t seem to carry much stock of anything: what it did carry was a very confusing mix of wireless hardware.

The moral of this story: only purchase things from this worldly-wise PC store if you fully understand what you are buying, don’t rely on the staff helping you. My client happily admits that he doesn’t know enough about IT, but he doesn’t need to, that’s what I do for him. He’s now a happy client, which is good for me, but not so good for the PC store in question.

SOS – the original text

I didn’t write what follows, but I agree with it and felt it should be published for all to learn from.

Stupid people should have to wear signs that just say, “I’m Stupid”. That way you wouldn’t rely on them, would you? You wouldn’t ask them anything.

It would be like, “Excuse me…oops, never mind. I didn’t see your sign.”

It’s like before my wife and I moved. Our house was full of boxes and there was a U-Haul truck in our driveway. My friend comes over and says “Hey, you moving?”

“Nope. We just pack our stuff up once or twice a week to see how many boxes it takes. Here’s your sign.”

A couple of months ago I went fishing with a buddy of mine, we pulled his boat into the dock, I lifted up this big ‘ol stringer of bass and this idiot on the dock goes, “Hey, y’all catch all them fish?” “Nope Talked ‘em into giving up. Here’s your sign.”

I was watching one of those animal shows on the Discovery Channel. There was a guy inventing a shark bite suit. And there’s only one way to test it.

“Alright Jimmy, you got that shark suit on, it looks good… They want you to jump into this pool of sharks, and you tell us if it hurts when they bite you.”

“Well, all right, but hold my sign. I don’t wanna lose it.”

Last time I had a flat tire, I pulled my truck into one of those side-of-the-road gas stations. The attendant walks out, looks at my truck, looks at me, and I SWEAR he said, “Tire go flat?” I couldn’t resist. I said, “Nope. I was driving around and those other three just swelled right up on me. Here’s your sign.”

We were trying to sell our car about a year ago. A guy came over to the house and drove the car around for about 45 minutes. We get back to the house, he gets out of the car, reaches down and grabs the exhaust pipe, then says, “Darn that’s hot!” See? If he’d been wearing his sign, I could have stopped him.

I learned to drive an 18 wheeler in my days of adventure. Wouldn’t ya know I misjudged the height of a bridge. The truck got stuck and I couldn’t get it out no matter how I tried. I radioed in for help and eventually a local cop shows up to take the report. He went through his basic questioning..ok..no problem. I thought sure he was clear of needing a sign…until he asked “So..is your truck stuck?” I couldn’t help myself! I looked at him, looked back at the rig and then back to him and said “no I’m delivering’ a bridge…here’s your sign.

Blogging at 35,000 feet

There is an airline meal in front of me; I’m one -third of the way through Jeremy Clarkeson’s The World According To Clarkeson and half-way through the flight.

Now, unless the meal is removed soonish Clarkeson may not be finished for another day.

Which is why I’m writing this blog entry (and a few others) using Pocket Word. I realise that the post title may have misled you…sadly this Boeing 757-200 doesn’t have in-flight Internet access.

I am in fact sharing the 757 with a bunch of neds…streams of them have just gone past me for some sort of party at the front of the cabin, or may be it’s for the WC?

But why did they choose to go to the WC during the meal? Ten of them, I counted them one by one and didn’t fall asleep, all huddled around the solitary WC at the front of the cabin. Behind them, moderate carnage as people juggle their own airline meals, just to let each of these guys out of their seat.

What does It take to get a decent cup of coffee in Britain?

Coffee should be opaque.

I don’t expect my black coffee to be poured into a white cup only to be greeted with confirmation that the bottom of the cup is still white…with the cup still half full.

But that’s exactly what I received during my return flight from Tenerife: a cup of see-through coffee.

This is just one reason why we, Great Britain as we think we should be called, are the laughing stock of proper Europe. This country just doesn’t live up to its name anymore.

Rip-Off Britain

I have just returned from another jolly to mainland Europe .

Folks who know me will appreciate that I like McDonalds Mcflurry – an ice-cream dessert (priced at 99P)

Can anybody please explain how a shot of finest (black, not opaque) espresso topped with a good sized ” dob” of ice-cream costs just 1€? In Europe.

This delicacy is known as an helado e café. One Euro, 70p roughly – how does a McFlurry cost more? Does a shot of espresso in Europe cost 29p? No, we’re being ripped off here in Britain: overcharge for everything, forget “please” and “thank you” and dispense with customer service.

My local golden arches can’t even do me an espresso, never mind a coffee with a dob on top…when challenged to come up with a price, they reached nearly £3.00

I would use the phrase “wake up and smell the coffee”, but the UK’s McCoffee is probably pants too.

SOS?

The general public (and by virtue that you are reading this blog excludes you) are by definition generally dense.

Take for example a recent incident that involved my wife requesting a simple “garlic bread with cheese” dish in The Plaza in Golf del Sur, Tenerife. Now, the menu contained garlic bread, garlic bread with tomatoes and cheeseburgers. My wife’s request for some garlic bread with cheese should not have been beyond the wit of the English woman taking the order…or so we thought.

“Have you had it here before?”, she squealed.

“No, but you have cheese and you have garlic bread and you can do garlic bread with tomatoes…therefore…”, we responded.

“I’ll have to check with the chef, to see if he can do it” replied the English woman.

This was “the sign”. He’s a chef for crying out loud, he can do anything. Well, anything, it seems, except call garlic bread with tomatoes on top bruchetta, but that’s another issue.

A few years ago a good friend introduced me to a phrase that can be used to identify these moments of daftness, cluelessness, call it what you will. SOS – this is the Sign Of Stupidity. You’re best using the shortend version: “the sign”, this way you can use the phrase “that’s the sign” in the company of fellow SOSers without alerting the general public who just are so good at exhibiting the sign.

Here is the original text.

Friday the 13th

Today, being Friday the 13th, I was expecting something unlucky to happen.

Here’s the scenario:

1. My colleague’s flight departs Luton (well, London Luton as it seems to be called, kind of like “Glasgow Prestwick”…) at 1450 – he’s travelling to Glasgow.
2. My flight departs Luton at 1455 – I am travelling to Edinburgh.
3. At 1355, we are both in the same hire car heading towards Luton airport
4. The hire car needs to be re-fuelled and returned to the “hire car return” place.
5. The hire car return place requires a courtesy coach ride back to the terminal – via the Long Term Car Park so this ride takes longer than planned.

My colleague comes up with a brilliant plan: we’ll go straight to the airport and check our bags in. We’ll park the hire car in the “drop off” car park and each run in to the airport individually – this was a great plan that worked a treat. Once checked in, we then re-fuelled the hire car and returned it. We jumped on the courtesy coach that would take us to the terminal…this was at 1430.

For those of you who might be wondering where this story is going: easyJet insist that you are at your departure gate 30 minutes before the flight takes off. Clearly we had both missed this “deadline”. Anyway, the coach was moving and we were minutes away from the terminal. There was a chance we might be able to make it – hey, no bags to check in, we had our boarding passes: surely it’s just a case of dash through security and jump on the plane?

The Italian language is so elegant, so beautiful, so graceful, I could listen to it for hours. I was pleased that we shared the courtesy coach with four Italians: I could listen to their banter for a few minutes. We were slightly amused at their style: one of them went forward to the driver to ask if this bus went to the airport departure terminal. However he did so in a very “Anglo” way: his first words were: “EXCUSE ME”…followed by a barrage of native Italian. Hand gestures of an aircraft taking off were the only clue the bus driver got!

I should point out that I know some Italian and my colleague knows none.

Imagine how quickly we both “learnt” a handful of Italian words when one of them went forward to the driver, “EXCUSE ME”, followed by the Italian for “we’ve left important travel documents, tickets, in the car hire return area, can we go back for them?”

We returned to the car hire return, we checked our watches, 1440. Luckily our Italian friends recovered their missing documents and we were back on the road and at the terminal at 1445. Run: gate 17 for Glasgow, gate 18 for Edinburgh.

We made it with seconds to spare: my colleague’s name was announced as “holding up the flight, please proceed immediately to gate 17”, etc. My flight was still queuing prior to boarding.

I waited in my queue, moving forward when required. I had moved forward by about 10 paces when I heard what sounded like a door alarm going off. Nobody else panicked, so we just remained in our queue. Seven minutes passed; then a gentleman (not from these parts) from easyJet spoke to us. I didn’t understand a word he said, however it culminated in all of us moving through the boarding area and on to the tarmac. Hey, I still have all of my boarding pass – that little bit they tear off: I had it in my grubby hands and I was on the tarmac air-side!

Anyway, it turns out it was a fire alarm. I muttered to another easyJet spokesman that the alarm wasn’t really much cop and that it needs a voice telling us what the alarm sound is for. He looked stunned, they had installed a female voice that exclaimed “Evacuate!” just last week! Incidentally, this said easyJey employee, nice bloke, very funny, communicated using his mobile ‘phone…something that is prohibited for us travellers.

The Glasgow flight had fully boarded, the doors were closed, ready to go etc. The fire alarm grounded everything.

I had boarding pass number 127, which meant I had to wait for 1-30,31-60, 61-90 to board before me. As luck would have it, we had to go through the whole boarding card/passport check thing again, even those passengers who had already lost the tear-off part of their boarding pass. Since I was last in the first time ‘round, I was first in when we snuck back in through gate 17 to get back to gate 18.

Once I had part of my boarding pass torn off, I moved in to the 91 and above boarding area: there were four of us in the boarding area, the other three being in the 1-30 area. There was another problem behind us and nobody joined us for a few minutes. Anyway, the gates to the tarmac opened and an easyJet employee said “come on, let’s go!” So I did, and I was amongst the first five people to get seats, despite having boarding pass number 127. Jackpot.

So whilst today was full of drama, I enjoyed an element of luck. The whole thing only delayed my travel by 30 minutes.

Blogging: does this signify the end of NNTP?

Earlier this year (2004), I wrote an article called Change Imperative.

In that article I discussed how I set about changing my e-mail client and my NNTP newreader tool. It’s not important, but I chose TheBat and XanaNews.

Anyway, since I wrote the article, I’ve pretty much given up reading NNTP newsgroups. Why? Well, I’m getting a similar, but higher quality, more focused “fix” of information from the blogs that I’m subscribed to.

I think that’s the key: “subscribed to” and “focused”. I choose which blogs to subscribe to because their authors offers me a more focused view. Previously, using NNTP I had to filter through a lot of dross in order to locate good content. Indeed, a lot of NNTP groups have their resident “bozos”. Luckily, XanaNews has a “bozo bin” – which is just great for filtering out dross.

Of course, the blogs that I subscribe to are telling me when they’ve been updated (either via an RSS or ATOM feed).

Under the hood, we’re all merrily blogging away, carefully classifying each post using categories. This is very similar to the NNTP grouping hierarchy – folks can choose to subscribe to blogs that offer them, say, Test-Driven Development content. Except, blog content tends to be of higher quality, it’s more focused and bozos are just ignored. Ultimately, I have less to read because of the focused content – in reality I subscribe to just over 100 RSS feeds, so the time-saving balances out.

Does this mean the end of NNTP? Given that I pretty much stopped using NNTP over a period of three months (having been a user for longer than I care to remember), perhaps NNTP has a limited lifespan? I know that I can’t be alone.

Roll on the Semantic Web – the profusion of information sources makes the delivery of a real information aggregator even more essential. I’ve downloaded Haystack . I have soft spot for this kind of tool, perhaps because there’s an XML element (no pun intended) relating to how such a tool might work: XML Topic Maps. I’ll blog about Haystack later.

Now, I do have one concern: we’ve all got RSS aggregators, right? And they periodically go off and update themselves, pulling new RSS content from all our subscriptions. Isn’t all this extra traffic going to slow things down? Suddenly, sites that enjoyed average traffic are suddenly having to serve up MBs worth of RSS content to thousands of subscribers. Bandwidth is going to go through the roof. I’m off to check my stats: I’ll blog about my findings later.

Hire Developers, Not Programmers

Eric Sink has written another fine article. His first article, Make More Mistakes was fantastic – if you’ve not read it, I can strongly recommend it.

In his article about the Hazards of Hiring, Eric must have been sat at the back of one of my presentations: he describes “programmers” and “developers” in exactly the same way I do! Indeed Eric has blogged about it here. Another fine piece of writing.

When necessary, however, I do state that some tasks bring the developer down to the same level as the programmer. For example, when discussing Test-Driven Development (TDD), I believe it is the person at the coal-face who should be writing the programmer tests. Whether a developer writes them, or a programmer writes them, in my opinion is neither here nor there.

However, as for Eric’s thoughts? I agree: I was a programmer in my youth, I just churned out code.

Back then, despite my title (Library Programmer), I became a developer…because the distinction Eric and I agree on wasn’t written down back then. The team I worked with also were developers: we took an open-minded approach to challenges, in many cases turning what might have sounded almost impossible into reality.

After that, I took a position that allowed us to customise our job title to suit what we were doing at the time: enterprise development. We kept a focus on the bleeding edge – everything we did involved XML, it was so cool back then. Nowadays of course, XML has its place, but we don’t have an “XML everywhere” scenario anymore.

Since then, I’ve still kept the word ‘development’ in my title: because I believe that one shouldn’t pick a single track and follow it. It’s important to be able to lend a hand to many tasks without selling yourself as a Jack of all trades, that’s totally different from being a Developer.

Nowadays, I’m a Certified ScrumMaster, with a strong bias towards all things Agile. I can see how Agile could have helped me/us on earlier projects. Equally, somewhat prophetically, can see that Agile will bring my current project in on time and within budget. So much, so I’ve signed up to SellingAgile, Clarke‘s Yahoo group aimed at individuals and developers who need to understand how traditional approaches can be improved by adopting Agile approaches.

Lending a hand to many tasks facilitates getting the job in hand completed through team-work, drive and focus. Developers can do this, they have the mind-set – hire developers, not programmers: good advice, I’ll follow it when I set up my own shop.

How big are your steps?

I re-ran my An Introduction to Test-Driven Development session yesterday…to an exceptionally interactive and responsive audience.

The slides are free to download here (1134k). Feel free to download the Delphi 5-7 code, the Delphi 8 code or the Visual Basic.net code.

I was using DUnit with Delphi 7. I re-iterated the fact that eXtreme Programming and TDD extol the virtues of “doing the simplest thing that could possibly work”.

Read more about the session here.

Tied in with this debate was a lengthy discussion about the concept of “small steps”.

Early on in my session I took lots of really small steps, panicking the audience slightly as they wondered how long it would take me to get from 1 to 2000 in Roman numerals (I was applying TDD to a Roman numeral conversion class).

TDD promotes the notion of taking plenty of small steps, gradually taking slightly larger steps as your confidence increases. However, the instant you step over your mark and take a step that’s too large, you should revert to taking smaller steps until to regain your confidence.

The size of TDD steps is important and it’s one that you have to be happy with yourself: a “small step” that works for you might be a large step to somebody else. It’s about finding a happy medium – go out and try TDD for yourself, make the mistakes that I did, take large steps, try to do too much in a method and test. It’ll all come out in the wash and eventually as Erich Gamma said, you’ll be “test infected

Want to learn more about TDD? These books are highly recommended:

Test-Driven Development in Microsoft .net
Test-Driven Development: a practical guide

Test-Driven Development: a practical guide: Reviewed here.

Test-Driven Development by example

Doing “the simplest thing”

I re-ran my An Introduction to Test-Driven Development session yesterday…to an exceptionally interactive and responsive audience. The slides are free to download here (1134k).

I was using DUnit with Delphi 7. I re-iterated the fact that eXtreme Programming and TDD extol the virtues of “doing the simplest thing that could possibly work”.

About half way through my session (which could easily have run on to 2 hours had dinner not got in the way!) a well-respected friend, Adrian, raised his hand and said: “Building a class isn’t the simplest thing!”

I had built a class that converts integers into Roman numerals. The first step was to add a method, toRoman, that took an integer and returned nothing. The second step was to have it return ‘I’ when ‘1’ was passed in as a parameter. Feel free to download the Delphi 5-7 code, the Delphi 8 code or the Visual Basic.net code.

Of course, he was right, building a class that has one method returning the letter ‘I’ is overkill. It’s not the simplest thing. Everybody knows that the simplest thing would have been a simple function with no class wrapper and no hint of object-orientation.

I realised that what I had done was the simplest thing the could possibly work in this xUnit testing framework. It wasn’t the simplest thing that might get the job done.

Similarly, in an earlier re-run of the same session, Andy, pointed out that my idea of the simplest thing perhaps wasn’t his. And herein lies one of TDD’s ironic facets: whilst TDD provides us with a great understanding of “how” a piece of code should be invoked, thus increasing the chance that somebody other than the original developer/programmer will be able to understand it, TDD can be an emotive process.

TDD will help you as far as your “under the bus count” goes, it will give you the most accurate form of documentation that you’ll ever have for your code base, but it won’t help you ring fence or blinker your programmers in to writing code the in the same way. But, since that’s not something any of us should relish, Borg-like programmers churning out the identical code for the same problem, it shouldn’t put you off TDD.

I’ve just googled under the bus count only to realise that it’s not defined anywhere.

I’m using the phrase to mean:

    the number of people on a project who need to be run over by a bus, that will then make the project fail or incur a severe cost/time delay

If you are on a project with a team of one: yourself, then the under the bus count is one. If one person, you, is run over by a bus, the project fails, or meets almost insurmountable cost/delays. Of course, if it’s just you on the project team, you probably don’t need to worry about who’s going to be picking up the project after you’re gone!

Ideally, you should try to drive your under the bus count upwards, away from one. There should be no single point of failure, no empire-builders.

Go practice TDD, trust me, it works. It heralds a new confidence that will allow you to improve (refactor) huge chunks of your code base that you’d probably never want to touch citing “if it a’int broke don’t touch/fix it”…when you know perfectly well that the internal design is like a house of cards and won’t survive the next bout of customer change requests. It improves the quality of your life…there, what else goes this far?

Want to learn more about TDD? These books are highly recommended:

Test-Driven Development in Microsoft .net
Test-Driven Development: a practical guide

Test-Driven Development: a practical guide: Reviewed here.

Test-Driven Development by example

Craig Murphy: author, blogger, community evangelist, developer, speaker, runner