Wednesday, November 30, 2005


Random: Books

Wondering through the bookshop on Sunday, I was reminded of the ABCs My Favourite Book from this time last year. I thought last year it would be interesting to see how many I'd read. Since I didn't have a blog then, I never actually bothered. For anyone who can't be bothered reading through it all, I've marked off 28 out of 102.

Here's the list:
  1. The Lord of the Rings by J.R.R. Tolkein
  2. Pride and Prejudice by Jane Austen
  3. The Bible (Various Contributors)
  4. To Kill A Mockingbird by Harper Lee
  5. Cloudstreet by Tim Winton
  6. Harry Potter And The Order Of The Phoenix (Book 5) by J. K. Rowling
  7. Nineteen Eighty-Four by George Orwell
  8. The Hitch Hiker's Guide To The Galaxy by Douglas Adams
  9. The Da Vinci Code by Dan Brown and Catch 22 by Joseph Heller
  10. A Fortunate Life by A.B. Facey
  11. Dirt Music by Tim Winton
  12. 800 Horseman by Col Stringer
  13. Wuthering Heights by Emily Bronte
  14. Zhaun Falun by Li Hongzhi
  15. Harry Potter And The Prisoner Of Azkaban (Book 3) by J.K. Rowling
  16. Captain Underpants And The Invasion Of The Incredibly Naughty Cafeteria Ladies From Outer Space by Dav Pilkey
  17. Jane Eyre by Charlotte Bronte
  18. The Lion, The Witch And The Wardrobe by C.S. Lewis
  19. The Wind In The Willows by Kenneth Grahame
  20. The Catcher In The Rye by J.D. Salinger
  21. The Pillars Of The Earth by Ken Follett
  22. Magician by Raymond E. Feist
  23. Possession: A Romance by A.S. Byatt
  24. Dune (Dune Chronicles) by Frank Herbert
  25. A Fine Balance by Rohinton Mistry
  26. The Hobbit by J.R.R. Tolkien
  27. A Suitable Boy by Vikram Seth
  28. One Hundred Years Of Solitude by Gabriel Garcia Marquez
  29. 'Fighting' McKenzie Anzac Chaplain by Col Stringer
  30. Deltora Quest Series by Emily Rodda
  31. Tomorrow, When The War Began by John Marsden
  32. Perfume: The Story Of A Murder by Patrick Suskind
  33. The Grapes of Wrath by John Steinbeck
  34. The Ancient Future Trilogy by Traci Harding
  35. The God Of Small Things by Arundhati Roy
  36. Harry Potter And The Goblet Of Fire (Book 4) by J.K. Rowling and The Power Of One by Bryce Courenay
  37. The Shipping News by Annie Proulx
  38. Captain Corelli's Mandolin by Louis De Bernieres
  39. The Poisonwood Bible by Barbara Kingsolver
  40. Anne Of Green Gables by L.M. Montgomery
  41. Gone With The Wind by Margaret Mitchell
  42. Cross Stitch by Diana Gabaldon
  43. Persuasion by Jane Austen
  44. Ice Station by Matthew Reilly
  45. Rebecca by Daphne Du Maurier
  46. Life Of Pi by Yann Martel
  47. Crime and Punishment by Fyodor Dostoevsky
  48. Little Women by Louisa May Alcott
  49. Great Expectations by Charles Dickens
  50. The Great Gatsby by F. Scott Fitzgerald
  51. A Series of Unfortunate Events by Lemony Snicket
  52. Love In The Time Of Cholera by Gabriel Garcia Marquez
  53. Rage by Steve Gerlach
  54. Alice's Adventures In Wonderland by Lewis Carroll
  55. The Mists Of Avalon by Marion Zimmer-Bradley
  56. Cafe Scheherazade by Arnold Zable
  57. The Bone People by Keri Hulme
  58. Jessica by Bryce Courtenay
  59. Harry Potter And The Chamber Of Secrets (Book 2) by J. K. Rowling
  60. The Fortunes Of Richard Mahony by Henry Handel Richardson
  61. My Family And Other Animals by Gerald Durrell
  62. War And Peace by Leo Tolstoy
  63. Wild Swans by Jung Chang
  64. Mao's Last Dancer by Li Cunxin
  65. Artemis Fowl by Eoin Colfer
  66. Eragon by Christopher Paolini
  67. Shantaram by Gregory David Roberts
  68. Memoirs Of A Geisha by Arthur Golden
  69. The Riders by Tim Winton
  70. Anna Karenina by Leo Tolstoy
  71. Angela's Ashes by Frank Mccourt
  72. The Age Of Reason by Thomas Paine
  73. The Alchemist by Paulo Coelho
  74. Middlemarch by George Eliot
  75. Emma by Jane Austen
  76. Midnight's Children by Salman Rushdie
  77. The English Patient by Michael Ondaatje
  78. Matilda by Roald Dahl
  79. Zen And The Art Of Motorcycle Maintenance by Robert Pirsig
  80. On The Road by Jack Kerouac
  81. The Bfg by Roald Dahl
  82. Animal Farm by George Orwell
  83. Birdsong by Sebastian Faulks
  84. A Prayer For Owen Meany by John Irving
  85. Boyz Rule by Felice Arena and Phil Kettle
  86. Scarecrow by Matthew Reilly
  87. The Secret History by Donna Tartt
  88. Looking For Alibrandi by Melina Marchetta
  89. Watership Down by Richard Adams
  90. The Thorn Birds by Colleen Mccullough
  91. Atlas Shrugged by Ayn Rand
  92. Winnie The Pooh by A. A. Milne
  93. Harry Potter And The Philosopher's Stone (Book 1) by J. K. Rowling
  94. The Magic Faraway Tree by Enid Blyton
  95. Brideshead Revisited by Evelyn Waugh
  96. Heart Of Darkness by Conrad
  97. High Fidelity by Nick Hornby
  98. Goosebumps by R. L Stine
  99. The Magic Pudding by Norman Lindsay
  100. Les Miserables by Victor Hugo and David Copperfield by Charles Dickens


