Jakub Korab
Tech, Opinion, and Doing Stuff

Why I am ashamed of the Australian Government

March 31st, 2007

I don’t typically blog about politics but there is something that I need to express my views on.

For those who are unfamiliar with the story, a guy called David Hicks, an Australian, was captured in Afghanistan by the US military and sent to the detention facility at Guantanamo Bay. After years of confinement, and his continued insistence of innocence he pleaded guilty yesterday to “supporting terrorism” in front of a US military tribunal which sits outside of the justice system of any country. His guilty plea has even surprised the tribunal itself – who insisted that he present evidence that the guilty plea was genuine and not a ploy to get out of Guantanamo. Many people including myself (also an Australian), feel his confinement was unfair, without legal basis and that the Australian government should have tried to secure his release – which they did not.

The legality of the camp, the military tribunals set up to judge those held there, and the treatment of the prisoners interred there has been the cause of a lot of consternation. No US or British citizens are currently held there as the legal systems of those countries have deemed the camp breaches the rights of their citizens, and the camp has been widely condemned internationally.

Hicks was classified as an “enemy combatant” – a term developed deliberately to reclassify people as falling outside the Third Geneva Convention “relative to the Treatment of Prisoners of War”. This meant that he was not protected by the same basic rights as the soldier of an opposing army. For years he was locked up for 23 hours a day in a cell (for an extended portion without any natural light). His US military-appointed lawyer raised allegations of torture. None of this was ever complained about, or investigated by his government.

Despite calls by the Australian legal community, including its judiciary, not a single noise has been made by the government for the release of David Hicks. Hicks did not violate any Australian laws being in Afghanistan, nor did he violate any US laws that were around at the time.

His languishing in a prison outside the reach of any country’s legal system has suited Prime Minister John Howard’s government. A government with a well-documented history of playing to the lowest common denominator of Australian society with it’s tough on terrorism, tough on immigration policies. A government with a distasteful human rights record – after all, who can forget the Tampa, the Children Overboard affair (where a subsequent senate enquiry proved the PM had lied to the public), and its treatment of “Illegal Immigrants” in its detention centres?

Conditions on the acceptance of his plea included dropping a challenge on the legal validity of the tribunals in the US Supreme Court, going back on claims that he was abused in captivity, and promising not to sue the US. One other condition was that Hicks cannot talk to the media for a year. The timing coincides nicely until after the next Australian election. Already Mr. Howard (a master of political point scoring, if ever there was one) has started to take advantage of the situation, knowing that no direct reply can be given:

“Whatever may be the rhetorical responses of some and particularly the government’s critics, the facts speak for themselves,” he said in Sydney.

“He pleaded guilty to knowingly assisting a terrorist organisation – namely, al-Qaeda.”

I’m sorry Mr. Howard. No facts were ever heard in anything that resembled a fair trial. Hicks would never get an unbiased hearing (after all, the trial judge even removed two of his lawyers). He would have been convicted and remained in Guantanamo until well after your time, or a change of government in the US (maybe). Had I been given that choice, I would have pleaded guilty too.

Whatever one might think about David Hicks, his motivations, beliefs or reasons for being in a war zone there is a big question that needs to be asked. Was his subsequent treatment fair? No. Had he been held by any other country, for any other reason than terrorism, the cause du-jour, something would have been done. Given the traditional Australian fondness of the concept of “A Fair Go”, I cannot feel anything other than revulsion at his treatment. The Australia I believe in is one where it’s citizens are protected by certain rights, and a government that will stand up for those same rights when they are encroached on.

If Hicks had done anything that was illegal in Australia, he should have been brought back and tried there. If he didn’t, the government should have pressed for his release. The sooner Australia defines a bill of rights for its citizens (it is the only democratic country without one), and turns its back on this government’s distasteful policies the better.


Filed under: human rights, politics | No Tag
No Tag
March 31st, 2007 13:34:00

