May 30, 2003
I'm off to pick up the girls now

Little or no posting next week, as I'll be at my sister's. The week after that, I'll be back in Amsterdam for somewhere between two and four days. Hopefully in a better hotel than last time.

Later...

Posted to Apropos of nothing by Simon Brunning at 04:47 PM
Racing game

Greyblog pointed me at RC Rally. This is basically a prettied up version of Super R.C. Pro-Am, an old Gameboy game I used to love.

Update: And some lovely Java games, via The Ultimate Insult.

Posted to Toys and games by Simon Brunning at 02:06 PM
XIII

What a great idea! Ubi Soft's upcoming shooter, XIII, seeks to look like a comic, rather than than trying to look photo-realistic. It looks fantastic.

Posted to Toys and games by Simon Brunning at 01:21 PM
Too hot...

And it's still May.

The Yellow Face, it burns us!

Posted to Apropos of nothing by Simon Brunning at 01:07 PM
The Framley Examiner

The Framley Examiner

Via long passage.

Posted to Funny by Simon Brunning at 12:00 PM
Has the World gone mad?

No Thong In School.

Via Little Blue Fox, whose comments could be my own. (I would point to her comments, but her her permalinks are broken.)

Posted to The Big Room by Simon Brunning at 11:08 AM
What is an object?

A post over at c.l.py steered me towards this - Building user interfaces for object-oriented systems.

It has some interesting, if perhaps somewhat controversial, things to say on the nature of object orientation.

You may have read in a book somewhere that an object is a data structure of some sort combined with a set of functions, called methods, that manipulate that data structure. Balderdash! Poppycock! First and foremost, an object is a collection of capabilities. Very true, this. The important thing about an object is what is does, not what it has. The latter is an implementation matter.

Classes are irrelevant -- they're just a convenience provided for the compiler. Also true. This was pointed out to me while looking at JavaScript recently. Its rather, uh, idiosyncratic OO model does away with 'classes' as such. Instead, you just define a construction function, and add methods to its prototype. Look, Ma, no classes. (I don't really like this approach much - it makes subclassing rather clumsy if nothing else. But it does work after a fashion.)

All data is private. Period. (This rule applies to all implementation details, not just the data.) get and set functions are evil. (They're just elaborate ways to make the data public.) I like Python's approach here. No data is really private (see The principle of least privilege for why), but you can intercept any references to this data if you want. So, you just refer to object.attribute, and it's the object's business whether that just accesses the data attribute or calls a method. No need for get and set methods here.

All objects must provide their own UI. What? Is he serious? The presentation object should always be separate from the business object! Some business objects don't need any presentation layer, and some may need several. (The persistence layer should also be separate.)

Posted to Software development by Simon Brunning at 10:43 AM
Unloaded

I seem to be the only person on the face of the planet not to have seen The Matrix: Reloaded yet.

I'm not sure when I'll get the chance, either - I have the girls this weekend, and next week I'm helping my sister out with her two girls, 'cos she's having a trivial but unpleasant little operation, and won't be up to dealing with the force of nature that is Lucy Brunning (my youngest niece).

Shhh! Don't tell me what happens!

Posted to Apropos of nothing by Simon Brunning at 09:29 AM
Summer's here...

And small tight vests seem to be the fashion for young ladies this year. Marvellous!

Posted to Apropos of nothing by Simon Brunning at 09:05 AM
May 28, 2003
Writing good exceptions

Cameron Laird on how to use exceptions - Writing good exceptions. Not how to use them in terms of syntax, but rather in terms of semantics. The examples are in Python, but the advice is applicable to any language supporting exceptions.

We have a lot of classes in one of my current Java projects (written by a cow orker) in which every method has a catch-all exception handler which logs any unexpected error, and then tries to keep on going. Me, I prefer the RuntimeException approach.

Posted to Software development by Simon Brunning at 01:45 PM
May 27, 2003
The arse end of nowhere

I'm in Amsterdam again. Unfortunately, Amsterdam's hotels were incredibly busy, and the hotels near my client were all fully booked. So, I've ended up on the wrong side of the airport, here. Sigh.

Naturally, it sounds OK according to the website, but it's their website, so it would. In fact, the hotel is stuck in the middle of a huge office complex - I've got a 30 foot Microsoft logo opposite my window, for Christ's sake!

There is nothing at all within walking distance, so I'll probably just end up in the hotel bar, drinking weak lager at £4 the 3/4 pint. Glamorous, this traveling business, no?

Posted to On the road by Simon Brunning at 06:07 PM
Rude software

Rude software.

Yeah, bastards!

One more thing software which keeps on stubbornly insisting on your registering it. I'll register if I damn well feel like it!

Posted to Software by Simon Brunning at 05:54 PM
Is it a Screensaver, or is it art?

MVR 3D have some incredible screensavers for download.

Naturally, the Matrix Reloaded screensaver is the one which jumps out at you, but on balance, I think that I prefer the other three. Whack on a Jimmy Giuffre MP3 or two on at the same time, and this is just about as mellow as you can get without chemical assistance.

Beware, though - you'll need a monster PC to run this lot. I've got one. ;-)