Just Played: Civilization IV Demo

A friend of mine has been really looking forward to the release of Civilization IV (by the master of the turn-based strategy game, Side Meier). I enjoyed the first two Civilizations (and Alpha Centuri), but was never able to get into Civ III.

Having been assured that most of the problems I had with Civ III had been sorted out, I decided to check out the demo last night.

First impressions were that it was very pretty. Each of the civilizations have their own animated character done in a similar style - but better looking - to the characters in Pirates. The map itself is very nice with lots of detail, and the individual units all look really cool.

I decided to play the Indians just for something a bit different. Each civilization has it's own unique unit, and the Indians have the "Efficient Worker". This made it a bit easier to get improvements made to the lands surrounding my cities, but it was hard to judge just what impact it had (since I hadn't tried using the normal Worker).

One nifty option for a unit is "Auto Explore". When turned on, a unit will just go wondering around the map trying to reveal as much as it can. When something interesting happens, it lets you know. Otherwise, you don't have to bother moving it yourself.

One thing that kind of bugged me was the Technical Advancements Tree. I liked the idea 5 or 10 years ago, but now I find myself feeling a bit restricted by the fact that I have to get everything. What if I want to try playing a Civilization that never develops the wheel?

Unit combat was very nicely done. Each unit's image on the map is made up of a few individual people. As units fight, the people attack each other, hitting them with clubs, shooting them with arrows or just getting killed. It makes it really easy to see how evenly matched two units are, and how badly hurt a unit is after a battle.

100 turns (which is what the demo limits you to) is much to short to really get a good idea of how the game will go. After one game, I'm not feeling like I have to rush out and buy the game, but I'm certainly keen for another few goes with the demo!

Tuesday, November 29, 2005


Random: Chess

This is a little odd. Nice to see Australia is ranked #1 though!

Monday, November 28, 2005


Just Read: Snow Crash

The cover of the copy of Snow Crash I was lent stated that "[Snow Crash] is to the 90s what Neuromancer was to the 80s!", which is a pretty fair comment. It is one of the classic examples of the cyberpunk genre, and a damn good read.

