February 20, 2003
Say it loud, single and proud

Reader, don't marry him

True love is a wonderful thing, but more and more people are finding that other things are wonderful, too, such as self-sufficiency, independence and not twisting ourselves in knots straining to hear the ticking of our biological clocks.

Yeah, say it, brother! (Sister? Hadley? Who knows?)

Still, I must say that I might be cheating a little. I might be hearing the old biological clock myself if I hadn't already had children.

Via londonmark.

Posted to Rants by Simon Brunning at 06:03 PM
Homeland Security Threat Monitor

The Homeland Security Threat Monitor made me smile, until I realised that it's not like the Elvis Detector. Oh no, this one is for real. Sigh.

Via dutchbint.

Posted to Software by Simon Brunning at 03:58 PM
PEP 308 - run away, run away!

Over the last couple of weeks there has been the Mother and Father of all debates (degenerating into ranting, trolling, and personal abuse at times) on c.l.py regarding the possible introduction of a ternary operator to Python. Guido is happy to add one, or not, but he wants the community's consensus of opinion for once and for all - should there be a ternary operator in Python, and if so, what should its syntax be?

I've not really used anything like the ternary operator. Java has one, but I don't use it, and my cow orkers don't know what it is, so they don't either. So, I'd be happier doing without it.

But if we must have one, then I'd prefer one of the more Pythonic syntaxes. Let's use words, not punctuation! Of all of them, I dislike:

result = (if condition then expression1 else expression2)

least. It has a slightly list comprehension like feel to it, and I think that its meaning would be fairly obvious even to someone who had never even heard of the construct, which is a sign of good syntax, I think. But I gather that there is some problem parsing this. Ho hum...

Update: Turns out that Mark does know what the ternary operator is, and uses it, but didn't know it by that name. Sigh.

Update: Guido has spoken. There will be no ternary operator in Python.

Seven Deadly Sins of Introductory Programming Language Design

Seven Deadly Sins of Introductory Programming Language Design (PDF)

An interesting read this, I thought. Most I agree with, some I don't.

It occurred to me that a few of the issues raised might point towards ways of improving Python as an introductory language. (I'm not talking about Java here 'cos I consider Java to be totally inappropriate for beginners.)

  • A single numeric type. Python is already moving in this direction. Slowly. Kinda-sorta. Python's two integer types (integers and long integers) are already pretty indistinguishable from a programmers point of view. The paper suggests that the single type be a rational. The addition of a rational type has been discussed on python-dev, but I don't think that there are any immediate plans to go ahead. But even if there, I just can't see Python abandoning integers and floats. A single type would make life rather easier for beginners, but Python is a real world tool. Anything which would help the beginner at the expense of crippling the experienced just wouldn't fit.

  • A single non-terminating loop construct. I do like the idea of something like a loop statement. The standard idiom for this in Python is while 1:, which I can see a beginner mistaking for something happening once. Perhaps better these days would be while True:, but again, I can see a beginner thinking - while what is true?

  • Zero offsetting. I can certainly see the fact that list[1] refers to the 2nd item of a list is likely to be a problem for a newcomer. But what to do about it? Apart from the practical impossibility of changing something like this in an existing language, (can you imagine the furore on c.l.py if this was suggested!), it's also the case that in practise this is a more convenient notation. If beginners started off with 1 offsetting, and had to move to zero offsetting later, well, that's even harder. And I speak from experience here, coming from RPG.

On reflection, it seems that none of these would have any chance of making it into Python. Only the non-terminating loop construct would be reasonably backward compatible, and while while True: is ugly, it works. Ah well...

One thing I didn't agree with, (as you might expect from a Python fan) is the paper's assertion that using indentation to specify scope is an example of 'detrimental cleverness'. It refers to 'useful redundancy' between delimiters and indentation. I don't see it as useful redundancy, I see it as potentially confusing. If the two don't match, which is correct (in terms of the programmers intention)? Redundancy is almost always A Bad Thing in code, and having both delimiters and indentation is no exception.

What I don't see, though, is any indication that all this is anything more than personal opinion. Informed opinion, yes, but opinion nevertheless. Real useability studies would be good.

Via iamcal.

Posted to Software development by Simon Brunning at 01:29 PM
At least Blair has succeeded in uniting the Catholic and Anglican churches...

Archbishops question Blair's claim to 'moral legitimacy' of invasion

I wonder if The Archbishop of Canterbury, Rowan Williams makes fun of the Catholic Archbishop of Westminster, Cormac Murphy O'Connor. "I've got 70 million Anglicans across the world. You've only got four million. Nyaaaaah!"

Posted to The Big Room by Simon Brunning at 12:21 PM
IBM actually trying to sell the '400 for a change?

IBM pitches eServer iSeries to wider user base

The IBM eServer iSeries platform, formerly known as AS/400, is very highly regarded by those who work with it day in and day out, says The Register.

Damn right it is. I'm one of them. The iSeries (still known as the AS/400), is a good box for business. Not exciting, not even particularly interesting, but solid, capable, reliable, predictable, cost effective, simple to administer, and scalable.

But for some reason, IBM has never made much of a noise about them. Might this change?

Posted to iSeries by Simon Brunning at 12:14 PM