Posted to Toys and games by Simon Brunning at 12:34 PM
Like a bull in a china shop

Well, a bull in an antiques shop, then.

Is my calendar out of wack, or something? Is it April the 1st?

Is this sort of thing common in Lancaster?

Posted to Funny by Simon Brunning at 12:09 PM
Write A Better Weblog

Write A Better Weblog

Offer something new, Mr. Mahoney suggests. So what do I do? Link to him.

Great writing can’t be taught, but bad writing can be avoided.

Well worth a read, if you blog. Certainly, I need to try to add more content, and not just to link to stuff all the time. After all, it's hardly as if I don't have opinions...

Sadly missed - How to Write Like A Wanker. Hopefully the site will be fixed at some point. Till then, you can read it via Goolge's cache.

Via Null Pointer.

Posted to Blogs by Simon Brunning at 12:04 PM
May 23, 2003
International man of mystery

Off to Amsterdam again on Monday night, and for a couple of days a week for the next couple of months or so.

I'll be on-line, but probably fairly busy, so not to much posting. But then, I've not been posting all that much recently anyway, have I?

Later...

Posted to On the road by Simon Brunning at 04:47 PM
May 22, 2003
'Point-and-click' programming

Code diagrams enable 'point-and-click' programming. Yeah, right.

Anthony has been thinking about this sort of thing (see his Visual Programming posts), but I remain profoundly sceptical.

Posted to Software development by Simon Brunning at 10:43 AM
May 21, 2003
Puncturing the pompous

Someone buy this kid a lollipop. Or whatever it is kids are into these days - crack cocaine?

Posted to Funny by Simon Brunning at 04:30 PM
May 19, 2003
Guilt

I'm pretty shaken today.

I was on the way home from my sister's barbecue yesterday, and I was sitting on the platform at Three Bridges station. A young woman came onto the platform, and used the telephone just along from the bench where I was sitting.

I noticed that she was crying bitterly during her conversation, which went on for about five minutes. Of course, this isn't the first time I've seen someone crying in public, but she seemed unusually distressed. I thought about approaching her, seeing if she was OK. But I didn't.

Looking back, I'm not entirely sure why. Partly I was concerned that she'd think I was some dirty old man trying to take advantage of her distress - as I said, she was young, and pretty. Mostly, though, if I'm honest with myself, I think that it was just basic English reticence, and a sense that it was none of my business.

She moved off down the platform. When the train came in, she stood as if waiting for it, but didn't board - she walked away from the edge to the centre of the platform, not exactly crying now, but gasping air. I got on the train, and it set off towards London.

The train stopped at Gatwick, and the power went out. Shortly afterwards, it was announced that this was due to a passenger fatality at Three Bridges. My blood ran cold.

I'm almost certain that it was the girl that I'd seen.

Since then, the "what if" scenarios have been whirring around my head ceaselessly. Had I spoken to her, would it have made any difference? Probably not. But I could have bloody tried. What would it have cost me? I feel like a coward.

I will never, never walk away from someone in obvious distress ever again. You shouldn't, either - it is your business. We are all responsible for one another.

Update 22nd May, 10:15 a.m.: The girl didn't die. Wow - I feel a lot better now. Thanks to my brother-in-law for pointing this out...

Posted to Apropos of nothing by Simon Brunning at 10:20 AM
May 16, 2003
Escher Web Sketch