The story revolves around Hiro Protagonist - a pizza delivery man, hacker and master sword fighter. Hiro gets swept up in the events surrounding a new drug to hit the streets (both digital and physical) called Snow Crash.

Like all good cyberpunk, you've got gadgets, computers, drugs and action. And, like all good cyberpunk from before about 1997, an odd mixture of "predictions" that were almost right, and ones that are totally wrong.

I really enjoyed it. There are already much better reviews then I could ever write ( for example, or of course Wikipedia), so I don't really have much more to say about it. It's certainly put me in the mood for some more cyberpunk, and some more Neal Stephenson.


Ideas: Categories

Lately I've been wanting to add categories to my blog, but unfortunately as best as I can tell, Blogger doesn't support it. I've found a couple of workarounds, but they mostly seem to involve setting up additional blogs (which seems like a pain to manage at my end).

So my solution is to start indicating the category in the heading of each post. Eventually I'll get around to linking them on the side bar. Let me know if this is actually annoying and I'll stop.

Friday, November 25, 2005


Chugworth Academy

I've decided that I do like Chugworth Academy, and will be adding it to my webcomic reading list.

Thursday, November 24, 2005


EB Games Australia Store Locator is Broken

Oops. Got to the "Nearest Store Locator!" for EBGames, enter your details and hit the search button.

It very helpfully takes you straight through to the Microsoft page about how to email mobile devices.

Wednesday, November 23, 2005


New Web Stuff

I arrived at work very early this morning, so I spent a bit of time web surfing. The upside is that thanks to Megatokyo, I discovered a new webcomic that I think I like - certainly this strip made me laugh in a very unfair way. I'm sometimes amused by what people have on their t-shirts (I've got a story that I'll post in a few days).

Chugworth Academy lead me to Starscape, which looks interesting enough for me to give a go. I've been working on something vaguely similar (my Project!) for the past couple of weeks, so if nothing else it might be a good source of ideas.

Edit: Actually, that's reminded me. I need to start reading Errant Story again.


Open Government

Gordon and I were having something of a mind bending conversation on Monday about how public servants and politicians could use blogs, and how that would change the government in such fundamental ways.

I made the comment that probably some of the most interesting blogs out there would be the ones written by politicians - particularly those high up in government. I mean, if John Howard had a blog, wouldn't you want to read it? The only problem would be that if a politician had a blog, it would be the most sanitized, spin-covered blog since the Juicy Fruit blog.

I wasn't going to bother blogging about it (although if people hassle me, I'll go into more detail), but this morning I spotted this, and figured I'd link to it (with a bit of context).

Tuesday, November 22, 2005


Christmas Presents List: Item 1

A friend just forwarded this to me (link)

World of Warcraft Boardgame LIMITED OFFER Pre-Order

FFIWC-03 World of Warcraft boardgame $125.00

World of Warcraft: the Board Game is a fantasy adventure board game for 2-6 players, based on the popular Massively Multiplayer Online Game from Blizzard Entertainment. Adventure across Lordaeron, vanquish monsters, gain experience and power, and earn honor for your faction – whether Horde or Alliance . Play as one of 16 heroes from nine classes and eight races, advance your character and gather treasure, battle thirteen different types of monsters, and ultimately challenge one of three invincible Overlords. The fate of Azeroth is in your hands!

If you pre-order a copy through Mil Sims before November 30th, , fill out the World of Warcraft Board Game pre-order form, as is found at: and fax the form to us on 03 9553 3339, or even email to us as a .pdf.

you will receive:
1. 10% discount for pre-ordering
2. A limited Edition Bronze World of Warcraft hero figure for FREE
3. A map of Lordaeron FREE
4. And the copy of World of Warcraft that you pre-ordered
5. The game is due into stock late Dec/early Jan.

Friday, November 18, 2005


TRIM Webservice: Adding Items to a Request Dynamically

This is more so I don't forget how to do this. So this will be boring to anyone who isn't me (or cares about the TCT). Mikal might like to comment on this post.

