February 28, 2003
Mad in Madrid

I'm being packed off to Madrid next work, to help a client patch something into their software. Which I've never seen, so this might be a piece of cake, or it might be a nightmare.

Naturally, they want estimates. :-) I'm not giving them any. Not yet, anyway.

I wonder if I'll have any time to see anything of Madrid? I've never been before. Any suggestions? I'm flying out on Sunday night, and coming back on Friday at the latest. Hotel looks nice, anyway.

Note to my imaginary readers: I have no idea what 'net access I'll have, if any, so don't be surprised if it goes a bit quiet next week.

Update: Aside from the suggestions you see below, my mate Jay recommended the Prado. I'm a big fan of Goya, and The Naked Maja and Saturn Devouring His Son are among my favourites, so this is a must. If I'm out of the office in time, that is. (Jay introduced to to Python, so I'm eternally in his debt.)

Steve suggested that I shouldn't go out drinking before ten, or I'll find myself alone. Sigh. I'm usually in bed by ten!

Posted to Java by Simon Brunning at 01:54 PM
February 27, 2003
Saddam and George

Iraq, North Korea and France.

Posted to Funny by Simon Brunning at 12:36 PM
February 25, 2003
And you thought drivers with mobile philes were bad news

Cars with TVs. Madness, sheer madness.

Via techdirt.

Posted to The Big Room by Simon Brunning at 02:23 PM
Doom and gloom

Hopes dashed for UK IT jobs recovery. Oh dear, oh dear, oh dear.

Posted to Business by Simon Brunning at 02:06 PM
February 21, 2003
Sun's marketing department are losing the plot

Why on Earth are Sun using Lee Hurst (a relatively famous, and indeed relatively funny comedian) in this advert (found attached to this week's Computer Weekly? There is, so far as I can see, nothing funny about this at all - they just used him as a model.

Or am I mistaken? Is it not him at all?

Posted to Funny by Simon Brunning at 03:32 PM
Why Bush doesn't want more inspections

Schrödinger’s Iraq

If you view Iraq in a classical Newtonian framework, then you must concede that they either do or do not have weapons of mass destruction. It is this narrow mindset that causes such confusion in the uninformed.

But, over President’s Day weekend at Camp David, I delved into the collected writings of Erwin Schrödinger, and now have no recourse but to conclude that Saddam both has and does not have weapons of mass destruction.

Via online.effbot.org.

Posted to Funny by Simon Brunning at 01:21 PM
Robert Mugabe

It's Robert Mugabe's 79th birthday today. Happy, birthday, Bob.

Now hurry up and die, you fucker.

What the French are up to, hosting a summit for a bunch of murderous old African dictators, I can't begin to imagine.

Posted to The Big Room by Simon Brunning at 10:50 AM
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
February 17, 2003
Happy birthday, Steve!

Happy birthday, Steve!

Posted to Apropos of nothing by Simon Brunning at 01:55 PM
The UN's Abyssinia?

I don't want to get into a discussion about whether or not we should invade Iraq. For the record, I don't think we should act without explicit UN backing, but those who think otherwise have valid points of view.

Steve is right too, though - the US and UK don't look like they are even trying to win hearts and minds.

The angle which I haven't seen explored is the medium to long term effect on the UN. It seems to me that we might be looking at the beginning of the end.

If the French veto military action, the US will go it pretty much alone if they have to. (They'll probably have British support, though Blair might, just might, take notice of the pretty much overwhelming public opposition.) This will leave the UN looking pretty irrelevant. League of Nations, anybody?

Of course, one has to wonder whether it's appropriate for France and Britain to have a UN veto. Russia, China, and the US, the superpowers, I can see - the UN would be meaningless without their support, so it's necessary to ensure that it never adversely affects their interests. But Britain and France's positions on the Permanent Security Council is a historical anomaly, reflecting those nation's pre WWII power.

Posted to The Big Room by Simon Brunning at 01:54 PM
February 14, 2003
The Python 2.3 Method Resolution Order

The Python 2.3 Method Resolution Order. Everything you wanted to know about Python's implementation of multiple inheritance, but were afraid to ask.

Posted to Python by Simon Brunning at 05:55 PM
Why Nerds are Unpopular

Why Nerds are Unpopular

Very interesting and, I think, insightful. The idea had occurred to me that nerds are unpopular because they are too busy with, well, more interesting stuff to play the games that need to be played in order to be part of the social A-list. Paul Graham looks much more deeply into this.

Perhaps the most important thing to take away from this is this: If you have kids of your own, remember how hellish it was, remember what you went through, and what your children might be going through now. Talk to them about it, tell them what it was like for you at school, tell them that it really isn't like that in the world outside school.

Also, bear in mind that they might be on the other side of the fence - they might be the ones giving other children a hard time. If they are, that doesn't make them bad people - most children do this to some extent. But if you can point out to them the error of their ways, you'll be saving them some guilt in later life.

Via Tao of the Machine

Posted to Apropos of nothing by Simon Brunning at 05:53 PM
February 07, 2003
Typing: Safety causes Bugs

Alan Green: Typing: Safety causes Bugs.

Hmmm. Well, I've been using a mixture of Python and Java for some time now, so here is my personal conjecture:

I don't think that the extra typing required by 'safety' features actually cause bugs - they just don't stop them. Or rather, the ones that they stop are balanced by the additional ones that they introduce. For every time Java saves me from using a String as an int, I'll get a runtime error casting something around in order to get to a method that I know damn well it has, even if the bloody compiler doesn't.

In Python, if an object has a method, I can just call it. Thank you. If this isn't going to work, I'll find out while testing.

Ah yes, testing. That's where you stop bugs. Static typing might have pointed you at a few bugs a little earlier than your testing would have, but your testing would have picked them up soon enough. And if you don't test properly, your stuff is going to be buggy anyway.

The so called 'safety' features are only going to catch a subset of problems, and you would have found these problems eventually anyway. So if they add too much work at the coding stage, they are a net time loss.

Cameron Laird and Kathryn Soraiz's Syntax Checking the Scripting Way is interesting on this. And I'm reminded of a quotation:

The static people talk about rigorously enforced interfaces, correctness proofs, contracts, etc. The dynamic people talk about rigorously enforced testing and say that types only catch a small portion of possible errors. The static people retort that they don't trust tests to cover everything or not have bugs and why write tests for stuff the compiler should test for you, so you shouldn't rely on only tests, and besides static types don't catch a small portion, but a large portion of errors. The dynamic people say no program or test is perfect and static typing is not worth the cost in language complexity and design difficulty for the gain in eliminating a few tests that would have been easy to write anyway, since static types catch a small portion of errors, not a large portion. The static people say static types don't add that much language complexity, and it's not design "difficulty" but an essential part of the process, and they catch a large portion, not a small portion. The dynamic people say they add enormous complexity, and they catch a small portion, and point out that the static people have bad breath. The static people assert that the dynamic people must be too stupid to cope with a real language and rigorous requirements, and are ugly besides.

This is when both sides start throwing rocks.

Quinn Dunkan, 13 Jul 2001

Posted to Software development by Simon Brunning at 03:14 PM
Shipping the prototype

Shipping the prototype - Let's promote scripting languages to the status they deserve

My point is that languages like Python, but also Perl, Ruby, and JavaScript/JScript/ActionScript/EcmaScript, are strategic in ways that we don't yet fully acknowledge.

Via The Daily Python URL.

Posted to Python by Simon Brunning at 10:58 AM
February 06, 2003
Interviews with Guido van Rossum

Links to artima.com's A Conversation with Guido van Rossum interview have been floating all over the blogsphere, but I haven't seen any links to this Guido van Rossum interview.

The interview is part of the pre-publicity for the Python UK Conference 2003.

Posted to Python by Simon Brunning at 05:41 PM
Java 1.5 features

An interesting set of stuff:

It looks like Java is reacting to the competition!

Of course, type-safe enumerations in Java are already pretty easy once you know how to do them, but it isn't obvious.

Via SlashDot.

Posted to Java by Simon Brunning at 05:17 PM
February 05, 2003
Global Potato News

I just don't know how I ever managed to live without Global Potato News.

Via Nick Jordan.

Posted to Funny by Simon Brunning at 05:16 PM
Fine-tuning garbage collection

Fine-tuning Java garbage collection performance

More than you need to know. Well, more than I need to know, for sure. Bookmarking for future reference...

Posted to Java by Simon Brunning at 01:26 PM
Python Programmer Weblogs

Python Programmer Weblogs is an online aggregator, feeding off thirty or so Python oriented weblogs, including mine.

Might this be the beginnings of a Python version of java.blogs? The software that it runs on, Spycyroll, now has a SourceForge project.

Posted to Python by Simon Brunning at 12:22 PM
Dave Thomas has a blog

Dave Thomas (co-author of The Pragmatic Programmer) has a new weblog - PragDave. One for the aggregator!

If you've not read The Pragmatic Programmer, you should. Well, if you are a programmer, that is. Not a lot in it for accountants, for example. (Or maybe there is - 'No broken windows', anybody? Still, there is certainly a lot of techie stuff in there.)

Via Ned Batchelder.

Posted to Blogs by Simon Brunning at 12:07 PM
February 04, 2003
U.N orders Wonka to submit to Chocolate Factory Inspections

U.N orders Wonka to submit to Chocolate Factory Inspections

When we found evidence that Wonka was developing so-called 'everlasting gobstopper' technology—'the mother of all gobstoppers'—we knew it was time to act.

Via Neil Gaiman.

Posted to Funny by Simon Brunning at 03:29 PM
I am 71% geek

You're on a particularly useless cusp known as "being a bit of a nerd". Nobody really trusts what you say about computers, but at the same time, they keep asking you really annoying questions that they could answer for themselves if they just spent five minutes thinking about it. You also have to spend a lot of time not having a life in order to keep your slightly inadequate skills up to date.

Yup, that's me alright.

Find out how geeky you are with the Geek-o-meter.

71% way my result giving honest answers. It's pretty easy to go higher...

Update: Also:



I am free verse,
and know the rules,
and use them -
when they suit me,
which admittedly
tends not to be the case.
Authority,
tradition, laws;
very much not
my sort
of thing,
I fear.
Perhaps, on occasion,
I go too far in the opposite direction,
and shun the accepted merely because it's accepted,
accepting its opposite merely because it isn't;
but since it's clearly
better that than
being normal;
well,
why
not?
What Poetry Form Are You?

And:

Which OS are You?
Which OS are You?

Posted to Funny by Simon Brunning at 02:09 PM
JSR-666: Programmability Enhancements

JSR-666: Programmability Enhancements.

Is this a conscious reworking of Python's PEP 666: Reject Foolish Indentation?

Via Charles Miller.

Posted to Funny by Simon Brunning at 01:47 PM
VSS for Eclipse - updated

Marcus Nylander's VSS Plugin for Eclipse has been upgraded to to COM automation - it's much faster now.

Funnily enough, I've had to do some VSS automation myself, in Python. VSS's object model is a bit nasty, but it's easy enough to write an OO wrapper while clutching the documentation. Then you can use the wrapper, and forget all about the ugly stuff underneath.

I'll probably clean this VSS stuff up and post it at some point.

Posted to Java by Simon Brunning at 10:03 AM
The effbot is no longer a Python developer

I'm no longer a python developer

A real shame, this. He's been a real contributer to Python. Possible his most high profile contribution is Python's new (at 2.0) unicode regular expression module, which I use every day. (Well, OK, most days.) But this is far from being his only contribution.

I don't see him much on c.l.py any more, either, which is a shame. He's helped me out in the past. I'm not surprised, though - the volume of postings on c.l.py is huge these days.

Oh, and if you are a Python developer and don't yet have The Python Standard Library, I recommend it. When using a new module for the first time, I find a simple example or two a much more effective quick start than the docs, good though they are, and Python Standard Library gives you exactly this.

Posted to Python by Simon Brunning at 09:25 AM
RPG's MONITOR opcode

RPG doesn't have anything like as powerful as Exception handling, but it is ironic that for many years the iSeries' scripting language, CL, has offered a more powerful error handling via its MONMSG command than RPG offered.

Well, RPG is finally being dragged kicking and screaming onto the eighties. Power of MONITOR Opcode shows you how to make use of RPG's new

Posted to iSeries by Simon Brunning at 09:07 AM
The real threat to London's Theaterland

The size of American bottoms.

Well, made me laugh, anyway.

Posted to Funny by Simon Brunning at 08:57 AM