<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-12320765</id><updated>2011-08-30T00:28:35.806+09:30</updated><category term='WP7'/><category term='Sport'/><category term='Gaming'/><category term='Life'/><category term='Technology'/><category term='Programming'/><category term='Review'/><category term='Politics'/><title type='text'>Lounging with Laany</title><subtitle type='html'>All things Laan - Programming, Politics, and other random rantings.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://laany.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12320765.post-8758660642089127190</id><published>2011-03-18T12:00:00.003+10:30</published><updated>2011-03-18T12:08:38.195+10:30</updated><title type='text'>Automatic Upgrade from .NET 2 to .NET 3.5</title><content type='html'>&lt;p align="justify"&gt;Our core application suite is currently based on .NET 2, C# 2, VS2005, with a few dependencies on libraries from 3.0 and 3.5. I decided to perform a trial upgrade of the solution into VS2010, as I am using it for all new work and hate to revert back to 2005.  &lt;/p&gt;&lt;p align="justify"&gt;To start, I simply created a branch of the source, and then loaded the solution into VS2010. I waited for some time, and then eventually the import wizard completed – the result was a set of fully loaded .NET 2.0 projects within VS2010 – That seemed too easy! Of course, getting everything to compile was a different story. As stated above, several of the projects had taken some dependencies on 3.0 libraries – specifically WCF and WPF, and these projects longer compiled. Unfortunately they represented some core libraries within our project suit so this meant the solution was broken.  &lt;/p&gt;&lt;p align="justify"&gt;Instead of spending too much time finding out why, I converted these projects to the 3.5 framework via the project properties dialog and proceeded to compile – it soon became apparent however that I would be better off upgrading all projects in the same way, yet I didn’t have the time to upgrade 120 projects within the solution via the properties window..  &lt;/p&gt;&lt;p align="justify"&gt;Of course I knew that there had to be a better way, and having read about other attempts to do the same, II decided to write a macro to do the upgrade. Avner Kashtan provided a method &lt;a href="http://weblogs.asp.net/avnerk/archive/2008/05/25/upgrading-all-projects-to-net-3-5.aspx"&gt;here&lt;/a&gt; to process the projects within the solution like this:  &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; proj &lt;span class="kwrd"&gt;As&lt;/span&gt; Project &lt;span class="kwrd"&gt;In&lt;/span&gt; DTE.Solution.Projects&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre&gt;   &lt;span class="kwrd"&gt;Try&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;       proj.Properties.Item(&lt;span class="str"&gt;"TargetFramework"&lt;/span&gt;).Value = 196613&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre&gt;       Debug.Print(&lt;span class="str"&gt;"Upgraded {0} to 3.5"&lt;/span&gt;, proj.Name)&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;   &lt;span class="kwrd"&gt;Catch&lt;/span&gt; ex &lt;span class="kwrd"&gt;As&lt;/span&gt; Exception&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="csharpcode" align="justify"&gt;&lt;pre&gt;       Debug.Print(&lt;span class="str"&gt;"Failed to upgrade {0} to 3.5"&lt;/span&gt;, proj.Name)&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="csharpcode" align="justify"&gt;&lt;pre class="alt"&gt;   &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Try&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="csharpcode" align="justify"&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;Next&lt;/span&gt; proj&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt;    color: black;&lt;br /&gt;    font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;    background-color: #ffffff;&lt;br /&gt;    /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum &lt;br /&gt;{ &lt;br /&gt;    color: #606060; &lt;br /&gt;}&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="justify"&gt;I tried this but it didn’t do much – it turns out that Solution.Projects returns only the child nodes of the solution, which from my solution was simply 7 solution folders – so this didn’t work. Of course, I realised that I could rewrite this macro to be recursive so that I could traverse the hierarchy and process it that way.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This is what I came up with:&lt;br /&gt;&lt;/p&gt;&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;Sub&lt;/span&gt; Upgrade()&lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; project &lt;span class="kwrd"&gt;As&lt;/span&gt; EnvDTE.Project &lt;span class="kwrd"&gt;In&lt;/span&gt; DTE.Solution.Projects&lt;/pre&gt;&lt;pre class="alt"&gt;        UpgradeProject(project)&lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;Sub&lt;/span&gt; UpgradeProject(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; Project)&lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; projectItem &lt;span class="kwrd"&gt;As&lt;/span&gt; EnvDTE.ProjectItem &lt;span class="kwrd"&gt;In&lt;/span&gt; Project.ProjectItems&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; childProject = &lt;span class="kwrd"&gt;TryCast&lt;/span&gt;(projectItem.&lt;span class="kwrd"&gt;Object&lt;/span&gt;, EnvDTE.Project)&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;If&lt;/span&gt; childProject IsNot &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;            UpgradeProject(childProject)&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;Next&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;If&lt;/span&gt; Project.Kind = PrjKind.prjKindCSharpProject &lt;span class="kwrd"&gt;Then&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        Project.Properties.Item(&lt;span class="str"&gt;"TargetFramework"&lt;/span&gt;).Value = 196613&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;style type="text/css"&gt;&lt;br /&gt;&lt;br /&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt; font-size: small;&lt;br /&gt;    color: black;&lt;br /&gt;    font-family: consolas, "Courier New", courier, monospace;&lt;br /&gt;    background-color: #ffffff;&lt;br /&gt;    /*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt; background-color: #f4f4f4;&lt;br /&gt; width: 100%;&lt;br /&gt; margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum &lt;br /&gt;{ &lt;br /&gt;    color: #606060; &lt;br /&gt;}&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;p align="justify"&gt;This macro ran reasonably quickly and did the upgrade with the visible effect of changing all the project files to refer to the new framework version.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I then recompiled everything successfully.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Nice!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-8758660642089127190?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/8758660642089127190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2011/03/automatic-upgrade-from-net-2-to-net-35.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/8758660642089127190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/8758660642089127190'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2011/03/automatic-upgrade-from-net-2-to-net-35.html' title='Automatic Upgrade from .NET 2 to .NET 3.5'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-5436865947365613267</id><published>2010-10-25T23:31:00.004+10:30</published><updated>2010-10-26T00:24:39.750+10:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='Review'/><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>Windows Phone 7 First Impressions</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.unbeatable.co.uk/images/uploaded_images/HTC-7-Trophy-Windows-Phone-7-preorder-UK.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 350px; height: 260px;" src="http://www.unbeatable.co.uk/images/uploaded_images/HTC-7-Trophy-Windows-Phone-7-preorder-UK.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I'm not a usual candidate to be the first kid on the block with the new toys - I usually like to let things settle down first - but this time I took a punt.. Not 100% sure why, but I've been telling myself that this time I could write some code to run on the phone, so that would make it worth the trouble. Since Windows Phone 7 is silverlight based, and developed in C#, I couldn't resist.&lt;br /&gt;&lt;br /&gt;I've been developing in .NET and C# so it was a natural fit - my first thoughts though have nothing to do with the developer experience however, since I soon discovered that even '&lt;a href="http://en.wikipedia.org/wiki/Sideloading"&gt;sideloading&lt;/a&gt;' and app on to the phone from my local Visual Studio wouldn't be possible without purchasing a developer unlock for $100. Although something I'll consider if/when I get an app worth depolying, I was still a little surprised. I had expected to deploy locally for free - naively I realise now, in retrospect, given that MS has decided to control deployment ostensibly to maintain standards via the marketplace..&lt;br /&gt;&lt;br /&gt;As for the phone itself, I was an early buyer - early on the 22nd of October. Telstra, the most prominent Australian telco shipped the phone the day before and I received a text late that afternoon telling me to hurry to avoid disappointment. As it turns out, I have heard that others did get disappointed with limited stock, but at least from the Rundle Mall Testra Store, there was at least a few left when I arrive 9am Friday morning (so much for going to work!)&lt;br /&gt;&lt;br /&gt;Price&lt;br /&gt;&lt;br /&gt;At the end of the day, I care about the price, it's not purely about function, it has to meet the features/dollar ratio in my mind - and in this case, I actually thought Telstra had this one totally sorted in my favour. $49 cap, with $400 worth of calls and 500MB data on the NextG network? &lt;a href="http://www.telstra.com.au/mobile/phones/windows7/index.html?ti=TR:TR:Oct10:htcmozart:TCOMindex:325x200"&gt;Rediculous&lt;/a&gt;. I was expecting to pay $79 for this at least, and thought I would thus need some convincing. My old Nokia plan was the same price and was on Vodafone, slow data and old (N95) handset.. In the end tt was a simple swap actually, for no real outlay.. Awesome! now you know why I was an early adopter!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Physical Appearance&lt;br /&gt;&lt;br /&gt;I bought the HTC Mozart and my initial response was very good - I like the weight, size, shape and overall appearance - granted it's not quite as single chassis iPhone style, but it feels well built and comfortable to hold - it fits well in my pocket without feeling either bulky or heavy. The screen repsonsive to touch too. The soft buttons do have to be avoided though, but this was sorted out after a few hours of use.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;UI&lt;br /&gt;&lt;br /&gt;The interface is different, and overall I don't mind it. The tile concept is well put together especially the live data within each tile - even the simple colour scheme is ok to me, I'm not really sure why so many iFreaks are hating on in, I'm yet to see why a standard icon is that much more effective.., and I don't mind the hubs concept either.&lt;br /&gt;&lt;br /&gt;The graphics looks great - smooth hardware based transitions looks slick, the way you move around the page feels very natural. The metaphor of panorama or pivot style pages works well. I didn't see too many apps that got thi&lt;/span&gt;&lt;span style="font-size:100%;"&gt;s too wrong.. a few did, but th&lt;/span&gt;at's not surprising!&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;As for the secondary app list, I don't know.. Can't say I'm convinced. I will wait to see how many apps I settle on before passing judgement.  Although I'm not a huge fan of the iPhone app array as a great UI metaphor (kind or reminds me of Windows Explorer View Lists), on the other the idea has some merit, since it doesn't take long for the app list of WP7 to get a bit long. I wouldn't mind if this is swappable with a 3rd party but at this stage I haven't seen anything like this - I suspect this will change in a latter OS upgrade (at least, I *hope* it will!) though, as the volume of apps goes up.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Apps&lt;br /&gt;&lt;br /&gt;I was pleasant'y surprised at the number of apps in the market place on day 2 - There was something in every problem space I enquired about. Not bad for such early days. Obviously the quality varies, but I only had to download an try a few apps for various things to get a good 'base' collection. I did have to remove the Yellow Pages app after a while when I realised it was based on old data, and wasn't Australian enough to be useful. It is listed as a beta product though, so I hope to try it again later once the issues are ironed out. I actually bought a few apps too, a few games and some baby pleasers too - my toddler loves to press the screen, so why not touch the animal to hear some noises. Just a little fun at a $1.30!!&lt;br /&gt;&lt;br /&gt;Facebook, Twitter, YouTube are all there and provide some decent 'basic' coverage of those sites capabilities. Not bad for free.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Quibbles&lt;br /&gt;&lt;br /&gt;I had some initial difficulty getting some games to load in the app store (err. marketplace), but in the end I discovered that the games were installing, but don't appear in the app list itself - *only* in the game hub.. obviously it makes sense but since I didn't read the manual (dude RTFM..) I had to discover it myself.&lt;br /&gt;&lt;br /&gt;There have been a few other quibbles too - It's hard to apportion blame at this stage so I'll just detail what I discovered. Hopefully others have more insight.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Outlook Integration - fails when the company certificate is self signed. Usually apps just ask for you to accept it anyway - but there is no setting for this that I could see. Obviously the company needs to get there exchange server act together, but I am told iPhone and Android phones within the office all accept the certificate as is.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Google Calendar Sync - my wife and I run our whole 'eLife' via google apps, and have a calendar for each of us as well as our daughter. 90% of my app events exist on my wife's calendar, so having them all sync into the phone is critical, but alas, no. Not only does my calendar not sync correctly (it does allow me to write from phone to gCal, ) my 'other' shared calendars don't appear at all. I read somewhere that others have claimed the same problem, and that WP7 only syncs to gCal when there is only one calendar and this is a known issue. Wish I had read that one earlier!&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;IE7 - not the most polished app I've ever used. sometimes the zoom rendering is a little laggy catching up with the resizing. overall though, I expected it to be much worse. Didn't try using a site with some modern CSS or HTML though so no doubt things go a bit funky on that end - I hope this changes soon though.. Perhaps an IE9 Mobile version is pending?&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Predicitive texting - is actually awesome, but is a quibble because not all text entry uses it. Don't know why not.. surely this is a device level function?? strange, such an excellent feature, wish it was everywhere.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Copy/Paste - I know I know, you know and I know it's coming. I don't really need it much anyway (so far) but I would have thought it wasn't too hard to include up front &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:100%;"&gt;Overall&lt;br /&gt;&lt;br /&gt;I don't think I want to speculate about the success of WP7 too much, but suffice to say I like it, and will definitely consider writing an app for this OS soon. I think once the quibbles are ironed out it will be a good platform. I only hope that the anti-MS types don't get too much mindshare.. I really don't see a problem with more competition in the mobile space, and hope that MS can push the envelop and then the entire industry (including general software development) will benefit.&lt;br /&gt;&lt;br /&gt;Lastly, I was showing the phone of to my father-n-law yesterday, and I learnt he bought the same one on the same plan this morning.. Nice!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-5436865947365613267?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/5436865947365613267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2010/10/windows-phone-7-first-impressions.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/5436865947365613267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/5436865947365613267'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2010/10/windows-phone-7-first-impressions.html' title='Windows Phone 7 First Impressions'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-6536385364805152220</id><published>2010-07-21T19:15:00.010+09:30</published><updated>2010-07-28T19:23:15.686+09:30</updated><title type='text'>Powershell Scripting Book - first thoughts</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.manning.com/payette/payette_cover150.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 150px; height: 188px;" src="http://www.manning.com/payette/payette_cover150.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As part of my endeavour to learn a new language this year (and hopefully every year), I decided to improve my  .NET and general Windows development workflow with Powershell. It's not only a great scripting tool, but a complete language, and actually quite handy as a &lt;a href="http://en.wikipedia.org/wiki/Read-eval-print_loop"&gt;REPL&lt;/a&gt; too, when working with .NET types.&lt;br /&gt;&lt;br /&gt;In order to maximize my learning time, I turned to Manning and  bought the 'early access program' book for &lt;a href="http://www.manning.com/payette/"&gt;Windows Powershell In Action&lt;/a&gt;. I am a huge fan of the early access program, and have bought more than 10 books now.. Again I wasn't disappointed, as it is a good entry level book to the syntax and idioms that make Powershell so, well.. powerful.&lt;br /&gt;&lt;br /&gt;Once I had mastered the syntax, using the canned examples within the book, I decided to take the plunge and write a few 'real world' scripts. It didn't take me too long until I had started incorporating Powershell into my everyday development cycle.&lt;br /&gt;&lt;br /&gt;My 'new work' script looks something like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;param&lt;br /&gt;(&lt;br /&gt;  [string]$name = $(throw "a branch name is required")&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;. .\Scripts\Utilities.ps1&lt;br /&gt;&lt;br /&gt;Stop-&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Servers&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Invoke-Expression .\Create-Branch.ps1 "BUG_$name"&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Invoke-Expression .\Setup-Config.ps1&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Invoke-Expression .\Build-Source.ps1&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Invoke-Expression .\Build-Database.ps1&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Start-Servers&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;The whole process automates a lot of the drudgery of creating a branch, switching to it, patching the many config files (via XPath), doing a full build, rebuilding the database, etc. Fantastic!&lt;br /&gt;&lt;br /&gt;What is more surprising is that these processes were done each and every time by each developer manually until I suggested we script them..  What's more, each had their own special way to achieve the end result, which made things difficult when we integrate branches and get a consistent working environment.&lt;sigh&gt;&lt;br /&gt;&lt;br /&gt;I am still trialling these scripts, and the many others that I have written to manage random files and processes on the fly, however I am having lots of fun and have even managed to remove some drudgery from a home-centric file operation ritual I do all the time.. This will have to wait for another post however..&lt;br /&gt;&lt;br /&gt;HINT: I'm downloading and transferring podcasts to my phone.. (I use RSS via google reader and DownThemAll currently - it's very manual..)&lt;br /&gt;&lt;/sigh&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-6536385364805152220?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/6536385364805152220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2010/07/powershell-podcast-downloader.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/6536385364805152220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/6536385364805152220'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2010/07/powershell-podcast-downloader.html' title='Powershell Scripting Book - first thoughts'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-716151939413005333</id><published>2010-03-25T09:08:00.005+10:30</published><updated>2010-05-05T14:14:29.340+09:30</updated><title type='text'>Media Center Goes Win 7 - Finally</title><content type='html'>It's hard to believe that I first built my media center back in &lt;a href="http://laany.blogspot.com/2007/02/diy-home-theatre-pc-htpc.html"&gt;2007.&lt;/a&gt; When I initially set it up, my plan was to use Windows XP and run &lt;a href="http://www.team-mediaportal.com/"&gt;Media Portal&lt;/a&gt;. After a few abortive attempts and getting everything running with my hardware, I gave up and moved to Media Center 2005 (XP). After further configuration woes (due to dodgy hardware and/or drivers), it has worked basically flawlessly since.&lt;br /&gt;&lt;br /&gt;I was happy with this configuration, and it remained unchanged, until I bought Windows Vista.. MY tuner cards didn't work any more, and the interface ran too slow for my wife to accept. Needless to say, that copy of Vista still sits in a box somewhere, never to see the light of day again.&lt;br /&gt;&lt;br /&gt;With the recent release of Windows 7, I knew the time was right to try again&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Ka2owuRE_qE/S6qaL6eyxyI/AAAAAAAAAE0/vB4vE_DhLMI/s1600/imgIn_Win7.gif"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 120px; height: 100px;" src="http://2.bp.blogspot.com/_Ka2owuRE_qE/S6qaL6eyxyI/AAAAAAAAAE0/vB4vE_DhLMI/s200/imgIn_Win7.gif" alt="" id="BLOGGER_PHOTO_ID_5452339828353058594" border="0" /&gt;&lt;/a&gt; - I knew there were lots of good features for MC, and I was keen - only problem was that my hardward (tuner cards) *still* didn't work. This time though, I was feeling a bit more keen on spending some money, so I discarded my tuner card (actually I gave it to my brother-n-law, who has made it work in Win 7!), and I bought two dual-tuner cards &lt;span style="font-weight: bold;"&gt;and&lt;/span&gt; a 1TB hard drive for TV only.&lt;br /&gt;&lt;br /&gt;These cards are &lt;a href="http://www.hauppauge.co.uk/site/products/data_hvr2200mc.html"&gt;Hauppauge 2200&lt;/a&gt; and they 'just worked'. Now the only problem was that the interface was a bit sluggish on a busy screen (e.g. Recorded TV - we have a &lt;span style="font-style: italic;"&gt;lot&lt;/span&gt; of recorded shows).&lt;br /&gt;&lt;br /&gt;I looked at everything obvious (or so I thought), and eventually I realised, much to my own embarrassment, that the HTPC only had 1GB of ram! I don't really recall way back there in 2007, but 1GB was probably not too bad.. As my wife pointed out, &lt;span style="font-style: italic;"&gt;even her netbook has more ram&lt;/span&gt;. Too true.&lt;br /&gt;&lt;br /&gt;A quick trip to &lt;a href="http://www.msy.com.au/Parts/msy.htm"&gt;MSY&lt;/a&gt; (great prices, worst web site ever) and 4 GB, for a lousy $105 and now the Win7 Media Center is looking awesome.&lt;br /&gt;&lt;br /&gt;One last thing - having visited my place several times and viewed the beast that is my HTPC, my stepfather has decided he wanted one too - despite my encouragement to &lt;span style="font-weight: bold;"&gt;get a TiVo&lt;span style="font-weight: bold;"&gt;. &lt;/span&gt;&lt;/span&gt;I beg you.. But no.. He bought &lt;a href="http://www.altech.com.au/maestro/default.aspx?pfm=10"&gt;one&lt;/a&gt; anyway, and a big screen TV, and a nice new stereo. It will be a good setup, when he gets it working.. :-)&lt;br /&gt;&lt;br /&gt;Given that he's not technical, I've committed a few hours to the cause so far, but as of last night, we are not quite there yet.. I think we're close though, with only the channels tuning to be done. Somewhat poorly, I think, the supplier (in a different city), left the channels configured when he shipped it - thus, when we booted it, it listed all the 'correct' channels, but no guide listings, and no reception. It took me a while to realise that these were for Melbourne (or perhaps Brisbane?), but the bub had had enough so we went home with the problem unresolved..&lt;br /&gt;&lt;br /&gt;Ahh.. Why didn't he just buy TiVo?&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;EDIT&lt;/span&gt;: After a little tweaking (faulty tuner, wrong city config) it is all working a treat, and the supplier was good about replacing the faulty tuner too&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-716151939413005333?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/716151939413005333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2010/03/media-center-goes-win-7-finally.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/716151939413005333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/716151939413005333'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2010/03/media-center-goes-win-7-finally.html' title='Media Center Goes Win 7 - Finally'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Ka2owuRE_qE/S6qaL6eyxyI/AAAAAAAAAE0/vB4vE_DhLMI/s72-c/imgIn_Win7.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-879925036640912888</id><published>2010-02-17T07:52:00.007+10:30</published><updated>2010-02-17T09:22:43.593+10:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Gaming'/><title type='text'>Open Source RTS Engine</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.laanfamily.com/images/ta.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 276px; height: 207px;" src="http://www.laanfamily.com/images/ta.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I had a brief window of opportunity to play a game a few weeks ago - the first I've played on my computer for a few years. I used to be a hard-core real time strategy (RTS) player, but with work, house, wife and child, their is never enough time!&lt;br /&gt;&lt;br /&gt;The game itself is called &lt;a href="http://springrts.com/"&gt;Spring&lt;/a&gt;, and is an open source RTS engine. The implementation is inspired from Total Annihilation (1997) and more recently, from it's modern equivalent Supreme Commander (2007). The basic idea is a classic RTS paradigm, with base building, resource collecting and domination being the primary methods of success.&lt;br /&gt;&lt;br /&gt;The feature which I enjoy the most is the use of metal as salvageable resource from the remnants of the battle field. A favourite strategy is to allow the enemy near to your base to allow easy access when picking over the carcasses of the dead (it's only robots, no blood!!).&lt;br /&gt;&lt;br /&gt;Also, I really appreciated (in the original TA), that the command system is entirely queued. Simply hold down shift, and initiate a sequence of commands. It is essentially fire-n-forget. Back in 97, this concept was revolutionary.. It is still awesome today.&lt;br /&gt;&lt;br /&gt;What I particularly like - besides being open source - is that the game play is very similar to my recollections of TA, but with better graphics and sound.&lt;br /&gt;&lt;br /&gt;The game is separated into the engine, modifications (mods), and maps, such that there are various mods available, some ostensibly require a licence to the original TA (it uses its units model and rule data), and others are complete fabrications of new rules, units, AIs, and scenarios. There are both open source and paid mods, such as a futuristic (Sci-Fi), WW2, and Star Wars themed mods.&lt;br /&gt;&lt;br /&gt;I have been playing the Balanced Annihilation (BA) mod only at this stage, since it has the familiar units and rules of the original Total Annihilation game.&lt;br /&gt;&lt;br /&gt;After approx. 20 hours of gaming, I can now give a fair review of the engine, the AIs, the mod, and the lobby:&lt;br /&gt;&lt;br /&gt;The lobby is the weakest link in this suite, although it does work, I have found it crashes, has a lot of 'nag' dialogs when failing to connect to a server (even when playing single player), and in general is a bit dull (it appears to be a standard windows form application, nothing special..). It is functional, and provides some good mechanisms for downloading content as required.&lt;br /&gt;&lt;br /&gt;The engine is very good, but requires a better graphics card than I have to fully appreciate the feature set it offers. I found the game is responsive with medium unit volumes, but since I prefer high response times to great graphics, I generally played with these settings on low.&lt;br /&gt;&lt;br /&gt;Since I needed a lot of practice before I could commit to the multi-player game, I spent all my time with the bundled AIs. Some are definitely better than others, E323AI and RAI I beleive the ones I competed against. One is easy ot beat, as soon as the game's mechanics are mastered, but the other one (I think it was E323AI), is a difficult one to handle, especially early game! I suspect that these AI processes are reducing the performance of the game overall, but still performed admirably.&lt;br /&gt;&lt;br /&gt;The BA mod is a faithful recreation of the game I remember, and has been so good that I am yet to entertain the thought of loading up any other mods at this time! I will do this at some time though - Time permitting, of course!&lt;br /&gt;&lt;br /&gt;For some screenshots, see &lt;a href="http://springrts.com/media.php"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Well done to the guys over at Spring RTS, this is a worthwhile project, and I hope to get some time in the future to peruse the source for my self.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-879925036640912888?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/879925036640912888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2010/02/open-source-rts-engine.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/879925036640912888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/879925036640912888'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2010/02/open-source-rts-engine.html' title='Open Source RTS Engine'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-5276832149659213386</id><published>2009-10-21T07:26:00.007+10:30</published><updated>2009-10-21T10:29:45.867+10:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>SQL Formatter Released!</title><content type='html'>&lt;div style="text-align: justify;"&gt;Although, not finished by any stretch, I have released my first draft of the Laan.Sql.Formatter to 'production'.&lt;br /&gt;&lt;br /&gt;I have provided 3 deliverables - each providing access to SQL Formatting for different purposes:&lt;br /&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Sql Server Management Studio 2008 (SSMS) Plugin&lt;/li&gt;&lt;li&gt;Ad-hoc Sql Formatter Web Page&lt;/li&gt;&lt;li&gt;Sql Formatter Log4Net Appender (for use with NHibernate)&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;Further, the SSMS plugin provides a second feature - code template expansions. I've 'borrowed' the idea shamelessly from DevExpress' CodeRush (awesome tool), but without all the trappings. In my version, you can only expand a template that you know and remember (no visual clues - sorry, this *may* come some day), Also, the template list can't be edited/added/removed (yet).&lt;br /&gt;&lt;br /&gt;For more information, and to obtain an installer for the plugin, go to the project &lt;a href="http://code.google.com/p/sqlformat/"&gt;site&lt;/a&gt;, or directly to the &lt;a href="http://code.google.com/p/sqlformat/downloads/list"&gt;download&lt;/a&gt; page. There is also a download for the NHibernate Appender, with some simple documentation on it's use still to come. To play with the formatter, you can go to my &lt;a href="http://code.laanfamily.com/"&gt;web site&lt;/a&gt; as per my last blog entry.&lt;br /&gt;&lt;br /&gt;If you find an issue, or have a feature request, you can add it &lt;a href="http://code.google.com/p/sqlformat/issues/list"&gt;here&lt;/a&gt; - but don't bother to log an issue regarding missing formatting options - I know I need to add some, eventually, but my plan is to get the core functionality done first.&lt;br /&gt;&lt;br /&gt;Also, I would appreciate it if someone could  provide a code review of my work so far. There is no doubt some of it needs more work, especially within the formatter assembly.. All code is available via svn hosted on google code, so it's easy to get access to a read only file set, or on the download page on the above link. If you are interested, let me know, or just send me an email of your review or blog it.&lt;br /&gt;&lt;br /&gt;I hope you find these tools useful, I know I have..&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-5276832149659213386?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/5276832149659213386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2009/10/sql-formatter-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/5276832149659213386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/5276832149659213386'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2009/10/sql-formatter-released.html' title='SQL Formatter Released!'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-2350997928817499507</id><published>2009-05-28T08:40:00.003+09:30</published><updated>2009-05-28T08:50:47.609+09:30</updated><title type='text'>Laan SQL Formatter (alpha) is online!</title><content type='html'>Finally, after much wailing and nashing of teeth, I've delivered my first draft (alpha) of my SQL code formatter.  There's not much too it, simply enter (or copy) your SQL into the top, hit convert, and the bottom will (should!) supply the formatted result!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.laanfamily.com/"&gt;code.laanfamily.com&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also, I will soon be releasing an NHibernate Appender which raps this functionality into a FormattedSqlFileAppender, once I get the appender subclassing working correctly.&lt;br /&gt;&lt;br /&gt;Currently, the formatter (and even the parser, behind the scenes) is quite limited.  It only supports SELECT statements, without UNION and SELECT..INTO modifiers.  I believe there is full expression syntax parsing, but some aspects of expressions are still not formatted - e.g., bracketed sub expressions.&lt;br /&gt;&lt;br /&gt;I will keep modifying it over time, as time permits (baby is now 6 weeks away!), but hopefully I can quickly implement INSERT, UPDATE and DELETE, CREATE TABLE and CREATE VIEW statements fairly rapidly.  Then I'll work towards doing batched SQL instead of single statements, which will open the door for stored procedures.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Stay tuned!&lt;br /&gt;&lt;br /&gt;P.S. Interested in the code? check it: &lt;a href="http://code.google.com/p/sqlformat/"&gt;http://code.google.com/p/sqlformat/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-2350997928817499507?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/2350997928817499507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2009/05/laan-sql-formatter-alpha-is-online.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/2350997928817499507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/2350997928817499507'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2009/05/laan-sql-formatter-alpha-is-online.html' title='Laan SQL Formatter (alpha) is online!'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-2837786896405736858</id><published>2008-09-03T10:42:00.005+09:30</published><updated>2008-09-03T14:33:47.439+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>NHibernate SQL Logger</title><content type='html'>&lt;p&gt;As a traditional SQL 'backend' developer, I've always relied on SQL Profiler to let me know what is happening in the back end at any given point, but now that I'm using NHibernate for our persistence layer, I've found that the SQL that is generated is not very readable. If you've used NHibernate you'll know what I mean!    &lt;br /&gt;    &lt;br /&gt;Besides the aliased fields, I don't like the fact that the entire statement is packed onto one line, and is using the sp_exec statement for parameter passing - Not very readable.     &lt;br /&gt;    &lt;br /&gt;In order to remedy this, I configured an appender within log4net that allows the SQL to be pushed to its own file, with the following config: &lt;/p&gt;  &lt;pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;logger&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;NHibernate.SQL&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;appender&lt;/span&gt;-&lt;span style="color: #ff0000"&gt;ref&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ref&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;nh&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;level&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;ALL&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;logger&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;where &amp;quot;nh&amp;quot; is just a standard Log4Net file appender. This works, but still means I have to dissect the SQL and reformat it as I go. &lt;br /&gt;  &lt;br /&gt;Of course, this is not ideal, so I have decided to write a small log4net appender that formats this output. The only problem is that I will need to write an SQL formatter! Not trivial. &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;In the interim, I have written a rough 'formatter' which simply uses find and replace to get the SQL slightly readable.&amp;#160; It places each field on its own line, and creates distinct blocks for each join.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;    FieldA,&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;    FieldB,&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;    FieldC&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;FROM dbo.Table1 &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; T1&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;JOIN dbo.Table2 &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; T2&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;  &lt;span style="color: #0000ff"&gt;ON&lt;/span&gt; T1.Field1 = T2.Field1&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;JOIN dbo.Table3 &lt;span style="color: #0000ff"&gt;AS&lt;/span&gt; T3&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;  &lt;span style="color: #0000ff"&gt;ON&lt;/span&gt; T2.Field2 = T3.Field2&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;  &lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;WHERE T3.Field4 = 1&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;  &lt;span style="color: #0000ff"&gt;AND&lt;/span&gt; T2.FieldA &amp;lt;&amp;gt; 0&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;It’s not perfect, and will place new lines in regardless of whether they are necessary, but it does substitute parameters so generally it does the job!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;If you happen to read this and think this sounds like something you &lt;strong&gt;*must*&lt;/strong&gt; have, let me know.. It’s quite easy to use, simply reference the assembly, and place this into the log4net config:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;appender&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;sqlFormatter&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;NHibernate.Appender.NHibernateAppender,NHibernate.Appender&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;param&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;FileName&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;C:\Logs\MatrixSQL.log&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;appender&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;and then reference it accordingly within the NHibernate.SQL logging level:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;logger&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;NHibernate.SQL&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;appender&lt;/span&gt;-&lt;span style="color: #ff0000"&gt;ref&lt;/span&gt; &lt;span style="color: #ff0000"&gt;ref&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;sqlFormatter&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;      &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;level&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;&amp;quot;ALL&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre style="font-size: 12px; margin: 0em; width: 100%; font-family: monospace; background-color: #ffffff"&gt;    &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;logger&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The next step will be to build a reasonable SQL parser, so that I can create a syntax tree of the statements in order to present them neatly.&amp;#160; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;To get this happening I will need a tokeniser (lexer), a grammar parser, and a formatter.&amp;#160; Sounds like an interesting project. I’ll make this project available on GoogleCode at some point, assuming that I’m making progress.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-2837786896405736858?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/2837786896405736858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2008/09/nhibernate-sql-logger.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/2837786896405736858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/2837786896405736858'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2008/09/nhibernate-sql-logger.html' title='NHibernate SQL Logger'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-5098372607313554301</id><published>2007-04-29T18:28:00.003+09:30</published><updated>2008-10-02T11:12:04.933+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Chào ban! - Greetings from North Vietnam</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="color: rgb(51, 204, 0);font-family:verdana;font-size:100%;"  &gt;We lost our luggage in Hanoi.  3 trips to the airport    (50 mins away from Hanoi) and 24 hours later, we're ready to start out &lt;span id="st" name="st" class="st"&gt;Vietnam&lt;/span&gt;    holiday!...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);font-family:verdana;font-size:100%;"  &gt;&lt;span id="st" name="st" class="st"&gt;Vietnam&lt;/span&gt; is so under-developed and filthy but fantastically    cultural!!   Life here is like nothing of what we're used    to.   Communication is really bad here - no one speaks    English!!  There are people hawking their wares of all sorts all over the    streets... our money means so much to them. Amazingly, there are no beggars to    be seen!  Stray cats and dogs everywhere. No fast food chains. People eat    on road side stalls and squat on little stools on the footpaths.  Ladies    in traditional Ao Dai (Vietnamese get ups) walking the streets with rice paddy    cone shaped hats and carrying poles on their shoulders with baskets hanging    off them storing fruit or snacks to sell, or balancing baskets of goods on top    of their heads in the middle of the city. And the traffic!!  Sheez -We    have never seen so many motorbikes in all our life!!  It's just like on    telly!  Hardly any traffic lights, no one obeys road rules, everyone    drives on the wrong side of the road, playing chicken is standard play and the    adrenelin pumps each time you attempt to cross the road!  You'll    definitely find the famous 25c bowls of noodles here, but they are Lin size,    not Ben size!  Meals at regular restaurants and cafes are about $1-2,    beers are ridiculously cheap between 50c and $1.  The only place in the    world where cans of iced tea or coke are more expensive than beer. Alcohol in    general is dirt cheap.  Ben's drink of the trip is Long Island Iced    Tea.  At $5 a pop, you can just imagine...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);font-family:verdana;font-size:100%;"  &gt;Hanoi has such a    French influence.  The architecture is pretty and lots of French words    everywhere. It was FREEZING!!  No one told us we had to bring    jackets!!  It averaged 15-18 degrees during our stay!  We had to    buy parkas and beanies &lt;span id="st" name="st" class="st"&gt;from&lt;/span&gt; the locals just to keep warm!  I was chuffed at my $5 purchase that certainly did it's job at keeping me cozy!  Ben's parka purchase was not so easy - try looking for a jacket to fit a 6'3" anglo built male in a country where the average male is my height and half Ben's build!  Nevertheless, we managed to find a Nike rip-off for $25 (+pants) which was almost too warm for Ben's liking!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);font-family:verdana;font-size:100%;"  &gt;Hoi An is a    gorgeous town stuck in old school.  Roads in the old town are not bitumen    and the shops are all like you see in an old Chinese movie - lots of wood and    lanterns.  We got lots of cool stuff tailored for really cheap - I got a    long woolly duffle coat, and some beautiful traditional chinese silk brocade    cheongsams and outfits made - The whole lot for under $100!  I also took some    dresses for them to copy and they did a fantastic job!   Ben got 18    shirts, 3 pants and 3 pairs of shoes made (mind you, there ain't no way we    were going to find size 13 shoes off the shelf for Mr Big Foot over    here).  We are very impressed by the workmanship of the tailors - much    better than our Thai experience!!  Only problem now with our limited wardrobe space, is that we're not sure where we're going to keep the clothes at home!  Looks like we're going to have to buy a bigger house!  Tomorrow we're off to My Son to check    our the remains of the old Champa Kingdom&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);font-family:verdana;font-size:100%;"  &gt;Everyone keeps asking us if    we're married or here on our honeymoon!  If I had a dollar for every time    I was asked if I am Vietnamese, I'd be rich!!  Apparently I look    Vietnamese to the locals?? - or they're just trying to get me to buy    something...&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-5098372607313554301?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/5098372607313554301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2007/04/cho-ban-greetings-from-north-vietnam.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/5098372607313554301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/5098372607313554301'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2007/04/cho-ban-greetings-from-north-vietnam.html' title='Chào ban! - Greetings from North Vietnam'/><author><name>Lin</name><uri>http://www.blogger.com/profile/02205645403664010088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_ybTXz1DDwjE/TQ_mcT6bsDI/AAAAAAAAAWo/UELoJ0fqVZE/S220/Pt%2BTurton.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-2169635242918024093</id><published>2007-04-28T18:37:00.002+09:30</published><updated>2007-04-30T19:57:50.865+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Return to Malaysia</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;As we step off the plane, all bleary-eyed and sheepish after our 7 hour flight, the hit of humidity welcomes us back to KL once again. En-route to Vietnam and Cambodia, I’m here with bf; sister and her new white boy husband and; brother and my best friend, for 4 days and 5 nights of eating, shopping and sibling bonding. My sister has just been married this weekend and we’re all gate-crashing the first leg of her honeymoon.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;KL is just as we had remembered it from when we were last here 18 months ago – hot, humid, polluted and oh so chaotic. Staying at the KL Hilton, it was disappointing that we only once got time out from our hectic schedule to swim in the gorgeous lagoon style pool. Apart from the fact that we had no time, the weather wasn’t the greatest in KL during our stay – it was overcast, windy and rainy most of the time.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;Breakfast at the KL Hilton is the best you could ever image. Of course, the staple western fare was always on offer, but in gourmet varieties – 2 separate egg stations to make your eggs any way you like – poached was the favourite on our table! There was not only regular pork bacon, but there was a newie for us – beef bacon! The boys weren’t fans, but I quite preferred it! There was a huge patisserie section (jam donuts were to become bf’s essential for every day of our trip); every cereal under the sun; fresh fruit platters with papaya, dragon fruit, guava and the sweetest pineapple in the world; a “dessert” station serving fresh waffles, pancakes and French toast with divine condiments to boot – brother couldn’t decide, so he divided his waffles into 4 sections with differing combos! The highlight for us was the international fare – roti canai, roti murtabak, pandan chicken, nasi lemak, just to name but a few. Also in contending top position was the fresh juice station where an attendant was waiting to juice up your favourite fresh juice concoction. We loved green apple and guava! And to help prevent and combat against potentially pooey bellies, a daily shot of yakult was on hand – even dairy nazi bf got in on the game! The only problem about the KL Hilton having such a great spread, was that we spent the rest of our holiday comparing every breakfast to the Hilton's! Truely the best breaky ever!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_ybTXz1DDwjE/RjRYPXggS0I/AAAAAAAAABQ/xxSPOUcQDYo/s1600-h/DSC01256+Twin+Towers+Chris+Eug+Ben.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_ybTXz1DDwjE/RjRYPXggS0I/AAAAAAAAABQ/xxSPOUcQDYo/s200/DSC01256+Twin+Towers+Chris+Eug+Ben.JPG" alt="" id="BLOGGER_PHOTO_ID_5058765302475541314" border="0" /&gt;&lt;/a&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp2.blogger.com/_Ka2owuRE_qE/RjXAtsZp80I/AAAAAAAAABE/YIU4Yp45beo/s200/DSC01271+Klang+Wedding+Dinner+Group.JPG" alt="" id="BLOGGER_PHOTO_ID_5059161647666033474" border="0" /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;Day 1 was spent shopping&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt; at &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;KLCC &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;where the girls &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;went&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;one&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt; way and the boys &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;another – a smart idea indeed! After our intro to shopping in KL, we ventured up to the Twin Tower's bridge, where we took in a bird's eye view&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt; of the city. Back to the hotel late afternoon for a quick dip in the pool and outrageously expensive pool-side&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_ybTXz1DDwjE/RjRZqnggS1I/AAAAAAAAABY/s1S0hz-IUdY/s1600-h/DSCN2564.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp0.blogger.com/_ybTXz1DDwjE/RjRZqnggS1I/AAAAAAAAABY/s1S0hz-IUdY/s200/DSCN2564.JPG" alt="" id="BLOGGER_PHOTO_ID_5058766870138604370" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt; beverages before making the train journey to Klang to meet up with the rellies for sister’s wedding celebration dinner. We were met by Uncle Peter and Alvin who took us to the restaurant where Uncle Sunny's family and Sophia's fa&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;mily were there to greet us. After a fantastic meal, including whole baby suckling pig (best friend was a little grossed out!), we went to EE's shop to visit Boy Boy and Su Chen and congratulate them on the birth of their new baby son.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;Day 2 – Road trip to Taiping. After breaky, we were &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;met by our driver to be chauffeured in a comfy van for the 3 ½ hour journey &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;north. All siblings were knocked &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;out within the first ½ hour – we all get incredible motion sickness, so after a round of avomine, we were gone for all money. The mandatory stop an hour out of Taiping at the roadside eatery and jumbu stalls was quite an experience… As we piled into the car after a quick loo visit and snack grab, our driver was approached by about half a dozen suspect Malay and Indian rather gruff looking males. A mild argument ensued which started to make best friend rather uncomfortable and we all began to feel a bit nervous – perhaps we watch too much tv, but when you’re out in the middle of nowhere, and your driver is being harassed by local thugs, is not a pleasant sight nor situation to be in. After what seemed like an eternity, the driver jumped back in the car and we took off like the clappers. Seems the story goes that the thugs were repo men who troll the roads with a list of in arrears vehicles to look out for and attempt to sort out! Slight mix up with our vehicle as the repo men had mistook the registration number of our vehicle for another – Phew! - we didn’t at all fancy the&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_Ka2owuRE_qE/RjXEQsZp81I/AAAAAAAAABM/HxxJWeFsatQ/s1600-h/DSCN2668+At+MaMa%27s+House.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp2.blogger.com/_Ka2owuRE_qE/RjXEQsZp81I/AAAAAAAAABM/HxxJWeFsatQ/s200/DSCN2668+At+MaMa%27s+House.JPG" alt="" id="BLOGGER_PHOTO_ID_5059165547496338258" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt; long walk home! Finally we arrived in Taiping and it was good to see Mama - and she loved seeing the 3 of us and our partners together. Mama had seen bf and I only 18 months ago, brother and best friend 4 years ago, had never seen sister’s husband and it was at least 10 years since she’d seen sister! We took Mama out to lunch at a local Chinese restaurant; for a drive around Taiping Gardens to visit the monkeys; to Burmese Pools and; to also pay our respects at Kong Kong’s resting place.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_ybTXz1DDwjE/RjRbdnggS2I/AAAAAAAAABg/Z4QErVey4u8/s1600-h/P1030710.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_ybTXz1DDwjE/RjRbdnggS2I/AAAAAAAAABg/Z4QErVey4u8/s200/P1030710.JPG" alt="" id="BLOGGER_PHOTO_ID_5058768845823560546" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;On day 3 in KL we started the day off with a shopping expedition at Bukit Bintang. 4 hours in Sungei Wang Plaza was enough to send everyone balmy! The centre was just one big plethora of shops intertwined like a big spider web! Lots of jewellery, cheap clothes, shoes (and would you believe, I didn’t make a single shoe purchase!!) and gadgetery or all sorts. The boys later made a split to Imbi and Low Yat Plaza to check out electronics and IT goods. They had a shopping list: laptop, camera, handy cam, media player and hard drives. It was best they went at it alone whilst us chicks explored Lot 10 and the rest of the precinct. PM saw us face a bitter disappointment – Genting. Our cousin Alvin ferried us up the mountain to Genting via an incredibly windy and hold-on-for-dear-life road. Bf doesn’t normally get car sick, but was feeling quite green on arrival. For those who believe that SKYCITY casino in Adelaide is low brow, they need to go to Genting! No flashy lights, no promos, no hype - just dull smokey gaming with &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;emotionless faces lining the rooms. If we hadn’t known better, we’d have thought everyone was in mourning! &lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_ybTXz1DDwjE/RjRc4nggS3I/AAAAAAAAABo/WDtaZgx4nA4/s1600-h/DSC01351+Mamak+Chris+%26+YL.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp0.blogger.com/_ybTXz1DDwjE/RjRc4nggS3I/AAAAAAAAABo/WDtaZgx4nA4/s200/DSC01351+Mamak+Chris+%26+YL.JPG" alt="" id="BLOGGER_PHOTO_ID_5058770409191656306" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;After white boy’s AUD24 round of drinks (jug of beer and a soft drink!), a rather pathetic exploration of the Genting Shops and&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt; no less than 10 minutes in the casino, we were off down the hill again heading back to KL! Once back in KL, Alvin toured us around the red light districts looking for lady boys, tucked safely inside our locked SUV. The close of the evening saw us hoeing into some BBQ stingray at the local mamak - street side food stalls with the tastiest cuisine to be had!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;Day 4 – our last day in KL. We kicked off the day with some last minute&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt; shopping. Brother spent most of the day finalising his camera and best friend’s laptop purchase but not without bank dramas – HSBC “The world’s local bank”, gave no end of stress when they locked their account after multiple ATM&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt; transactions from attempting to withdrawal a bucket load of cash to pay for their purchases. HSBC can be applauded for their security measures, but boy did it put them through grief trying to unfreeze their account from overseas! The rest of us coupled off, spending the day shopping at Mid Valley. Bf was less&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt; than impressed, as shopping is most definitely not his favorite past time! We met with our cousin Julian for lunch - it had probably been 20 years since we'd seen him last! Laden with purchases, burning feet and aching bodies, we made our way back to the Hilton for our last supper in KL together – dinner at the Hilton’s Senses Restaurant where world renowned Chef Cheong Liew ran the pot (he also has the Grange Restaurant in the Hilton Adelaide). Our 5 course degustation menu was immensely enjoyed by all, with the most immpecable service you could ever imagine. Seriously, if I could grab all the service staff with me and fly them home, I would. Eloquently sufficed, we ended the night in our room swapping photos between us before we turned down for the night.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 153, 0);font-family:verdana;" &gt;Morning brought on a weird and somber mood for all. We met early at breakfast with the harsh reality that our holiday together had finally come to an end, but more horribly, it was goodbye - brother and best friend were returning to London. Lucky for all, our goodbyes were short and sweet. We arrived at the airport all 6 of us, running behind schedule of course! Brother and best friend were the first to fly out, so they had to make their dash quickly. After tight hugs and kisses all round, they disappeared quickly, bolting through the terminal to catch their plane. My tears flooded like the River Nile and I sobbed all the way to our terminal. I’m not sure why – I’ll be seeing them in less than a year when they return for their wedding! I’m such a sook. What made me feel better was the comfort in bf’s arms, and knowing we were about to embark on an amazing journey – 3 weeks in Vietnam and Cambodia!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_Ka2owuRE_qE/RjW-_cZp8zI/AAAAAAAAAA8/5FOthUQydQs/s1600-h/DSC01355+Airport+Eug+%26+Trud.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_Ka2owuRE_qE/RjW-_cZp8zI/AAAAAAAAAA8/5FOthUQydQs/s200/DSC01355+Airport+Eug+%26+Trud.JPG" alt="" id="BLOGGER_PHOTO_ID_5059159753585455922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-2169635242918024093?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/2169635242918024093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/2169635242918024093'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2007/04/return-to-malaysia.html' title='Return to Malaysia'/><author><name>Lin</name><uri>http://www.blogger.com/profile/02205645403664010088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='29' src='http://2.bp.blogspot.com/_ybTXz1DDwjE/TQ_mcT6bsDI/AAAAAAAAAWo/UELoJ0fqVZE/S220/Pt%2BTurton.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_ybTXz1DDwjE/RjRYPXggS0I/AAAAAAAAABQ/xxSPOUcQDYo/s72-c/DSC01256+Twin+Towers+Chris+Eug+Ben.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-263529235006977854</id><published>2007-02-01T12:12:00.000+10:30</published><updated>2007-02-22T12:18:53.613+10:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technology'/><title type='text'>DIY - Home Theatre PC (HTPC)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Introduction&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;I recently built, configured and installed a PC into the lounge, to function as my entertainment hub. So many people have asked me what is involved in doing it themselves so I thought I'd write down what I learnt.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_Ka2owuRE_qE/Rdv8hei9T3I/AAAAAAAAAAk/MNDiGkeU8xk/s1600-h/htpc.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_Ka2owuRE_qE/Rdv8hei9T3I/AAAAAAAAAAk/MNDiGkeU8xk/s320/htpc.jpg" alt="" id="BLOGGER_PHOTO_ID_5033894660582231922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hopefully this article will not be too technical, but it may be a difficult goal given the subject matter.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What is a HTPC?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;If you've seen mine, then you already know - if not, the HTPC is a PC designed for the lounge, acting as the media hub of the house.  It can record scheduled TV (Free-To-Air) whilst playing movies (or other recordings), listening to music or even while you're out. All interaction is via a remote control, much like using a DVD player.  Other features include photo album viewing, checking the weather and watching downloaded movies (eg Torrents)&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Get Your Facts Right&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;There is so much information on the web about the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;HTPC&lt;/span&gt; that you can't possibly start without reading as much as you possibly can about what to expect.  Even with my 10 years within the IT industry (as a programmer, so not a techie) I still read article after article for 3 months in order to fully understand what would be required - and I still missed some things!&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;It was important for me to find good reliable reading material from an Australian perspective, so my first stop was to join (and remain) a member of &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;xpmediacenter&lt;/span&gt;  which has been extremely beneficial in every way.  Before buying anything, get online, read and ask what others have used for various hardware concerns.  Not doing this early enough cost me quite a bit!&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Define Your Requirements&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The most import requirement is budget. This will define the entire project and will ensure you are satisfied with the outcome.  The other important requirements have to do with functionality, capacity,  and aesthetics.&lt;br /&gt;&lt;br /&gt;Personally, my requirement was to limit myself to AU$2500, able to display &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;HD&lt;/span&gt; video and playback &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;HD&lt;/span&gt; audio to provide total 'front end' capability to the 42" &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;HD&lt;/span&gt; plasma TV and 5.1/DTS Sound System, and with the capacity to record and play TV concurrently.&lt;br /&gt;&lt;br /&gt;If I'd known then what I know now, I'd say it's extremely important to consider heat (i.e. noise and ventilation) as well as the above 'features'.  The sound of an overworked CPU fan will ruin the quiet scenes in any movie!&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Be Prepared for Problems&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You may never encounter any, but it is possible - If you are building the box, or even just configuring the software, you will inevitably have issues - mostly they will be simple, such as installing a driver or a &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;codec&lt;/span&gt;, or they might be more complex and require some experimentation or even outside help.  The best thing you can do is ensure that everything has been configured, and tested, prior to demonstrating to family and friends!  I actually had mine in the study for over a month as I ironed out all the problems (it turned out that the original &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;DVICo&lt;/span&gt; TV card was a dud!)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What You Will Need&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The core hardware components that your &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;HTPC&lt;/span&gt; will need are:&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;TV Tuner card (Analog or Digital) - more likely you will want at least 2 - so you can record and watch two stations concurrently - the current version of &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;MCE&lt;/span&gt; only allows 2 cards to be installed without resorting to registry hacks&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Quality Audio card (on board will do) - If you intent to play music, or watch DVDs via your AV Receiver system, you will want a coax / &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;spdif&lt;/span&gt; capable sound card&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Graphics card with digital (or &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;HD&lt;/span&gt; digital) output, or analogue output, depending on your TV - personally, I wouldn't touch analogue, since it is being phased out within the next few years.  Also, 3D Gaming features are not required, and will probably cause problems due to heat so these types of cards should be avoided if possible.  If you wish to route the video to &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;yuor&lt;/span&gt; TV via the receiver, you will need to ensure that the AV &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;catoers&lt;/span&gt; for the cable type that the TV supports - for this reason, I have implemented my solution using Component Video, even though the TV &lt;span style="font-weight: bold;"&gt;does&lt;/span&gt; support &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;HDMI&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Hard drive - get the largest, fastest, quietest one you can afford (get two!).  This will be used a lot so don't skimp here.  Recording &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;HD&lt;/span&gt; TV will 'cost' 4&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Gb&lt;/span&gt;/hr, so you will need plenty if you plan on keeping all your favourite shows on the machine.  I bought a 320&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Gb&lt;/span&gt; drive and have almost filled it up, only 3 months into operation..  If you have a lot of music, a second drive for music and &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;AVIs&lt;/span&gt; might be a good idea, since &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;MCE&lt;/span&gt; only allows one &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;HDD&lt;/span&gt; to be indicated for storing TV recordings.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Internet via Network card / Wireless card - Although not essential, not having the Internet on hand will severely handicap your system.. (Dial up is probably not going to cut it).  If you wish to stream &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;HD&lt;/span&gt; over wireless then you &lt;span style="font-weight: bold;"&gt;must&lt;/span&gt; get the latest &lt;a href="http://en.wikipedia.org/wiki/802.11#802.11g"&gt;802.11g&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/802.11#802.11n"&gt;802.11n&lt;/a&gt; standard which supports high data transfer rates.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;And, optional features include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;AV Receiver style case - with LCD or &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;VFD&lt;/span&gt; display (&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;VFD&lt;/span&gt; is what Receivers generally use, as it is brighter but uses less power), and front &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;USB&lt;/span&gt;, &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;Firewire&lt;/span&gt;, etc ports for convenient access&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Remote Control device - the MS one comes with a keyboard as well..&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Wireless keyboard / mouse - you probably won't use them that much, but can be handy for surfing the net, or searching for a stored track or video! (You will need to consider where they will reside - mine is on the bottom shelf of the coffee table&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Silent / Quiet operation - generally, this will require either silent pipe technology, or passive cooling - this approach can be a bit risky if the air flow within and around the case is hampered, but you will thank yourself when this is all working right.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Putting the Bits in the Box&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Although I have considerable experience with building PCs, I chose to use a hardware supplier to build and deliver the final product - I didn't have the time, nor did I want the issues that often arise due to hardware installation problems - still, this can be a rewarding part of the project, so it's a matter of choice.&lt;br /&gt;&lt;br /&gt;Depending on who you use, they might even setup and configure Media Center for you.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Its Nothing Without Software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Although MS has just released Vista, I implemented my solution of Windows Media Center Edition (&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;MCE&lt;/span&gt;), which is a hybrid of &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;XP&lt;/span&gt; Home and Pro, with the Media Center functionality bundled in.  The best feature of &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;MCE&lt;/span&gt; is that all hardware you buy will be designed to 'Just Work' with it.  It should be a breeze to get &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;MCE&lt;/span&gt; to find and configure all the necessary bits and pieces.  This was the case for me and others I've spoken to so far..&lt;br /&gt;&lt;br /&gt;There are several alternatives to using Windows and &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;MCE&lt;/span&gt;, which might be considered.  You could choose a Windows based commercial package, or use the open source Media Portal, or you could go MS-free completely by choosing a Linux &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;implemenation&lt;/span&gt;, such as &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;MythTV&lt;/span&gt;.  Although these solutions have lots going for them, I chose MS &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;MCE&lt;/span&gt; since it is the most well known, and as such, most if not all hardware simply 'Just Works' with it.&lt;br /&gt;&lt;br /&gt;There are a few things that you will need manual configure after &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;MCE&lt;/span&gt; is installed:&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Electronic Program Guide - Although in the US this 'Just Works', in Australia, it's a different story.  Apparently, due to legal problems with the TV stations here, the guide is not published..  You will need to install Blade &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;Runnner&lt;/span&gt; Pro (&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;BRP&lt;/span&gt;) and every week will need to run it (from &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;MCE&lt;/span&gt;) and manually import the listings into &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;MCE&lt;/span&gt; (from the TV Settings menu) - slightly annoying, but not the end of the world.  &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;BRP&lt;/span&gt; requires an account with a &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;homebrew&lt;/span&gt; TV listings website called &lt;a href="http://www2.blogger.com/www.oztivo.com/"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;OzTivo&lt;/span&gt;&lt;/a&gt; (maintained by users!) to work, but this is easily configured.. You can even add to it if you like&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;AnyDVD&lt;/span&gt; - Necessary to overcome the region restrictions technology that Media Center enforces.  Not free, but I'm sure you can afford it!&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;Codecs&lt;/span&gt; - every media format requires one, and unfortunately they don't all come with Windows, or &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;MCE&lt;/span&gt;.  &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;Codecs&lt;/span&gt; are required for both encoding (burning, converting) and decoding (viewing) so they are essential.  Different &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;codecs&lt;/span&gt; provide different quality and performance, and so in general, shop around!&lt;br /&gt;&lt;br /&gt;There are a few collections of decent &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;codecs&lt;/span&gt; called K-Lite, or &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;ffdshow&lt;/span&gt; (don't know about much about this one) to name a few that include most of the usual decoders you will require.  In theory, if a file you wish to watch or listen to doesn't work, try it in Media Player (MP) since &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;MCE&lt;/span&gt; uses this as it's display engine (if it works in MP, it should work in &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;MCE&lt;/span&gt;).  MP will notify you what the missing &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;codec&lt;/span&gt; is or perhaps, if it's well known, it may even download it for you.&lt;br /&gt;&lt;br /&gt;Video &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;codecs&lt;/span&gt; for decoding the stream coming from the TV tuner will require a decoder that will probably come with your new DVD player (if not, you'll have to buy it) such as &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;CyberDVD&lt;/span&gt; or &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;PowerDVD&lt;/span&gt; or one supplied with your graphics card (&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;ie&lt;/span&gt; from &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;NVidia&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Some DVD Burning software - not sure which one is best.. This is still on my to do  list.  Such a feature should have come 'out of the box' with &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;MCE&lt;/span&gt;, such that you can burn recorded TV to a DVD.. It appears that you require an &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;MPEG&lt;/span&gt;-2 encoder such as one from Sonic (publisher: &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;Roxio&lt;/span&gt;?) to do this.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Outstanding Issues&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Noise - I still need to replace my fan that makes too much noise.  It is not the constant whirling noise that one would expect however, I could probably get used to that - Instead, it is a constantly changing high (not piercing though) pitch that sounds like the fan is off-balanced.  I am looking at a cooling tower (like the &lt;a href="http://www.noctua.at/main.php?show=productview&amp;products_id=6&amp;amp;lng=en"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;Noctua&lt;/span&gt; NH-U12F CPU &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;Heatsink&lt;/span&gt;&lt;/a&gt; with  120mm fan)&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;TV Recording archival - Burning to DVD and converting to &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_61"&gt;MPEG&lt;/span&gt;4 (&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;DivX&lt;/span&gt;, &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_63"&gt;Xvid&lt;/span&gt;).  I'm sure that it is quite possible to convert the TV recordings, however these features are not a part of the basic &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;MCE&lt;/span&gt; install.  I have looked at several alternatives, however at this stage nothing has stood out as being the perfect solution.  A solution I will explore when time permits is &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_65"&gt;MyTV&lt;/span&gt; &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_66"&gt;ToGo&lt;/span&gt;, however I don't have any good information on it at this stage&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Scheduled recordings from Standby - I have &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_67"&gt;nto&lt;/span&gt; yet worked out how to reliably start &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_68"&gt;MCE&lt;/span&gt; from standby automatically (&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_69"&gt;ie&lt;/span&gt; when a show that I want to see is on) without doing it myself.  This solution would involve reliably starting and returning to standby in time to record any shows I would like.. I have found a free tool called &lt;a href="http://www.xs4all.nl/%7Ehveijk/mst/indexe.htm"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_70"&gt;MCE&lt;/span&gt; Standby Tool&lt;/a&gt; which might do the trick though.&lt;br /&gt;&lt;br /&gt;From what I've read, it appears that &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_71"&gt;MCE&lt;/span&gt; will start from standby correctly to start recording from the schedule, however in my case, it appears that either Windows or some drivers don't like restarting &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_72"&gt;MCE&lt;/span&gt; after standby - I generally have to reboot after doing it as I have find that I have no valid TV tuner cards afterwards.  Apparently &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_73"&gt;MCE&lt;/span&gt; will fix this but I don't know yet..&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Finding out more about the Registry Hacks required in order to have more tuner cards.  2 more should do the trick!&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Vista - There are several early adopters of Vista (Premium and Ultimate include &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_74"&gt;MCE&lt;/span&gt;) however I am yet to attempt it myself - when time permits I will create a new partition and have a play..&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Some Further Reading&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/windowsxp/mediacenter/default.mspx"&gt;Microsoft &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_75"&gt;MCE&lt;/span&gt; page&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.xpmediacenter.com.au"&gt;XPMediaCenter.com.au&lt;/a&gt; (&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_76"&gt;AUS&lt;/span&gt; oriented)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.thegreenbutton.com"&gt; &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_77"&gt;TheGreenButton&lt;/span&gt;.com&lt;/a&gt; (US oriented)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dvbowners.com"&gt;www.dvbowners.com&lt;/a&gt; (Digital TV)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avsforum.com"&gt; www.avsforum.com&lt;/a&gt; (Audio Video related)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/windows/windowsmedia/player/faq/codec.mspx"&gt;Microsoft &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_78"&gt;codecs&lt;/span&gt; FAQ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.avsforum.com/avs-vb/showthread.php?threadid=465419"&gt;General FAQ from &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_79"&gt;AVSforum&lt;/span&gt; &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_80"&gt;MCE&lt;/span&gt;2005 FAQ&lt;/a&gt; (very handy info here!)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.xpmediacentre.com.au/community/bladerunner/10826-bladerunner-pro-v3-5-released.html"&gt;Setting up Blade Runner Pro with &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_81"&gt;OzTivo&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;I wish I knew about these ones before I built!&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.quietpc.com"&gt;www.quietpc.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.silentpcreview.com"&gt;www.silentpcreview.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.buildsilentpc.com"&gt;www.buildsilentpc.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Products I recommend and use&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.silverstonetek.com/products-lc16m.htm"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_82"&gt;Silverstone&lt;/span&gt; LC16 case, with &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_83"&gt;VFD&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.soundgraph.com/Eng_/Products/imon21.aspx?topMenu=2&amp;subMenu=1&amp;amp;leftMenu=21"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_84"&gt;iMon&lt;/span&gt; RF Remote&lt;/a&gt; (mine came bundled with the case)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gigabyte.com.tw/Products/Motherboard/Products_Overview.aspx?ProductID=2295"&gt;Gigabyte S775, GA-965P-&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_85"&gt;DQ&lt;/span&gt;6&lt;/a&gt; (on board 5.1DD/DTS)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.digitalnow.com.au/product_pages/DNTVDualS2.html"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_86"&gt;DNTV&lt;/span&gt; Live! Dual Hybrid &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_87"&gt;PCI&lt;/span&gt;-E S2 TV Tuner card&lt;/a&gt; (I'll probably buy another soon)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nvidia.com/page/geforce_6800.html"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_88"&gt;NVidia&lt;/span&gt; &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_89"&gt;GeForce&lt;/span&gt; 6800GS&lt;/a&gt; (passively cooled)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Good Luck!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;If you're still reading this, you can see now that building and running a &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_90"&gt;HTPC&lt;/span&gt; is not a casual affair - like most things to do with computers, and in particular with cutting edge technology, there is a lot to consider, and a lot to learn.  Luckily there are a lot of &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_91"&gt;knowledgeable&lt;/span&gt; people at the various forums who are willing and able to help out.&lt;br /&gt;&lt;br /&gt;As you can see, I still have an outstanding list myself, but these features are not essential for my needs at this point.  Hopefully I will solve these issue soon and will provide an update.&lt;br /&gt;&lt;br /&gt;If you are still willing to undertake this project then I think you will be very happy with the final result.  I know I am, and even my once-sceptical girlfriend is now a convert.&lt;br /&gt;&lt;br /&gt;All the best.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-263529235006977854?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/263529235006977854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2007/02/diy-home-theatre-pc-htpc.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/263529235006977854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/263529235006977854'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2007/02/diy-home-theatre-pc-htpc.html' title='DIY - Home Theatre PC (HTPC)'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_Ka2owuRE_qE/Rdv8hei9T3I/AAAAAAAAAAk/MNDiGkeU8xk/s72-c/htpc.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-113451804674110543</id><published>2005-12-14T10:09:00.000+10:30</published><updated>2007-02-01T14:21:41.985+10:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sport'/><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Life: "Spikers" win the Monday Social 'A' Summer V-Ball Competition</title><content type='html'>Last Monday saw the "Drink Spikers", after only dropping 1 game in the minor rounds, make their way into the Semi Final of the Monday night Beach Volleyball Social "A"s competiton. After easily dispatching "The Force" (46-31) who seemed to be somewhat depleted from their best form, the Spikers had a tough and torrid battle with the ever challenging "Wongas".&lt;br /&gt;&lt;br /&gt;Highlights of the game included being down throughout the whole game, but hanging on just enough to stay in touch, and finally getting back to even at around 30 a piece.  After trading advantage point several times each (in OT), finally the Spikers were able to win the Grand Final with a deft touch by yours truly -  A comfortable set by Big Al gave me the opportunity to get a good jump, and an easy purchase on a solid spike was on offer, but instead (somewhat cheekily) I placed the ball in the dead zone (centre court) with a casual flick of the wrist.  The look on the opposition's faces said it all.  Dirty.&lt;br /&gt;&lt;br /&gt;Granted, it's not normally how you'd want to win a game, but, with pride and $100 drinks voucher at the local pub (The Winston, Pirie St) on offer, winning came first.&lt;br /&gt;&lt;br /&gt;Congratulations to all the boys in team Drink Spikers (Paul, Tim, Al, and myself) - it was a good team effort, can't wait to crack the $100!!&lt;br /&gt;&lt;br /&gt;P.S. Thanks also to our cheer squad (Lin and Donna) who watched the entire game - especially to Lin who dolled out the medallions (with complimentary kisses) to the lads and Tim for buying the beer!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-113451804674110543?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/113451804674110543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/12/life-spikers-win-monday-social-summer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/113451804674110543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/113451804674110543'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/12/life-spikers-win-monday-social-summer.html' title='Life: &quot;Spikers&quot; win the Monday Social &apos;A&apos; Summer V-Ball Competition'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-113289420765822608</id><published>2005-11-25T14:50:00.000+10:30</published><updated>2005-11-25T15:31:21.673+10:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politics'/><title type='text'>Politics: Peak Oil makes it to Australian TV</title><content type='html'>Australia's national broadcaster ABC has produced a 15 minute segment on the show &lt;a href="http://abc.net.au/catalyst/stories/s1515141.htm"&gt;Catalyst&lt;/a&gt; about Peak Oil.  Finally there is the beginnings of a discussion on this very important issue.&lt;br /&gt;&lt;br /&gt;Although they covered the topic in some detail, it was only a 15 minute segment on a channel that is rarely watched by the mainstream public.  If only this type of journalism was being done on the big channels.  Instead, 60 minutes is covering the latest human interest stories (Not that I mind, it just seems the world has more pressing stories to tell!).&lt;br /&gt;&lt;br /&gt;The most compelling fact of this story was the hands-up poll conducted by an Australian Oil man at an Industry conference, who asked the assembly, how many think we've already reached the 'peak'.. 50% or so said yes.. Scary.  You'd think those people would have an inside look..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-113289420765822608?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/113289420765822608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/11/politics-peak-oil-makes-it-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/113289420765822608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/113289420765822608'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/11/politics-peak-oil-makes-it-to.html' title='Politics: Peak Oil makes it to Australian TV'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112823965764910164</id><published>2005-09-30T17:16:00.000+09:30</published><updated>2005-11-25T14:47:35.473+10:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Life: Malaysia calls</title><content type='html'>My first overseas trip for several years started in KL, Malaysia.  Lin and I set off early Sunday after the AFL grand final, which meant no big night.. Not really a bad thing!&lt;br /&gt;&lt;br /&gt;Kuala Lumpur is quite a city.  Huge, smelly, and full of smog.  Great food, great fun, great adventure.  I only wish I had more time to explore it all.. I intend to return one day soon.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5876/1038/1600/skyline.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/5876/1038/320/skyline.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Highlights - The food..!!!! Well, I love Indian and Chinese, so Malay is a natural fit.  I ate all the time, and due to Lin's family being locals, it was all free, all the time!  Against our constant urging, the Ng family would not let us buy a single meal.. Luckily, when Collin (Lin's cousin) wasn't looking, I rushed off to pay our final bill!!!  So many options - from stuffed tofu to curried fish or beef, chicken rice, steamed boat a plenty... Mmm.. mmm..&lt;br /&gt;&lt;br /&gt;Also, we visited a shopping complex devoted entirely to IT hardware and software.  I'm talking about a place larger than any shopping centre in Adelaide - 6 levels of laptops, CDS, flash drives and the like.. I was naturally in heaven!!!  The price for a notebook is amazing.  Compare: a $AU2500 lappy there to an equivalent machine back in Adelaide would be around 4000.. I think I would have to think twice about a local purchase..&lt;br /&gt;&lt;br /&gt;KL is a shoppers paradise, no doubt about it.  Not that I wanted to go to market after market, but we could have - the exchange rate was very generous as well.&lt;br /&gt;&lt;br /&gt;Unfortunately, all that buzz comes at a significant price.  the skyline is 'hazed' 24-7, and the air is smelly.  Not to mention the traffic, which was, to put it midly, a nightmare!  I don't think I ever saw Sydney so bad!!&lt;br /&gt;&lt;br /&gt;Overall, I think we will definitely return sooner than later..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112823965764910164?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112823965764910164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/09/life-malaysia-calls.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112823965764910164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112823965764910164'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/09/life-malaysia-calls.html' title='Life: Malaysia calls'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112537744099216770</id><published>2005-08-30T14:18:00.000+09:30</published><updated>2005-08-30T14:26:40.940+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Life: Lin's Birthday</title><content type='html'>Happy Birthday Lin!&lt;br /&gt;&lt;br /&gt;I hope you are having a great day.  I won't mention how *old* you are.. I know you'd kill me if I did!&lt;br /&gt;&lt;br /&gt;I bought some flowers for her, they look like this:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.tynte.com/media/images/f25.jpg"\&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112537744099216770?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112537744099216770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/08/life-lins-birthday.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112537744099216770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112537744099216770'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/08/life-lins-birthday.html' title='Life: Lin&apos;s Birthday'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112374558314525326</id><published>2005-08-11T16:26:00.000+09:30</published><updated>2005-08-12T10:48:36.080+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Programming: Coding Is Like Poetry</title><content type='html'>I've always enjoyed poetry, and as a programmer, I've often noted the similarities between them. Today I noticed an interesting chat on the &lt;a href="http://www.codeproject.com/"&gt;CodeProject&lt;/a&gt; forum about this very thing.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span class="messagecontent"&gt;The mental process behind writing poetry and code is the same.&lt;br /&gt;You have to be able to abstract reality into a simple model and be able to transfer that abstraction into concrete code - ie. your natural language or a programming language.&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="messagecontent"&gt;&lt;br /&gt;That sums it up nicely.  Thanks goes to &lt;/span&gt;&lt;span class="messagecontent"&gt;Rui Sousa for that one.&lt;br /&gt;&lt;br /&gt;Normally, I have this discussion when I've had a few pints at the local, so I've wondered if it was just the brew that has me thinking like that. It's good to see some others thinking the same way.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="messagecontent"&gt;Similarly,&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="messagecontent"&gt;Good code is like good Haiku.&lt;/span&gt;&lt;br /&gt;It is concise, descriptive, and elegant.&lt;br /&gt;&lt;br /&gt;Good Haiku, like good code is &lt;b&gt;never&lt;/b&gt; contrived.  It is also minimialsist without compromising its descriptive qualities&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="font-weight: bold;"&gt;using &lt;/span&gt;(Haiku)&lt;br /&gt;{&lt;br /&gt;Writing code, like Haiku:&lt;br /&gt;Elegant within confines&lt;br /&gt;That limit and free.&lt;br /&gt;}&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Followed up with a nice Haiku from &lt;span class="messagetitle"&gt;BluePineNeedles!!&lt;br /&gt;&lt;br /&gt;I'll have to keep these points in mind for that next time when I'm challenged to a debate!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112374558314525326?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112374558314525326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/08/programming-coding-is-like-poetry.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112374558314525326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112374558314525326'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/08/programming-coding-is-like-poetry.html' title='Programming: Coding Is Like Poetry'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112320362921581519</id><published>2005-08-05T09:48:00.000+09:30</published><updated>2005-08-05T10:30:29.230+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politics'/><title type='text'>Tamagotchi Pokies</title><content type='html'>It seems that South Australia's anti-gambling king has found a new target of his angst.  According to this &lt;a href="http://www.news.com.au/story/0,10117,16139305-421,00.html"&gt;article&lt;/a&gt; he has discovered that those kids  toys called Tamagotchi have a gambling element within them.&lt;br /&gt;&lt;br /&gt;I don't see how playing the pokies at 6 years old is good for a child's development.  I for one don't see how it's good for anyone, but then, I don't play and I've never won 'big'..&lt;br /&gt;&lt;br /&gt;The cynic in me can't help but wonder who funded this inclusion?  Gambling cartels preparing for their future income streams..?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112320362921581519?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112320362921581519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/08/tamagotchi-pokies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112320362921581519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112320362921581519'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/08/tamagotchi-pokies.html' title='Tamagotchi Pokies'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112062063361130243</id><published>2005-07-06T12:48:00.000+09:30</published><updated>2005-07-06T13:04:05.756+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politics'/><title type='text'>Politics: Birds and Wind Energy</title><content type='html'>Once again partisan politics rears it's ugly head in Australia. We have a perculiar position right now of a Liberal fedaral government with all (I think) states being Labor. The current issue stems from the Victorian government's desire for a wind farm in Bald Hill, South Gippsland.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Wind farms appear to be the next battleground between the Bracks Government and Canberra, after the federal Environment Minister promised to use his power to stand up for aggrieved rural communities and protect birds from turbines.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;It seems the local community are up in arms about it's location and have resorted to the claim of "what about the birds?" to see that it is not built in their back yard.&lt;br /&gt;&lt;br /&gt;The reality of bird deaths may be real, but the extent of these deaths, compared to the benefits to the community at large, is negligible. Birds? even the (British) Royal Society for the Protection of Birds have &lt;a href="http://www.rspb.org.uk/policy/windfarms/index.asp"&gt;stated&lt;/a&gt; that wind farms are a good idea, and that the deaths of birds (which they acknowledge does happen on occasion) is negligible compared to the deaths of birds from other &lt;a href="http://www.thewind.info/downloads/birds.pdf"&gt;sources&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Millions of birds are eaten by domestic cats each, year, more fly in to houses (windows) or cars to their deaths. Surely a slowly spinning turbine (these things aren't exactly propellers) can easily be avoided by a bird on route.&lt;br /&gt;&lt;br /&gt;I think that the federal government should be doing everything it can to reduce our Coal burning requirements, and should forget about politics for the sake of the country. Is it that difficult?&lt;br /&gt;&lt;br /&gt;After all, what is more important?  Birds in the sky, or clean air in which to breath (for all of us, including the birds!)&lt;br /&gt;&lt;br /&gt;Read the article &lt;a href="http://www.theage.com.au/articles/2004/10/13/1097607295883.html"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112062063361130243?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112062063361130243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/07/politics-birds-and-wind-energy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112062063361130243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112062063361130243'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/07/politics-birds-and-wind-energy.html' title='Politics: Birds and Wind Energy'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112043815934418375</id><published>2005-07-04T10:14:00.000+09:30</published><updated>2005-07-04T10:37:41.960+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politics'/><title type='text'>Politics: Bogus War On Terror..</title><content type='html'>If you've spent any time talking politics with me over the last few years, then most of this article, by Michael Meacher will not be 'news' to you. It does however hold some small hope to see it splashed so brazenly over the Guardian's pages, even if it is only 'commentary'.&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Geneva,Arial,sans-serif;font-size:85%;"  &gt;&lt;b&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;Meacher pulls no punches, by naming the PNAC, it's geopolitical imperatives, and the fallout resulting from 9/11, a clear and worrying picture emerges.&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Geneva,Arial,sans-serif;font-size:85%;"  &gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=";font-family:Geneva,Arial,sans-serif;font-size:85%;"  &gt;In fact, 9/11 offered an extremely convenient pretext to put the PNAC plan into action. The evidence again is quite clear that plans for military action against Afghanistan and Iraq were in hand well before 9/11. A report prepared for the US government from the Baker Institute of Public Policy stated in April 2001 that "the US remains a prisoner of its energy dilemma. Iraq remains a destabilising influence to... the flow of oil to international markets from the Middle East". Submitted to Vice-President Cheney's energy task group, the report recommended that because this was an unacceptable risk to the US, "military intervention" was necessary (Sunday Herald, October 6 2002).&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;That's quite a claim, isn't it? And to think the author is no less than a former British MP.. His summary is no less impacting..&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style=";font-family:Geneva,Arial,sans-serif;font-size:85%;"  &gt;The conclusion of all this analysis must surely be that the "global war on terrorism" has the hallmarks of a political myth propagated to pave the way for a wholly different agenda - the US goal of world hegemony, built around securing by force command over the oil supplies required to drive the whole project.&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Read the full article &lt;a href="http://politics.guardian.co.uk/iraq/comment/0,12956,1036687,00.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112043815934418375?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112043815934418375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/07/politics-bogus-war-on-terror.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112043815934418375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112043815934418375'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/07/politics-bogus-war-on-terror.html' title='Politics: Bogus War On Terror..'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112061834042877925</id><published>2005-07-04T00:20:00.000+09:30</published><updated>2005-07-06T14:11:52.646+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Programming:  Riskier (Part 4)</title><content type='html'>Finally I have a working program. After many prototypes, tests and experiments, I have finally built a shell of a server in &lt;a href="http://www.csharp-station.com/Tutorial.aspx"&gt;C#&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Currently, it is listening to one client generate message (MoveUnit) via .NET remoting. The world object is being updated correctly. Now, my next step is to have the fact update propagated to all interested parties. That should be interesting. The plan is to simply register each player object with the server, such that when a unit or region fact update is allowed to be known to a client, it is sent a message – this will be a simple .NET delegate (event). Ultimately, I intend to build a message packet which will accumulate updates, but that optimisation will come later, if required.&lt;br /&gt;&lt;br /&gt;Next, I intent to start exploring the idea of using Reflection to automate the FactUpdate event. I thought it would be really cool to simply tag a property with an attribute that would indicate to the server that an update to the various clients is required – great plan, but yet to be confirmed. The fall back position will be to manually code the event call for each property for each entity. Not hard, but certainly not as elegant. It will no doubt be more efficient though, so all would not be lost.&lt;br /&gt;&lt;br /&gt;Of course, a functioning server will demand a new and improved client. My intent is to build a primitive command based ‘terminal’ which will simply be a basic object viewer, in the spirit of mail-based BBS games of 10 years ago (no doubt these games still exist, and are well participated in!).&lt;br /&gt;&lt;br /&gt;An interesting point from all this is that I have found it has been much harder to build this program than I had expected. Don’t get me wrong, I never though this would be easy, but I really have struggled to make the progress I had wanted. I have however learned several important skills, so all is not lost. I have in the process learnt many things about C#, the .NET Framework, and Object-Oriented design. At least my secondary goal was obtained!&lt;br /&gt;&lt;br /&gt;As a vehicle for learning new technologies, it has been worthwhile. I can only hope that I am now in a good position to commence the ‘guts’ of the program. Writing the actual ‘business’ logic is where the process should become interesting and start yielding some visible results.&lt;br /&gt;&lt;br /&gt;Firstly though, I need to beef up the client!&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span lang="EN-US"  style="font-size:14;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112061834042877925?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112061834042877925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/07/programming-riskier-part-4.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112061834042877925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112061834042877925'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/07/programming-riskier-part-4.html' title='Programming:  Riskier (Part 4)'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112061815720804597</id><published>2005-07-03T22:30:00.000+09:30</published><updated>2005-07-06T12:19:17.216+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politics'/><title type='text'>Politics: Energy For The Future</title><content type='html'>I can't help but think about it.  One time, in the near future, it is quite possible, that we will, as a society, come to the end of cheap abundant energy.  I'm talking about Peak Oil first, then Peak Gas, and finally Peak Coal (which is of course, some time in the future!).  Of course, no one is able to accurately predict when, and how gradual the decline will be.  Some say that PO is imminent within the next 5 years.  At best, even the optimists are saying 30 years is possible.&lt;br /&gt;&lt;br /&gt;I am a bit of an optimist, so I like to think that the doomsayers are getting this wrong, that if we can absorb the impact intact, then we have a chance to manage the '&lt;a href="http://www.museletter.com/Powerdown.html"&gt;powerdown&lt;/a&gt;' phase.  It would only be possible if we are expecting it, and have made the necessary adjustments.  No doubt, it would still be a major undertaking, which would change society in unknown ways.&lt;br /&gt;&lt;br /&gt;So what can we expect from a power downed world?  Unfortunately, I'm really not sure.  But I am sure that the extent to which we can maintain the good elements of our society is directly proportional to the immediacy at which we tackle this issue.  I.e.  We need to start thinking, talking and doing right now.  Every day, month and year we wait is risking everything.&lt;br /&gt;&lt;br /&gt;Maybe they're all wrong.  Maybe the folks at the US Department Of Energy  are right.  The world's oil producers may well have accurately reported their current &lt;a href="http://www.eia.doe.gov/emeu/international/reserves.html"&gt;reserves&lt;/a&gt;, and everything is indeed under control.  I hope so, but I don't feel so confident.. It's just a feeling though, so don't quote me!  Issues related to the reserve reporting process are numerous, however, and are another topic &lt;a href="http://www.ihs.com/news/press-releases/04reserves-reporting.html"&gt;entirely&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;So what hope is there?  The hope is that as a community we can rally together, and create a future that is sustainable.  I have noted that the PO &lt;a href="http://en.wikipedia.org/wiki/Meme"&gt;meme&lt;/a&gt; is now starting to enter the collective (at least, in the financial papers), and so I hope that we will soon see a growing awareness in a way similar to  the 'green bag' meme that has recently swept Adelaide.&lt;br /&gt;&lt;br /&gt;Unfortunately, the similarities end there! The green bag movement seems to have been effective because ultimately it is a small step that barely hampers our lifestyle.  What is required to mitigate PO is much more, and will indeed affect our day to day living.&lt;br /&gt;&lt;br /&gt;So much of our efforts involve consuming or transforming energy.  So much so that perhaps we forget the extent to which this is so.  Whether it is food, grown far away, transported, prepared, served, or eaten, or water, collected, pumped, and channeled to us in its many myriad forms, we rely on these essential human resources, that are all totally tied to the use of energy.  Further to this, there is clothing, housing, and the other essential commodities we rely on each day.  These are the things that we will need to ensure can continue in some form, if we are to survive in a reasonable condition.&lt;br /&gt;&lt;br /&gt;It seems that the current governments both here in South Australia and &lt;a href="http://www.dpmc.gov.au/publications/energy_future/contents.htm"&gt;federally&lt;/a&gt; are relying on Coal for our future energy needs.  Fair enough, I suppose.  You can't pretend that we have another solution. As much as I wish we did we simply don't have a viable alternative to supplying all of our energy needs beyond PO and PG.  It's seems short sighted to forget about CO2, or argue for seqestration of the gas!&lt;br /&gt;&lt;br /&gt;At least, not yet.. It seems there is some very exciting technology being explored in both HDR and Solar Towers, in SA and VIC respectively.  I must admit to being quite excited about the ST, actually.  The concept, design and prototype appear to be a very clever and likely generator of steady electricity.  Right now, the plan entails a 1 km high tower, with the circumference of the MCG, and girt (sorry, couldn't resist!) by an 8 km green house 'skirt' that will collect the heat to send up the column, thus propelling large turbines within!  Such a great idea, I wish I'd thought of it.  Have a &lt;a href="http://www.enviromission.com.au/top-menu1.htm#"&gt;read&lt;/a&gt;!. &lt;br /&gt;&lt;br /&gt;On the other hand, I don't know much about HDR, but it seems like it could be a good 'short term' solution - call it a stop gap measure.  The only problem seems to be that hot rocks will eventually cool down.. Hence, it's not actually 'sustainable'.. Not literally, any way (it would *only* last 3000 years.  Maybe you see it &lt;a href="http://www.abc.net.au/quantum/info/hotroctx.htm"&gt;differently&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;At least I just bought a new bike with the intention of riding to work on occasion.  That's my first step in working towards a sustainable future.  Now I just have to use it more!&lt;br /&gt;&lt;br /&gt;Then all I need to do is learn to grow my own vegetables, stop driving, use less electricity and buy less!&lt;br /&gt;&lt;br /&gt;Ugghh. I'm tired just thinking about it.  No wonder most people are in denial..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112061815720804597?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112061815720804597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/07/politics-energy-for-future.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112061815720804597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112061815720804597'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/07/politics-energy-for-future.html' title='Politics: Energy For The Future'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112061634325634690</id><published>2005-07-03T21:45:00.000+09:30</published><updated>2005-07-06T11:49:03.260+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Programming: Programmer Courses</title><content type='html'>Recently, my company has started providing courses on various programming topics.  I'm not impressed.  Not at the offer, which is great, but at the need.&lt;br /&gt;&lt;br /&gt;Let’s make one thing clear from the beginning, I don’t mind if a company is willing to send a programmer on a course if they want to… I just think that if a coder wants to learn something, he will - Off his own back, in his own time.&lt;br /&gt;&lt;br /&gt;Why?  Because the history and spirit of programming is to find out, explore, experiment and fail, in order to succeed.  Not to simpy be told (and try to stay awake!)&lt;br /&gt;&lt;br /&gt;After all, that’s where the &lt;span style="font-weight: bold;"&gt;fun&lt;/span&gt; is in the first place, right??? Well.. At least that’s why I like to code, anyway!&lt;span style="font-size: 14pt; font-family: &amp;quot;Times New Roman&amp;quot;;" lang="EN-US"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112061634325634690?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112061634325634690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/07/programming-programmer-courses.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112061634325634690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112061634325634690'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/07/programming-programmer-courses.html' title='Programming: Programmer Courses'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112003153863211358</id><published>2005-06-29T17:09:00.000+09:30</published><updated>2005-06-30T10:48:35.330+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politics'/><title type='text'>Politics: They Rule</title><content type='html'>Check out this great web site called &lt;a href="http://www.theyrule.net/"&gt;They Rule&lt;/a&gt; -&lt;br /&gt;&lt;span class="bodytype"&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;" class="sectiontitle"&gt;&lt;/span&gt;They Rule allows you to create maps of the interlocking directories of the top companies in the US in 2004.&lt;br /&gt;The data was collected from their websites and SEC filings in early 2004, so it may not be completely accurate - companies merge and disappear and directors shift boards.&lt;/blockquote&gt;&lt;br /&gt;What a great concept! And it looks really good too. I'm not sure how I'd use this, since I'm not conducting research at this level, but..&lt;br /&gt;&lt;br /&gt;There are a lot of user-built maps which are great to look at.. Check out linkages for the CFR (Council Of Foreign Relations).. Lot's of mates there!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112003153863211358?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112003153863211358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/06/politics-they-rule.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112003153863211358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112003153863211358'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/06/politics-they-rule.html' title='Politics: They Rule'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112000047617592065</id><published>2005-06-29T08:40:00.000+09:30</published><updated>2005-06-29T17:08:48.066+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Life: The Continuing Saga of That Damn Car Stereo</title><content type='html'>Yesterday I rode to work in order to drop off my car to be repaired (see a previous post). When I picked it up, they had the gaul to charge me for a 'ground loop'.. I don't even know what that is, but clearly, it sounds like something they should have checked for in the first place.&lt;br /&gt;&lt;br /&gt;At least I had music, I thought. So, I'm sitting in traffic playing with the remote control (which is kind of cool, even though basically useless), when I realise that the b@stards haven't hooked up the front speakers... The &lt;span style="font-weight: bold;"&gt;good&lt;/span&gt; ones!  How can you miss such an important part of an install? I can't help but ask - What were they on?&lt;br /&gt;&lt;br /&gt;I think this time I'll do the work myself..  Damn them.  There goes my sleep in this Saturday!&lt;br /&gt;&lt;br /&gt;It's worth noting that the company in question is Strathfield Audio in the Adelaide CBD.  Not good enough boys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112000047617592065?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112000047617592065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/06/life-continuing-saga-of-that-damn-car.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112000047617592065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112000047617592065'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/06/life-continuing-saga-of-that-damn-car.html' title='Life: The Continuing Saga of That Damn Car Stereo'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-111983152992544754</id><published>2005-06-27T12:34:00.000+09:30</published><updated>2005-06-29T17:09:05.723+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Life'/><title type='text'>Life: The Screech Of An Unearthed Stereo</title><content type='html'>As someone who writes software for a living, I'm always thinking about testing. Not that I like testing, but testing is the only way to validate your work. Even the most confident programmer checks the basic operation of his work.. right?&lt;br /&gt;&lt;br /&gt;Well, it seems that the same rules don't apply when installing a new car stereo. At least, not on a Saturday morning. I just spent over $300 on an MP3 car stereo, and was shocked to find when I drove off that there was a shreiking sound coming from the speakers which exactly matched the motor's speed. Having spent my youth installing car stereos, I immediately knew the problem - The earth wire had not been secured. It's fine when the stereo runs alone, but &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; when the motor is on.  Great.. I'll just turn the motor off at the lights, shall I?&lt;br /&gt;&lt;br /&gt;A simple test would have been to run the stereo, &lt;span style="font-style: italic;"&gt;at the same time&lt;/span&gt; as the motor. Not too tough, right? It goes to show that a little time spent making sure the job is done right will save time in the future. Not only my time, but the next poor sap who will be handed this job in his lunch break.. I can only hope its the *same* guy who stuffed it in the first place.&lt;br /&gt;&lt;br /&gt;Of course, such a lesson is timely reminder to all programmers. NEVER assume that just because you got it right every other time, that you don't need to test this time.. Of course you do!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-111983152992544754?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/111983152992544754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/06/life-screech-of-unearthed-stereo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/111983152992544754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/111983152992544754'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/06/life-screech-of-unearthed-stereo.html' title='Life: The Screech Of An Unearthed Stereo'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112062527995964809</id><published>2005-05-02T18:17:00.000+09:30</published><updated>2005-07-06T14:17:59.960+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Programming:  Riskier (Part 3)</title><content type='html'>Fog of War – No real RTS game can exist without FOW, and I intend to build this model in from the ground up.  No client will have knowledge of the ‘real’ world, except what they are informed of via the server.  Thus the server will be the only location where the real knowledge is, and will disseminate according to rules to be determined later (eg. Proximity, spy networks, satellites, etc.).  As such all client data will be considered an approximation, and will thus be time stamped (to indicate currency).&lt;br /&gt;&lt;br /&gt;I am not an AI programmer – yet!  Although I studied Prolog at Uni, I definitely would not claim myself to be able to write a sentient (according to Turing, anyway!) adversary, and so I will restrict the game to multi player only.  Accordingly, the model I will develop is based on the future consideration of allowing an AI to be created which will interact with the central game server in the same way as the players.  Thus, the AI will not be able to cheat, or make any decisions from which it has no data to base it on.&lt;br /&gt;&lt;br /&gt;Given the nature of trademarks, copyrights, etc., and the fact that my game will be a leap from the original, a new name seems appropriate.  I have thought of (and used as a working title) the name ‘Riskier’, which is just a bit of fun, really.  Other names that I like are ‘Manifest Destiny’ and ‘Global Hegemony’.  The first title refers to the 19th century belief in the US that the two continent of the western hemisphere would be best served by being conquered by the US, which felt it had a God given right to do so.. A perfect name for a game about empire really, isn’t it?  The second is a general reference to the way the world is viewing the current state of world affairs (i.e. US Hegemony in the Middle East).  Although I like the title, I have found that few know what the word means, and many can’t even pronounce it! &lt;br /&gt;&lt;br /&gt;Oh well, Manifest Destiny (MD) will do for now!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112062527995964809?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112062527995964809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/05/programming-riskier-part-3.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112062527995964809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112062527995964809'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/05/programming-riskier-part-3.html' title='Programming:  Riskier (Part 3)'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112062507162165984</id><published>2005-03-06T14:14:00.000+10:30</published><updated>2005-07-06T14:16:10.340+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Programming:  Riskier (Part 2)</title><content type='html'>&lt;p class="MsoNormal" style="text-align: justify;"&gt;I think that this version of Risk, aka ‘The Risk Board Game’ is a bit dull for a rewrite, and so I have decided to introduce a more complex economic model, based on the interaction of individual regions, which will culminate in an equivalent ‘need’ to conquer all the regions on a particular continent.&lt;span style=""&gt;  &lt;/span&gt;Essentially, each region will have an economic value (it’s core worth – termed ‘E’), but will return to the player each turn (or thereabouts) a value equal to it’s value E plus 20% of all neighbouring E, plus 5% of all those neighbours’ neighbours.&lt;span style=""&gt;  &lt;/span&gt;In total, 3 levels of recursion are envisaged, as the following table will show:&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;table style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0"&gt;   &lt;tbody&gt;&lt;tr&gt;   &lt;td style="border: 0.5pt solid windowtext; padding: 0cm 5.4pt; background: rgb(224, 224, 224) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 213.05pt;" valign="top" width="284"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;Region Distance&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: solid solid solid none; border-color: windowtext windowtext windowtext -moz-use-text-color; border-width: 0.5pt 0.5pt 0.5pt medium; padding: 0cm 5.4pt; background: rgb(224, 224, 224) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; width: 213.05pt;" valign="top" width="284"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b&gt;Percentage of Economy (E)&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 0.5pt 0.5pt; padding: 0cm 5.4pt; width: 213.05pt;" valign="top" width="284"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;0&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0cm 5.4pt; width: 213.05pt;" valign="top" width="284"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;100&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 0.5pt 0.5pt; padding: 0cm 5.4pt; width: 213.05pt;" valign="top" width="284"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;1&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0cm 5.4pt; width: 213.05pt;" valign="top" width="284"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;20&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 0.5pt 0.5pt; padding: 0cm 5.4pt; width: 213.05pt;" valign="top" width="284"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;2&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0cm 5.4pt; width: 213.05pt;" valign="top" width="284"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;5&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr&gt;   &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color windowtext windowtext; border-width: medium 0.5pt 0.5pt; padding: 0cm 5.4pt; width: 213.05pt;" valign="top" width="284"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;3&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color windowtext windowtext -moz-use-text-color; border-width: medium 0.5pt 0.5pt medium; padding: 0cm 5.4pt; width: 213.05pt;" valign="top" width="284"&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;1&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal" style="text-align: justify;"&gt;Also, I decided to add another major change to the risk model, namely by making it Real Time (not turn based).&lt;span style=""&gt;  &lt;/span&gt;That is, I want each unit to be able to move at any time, restricted only by it’s readiness level.&lt;span style=""&gt;  &lt;/span&gt;Readiness will be reduced by 50% for each region move, and 75% will be required to move at all.&lt;span style=""&gt;  &lt;/span&gt;Hence, although everything could move at the same time, it would be strategically dangerous to do so.&lt;span style=""&gt;  &lt;/span&gt;Readiness will be regained by a unit based on a variety of factors which will be determined later, but which will involve tech level, morale, and whether the region being moved into is friend or foe.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112062507162165984?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112062507162165984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/03/programming-riskier-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112062507162165984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112062507162165984'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/03/programming-riskier-part-2.html' title='Programming:  Riskier (Part 2)'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-112062482000890894</id><published>2005-01-01T14:09:00.000+10:30</published><updated>2005-07-06T14:10:20.010+09:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Programming: Riskier (Part 1)</title><content type='html'>I love the board game of Risk, and have played various RTS (Real Time Strategy) games for several years.  At high school I was always building games (via D&amp;D or Battlemech) to keep myself and friends amused.  Naturally, as a programmer, I have always thought about writing a game, since building business data-centric applications, although challenging, is by no means interesting, and to most, out right esoteric.&lt;br /&gt;&lt;br /&gt;I chose Risk because the game is in essence extremely simple, and hence a great candidate for implementation to a computer.  Furthermore, the Risk concept is easily extensible, with various additions to the core game being possible, particularly as future add ons.&lt;br /&gt;&lt;br /&gt;So, what is Risk?  Well, to the uninitiated (if there is such a person!) Risk is a game of nation building, or empire building.  The game is won by conquering the neighbouring regions, and ensuring that your competitors can’t do the same.  The winner is, by the classic definition, the last man standing.  The value of a particular region is it’s composition in the continent.  When all regions within a continent are conquered, the player then receives extra spending points.  Armies are generated via these spending points, and thus the game is born.&lt;br /&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-112062482000890894?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/112062482000890894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/01/programming-riskier-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112062482000890894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/112062482000890894'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/01/programming-riskier-part-1.html' title='Programming: Riskier (Part 1)'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12320765.post-111404158555786839</id><published>2005-01-01T08:26:00.000+10:30</published><updated>2005-07-06T14:15:10.143+09:30</updated><title type='text'>Your Blogging Starts... Now</title><content type='html'>I'm finally blogging. Many thoughts pass through this brain of mine each moment, I wonder whether I'll ever truly be able to capture the essence of them all.. We'll soon see.&lt;br /&gt;&lt;br /&gt;At least now I have no more excuses for not having an on-line presence.  Here I am!&lt;br /&gt;&lt;br /&gt;My intention is to blog about all things Laan. Mostly, I'll be mentioning programming, politics, and partying. My 3 favourite things. Well.. At least 3 favourite things I can blog about, anyway! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12320765-111404158555786839?l=laany.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://laany.blogspot.com/feeds/111404158555786839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://laany.blogspot.com/2005/01/your-blogging-starts-now.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/111404158555786839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12320765/posts/default/111404158555786839'/><link rel='alternate' type='text/html' href='http://laany.blogspot.com/2005/01/your-blogging-starts-now.html' title='Your Blogging Starts... Now'/><author><name>Ben Laan</name><uri>http://www.blogger.com/profile/16516684048135726343</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