Java PC Emulator/Open Source Goodness

March 30th, 2007

After the recent announcement by Dell that they were going to be selling Linux-based desktops and laptops, I decided to check out their site to see what’s on offer. For some strange reason the open source laptops they are selling don’t come with Linux at all (?) but with FreeDOS. I had never heard of it, so I googled it, and a few clicks later came up with a nifty Java-based PC emulator that runs FreeDOS.

So what?

I present Lemmings, Commander Keen and Prince of Persia in your browser! They’re on this virtual PC’s C: drive.

http://www.physics.ox.ac.uk/jpc/Demo.html


Filed under: games, open source | No Tag
No Tag
March 30th, 2007 16:40:00

What bugs me about Guice

March 23rd, 2007

Last week I switched a basic Spring app to Guice, the new dependency-injection framework from Google. It’s nice, it’s quick, and it does what it says on the box, but one thing bothers me. I know it’s not really logical, but it’s like a rock in my shoe – I need to import com.google.inject annotations (@Inject) into the classes that need an object injected. I have only done the most basic quick start stuff, and you may not need it, but that’s what the quick start says.

OK, so the POJOs that make up your app are still container agnostic, but somehow it kind of smells to be putting stuff that details how your container is going to manage the code into your code – even if it is only metadata. Maybe it is not so much the actual metadata per se. After all, describing usage of a class is what it is supposed to do. But com.google imports? Even if it was org.something it would be better, but something just doesn’t sit well here. I may need to digest what this means. It’s really skirting that line of putting runtime details back into POJOs. Hmm…


Filed under: dependency injection, guice, java | No Tag
No Tag
March 23rd, 2007 15:13:00

Why risk life and limb?

March 23rd, 2007

Running with the bulls is possibly one of the most insane things you can do, and definitely right up there with the essential European experiences. My cousin did it a few years back, and I can’t be outdone ;)


Filed under: 43 things | No Tag
No Tag
March 23rd, 2007 10:54:00

Becoming a Programmer

March 22nd, 2007

