The whole family travelled across Sydney today for a BBQ at Alan and Pam’s house. Alan was my best man and has remained a close friend, despite life being seriously busy for both of us. Pam and Karen get on famously too. Alan and Pam have two children – Joel (my god-son) and Rebecca. Joel and Rebecca are just a few years behind Mitchell and Connor.
Don and Jennie, also dear friends of ours, were there too. Their daughter, Bronte, is another of my god-children. Bronte is ten years old, almost taller than her mother, and prefers jeans and T-shirt to dresses.
The five children play well together. They spent most of the time hiding from their parents.
Us six adults spent the entire afternoon enjoying the warm sun and blue sky, while discussing the serious and the inane, and grazing our way through a meal of lamb, chicken, vegetables and salad. And three different rounds of dessert. Perfect.
At some point, Bronte brought out an ornamental ferret fur1 and laid it across her father’s head. Karen was inspired to take a picture of Don’s new mohawk:

1 No, not very politically correct. It also has a genuine tortoise-shell clip. Must be thirty years old, if not more.
These are the things I like about J2EE and EJBs:
I really like Gentoo Linux. I enjoy using it, and I have said so many times in this blog. However, in a quest to provide balance of opinion to this blog, I must now present a list of things that annoy me about “Gentoo“Linux.
Compared with, say, Windows XP, Gentoo Linux has these problems:
PS: If you are looking for a more postive take on Gentoo, I invite you to search my blog for other Gentoo entries.
In order to provide some balance on my blog, I hereby point out that there is plenty to like about Microsoft Windows:
In his comparison of Java and Python productivity, Steve Ferg notes that:
A programmer can be significantly more productive in Python than in Java. How much more productive? The most widely accepted estimate is 5–10 times.
Do really we really want programmers being 5–10 times more productive? Will this not equate to 80–90% job losses?
Any developer coding in Python is a traitor to his IT brothers.
Last July, I came across Matt Quail’s World’s best cut-copy-paste preventer post. I immediately inspected my own keyboard, and was bemused to find that the most worn keycaps – in order – were “C”, “V”, “X” and the left control key.
Right now I’m looking at my home PC’s keyboard, which is just six months old, and I notice that the “C” is starting to fade a little.
What are the most worn keys on your keyboard? Be honest.
Charles gave me a login to his QuickLinks blog, published right on the front page of fishbowl. This saves me walking around to his desk and asking, “did you see that link to <X>?” several times a day.
To consider when deploying a Linux application in production:
I recently had after work drinkies with a few good friends. Many of the conversations seemed to finish with “I’ll send you a URL”. Here are some the batch I emailed on afterwards:
The other good thing to come of that night… Keith and David each took solemn oaths to begin a blog.
Cedric reminded me of Roedy Green’s ”How to Write Unmaintainable Code”. Roedy writes:
In the interests of creating employment opportunities in the Java programming field, I am passing on these tips from the masters on how to write code that is so difficult to maintain, that the people who come after you will take years to make even the simplest changes. Further, if you follow all these rules religiously, you will even guarantee yourself a lifetime of employment, since no one but you has a hope in hell of maintaining the code. Then again, if you followed all these rules religiously, even you wouldn’t be able to maintain the code!
From a comment Cedric left on one of my little rants.
Neat! Keith is now blogging.
That’s two in one day.
Charles on Australian Geography”:
“Below the line is New South Wales. Its capital, Sydney, has the big bridge and the opera house that you see on postcards. I live in Sydney now. It has a lot of pubs. Baywatch almost moved to New South Wales, but the locals told them to bugger off.”
From one of those internal company knick-knacks beloved of ISO9000 accreditation teams:
Quality only happens when you care enough to do your best.
This slogan stands out against other quality mottos I have seen over the years: it contains both truth and half-truth, on several levels.
The correct Linux driver for the NetGear FA311 card is the National Semiconductor one. It is an option in the kernel “make menuconfig” utility.
I initially had some trouble with this driver; the card would only come half-way up, pause, then go down again. Tried the tulip driver, with no luck, and also rebooted a few times too. Eventually went to bed.
After a good sleep, I was able to notice that I had unplugged the ethernet cable from the card. As soon as I attached the cable, the card started to work.
Doh!
My good friend David has started blogging, kicking off with an explanation of the nautical origins of his domain name, By And Large.
Welcome to the blogosphere, David!
Finally figured out DHCP server on my Gentoo Linux router. I used the ISC DHCP package (emerge dhcp) Some helpful resources were:
PS: Gentoo sticks dhcpd.leases in /var/lib/dhcp, not /var/state/dhcp.
Inspired by Cedric Beust’s thoughts on coding conventions, I present my contribution to the discipline of writing unmaintainable Java code. These hints and tips have been collected from a variety of Java projects, over many years.1 In the hands-on spirit of industry-standard, panic-driven development, this list concerns itself purely with low-level coding and cowboy-style pseudo-design techniques.
In no particular order:
null rather than a zero length array. This causes every for loop iterating over the array to need wrapping with if (array != null). A similar effect can be achieved when coding with collection classes.object.getX().getX(). For bonus unmaintenance points, ensure that getX() and getX() return different types.
if (something1()
&& something2()
&& something3()
&& something4()
&& something5()
&& something6()
&& something7()
&& something8()
&& something9()) {
...
long constants, use a lower-case ‘l’ in preference to upper-case ‘L’. Even with plain font such as Courier, 1l can cause all kinds of havoc. And with proportional san-serif fonts being supported by more and more IDEs, things can only get less clear and more unmaintainable.boolean values in a condition. The classic example is ”if (number.isEven() == true) {…”, a trifle which is easily ignored by a maintenance programmer. However, given the right opportunity and a small amount of thoughtlessness, this simple device can finesse one line of code into five:
if (number.isEven() == true) {
return true;
} else {
return false;
}
PS: Most of these are not fatal—they are simple to correct, and would be caught in even a cursory code review. Even so, I am thankful that I haven’t come across a single project that has put all of these into practice.
1 It’s just a bunch of notes really, but there would be too much irony in any more formal presentation.
2 I couldn’t be bothered to work out which two were not being used, so I left them all there while I added a new one.
My son Connor is five. I asked him about his week at school.
Connor’s favourite thing for the whole week was ‘Toy Time’. Every toy time he played with the Duplo; he says he “never takes a break from it.” Today Connor made a boat. The friends who helped him were Jarrod and Thomas.
The boat was not very big, but it was very long. It went across the whole room. Connor tells me they used it as a boat, but it actually was a bridge.