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.)
Eclipse 2.1 M4 - New and Noteworthy. Oooh, cool!
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.
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.
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.
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.
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.
For all your on-line shop search needs - Google's new Froogle service.
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.
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.)
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.
The discussion goes on.
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?
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.
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.
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
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.
EasyGUI is a module for very simple, very easy GUI programming in Python.
I'm keeping an eye on this.
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.
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.
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.
Small Values has been quiet for a while - I was off sick last week.