22 March 2008

I want more, and I want it now

Meal times with a 3-year-old can be quite an exercise in negotiation. I know how much he's going to eat on average, so I offer a portion which is likely to fulfill the twin goals of happy customer, and no waste.

- "But I want a big portion!!"

- "When you've eaten that, you can have more - look, there's heaps in the pot. You can have as much as you can eat, I just don't want wasted food left on your plate."

- "No but I want more now!!"

And suddenly, I remember having this conversation in a completely different context. Maybe he'll be a business analyst ...

08 March 2008

Anger for Free

Our internet provider is free.fr and our freebox died recently. I called free, a human replied quickly, and after I explained the situation, they assured me

We want to fix this as quickly as possible so we'll send you a new (upgraded) freebox by courier tomorrow morning and also give you a month's credit on your account to compensate for the inconvenience. The new box will work out-of-the-box (if you'll pardon the pun), but in case you have any trouble getting it going we'll send a technician to you within a day to fix anything that might have gone wrong. Thank you for bringing this issue to our attention and we hope you will continue to enjoy surfing with us!

*** Only Joking !!!

In fact, it took about twenty calls before reaching a human, and the indignity of it, each time it took about two minutes on their 34c/min line to reach the point where their computer voice told me there was no human available at the moment.

When Sabrina finally got through (I had given up), they needed the password to our client area on their own site so they could order a freebox upgrade on our behalf - which would take about two weeks to "configure" and deliver.

At the same time, I got a suggestion from their email support that I borrow a power adapter from a neighbour and see if that fixes the problem - and please provide the name and telephone number of said neighbour when you're done.

Three weeks later, I called again, and politely inquired whether I would be seeing any freeboxes coming my way in the foreseeable future - it was supposed to take two weeks, after all. "Oh, no, sir, we don't give timelines for delivering the freebox. The person who told you two weeks was in error".

I have to say, we've been using freetelecom for about three years now, and their service worked flawlessly for the whole of that time. As far as I can tell from articles and forums on the topic, they are one of the best providers in France. But this is the end for me. Their goodwill has a half-life of about one day, and it's so miniscule now it's not even homeopathic.

If anyone has an ISP recommendation, I would love to hear it. Especially if it comes with uptime guarantees, even if it has to cost more ...

07 March 2008

Fundamentals of OO (aka FOO)

Whenever I happen upon a beginner's introduction to OOP (why this happens to me is another story altogether), there's usually a long-winded account of how a Cat is a kind of Mammal, and so is a Dog, and a Mammal is an Animal, blah blah blah.

OO is basically about types, and types came from ... guess where ... Typing!! Ladies and Gentlemen, this is not a joke!! Gutenberg (the person, not the free online book project), credited with the invention of Movable Type (the printing system, not the blogging software, we're talking 15th century here), used Types for creating printed representations - instances, one might say - of letters.

So there you have it, OO in a nutshell, you have a Type, and from it you create as many instances as you desire. Object Oriented Programming is the direct descendant of the humble TypeWriter. The Type is not the instance, and vice-versa, although the characteristics of the Type evidently determine the characteristics of the instance.

Please unlearn everything you might have read about Cats and Dogs and Mammals, it's BS.

(picture under GFDL, borrowed from Wikipedia, thanks to Daniel Ullrich)

06 March 2008

Tomcat Deploys My Application Twice !

I drop my foo.war under webapps, and from the logs I see objects from my Spring application context getting loaded two times. What's causing this double deployment?

After much head-scratching I realised that my foo app was getting deployed as the root context (under "/"), as well as under "/foo". And in our Tomcat's server.xml we had a little

  <Context path=""
              docBase="/path_to_tomcat/webapps/foo"
              reloadable="true" 
              crossContext="true"> 
  </Context>

We dumped this Context entry, renamed foo.war to ROOT.war (caps necessary), and our double application startup disappeared.

Tomcat was dutifully doing its auto-deploy magic with its webapps directory, and then dutifully deploying any Contexts it found in its server.xml. If you really need a Context in your server.xml, make sure its docBase isn't under your Tomcat's webapps directory.

A simple solution, but it took us a while to fix, and according to my friend google lots of other people have had similar symptoms and worse trouble fixing them.

HTH :))