<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Development</title>
        <link>http://geekswithblogs.net/twickers/category/6166.aspx</link>
        <description>General development musings.</description>
        <language>en-GB</language>
        <copyright>Liam Westley</copyright>
        <managingEditor>liam.westley@tigernews.co.uk</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Hosted exception collection for .NET applications made easy – Exceptioneer.com</title>
            <link>http://geekswithblogs.net/twickers/archive/2009/11/20/136439.aspx</link>
            <description>&lt;p&gt;I own a company, Tiger Computer Services Ltd, which is an Independent Software Vendor (ISV) providing .NET software solutions to clients in the London area.&lt;/p&gt;
&lt;p&gt;One of the most significant considerations when running a small ISV is the cost of supporting software in the field. For some clients, support is not a billable item, especially if the fault is within the software we have provided. This means that every time the telephone rings, we bleed money, and if we have to actually go on site to resolve an issue it gets worse.&lt;/p&gt;
&lt;p&gt;Whether the software solution is ‘packaged’ or is a custom solution, all our clients run the software on their own equipment at their own premises.  We have never asked for VPN access into their network.  We take the view that if you cannot easily VPN into a system you have a real incentive to write reliable software that works first time and doesn’t need continuous intervention.&lt;/p&gt;
&lt;p&gt;However, although all the clients can be reached within about one hour by public transport, an on-site visit is bad for many reasons;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;It costs money; either to ourselves or to the client (the latter is even worse if someone has to approve the cost in advance of the visit)&lt;/li&gt;
    &lt;li&gt;It takes time, which can lead to more issues; i.e. data corruption through continued use of the software&lt;/li&gt;
    &lt;li&gt;It is highly disruptive of work being undertaken for other clients&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Exception handling is a good thing&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This may sound obvious, but however good your programming is, it’ll generate exceptions.  It is impossible to account for all eventualities and you need to be ready to handle them and log the state of the system when they occurred.&lt;/p&gt;
&lt;p&gt;The solutions we deliver are generally a combination of ASP.NET web applications, Windows Services (Windows Forms applications with no user interface) and usually with some database server in the background (SQL Server, MySQL or Oracle).  Our exception handling is wrapped up in a set of reporting libraries whose history dates back to before Visual Basic 6.&lt;/p&gt;
&lt;p&gt;The reporting libraries were overhauled in the transfer to C#, and they provide a simple method for logging messages and exceptions simultaneously to the Windows Event Log, text based log file, SMTP e-mail and interactive dialogs (for Windows Forms applications with a user interface).&lt;/p&gt;
&lt;p&gt;The libraries consist of a central reporting engine, into which various reporters are plugged and these handle all the various methods for recording exceptions.  One call to the reporting engine to display a message or exception calls all the reporters in turn.  This allows new methods of reporting exceptions to be added quickly, and for various methods to be turned off as required (such as disabling writing to the Event Log on shared hosting providers).&lt;/p&gt;
&lt;p&gt;Whether you use the Microsoft application block, log4net or some home grown exception handling, the biggest issue is getting access to the log files or event log messages once an exception has occurred.&lt;/p&gt;
&lt;p&gt;Without remote access, we rely on the client IT team to either take the text log file, or dump the Event Logs to a CSV file, and e-mail the file to us. Of course, this assumes that the client is already aware they have a problem, which means it has very likely started to affect their use of the application.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Proactive exception handling&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In an ideal world you would receive notification automatically about any exceptions in your applications, without requiring intervention from the client.&lt;/p&gt;
&lt;p style="margin-left: 40px;"&gt;&lt;em&gt;Nothing impresses a client more than when you phone &lt;strong&gt;them &lt;/strong&gt;to tell them they have an issue, &lt;strong&gt;and &lt;/strong&gt;that you have already got a solution which they can implement to fix it.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Although our reporting libraries do include an SMTP e-mail reporter which can provide some of this proactive functionality it is not always possible to persuade clients that their SMTP gateway or firewall should be ‘tweaked’ to allow support e-mails out of the building.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exceptioneer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Earlier this year I was kindly invited into a beta program for a ‘hosted exception collection’ service called Exceptioneer run by the good chaps at Pixel Programming, Phil Winstanley (a Microsoft MVP, no less) and Chris Gaskell.  &lt;/p&gt;
&lt;p&gt;These guys write .NET applications for a living and had already created their own centralised exception collection system for their own applications, solving the issues encountered when creating this type of solution.  Realising they had something well worth sharing, they turned their system into a packaged, hosted service for other developers and Exceptioneer was born.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;.NET support&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Exceptioneer supports ASP.NET, Windows Forms and JavaScript (although I have yet to use the JavaScript exception hander).&lt;/p&gt;
&lt;p&gt;Integration in an ASP.NET application is simple; reference the Exceptioneer web client assembly and add a few lines in the Web.Config and it will be reporting unhandled exceptions right away.  &lt;/p&gt;
&lt;p&gt;For Windows Forms, you need to reference a windows form assembly and integrate the API into whatever exception handling system you are already using.  We had it integrated with our reporting engine within an hour or so.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What does Exceptioneer provide?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The management interface of Exceptioneer provides a very clean web interface, where you can view all your registered projects (limited to three in the free service), and drill down into the various exceptions which might have occurred, when the last occurred and what application generate the exception. &lt;/p&gt;
&lt;p&gt;Repeated exceptions are intelligently grouped with drill down for further detail, including stack traces and full source code from the PDB file if you are testing a debug compilation.  You can identify the exact line causing the issue, and 75% of the time it is possible to identify the underlying cause without even starting up Visual Studio to view the source code.&lt;/p&gt;
&lt;p&gt;Exceptioneer provides e-mail notifications, and if you are a Twitter user, Exceptioneer can even send direct messages when new exceptions occur, which tends to catch the eye even quicker than e-mails.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;... and it works&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Since integrating Exceptioneer with a new system deployed in September, it has proved invaluable for resolving issues (related to user input which was not being verified correctly) which would have come close to an on-site visit to identify exactly what was happening.&lt;/p&gt;
&lt;p&gt;Even better, on most occasions we phone the client first to inform them that they had the problem (which occurred more than once) and the IT support guys were able to fix the problem before the end user actually realised something had gone wrong.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Try it yourself&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now the beta program has been completed, the service has been opened for everyone.  I recommend heading over to &lt;a href="http://www.exceptioneer.com"&gt;http://www.exceptioneer.com&lt;/a&gt; and registering for a free account, and giving it a spin in your own projects.&lt;br /&gt;
 &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136439"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136439" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/136439.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2009/11/20/136439.aspx</guid>
            <pubDate>Fri, 20 Nov 2009 13:32:54 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/136439.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2009/11/20/136439.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/136439.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/136439.aspx</trackback:ping>
        </item>
        <item>
            <title>Installing a second hard drive on my HP 6910p – one step closer to a virtual machine users dream machine</title>
            <link>http://geekswithblogs.net/twickers/archive/2009/11/10/136181.aspx</link>
            <description>I’ve previously described my reasoning for buying a business laptop like the HP 6910p, &lt;a href="http://geekswithblogs.net/twickers/archive/2008/07/08/123643.aspx"&gt;http://geekswithblogs.net/twickers/archive/2008/07/08/123643.aspx&lt;/a&gt;. I’m now feeling even better about that decision after the latest ‘upgrade’ to my main laptop; adding a second internal hard drive to simplify my use of virtual machines.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;The problem&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
