A website I read every now and then is the Daily WTF. It’s a collection of amusing stories from the tech front — from programming to system administration to tech support and beyond. If you work in the tech field and need a bit of catharsis, be sure to check it out.
One language that’s featured somewhat frequently on the site is Java, and with good reason — like any widely-used language it has complexity, warts, misfeatures, bugs, historical behaviour, and outright badness that makes for a good punch line or two. This puts it on equal footing with my admitted favourite language.
I was reminded of this today because I was language-shopping for a project. (Yes, another project.) I’ve been keeping diabetes data in a Numbers spreadsheet, but the charting I can do is limited and trying to do more than very simple functions would have me pulling my hair out if I had any. The criteria I had were that the language had to be cross-platform, handle graphical applications well, and have better integration with various operating systems than Perl does. Having a huge standard library to help cut down on dependencies also scored high.
My first thought was Mono, but it seems that project necessarily lags behind the current wave of C# and .NET from Microsoft. To go that route I would want to be on the bleeding edge, as learning earlier versions would probably frustrate the heck out of me. I did a bit of searching about and found a developer preview of Java 6 for Mac OS X, and I think it will do nicely. It meets my criteria, and has support for the things I’m likely to need:
- GUI (Swing)
- regular expressions (but not nearly as good as Perl)
- XML support
- sockets and SSL out of the box
- heaps and loads of documentation
- large installed base, not likely to be missing on many systems
A critical part of my decision was the availability of high-quality, well-regarded codebases to look at and learn from. Java won this challenge hands-down, as I have to look no further than the Apache project to get that.
Now comes the fun part — creating my very own WTFs. My Subversion repository isn’t public, but I will try to do (at least weekly) source code drops. Starting from the very first bits and pieces. You can see an abomination form in real time! Or not, if you don’t like looking at the programming equivalent of a train wreck.
Update: You can get the first source drop in the glutrack project directory.