December 20, 2002
36 hour drinking

New Year drinking times extended. I'm getting a headache just thinking about it.

I doubt that I'll post for a couple of weeks now, so, Happy Christmas and a Prosperous New Year to one and all. (Except for Bill Gates, who is quite prosperous enough already.)

Posted to The Big Room by Simon Brunning at 04:27 PM
Eclipse 2.1 M4

Eclipse 2.1 M4 - New and Noteworthy. Oooh, cool!

Posted to Java by Simon Brunning at 12:59 PM
Do you want the good news, or the bad news?

News from the US IT job market - more jobs were created than were lost in the last quarter, but wage levels are down.

Will the UK follow? Wage levels are already pretty low here, but since I'm hoping to stay with my current employers anyhow, that isn't the end of the world.

Posted to Business by Simon Brunning at 11:54 AM
December 19, 2002
Encapsulation gotchas

The mutable return value gotcha mentioned in Avoid these simple Java encapsulation gotchas certainly isn't specific to Java - the same would apply to Python, and (I think) to C#.

Now, as a Python-head, I'm not big on enforcing encapsulation - see The principle of least privilege. But you certainly don't want to break encapsulation by accident, and mutable return values are an accident waiting to happen.

Posted to Software development by Simon Brunning at 04:09 PM
December 13, 2002
Python templating

I've got a fairly simple function to put together for my father - I want to give him a simple online form enabling him to maintain his gig list. The host supports CGI only, so obviously I'm going to use Python.

Equally obviously, I'm going to want a template engine. The problem here that there are just so many of the bloody things!

I had a quick look at YAPTU, but I just didn't like it - you shouldn't need all this re compiling business.

Cheetah looks nice, though - rather Velocity-like. This paper (found via ZOpen-X) introduces Cheetah. If you've not come across Velocity - have a look at Start up the Velocity Template Engine.

Posted to Python by Simon Brunning at 03:30 PM
Python introspection

Interesting new Guide to Python introspection by Patrick K. O'Brien over at developerWorks.

Also worth a look if you are new to Python - The Power Of Introspection, chapter two of Dive Into Python, Mark Pilgrim's excellent Python tutorial.

Posted to Python by Simon Brunning at 03:12 PM
Maven

I've heard a lot about Maven, but I've never worked out what it actually does. It seems that Charles Miller is in the same boat.

James Strachan explains why he uses Maven, and what it does for him. Problem is, this sounds like what Ant does, and I know Ant isn't the same thing as Maven, so I'm still in the dark...

Update: James explains further. Maven doesn't do anything which Ant can't do - it saves you from a lot of the work. That's got to be a good thing.

Posted to Java by Simon Brunning at 01:39 PM
Why piracy doesn't matter

Piracy is Progressive Taxation, and Other Thoughts on the Evolution of Online Distribution, by Tim O'Reilly.

Via Aaron.

Posted to Business by Simon Brunning at 12:48 PM
Windows screensaver randomiser

A little toy that I put together for myself - a Python script to pick and apply a random screensaver on a Windows box. Do with it what you will. Get it here - RandomizeScreenSaver.zip.

I could turn this into an exe, if there was any interest.

Posted to Python by Simon Brunning at 10:44 AM
December 12, 2002
Google goes shopping

For all your on-line shop search needs - Google's new Froogle service.

Superb name!

Via b3ta.

Posted to The Internet by Simon Brunning at 01:12 PM
Choose your ghetto

Software development is just too complex these days for anyone to really know what they are doing in more than one 'programming world', according to Joel.

I think that he's probably right. I'm painfully climbing the foothills of the Java/J2EE world at the moment.

The iSeries world, my bread and butter for many a year, is probably static enough these days that I don't need to get left behind. This is good - it took a long time before I knew how to make the '400 fly in the first place.

A number of people at work are getting into the .NET world at the moment, in their own time. This seems a little odd to me - there is no realistic prospect of anyone making use of this stuff in my company in the near future. Still, I can see the attraction - .NET might not kill J2EE, but MS won't let .NET die under any circumstances.

Not that I'm tempted, you understand - MS are the Great Satan, so far as I am concerned. No, I'll stick with Java/J2EE.

Some tools are just so good that they help you whatever world you are in.

Posted to Software development by Simon Brunning at 01:04 PM
Really don't Use System.out.println!

Don't Use System.out.println! was Tuesday's hot story at Java.blogs, believe it or not.

Using System.out.println is worse than I thought, though - David Johnson points out that it can really slow your system down. Yuck!

One other thing to consider - if there is any possibility, any possibility at all, that you might want to run something as a Windows service, then you can't use stdin, stdout, or stderr at all. (BTW, if you do need to run Java as a service, check out jsrvany.)

Posted to Java by Simon Brunning at 12:40 PM
IBM to buy Rational - or Microsoft?

Speculation about the possibility of IBM buying Rational software have been slopping around the blogsphere recently.

Now, according to Reuters, it seems that it's possible that Microsoft might be trying to outbid them.

What's more, the Borg might be looking to snap up Borland, too.

Now, I've never used anything by Rational, so I have no strong opinion about who owns them.