I use virtual machines quite regularly. One major client has a legacy application that requires Visual Studio 2003, which in turn requires Windows XP Professional as an operating system.  My daily operating system has been Windows 7 since the beta was released in January. So I created a virtual Windows XP machine with the data (source code, SQL Server 2000 databases) on a separate virtual drive image (in a ‘neutral’ VHD format).&lt;br /&gt;
&lt;br /&gt;
I have run this XP/ VS2003 image in various host software; Virtual PC, VMWare workstation and VirtualBox. Currently it is running within VMWare Workstation 7 (recently released) and to improve the performance of the virtual machine, I placed both the guest operating system virtual drive image and the data virtual drive image on a separate hard drive to the host operating system.&lt;br /&gt;
&lt;br /&gt;
I used a separate drive, in an external USB 2.0/eSata enclosure from Akasa. This accepts a standard 2.5” notebook drive, allowing both power and data to be handled by a single USB to mini USB cable.  &lt;br /&gt;
&lt;br /&gt;
Using an external drive has it's advantages. It is very portable and you can easily take the drive with you or move it between different systems.  There is, however, one downside.  Using it on public transport, even a train, can be a bit awkward; where do you put that hard drive to stop it getting knocked?  Even at home I have been known to drop it more than once, fortunately when it was powered down, but still not ideal.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;The solution&lt;/span&gt;&lt;br style="font-weight: bold;" /&gt;
&lt;br style="font-weight: bold;" /&gt;
The advantage of the business laptops, like this HP series, is they usually support removable drives. In the case of HP this is called a MultiBay.  This is a simple caddy system for the optical drive, which can quickly be switched for other devices allowing easy upgrading of the optical drive, or placing the optical drive in your docking station and filling the slot with a plastic spacer to shave 150g off the overall weight of the laptop.  &lt;br /&gt;
&lt;br /&gt;
I have been using one of these plastic spacers for the last six months or so, so I definitely knew that for me having a DVD/CD drive was an optional extra.  I have enough USB flash drives and external hard drives that I no longer use optical discs unless archiving.  As long as I have access to an optical drive via the laptop docking station for the odd occasion when I need one, that will do me fine.&lt;br /&gt;
&lt;br /&gt;
One of the available MultiBay items is a simple hard drive caddy, which takes a standard SATA notebook hard drive and places it in a standard MultiBay format.  If you buy it from HP it arrives with a drive already in place, for what I can only describe as an extortionate amount of money.  Fortunately you can pick one up on empty version on eBay for £20, as long as you are prepared to wait a week of two for delivery from Hong Kong.&lt;br /&gt;
&lt;br /&gt;
Well, I received my MultiBay caddy about 10 days ago, and in less than five minutes I had a new hard drive installed in my laptop.  It’s a joy to have an internal drive and no longer have to worry about accidently knocking it while it’s running. In daily use, running my VS2003 development VM, it’s worked beautifully.  &lt;br /&gt;
&lt;br /&gt;
No longer are my host and guest operating systems fighting over access to the hard drive, and both the host and guest are smoother in use as a result.  It is a shame that the MultiBay standard is USB 2.0, so even though the drive is housed internally I don’t get full SATA transfer speeds. The only other minor niggle is that the drive activity does not cause the ‘optical drive LED’ to flash on the front of the laptop. For this you have to check the red LED on the face of the MultiBay itself, but at least you do get a drive use indicator.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Future upgrade&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Of course, this has just left me wanting more.  That boot drive is very likely to be replaced by an SSD drive, and with two internal drives available.  Two drives means I can install a smaller (read cheaper) SSD drive for booting and running my development tools and applications.  The old fashioned MultiBay can handle data storage and virtual machine images.   Now all I need are 4Gb SO-DIMMs for a reasonable price so I can upgrade to 8Gb in total ....&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;The upgrade in images&lt;/span&gt;&lt;br style="font-weight: bold;" /&gt;
&lt;br /&gt;
&lt;img width="90%" src="http://www.tigernews.co.uk/blog-twickers/hp-hdd/01-ExternalUsbCaddy.jpg" alt="External Akasa USB 2.0 caddy" /&gt;&lt;br /&gt;
&lt;br /&gt;
This is the Akasa caddy I use for most of my external drives (I have four currently), the cost around £15 including the eSata, USB and ‘USB power’ cables, and can take both PATA and SATA drives.&lt;br /&gt;
&lt;br /&gt;
&lt;img width="90%" src="http://www.tigernews.co.uk/blog-twickers/hp-hdd/02-NotebookSataDrive320Gb.jpg" alt="320Gb SATA 2.5&amp;quot; notebook drive" /&gt;&lt;br /&gt;
&lt;br /&gt;
I removed the 320Gb Western Digital drive from the caddy.&lt;br /&gt;
&lt;br /&gt;
&lt;img width="90%" src="http://www.tigernews.co.uk/blog-twickers/hp-hdd/03-DVDDrive.jpg" alt="Original optical drive (DVD/CD) from HP 6910p" /&gt;&lt;br /&gt;
&lt;br /&gt;
I removed the optical drive from the laptop. Note how the MultiBay ‘format’ is effectively based on the standard format for a laptop optical drive with a single extra circuit board on the rear to convert the connector to the ‘HP’ standardised connector.&lt;br /&gt;
&lt;br /&gt;
&lt;img width="90%" src="http://www.tigernews.co.uk/blog-twickers/hp-hdd/04-EmptyCaddy.jpg" alt="My new empty hard drive MultiBay caddy" /&gt;&lt;br /&gt;
&lt;br /&gt;
This is the £20 hard drive caddy which will slot into the laptop in place of the optical drive ...&lt;br /&gt;
&lt;br /&gt;
&lt;img width="90%" src="http://www.tigernews.co.uk/blog-twickers/hp-hdd/05-DriveInCaddy.jpg" alt="Final configuration - hard drive moved into the new MultiBay caddy" /&gt;&lt;br /&gt;
&lt;br /&gt;
... and here is that caddy with the hard drive in place, before slotting back into the laptop.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136181"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136181" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/136181.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2009/11/10/136181.aspx</guid>
            <pubDate>Tue, 10 Nov 2009 14:45:08 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/136181.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2009/11/10/136181.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/136181.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/136181.aspx</trackback:ping>
        </item>
        <item>
            <title>How to enable PowerShell in Hyper-V Server 2008 R2</title>
            <link>http://geekswithblogs.net/twickers/archive/2009/11/04/136013.aspx</link>
            <description>After reading Tim Anderson’s blog article (&lt;a href="http://www.itwriting.com/blog/1933-hyper-v-server-2008-r2-a-great-deal-for-windows-virtualization.html"&gt;here&lt;/a&gt;) on his installation of Hyper-V Server 2008 R2 I glibly added a comment that R2 now includes PowerShell 2.0 for local management of virtual machines using PowerShell scripts.  Of course, I hadn’t actually tried this before commenting ....&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Why would you want to use scripting on Hyper-V Server 2008 R2&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