I came across an article posted a while ago by Rob Walling (http://www.softwarebyrob.com/articles/Software_Training_Sucks_Roll_it_Back.aspx) proposing that the best way to learn how to program is via an apprenticeship with a more experienced programmer.

I love the idea, it just sounds right to have someone shortcut you through a lot of the unnecessary pain. It is something that I have seen that could have been incredibly beneficial – especially when you consider just how many people there are working in the industry who are not up to scratch because of the "Here’s a piece of work. Now do it." mentality, which provides fresh developers with no guidance and assumes that people will simply pick up information as they need it. The problem is the lack of a feedback mechanism. No one to point out mistakes, challenge the existing design, discuss which parts are right, or point you to a shortcut.

There are two areas of the programming profession where working with someone senior could be beneficial:
- good practices. Not everyone out there knows about Code Complete, The Pragmatic Programmer et al. and the good stuff within. Having someone even point out the texts to you and help you to work through the ideas within makes a big difference. There’s good stuff there, and you can spot those who know versus those who don’t.

- conceptual versus practical real-world programming. Make a duck quack in different ways versus implement a web service that back-ends onto a 20 year old COBOL program with dubious documentation. It is the practical side of programming where an apprentice-journeyman relationship would make a huge difference. There is no substitute for experience, and learning from other people’s mistakes is a lot smarter than making them yourself.

It is not a substitute for higher education, which provides an important foundation in the field, but there is a gap between the goal of a degree which is to teach you concepts versus the practice of programming in industry. Rightly so. I would rather work with someone who understands concepts rather than someone who simply knows how to use technology X. You want people to be flexible and pick up new technologies as needed. The two should be combined in much the way that a medical student does an internship.

The natural question to ask is how you go about doing this in a deadline-driven environment, but I think this question is wrong one to be asking. Rather, how does the environment need to change to allow for this type of interaction to develop? You need an acknowledgement that the time of the both developers needs to be accounted for and set it aside. You cannot book 100% of a senior developer’s time on billable work and expect them to also coach a junior member of the team. Some companies do this type of thing incredibly well, but I would like to see this approach adopted more widely.


Filed under: software engineering | No Tag
No Tag
March 22nd, 2007 11:58:00

Talking causes accidents

March 14th, 2007

A long time ago, I posted (http://jakubkorab.blogspot.com/2005/07/hands-free-mobile-use-causes-crashes.html) about a study in which researchers found that talking on a hands free phone kit was just as disruptive as using a mobile phone. I laughed that it was actually talking to other people that was the culprit. Well now it turns out that that’s not far from the truth.

A book I’ve been reading, Mind Performance Hacks (http://www.amazon.com/Mind-Performance-Hacks-Tools-Overclocking/dp/0596101538), describes how the language center of the brain is used to glue together information from other parts of the brain – helping us to make sense of different sources of information, such as colour and spatial perception. When that part of the brain is distracted from the task at hand, the ability to perform that task drops substantially. Have you ever wondered why you can drive and listen to the radio when you know where you’re going, but need to turn it off when reading a map?

So while the efforts of police forces around the world in limiting mobile phone use while driving are worthwhile, they’re really just addressing a symptom of a problem which you just can’t legislate against. Either way, don’t bug the driver.


Filed under: factoids, science | No Tag
No Tag
March 14th, 2007 15:41:00

Dependency injection killed the factory pattern

March 13th, 2007

I was having a play with Guice (http://code.google.com/p/google-guice/), the new dependency injection framework from the folks at Google, and something quite profound happened. I realised that having used Spring for a while now, it had been ages since I had to code up a factory class for pretty much anything.

No more weird JNDI lookup code, no switching in test classes if some weird ThreadLocal is set to "test". A whole huge chunk of plumbing code has been washed away. I no longer have to worry about things like whether I’m going to be running my test cases in or out of container and how stuff under the bonnet is going to do lookups in both case. I don’t care whether my JUnit/TestNG tests are being run in Eclipse or Ant. My code is cleaner, easier and faster to test, and far simpler. Any time I can’t test my code as POJOs, I feel like that dream you had in primary school where you turn up to school and you’re not wearing any pants (OK, maybe that’s just me).

So OK, your DI framework of choice still has a factory in there somewhere to auto-wire, or run off config, or annotations or whatever… but the point is "You’re Not The One Doing It" (YNTODI – original abbreviation, I checked). The less potentially error-prone code I have to write (hey, bugs are part of the job) the better.

A huge tip of the hat to the Google lads as well, the annotation based Guice looks like a really nice drop-in for the DI aspect of Spring. Keep up the good work, and putting in the hard yards so guys like me don’t have to ;)


Filed under: dependency injection, guice, java | No Tag
No Tag
March 13th, 2007 17:46:00

Thought for the day

March 05th, 2007

"How many people can say they’ve climbed Mount Fuji? How many people can say they’ve drank snakes’ blood in Thailand and eaten Guinea Pig in Peru? How many people have run with the bulls in Pamplona and downed ten steins at Oktoberfest? How many people do you know who’ve worked in a strip club in Tokyo and packed supermarket shelves in San Diego? How many people do you know who’ve ridden a bike from Amsterdam to Paris and seen the Northern Lights in Norway?"

That’s life!


Filed under: 43 things | No Tag
No Tag
March 05th, 2007 14:49:00

A problem worth solving

March 01st, 2007

I came across this article in Technology Review, which talks about a completely green-field approach to software development – Intentional Software. Getting the domain experts to write their own code. There have been less-than great implementations of this sort of thing in the past, but a guy like Charles Simonyi (Microsoft Word/Hungarian notation fame) just might pull it off.

http://www.technologyreview.com/InfoTech/18047/


Filed under: intentional software, software engineering | No Tag
No Tag
March 01st, 2007 09:41:00