The problem: You've got your TrimRequest, and you're trying to populate the items. Unfortunately, the number of Operations in TrimRequest.Items is going to change dynamically, and there isn't any .Add method.

The solution: Create an ArrayList, and stick all your Operations in there. 'Cause their cool, ArrayLists do have a .Add method (and a .AddRange). Once you're finished with it, jam it into the TrimRequest.Items.

The trick is that the cast isn't good, so the code won't complie.

Thanks to the awesomness of Resharper, I discovered that if you hack the generated code and change the line
public Operation[] Items;
public object[] Items;
That will let you pass all the operations into the collection, and through the joys of XML, it will magically work at the other end.

I need to do some further testing on this, but it looks good for the moment.


Gift From God

This is a really cool story (it's pretty short, so go read it. I'm not going to summarise it for you).

So all of Greenland was using weapons forged from Star Metal...


On A Lighter Note

And just to make up for my grumpy rant, here's a link to the menu for the Outback Steakhouse, where you can order such meals as the Brisbane Caesar Salad, a plate of Kookaburra Wings or even a Rockhampton Rib-Eye!


Friday Morning Rant

Just to be clear, this is going to be one of those ranty posts where I make my stance on certain issues very clear. While normally I'm very supportive of debate and will happily listen to different points of view, this isn't one of those times. If you don't agree with what I'm saying, then stop reading. Thanks, but I'm not interested in your comments today.

I oppose the death penalty. There is no crime that will be magically undone by killing the perpetrator. No justice system on Earth is perfect enough to have not convicted an innocent person, so how can they be sure when it comes to deathrow (unless your in Texas).

Last year, an unfortunate Australian named Van Tuong Nguyen was caught with just under 400grams of heroin at a Singapore airport. As anyone who's dumb enough to try and traffic drugs through Asia should know, Singapore has the death penalty for drug smugglers (if you get caught carrying more than 15grams of heroin, it's mandatory).

Obviously from my comments above, I find this a pretty evil thing. Don't get me wrong - he was trying to smuggle one of the most soul destroying drugs around, and most certainly should be punished. But is killing him isn't going to get even one person cured of their heroin addiction? No.

But that's not what I'm ranting about. The Singapore Government has set the final date for the execution in early December, and this morning they were discussing it on the commercial radio station we listen to on the way to work.

This is the bit where I get angry, and you may want to stop reading.

One of the presenters expressed views pretty similar to mine - the death penalty is always A Bad Idea. Then all the bogan, redneck listeners started calling in (and I am paraphrasing a bit). "He knew the risks!", "He knew full well he was going to destroy lives back here!", "It's different from Schapelle Corby - he had the drugs on him!", "He was going to profit from this!", "I don't think it will solve anything, but killing him might act as a deterrent!", "I don't support corporal punishment, but he should die!" (yes, the last one actually did say "corporal" not "capital").

What is it with these people? Why do they seem to think it's a case of either killing him in cold blood, or letting him off scott free? Why do they feel the need to tell everyone how much they don't support the death penalty, but to then go on about how happy they'd be to see someone die?

And, if you really want to get picky, why is it that none of them actually know about the case? This isn't some hardened criminal. This is a guy who'd agreed to do this to try and pay off his brother's debts. He's been cooperating fully with the authorities since he was caught, and from all accounts has shown a lot of remorse.

It all makes me very angry! Aren't we good enough at killing each other already?

If you agree with any of those stupid, stupid people who were calling into the radio station, fine, but do it somewhere I can't hear you. If you want to actually do something useful, check out Amnesty International. There's not much time left, and things don't look good, but maybe it will make a difference.


Sorry if I offended anyone, but I did tell you to stop reading.

Edit: And after recieving a comment 5mins after posting from one of the people I'm ranting about, I'm turning off comments.

Brave, by the way Mr Anonymous - not even putting your name to comment. Wow, look at the level of respect I've got for you now. It's all the way down there, that tiny little dot....

Friday, November 04, 2005


Brilliant Idea #2931

