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.
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.
And it's still May.
The Yellow Face, it burns us!
Via long passage.
Via Little Blue Fox, whose comments could be my own. (I would point to her comments, but her her permalinks are broken.)
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.
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.)
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!
And small tight vests seem to be the fashion for young ladies this year. Marvellous!
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.
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?
One more thing software which keeps on stubbornly insisting on your registering it. I'll register if I damn well feel like it!
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. ;-)
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?
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...
Via Null Pointer.
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?
Code diagrams enable 'point-and-click' programming. Yeah, right.
Someone buy this kid a lollipop. Or whatever it is kids are into these days - crack cocaine?
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...
Rather groovy Java applet - The Escher Web Sketch.
Via Wry Writer.
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.
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?)
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.
Anyone know a good tutorial? ;-)
I've just got a funky new laptop, so I should be online OK. We'll see.
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.
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!
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?
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.
"The main thing which would keep it there [Java] for me would be the APIs (both Sun's APIs and open source APIs)."
What am I missing?