<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rants from Vas</title>
	<atom:link href="http://www.vastheman.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.vastheman.com/blog</link>
	<description>The Anthony Mundine of geeks!</description>
	<lastBuildDate>Sun, 29 Aug 2010 10:58:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>kūjin</title>
		<link>http://www.vastheman.com/blog/2010/08/29/kujin/</link>
		<comments>http://www.vastheman.com/blog/2010/08/29/kujin/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 10:58:09 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Uncategorised]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=156</guid>
		<description><![CDATA[When I first moved in here, I received notice of a development application for a Japanese restaurant just across the road. There are plenty of cafés in Elizabeth Bay but we could use more restaurants, and I was excited — I might actually get to go to a restaurant’s opening night! The application was approved, [...]]]></description>
			<content:encoded><![CDATA[<p>When I first moved in here, I received notice of a development application for a Japanese restaurant just across the road.  There are plenty of cafés in Elizabeth Bay but we could use more restaurants, and I was excited — I might actually get to go to a restaurant’s opening night!  The application was approved, and not much seemed to happen for a while, but the work progressed slowly.  When the signs finally went up the suspense set in, and they were ready to open on the 17th of August — about nine months later.  We booked ourselves in for dinner, so as not to miss out.  Rather than a short summary, I’ve decided, for the first time, to write a real restaurant review.</p>
<p>Restaurant: kūjin, 41B Elizabeth Bay Rd, Elizabeth Bay, 02-9331-6077<br />
Cuisine: Japanese specialising in udon and teppanyaki grill<br />
Hours: Tuesday to Sunday lunch 12:00–3:00 and dinner 6:00–9:30<br />
Verdict: some great food, but beset with logistical issues</p>
<p><span id="more-156"></span></p>
<h3>Opening night</h3>
<p>We arrived at seven in the evening on the opening Tuesday.  The restaurant was already more than half full, so it looked like a good turnout for an opening night.  The lighting was subdued, and there was some background music playing.  The kitchen is separated from the dining area by a low barrier, so you can see the meals being prepared.  The waitress who seated us was polite and friendly.</p>
<p>Up to the point where we were brought our menus and water, everything had been going very smoothly, but it didn’t take long after this for the opening night issues to appear.  We ordered a Sapporo beer for me, an Asahi beer for Thanh, and an apple juice for Yoshi.  The drinks seemed to be taking a while to arrive.  Eventually a waitress came to tell tell us most apologetically that there was no juice tonight.  It wasn’t so bad — Yoshi just had to be content with water.  I also noticed that the couple next to us had been given lunch menus, and the mistake was not noticed until after they had ordered, so they had to order again from the correct menu.</p>
<h4>Tarako Cocktail ($7.00)</h4>
<p>For me, this entrée was the highlight of the night — it was the kind of thing you’d imagine seeing on Iron Chef.  The combination of colours was very appealing, and the flavours of cod roe, tofu, avocado and beans balanced perfectly.  This was a great appetiser, and set high expectations.</p>
<h4>Kake Curry Udon ($16.00)</h4>
<p>This dish was a bit of a let-down.  The description on the menu said “kujin wagyu beef curry” but there was no beef to be seen — just two scraps of chicken meat, and four vegetable balls.  The presentation was nice, the thick curry sauce had a good rich flavour, and the noodles were cooked perfectly.  It was OK, but nothing special, and not worth the asking price in my opinion.</p>
<h4>Daikon Steak ($10.00), Kujin Pickles ($5.00) and Rice ($3.50)</h4>
<p>The rice wasn’t done properly at all: it was too soft at the bottom — almost like congee; they must have put too much water in the rice cooker or something.  But the daikon steak was beautiful.  There were three thick pieces of marinated and grilled daikon, served with a garlic sauce.  They had a deliciously soft texture that was even all the way through.  Yoshi and Thanh loved this one.  The pickled seasonal vegetables were nice, too — sour with just a hint of spiciness.</p>
<h4>Kake Wagyu Beef Udon ($16.00)</h4>
<p>This dish was beset with logistical issues: initially they forgot to bring it at all; when we asked, the waitress apologised profusely and rushed off the kitchen, where we could see much discussion and looking at the orders being served; this was followed by the the wrong dish — grilled wagyu beef steak — being brought out; this resulted in even more apologies as it was taken away.  We did eventually get the right dish, which was fortunate — Yoshi would have been very upset if he didn’t get his noodles.</p>
<p>When we finally got the dish, it didn’t disappoint.  The thinly sliced beef was soft and and almost melted in your mouth; the dashi broth had a rich flavour, and you could smell the fish and seaweed in it; the flavour of the broth permeated the meat and noodles.  I wouldn’t hesitate to recommend this.</p>
<h4>Plum Wine Sorbet ($7.00)</h4>
<p>A delicious plum wine sorbet over Earl Grey mousse served in a martini glass.  Not too much to say about this, but it was a pleasant, sweet conclusion to the meal.  The serving size is quite small, so you need to take your time and enjoy it.</p>
<h4>Green Tea Icecream Crêpe ($7.00)</h4>
<p>A small crêpe served with green tea icecream and some azuki red beans.  The ice-cream was smooth and not too sweet, with that distinctive slightly bitter green tea flavour.  As with the sorbet, the serving size is quite small, but you’re not trying to fill up on this so it’s sufficient.</p>
<h4>Conclusion</h4>
<p>We had one more problem before we left: the bill included the wagyu beef steak that we didn’t eat, but this was quickly rectified and more apologies were offered.  The issues could all be forgiven as opening night teething problems, and in spite of it all, we had eaten some excellent food.  The staff had been very polite and apologetic throughout the evening.  As we left, they apologised again and asked us to come back again, when the opening night issues have been resolved.</p>
<h3>Second Chance</h3>
<p>We thought it would be rather unfair to form an opinion of the service based on the opening night alone, so we came back the next Sunday (the 2nd).  We didn’t bother to make a booking this time.  We were seated near the front of the restaurant, brought menus and water, and we placed our order.  The drinks came out quickly this time, and Yoshi got his apple juice.  I guess the initial juice delivery must have missed the opening.</p>
<h4>Tukune ($6.00)</h4>
<p>Two skewers of chicken meatballs grilled teppanyaki-style and served with a sweet teriyaki sauce.  The meatballs were made with a very lean chicken mince, not like the fatty stuff often sold by butchers, and seasoned with spring onions and ginger.  They were evenly cooked through and not dry, with a very clean flavour.</p>
<h4>Tako Okonomiyaki ($16.00)</h4>
<p>This is thick savoury pancake of sorts  It was packed with shredded vegetables and some big chunks of octopus, and topped with Japanese mayonnaise and bonito flakes.  This hearty dish was almost like a complete meal in itself.  All the flavours were fresh and alive.  Did I mention the big tasty chunks of octopus?  Definitely one of the best tako okonomiyaki I’ve had.</p>
<h4>Grilled Eggplant ($10.00), Daikon Steak ($10.00) and Rice ($3.50)</h4>
<p>The rice was cooked perfectly this time with no sogginess at the bottom, so it would appear that was just another opening night hiccup.  The grilled eggplant topped with tofu cheese was quite tasty, but it was really to oily for someone trying to watch their cholesterol like me.  Don’t let that put you off if you aren’t watching your diet — the flavour was great and it was cooked to perfection.</p>
<p>This time, it was the daikon steak that was plagued with logistical issues.  Initially, it was brought out to the table next to ours, so they had to take it away and cook us a new one.  We were offered apologies and a complimentary bowl of edamame (boiled young soybeans) to eat while we waited.  Sadly, the daikon steak wasn’t as good this time as on the opening night: the texture wasn’t even all the way through and the flavour of the marinade hadn’t permeated it as well.  It’s possible they rushed to get it cooked quickly after the error, but it was still a disappointment after how good this dish was the first time.</p>
<h4>Kake Wagyu Beef Udon ($16.00)</h4>
<p>This dish didn’t disappoint the second time around.  The same comments apply as for the first time: lovely soft beef and perfectly cooked noodles in a flavoursome broth.  Yoshi loved the noodles, and if a restaurant dish keeps a two-year-old happy, they must be doing something right.</p>
<h3>Final Summary</h3>
<p>You can definitely get some excellent food at kūjin, but neither night was completely trouble-free.  This was all within a week of opening, so some issues can be expected, and there were far fewer problems the second time.  The staff were very polite and apologetic throughout.  Will I return?  Definitely — most of the dishes really shone, and there’s a lot more on the menu that I’d like to try.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2010/08/29/kujin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Brumby</title>
		<link>http://www.vastheman.com/blog/2010/07/01/brumby/</link>
		<comments>http://www.vastheman.com/blog/2010/07/01/brumby/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 10:31:12 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Politics]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=152</guid>
		<description><![CDATA[I sincerely believe John Brumby is an idiot. How is increasing the number of lanes on the freeway supposed to help people get to Tullamarine airport? Cars trying to exit bank up hundreds of metres onto the freeway in the morning already — regularly flying to work in Sydney has made me acutely aware of [...]]]></description>
			<content:encoded><![CDATA[<p>I sincerely believe John Brumby is an idiot.  How is increasing the number of lanes on the freeway supposed to help people get to Tullamarine airport?  Cars trying to exit bank up hundreds of metres onto the freeway in the morning already — regularly flying to work in Sydney has made me acutely aware of this, as I have to factor it in to my taxi trip time estimate.  Increasing the number of lanes will help people going elsewhere get around the traffic jam, but it will do nothing to help people who need (or want) to fly.  Busses might help mildly, but they would contribute to the congestion.  Melbourne busses have a pretty dismal reputation, and my experience with them has been awful, so I’d still get a taxi.  Why don’t you just bite the bullet and run a railway line under the terminals?  It’s worked wonders in Sydney, and most people pay the extra $12 over a normal rail fare rather than catching a cheaper bus out of there.</p>
<p>Blaming Kevin Rudd for sliding popularity is also undeniably idiotic.  You can’t blame Rudd for trains that run late (if at all) and break down, blowing the budget on unreliable and inadequate myki, mismanagement of the water shortage, the Eastlink toll backflip, failing to deliver on promised rail network expansion, rampant corruption, wasting money of F1 and Tiger Woods, and all the while just saying things like, “Victoria’s the place to be, and Melbourne’s the most liveable city in the world, mate!”  Let me tell you, the better rail service, more accessible airport, desalinated water and generally more helpful police make make me less frustrated when I’m in Sydney.</p>
<p>It’s too bad the opposition has nothing to offer — Victoria is in a truly sorry state.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2010/07/01/brumby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blacklisted Cabs</title>
		<link>http://www.vastheman.com/blog/2010/06/05/cabs/</link>
		<comments>http://www.vastheman.com/blog/2010/06/05/cabs/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 13:40:30 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Uncategorised]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=148</guid>
		<description><![CDATA[I don’t book taxis very often — most of my taxi rides are between Tullamarine Airport and Flemington in Melbourne, and you never have to wait long to flag down a taxi at either location. But the other week I happened to be at Werribee station on a Sunday morning, and I’d missed the bus [...]]]></description>
			<content:encoded><![CDATA[<p>I don’t book taxis very often — most of my taxi rides are between Tullamarine Airport and Flemington in Melbourne, and you never have to wait long to flag down a taxi at either location.  But the other week I happened to be at Werribee station on a Sunday morning, and I’d missed the bus by about ten minutes (stupid trains and busses that don’t line up), and the busses only run every hour.  So I thought I’d call a taxi.  Since I don’t call taxis very often, I need a number that’s easy to remember, so I called 132227 as it’s a convenient mnemonic.  This was the old Black Cabs number, but they seem to have amalgamated with a bunch of other taxi companies and changed their name to One Three Cabs these days.  But I will no longer be calling this number.  I will make an effort to always find the number of another taxi company because of how shockingly bad their service has become.</p>
<p>I call them up, and get put on hold.  I’m not too worried about being on hold for a little while, but the hold music consists of repeated radio ads for themselves that appear to be intended to drill their phone number into the listener’s head.  What kind of stupidity is this?  I know what the number is — <em>I’ve just dialled it</em> for crying out loud!  Give me something distracting — elevator music, radio, ads for some other company — reminding me who’s keeping me on hold is not a smart move!  I was on hold for about a minute when I got the ring of an operator’s phone.  They picked it up, and then hung up without even saying anything.  Nice going — I guess you just scored one more call handled.  How many more until you meet your quota for the shift?</p>
<p>As I don’t know the numbers of any other taxi companies, I called again, and spent another minute on hold.  This time I actually got an operator.  She asked me where I was, and I answered, “The taxi rank at Werribee station.”  She asked, &#8220;What street?”  I answered, &#8220;I don’t really know.  There’s a bus terminal on one side of the station and a taxi rank on the other; I’m at the taxi rank.”  She said, “Well call back when you know the street,” and hung up.  What’s the use of taxi company that doesn’t even know where taxi ranks are?  Surely you have a Melway or UBD, or perhaps Goole Maps accessible?  Don’t people call taxis when they know where the want to be but not how to get there?  Also, the call centre drones seem far more keen on increasing the number of calls they handle than actually taking bookings, or being helpful.</p>
<p>So I asked a random girl who happened to be there if she knew the number of a taxi company other than 132227.  She told me 03-9689-1144 was the local mob (West Suburban Taxis).  When I called this number, I got an operator immediately, and they got me a cab in a couple of minutes, without asking me what the name of the street was.  All in all, a far better experience.  I don’t think I’ll remember the number, and I don’t know if they service all of Melbourne, but I’m definitely not calling 132227 again.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2010/06/05/cabs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Where’s my future?</title>
		<link>http://www.vastheman.com/blog/2010/02/13/future/</link>
		<comments>http://www.vastheman.com/blog/2010/02/13/future/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 14:19:07 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Uncategorised]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=146</guid>
		<description><![CDATA[It’s the 21st century: I should have a flying car, and a videophone, and a robot housekeeper. Well, I do have a videophone – a wireless one, in fact – but 64kbps H.263 is quite underwhelming if you grew up with images from 2001: A Space Odyssey and Back to the Future. But what’s really [...]]]></description>
			<content:encoded><![CDATA[<p>It’s the 21st century: I should have a flying car, and a videophone, and a robot housekeeper.  Well, I <em>do</em> have a videophone – a wireless one, in fact – but 64kbps H.263 is quite underwhelming if you grew up with images from 2001: A Space Odyssey and Back to the Future.  But what’s really upsetting me right now is the flying side of things.  I fly quite regularly, so I can no longer put it down do bad luck: flying in the 21st century is still unreliable at best.  At least half of my flights are delayed or cancelled.  I should be in Melbourne right now, but no, the flight was cancelled, and the next flight I can get isn’t until almost nine in the morning.  How does this happen?</p>
<p>You never get good help, either.  Everyone’s too busy to help, or claiming it&#8217;s not their job to help you.  The Virgin Blue posters that say, “Our service measures up…” are just plain insulting.  One thing that really grates on me is that there’s just about no way to get a refund if you’re not happy to catch another flight – they’ll only offer you a credit to spend on another flight.  Well excuse me, I’d rather spend the money on something other than your poor service, thank you very much.  In fact, I think the only way to actually get a refund is to ask your credit card provider to charge back the transaction (CBA will do this with no questions asked).  I believe you’re within your rights to do this – they haven’t delivered the service you paid for.</p>
<p>You might think it’s just the budget carriers, but that’s not the case.  I’ve had the same level of service from Qantas and United on international flights when things go wrong – no-one who wants to help, no reimbursement for inconvenience, and compensation only available in the form of credits or gift vouchers, as if you’d want to come back for more.  Man, if we treated clients like that where I work, we’d be out of business in no time.  Why do the airlines get away with it?</p>
<p>(And don’t get me started on Melbourne trains that don’t work when it’s too hot or too rainy…)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2010/02/13/future/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ethereal</title>
		<link>http://www.vastheman.com/blog/2010/02/06/ethereal/</link>
		<comments>http://www.vastheman.com/blog/2010/02/06/ethereal/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 09:42:24 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Uncategorised]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=141</guid>
		<description><![CDATA[I swear I must look like a ghost or something – people seem to think they can walk right through me! This one time, I was walking up the Sussex St ramp to the bridge from the city to Pyrmont, carrying a big bag of shopping, keeping to the left, and this guy was running down [...]]]></description>
			<content:encoded><![CDATA[<p>I swear I must look like a ghost or something – people seem to think they can walk right through me!  This one time, I was walking up the Sussex St ramp to the bridge from the city to Pyrmont, carrying a big bag of shopping, keeping to the left, and this guy was running down the ramp.  He slammed into my shoulder and bounced off, across into the opposite railing.  Then he turns around like he’s surprised and says sorry.  Excuse me, but what do you expect to happen?  Did you think you’d go straight through?  Or were you expecting to knock me down and keep running?</p>
<p><span id="more-141"></span></p>
<p>Then another time, I’m at Central Station looking for the rail replacement bus on the Eastern Suburbs line, carrying a box containing a microwave oven, and once again keeping as far to the side as possible.  These girls are walking four abreast in the opposite direction, and the one on the end walks into my box.  At this point, she stops moving, because the box and I act as a barrier, but she <em>keeps trying to walk</em> for several seconds before she decides it&#8217;s a good idea to go around me.  Speaking of people who keep trying when they’re going nowhere, an obese idiot in Woolworths at Town Hall tried walking through my shopping basket.  The way it pushed into his flab was morbidly fascinating.  When he realised I have corporeal presence, he got all offended.</p>
<p>Aa couple of days ago I was on my way home from work, crossing the south bridge in Rushcutters Bay Park, keeping as far to the left as I can, and a soccer player going the other way kind of half tries to avoid me.  Well there&#8217;s a wall on the side of the bridge to stop you falling off.  It&#8217;s not like I can walk through it, doofus.  Would it really be that hard to walk <em>behind</em> your bum chum while you pass me?  He definitely came off worse from the collision.</p>
<p>And just last night, I was getting off a train at Kings Cross (yeah, my local station is in a red light district), and the people  waiting to board were standing in a shoulder-to-shoulder wall.  Don’t you realise you’re going to have to board the train in file, anyway?  It’s not like a Tautliner – you have to go through the doors.  So I knocked my way through them.</p>
<p>These are just the more memorable collisions from the last few months.  There have been plenty more in the Bondi Junction bus terminal and Westfield that I’m not going to relate.  I’m really getting sick of it.  So what should I do?  Should I wear really tacky brightly coloured clothing?  Do I need a shirt that says, “Do I look like a ghost, doofus?”  I’m honestly at a loss at this point.</p>
<p>(This one time, though, I was at work late, and a bit stressed, and one of my colleagues said I was pale and sweating, and I looked like ghost – not the Casper kind of ghost, but more like a Japanese horror movie ghost that had just stepped out of the screen.  But I don’t think that’s the kind of ghost people would try walking through.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2010/02/06/ethereal/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>And?</title>
		<link>http://www.vastheman.com/blog/2010/02/04/and/</link>
		<comments>http://www.vastheman.com/blog/2010/02/04/and/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 11:12:00 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Technolgy]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=137</guid>
		<description><![CDATA[C++ defines a bunch of aliases for operators. These are kind of cool, and they can make code more readable at times – for example you can write things like: if ((dest bitor netmask) == bcdest and protocol == udp) But in typical C++ fashion, they chose to specify it in a completely brain-dead way. [...]]]></description>
			<content:encoded><![CDATA[<p>C++ defines a bunch of aliases for operators.  These are kind of cool, and they can make code more readable at times – for example you can write things like:</p>
<pre>if ((dest bitor netmask) == bcdest and protocol == udp)</pre>
<p>But in typical C++ fashion, they chose to specify it in a completely brain-dead way.  The names don’t alias the operators they’re named for, but their actual <em>punctuation representations</em>.  That means this is valid code:</p>
<pre>Address parse(const std::string bitand repr);</pre>
<p>The ability to do this doesn’t really help anyone, except lazy compiler vendors who want to implement the aliases as predefined macros.  But it gives us all one more WTF, and another tool in our arsenal for writing obfuscated code.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2010/02/04/and/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Naked</title>
		<link>http://www.vastheman.com/blog/2010/01/30/naked/</link>
		<comments>http://www.vastheman.com/blog/2010/01/30/naked/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 01:10:34 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Technolgy]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=129</guid>
		<description><![CDATA[As of yesterday, my Internet connection has finally started working. It’s been unbelievably frustrating, and I cannot in good conscience recommend naked ADSL Internet – I honestly thing it would be a better experience to get Telstra or Optus cable. There are too many levels of indirection between you and the people who actually get [...]]]></description>
			<content:encoded><![CDATA[<p>As of yesterday, my Internet connection has finally started working.  It’s been unbelievably frustrating, and I cannot in good conscience recommend naked ADSL Internet – I honestly thing it would be a better experience to get Telstra or Optus cable.  There are too many levels of indirection between you and the people who actually get stuff done with ADSL, and it would appear that communication is poor and contractors are incompetent.</p>
<p>I needed a brand-new service, as there was no existing POTS or DSL line – only Telstra cable and CATV.  There was a lengthy waiting period, and after the installation date, I called an electrician to wire up a socket.  It turned out the MDF hadn&#8217;t been tagged.  After much arguing, Internode sent someone out to tag it properly.  However, I had to call out (and pay) an electrician to jumper it.  So if your ISP tells you your MDF or boundary point is tagged, don’t believe them – check for yourself before you call out an electrician.</p>
<p>At this point, I had a socket connected to the correct cable and pair, but still no DSL.  Internode insisted that I find an analog telephone to listen to the line.  I want naked DSL – why should I need an analog telephone?  Anyway, I discovered that I had a POTS service of some kind, and even found out what its number was, and told Internode.  They informed me that they needed a technician to come and “perform tests”.  It took another week for the guy to come out, and he didn’t arrive on time.  He just confirmed what I’d told them: my socket was connected to the correct cable and pair, but had POTS service.  Apparently they don’t believe their customers.</p>
<p>After this, it took another day for the exchange to be patched correctly.  I now have a working Internet connection, but my high-speed ADSL2+ here is barely faster than my plain ADSL1 in Melbourne, and I now have to fight for a refund for the period when I was being billed for a service that didn’t work.  If you’re thinking of getting naked ADSL, save yourself the trouble and get something where a single vendor is responsible for the whole solution.  Cable Internet or ADSL with a Telstra DSLAM would be a whole lot less trouble.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2010/01/30/naked/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tiger</title>
		<link>http://www.vastheman.com/blog/2009/11/30/tiger/</link>
		<comments>http://www.vastheman.com/blog/2009/11/30/tiger/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 10:51:27 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Technolgy]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=127</guid>
		<description><![CDATA[Technology is definitely very good for making people lazy. I’m now too lazy too cook rice in a pot on a stove, so I need an automatic rice cooker. Now that I’m getting my Sydney pad set up, I need one to use up here. Having experienced how bad a Kambrook rice cooker is, I [...]]]></description>
			<content:encoded><![CDATA[<p>Technology is definitely very good for making people lazy.  I’m now too lazy too cook rice in a pot on a stove, so I need an automatic rice cooker.  Now that I’m getting my Sydney pad set up, I need one to use up here.  Having experienced how bad a Kambrook rice cooker is, I decided it would have to be one of the two brands I’ve had good experiences with – Panasonic or Tiger.  I initially tried finding one at Bing Lee, as they’re supposed to be the cheapest place for appliances, but they didn’t have either of my preferred brands.  Fortunately, I found a shop with a Tiger logo on the sign just across the road.</p>
<p>On entering the shop, I asked the lady which Panasonic and Tiger rice cookers she’d recommend, to which she replied, “You don’t want Panasonic – they’re made in China.”  She seemed to think that being made in China on its own is reason enough not to want to buy a product.  Not that it’s poorer quality, less reliable, or anything concrete – just that it’s made in China.  The fact that she was Chinese herself added an element of irony to the situation.  (She doesn’t stock any Chinese-made rice cookers anyway, so she doesn’t really give you a choice.)  The designers at Tiger seem to think being made in Japan is an important feature, too: it’s written in block letters right above the control panel on the one I ended up buying.</p>
<p>I’m a sucker for gadgets.  I really should’ve saved some money and bought the basic model that just cooks white rice, because that’s probably all I’ll ever do.  But for just $69 more I could get the new model that does white rice, brown rice, scorched rice, congee, steamed vegetables, stews, oden (おでん), and more.  It also has a timer, a clock that keeps and even displays the time when it’s unplugged, and a user-replaceable power cord.  How could I turn down all that extra awesomeness?  Now I can’t wait to move in, so I can cook something in it!  (I know, it’ll probably just be steamed white rice.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2009/11/30/tiger/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Internal Conflict</title>
		<link>http://www.vastheman.com/blog/2009/11/11/conflict/</link>
		<comments>http://www.vastheman.com/blog/2009/11/11/conflict/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 08:58:27 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technolgy]]></category>
		<category><![CDATA[VCS]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=124</guid>
		<description><![CDATA[(Just some background – at work we use DVCS with a one-branch-per-feature policy.) You know when you’ve got a few source control branches on the go, because you’ve been splitting time between a few features, but you’ve kind of been neglecting one, because it doesn’t feel like the most important thing to do? Don’t you [...]]]></description>
			<content:encoded><![CDATA[<p>(Just some background – at work we use DVCS with a one-branch-per-feature policy.)  You know when you’ve got a few source control branches on the go, because you’ve been splitting time between a few features, but you’ve kind of been neglecting one, because it doesn’t feel like the most important thing to do?  Don’t you hate it when you pull the latest mainline onto your neglected branch, and there are like a million changes, including adding/deleting/renaming files and major refactoring, and you get a bunch of merge conflicts?  You’re thinking, “Why do people have to change so much all the time?” and you just want to blame someone.  You know what makes it even worse?  When you take a closer look at the list of changes, and realise it’s all the stuff that you’ve been pushing on to the mainline.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2009/11/11/conflict/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mean</title>
		<link>http://www.vastheman.com/blog/2009/11/10/mean/</link>
		<comments>http://www.vastheman.com/blog/2009/11/10/mean/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 08:27:23 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Uncategorised]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=112</guid>
		<description><![CDATA[You know those people who say things to the effect of, “One in two people has below average intelligence,” with a really smug look on their face? The satisfaction they seem to get from flaunting their fundamental misunderstanding of statistics makes it pretty clear which side of average their intelligence falls on. Well, you either [...]]]></description>
			<content:encoded><![CDATA[<p>You know those people who say things to the effect of, “One in two people has below average intelligence,” with a really smug look on their face?  The satisfaction they seem to get from flaunting their fundamental misunderstanding of statistics makes it pretty clear which side of average their intelligence falls on.</p>
<p><span id="more-112"></span></p>
<p>Well, you either clicked a “read more” link, or you’re reading a full-text RSS feed.  Either way, I can talk about statistics now.  First of all, let’s establish what an average actually is.  The average, or mean, is defined as the sum of all values divided by the number of values.  It’s important to remember that outliers can have a big effect on the mean.  The <em>median</em> is the value with an equal number of values on either side of it, but that’s a different concept.  Here are some nice probability density functions:</p>
<p><img style="display: block; margin: 1.5em auto" src="/inc/2009/11/10/mean/mean.png" type="image/png" alt="Skew normal distributions" /></p>
<p>You’ve almost definitely seen the black curve before: it’s the so-called normal distribution, often called the bell curve.  It’s nice and symmetrical.  If a data set follows this distribution, a randomly selected value will be equally likely to be negative or positive (median of zero), and if you sum all the values and divide by the number of values, you’ll get zero (mean of zero).</p>
<p>The other two curves are skew-normal distributions.  The red curve has left skew (κ = ½), and the blue curve has right skew (κ = −½).  Both of these distributions still have a median of zero — with either of these distributions, a randomly selected value from a large data set is equally likely to be positive or negative.</p>
<p>But look at the way they trail away to one side.  Take the red curve — it stops rather abruptly on the right, but trails away off to the left.  These values bring the mean down.  The mean is less than zero for the left-skewed distribution, and greater than zero for the right-skewed distribution.  A randomly selected value is more likely to be higher than the mean for the left-skewed distribution, and more likely to be lower than the mean for the right-skewed distribution.  Less than half the values are below average for the red distribution, and more than half are below average for the blue distribution.  (The actual values of the means of these distributions are about −0.266 and 0.266 respectively.)</p>
<p>If that seems a bit abstract, we can make examples with small sets of real numbers, too.  For our first data set, let’s use {1, 3, 5, 7, 9}.  The statistics are pretty easy on this: sum of 25, mean of 5 and median of 5.  The average is 5, and a randomly selected value is equally likely to be on either side of 5.  The data has no skew.</p>
<p>Now let’s try a left-skewed data set: {1, 2, 5, 6, 6}.  The sum is 20, the mean is 4 and the median is 5.  A randomly selected value is clearly more likely to be greater than the average: there are three values greater than 4, compared to two values that are less.  The values are still evenly distributed around the median.</p>
<p>(A right-skewed data set with equivalent characteristics is {4, 4, 5, 8, 9} — you can work through it yourself if you want to see how it goes.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2009/11/10/mean/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You haven’t made it</title>
		<link>http://www.vastheman.com/blog/2009/07/31/you-havent-made-it/</link>
		<comments>http://www.vastheman.com/blog/2009/07/31/you-havent-made-it/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 11:19:23 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Uncategorised]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=109</guid>
		<description><![CDATA[I saw a guy driving a Porsche 911 Carrera S with roof racks. Now firstly, it looks pretty silly. Because there isn’t much roof length, the racks were comically close together. The curvature of the roof meant the rear rack needed to be taller than the front one to get them to roughly the same [...]]]></description>
			<content:encoded><![CDATA[<p>I saw a guy driving a Porsche 911 Carrera S with roof racks.  Now firstly, it looks pretty silly.  Because there isn’t much roof length, the racks were comically close together.  The curvature of the roof meant the rear rack needed to be taller than the front one to get them to roughly the same height, so they guy must have bought two pairs of roof racks and used one of each.  But that didn’t completely solve the issue: the racks were still at strange angles, so the tops weren’t level, and they wouldn&#8217;t have been able to carry very much load.</p>
<p>On top of the visual and practical issues, the guy had another big problem.  A Porsche is more of a status symbol than a car.  By driving a Porsche you’re trying to tell the world, “Look at me, I’m a success — I’ve bought the car that you can only dream about.”  But by putting roof racks on your Porsche, you’re saying, “I only <em>just</em> had enough money for this car.”  That, of course, is an admission that you couldn’t really afford the Porsche.  If you’d really arrived, you’d have another, more practical car to put the roof racks on.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2009/07/31/you-havent-made-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Not how it works</title>
		<link>http://www.vastheman.com/blog/2009/07/31/not-how-it-works/</link>
		<comments>http://www.vastheman.com/blog/2009/07/31/not-how-it-works/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 10:53:10 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technolgy]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=106</guid>
		<description><![CDATA[Goldman Sachs and UBS both seem to have had algorithmic trading code stolen and/or leaked recently. I haven’t seen an official statement from UBS, but a PR person from Goldman said something to the effect of, “Since the algorithms integrate with a large, proprietary system, we aren’t worried about this.” I realise that this person [...]]]></description>
			<content:encoded><![CDATA[<p>Goldman Sachs and UBS both seem to have had algorithmic trading code stolen and/or leaked recently.  I haven’t seen an official statement from UBS, but a PR person from Goldman said something to the effect of, “Since the algorithms integrate with a large, proprietary system, we aren’t worried about this.”  I realise that this person has the job of reassuring jittery investors that everything’s OK, but the statement shows a chronic lack of understanding that anyone should be able to see through.  Sure, I probably couldn’t just compile the code, drop the binary into my system and start trading.  But that’s not the point — there are two, very significant things I can achieve just by studying the code.</p>
<p>Firstly, I could determine an algorithm’s behaviour and reproduce it.  If Goldman’s algorithms are as good as they claim, the actual implementation detail should guarded closely.  If anyone could clone them, Goldman would lose their competitive advantage in algorithmic trading.</p>
<p>Secondly, I could possible study an algorithm’s behaviour and find a way to identify it and game it.  That way, if I reasonably suspect that a Goldman algorithm is trading a security, I could use my knowledge of its behaviour to my advantage.  If enough people with enough capital can game your algorithms, it can have a big impact on performance.</p>
<p>But it doesn’t really matter what I think of the announcement.  I just build systems — I’m not the one deciding where to send the money.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2009/07/31/not-how-it-works/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Illiteracy</title>
		<link>http://www.vastheman.com/blog/2009/06/29/illiteracy/</link>
		<comments>http://www.vastheman.com/blog/2009/06/29/illiteracy/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 12:40:11 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Uncategorised]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=102</guid>
		<description><![CDATA[The Age (the popular broadsheet newspaper in Melbourne) has sunk to the level of Slashdot. From Peter Martin’s article entitled “Choice considers Grocery Choice suit” published today: First, a costumer enters a postcode, then selects the most convenient nearby shops and then enters the quantities, weights and brands of the products they want. That isn’t [...]]]></description>
			<content:encoded><![CDATA[<p>The Age (the popular broadsheet newspaper in Melbourne) has sunk to the level of Slashdot.  From Peter Martin’s article entitled “Choice considers Grocery Choice suit” published today:</p>
<blockquote><p>First, a costumer enters a postcode, then selects the most convenient nearby shops and then enters the quantities, weights and brands of the products they want.</p></blockquote>
<p>That isn’t a simple transposition typo — there are two letters between the transposed letters.  It’s either a chronic misunderstanding of the language or an inability to type combined with an over-reliance on a spell-checker.  What happened to proof-reading and copy editing?  What happened to knowing how to spell?  This is what you would expect from self-obsessed bloggers or tweeters, not professional journalists!</p>
<p>(There is a remote possibility that he chose a random occupation in order to flesh out the hypothetical shopper’s character, and just made a choice that unfortunately looks like a common error.  However, this is no excuse — if this was the case, he should have chosen a more interesting profession, like pool cleaner for instance.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2009/06/29/illiteracy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maybe next year</title>
		<link>http://www.vastheman.com/blog/2009/04/13/linux/</link>
		<comments>http://www.vastheman.com/blog/2009/04/13/linux/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 08:20:31 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Technolgy]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=99</guid>
		<description><![CDATA[It still isn’t the year of Desktop Linux. People may be ready to move away from Windows, but Linux still isn’t ready for them. Let me tell you about my recent operating system experiences. It all started when my venerable Pentium III died. (Well it didn’t quite die outright, but the power supply became unreliable.) The [...]]]></description>
			<content:encoded><![CDATA[<p>It still isn’t the year of Desktop Linux.  People may be ready to move away from Windows, but Linux still isn’t ready for them.  Let me tell you about my recent operating system experiences.  It all started when my venerable Pentium III died.  (Well it didn’t quite die outright, but the power supply became unreliable.)  The primary reason for me keeping it alive was for ATO eTax.  It’s kind of sad that I had a computer that I only really used once a year, but there you go.  I used its death as an excuse to buy a new Mac Mini.  It’s capable of running Windows for eTax, and it can run x64 Linux for SDLMAME, and OS X for random cool stuff.  The new Mini has FireWire 800 (as opposed to 400 on the old one) and NVIDIA 9400M integrated graphics (as opposed to Intel on the old one), which addressed my primary complaints about its predecessor.</p>
<p>Of course it came with OS X installed, so the first thing I did was update it, tweak it to my liking and install tablet and printer drivers.  That was all painless, and I had a fully functional Mac/X11/BSD system in no time.  Buoyed by my success, I decided to install Windows XP.  Boot Camp Assistant took a while to do the live repartitioning, but it worked, and I had a FAT32 partition to play with.  The machine booted from the XP install CD, and I proceeded to format the partition as NTFS and install Windows.  It took a long time, and I had to restart about ten times during the install, update and driver install process, but in the end I had a working Windows installation, too, and I could switch between OS X and XP on boot.  That was enough for one night.</p>
<p><span id="more-99"></span></p>
<p>I downloaded and burned the Fedora 10 x64 live CD, as it seemed like the path of least resistance.  That was where my luck ran out.  Trying to create a partition for Linux wasn’t anywhere near as smooth as creating one for Windows.  Using Disk Utility while booted from the hard disk went nowhere.  Apparently the live partitioning feature isn’t that stable.  Booting from the OS X install DVD allowed me to repartition the disk, though.</p>
<p>Next, I tried restarting from the Fedora live CD, but no joy.  Didn’t get past the firmware’s OS selection menu.  Switching the machine off and booting from the CD worked, though.  But then I was left with just a blinking cursor — X11 wouldn’t start.  I realise that they won’t put the NVIDIA drivers on the CD because they aren’t “free” (as in beards), but shouldn’t it at least be able to choose a VESA driver for compatibility in the event that it doesn’t recognise your hardware?  Windows manages to do that.  Lack of X11 didn’t stop me switching to a console to do stuff, though.  So I logged in and used parted to reformat my Linux partition as ext3, and then created a contiguous 2 GB file to use for swap space.</p>
<p>Since I’d played with the partition map, I had to fix BOOT.INI for Windows.  But now I had a problem: despite correctly identifying the GPT partition scheme, and not altering the layout at all, parted had somehow managed to damage the GPT in such a way that only one partition would show up in any OS X utilities, and attempting to verify the OS X boot partition with Disk Utility caused the system to hang.  It also screwed up the fake MBR so Windows wouldn’t boot at all.  After several hours of messing around with partition table editors, I did manage to fix it without losing anything, though.  Then I booted to a Windows recovery console (using the install CD) and fixed up BOOT.INI (by incrementing the partition number).  I was back to having working OS X and Windows, with the dubious benefit of also having a blank ext3 partition.  By this stage, I was pretty pissed off with Linux and considering installing Solaris just to make myself feel better.  But it was time to sleep again.</p>
<p>Thinking about this the next morning, I realised that I now knew how to fix the partition map if I managed to screw it again.  This emboldened me enough to give Linux another shot.  (Yet another example of why I should I shouldn’t think so much.)  I booted from the live CD and got the console up again.  This time I hacked up the X11 configuration to force the VESA driver.  That got me a desktop.  I noticed that my tablet was working properly (take that, stupid Ubuntu live CD), and started the installer.  It had to format my ext3 partition again (so much for the contiguous swap file), but it seemed to go through its thing.  Then at the very end, it told me that the install had failed.  It hadn’t screwed anything up this time, though.  So I had a system with a working OS X installation, a working Windows installation, a working Windows installation, and a non-working Linux installation.</p>
<p>On the advice of other Fedora users, I downloaded and burned the Fedora net install CD.  Booting from this one got me X11 using a VESA driver straight away.  However, my tablet didn’t work at all.  What’s with that?  It provides an HID pointing device interface for compatibility that OS X, Windows and even the boot menu in the Mac firmware can use, but Linux can’t.  But anyway, I did manage to work my way through the installation process using the keyboard.  It took quite a while to download everything, but it didn’t fail at the end this time, and it did yield a working installation.</p>
<p>After booting from my new Linux installation, I was pleased to see that it was using a working VESA driver for X11 video, and the tablet was working.  It also recognised my external RAID, and mounted HFS+ and NTFS partitions.  It was quite easy to configure RPM Fusion repositories and install the proper NVIDIA drivers.  That got me higher resolution and better performance.  I had to install the glibc compatibility package before I could install my printer’s drivers, but that was easy, too.  So in the end, I got the lovely triple-boot system that I’d imagined.</p>
<p>But despite the fact that it worked quite well in the end, it wasn’t a simple process, and definitely wasn’t something a typical user could have achieved.  Considering how unreliable the live CD is, it should be marked as unstable or experimental, and users should be steered away from it.  If parted can’t deal with GPT, it should give you some kind of warning before it trashes your partition map.  A common graphics tablet should at least give you basic pointer functionality.  Bloat like GJC (which is completely broken), the Evolution mail client and Gutenprint/foomatic (only needed if you have a cheapo printer with no PostScript) shouldn’t be part of a default install.</p>
<p>Fifteen years ago, you needed to be technically adept to install any operating system.  If you weren’t good with computers, you’d call your technically inclined friend or relative to help you out.  In a way, no operating system was really “ready for the desktop” back then.  Linux feels like it’s still at that point.  Once it’s up and running, it’s fine, but to get it there, you need considerable problem-solving skills and/or friends to help you out.  Windows and OS X have got past that point — anyone could install either of them.  Linux really does have some serious catching up to do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2009/04/13/linux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>I’m cheering</title>
		<link>http://www.vastheman.com/blog/2009/04/08/cheering/</link>
		<comments>http://www.vastheman.com/blog/2009/04/08/cheering/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 10:11:42 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Politics]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=95</guid>
		<description><![CDATA[I’m really glad Nick D’Arcy has been dumped by Swimming Australia. Athletes should be held to a high standard of behaviour, being in the public eye as they are. Other sporting bodies should take note. What I’m not impressed by are the idiotic media statements made by D’Arcy’s supporters. Here’s a sample of what his [...]]]></description>
			<content:encoded><![CDATA[<p>I’m really glad Nick D’Arcy has been dumped by Swimming Australia.  Athletes <em>should</em> be held to a high standard of behaviour, being in the public eye as they are.  Other sporting bodies should take note.  What I’m not impressed by are the idiotic media statements made by D’Arcy’s supporters.  Here’s a sample of what his coach Brian Stehr had to say:</p>
<blockquote><p>I’m still in shock.  When do you stop punishing somebody.  Fair enough he did the wrong thing, he did a silly thing, he knows that, everyone knows that, but this is getting ridiculous now.</p></blockquote>
<p>They’ve stopped punishing him – he got a suspended sentence.  He did more than a silly thing, he violently assaulted someone in a public place.  He brought swimming into disrepute.  Representing the country in a sport is a <em>privilege</em>, and Darcy’s shocking behaviour has resulted in him losing this privilege.</p>
<p>Here’s one from Nick D’Arcy’s father Justin D’Arcy:</p>
<blockquote><p>It is now seemingly a matter of every other sporting body that&#8217;s subordinate to this (the Australian Olympic Committee) just lining up in a queue to punish him for precisely the same thing.</p></blockquote>
<p>Are you completely blind?  Your son violently assaulted someone in a public place.  That kind of behaviour has consequences.  He brought this on his own head.  He’s only received a suspended sentence — a slap on the wrist.  By his own stupidity, he’s given up the privilege of representing Australia in elite sport.</p>
<blockquote><p> This sort of news for young people can be absolutely devastating.</p></blockquote>
<p>Well, I never would have imagined…  Come to think of it, maybe people would get upset about being punched in the face in a public place, too.  Now who was it that did that?  Oh, I remember: it was your stupid, violent, aggressive son!</p>
<blockquote><p> It doesn’t matter whether you’re an elite cyclist, an elite swimmer, or someone else who’s given years of their lives to one of these major sporting bodies, there has to be some compassion at least in the way this news is delivered.</p></blockquote>
<p>Compassion?  They should make an example of him!  They need to send out a message that <em>this is not acceptable behaviour</em>, and hopefully other athletes will take note.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2009/04/08/cheering/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Generated Copy Constructors Considered Evil</title>
		<link>http://www.vastheman.com/blog/2009/04/04/constructors/</link>
		<comments>http://www.vastheman.com/blog/2009/04/04/constructors/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 03:40:30 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Technolgy]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=85</guid>
		<description><![CDATA[Sometimes I really hate C++. Not just dislike it, but really, really hate it. This week, one of the most horrible language “features” got me again: the generated copy constructor. I understand why they exist — they’re necessary to allow C structures to be passed by value no extra effort. However, their behaviour causes a [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes I really hate C++.  Not just dislike it, but really, really hate it.  This week, one of the most horrible language “features” got me again: the generated copy constructor.  I understand why they exist — they’re necessary to allow C structures to be passed by value no extra effort.  However, their behaviour causes a world of pain that should never have been inflicted on developers.</p>
<p><span id="more-85"></span></p>
<p>I have a template class — let’s call it <tt>Foo</tt>.  It used to have a couple of non-trivial constructors and assignment operators:</p>
<pre>template &lt;typename T&gt;
class Foo
{
public:
    Foo(T* = 0);
    Foo(const Foo&lt;T&gt;&amp;);
    ~Foo() throw();

    Foo&lt;T&gt;&amp; operator=(T*);
    Foo&lt;T&gt;&amp; operator=(const Foo&lt;T&gt;&amp;);

    ...
};</pre>
<p>This all works fine — user-defined constructors and assignment operators are used in all cases.  But one day, I realise that I can simplify some code by making the constructors and assignment operators more general:</p>
<pre>template &lt;typename T&gt;
class Foo
{
public:
    Foo(T* = 0);
    template &lt;typename U&gt;
    Foo(const Foo&lt;U&gt;&amp;);
    ~Foo() throw();

    Foo&lt;T&gt;&amp; operator=(T*);
    template &lt;typename U&gt;
    Foo&lt;T&gt;&amp; operator=(const Foo&lt;U&gt;&amp;);

    ...
};</pre>
<p>Instead just being able to construct or assign from the same class, you should be able to construct or assign from any instantiation of the template.  But this caused things to break all over the place.  Can you see why?  The compiler will now generate a copy constructor and assignment operator.  To stop the compiler from generating them, you need not just a constructor/operator <em>general enough</em> to accept an instance of the same class, but a constructor/operator that takes an instance of <em>exactly the same</em> class.  To make it work, I need to do this:</p>
<pre>template &lt;typename T&gt;
class Foo
{
public:
    Foo(T* = 0);
    Foo(const Foo&lt;T&gt;&amp;);
    template &lt;typename U&gt;
    Foo(const Foo&lt;U&gt;&amp;);
    ~Foo() throw();

    Foo&lt;T&gt;&amp; operator=(T*);
    Foo&lt;T&gt;&amp; operator=(const Foo&lt;T&gt;&amp;);
    template &lt;typename U&gt;
    Foo&lt;T&gt;&amp; operator=(const Foo&lt;U&gt;&amp;);

    ...
};</pre>
<p>There’s another case where this can easily trip you up.  Consider this:</p>
<pre>class Fish
{
    ...
};

class Salmon : public Fish
{
public:
    Salmon(const Fish&amp;);

    ...
};</pre>
<p>Counter-intuitively, a generated copy constructor will be used to construct <tt>Salmon</tt> from other instances of <tt>Salmon</tt> derived classes; the user-defined constructor will only be used to construct <tt>Salmon</tt> from instances of <tt>Fish</tt> and other derived classes thereof.</p>
<p>The current counter-intuitive behaviour makes it too easy to end up with broken code.  The issues could have been avoided in a number of ways:</p>
<ul>
<li>No generated copy constructors/assignment operators</li>
<li>Suppress generated copy constructors/assignment operators in the presence of user-defined copy constructors/assignment that are general enough to accept an instance of the same type (or to think of it another way, give the generated copy constructor/assignment operator lower precedence than all user-defined constructors/assignment operators)
</li>
<li>Suppress generated copy constructors/assignment operators<br />
in the presence of <em>any</em> user-defined constructors/assignment operators</li>
</ul>
<p>While I’m excited about some of the new features in C++0x, I can’t help but dread that some of them will be implemented in equally brain-dead ways.  Move semantics is one that comes to mind immediately.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2009/04/04/constructors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Books</title>
		<link>http://www.vastheman.com/blog/2009/03/15/books/</link>
		<comments>http://www.vastheman.com/blog/2009/03/15/books/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 11:48:14 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Uncategorised]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=71</guid>
		<description><![CDATA[Who exactly thought this sign was a good idea? After careful consideration, I think it means a book will set you back $35, but you must pay with exactly one $5 note, one $10 note and one $20 note — other combinations will be rejected. Literacy really is on the decline. Also, what’s with the [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 0 1em; float: right" src="/inc/2009/03/15/books/books.jpg" type="image/jpeg" alt="Books" /></p>
<p>Who exactly thought this sign was a good idea?  After careful consideration, I think it means a book will set you back $35, but you must pay with exactly one $5 note, one $10 note and one $20 note — other combinations will be rejected.  Literacy really is on the decline.</p>
<p>Also, what’s with the horizontal text alignment?</p>
<div style="clear: both">
<p style="height: 1em"></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2009/03/15/books/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spam for Spam</title>
		<link>http://www.vastheman.com/blog/2009/01/30/spam/</link>
		<comments>http://www.vastheman.com/blog/2009/01/30/spam/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 11:37:39 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Technolgy]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=69</guid>
		<description><![CDATA[My comment spam filter has picked up a couple of spam comments of a new breed recently: spam comments advertising comment spamming services. It’s a bit odd on a number of fronts. First of all, why waste resources you could be using to push out spam for your clients? Or has the economic downturn affected [...]]]></description>
			<content:encoded><![CDATA[<p>My comment spam filter has picked up a couple of spam comments of a new breed recently: spam comments advertising comment spamming services.  It’s a bit odd on a number of fronts.  First of all, why waste resources you could be using to push out spam for your clients?  Or has the economic downturn affected the spammers’ business, too?  Secondly, the comments were collected by my spam filter.  That means the only person who will see them is me.  And because the comments were caught by the filter, I’d be pretty dubious as to their ability to get anything advertising my services past anyone else’s filters.  All in all, it doesn’t seem to be good business.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2009/01/30/spam/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Slurpee Crisis</title>
		<link>http://www.vastheman.com/blog/2009/01/29/slurpee-crisis/</link>
		<comments>http://www.vastheman.com/blog/2009/01/29/slurpee-crisis/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 09:27:07 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Uncategorised]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=67</guid>
		<description><![CDATA[It’s undeniable that this week has been hot in Melbourne. Temperatures were in the mid 40s (over 110°F for the Celsius challenged). You don’t want to go outside, and there are three bushfires burning in the state. On top of that, Melbourne’s infrastructure doesn’t seem to be built for summer. There were over 200 cancelled [...]]]></description>
			<content:encoded><![CDATA[<p>It’s undeniable that this week has been hot in Melbourne.  Temperatures were in the mid 40s (over 110°F for the Celsius challenged).  You don’t want to go outside, and there are three bushfires burning in the state.  On top of that, Melbourne’s infrastructure doesn’t seem to be built for summer.  There were over 200 cancelled train services in the evening peak; traffic was terrible; there were problems with the electricity supply in the afternoon.</p>
<p>But as if that wasn’t bad enough, there was a severe Slurpee shortage in the CBD.  By four o’clock, most of the 7‑Elevens only had empty machines or liquid on offer.  I hope this crisis is resolved in a timely manner.  If it isn’t, it could lead to discontent, civil disorder or even deadly riots.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2009/01/29/slurpee-crisis/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Connotations</title>
		<link>http://www.vastheman.com/blog/2008/12/26/connotations/</link>
		<comments>http://www.vastheman.com/blog/2008/12/26/connotations/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 07:47:03 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Language]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=61</guid>
		<description><![CDATA[SBS showed Gérard Pirès’ film Les Chevaliers du Ciel last night. It’s got fast jets and hot girls, and it’s set against the backdrop of beautiful France. What’s not to like? I’ll tell you what — the stupid English translation of the film title: Sky Fighters. The French title means “Knights of the Sky” which, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sbs.com.au/">SBS</a> showed Gérard Pirès’ film <a href="http://en.wikipedia.org/wiki/Les_Chevaliers_du_Ciel">Les Chevaliers du Ciel</a> last night.  It’s got fast jets and hot girls, and it’s set against the backdrop of beautiful France.  What’s not to like?  I’ll tell you what — the stupid English translation of the film title: Sky Fighters.</p>
<p>The French title means “Knights of the Sky” which, besides sounding a lot classier, has completely different connotations.  You see, when we think of knights, we think of honour, chivalry and adventure; when we think of fighters on the other hand, we just think of, well, fighting…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2008/12/26/connotations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Save with…</title>
		<link>http://www.vastheman.com/blog/2008/08/15/save/</link>
		<comments>http://www.vastheman.com/blog/2008/08/15/save/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 11:45:19 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Uncategorised]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=59</guid>
		<description><![CDATA[The irony is screaming: It makes me laugh every morning I walk past!]]></description>
			<content:encoded><![CDATA[<p>The irony is screaming:</p>
<p><img src="/inc/2008/08/15/save/zagame.jpg" type="image/jpeg" alt="Zagame" /></p>
<p>It makes me laugh every morning I walk past!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2008/08/15/save/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unlimited but Useless</title>
		<link>http://www.vastheman.com/blog/2008/08/02/unlimited/</link>
		<comments>http://www.vastheman.com/blog/2008/08/02/unlimited/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 14:48:41 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Phones]]></category>
		<category><![CDATA[Technolgy]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=56</guid>
		<description><![CDATA[Mobile data was one of the coolest things that came with GSM: I could connect a serial cable to my Nokia 5110 and get ISDN connectivity everywhere. It was billed at one cent per second and ran at about 9600 bits per second. Now most GSM and UMTS handsets can run a PPP server to [...]]]></description>
			<content:encoded><![CDATA[<p>Mobile data was one of the coolest things that came with GSM: I could connect a serial cable to my <a href="http://en.wikipedia.org/wiki/Nokia_5110" type="text/html">Nokia 5110</a> and get ISDN connectivity everywhere.  It was billed at one cent per second and ran at about 9600 bits per second.  Now most GSM and UMTS handsets can run a PPP server to allow a computer connected via Bluetooth or USB to access packet data services.  Of course, since airtime is a limited resource, most carriers meter your use of mobile data services and charge proportionally.  However, some US carriers are offering unlimited data use on certain contracts, and I believe AT&amp;T’s iPhone contracts that include unlimited data usage are disadvantaging iPhone users on other carriers and stifling development.</p>
<p><span id="more-56"></span></p>
<p>I’m with Hutchison/3 in Australia, and they have provide three packet data services: MMS service (pay per message sent – unmetered data), the “walled garden” (pay based on services used – unmetered data) and the wild Internet (pay based on usage).  I use the “walled garden” quite a bit – I get free news an weather, so I read it on my way to and from work.  I also pay a flat fee for unlimited e-mail use.  I occasionally use the expensive Internet service when I’m somewhere out and about and I decide I need to get online for something.  When I do, the phone looks like a Bluetooth modem to the computer, and I can use the connection as I wish (provided I pay the bill at the end of the month).  I can also use the Internet service with applications that run on the phone, but I don’t do that very often.</p>
<p>Now if I had unlimited data usage included in my contract, I’d probably feel a need to be online while out and about a lot more.  Let’s face it: when something’s free, we use it more.  But if everyone did this, the networks would be brought to their knees by the huge amount of traffic.  So AT&amp;T need some way to stop iPhone owners from actually taking advantage of the “unlimited data” in their contracts.</p>
<p>The way they’ve done this appears to be by making a deal with Apple to cripple the iPhone: it won’t work as a Bluetooth or USB modem, and Apple won’t allow applications that would generate lots of traffic on the cellular network.  So VoIP applications are only allowed on WiFi, and <a href="http://www.theregister.co.uk/2008/08/01/apple_nixes_netshare/" type="text/html">they’ve pulled Nullriver NetShare</a>, an application that allows the iPhone to act as a modem, from the application store (to be fair, Nullriver was asking for trouble, considering their previous claim to fame was an installer for putting bootleg applications on “jailbroken” iPhones).</p>
<p>But the rest of the world doesn’t have unlimited data usage.  We pay for the data we send and receive over the air.  So why can’t we use it as we wish?  It’s a bit unfair to restrict everyone to make AT&amp;T happy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2008/08/02/unlimited/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>On Spaghetti</title>
		<link>http://www.vastheman.com/blog/2008/07/27/spaghetti/</link>
		<comments>http://www.vastheman.com/blog/2008/07/27/spaghetti/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 13:42:35 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Technolgy]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=51</guid>
		<description><![CDATA[Most programming languages have flow control features of some kind. Yeah, I know there are some languages that lack them, for example early programmable shader languages, some macro languages, and I think some programmable calculators just run a program straight through from beginning to end. But by and large, programming languages provide ways to jump [...]]]></description>
			<content:encoded><![CDATA[<p>Most programming languages have flow control features of some kind.  Yeah, I know there are some languages that lack them, for example early programmable shader languages, some macro languages, and I think some programmable calculators just run a program straight through from beginning to end.  But by and large, programming languages provide ways to jump around within the code and write decision-making logic.</p>
<p>Fairly early on, people realised that the only things you really need for flow control are a way to make a comparison, and a way to conditionally jump to another point in the program based on the result of a comparison.  On top of these primitives, you can build flow structures that are as complex as you like.  If you look at the native machine code that computers run, you can see that this has really been taken to heart: most CPUs provide a way to store the result of a comparison and one or more conditional jump instructions.  Early programming languages like BASIC and Fortran had flow control based entirely on these primitives, too.  If you learned to program on an 8-bit personal computer, you’ll no doubt remember writing statements like “<b>IF </b><i>condition</i><b> THEN GOTO </b><i>line</i>” all the time.</p>
<p>But in 1968, this form of flow control was about to get a major setback (at least in high-level languages), because Edsger Dijkstra had written what was to become a highly influential letter entitled “A Case Against the Goto Statement”.  You probably don’t know it by this name, though, because it was published in CACM under the title “ Go To Statement Considered Harmful” (Niklaus Wirth, a CACM editor at the time, changed the title for publication).  This letter criticised the <i>goto</i> statement and the form of flow control associated with it, instead advocating structured programming.</p>
<p><span id="more-51"></span></p>
<p>Most modern high-level programming languages are designed with structured programming in mind: simple statements can be grouped into compound statements (with <b>begin</b> and <b>end</b> delimiters in Pascal, or with curly braces in C or Java), and flow control is based around these compound statements.  For example, and <b>if</b> statement can be used to conditionally skip over a compound statement.  Essentially, compound statements are the basic building block from which you build your structured code.  Poor <b>goto</b> has survived to varying degrees: it’s present but rarely used in C and Pascal, and is a reserved word with no function in Java, for example.</p>
<p>The crusade against the <b>goto</b> statement has continued unabated.  Most programming lecturers will advise against its use, or neglect to mention its existence.  Programs that make use of it are referred to as “spaghetti code” because flow control can conceivable jump from any given point to any other given point.  This can make code difficult to understand, debug or modify.  However, in spite of this, I think Dijkstra’s message is being largely ignored.</p>
<p>You see, the beauty of structured code, and part of what makes it easy to understand (and consequently easy to debug and modify), is that code blocks only have a single entry point and a single exit point – program flow enters the block at the beginning, continues through it linearly, and leaves it at the end.  All flow control statements operate on entire blocks – an <b>if</b> statement skips an entire block if the condition is not met.  The <b>goto</b> statement obviously violates this principle, as program flow can be made to jump to an arbitrary point.  And that’s why Dijkstra criticised it: because it causes program flow to deviate from the program’s structure.  However, despite the ongoing crusade against <b>goto</b>, several other flow control structures that effectively do the same thing are being encouraged.  These include loop control statements (<b>continue</b> and <b>break</b>), C-style return statements and exceptions.  Let’s have a look at each of them.</p>
<p>First up, let’s think about loops.  A loop will have some kind of condition that must be maintained in order for it to run, and a block of code that runs while the condition is maintained.  Now this block, like any other block of code in a structured program, will have a natural entry point at the top and an exit point at the bottom.  The loop itself has an exit point after the loop condition is evaluated.  But when you add a <b>continue</b> statement, you’re adding <em>another exit point</em> to the loop body.  You can no longer say that the loop body will be entered at the top and left at the bottom.  In fact, <b>continue</b> may as well just be shorthand for doing a <b>goto</b> that jumps to the end of the loop body.  A <b>break</b> statement is slightly worse: it’s like a <b>goto</b> that jumps to a point just outside the loop – it’s not only adding an additional exit point to the loop body, but adding an exit point to the loop itself!</p>
<p>C-style <b>return</b> statements are similar: they add exit points to functions (effectively a <b>goto</b> that jumps to the end of the function body).  I do realise that there isn’t really much you can do about them, though – there isn’t any other way to return a value from a function.  The best you can really do is to only ever place one <b>return</b> statement in a function, and to place it at the end of the body.  (Pascal lets you return a value by assigning to the name of the function, so there’s no excuse there.)</p>
<p>Now neither of these are really any better or worse than <b>goto</b> statements.  They’re just like shorthand <b>goto</b> statements where the destination is implied.  If you use them, fair enough – just be aware of the consequences, and think twice before you criticise <b>goto</b> again, because your code is starting to look like spaghetti, too.</p>
<p>But exceptions are the worst of all.  Exceptions are like a <b>goto</b> where you <em>don’t know the destination!</em>  Think about it: throwing an exception could jump to somewhere in the same function, or somewhere up the call stack.  You just don’t know where it will land  (The only thing they can’t do that a <b>goto</b> can is to jump backwards within a code block.)  Use of exceptions means you don’t know whether a function call will return, or jump somewhere else.  Worst of all, in C++ simply unwinding an object could cause an exception to be thrown, which will most likely lead to a memory leak.</p>
<p>To deal with exceptions properly, you need to write ugly code.  Languages like Java help you out a bit with <b>finally</b> blocks.  But you still have to remember to wrap anything that needs cleaning up in a <b>try</b> block and to place the clean-up code in the corresponding <b>finally</b> block – the language can’t make you code properly.  So now you’re code is littered with <b>try</b>…<b>finally</b> constructs.</p>
<p>Of course, the C++ way has to be the ugliest: <abbr title="Resource Allocation is Initialisation">RAII</abbr>.  If you need to clean something up, you need to make a small class with the thing that needs to be cleaned up in the constructor, and the clean-up code in the destructor, and remember to be very careful to ensure you won’t throw an exception from the destructor, because then you’re really screwed.  Now create an instance of this class and make sure it’s unwound at the point where you need the clean-up to occur.  Now your code is littered with these small classes that are only really there in case an exception is thrown.  You also can’t see the program flow properly, because it will be jumping to all these little destructors.  And you want to hope you don’t need to try stepping through it in a debugger, because that’s an absolute nightmare.</p>
<p>There’s one place that exceptions are even more evil, if that’s possible: Objective-C++.  There is no proper way to deal with exceptions in Objective-C++ because C++ frames will not be properly unwound when an Objective-C exception is thrown.  (Objective-C exceptions are generally only thrown in truly exceptional circumstances, so it isn’t such a big problem in practice, but that’s beside the point.)</p>
<p>So why don’t we bring back <b>goto</b>?  We’re doing all the things that make it harmful – we’re just kidding ourselves by refusing to call it what it is.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2008/07/27/spaghetti/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Good as a Getz?</title>
		<link>http://www.vastheman.com/blog/2008/07/02/getz/</link>
		<comments>http://www.vastheman.com/blog/2008/07/02/getz/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 12:14:33 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Technolgy]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/?p=50</guid>
		<description><![CDATA[Can someone explain to me why car magazines love the Hyundai Getz so much? Wheels gave it “Gold Star Car” in 2007; SHEdrives gave it “Best First Car” in 2007; it even got the NRMA/RACV/RACQ/AA “Best Small Car” in 2003 and 2005. I can’t for the life of me see why. Someone sideswiped my car, [...]]]></description>
			<content:encoded><![CDATA[<p>Can someone explain to me why car magazines love the <a href="http://en.wikipedia.org/wiki/Hyundai_Getz">Hyundai Getz</a> so much?  Wheels gave it “Gold Star Car” in 2007; SHEdrives gave it “Best First Car” in 2007; it even got the NRMA/RACV/RACQ/AA “Best Small Car” in 2003 and 2005.  I can’t for the life of me see why.  Someone sideswiped my car, and the <a href="http://www.barnetmbr.com.au/">smash repair place</a> has given me a Getz to drive for now.  Now I know I can’t expect a loaner to be a particularly nice car, but I used to own a 2004 <a href="http://en.wikipedia.org/wiki/Toyota_Vitz">Echo</a>, and I’ve spent enough time driving <a href="http://en.wikipedia.org/wiki/Nissan_Pulsar">Pulsars</a>, so I think I have a point of reference.</p>
<p>From the moment you sit down, you notice how cheap it feels.  It has that hard, nasty, cheap plastic they’ve chosen for the steering wheel and dashboard.  It isn’t comfortable, either.  I’m not tall, but the seat feels too high.  The gearstick seems a long way away down where they’ve placed it.  It doesn’t feel good to drive, either.  The brake pedal has very little travel and doesn’t give proportional resistance.  The turning circle is too big for such a small car.  The engine doesn’t deliver, either – you put your foot down and wait for something to happen; at least with an Echo, when you put your foot down it revs eagerly, and you definitely feel the pull at 6,000 rpm.</p>
<p>Sure they’ve thrown in lots of features, like power windows, power mirrors, audio controls on the steering wheel (which are on the wrong side – they belong on the left) and an MP3/WMA compatible CD player.  But it doesn’t change the fact that that the car is lacking where it matters; extras don’t make a bad car better.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2008/07/02/getz/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Goodbye</title>
		<link>http://www.vastheman.com/blog/2008/04/12/goodbye/</link>
		<comments>http://www.vastheman.com/blog/2008/04/12/goodbye/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 11:07:04 +0000</pubDate>
		<dc:creator>vastheman</dc:creator>
				<category><![CDATA[Uncategorised]]></category>

		<guid isPermaLink="false">http://www.vastheman.com/blog/index.php/2008/04/12/goodbye/</guid>
		<description><![CDATA[Yesterday was simultaneously the best and worst day I’ve had working for ITG. It was the best because I just realised how good I’ve got it: I’m tuning applications for performance on Solaris – I really am doing what I enjoy at work. It just hit me that people when tasks are allocated, people actually [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday was simultaneously the best and worst day I’ve had working for ITG.  It was the best because I just realised how good I’ve got it: I’m tuning applications for performance on Solaris – I really am doing what I enjoy at work.  It just hit me that people when tasks are allocated, people actually get to choose the tasks that they’re most interested in.  That’s not the most common scenario you’ll find.</p>
<p>But it was also the worst day so far, because it was the last day I’d be working with Bruce.  I really do wish you all the best in what you’ve chosen to do, but selfishly I wish we didn’t have to let you go.  We’ll all miss you, both professionally, because you have so much knowledge of the industry and company, and personally, because you’re a great guy to have around.</p>
<p><span id="more-49"></span></p>
<p>In so many ways, you’re my polar opposite: you’re softly spoken, non-confrontational, vegetarian, tee-totalling and you like to develop in interpreted languages.  From the interview onwards, you gave me a great introduction to the company, and you’ve taught me a lot in the short time we’ve worked together.</p>
<p>I’ll miss the conversations; I’ll miss pairing with you; I’ll miss having you there at lunch time; I’ll even miss biting my tongue to stop myself singing along when I can just hear the percussion of <i>Smooth Criminal</i> leaking from your headphones.</p>
<p>I hope things work out for you with the new job in Sydney, and that your family handles the transition well.  All the best from psycho Vas!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vastheman.com/blog/2008/04/12/goodbye/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