Gordon and I had a talk about his Are There Any Original Ideas? post. I was reminded of something from my Roman History course - at one point we looked at some writings about the moral decline of Roman and how the youth of the day weren't respecting their elders. Pretty much exactly the same arguments you hear today.

So here's the brilliant idea we came up with. Dig up some speeches by the famous Roman orators, "modernize" the language a bit, and then see if they'll get published as Letters to the Editor.


Spinning Planets

I mentioned yesterday that I took used some code I'd written earlier to do the spinning balls. I'd been playing around with some bouncing balls (similar to Abound, but written in C#), but I wanted the balls to move in a more natural way. As often happens, I actually ended up somewhere differently, but still somewhere kind of cool.

It's a pretty basic app. It draws a few balls on the screen, with a few others rotating around them. I stole the basic "ball drawing" code from the excellent Public Joe C# Tutorials. That gave me balls that would move in a straight line, but didn't help me with curves.

An orbit is an object moving in a circle right? So what else moves in a circle?

Thinking back to a second year uni assignment, I tracked down an example of an analog clock (it was on CodeProject, but I can't find the actual article). The bit of code I wanted looked like this:
deg= 360/speed;
x = GetCos(tick*deg + 90) * radius;
y = GetSin(tick*deg + 90) * radius;
location.X = (int) (orbiting.location.X + x);
location.Y = (int) (orbiting.location.Y + y);
tick = tick + 1;
the GetCos and GetSin functions look like:
private static float GetSin(float degAngle)
return (float) Math.Sin(Math.PI * degAngle / 180);
Then it was just a question of setting up the individual "planet" objects to orbit around a specific point (if you watch the centre ball, it's actually moving around an invisible point itself). If I ever went back to improve the code, I'd probably set it up to randomly generate the planets and moons so it would be different each time.

I would post the .exe itself, but Blogger doesn't like the idea of me putting up anything other than an image.

Thursday, November 03, 2005


So What Have I MacGyvered Up?

After Stilly pointed me towards this article on Life Hacking, I decided to do my own radar screen. The basic idea is to try and present to the user as much information about their current world as possible in a glance. It also needed to be something they could ignore if they were concentrating on other things.

This window sits in the top left hand corner of the user's screen. It's transparent so they can see whatever's behind it (in this case, TRIM), but it's always visible. There are a series of "planets" that rotate around the centre, and each planet can have a number of "moons". Each planet represents some aspect of the users world, and each moon indicates the number of things associated with that planet. So number of records in your TRIM in-tray, number of unread emails, whatever.

In it's current state, the program interfaces with TRIM and Outlook. So in this screen grab I can tell at a glance that I have 3 unread emails and 1 record currently assigned to me. Although it isn't shown, if I've got a meeting coming up, another planet would appear, orbiting closer and closer to the centre until it's time for me to stop working. I mean go to the meeting.


MacGyver of Software Development

This morning I was thinking about a couple of random projects I've been working on lately, and something occurred to me. At my last job, we used a product called FileMaker Pro to make our solutions.

Yes yes, get the laughing over and done with Grant and Stilly. Finished? Good.

For anyone who doesn't know, FileMaker is a database building package. In a lot of ways it's like MS Access - it's meant to make building an database application quick and easy, but in a lot of ways it goes well beyond what Access offers. You could build an entire application in FileMaker that didn't have anything to do with a database if you wanted (sure, it would suck, but you could do it).

The tools on offer could be pretty limiting - for example there wasn't native SQL support until version 7 (which came out at the beginning of 2004). But one of the things I always enjoyed about my old job was trying to do something specific with the limited tools that were available. It wasn't so much a case of "when all you have is a hammer, everything looks like a nail" but more how do you use a hammer to cut a piece of wood in half. All programming has an element of that - you often have to take the existing tools to build what you actually need - but this was like being the MacGyver of software development.

I think it was Grant who was impressed that a client was seeing TRIM as an engine rather than a solution on it's own. It occurred to me this morning that I've only ever seen it that way.

This page is powered by Blogger. Isn't yours?