Rather groovy Java applet - The Escher Web Sketch.

Via Wry Writer.

Posted to Java by Simon Brunning at 02:53 PM
How to write a main() function in Python

Python main() functions, from the BDFL himself.

Most of my scripts have a main() function, looking pretty much like Guido's first example.

I particulary like Guido's main(argv=None) suggestion - I'll be using this in future.

Posted to Python by Simon Brunning at 01:36 PM
May 14, 2003
Coming home today

I really like Amsterdam, I must say. The city is beautiful, clean and easy to get around. The natives are friendly and speak ridiculously good English.

Workwise, pretty much the same goes. Nice office, nice people. The work is pretty challenging, which is also good. Since I'm likely to be spending a fair amount of time over here over the next few weeks, it's really a bit of luck that I like it. :-)

I managed to get out for dinner last night - a very nice steak at a place called "El" something-or-other, near the Leidseplein. This probably isn't enough to help anyone track the place down, but hey, I'm a blogger, not a restaurant reviewer. A couple of beers, doing my best to ignore the football, and bed. Nice. (I'm getting old, aren't I?)

Posted to On the road by Simon Brunning at 01:25 PM
May 13, 2003
Made it to Amsterdam in one piece...

I forgot to leave my Swiss army knife at home before setting off for the airport, so I sent it home by post. Other than that, no major mishaps.

I did leave the house at ten to four this morning, so I think a little incompetence is understandable. Shame I don't usually have the excuse...

Very busy - more tomorrow, perhaps.

Posted to On the road by Simon Brunning at 04:58 PM
May 09, 2003
Another day, another language...

I'm off to Amsterdam next week to support one of our clients, who have a lot of JavaScript. Which I've never used.

Anyone know a good tutorial? ;-)

I've just got a funky new laptop, so I should be online OK. We'll see.

Posted to On the road by Simon Brunning at 04:48 PM
May 08, 2003
Strong Typing vs. Strong Testing

Bruce Eckel (of Thinking in Java fame) writes about why static typing is pretty much redundant if you are unit testing properly - Strong Typing vs. Strong Testing.

It got to be said, though, that statically typed languages have one big advantage over dynamically typed ones - their GUIs can provide much better auto-completion. This was mentioned on c.l.py recently, but I'm not sure that I agree with Martin's view that this can be fixed. Imagine that you'd entered this:

def myFunction(anArgument):
    anArgument.

At this point, which methods can your IDE suggest? Pretty much none at all, I'd say.

Not, I hasten to add, that I think that this advantage of static typing overrides the advantages that dynamic typing can give you - see Bruce's post for that side of the story, expressed rather better that I ever could hope to do.

Posted to Python by Simon Brunning at 01:13 PM
May 02, 2003
Asynchronous generators

Garth Kidd's Spawned Generators - what a good idea! All the advantages of generators and threads in one easy-to-use class.

Two great tastes that taste great together!

Posted to Python by Simon Brunning at 01:44 PM
May 01, 2003
Choosy, or fussy?

El Presidente is not an easy man to please.

We were discussing today whether there is in fact any room between slap-dash and over-engineered in his book. There probably is a sweet spot, but it's tiny.

Mark suggested that it's a bit like shower controls. You know - the temperature control usually has 90° of play or more. Why is it, then, that the range of temperatures suitable for organic life are usually covered by 1° of that?

Hmmm. Tracey then pointed out a car's clutch pedal as another example of this. Useless over all but a tiny part of its movement.

She then told us that the first example that came to her mind was, uh, anatomical. She refused to elaborate. I honestly haven't a clue as to what she might have been referring to. Any suggestions?

Posted to Apropos of nothing by Simon Brunning at 05:20 PM
Note to self...

When eating a Kelly's take-away curry for lunch, don't get any on your fingers. If you do, don't rub your eyes thereafter.

Posted to Apropos of nothing by Simon Brunning at 01:54 PM
Standard libraries - Java vs. Python

"The main thing which would keep it there [Java] for me would be the APIs (both Sun's APIs and open source APIs)."

Anthony has mentioned Java's library as a reason for choosing Java before. But coming from the Python side, I can't see what Sun's Java library has that the Python Standard Library doesn't.

What am I missing?

Posted to Python by Simon Brunning at 01:48 PM