The Borland thing is a different kettle-of-fish, though. I can't see how it would be anything but a bad thing if Microsoft were to take over one of its few real rivals in the development tools market. One of the few real innovators, to boot.

Posted to Business by Simon Brunning at 09:20 AM
December 10, 2002
Extending Java

The discussion goes on.

In the frame now - should Java get macros, or is there no place for macros in Java?

Well, macros would make implementing James Strachan's J* pretty trivial. But if everyone was able to create their own flavour of Java, how would we read one other's code? Would macros be Java's own Tower of Babel?

Posted to Java by Simon Brunning at 05:34 PM
Java multiple inheritance

Multiple inheritance - good or bad? The only good answer to this is 'it depends'.

There are a number of programming language facilities which can very easily be abused, but which when not abused can be very powerful. Multiple inheritance is one of these. Another which springs to mind is operator overloading.

The designers of Java decided that the danger of including these was greater than the benefit.

The designer of Python decided to trust the programmer to know what he or she is doing. Is this a mistake? I don't think so, but then I've never had to work on a large Python project alongside incompetent developers. Of course, incompetent developers can screw up in any language, so I can't see Python making anything worse.

Anyway, I digress. One of the main good uses of multiple inheritance is 'mixins'. To my understanding, these are classes created specifically to be multiply inherited, and which provide specific behaviours which might be useful to any class. A good example of this in Python is found in ZOBD, an object database. To allow an existing class to have its instances stored in the database, all you have to do is to inherit from the ZODB.Persistent mixin class in addition to whatever your class is already inheriting from.

Java as it stands won't allow anything like mixins, but there is a Java extension, Jam, which does.

A recent developerworks article, Diagnosing Java code: Killer combo -- Mixins, Jam, and unit testing, shows how mixins could be used to simplify unit testing in some circumstances. I'm not sure that this is a killer-app for Jam - unless I'm missing something, AspectJ might be a better approach here. Interesting, nevertheless.

Posted to Java by Simon Brunning at 04:57 PM
ASCII banner generator

The ASCII banner generator (a web based version of figlet) is fun.

Why in the iSeries category? 'Cos I recently used it to produce a new green-screen banner page. Probably the first new 5250 banner page to have been written in 5 years.

Posted to iSeries by Simon Brunning at 02:41 PM
Quotes from Alt.Sysadmin.Recovery

Quotes from Alt.Sysadmin.Recovery

I find that anthropomorphism really doesn't help me deal with hardware all that much, because it lends a certain attitude of disdain to what would otherwise be a mere malfunction. - Carl Jacobs

Posted to Funny by Simon Brunning at 02:28 PM
TCP/IP exit point intro

A primer to writing TCP/IP exit point programs.

Pretty useful, but FTP is only one of the things which you need to cover. ODBC and JDBC are other important ones, and I should imagine that securing those would be quite a job - you'd need to parse the incoming SQL to decide what was being read and/or updated. Not trivial by any means.

Posted to iSeries by Simon Brunning at 02:24 PM
EasyGui 0.5

EasyGUI is a module for very simple, very easy GUI programming in Python.

I'm keeping an eye on this.

Posted to Python by Simon Brunning at 02:19 PM
Easy Struts

Easy Struts is a Struts plug-in for Eclipse.

Lomboz, a J2EE plug-in, including JSP facilities, is also interesting.

BTW, Programming Jakarta Struts came recently. I haven't started it yet - I'm still working through Java Development with Ant. But I'm already wondering if I've got the wrong book - Struts in Action looks good, and reviewed very well.

Ah, well, I'll give the O'Reilly book a chance. It's not like they've let me down before.

Posted to Java by Simon Brunning at 02:14 PM
Classes, interfaces, and factories

There has been a bit of a storm in the Java blogging world recently about the naming convention, if any, to use for interfaces. A storm in a teacup, perhaps? Anyway, I tend to agree with Charles' opinion on this.

We had a good blazing row discussion about this at work. We were never going to agree - there are fans of hungarian here! (And not just here, either!) Me, I hate hungarian. I'm a Python man at heart - it's the signature that counts, not the type, so hungarian is emphasising the wrong thing.

More interesting to me, though, is the notion of avoiding use of the 'new' keyword, except when used from within factory methods. Makes a lot of sense to me.

Posted to Java by Simon Brunning at 01:17 PM
Don't Use System.out.println!

Don't Use System.out.println! is a nice intro to Log4j.

Via Erik.

Posted to Java by Simon Brunning at 12:50 PM
Is the worst over?

According to UK IT jobs decline - worst over, it is. For permies, that is.

Fingers crossed - a lot of us are hanging on by our fingernails here.

Update Wednesday 11th December: News of an upturn in the States too.

Posted to Business by Simon Brunning at 12:13 PM
December 09, 2002
adodbapi

adodbapi is a DB-API 2.0 compliant module for connecting to ADO databases.

Posted to Python by Simon Brunning at 01:18 PM
Off sick...

Small Values has been quiet for a while - I was off sick last week.

Posted to Apropos of nothing by Simon Brunning at 01:15 PM