If you have never installed Hyper-V Server 2008 R2 you may not realise the limited options provided by the local management tool.  Based on Windows Server 2008 R2 Server Core there is no Windows Explorer and none of the standard user interface components for configuration.  Instead the Hyper-V team provide a simple menu which supports the configuration steps required to allow remote management of the server using the Hyper-V Manager MMC snap-in (available for Vista, Windows 7 and Windows Server 2008).&lt;br /&gt;
&lt;br /&gt;
&lt;img align="middle" width="90%" src="http://www.tigernews.co.uk/blog-twickers/hyperv-ps/01-LocalManagementTool.jpg" alt="Hyper-V Server Local Management Tool" /&gt;&lt;br /&gt;
&lt;br /&gt;
The real ‘local’ management tool is that old fashioned item, the command prompt,&lt;br /&gt;
&lt;br /&gt;
&lt;img align="middle" width="90%" src="http://www.tigernews.co.uk/blog-twickers/hyperv-ps/02-RealLocalManagementTool.jpg" alt="Command Prompt" /&gt;&lt;br /&gt;
&lt;br /&gt;
So, if you aim to manage Hyper-V Server 2008 R2 you should get used to command line tools and commands, which means having access to a scripting system like PowerShell provides a route for local management of virtual machines without requiring the Hyper-V Manager on a separate client machine.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;No PowerShell by default&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
As stated above, Hyper-V Server 2008 R2 is based on Windows Server 2008 R2 Server Core, and it is this update that included support for .NET framework and PowerShell scripting.  Quite correctly server core locks down all functionality until it is enabled/installed.  PowerShell is one of the items that are not installed by default.  &lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;First installation attempt&lt;/span&gt;&lt;br style="font-weight: bold;" /&gt;
&lt;br /&gt;
So I did a quick Google/Bing for &lt;span style="font-weight: bold; font-style: italic;"&gt;Enabling PowerShell on Hyper-V Server 2008 R2&lt;/span&gt; and got to this blog article (&lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/02/10/enabling-powershell-on-hyper-v-server-2008-r2.aspx"&gt;here&lt;/a&gt;) on the highly useful Virtual PC Guy’s blog. I followed the steps. No joy.&lt;br /&gt;
&lt;br /&gt;
&lt;img align="middle" width="90%" src="http://www.tigernews.co.uk/blog-twickers/hyperv-ps/03-FirstInstallAttempt.jpg" alt="First installation attempt" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Hold on - doesn’t PowerShell required .NET Framework&lt;/span&gt;?&lt;br style="font-weight: bold;" /&gt;
&lt;br /&gt;
I did a directory search, &lt;span style="font-weight: bold;"&gt;dir c:\windows\*powershell*.exe /s&lt;/span&gt;, to see if the directory path had changed, but instead of finding a PowerShell installation, I found a list of files in a directory called &lt;span style="font-weight: bold;"&gt;c:\windows\winsxs&lt;/span&gt;.  This directory appears to contain all the install packages for server core, and as well as PowerShell it included .NET framework installations.&lt;br /&gt;
&lt;br /&gt;
This was the ‘lightbulb’ moment I was searching for. PowerShell probably won’t install because I the .NET Framework is not installed.  A big more of Google/Bing and I found the following article on Window Server 2008 R2 Server Core, on MSDN, &lt;a href="http://code.msdn.microsoft.com/r2core/Wiki/View.aspx?title=Home&amp;amp;version=8"&gt;http://code.msdn.microsoft.com/r2core/Wiki/View.aspx?title=Home&amp;amp;version=8&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I ran the command &lt;span style="font-weight: bold;"&gt;oclist&lt;/span&gt; to list all the installed options,&lt;br /&gt;
&lt;br /&gt;
&lt;img align="middle" width="90%" src="http://www.tigernews.co.uk/blog-twickers/hyperv-ps/04-oclist.jpg" alt="OCList output" /&gt;&lt;br /&gt;
&lt;br /&gt;
There, right in the middle was PowerShell being a child node of NetFx2 (.Net Framework 2.0) which suggested a dependency.  So I ran the following installation commands&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;   start /w ocsetup NetFx2-ServerCore&lt;/span&gt;&lt;br style="font-weight: bold;" /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;   start /w ocsetup MicrosoftsoftWindowsPowerShell&lt;/span&gt;&lt;br style="font-weight: bold;" /&gt;
&lt;br /&gt;
After that, I had PowerShell installed,&lt;br /&gt;
&lt;br /&gt;
&lt;img align="middle" width="90%" src="http://www.tigernews.co.uk/blog-twickers/hyperv-ps/05-InstallationComplete.jpg" alt="Installation Complete" /&gt;&lt;br /&gt;
&lt;br /&gt;
To run it I just &lt;span style="font-weight: bold;"&gt;cd&lt;/span&gt;'d to &lt;span style="font-weight: bold;"&gt;c:\windows\system32\WindowsPowerShell\v1.0&lt;/span&gt; and typed &lt;span style="font-weight: bold;"&gt;powershell&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img align="middle" width="90%" src="http://www.tigernews.co.uk/blog-twickers/hyperv-ps/06-RunningPowerShell.jpg" alt="PowerShelll command prompt" /&gt;&lt;br /&gt;
&lt;br /&gt;
Alternatively once you reboot the system, the PowerShell directory will be placed in the search path and you can just type powershell in any directory to access the PowerShell command prompt.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Next steps ...&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;In a post next week I’ll demonstrate how to use the PowerShell Management Library for Hyper-V available on codeplex (&lt;a href="http://pshyperv.codeplex.com/"&gt;http://pshyperv.codeplex.com/&lt;/a&gt;) on Hyper-V Server 2008 R2 to list running virtual machines, start and stop virtual machines and do useful admin stuff like mount/dismount VHD drives.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136013"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=136013" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/136013.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2009/11/04/136013.aspx</guid>
            <pubDate>Thu, 05 Nov 2009 09:00:47 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/136013.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2009/11/04/136013.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/136013.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/136013.aspx</trackback:ping>
        </item>
        <item>
            <title>Virtualised networking issues? Sometimes it's the most obvious thing, Doh!</title>
            <link>http://geekswithblogs.net/twickers/archive/2009/10/04/135291.aspx</link>
            <description>&lt;font size="3"&gt;&lt;span lang=""&gt;I just provided some help to a friend setting up a small virtualisation network on single machine, for demonstrating a new software technology at user groups and conferences.
&lt;p&gt;A few tweets and e-mails went back and forth as we discussed virtual networking options, static IP configurations and using NEWSISID to enable imaging VMs from a initial 'gold' image. Getting the machines to talk to each other on an isolated virtual network was proving to be way more difficult than it should have been.&lt;/p&gt;
&lt;p&gt;At this point I'll veer off and mention the apocryphal story regarding a Physics PhD who was visiting his parents. When he discovered that their vacuum cleaner had stopped working the day before he offered to help out. About an hour after he started his mother brought him a cup of tea in a room now strewn with vacuum cleaner parts being tested with a digital multimeter. His mother casually asked if he had tested the fuse ... &lt;/p&gt;
&lt;p&gt;So back to the virtualisation; I had actually hit a similar scenario with my virtualisation presentations when I installed Hyper-V Server on one laptop and used a crossed network cable to connect to a second laptop running Windows Server 2008. I blamed Hyper-V Server, I blamed my static IP configuration, I blamed the crossed network cable. &lt;/p&gt;
&lt;p&gt;I blamed &lt;strong&gt;all &lt;/strong&gt;the unfamiliar things I was working with.&lt;/p&gt;
&lt;p&gt;And the solution for me, and my friend's isolated virtual network? &lt;/p&gt;
&lt;p&gt;The default firewall settings in Windows Server 2008 block the &lt;strong&gt;ping&lt;/strong&gt; command. Yep, the thing you'll first think of to test you have the network configured correctly won't work. &lt;/p&gt;
&lt;p&gt;I discovered this when in desperation I configured remote administration. Once a connected remotely, I knew my network configuration was definitely working, and a bit of digging later and I discovered the truth about ping under a default installation of Windows Server 2008.&lt;/p&gt;
&lt;p&gt;The lesson learnt; it is completely natural to blame the unfamiliar first, a very human reaction. It's also more often than not the wrong attitude, especially with new computer technologies.&lt;/p&gt;
&lt;p&gt;Liam&lt;/p&gt;
&lt;p&gt;P.S. Disabling the &lt;strong&gt;ping&lt;/strong&gt; command follows the Microsoft goal of locking down server operating systems to be secure out of the box, and letting administrators enable services and firewall items when they are required. This is a good thing, and I definitely don't want this post to suggest otherwise. We just need to remember, no &lt;strong&gt;ping&lt;/strong&gt; by default and get over it.&lt;/p&gt;
&lt;/span&gt;&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135291"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=135291" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/135291.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2009/10/04/135291.aspx</guid>
            <pubDate>Mon, 05 Oct 2009 02:41:28 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/135291.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2009/10/04/135291.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/135291.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/135291.aspx</trackback:ping>
        </item>
        <item>
            <title>Hyper-V for Developers - presentation from Edge UG 16 September 2009</title>
            <link>http://geekswithblogs.net/twickers/archive/2009/09/17/134862.aspx</link>
            <description>Thanks to Ray and Gavin for organising another top &lt;a href="http://www.edgeug.net" style="font-weight: bold;"&gt;EdgeUG&lt;/a&gt; meeting in Microsoft Cardinal Place and for everyone who attended my talk on Hyper-V for Developers. The audience had to deal with a huge amount of technical information that I crammed into the hour - hopefully it didn't put them off their pizza.  &lt;br /&gt;
&lt;br /&gt;
Fortunately the Stack Overflow master and author of &lt;a href="http://csharpindepth.com/" style="font-weight: bold;"&gt;C# in Depth&lt;/a&gt;, &lt;a href="http://twitter.com/jonskeet" style="font-weight: bold;"&gt;Jon Skeet&lt;/a&gt;, was on hand after the break for a interesting glimpse into code contracts coming with VS2010 and C# 4.0.  &lt;br /&gt;
&lt;br /&gt;
For those who weren't there last night, the presentation provides an overview of Hyper-V Server 2008 and Windows Server 2008 running Hyper-V, tools that you can install to help you out, how Snapshots work and finally automation of Hyper-V using the PowerShell library for Hyper-V as might be used in CI (continous integration) server.&lt;br /&gt;
&lt;br /&gt;
I've got two version of the slidedeck, one in PowerPoint, &lt;a href="http://www.tigernews.co.uk/blog-twickers/edgeug/hyperv4dev-ppt.zip" style="font-weight: bold;"&gt;hyperv4dev-ppt.zip&lt;/a&gt;, and a PDF version complete with speaker notes that contains all the interesting stuff including the PowerShell script, &lt;a href="http://www.tigernews.co.uk/blog-twickers/edgeug/hyperv4dev-pdf.zip" style="font-weight: bold;"&gt;hyperv4dev-pdf.zip&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Thanks again to the guys from EdgeUG and all those who joined us down the pub afterwards for a beer and a chat.&lt;br /&gt;
&lt;br /&gt;
Liam&lt;br /&gt;
&lt;br /&gt;
P.S. Jon mentioned that Microsoft has decided that static checking of Code Contracts should be limited to the Team System versions of Visual Studio 2010. Here is a link to the Microsoft Connect request to reverse this blinkered approach and place static checking into Visual Studio Professional edition;&lt;br /&gt;
&lt;br /&gt;
   &lt;span id="msgtxt3908053654" class="msgtxt en"&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=481327" onclick="pageTracker._trackPageview('/exit/link/3908053654')" rel="nofollow" target="_blank"&gt;https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=481327&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Do please vote on t his topic and let Microsoft know what you think, hopefully it 's not too late to reverse this marketing decision. &lt;/span&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=134862"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=134862" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/134862.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2009/09/17/134862.aspx</guid>
            <pubDate>Thu, 17 Sep 2009 14:29:04 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/134862.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2009/09/17/134862.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/134862.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/134862.aspx</trackback:ping>
        </item>
        <item>
            <title>Hyper-V for Developers - presentation from DevEvening 13 August 2009</title>
            <link>http://geekswithblogs.net/twickers/archive/2009/08/14/134088.aspx</link>
            <description>Thanks to Alex and Matt for organising another top &lt;a href="http://www.devevening.co.uk/index.aspx" style="font-weight: bold;"&gt;DevEvening&lt;/a&gt; user group in Woking and for everyone who attended my talk on Hyper-V for Developers. Apologies for over running and hope it didn't stop you from enjoying your meals.  I think I achieved a good warm up for &lt;span class="post-author vcard"&gt; &lt;span class="fn"&gt;&lt;a href="http://serialseb.blogspot.com/" style="font-weight: bold;"&gt;Sebastien Lambla&lt;/a&gt;'s talk on best practices in MVC.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
For those who weren't there last night, the presentation provides an overview of Hyper-V Server 2008 and Windows Server 2008 running Hyper-V, tools that you can install to help you out, how Snapshots work and finally automation of Hyper-V using the PowerShell library for Hyper-V.&lt;br /&gt;
&lt;br /&gt;
I've got two version of the slidedeck, one in PowerPoint, &lt;a href="http://www.tigernews.co.uk/blog-twickers/devevening/hyperv4dev-ppt.zip" style="font-weight: bold;"&gt;hyperv4dev-ppt.zip&lt;/a&gt;, and a PDF version complete with speaker notes that contains all the interesting stuff including the PowerShell script, &lt;a href="http://www.tigernews.co.uk/blog-twickers/devevening/hyperv4dev-pdf.zip" style="font-weight: bold;"&gt;hyperv4dev-pdf.zip&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Thanks again to the guys in Woking, and for &lt;span class="post-author vcard"&gt;&lt;span class="fn"&gt;Sebastien Lambla f&lt;/span&gt;&lt;/span&gt;or helping me polish off a bottle of nice wine on the way back to London.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=134088"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=134088" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/134088.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2009/08/14/134088.aspx</guid>
            <pubDate>Fri, 14 Aug 2009 15:01:13 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/134088.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2009/08/14/134088.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/134088.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/134088.aspx</trackback:ping>
        </item>
        <item>
            <title>Review: DisplayLink USB to DVI adapter, adding an external display to a laptop or desktop</title>
            <link>http://geekswithblogs.net/twickers/archive/2009/06/09/132707.aspx</link>
            <description>&lt;span style="font-weight: bold;"&gt;DisplayLink USB&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Last week I wrote a review of a Kensington USB docking station which included DisplayLink technology to allow an external display to be added to a laptop via a USB 2.0 port.  I described how I used this docking station to enable the holy grail of three external screens on my laptop.  You can read about it here,&lt;br /&gt;
&lt;br /&gt;
   &lt;a href="geekswithblogs.net/twickers/archive/2009/06/03/132579.aspx"&gt;http://geekswithblogs.net/twickers/archive/2009/06/03/132579.aspx&lt;br /&gt;
&lt;br /&gt;
&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Declaring an interest&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
On publishing, I promoted the blog post via Twitter where recently someone had bemoaned the inability of a laptop to support more than two displays.  I was curious to see if DisplayLink might follow me on Twitter, and checked to see if they had an active account.  When I discovered they had no account, I created a DisplayLink account and sent the guys at &lt;a href="http://www.displaylink.com"&gt;www.displaylink.com&lt;/a&gt; the username and password so they could keep it safe for future use.&lt;br /&gt;
&lt;br /&gt;
The next day, the marketing guys at DisplayLink sent me an e-mail thanking me for setting up the Twitter account.  Also, as a gesture of appreciation they requested my address so they could send out a USB to DVI adapter based on their DL-160 chipset.  &lt;br /&gt;
&lt;br /&gt;
So a big thanks to DisplayLink for enabling me to review the DVI version.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Hardware&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Unlike the Kensington docking station which incorporated a USB 10/100 network chip, 4 port hub and USB audio, this is a dedicated display unit.  It’s wonderfully compact compared to the full docking station, approx 10cm x 5cm.  Connecting to the PC via a standard mini USB lead, it is self powered via USB, with video displayed using a DVI connector. &lt;br /&gt;
&lt;br /&gt;
&lt;table cellspacing="0" cellpadding="0" border="0" align="" width="100%" summary=""&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="text-align: center;"&gt;&lt;img height="165" width="225" src="http://www.tigernews.co.uk/blog-twickers/images/displaylink/DisplayLink-DVIConnector.png" alt="DVI Connector" /&gt;&lt;br /&gt;
            &lt;br /&gt;
            &lt;span style="font-weight: bold;"&gt;DVI Connector&lt;/span&gt;&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;&lt;img height="165" align="middle" width="225" src="http://www.tigernews.co.uk/blog-twickers/images/displaylink/DisplayLink-MiniUSBConnector.png" alt="Mini USB connector" /&gt;&lt;br /&gt;
            &lt;br /&gt;
            &lt;span style="font-weight: bold;"&gt;Mini USB Connector&lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
(I placed a measuring tape next to the adapter sio you can see just how small it is, the tape measure is locked at 10cm)&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Software&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The software was identical to that used for the Kensington docking station (see previous blog post for details), I just left the old driver in place.  When I booted up Windows 7 RC there was a ‘New Hardware Device’ pop up for a few seconds, after which the DisplayLink adapter worked immediately, appearing as my display number 3 on my desktop.&lt;br /&gt;
&lt;br /&gt;
Being a DVI output, the image was crisp and rock steady first time, with no need to adjust the display.  If anything it looked slightly brighter with better contrast on my test 17” display compared to the analogue version in the docking station, but that is most likely due to the monitor settings.&lt;br /&gt;
 &lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
My third monitor, a 17” Sharp model, while great on the DVI connection, is slightly fuzzy when displaying analogue VGA, so having a DVI version of DisplayLink is a great solution for my setup.&lt;br /&gt;
&lt;br /&gt;
The small size of the dedicated adapter really sells itself to those who spend their life fighting with projectors at client sites.  Having a couple of these, for both analogue and DVI solutions means you could guarantee best connectivity.&lt;br /&gt;
&lt;br /&gt;
I’m tempted to lend the unit to a friend who regularly finds Windows 7 RC on his Mac Air struggles to connect to projectors at anything above 640 x 480 to see if this could solve the problem. I suspect it might.&lt;br /&gt;
&lt;br /&gt;
It’s one of those rare IT products. It does a single job, really well, with the minimum of effort to install.&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132707"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132707" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/132707.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2009/06/09/132707.aspx</guid>
            <pubDate>Tue, 09 Jun 2009 22:04:38 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/132707.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2009/06/09/132707.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/132707.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/132707.aspx</trackback:ping>
        </item>
        <item>
            <title>Review: Three external screens from a single laptop with help from DisplayLink</title>
            <link>http://geekswithblogs.net/twickers/archive/2009/06/03/132579.aspx</link>
            <description>&lt;p&gt;As a developer I’ve become used to multiple monitors to increase my productivity.&lt;span style=""&gt;  &lt;/span&gt;Debugging applications is much easier when one monitor is running Visual Studio and a second monitor is displaying the application being debugged, or SQL Management Studio, or your Locals window.&lt;/p&gt;
&lt;p&gt;When I plugged my latest HP 6910p laptop into the docking station I was amazed to find that it supported dual external displays; both the DVI and analogue VGA ports can be active simultaneously.&lt;span style=""&gt;  &lt;/span&gt;It’s a real advantage to get off the laptop display which I never find ideal when working at a desk.&lt;span style=""&gt;  &lt;/span&gt;You really need the two monitors to be arranged side by side rather than above each other.&lt;span style=""&gt;  &lt;/span&gt;This places the laptop much further away than normal and makes the screen hard to read.&lt;span style=""&gt;  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I’ve been using dual 17” monitors at 1280 x 1024 with my laptop/docking station combination for some time.&lt;span style=""&gt;  &lt;/span&gt;A few months ago I bought a 24” HD screen, 1920 x 1080.&lt;span style=""&gt;  &lt;/span&gt;The ‘spare’ 17” monitor was relegated to my old desktop system, used for monitoring Outlook and Messenger and for Media Player duties. &lt;/p&gt;
&lt;p&gt;If only I could have all three screens connected to my laptop ...&lt;/p&gt;
&lt;p&gt;&lt;strong style=""&gt;Enter DisplayLink&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For some time, there have been proprietary graphics solutions for laptops which use PC Cards using the CardBus and Zoomed video abilities.&lt;span style=""&gt;  &lt;/span&gt;Effectively you are adding a new graphics card to the system.&lt;span style=""&gt;  &lt;/span&gt;These tended to be expensive and there was always the worry about driver availability for new operating systems.&lt;/p&gt;
&lt;p&gt;DisplayLink takes a different route to enabling an external display by using a USB 2.0 interface.&lt;span style=""&gt;  &lt;/span&gt;A desktop graphics driver delivers compressed video to a dedicated hardware decoder which has an analogue VGA output.&lt;span style=""&gt;  &lt;/span&gt;Not only does this make it available to any laptop with USB 2.0, it also supports desktop systems without upgrading the main graphics card.&lt;/p&gt;
&lt;p&gt;&lt;strong style=""&gt;Cheap route to DisplayLink&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I’d actually been following the progression of DisplayLink for some time in various &lt;a href="http://www.pcpro.co.uk/"&gt;www.pcpro.co.uk&lt;/a&gt; reviews, from the expensive Village Tronic ViBook (&lt;a href="http://www.pcpro.co.uk/reviews/244438/village-tronic-vibook.html?searchString=vibook"&gt;http://www.pcpro.co.uk/reviews/244438/village-tronic-vibook.html?searchString=vibook&lt;/a&gt;) at £130 to the more reasonable Kensington Dual Monitor Adapter (&lt;a href="http://www.pcpro.co.uk/reviews/246230/kensington-dual-monitor-adapter.html?searchString=kensington"&gt;http://www.pcpro.co.uk/reviews/246230/kensington-dual-monitor-adapter.html?searchString=kensington&lt;/a&gt;) at £60.&lt;/p&gt;
&lt;p&gt;Also, companies like Samsung have been selling external monitors which include smaller secondary screens powered by DisplayLink, as well as high end digital photo frames which include DisplayLink connectivity.&lt;/p&gt;
&lt;p&gt;However, one of the PC Pro reviews included the comment it might be a better idea to search eBay for a Kensington USB docking station which supports video as these are normally available for less than the dedicated solutions.&lt;/p&gt;
&lt;p&gt;&lt;strong style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;My hardware&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I spent a few months on eBay tracking Kensington docking stations with video, for the ‘right price’, and last week I finally won one in an auction for £20.&lt;span style=""&gt;  &lt;/span&gt;The unit came with a power adapter, USB lead and the actual docking bar itself.&lt;span style=""&gt;  &lt;/span&gt;In addition to DisplayLink the bar provides a 4-port powered USB 2.0 hub, audio and 10/100 networking&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="1" cellpadding="1" align="" style="height: 272px;" summary=""&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;
            &lt;div style="text-align: center;"&gt;&lt;img border="1" width="75%" alt="Docking Station - Front" src="http://www.tigernews.co.uk/blog-twickers/images/displaylink/DockingStation-Front.jpg" /&gt;&lt;br /&gt;
            &lt;/div&gt;
            &lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;
            Docking Station - Front&lt;/span&gt;&lt;br /&gt;
            &lt;/div&gt;
            &lt;/td&gt;
            &lt;td style="text-align: center;"&gt;
            &lt;div style="text-align: center;"&gt;&lt;img border="1" width="75%" alt="Docking Station - Back" src="http://www.tigernews.co.uk/blog-twickers/images/displaylink/DockingStation-Back.jpg" /&gt;&lt;br /&gt;
            &lt;/div&gt;
            &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;
            Docking Station - Rear&lt;br /&gt;
            &lt;/span&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The great news is that if all you are using is the DisplayLink connecter there is no need for the power adapter as the USB 2.0 connection provides the power.&lt;/p&gt;
&lt;p&gt;The laptop is a HP 6910p (with 128Mb ATI Mobility Radeon X2300), 2.2GHz Core Duo, 4Gb RAM, with the advanced docking station providing simultaneous DVI and VGA outputs by default when the laptop lid is closed.&lt;/p&gt;
&lt;p&gt;&lt;strong style=""&gt;Drivers for Windows 7 RC 64-bit&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One of my criteria for using DisplayLink was that the software had to work under Windows 7 as, since the beta release this has become my day to day operating system on my laptop.&lt;span style=""&gt;  &lt;/span&gt;Even worse, it is a 64-bit installation which always makes one more wary of driver compatibility.&lt;/p&gt;
&lt;p&gt;The good news was that the software drivers are available from the guys who make the hardware chip at &lt;a href="http://www.displaylink.com/"&gt;http://www.displaylink.com&lt;/a&gt; rather than from Kensington.&lt;span style=""&gt;  &lt;/span&gt;I thought I might be able to use a Vista 64-bit driver, but on the driver download page was a warning that it was not compatible with Windows 7.&lt;span style=""&gt;  &lt;/span&gt;But right next to that warning was a link to a specific Windows 7 Preview driver.&lt;/p&gt;
&lt;p&gt;By the time I finally won a Kensington docking station from eBay at the ‘right price’ my laptop had been upgraded to Windows 7 RC and the DisplayLink Windows 7 driver software had also been updated to a new release on 3 April 2009.&lt;/p&gt;
&lt;p&gt;As with most USB devices, I ran the driver setup first (no reboot required) before plugging in the docking station.&lt;span style=""&gt;  &lt;/span&gt;Various new hardware devices were detected, including the DisplayLink adapter. Only an AX88772 device wasn’t recognised, the ASIX USB 2.0 LAN controller.&lt;/p&gt;
&lt;p&gt;A quick right click on the desktop, &lt;strong style=""&gt;Screen Resolution&lt;/strong&gt;, and there were three monitors on one laptop.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img border="1" width="80%" alt="Screen Resolution Dialog" src="http://www.tigernews.co.uk/blog-twickers/images/displaylink/Display-ScreenResolution.png" /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;I enabled the monitor and took my first photo of three monitors running live on one laptop.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img border="1" width="80%" alt="Three monitors rocks !" src="http://www.tigernews.co.uk/blog-twickers/images/displaylink/ThreeMonitorsOnALaptop-Crushed.png" /&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;strong style=""&gt;&lt;span style="font-size: 11pt; line-height: 115%; font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;strong style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/strong&gt;
&lt;p&gt;&lt;strong style=""&gt;DisplayLink utility&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Although you can configure the resolution and layout of the monitors within the standard &lt;strong style=""&gt;Screen Resolution&lt;/strong&gt; dialog, there is a special DisplayLink utility.&lt;span style=""&gt;  &lt;/span&gt;This is installed during the driver setup but on my system was not added to the Start Menu. &lt;span style=""&gt; &lt;/span&gt;I found the utility files in, &lt;strong style=""&gt;\Program Files\DisplayLink Core Software&lt;/strong&gt;.&lt;span style=""&gt;  &lt;/span&gt;Running &lt;strong style=""&gt;DisplayLinkUI.exe&lt;/strong&gt; provides a new icon in the system tray/notification area where you can control the DisplayLink specific options.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="1" cellpadding="1" align="" width="100%" summary=""&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td style="text-align: center;"&gt;&lt;img border="1" width="75%" alt="DisplayLink - Colour Depth" src="http://www.tigernews.co.uk/blog-twickers/images/displaylink/DisplayLink-SystemTray-ColourDepth.png" /&gt;&lt;br /&gt;
            &lt;br /&gt;
            Colour Depth&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;&lt;img border="1" width="75%" alt="DisplayLink - Resolution" src="http://www.tigernews.co.uk/blog-twickers/images/displaylink/DisplayLink-SystemTray-Resolution.png" /&gt;&lt;br /&gt;
            &lt;br /&gt;
            Resolution&lt;/td&gt;
            &lt;td style="text-align: center;"&gt;&lt;img border="1" width="75%" alt="DisplayLink - Rotation" src="http://www.tigernews.co.uk/blog-twickers/images/displaylink/DisplayLink-SystemTray-Rotate.png" /&gt;&lt;br /&gt;
            &lt;br /&gt;
            Rotation Options&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;During writing this blog post I decided to test whether the standard Windows 7 screen rotation options could be used instead of the DisplayLink utility menu.&lt;span style=""&gt;  &lt;/span&gt;Big mistake, my other two displays went blank and it took a few dock/undocks and a DisplayLink driver uninstall and reinstall to get everything back to normal.&lt;span style=""&gt;  &lt;/span&gt;Admittedly both Windows 7 and the DisplayLink drivers are both beta software so I’ll forgive them as long as the final releases work as expected.&lt;/p&gt;
&lt;p&gt;&lt;strong style=""&gt;CPU utilisation&lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The big downside with DisplayLink is that it uses the system CPU to compress the video it is sending to the hardware decoder.&lt;span style=""&gt;  &lt;/span&gt;Kensington recommend at least a dual core CPU running at 1.2GHz and above.&lt;span style=""&gt;  &lt;/span&gt;You do notice a bit of screen lag compared to the ‘real’ monitors but for applications like Outlook and Messenger work fine.&lt;/p&gt;
&lt;p&gt;I decided to do a bit of simple benchmarking using Task Manager, tracking the core Display Link process, &lt;strong style=""&gt;DisplayLinkManager.exe&lt;/strong&gt; (you need to click on &lt;strong style=""&gt;Show Process From All Users&lt;/strong&gt; to view this). &lt;/p&gt;
&lt;p&gt;Here are the results of my simple CPU utilisation tests,&lt;/p&gt;
&lt;p&gt;Outlook and Messenger running in background&lt;span style=""&gt;                 &lt;/span&gt;&amp;lt; 1%&lt;/p&gt;
&lt;p&gt;Windows Media Player playing MP3 files&lt;span style=""&gt;                              &lt;/span&gt;10%&lt;/p&gt;
&lt;p&gt;bbc.co.uk iPlayer video within a web page&lt;span style=""&gt;                           &lt;/span&gt;15%&lt;/p&gt;
&lt;p&gt;(Turkish Grand Prix 2005)&lt;/p&gt;
&lt;p&gt;Windows Media Player MPEG4 video&lt;span style=""&gt;                                     &lt;/span&gt;30%&lt;/p&gt;
&lt;p&gt;(&lt;a href="http://serialseb.blogspot.com/"&gt;Sebastien Lambla&lt;/a&gt; ASP.NET MVC best practices from VistaSquad user group)&lt;/p&gt;
&lt;p&gt;&lt;strong style=""&gt;Conclusion &lt;o:p&gt;&lt;/o:p&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;What I wanted was a simple and cheap solution to providing a third display for my laptop which could handle background applications such as Outlook, Messenger or Twitter without compromising general performance.&lt;span style=""&gt;  &lt;/span&gt;I’d say DisplayLink has achieved that with an elegant solution to a simple problem, all for £20 delivered thanks to eBay.&lt;span style=""&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132579"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132579" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/132579.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2009/06/03/132579.aspx</guid>
            <pubDate>Wed, 03 Jun 2009 23:07:16 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/132579.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2009/06/03/132579.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/132579.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/132579.aspx</trackback:ping>
        </item>
        <item>
            <title>DDD Scotland - Virtualisation for Developers presentation</title>
            <link>http://geekswithblogs.net/twickers/archive/2009/05/02/131667.aspx</link>
            <description>Thanks to all the guys who turned out to the first presentation of the day at DDD Scotland where I gave my presentation, Virtualisation for Developers. As promised you can download the PowerPoint slide deck using the link below. Check out the speaker notes for all the resources and URLs I mentioned along the way.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.tigernews.co.uk/blog-twickers/dddscot/virt4dev-DDDScot.zip"&gt;http://www.tigernews.co.uk/blog-twickers/dddscot/virt4dev-DDDScot.zip&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Thanks again for inviting me up to speak at DDD Scotland and creating a fantastic event.&lt;br /&gt;
&lt;br /&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;UPDATE&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;And a video of an earlier version of this present, given at DDD7, is now live at, &lt;a href="http://www.craigmurphy.com/blog/?p=1591"&gt;http://www.craigmurphy.com/blog/?p=1591&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131667"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131667" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/131667.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2009/05/02/131667.aspx</guid>
            <pubDate>Sun, 03 May 2009 02:55:23 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/131667.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2009/05/02/131667.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/131667.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/131667.aspx</trackback:ping>
        </item>
        <item>
            <title>WebDD 2009 - a review</title>
            <link>http://geekswithblogs.net/twickers/archive/2009/04/20/131330.aspx</link>
            <description>&lt;link rel="File-List" href="file:///D:\Users\liam\AppData\Local\Temp\msohtmlclip1\01\clip_filelist.xml" /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
&lt;o:OfficeDocumentSettings&gt;
&lt;o:RelyOnVML /&gt;
&lt;o:AllowPNG /&gt;
&lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt;
&lt;link rel="themeData" href="file:///D:\Users\liam\AppData\Local\Temp\msohtmlclip1\01\clip_themedata.thmx" /&gt;
&lt;link rel="colorSchemeMapping" href="file:///D:\Users\liam\AppData\Local\Temp\msohtmlclip1\01\clip_colorschememapping.xml" /&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
&lt;w:WordDocument&gt;
&lt;w:View&gt;Normal&lt;/w:View&gt;
&lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
&lt;w:TrackMoves /&gt;
&lt;w:TrackFormatting /&gt;
&lt;w:PunctuationKerning /&gt;
&lt;w:ValidateAgainstSchemas /&gt;
&lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
&lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
&lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
&lt;w:DoNotPromoteQF /&gt;
&lt;w:LidThemeOther&gt;EN-GB&lt;/w:LidThemeOther&gt;
&lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
&lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
&lt;w:Compatibility&gt;
&lt;w:BreakWrappedTables /&gt;
&lt;w:SnapToGridInCell /&gt;
&lt;w:WrapTextWithPunct /&gt;
&lt;w:UseAsianBreakRules /&gt;
&lt;w:DontGrowAutofit /&gt;
&lt;w:SplitPgBreakAndParaMark /&gt;
&lt;w:DontVertAlignCellWithSp /&gt;
&lt;w:DontBreakConstrainedForcedTables /&gt;
&lt;w:DontVertAlignInTxbx /&gt;
&lt;w:Word11KerningPairs /&gt;
&lt;w:CachedColBalance /&gt;
&lt;/w:Compatibility&gt;
&lt;m:mathPr&gt;
&lt;m:mathFont m:val="Cambria Math" /&gt;
&lt;m:brkBin m:val="before" /&gt;
&lt;m:brkBinSub m:val="&amp;#45;-" /&gt;
&lt;m:smallFrac m:val="off" /&gt;
&lt;m:dispDef /&gt;
&lt;m:lMargin m:val="0" /&gt;
&lt;m:rMargin m:val="0" /&gt;
&lt;m:defJc m:val="centerGroup" /&gt;
&lt;m:wrapIndent m:val="1440" /&gt;
&lt;m:intLim m:val="subSup" /&gt;
&lt;m:naryLim m:val="undOvr" /&gt;
&lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
&lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267"&gt;
&lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal" /&gt;
&lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /&gt;
&lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 1" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 2" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 3" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 4" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 5" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 6" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 7" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 8" /&gt;
&lt;w:LsdException Locked="false" Priority="39" Name="toc 9" /&gt;
&lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /&gt;
&lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title" /&gt;
&lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /&gt;
&lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /&gt;
&lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong" /&gt;
&lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid" /&gt;
&lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /&gt;
&lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /&gt;
&lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /&gt;
&lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote" /&gt;
&lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /&gt;
&lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /&gt;
&lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /&gt;
&lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /&gt;
&lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /&gt;
&lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title" /&gt;
&lt;w:LsdException Locked="false" Priority="37" Name="Bibliography" /&gt;
&lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /&gt;
&lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;style type="text/css"&gt;&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:1;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-520092929 1073786111 9 0 415 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin-top:0cm;
	margin-right:0cm;
	margin-bottom:10.0pt;
	margin-left:0cm;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	mso-themecolor:hyperlink;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-noshow:yes;
	mso-style-priority:99;
	color:purple;
	mso-themecolor:followedhyperlink;
	text-decoration:underline;
	text-underline:single;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
.MsoPapDefault
	{mso-style-type:export-only;
	margin-bottom:10.0pt;
	line-height:115%;}
@page Section1
	{size:595.3pt 841.9pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;
	mso-header-margin:35.4pt;
	mso-footer-margin:35.4pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;&lt;/style&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
&lt;/style&gt;
&lt;![endif]--&gt;
&lt;p class="MsoNormal"&gt;A tad later than I would have liked, but finally here’s my review of the superbly organised event that was WebDD 2009. Held at Microsoft UK’s Reading campus, it was held on Saturday, with around 200 delegates enjoying a free day of Web goodness. Hats off to the organisers on delivering another full day of great info for free, with Phil Winstanley and David Sussman working hard to make sure everything went smoothly.&lt;o:p&gt; &lt;br /&gt;
&lt;/o:p&gt;&lt;/p&gt;
&lt;p style="font-weight: bold;" class="MsoNormal"&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p style="font-weight: bold;" class="MsoNormal"&gt;ASP.NET 3.5 – Miss Something?&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Dan Maharry (&lt;a href="http://blog.hmobius.com/"&gt;http://blog.hmobius.com/&lt;/a&gt;, @hmobius)&lt;/p&gt;
&lt;p class="MsoNormal"&gt;I like the idea of a session taking an older* technology and reviewing it to ensure everyone has spotted all the useful bits and has got up to date with the service packs and add-ins that they may have missed. Apparently it was Dan’s first presentation but it didn’t really feel like it, and he knows his stuff, having co-authored the O’Reilly book &lt;em style=""&gt;‘Programming ASP.NET 3.5 Details and Downloads’.&lt;o:p&gt;&lt;/o:p&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Thanks to Dan I’ll be downloading the Lightweight Test Framework from the ASP QA team, available on codeplex; &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22739"&gt;http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22739&lt;/a&gt;. Dan also mentioned that Steve Sanderson (ASP.NET MVC author) also has some good blogs on how to use it; &lt;a href="http://blog.codeville.net/2009/03/27/first-steps-with-lightweight-test-automation-framework/"&gt;http://blog.codeville.net/2009/03/27/first-steps-with-lightweight-test-automation-framework/&lt;/a&gt; &lt;/p&gt;
&lt;p class="MsoNormal"&gt;* older is by no means a derogatory term, this means code which is actually released and can be deployed rather than a preview, CTP or beta in a state of flux&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;
&lt;p style="font-weight: bold;" class="MsoNormal"&gt;What’s good in .NET 4.0 and Visual Studio 2010&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Alex Mackey (&lt;a href="http://www.simpleisbest.co.uk/"&gt;http://www.SimpleIsBest.co.uk&lt;/a&gt;, @alexjmackey)&lt;/p&gt;
&lt;p class="MsoNormal"&gt;I’m not sure when Alex managed to get a chance to breathe during this presentation. Nearly 100 slides in the deck and he did a superb job of attempting the impossible; highlighting all the new stuff which we will have to play within in the next year or so. A walking, talking RSS feed for .NET 4.0/VS2010. Keep an eye out for his APress book ‘Introducing .NET 4.0 with Visual Studio 2010’&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;
&lt;p style="font-weight: bold;" class="MsoNormal"&gt;P0wn3d! (Or how to redirect your friend’s website to katyperry.com) &lt;/p&gt;
&lt;p class="MsoNormal"&gt;Barry Dorrans (&lt;a href="http://www.idunno.org/"&gt;http://www.idunno.org&lt;/a&gt; )&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Security sessions are always amusing for how the room becomes more subdued the more weaknesses in application development are exposed. You can almost feel the self doubt increasing as time goes by. It’s also great when specific comments get the biros scribbling hurriedly.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;I liked the idea of using the PrincipalPermission attribute to decorate methods, especially in code that might be shared by a team of programmers. Defence in depth is always a better solution than the false assumption that you have constructed a single impenetrable barrier around the entire application.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;
&lt;p style="font-weight: bold;" class="MsoNormal"&gt;An Introduction to jQuery&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Andy Gibson (&lt;a href="http://www.andy-gibson.co.uk/"&gt;http://www.andy-gibson.co.uk&lt;/a&gt;, @ARGibson)&lt;/p&gt;
&lt;p class="MsoNormal"&gt;With the ASP.NET team encouraging the use of jQuery via blogs as well as decent intelligence docs within VS2008, I was looking forward to this introductory talk. I was not disappointed. This proved to be a great jQuery tour for people comfortable with solid javascript skills but not necessarily experience with jQuery. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;As for jQuery itself, anything that makes my life easier on the client and is multi browser is a winner in my book.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;
&lt;p style="font-weight: bold;" class="MsoNormal"&gt;ASP.NET MVC best practices&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Sebastien Lambla&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Seb managed to survive a complete BSOD on his Mac Book Air (Apple hardware, tsk!) with good grace and without it completely derailing his talk. It did mean the detail was somewhat compressed, which was a shame as this was a very relevant topic. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;Best practices are hard to get right with the ASP.NET MVC framework partly because the default project structure and a much of the demo code that comes with the framework doesn’t actually do a good job of demonstrating good practices. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;I know why the standard demo code takes a simplified view – best practices can result in quite complicated code to understand. Especially true when you add IoC containers which can be quite intimidating for programmers who haven’t had the experience of struggling to create their own mock objects and marshalling their creation. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;It’s not quite the JFK quote, ‘We do the other things, &lt;em&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-style: normal;"&gt;not because they are easy&lt;/span&gt;&lt;/em&gt;&lt;em style=""&gt;,&lt;/em&gt; but because they are hard.’. More like ‘We do hard things at the start, because in the long term it makes everything else easy’. We sometimes need hard to understand demo code if the end result is a greatly improved solution that is more reliable and easier to update with confidence.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;
&lt;p style="font-weight: bold;" class="MsoNormal"&gt;ASP.NET 4.0&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Mike Ormond&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Well done to Mike for giving up a marvellous sunny day which could have been spent on the allotment, to be stuck in a room with us geeks. &lt;span style=""&gt; &lt;/span&gt;There were some good peeks at the next version of ASP.NET 4.0 and he coaxed a VS2010 interim build running under VirtualPC into life to provide some good demos of what will be possible in the next version of Visual Studio.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;
&lt;p style="font-weight: bold;" class="MsoNormal"&gt;Post conference&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Post conference it was off to Revolution, where the staff were again horrified by my request to add Tabasco Sauce to my Sol beer (honest, it’s really nice. I know you don’t believe me either). Then it was onto Pizza Express for a great finale to the evening. Seb Lambla was on great form as usual and it was good to be able to chat with Andy Gibson and Andrew Westgarth, both of whom travelled quite a distance to present at WebDD. I’m happily returning the favour, travelling up to Glasgow for DDD Scotland on May 2&lt;sup&gt;nd&lt;/sup&gt;. I’m less happy that I’m up against Andy Gibson with what I think will be another popular jQuery talk.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Thanks to all for a great day.&lt;br /&gt;
&lt;/p&gt;
&lt;p class="MsoNormal"&gt;@westleyl&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p style="font-weight: bold;" class="MsoNormal"&gt;Afterthought; WebDD - a replacement for ReMix?&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Someone at the conference did comment that due to the economic situation ReMix might not happen this year, and that WebDD might be a ‘partial replacement’. Unlike the first WebDD I attended, this second event did not have the content to attract designers, so I hope no one at Microsoft thinks that this is a replacement for ReMix. Microsoft do need to capture designer mindshare and get developers out of the mindset where design is an afterthought – that’s the duty of the ReMix events and with Silverlight as a potential platform it’s needed more than ever.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131330"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131330" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/twickers/aggbug/131330.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Liam Westley</dc:creator>
            <guid>http://geekswithblogs.net/twickers/archive/2009/04/20/131330.aspx</guid>
            <pubDate>Tue, 21 Apr 2009 10:54:27 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/twickers/comments/131330.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/twickers/archive/2009/04/20/131330.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/twickers/comments/commentRss/131330.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/twickers/services/trackbacks/131330.aspx</trackback:ping>
        </item>
    </channel>
</rss>