<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://ducasfrancis.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Ducas' Site</title><link>http://ducasfrancis.com/blogs/default.aspx</link><description>&lt;P&gt;This site is all about me, my work and my experiences. Enjoy!&lt;/P&gt;</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.2)</generator><item><title>Moving Blogs</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/09/11/moving-blogs.aspx</link><pubDate>Fri, 12 Sep 2008 01:43:00 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:27748</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;For those on twitter, you may have noticed that my latest posts look a bit different to my old ones. I’ve finally made the decision to move my blog across to WordPress (event though I’ve had an account for 6 months).&lt;/P&gt;
&lt;P&gt;I’ve updated my feedburner feed to point to the right place, but now I have to get the rest of it going. Hopefully once it’s all up and running I’ll have my posts and comments all up on my new blog. In the meantime, please bare with me while I make this transition.&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=27748" width="1" height="1"&gt;</description></item><item><title>New version of VMC Remote available</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/07/31/new-version-of-vmc-remote-available.aspx</link><pubDate>Thu, 31 Jul 2008 07:35:36 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:14285</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;A couple of weeks back I released a new version of VMC Remote. This new version may not look different, but it definitely acts different.&lt;/p&gt; &lt;p&gt;Under the covers I've changed a lot of the way the remote functions in order to allow for multiple connection and server types. This means that you can use your choice of (2) media centre server applications - &lt;a href="http://sourceforge.net/projects/mcecontroller"&gt;MCE Controller&lt;/a&gt; or &lt;a href="http://codeplex.com/vmccontroller"&gt;VMC Controller&lt;/a&gt;. It also means that some day down the track I might be able to add the ability to use a different type of connection - say... Bluetooth - to connect to these server applications.&lt;/p&gt; &lt;p&gt;I've also uploaded a 10 minute video to youtube that gives you a quick look at the different versions of the remote on different devices. Here it is...&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=C8nY-tM2P6g"&gt;youtube - VMC Controller Introduction&lt;/a&gt;&lt;/p&gt; &lt;p&gt; &lt;div style="padding-right:0px;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;display:inline;" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:80828d43-04e4-424f-8e04-66feb706b86e" class="wlWriterSmartContent"&gt;&lt;div id="66a34e29-714f-4955-b547-cc7d3075e217" style="margin:0px;padding:0px;display:inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=C8nY-tM2P6g" target="_new"&gt;&lt;img src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/NewversionofVMCRemoteavailable_F765/video7cceb1ceb875.jpg" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=14285" width="1" height="1"&gt;</description></item><item><title>SQL 2008 - Fix Your Inconsistencies!</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/06/23/sql-2008-fix-your-inconsistencies.aspx</link><pubDate>Tue, 24 Jun 2008 01:18:54 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:9198</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>3</slash:comments><description>&lt;p&gt;One thing that's annoyed me for years when using SQL Server 2005 was that there are many inconsistencies in the UI. You'd think that the most obvious of these would be fixed in subsequent releases...&lt;/p&gt; &lt;p&gt;The most obvious one that I've always noticed is the Select Database File dialog. In some parts of SQL Management Studio, the standard windows Select File dialog is used for opening a file. In others, you get this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/SQL2008FixYourInconsistencies_9F10/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="414" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/SQL2008FixYourInconsistencies_9F10/image_thumb.png" width="294" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I don't understand why this archaic piece of interface is still present today. It seriously looks like they gave the job of creating an open database dialog to a first year developer who couldn't find GetOpenFileName().&lt;/p&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=9198" width="1" height="1"&gt;</description></item><item><title>Remix 08</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/05/21/remix-08.aspx</link><pubDate>Thu, 22 May 2008 01:17:08 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:4998</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;On Tuesday I had the pleasure of attending Remix 08 in Sydney.&lt;/p&gt; &lt;p&gt;The day really started on a high with the keynote. It opened with a video that showed off a few cool applications that have been developed in Australia using some of the latest Microsoft technologies such as Silverlight. That was followed by Mark Pesce's presentation that really drilled home the effect of technology on today's society in creating a state of "Hyperconnectivity" between people.&lt;/p&gt; &lt;p&gt;I tried quite hard to stick to the creative track and was rewarded very early with &lt;a href="http://jonas.follesoe.no/"&gt;Jonas Follesoe&lt;/a&gt;'s presentation. He showed how to use the Expression designer tools to create a truly amazing experience for Silverlight applications. His demo is available on his blog &lt;a href="http://jonas.follesoe.no/PermaLink,guid,3e8d9671-bbdd-4e4d-a29d-ceeef07ea55c.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I also managed to sit in on a few presentations by some fellow Readifarians - &lt;a href="http://www.philipbeadle.net/"&gt;Philip Beadle&lt;/a&gt; and &lt;a href="http://blog.tatham.oddie.com.au/"&gt;Tatham Oddie&lt;/a&gt;. Phil's presentation showed how to use some really simple programming techniques (such as binding &amp;amp; asynchronous WCF) with Silverlight 2 to create cool web applications. Tatham's presentation on MVC &amp;amp; AJAX was a really interesting take on possibilities of combining the two technologies in the future. Unfortunately, I missed &lt;a href="http://damianpedwards.spaces.live.com/"&gt;Damo&lt;/a&gt; and &lt;a href="http://www.alisterjones.com/"&gt;Alister's&lt;/a&gt; presentations...&lt;/p&gt; &lt;p&gt;Overall, I really did enjoy this event. It's definitely one that I'll be attending again in the future.&lt;/p&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=4998" width="1" height="1"&gt;</description></item><item><title>VMC Remote Unleashed!</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/05/18/vmc-remote-unleashed.aspx</link><pubDate>Sun, 18 May 2008 23:47:25 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:4854</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Over the past couple of months I've put a fair few hours into a little side project of mine. The purpose of the project was to create a remote control for Vista Media Center PCs that would run on Windows Mobiles.&lt;/p&gt; &lt;p&gt;I'm happy to announce that I've finally released it! It's available on CodePlex at &lt;a href="http://www.codeplex.com/vmcremote"&gt;www.codeplex.com/vmcremote&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;At the moment, there's a PPC 2003 and PPC 2003 SE version up for grabs in this initial release. I'm working on the Windows Mobile 6 versions as well.&lt;/p&gt; &lt;p&gt;All you need to get started is a device that can connect to your network and a media center running &lt;a href="http://sourceforge.net/projects/mcecontroller"&gt;MCE Controller&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;This thing has already come in handy for me, so I hope it's just as useful for others. I'm going to continue working on it as much as possible, because I don't think it's quite done.&lt;/p&gt; &lt;p&gt;Some coming features will include:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;an improved UI&lt;/li&gt; &lt;li&gt;bluetooth connectivity&lt;/li&gt; &lt;li&gt;wake on LAN support&lt;/li&gt; &lt;li&gt;more targetted versions&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Check it out!&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.codeplex.com/vmcremote"&gt;www.codeplex.com/vmcremote&lt;/a&gt;&lt;/p&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=4854" width="1" height="1"&gt;</description></item><item><title>Unable to Customise Context Menus in PowerPoint 2007?</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/05/18/unable-to-customise-context-menus-in-powerpoint-2007.aspx</link><pubDate>Sun, 18 May 2008 23:29:38 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:4852</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I started working for a new client a couple of weeks ago. This client provides a customised solution for PowerPoint with many weird and wonderful functions. Part of the work I'm doing here is helping them migrate their solution to work with PowerPoint 2007.&lt;/p&gt; &lt;p&gt;While I've discovered many wacky behaviours that have come about due to the new rendering engine used in Office 2007, I hadn't thrown my hands in the air and said "I can't do it" until the other day. Something as simple as adding a button into a context menu when a user right-clicks a picture just would not work. There was already code in the project that did this for earlier version of PowerPoint, but no matter what I did it would not work for 2007.&lt;/p&gt; &lt;p&gt;Needless to say, I started seeking help, thinking that I was just missing something. &lt;a href="http://blogs.msdn.com/acoat"&gt;Coatsie&lt;/a&gt; to the rescue! Well, sort of... :)&lt;/p&gt; &lt;p&gt;&lt;a title="Unable to customise context menus in PowerPoint 2007-" href="http://blogs.msdn.com/acoat/archive/2008/05/16/unable-to-customise-context-menus-in-powerpoint-2007.aspx"&gt;Unable to customise context menus in PowerPoint 2007&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Andrew's post basically shows how desperate I was by publishing my original email. Pathetic, hey...? :)&lt;/p&gt; &lt;p&gt;Anyway, the result was that you simply can't do it. Adding items to the context menu is considered &lt;strong&gt;"feature depricated"&lt;/strong&gt; so the new rendering engine forbids it and moves on. So how to overcome this? From Andrew's post...&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font color="#00ffff"&gt;In summary, Microsoft recommends that you model your UI on Office’s own built-in Ribbon UI, specifically around the use of Contextual Tabs as the mechanism for displaying contextually relevant content. For each object type that the add-in supports, a tab could be added to the appropriate contextual tab set that would contain the Add-In-specific tools for working with that object. With this type of design, the UI would better match the UI of Office 2007, and the end-users could potentially not require much extra training on top of the training for Office 2007 itself. For more information, please check out the Office Fluent UI Style Guide at the Office Fluent Ribbon Developer Portal.&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;So the solution... Contextual Tab Sets! Now, I'm sure if I asked a room of 50 people what they were less than 2 would put their hand up. And googling it doesn't help too much either.&lt;/p&gt; &lt;p&gt;In short, there are the regular tabs in the Office Ribbon, and Contextual Tabs. The regular tabs are the ones that are always there. The contextual ones are the ones that only show up when something has been selected in the designer. They're usually highlighted a different colour too, so that they stand out.&lt;/p&gt; &lt;p&gt;One example of this is when you select a picture and a new Formatting tab pops up under the heading of Picture Tools. The Contextual Tab Set here is Picture Tools and the contextual tab is the Formatting tab.&lt;/p&gt; &lt;p&gt;One cool thing about the new Ribbon and all that Extensibility that's provided for Office is that you can easily add (and remove) tabs in a contextual tab set. There are plenty of samples out there that do Ribbon customisation, especially on &lt;a&gt;Office Fluent User Interface Developer Portal&lt;/a&gt;. Though, not many of them show how to do this.&lt;/p&gt; &lt;p&gt;I won't go into creating a Ribbon Extensibility solution, instead I'll just mention that &lt;strong&gt;all you have to do&lt;/strong&gt; is create an Add-In for PowerPoint in Visual Studio (preferably 2008) with VSTO and override the Add-In's CreateRibbonExtensibilityObject() method to return an object that implements IRibbonExtensibility. This object will implement the method GetCustomUI to return a string representation of the Ribbon XML.&lt;/p&gt; &lt;p&gt;Using the Custom UI XML, we can specify a Ribbon that simply adds a tab to any of these Contextual Tab Sets. The following snippet adds a "Custom" tab to the Drawing Tools tab set. The tab has a Hello World button in the Custom Group tab group.&lt;/p&gt; &lt;p&gt;&amp;lt;customUI xmlns="&lt;a href="http://schemas.microsoft.com/office/2006/01/customui&amp;quot;"&gt;http://schemas.microsoft.com/office/2006/01/customui"&lt;/a&gt;&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;ribbon&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;contextualTabs&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tabSet idMso="TabSetDrawingTools"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tab id="TabCustom" label="Custom"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;group id="GroupCustomGroup" label="Custom Group"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;button id="ButtonHelloWorld" tag="hello World" label="Hello World"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; screentip="Displays a Hello World message box" onAction="OnHelloWorld" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/group&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tab&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tabSet&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/contextualTabs&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/ribbon&amp;gt;&lt;br&gt;&amp;lt;/customUI&amp;gt;&lt;/p&gt; &lt;p&gt;So once you have an add-in that provides a Ribbon representation similar to this, you will see that setting focus to a shape gives you the Drawing Tools Contextual Tab Set with the Formatting and Custom tabs.&lt;/p&gt; &lt;p&gt;According to the information Andrew received, this is basically the way to provide any contextual functionality in Office going forward. I still think it's broken, but what can we do other than complain? :)&lt;/p&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=4852" width="1" height="1"&gt;</description></item><item><title>How to build a Stop Watch in 5 Minutes</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/03/12/how-to-build-a-stop-watch-in-5-minutes.aspx</link><pubDate>Thu, 13 Mar 2008 05:43:53 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:2348</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;I've been writing up some demos for the &lt;a href="http://readify.net/"&gt;Readify Pro .NET 3.5&lt;/a&gt; course over the past couple of days and on a couple of occasions I've run into the situation of needing to time a set of operations. The way I usually approach this is to get the time from DateTime.Now before and after the operations and print the result to the screen. This was starting to become tedious:&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2"&gt;  &lt;tr&gt; &lt;td&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;long &lt;/span&gt;startTime = &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now.Ticks;
System.Threading.&lt;span style="color:#2b91af;"&gt;Thread&lt;/span&gt;.Sleep(1500);
&lt;span style="color:blue;"&gt;long &lt;/span&gt;endTime = &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now.Ticks;
&lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color:#a31515;"&gt;"Time Elapsed: {0}"&lt;/span&gt;, &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;TimeSpan&lt;/span&gt;(endTime - startTime).TotalMilliseconds.ToString());&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;So, I decided to take a different approach. After using RhinoMocks I stumbled upon the MockRepository.Record method. This method can be used to wrap a set of mock statements in a using block. "Eureka!" I shout...&lt;/p&gt;
&lt;p&gt;How do I accomplish this, now...? I want to have a StopWatch that has a Time method. I want to call the Time method with a using statement and time the statements that execute within the block. This means my Time method needs to return an object that implements IDisposable so that the Dispose method is hit at the end of the using block.&lt;/p&gt;
&lt;p&gt;What shall the Time method return...? How about a Timer object? I know, I'm a creative genious! :)&lt;/p&gt;&lt;pre class="code"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;table cellspacing="0" cellpadding="2"&gt;

&lt;tr&gt;
&lt;td&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Timer &lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;IDisposable
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DateTime &lt;/span&gt;StartTime { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;private set&lt;/span&gt;; }
    &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DateTime &lt;/span&gt;EndTime { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;private set&lt;/span&gt;; }
    &lt;span style="color:blue;"&gt;internal event &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;TimerStoppedEventArgs&lt;/span&gt;&amp;gt; TimerStopped;

    &lt;span style="color:blue;"&gt;public void &lt;/span&gt;BeginTiming()
    {
        StartTime = &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now; &lt;span style="color:green;"&gt;// Start the timer by recording the current time.
    &lt;/span&gt;}

    &lt;span style="color:blue;"&gt;public void &lt;/span&gt;StopTiming()
    {
        EndTime = &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now; &lt;span style="color:green;"&gt;// Record the end time.
        &lt;/span&gt;OnTimingStopped(); &lt;span style="color:green;"&gt;// Call to raise the TimerStopped event.
    &lt;/span&gt;}

    &lt;span style="color:blue;"&gt;protected virtual void &lt;/span&gt;OnTimingStopped()
    {
        &lt;span style="color:#2b91af;"&gt;TimeSpan &lt;/span&gt;span = EndTime - StartTime; &lt;span style="color:green;"&gt;// Create the TimeSpan that defines the elapsed time.
        &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(TimerStopped != &lt;span style="color:blue;"&gt;null&lt;/span&gt;) &lt;span style="color:green;"&gt;// Raise the TimerStopped event.
            &lt;/span&gt;TimerStopped(&lt;span style="color:blue;"&gt;this&lt;/span&gt;, &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;TimerStoppedEventArgs&lt;/span&gt;(span));
    }

    &lt;span style="color:blue;"&gt;public void &lt;/span&gt;Dispose()
    {
        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(EndTime == &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.MinValue) &lt;span style="color:green;"&gt;// We've hit the end of the using block! Stop the timer!
            &lt;/span&gt;StopTiming();
    }
}

&lt;span style="color:gray;"&gt;/// &amp;lt;summary&amp;gt;
/// &lt;/span&gt;&lt;span style="color:green;"&gt;Describes a TimerStopped event by providing the elapsed time as a TimeSpan.
&lt;/span&gt;&lt;span style="color:gray;"&gt;/// &amp;lt;/summary&amp;gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;internal class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;TimerStoppedEventArgs &lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;EventArgs
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;TimeSpan &lt;/span&gt;ElapsedTime { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;set&lt;/span&gt;; }
    &lt;span style="color:blue;"&gt;public &lt;/span&gt;TimerStoppedEventArgs(&lt;span style="color:#2b91af;"&gt;TimeSpan &lt;/span&gt;elapsedTime)
    {
        ElapsedTime = elapsedTime;
    }
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Ok, now to utilise this in the StopWatch...&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2"&gt;

&lt;tr&gt;
&lt;td&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;StopWatch
&lt;/span&gt;{
    &lt;span style="color:#2b91af;"&gt;Timer &lt;/span&gt;currentTimer; &lt;span style="color:green;"&gt;// The Timer currently in use.

    &lt;/span&gt;&lt;span style="color:gray;"&gt;/// &amp;lt;summary&amp;gt;
    /// &lt;/span&gt;&lt;span style="color:green;"&gt;The total time that the StopWatch timed.
    &lt;/span&gt;&lt;span style="color:gray;"&gt;/// &amp;lt;/summary&amp;gt;
    &lt;/span&gt;&lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;TimeSpan &lt;/span&gt;TotalElapsedTime { &lt;span style="color:blue;"&gt;get&lt;/span&gt;; &lt;span style="color:blue;"&gt;private set&lt;/span&gt;; }

    &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Timer &lt;/span&gt;Time()
    {
        &lt;span style="color:green;"&gt;// Check to see the StopWatch isn't already in use.
        &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(currentTimer != &lt;span style="color:blue;"&gt;null&lt;/span&gt;) &lt;span style="color:blue;"&gt;throw new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;"You are already using this StopWatch!"&lt;/span&gt;);
        &lt;span style="color:green;"&gt;// Create a Timer, create an event handler for it's TimerStopped event, start it and return it.
        &lt;/span&gt;currentTimer = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Timer&lt;/span&gt;();
        currentTimer.TimerStopped += &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;TimerStoppedEventArgs&lt;/span&gt;&amp;gt;(currentTimer_TimerStopped);
        currentTimer.BeginTiming();
        &lt;span style="color:blue;"&gt;return &lt;/span&gt;currentTimer;
    }

    &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;TimeSpan &lt;/span&gt;GetCurrentElapsedTime()
    {
        &lt;span style="color:green;"&gt;// Check to see the StopWatch is in use.
        &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(currentTimer == &lt;span style="color:blue;"&gt;null&lt;/span&gt;) &lt;span style="color:blue;"&gt;throw new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;"You aren't timing anything..."&lt;/span&gt;);
        &lt;span style="color:blue;"&gt;return &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now - currentTimer.StartTime; &lt;span style="color:green;"&gt;// Return the current time - the timer's start time.
    &lt;/span&gt;}

    &lt;span style="color:blue;"&gt;void &lt;/span&gt;currentTimer_TimerStopped(&lt;span style="color:blue;"&gt;object &lt;/span&gt;sender, &lt;span style="color:#2b91af;"&gt;TimerStoppedEventArgs &lt;/span&gt;e)
    {
        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(e != &lt;span style="color:blue;"&gt;null&lt;/span&gt;) &lt;span style="color:green;"&gt;// Set the total elapsed time of the StopWatch.
            &lt;/span&gt;TotalElapsedTime = e.ElapsedTime;
        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(currentTimer != &lt;span style="color:blue;"&gt;null&lt;/span&gt;) &lt;span style="color:green;"&gt;// Kill the current Timer.
            &lt;/span&gt;currentTimer.TimerStopped -= &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;EventHandler&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;TimerStoppedEventArgs&lt;/span&gt;&amp;gt;(currentTimer_TimerStopped);
        currentTimer = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;
    }
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;That's it! 90 lines of code (including comments) and five minutes later I have a StopWatch. I even threw a GetCurrentElapsedTime method in there for fun too.&lt;/p&gt;
&lt;p&gt;Now, to test it out...&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2"&gt;

&lt;tr&gt;
&lt;td&gt;&lt;pre class="code"&gt;&lt;span style="color:#2b91af;"&gt;StopWatch &lt;/span&gt;watch = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;StopWatch&lt;/span&gt;();
&lt;span style="color:blue;"&gt;using &lt;/span&gt;(watch.Time())
{
    System.Threading.&lt;span style="color:#2b91af;"&gt;Thread&lt;/span&gt;.Sleep(1500);
}&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }


&lt;p&gt;This was actually giving me around 1520ms. Hmm...&lt;/p&gt;
&lt;p&gt;So I went back to my old method to test this out, and found that the following code ran with the same results... Excellent!&lt;/p&gt;
&lt;p&gt;Ok, so using the DateTime.Now compare method isn't exactly going to be good for &lt;a href="http://en.wikipedia.org/wiki/Real-time_computing"&gt;real time computing&lt;/a&gt; but, for demos and the like I think it will do the job. And it definitely makes the code look that little bit neater.&lt;/p&gt;
&lt;p&gt;I've got a little sample available &lt;a href="http://ducasfrancis.com/files/folders/samples/entry2349.aspx"&gt;in my downloads&lt;/a&gt; for those interested.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5db92ee1-db60-44f7-8d7a-68ebe0d78f47" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/C#" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.NET%20Framework%203.5" rel="tag"&gt;.NET Framework 3.5&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=2348" width="1" height="1"&gt;</description></item><item><title>Working from Home</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/03/09/working-from-home.aspx</link><pubDate>Sun, 09 Mar 2008 22:32:22 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:2258</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;This week I've got the "luxury" of working from home. After my last 1-2 week stint of this back in March, I've decided to tackle things a little differently.&lt;/p&gt; &lt;p&gt;Firstly, I'm not breaking my routine! I've been going to the gym every morning for the past 7 weeks. It's really helped me feel better about myself. Last time I was working from home, I decided to give the gym a break for a little. What happened next was that I stopped going all together for about 3 months. So, breaking my routine is not going to happen this week.&lt;/p&gt; &lt;p&gt;Secondly, have a five minute break every hour. This is something that really got lost for me last time. I ended up sitting in my chair for 6 hours straight every day, not having anything to eat and relying on a bottle of water to keep me going. This is very bad behaviour and will really affect me now that I'm not changing my gym routine. Taking a quick walk around the house for five minutes every hour and ensuring I get some food into me every 2 hours is goal I will be actively pursuing.&lt;/p&gt; &lt;p&gt;Lastly, switch off the computer at 6PM every night, even if it doesn't stay off all night. This essentially reboots my brain. :)&lt;/p&gt; &lt;p&gt;So, what will I be doing this week...? Today I'm doing some more PD around the ASP.NET MVC. Hopefully I'll get some time to hit Silverlight 2, but at this stage it's not looking likely. Tomorrow I'll be doing some work on developing &lt;a href="http://readify.net/" target="_blank"&gt;our&lt;/a&gt; new &lt;a href="http://readify.net/Default.aspx?tabid=62" target="_blank"&gt;Professional .NET Course&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I'll try to keep active on my blog and I'll be &lt;a href="http://twitter.com/ducas" target="_blank"&gt;twittering&lt;/a&gt; away as much as possible.&lt;/p&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=2258" width="1" height="1"&gt;</description><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Readify/default.aspx">Readify</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Random/default.aspx">Random</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category></item><item><title>Heroes Happen {Here} 2008 Launch</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/03/05/heroes-happen-here-2008-launch.aspx</link><pubDate>Thu, 06 Mar 2008 04:42:18 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:2187</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;I'm famous: &lt;a title="http://blogs.technet.com/itproaustralia/archive/2008/03/06/technet-vodcast-of-the-sydney-heroes-happen-2008-event.aspx" href="http://blogs.technet.com/itproaustralia/archive/2008/03/06/technet-vodcast-of-the-sydney-heroes-happen-2008-event.aspx"&gt;http://blogs.technet.com/itproaustralia/archive/2008/03/06/technet-vodcast-of-the-sydney-heroes-happen-2008-event.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Watch out for the good looking guy at the end... :-p&lt;/p&gt; &lt;p&gt;I had a great time the other day at the launch event. It was great getting a chance to check out the new improvements in VS, SQL and Windows 2008. And I had a blast catching up with the DPE guys. The free copy of Vista and Windows Server will definitely not go to waste.&lt;/p&gt; &lt;p&gt;BTW, thanks for putting me on the spot Deeps... ;-)&lt;/p&gt; &lt;div style="padding-right:0px;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;display:inline;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a8f0b8ac-3547-4181-889f-86b39f64a875" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Heroes%20Happen%202008" rel="tag"&gt;Heroes Happen 2008&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=2187" width="1" height="1"&gt;</description><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Tech/default.aspx">Tech</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Random/default.aspx">Random</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category></item><item><title>Internet Explorer 8 Beta 1</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/03/05/internet-explorer-8-beta-1.aspx</link><pubDate>Thu, 06 Mar 2008 02:13:42 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:2186</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I managed to download and install IE8 today, after hearing it was available from the Microsoft web site.&lt;/p&gt; &lt;p&gt;The overall setup experience was quite painless, and it managed to keep all my settings from IE7.&lt;/p&gt; &lt;p&gt;The first page that loads after installing introduces the new features of IE8 - i.e. Activities, WebSlices and IE7 Emulation.&lt;/p&gt; &lt;h2&gt;Activities&lt;/h2&gt; &lt;p&gt;Activities give users ready access to the online services they care about most from any page they visit, and developers gain an easy way to extend the reach of their online services. It’s as simple as selecting text to get started with an Activity.&lt;/p&gt; &lt;p&gt;First up, I installed the Windows Live Translator activity and browsed to a site. Highlighting some text gave me a context menu that had the translator activity in it:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" border="0" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_thumb.png" width="538" height="418"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I thought this was quite a nice little feature... :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h2&gt;WebSlices&lt;/h2&gt; &lt;blockquote&gt; &lt;p&gt;Developers can mark parts of webpages as "WebSlices" and enable users to monitor information they rely on as they move about the web. With a click in the Favorites bar, users see rich "WebSlice" visuals and developers establish a valuable, persistent end-user connection.&lt;/p&gt; &lt;p&gt;So next I thought I'd try the Facebook WebSlice. I logged into facebook and installed the slice from the toolbar:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" border="0" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_thumb_1.png" width="558" height="78"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" border="0" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_thumb_2.png" width="378" height="216"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;This put a new button in my favourites toolbar. But unfortunately, it didn't work too well...&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_10.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" border="0" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_thumb_4.png" width="346" height="229"&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I also noticed that facebook wanted me to upgrade to IE6 or any other browser...&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_12.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" border="0" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_thumb_5.png" width="401" height="193"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;So I thought I'd try...&lt;/p&gt; &lt;h2&gt;IE7 Emulation&lt;/h2&gt; &lt;p&gt;Hitting the IE7 Emulation button on the toolbar actually annoyed me a little:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_14.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" border="0" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_thumb_6.png" width="490" height="121"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Couldn't this just emulate the tab...?&lt;/p&gt; &lt;p&gt;Anyway, I opened another IE window, emulated it and voila! The facebook warning disappeared. That's the extent of my testing this feature for today... :)&lt;/p&gt; &lt;h2&gt;Other Niceties&lt;/h2&gt; &lt;p&gt;The Developer Tools is built-in for some testing fun. I'm really looking forward to using it for sifting through page responses and comparing some of the IE7 and IE8 responses.&lt;/p&gt; &lt;p&gt;The "Are you sure you want to close all tabs" message that appears when you try to close IE with multiple tabs open has morphed to give you the option of just closing the current tab. I always thought a cancel button in these cases is silly because the big red cross in the top right and the Escape button are just as good.&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_18.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" border="0" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_thumb_8.png" width="244" height="116"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The Address Bar changes how you look at the address of the current page by only making the domain name text black and the rest gray. I'm not sure whether this is for security or just usability, but I like it.&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_20.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" border="0" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_thumb_9.png" width="329" height="26"&gt;&lt;/a&gt; &lt;/p&gt; &lt;h2&gt;Comments&lt;/h2&gt; &lt;p&gt;It's definitely RAM hungry. Only 5 tabs open and already 110MB in use...&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_22.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" border="0" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/InternetExplorer8Beta1_B907/image_thumb_10.png" width="239" height="51"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;It hasn't crashed in the last hour so that's good. :) I'm planning on just using it like IE7 and seeing how I go. I'll definitely keep posting about any oddities and niceties I come across.&lt;/p&gt; &lt;div style="padding-right:0px;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;display:inline;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f5ef907c-ee9d-4eea-9764-92514fdcbb6f" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Internet%20Explorer" rel="tag"&gt;Internet Explorer&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Internet%20Explorer%208" rel="tag"&gt;Internet Explorer 8&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=2186" width="1" height="1"&gt;</description><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Tech/default.aspx">Tech</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Random/default.aspx">Random</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Internet+Explorer+8/default.aspx">Internet Explorer 8</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Internet+Explorer/default.aspx">Internet Explorer</category></item><item><title>Visual Studio Themes</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/02/07/visual-studio-themes.aspx</link><pubDate>Fri, 08 Feb 2008 01:45:34 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:2090</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;a href="http://www.hanselman.com" target="_blank"&gt;Scott Hanselman&lt;/a&gt; posted about some cool Visual Studio themes so I thought I'd put mine out there.&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/VisualStudioThemes_B35C/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="386" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/VisualStudioThemes_B35C/image_thumb_2.png" width="640" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;As you can see, it's the simple white-on-black. It uses blue class names, purple strings, orange key words, and yellow highlighting. One of the things that some miss is the snippet fields. I've ensure that the fields are white on green and the dependant fields are green highlights.&lt;/p&gt; &lt;p&gt;I've been using this theme for quite a while now and am really enjoying it. It's a variation of something &lt;a href="http://paulstovell.net" target="_blank"&gt;Paul Stovell&lt;/a&gt; gave me a while back.&lt;/p&gt; &lt;p&gt;It's available for download &lt;a href="http://ducasfrancis.com/files/folders/samples/entry2089.aspx" target="_blank"&gt;here&lt;/a&gt;. Give it a go and let me know what you think...&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8fa5b73d-fc78-4433-9306-8faabbaa3599" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Visual%20Studio%202008" rel="tag"&gt;Visual Studio 2008&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual%20Studio%202008%20Theme" rel="tag"&gt;Visual Studio 2008 Theme&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=2090" width="1" height="1"&gt;</description><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Tech/default.aspx">Tech</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Random/default.aspx">Random</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category></item><item><title>Synergy over a KVM</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/02/05/synergy-over-a-kvm.aspx</link><pubDate>Tue, 05 Feb 2008 22:16:11 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:2061</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I was considering getting a KVM the other day, but stumbled across an open source application named &lt;a href="http://synergy2.sourceforge.net/" target="_blank"&gt;Synergy&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;It's a pretty nifty little app that lets you share a keyboard and mouse across two or more machines. This means that I can have my &lt;a href="http://ducasfrancis.com/blogs/myworld/archive/2007/11/29/my-new-dell-xps-m1330.aspx" target="_blank"&gt;laptop&lt;/a&gt; sitting next to my &lt;a href="http://ducasfrancis.com/blogs/myworld/archive/2007/04/17/my-new-computer.aspx" target="_blank"&gt;desktop&lt;/a&gt; monitor and use the keyboard and mouse hooked up to my desktop to control the laptop.&lt;/p&gt; &lt;p&gt;The setup experience is the only hitch to this application. It's not totally user friendly, but it's not that hard to figure out.&lt;/p&gt; &lt;p&gt;Firstly, chose which machine will be the server and run the application on it. Choose the option "Share this computer's mouse and keyboard (server)" and click Configure.&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/SynergyoveraKVM_823C/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="189" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/SynergyoveraKVM_823C/image_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Then, setup a screen for the server and the client machines by clicking the + button under the Screens list. This will give you a screen where you can type the names of the machines and modify the behaviour of the switch. It's probably best to leave the behaviour as standard at first and modify this later if required.&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/SynergyoveraKVM_823C/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="244" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/SynergyoveraKVM_823C/image_thumb_1.png" width="166" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Now you should have (at least) two machine names in the screens list, it's time to setup the switching behaviour. Under the Links list, there are a couple of text boxes and drop downs. The easiest way to tackle these is to picture where your laptop screen is in relation to your desktop screen. My laptop is on the left of my desktop so I just selected "left" from the first drop down, then my desktop name, then my laptop name and pressed the + button. This means that when my mouse pointer goes over to the left edge of the desktop screen it will become my laptop's pointer.&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/SynergyoveraKVM_823C/clip_image001_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="171" alt="clip_image001" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/SynergyoveraKVM_823C/clip_image001_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;p&gt;I also need to setup the behaviour for how to go back to the desktop screen, so I just selected the opposite of what I had before.&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/SynergyoveraKVM_823C/image_6.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="171" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/SynergyoveraKVM_823C/image_thumb_2.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Now I press OK to close the configuration screen and press start to start the server. If you haven't set it up properly you will get a crazy error message, so just close Synergy and start again. If you're running Vista (and/or a good firewall) you should be prompted that Synergy is trying to do something funny, so just let it. If you're running a firewall and you're not prompted, go to the firewall settings and make sure that Synergy is allowed to communicate.&lt;/p&gt; &lt;p&gt;Lastly, I need to connect my laptop to the server. I did this by opening Synergy on my laptop, which is a client machine, choosing the "Use another computer's shared keyboard and mouse (client)", and entering the name of my desktop (server) PC.&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/SynergyoveraKVM_823C/image_8.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="189" alt="image" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/SynergyoveraKVM_823C/image_thumb_3.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Now when I press start (and cross my fingers) the client connects to the server and I can freely use my two computers with the same keyboard and mouse while Synergy runs with an icon in the system tray.&lt;/p&gt; &lt;p&gt;That's it! It's simple was you get through the slightly cryptic UI, and it really works quite well.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:eb07ba44-9fd4-4a90-b13a-5d329a1ed465" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Synergy" rel="tag"&gt;Synergy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tech" rel="tag"&gt;Tech&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=2061" width="1" height="1"&gt;</description><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Tech/default.aspx">Tech</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Random/default.aspx">Random</category></item><item><title>Flickr's the go</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/02/03/flickr-s-the-go.aspx</link><pubDate>Mon, 04 Feb 2008 03:27:48 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:2040</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;It seems to be a growing trend to decentralise your online services nowadays. In particular, everyone is moving away from these self-hosted environments and moving towards popular services such as &lt;a href="http://flickr.com/" target="_blank"&gt;Flickr&lt;/a&gt; and &lt;a href="http://wordpress.com" target="_blank"&gt;Wordpress&lt;/a&gt;, and &lt;a href="http://spaces.live.com" target="_blank"&gt;Live Spaces&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I've only recently set up my own web site. When I started out, I decided using a content management system would be the easiest way to go. I then evaluated a few options and went with Community Server. However, I'm not really happy with CS (at least this version...) as a single user blog and web site platform. As an environment for communities it seems an excellent option, but it's just not for me.&lt;/p&gt; &lt;p&gt;One of the major reasons for this is photo management. It's just too complicated. And, it's not very user friendly for people who want to view them.&lt;/p&gt; &lt;p&gt;So, in an effort to move away from trusting CS with all my online content, I made the decision to use Flickr. I've had an account with them for a long while now, but when I realised that you can purchase a pro account with unlimited storage and bandwidth for under $50/yr I pulled out the credit card.&lt;/p&gt; &lt;p&gt;It wasn't until after I made my purchase I realised that Windows Live Photo Gallery has the option to publish photos directly to Flickr. Woot!&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/Flickrsthego_CB59/Publish%20on%20Flickr_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="115" alt="Publish on Flickr" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/Flickrsthego_CB59/Publish%20on%20Flickr_thumb.png" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;You can find some of my precious memories at &lt;a href="http://www.flickr.com/ducas"&gt;www.flickr.com/ducas&lt;/a&gt;. Over the next few weeks/months I'll be moving lots of my photos over.&lt;/p&gt; &lt;p&gt;Although, with Microsoft's recent bid to purchase Yahoo! it will be interesting to see what happens to this excellent service.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a5d35cdb-8b5b-4393-9b71-296a882f5b1c" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Photos" rel="tag"&gt;Photos&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=2040" width="1" height="1"&gt;</description><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Personal/default.aspx">Personal</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Random/default.aspx">Random</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Photos/default.aspx">Photos</category></item><item><title>RDN - Guest Starring Me for SSIS</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/01/29/rdn-guest-starring-me-for-ssis.aspx</link><pubDate>Tue, 29 Jan 2008 11:08:00 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:1967</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>2</slash:comments><description>&lt;P&gt;Today was my first day presenting at &lt;A title="Readify Developer Network" href="http://www.readify.net.au/rdn.aspx" target=_blank&gt;RDN&lt;/A&gt;. It also marked my second and third user group presentations ever.&lt;/P&gt;
&lt;P&gt;I can quite safely say that I am one of the least presented members of the Readify team, which is the main reason I took up the challenge of presenting at this level.&lt;/P&gt;
&lt;P&gt;The Depth session was presented by &lt;A class="" title="Damian Edwards' Space" href="http://damianpedwards.spaces.live.com/" target=_blank&gt;Damian Edwards&lt;/A&gt; on CSS with ASP.NET using Visual Studio 2008. It was a really good session that gave me a great insight into CSS and hopefully will stop me from ever using tables again... :-)&lt;/P&gt;
&lt;P&gt;My presentation was on &lt;A title="Microsoft - SQL Server Integration Services" href="http://www.microsoft.com/sql/technologies/integration/default.mspx" target=_blank&gt;SQL Server Integration Services&lt;/A&gt;, specifically in SQL Server 2008. The slide deck was not that intense and basically addressed the questions "What is SSIS?" and "What's different in SSIS 2005 and 2008?" It will be available soon on the &lt;A title="Readify Developer Network Downloads" href="http://www.readify.net.au/rdndownloads.aspx" target=_blank&gt;RDN Downloads&lt;/A&gt; site.&lt;/P&gt;
&lt;P&gt;In the meantime, I thought I'd put up a few links to the resources I used in preparing for this presentation.&lt;/P&gt;
&lt;P&gt;As I mentioned tonight, I find the MSDN library help quite useless when it comes to developing SSIS packages. The &lt;A href="http://msdn2.microsoft.com/en-us/library/ms141026.aspx" target=_blank&gt;SSIS Books Online&lt;/A&gt; site does have a couple of good intro and how-to topics.&lt;/P&gt;
&lt;P&gt;For my demos, I used the November CTP of SQL 2008, which is available as a &lt;A title="Microsoft SQL Server 2008 Community Technology Preview (November 2007) VHD" href="http://www.microsoft.com/downloads/details.aspx?familyid=6a39affa-db6e-48a9-82e4-4efd6705f4a6&amp;amp;displaylang=en" target=_blank&gt;VHD from MSDN&lt;/A&gt;. This is a time-bombed installation of Windows Server 2003 with the SQL Server 2008 CTP pre-installed and set up with all the important features enabled, such as Reporting Services, Integration Services, etc.&lt;/P&gt;
&lt;P&gt;For the "What's new..." I referred to &lt;A href="http://blogs.msdn.com/mattm" target=_blank&gt;MattM's blog&lt;/A&gt;. Specifically the excellent What's New in SQL Server 2008 &lt;A title="MattM - What's new in SQL Server 2008 Part One" href="http://blogs.msdn.com/mattm/archive/2008/01/10/what-s-new-in-sql-server-2008-for-ssis-part-one.aspx" target=_blank&gt;Part One&lt;/A&gt; and &lt;A title="MattM - What's new in SQL Server 2008 Part Two" href="http://blogs.msdn.com/mattm/archive/2008/01/22/what-s-new-in-sql-server-2008-for-ssis-part-two.aspx" target=_blank&gt;Part Two&lt;/A&gt; summary posts. These link to a few other good write-ups as well.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Then there's &lt;A href="http://www.codeplex.com/" target=_blank&gt;CodePlex&lt;/A&gt;. The &lt;A title="SQL 2008 Sample Databases" href="http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=8392" target=_blank&gt;AdventureWorksDB and AdventureWorksBI&lt;/A&gt; sample database installations, along with the &lt;A title="SQL Server 2008 Integration Services Samples" href="http://www.codeplex.com/MSFTISProdSamples/Release/ProjectReleases.aspx?ReleaseId=8403" target=_blank&gt;SQLServerSamplesIS&lt;/A&gt; SSIS samples are excellent resources.&lt;/P&gt;
&lt;P&gt;For those new to SSIS and still living in the DTS world, all I can say is "what are you waiting for?!" :-)&lt;/P&gt;
&lt;DIV class=wlWriterSmartContent id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:cb093ad4-f7c0-47e9-b9d7-119097c6b8ad style="PADDING-RIGHT:0px;DISPLAY:inline;PADDING-LEFT:0px;PADDING-BOTTOM:0px;MARGIN:0px;PADDING-TOP:0px;"&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/RDN" rel=tag&gt;RDN&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Readify" rel=tag&gt;Readify&lt;/A&gt;,&lt;A href="http://technorati.com/tags/SQL%20Server%202005" rel=tag&gt;SQL Server 2005&lt;/A&gt;,&lt;A href="http://technorati.com/tags/SQL%20Server%202008" rel=tag&gt;SQL Server 2008&lt;/A&gt;,&lt;A href="http://technorati.com/tags/SSIS" rel=tag&gt;SSIS&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Tech" rel=tag&gt;Tech&lt;/A&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=1967" width="1" height="1"&gt;</description><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Tech/default.aspx">Tech</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Readify/default.aspx">Readify</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/SQL+Server+2005/default.aspx">SQL Server 2005</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/SSIS/default.aspx">SSIS</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/SQL+Server+2008/default.aspx">SQL Server 2008</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/RDN/default.aspx">RDN</category></item><item><title>Logitech Alto Cordless</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/01/21/logitech-alto-cordless.aspx</link><pubDate>Tue, 22 Jan 2008 02:34:42 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:1917</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;For a little while now I've noticed my back pain has been getting worse and I think it's a result of leaning in close to my laptop to try get on eye level with it. So I bought one of these &lt;a href="http://www.logitech.com/index.cfm/keyboards/keyboards/&amp;amp;cl=us,en" target="_blank"&gt;Alto Cordless&lt;/a&gt; gadgets on the weekend for my desk at work.&lt;/p&gt; &lt;p&gt;My overall opinion: it's swish, but I'm returning it.&lt;/p&gt; &lt;p&gt;Why, you may ask...? Especially after this photo:&lt;/p&gt; &lt;p&gt;&lt;a href="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/LogitechAltoCordless_BDE5/Alto%20Cordless_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="184" alt="Alto Cordless" src="http://ducasfrancis.com/blogs/myworld/WindowsLiveWriter/LogitechAltoCordless_BDE5/Alto%20Cordless_thumb.jpg" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Well it may look all funky and swish, and the USB ports may be really handy, but it just doesn't work. The first time I hooked it all up it did some wacky things. It would accept some key strokes, but not others. Then it would stick on a key. Then it would just stop working all together. It took me over an hour before I gave up pressing the connect button to pull out a USB keyboard. I at least wanted to use the stand...&lt;/p&gt; &lt;p&gt;Not long after I gave up, I discovered that the keyboard was magically working so I thought I'd keep it. Today, on my second day, I've decided that the dream is over. I went through the same pain this morning trying to reconnect the keyboard even though I left it plugged into the power overnight. When I gave up again and tried to plug in a USB keyboard, it didn't work. After punching a few keys I punched some keys on the wireless keyboard and it worked perfectly. Coincidence...? I think not.&lt;/p&gt; &lt;p&gt;Anyway, I think Logitech need to do some work to get this thing functioning and update their support site to say more than "this should just work with Vista".&lt;/p&gt; &lt;p&gt;Returning the set tomorrow to replace it with a $10 USB hub and a $20 stand.&lt;/p&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=1917" width="1" height="1"&gt;</description></item><item><title>Important notice to Vibe members</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/01/16/important-notice-to-vibe-members.aspx</link><pubDate>Wed, 16 Jan 2008 09:27:31 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:1847</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I received this email from Boost Juice Bars today. Unfortunately, they're cutting off the 10% discount for Vibe members. Very sad news...&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;img alt="Logo-No-Oval - small.gif" src="http://cl.us.tlcollect.com/408/1142/2517855.gif" border="0"&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Dear &lt;b&gt;V&lt;/b&gt;ery&lt;b&gt; I&lt;/b&gt;mportant &lt;b&gt;B&lt;/b&gt;oost &lt;b&gt;E&lt;/b&gt;nthusiasts, &lt;p&gt;Over the last few years we have been fortunate enough to give our VIBE club members a 10% discount on our range of juices and smoothies. &lt;p&gt;Unfortunately due to the drought in Australia, the cost of making you the freshest juices and smoothies has gone up substantially, especially in the last 12 months; so much so that we have had to make a tough decision... either put our prices up, or keep them at the existing price and remove the 10% discount for VIBE members. We have chosen to remove the 10% VIBE discount, effective 1st February 2008. You can, however, still enjoy the benefits of the Boost loyalty stamp card (buy 10 and get the 11th free) &lt;p&gt;Our VIBE club remains with great monthly specials and exclusive offers to members, such as the VIBE Challenge and your free Birthday Boost. Should the drought break and the cost of our ingredients come back down, we will review the 10% discount again.  &lt;p&gt;Thanks again for your loyalty to Boost, and for any feedback you would like to make regarding this please feel free to email me at [email removed]. &lt;p&gt;Janine Allis &lt;p&gt;Founder&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:498582cb-1f95-4efc-98da-08687a69bb21" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Boost%20Juice" rel="tag"&gt;Boost Juice&lt;/a&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=1847" width="1" height="1"&gt;</description><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Random/default.aspx">Random</category></item><item><title>The Origin of Ducas</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/01/14/the-origin-of-ducas.aspx</link><pubDate>Mon, 14 Jan 2008 09:30:51 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:1821</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;For those of you who've heard/read my name and wondered about its origins, Wikipedia has a little entry on it - &lt;a href="http://en.wikipedia.org/wiki/Doukas"&gt;Doukas - Wikipedia, the free encyclopedia&lt;/a&gt;. Here are a couple of extracts...&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;b&gt;"Doukas&lt;/b&gt; or &lt;b&gt;Ducas&lt;/b&gt; is the name of a &lt;a href="http://en.wikipedia.org/wiki/Byzantine_Empire"&gt;Byzantine&lt;/a&gt; family allegedly descended from a cousin of the &lt;a href="http://en.wikipedia.org/wiki/Roman_Emperor"&gt;Roman Emperor&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Constantine_I_%28emperor%29"&gt;Constantine I&lt;/a&gt; who had migrated to &lt;a href="http://en.wikipedia.org/wiki/Constantinople"&gt;Constantinople&lt;/a&gt; in the &lt;a href="http://en.wikipedia.org/wiki/4th_century"&gt;4th century&lt;/a&gt;. The family or families using this surname supplied several rulers to the Byzantine Empire...&lt;/p&gt; &lt;p&gt;&lt;b&gt;Doukas&lt;/b&gt; or &lt;b&gt;Ducas&lt;/b&gt; (fl. &lt;a href="http://en.wikipedia.org/wiki/15th_century"&gt;15th century&lt;/a&gt;), Byzantine historian, flourished under &lt;a href="http://en.wikipedia.org/wiki/Constantine_XI"&gt;Constantine XI Dragases&lt;/a&gt;, the last emperor of the East, about &lt;a href="http://en.wikipedia.org/wiki/1450"&gt;1450&lt;/a&gt;... &lt;p&gt;After the fall of Constantinople, he was employed in various &lt;a href="http://en.wikipedia.org/wiki/Diplomat"&gt;diplomatic&lt;/a&gt; missions by Dorino and Domenico &lt;a href="http://en.wikipedia.org/w/index.php?title=Gateluzzi&amp;amp;action=edit"&gt;Gattilusio&lt;/a&gt;, princes of &lt;a href="http://en.wikipedia.org/wiki/Lesbos_Island"&gt;Lesbos&lt;/a&gt;, where he had taken refuge. He was successful in securing a semi-independence for Lesbos until 1462, when it was taken and annexed to the &lt;a href="http://en.wikipedia.org/wiki/Ottoman_Empire"&gt;Ottoman Empire&lt;/a&gt; by &lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Sultan"&gt;Sultan&lt;/a&gt;&lt;/i&gt; &lt;a href="http://en.wikipedia.org/wiki/Mehmed_II"&gt;Mehmed II&lt;/a&gt; of the &lt;a href="http://en.wikipedia.org/wiki/Ottoman_Dynasty"&gt;Ottoman Dynasty&lt;/a&gt;... &lt;p&gt;The history of Doukas [...] is the most valuable source for the closing years of the Byzabtine empire. The account of the &lt;a href="http://en.wikipedia.org/wiki/Fall_of_Constantinople"&gt;Fall of Constantinople&lt;/a&gt; is of special importance. Doukas was a strong supporter of the union of the Greek and Latin churches, and is very bitter against those who rejected even the idea of appealing to the West for assistance against the Ottomans."&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Lesbos_Island"&gt;Lesbos&lt;/a&gt; is a Greek island in the northeastern Aegean. My father was born in its capital Mytilene and I was named after his father Doukas Frazeskos. &lt;p&gt;Even in Greece, however, Ducas is still very uncommon as a first name. In fact, I had many heated arguments with Greek taxi drivers who insisted that I was telling them my surname when they were asking for my first.&lt;/p&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=1821" width="1" height="1"&gt;</description><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Personal/default.aspx">Personal</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Random/default.aspx">Random</category></item><item><title>MVC Template Fix</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/01/10/mvc-template-fix.aspx</link><pubDate>Thu, 10 Jan 2008 22:10:31 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:1781</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Last week I posted about &lt;a href="http://ducasfrancis.com/blogs/myworld/archive/2008/01/03/stop-celebrating-start-learning.aspx" target="_blank"&gt;my PD experience&lt;/a&gt;, including work on the new ASP.NET MVC. In this post I mentioned that there is a bug in the MVC that doesn't allow you to access control on an MVC content page from the code-behind.&lt;/p&gt; &lt;p&gt;Well, today I found a post on &lt;a href="http://www.squaredroot.com/" target="_blank"&gt;Troy Goode's site&lt;/a&gt; (that I should have found a week ago... :-)) that shows you how to implement the &lt;a href="http://www.squaredroot.com/post/2008/01/MVC-Template-Fix.aspx"&gt;MVC Template Fix&lt;/a&gt; to get around this bug by using the "Convert to Web Application" function in VS2008 or by fixing the template files included in the MVC. This fix basically involves adding a designer code file in the page templates and referencing it in the vtemplate file.&lt;/p&gt; &lt;p&gt;Apparently this will be fixed in the next release of the MVC, for those who can wait...&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4d64d6a5-ed26-4b98-b4ea-54e7903251f3" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET%203.5%20Extensions" rel="tag"&gt;ASP.NET 3.5 Extensions&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET%20MVC" rel="tag"&gt;ASP.NET MVC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C#" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C#%203.0" rel="tag"&gt;C# 3.0&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tech" rel="tag"&gt;Tech&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=1781" width="1" height="1"&gt;</description><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Tech/default.aspx">Tech</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/ASP.NET+3.5+Extensions/default.aspx">ASP.NET 3.5 Extensions</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/C_2300_+3.0/default.aspx">C# 3.0</category></item><item><title>TDD for ASP.NET MVC using StructureMap</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/01/03/tdd-for-asp-net-mvc-using-structuremap.aspx</link><pubDate>Fri, 04 Jan 2008 06:13:59 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:1684</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Ok, so I just posted less than an hour ago, but now I've found something worth talking about. :)&lt;/p&gt; &lt;p&gt;After working my way through &lt;a href="http://haacked.com/"&gt;Phil Haack's&lt;/a&gt; blog on &lt;a href="http://haacked.com/archive/2007/12/07/tdd-and-dependency-injection-with-asp.net-mvc.aspx"&gt;TDD with DI using StructureMap&lt;/a&gt;, I found a few things that I thought may be helpful.&lt;/p&gt; &lt;p&gt;Firstly, don't try to use a LINQ to SQL data context as your concrete implementation of an interface. Apparently that doesn't work. :) I tried this and received a &lt;strong&gt;StructureMapException&lt;/strong&gt;:&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;StructureMap Exception Code: 155 - An exception occurred while trying to create an InstanceFactory for PluginType MvcApplication.Models.IPostRepository,MvcApplication&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;The inner exception was:&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;StructureMap Exception Code: 200 - Could not find an InstanceMemento for the requested InstanceKey "LINQToSQL" of of PluginFamily MvcApplication.Models.IPostRepositor&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Nasty... As soon as I swapped in a concrete implementation called &lt;strong&gt;PostRepository&lt;/strong&gt; that simply called the methods I had created on top of the data context, everything worked.&lt;/p&gt; &lt;p&gt;Secondly, following the code for the &lt;strong&gt;StructureMapControllerFactory&lt;/strong&gt; object will lead to a compile error because you need to specify a return type from the &lt;strong&gt;ObjectFactory&lt;/strong&gt;.&lt;strong&gt;GetNamedInstance&lt;/strong&gt; method. I used the generic version because I'm too lazy cast now days. That makes the code inside the try block:&lt;/p&gt; &lt;h3&gt;&lt;font color="#0000ff"&gt;return&lt;/font&gt; &lt;font color="#00ff00"&gt;ObjectFactory&lt;/font&gt;.GetNamedInstance&amp;lt;&lt;font color="#00ff00"&gt;IController&lt;/font&gt;&amp;gt;(controllerType.Name);&lt;/h3&gt; &lt;p&gt;Lastly, if you want to use code instead of a configuration file for the &lt;strong&gt;StructureMap&lt;/strong&gt; configuration, add the following to your &lt;strong&gt;Global.asax Application_Start&lt;/strong&gt; event handler:&lt;/p&gt;&lt;font color="#00ff00"&gt;&lt;/font&gt; &lt;h3&gt;&lt;font color="#00ff00"&gt;StructureMapConfiguration&lt;/font&gt;.UseDefaultStructureMapConfigFile = &lt;font color="#0000ff"&gt;false&lt;/font&gt;;&lt;/h3&gt; &lt;h3&gt;&lt;font color="#00ff00"&gt;StructureMapConfiguration&lt;/font&gt;.BuildInstancesOf&amp;lt;&lt;font color="#00ff00"&gt;IPostRepository&lt;/font&gt;&amp;gt;()&lt;/h3&gt; &lt;h3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .TheDefaultIsConcreteType&amp;lt;&lt;font color="#00ff00"&gt;InMemoryPostRepository&lt;/font&gt;&amp;gt;;&lt;/h3&gt; &lt;h3&gt;&lt;font color="#00ff00"&gt;StructureMapConfiguration&lt;/font&gt;.BuildInstancesOf&amp;lt;&lt;font color="#00ff00"&gt;IController&lt;/font&gt;&amp;gt;()&lt;/h3&gt; &lt;h3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; .TheDefaultIsConcreteType&amp;lt;&lt;font color="#00ff00"&gt;BlogController&lt;/font&gt;&amp;gt;;&lt;/h3&gt; &lt;p&gt;So now I have a functional website that uses DI and is unit testable. Hope this helps someone else out there...&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d88e24ba-938e-4e62-94b1-1223b259a2c5" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET%203.5%20Extensions" rel="tag"&gt;ASP.NET 3.5 Extensions&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET%20MVC" rel="tag"&gt;ASP.NET MVC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C#" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/StructureMap" rel="tag"&gt;StructureMap&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tech" rel="tag"&gt;Tech&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Test%20Driven%20Development" rel="tag"&gt;Test Driven Development&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=1684" width="1" height="1"&gt;</description><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Tech/default.aspx">Tech</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/ASP.NET+3.5+Extensions/default.aspx">ASP.NET 3.5 Extensions</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Test+Driven+Development/default.aspx">Test Driven Development</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/StructureMap/default.aspx">StructureMap</category></item><item><title>Stop Celebrating, Start Learning...</title><link>http://ducasfrancis.com/blogs/myworld/archive/2008/01/03/stop-celebrating-start-learning.aspx</link><pubDate>Fri, 04 Jan 2008 05:32:04 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:1682</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;After a great start to the new year, I've taken the first three days back at work as PD days to catch up on a few things I've been missing out on. I've had to push my learning curve to the limit, but I've managed to cover off quite a few topics and summarise it all into one not-so-short post.&lt;/p&gt; &lt;p&gt;The gold resource for the week has been the new &lt;a title="Microsoft Download Center - Visual Studio 2008 and .NET Framework 3.5 Training Kit" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8bdaa836-0bba-4393-94db-6c3c4a0c98a1&amp;amp;DisplayLang=en" target="_blank"&gt;VS2008 Training Kit&lt;/a&gt; that includes a set of presentations, hands-on labs and demos. The presentations I've looked at haven't been much of a help to me at all, but the hands-on labs and demos have been key to me while learning about these technologies.&lt;/p&gt; &lt;p&gt;The first topic I was concerned with was the new features of C# 3.0 and .Net 3.5. I've heard and seen a lot about them, but I've never had a chance to sit down and get to know them. The What's New in C# 3.0 lab in the training kit covers these topics and gives an excellent introduction to how to use them. It takes about an hour to work through an introduces the following concepts:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;automatically implemented properties -&lt;font color="#0000ff"&gt; public int&lt;/font&gt; CustomerID { &lt;font color="#0000ff"&gt;get&lt;/font&gt;; &lt;font color="#0000ff"&gt;private set&lt;/font&gt;; }  &lt;li&gt;object and collection initialisers - &lt;font color="#00ff00"&gt;Customer&lt;/font&gt; c = &lt;font color="#0000ff"&gt;new &lt;/font&gt;&lt;font color="#00ff00"&gt;Customer&lt;/font&gt; { Name = "John", Location = "London" }  &lt;li&gt;implicitly typed local variables and arrays - &lt;font color="#0000ff"&gt;var&lt;/font&gt; complexList = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#00ff00"&gt;SortedDictionary&lt;/font&gt;&amp;lt;&lt;font color="#00ff00"&gt;string&lt;/font&gt;, &lt;font color="#00ff00"&gt;List&lt;/font&gt;&amp;lt;&lt;font color="#00ff00"&gt;DateTime&lt;/font&gt;&amp;gt;&amp;gt;()  &lt;li&gt;extension methods - &lt;font color="#0000ff"&gt;public static&lt;/font&gt; &lt;font color="#00ff00"&gt;List&lt;/font&gt;&amp;lt;T&amp;gt; Append(&lt;font color="#0000ff"&gt;this&lt;/font&gt; &lt;font color="#00ff00"&gt;List&lt;/font&gt;&amp;lt;T&amp;gt; a, &lt;font color="#00ff00"&gt;List&lt;/font&gt;&amp;lt;T&amp;gt; b) { ... }  &lt;li&gt;lambda expressions - customerList.FindAll( c =&amp;gt; c.Location == "London");  &lt;li&gt;expression trees - &lt;font color="#00ff00"&gt;Expression&lt;/font&gt;&amp;lt;&lt;font color="#00ff00"&gt;Func&lt;/font&gt;&amp;lt;&lt;font color="#00ff00"&gt;int&lt;/font&gt;, &lt;font color="#00ff00"&gt;int&lt;/font&gt;&amp;gt;&amp;gt; addOneExpression = n =&amp;gt; n + 1;  &lt;li&gt;anonymous types - &lt;font color="#0000ff"&gt;var&lt;/font&gt; customer = &lt;font color="#0000ff"&gt;new&lt;/font&gt; { Name = "John", Location = "London" };&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Next up was AJAX. I've had some experience in the past with very very very early AJAX (i.e. XmlHttp... :-)) and know about how it all works, but I've never had the chance to put together a website that utilises it. Once again, the training kit labs came in very handy here. The Introduction to ASP.NET AJAX lab was a great introduction to implementing an the ScirptManager and UpdatePanel controls in an existing website to add AJAX functionality and introduced other concepts such as connecting to WCF services from JavaScript, using LINQ data sources and the &lt;a title="ASP.NET AJAX Control Toolkit Home" href="http://www.asp.net/ajax/ajaxcontroltoolkit/" target="_blank"&gt;AJAX Control Toolkit&lt;/a&gt;. The second lab on the topic was Building AJAX/JSON Services Using WCF, which showed the power of the combination of AJAX and JSON. However, I think it was a bit confusing in that it utilised the AJAX Control Toolkit too much. I would have liked to actually see some JSON strings flying around. :-)&lt;/p&gt; &lt;p&gt;I've also been concentrating some effort on the new &lt;a title="ASP.NET 3.5 Extensions Preview" href="http://www.asp.net/downloads/3.5-extensions/" target="_blank"&gt;ASP.NET 3.5 Extensions&lt;/a&gt;. If you haven't heard about it before, it's basically a collection of toolkits that new functionality being added to ASP.NET 3.5 and ADO.NET in 2008. These functions include:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ASP.NET MVC  &lt;li&gt;ASP.NET Dynamic Data  &lt;li&gt;New additions to ASP.NET AJAX  &lt;li&gt;ADO.NET Entity Framework  &lt;li&gt;ADO.NET Data Services  &lt;li&gt;Silverlight Controls for ASP.NET&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The &lt;a title="ASP.NET 3.5 Extensions Preview" href="http://www.asp.net/downloads/3.5-extensions/" target="_blank"&gt;download website&lt;/a&gt; has a few videos on it introducing all of these functions along with a link to the &lt;a title="ASP.NET Quickstarts - 3.5 Extensions" href="http://quickstarts.asp.net/3-5-extensions/" target="_blank"&gt;quickstarts&lt;/a&gt; that do a great job of diving deeper. I actually used ScottGu's blog more... :)&lt;/p&gt; &lt;p&gt;The area I've concentrated on is the MVC. I started by going through the a few posts ScottGu made a little while back (all in &lt;a title="ScottGu - ASP.NET 3.5 Extensions CTP Preview Released" href="http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-3-5-extensions-ctp-preview-released.aspx" target="_blank"&gt;this post&lt;/a&gt;). These are an excellent starting point for someone wanting to get their hands dirty. However, there are a few small issues with some of the code that is probably due to it's pre-release nature (or Works on My Computer syndrome :-)). The major issue was that controls on an MVC content page are not accessible in the code-behind. You'll see this if you follow the sample in &lt;a title="ScottGu - ASP.NET MVC Framework Part 1" href="http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx" target="_blank"&gt;Scott's Part 1 blog post&lt;/a&gt; and try to render the Category list using a ListView control because when it comes time to set the list's data source there is no list in Intellisense. Also, the TestViewEngie class mentioned when developing tests for the controller using an IViewFactory is not available in the MVC framework. &lt;a href="http://haacked.com/" target="_blank"&gt;Phil Haack&lt;/a&gt; has blogged some excellent methods for &lt;a title="Haacked - TDD and Dependency Injection with ASP.NET MVC" href="http://haacked.com/archive/2007/12/07/tdd-and-dependency-injection-with-asp.net-mvc.aspx" target="_blank"&gt;TDD with DI&lt;/a&gt; and &lt;a title="Testing Routes in ASP.NET MVC" href="http://haacked.com/archive/2007/12/17/testing-routes-in-asp.net-mvc.aspx" target="_blank"&gt;Testing Routes&lt;/a&gt; using &lt;a title="Rhino Mocks Framework" href="http://www.ayende.com/projects/rhino-mocks/downloads.aspx" target="_blank"&gt;Rhino Mocks&lt;/a&gt; and &lt;a href="http://structuremap.sourceforge.net/Default.htm" target="_blank"&gt;StructureMap&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;One thing to watch out for in URL routing is that the routes are taken in the order they are created. For example, in Scott's walk through he mentions tweaking the routing rules to add the ability to route /Products/List/Beverages to pass the category to the List action in the Products controller. This would be done easily by adding the following route code to the Global.asax file's Application_Start event handler:&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;font color="#00ff00"&gt;RouteTable&lt;/font&gt;.Routes.Add(&lt;span class="kwrd"&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; &lt;font color="#00ff00"&gt;Route&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;    Url = &lt;span class="str"&gt;&lt;font color="#ff0000"&gt;"/Products/List/[category]"&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;    Defaults = &lt;span class="kwrd"&gt;&lt;font color="#0000ff"&gt;new&lt;/font&gt;&lt;/span&gt; { controller = &lt;span class="str"&gt;&lt;font color="#ff0000"&gt;"Products"&lt;/font&gt;&lt;/span&gt;, action = &lt;span class="str"&gt;&lt;font color="#ff0000"&gt;"List"&lt;/font&gt;&lt;/span&gt;, category = (&lt;span class="kwrd"&gt;&lt;font color="#00ff00"&gt;string&lt;/font&gt;&lt;/span&gt;)&lt;span class="kwrd"&gt;&lt;font color="#0000ff"&gt;null&lt;/font&gt;&lt;/span&gt; },&lt;/pre&gt;&lt;pre class="alt"&gt;    RouteHandler = &lt;span class="kwrd"&gt;&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;&lt;/span&gt;(&lt;font color="#00ff00"&gt;MvcRouteHandler&lt;/font&gt;)&lt;/pre&gt;&lt;pre&gt;});&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;I added this under the "/[controller]/[action]/[id]" and whenever I went go to /Products/List/Beverages I would receive an error because the category parameter for the List action was null. Moving the route to the top of the method (i.e. so that it is the first added to the list) fixed this. This behaviour is mentioned in the quickstarts:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"The order in which Route objects appears in the Routes collection is significant. Route matching occurs from the first route to the last route in the collection. When a match occurs, no more routes are evaluated. Typically the default route will be the last route."&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;By the way, I really suggest watching &lt;a title="Dynamic Data" href="http://download.microsoft.com/download/5/d/1/5d113d2d-571c-4edd-9c1c-59bc0e6981f6/WinVideo-2007-12-08%20Dynamic%20Data.wmv" target="_blank"&gt;the video on Dynamic Data&lt;/a&gt; available on the &lt;a title="ASP.NET 3.5 Extensions Preview" href="http://www.asp.net/downloads/3.5-extensions/" target="_blank"&gt;download website&lt;/a&gt; because it just rocks! It's very simple and very powerful. When you first run a project it builds all the controls and pages requires by the data model. It then allows you to easily extend your data model by using partial methods and add validation and rendering hints using attributes on partial classes. You can also go through and modify all the generated pages. Definitely one of the next stops on my PD roadmap... :-) Once again, Scott's got good &lt;a title="ScottGu - New ASP.NET Dynamic Data Support" href="http://weblogs.asp.net/scottgu/archive/2007/12/14/new-asp-net-dynamic-data-support.aspx" target="_blank"&gt;blog post&lt;/a&gt; with a walk-through and some excellent links.&lt;/p&gt;
&lt;p&gt;I'm going to finish off on a cool little download I found the other day. It's a two page poster of some of the most useful default key bindings (i.e. keyboard shortcuts) available in C# with Visual Studio 2008 available at the &lt;a title="Visual C# 2008 Keybinding Reference Poster" href="http://www.microsoft.com/downloads/details.aspx?familyid=E5F902A8-5BB5-4CC6-907E-472809749973&amp;amp;displaylang=en" target="_blank"&gt;Microsoft Download Centre&lt;/a&gt;.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8c60532b-822d-4042-94f3-c7036f089a7f" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET%203.5%20Extensions" rel="tag"&gt;ASP.NET 3.5 Extensions&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET%20AJAX" rel="tag"&gt;ASP.NET AJAX&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET%20Data%20Driven" rel="tag"&gt;ASP.NET Data Driven&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET%20MVC" rel="tag"&gt;ASP.NET MVC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C#" rel="tag"&gt;C#&lt;/a&gt;,&lt;a href="http://technorati.com/tags/C#%203.0" rel="tag"&gt;C# 3.0&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tech" rel="tag"&gt;Tech&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual%20Studio%202008" rel="tag"&gt;Visual Studio 2008&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=1682" width="1" height="1"&gt;</description><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Tech/default.aspx">Tech</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/ASP.NET+AJAX/default.aspx">ASP.NET AJAX</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/ASP.NET+3.5+Extensions/default.aspx">ASP.NET 3.5 Extensions</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/ASP.NET+Data+Driven/default.aspx">ASP.NET Data Driven</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Visual+Studio+2008/default.aspx">Visual Studio 2008</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/C_2300_+3.0/default.aspx">C# 3.0</category></item><item><title>Generating OpenXML Word Documents with XSLTs</title><link>http://ducasfrancis.com/blogs/myworld/archive/2007/11/29/generating-openxml-word-documents-with-xslts.aspx</link><pubDate>Thu, 29 Nov 2007 12:15:08 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:1285</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;I recently did a bit of work on generating Word 2007 documents using OpenXML. Basically, I had a standard XML document and I needed to generate a Word document from it. The process I came up with involved creating a "template" document in Word, examining the contents of the package, using XSLTs to transform the original XML into OpenXML and packaging it into the template. This actually seemed to work quite well and was far more efficient than using Office Interop for server-side document generation.&lt;/p&gt; &lt;p&gt;I've put together a few of videos describing the end-to-end process of examining a Word 2007 document package, generating OpenXML and using the System.IO.Packaging namespace. They are currently available as downloads from my website, but if there's enough demand I'll re-jig them and put them up on youtube. Here are the links:&lt;/p&gt; &lt;p&gt;&lt;a title="Generating OpenXml Documents Part 1" href="http://ducasfrancis.com/files/folders/videos/entry1139.aspx"&gt;Generating OpenXML Documents Part 1&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="Generating OpenXml Documents Part 2" href="http://ducasfrancis.com/files/folders/videos/entry1140.aspx"&gt;Generating OpenXML Documents Part 2&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="Generating OpenXml Documents Part 3" href="http://ducasfrancis.com/files/folders/videos/entry1141.aspx"&gt;Generating OpenXML Documents Part 3&lt;/a&gt;&lt;/p&gt; &lt;p&gt;If you've seen OpenXML before and you just want to get into the meat of how to use the Packaging namespace, then feel free skip the first two and go straight for part 3.&lt;/p&gt; &lt;p&gt;So generally, here's how it all works:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Create a new Word 2007 document and format it according to what you'd like the generated document to look like.&lt;/li&gt; &lt;li&gt;Pull apart the document "package" by simply changing the extension to zip and extracting it.&lt;/li&gt; &lt;li&gt;Examine the parts of the package that you need to modify to generate the document. This is usually the "word/document.xml" file, but can also include files like "word/_rels/document.xml.rels" if you are adding relationships such as images to the document.&lt;/li&gt; &lt;li&gt;Create an XSLT to transform your original XML data into the OpenXML represented by "word/document.xml".&lt;/li&gt; &lt;li&gt;Use the System.IO.Packaging namespace to package the transformed XML and any images into (a copy of) the template file.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Let me know what you think... :)&lt;/p&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=1285" width="1" height="1"&gt;</description></item><item><title>My New Dell XPS m1330</title><link>http://ducasfrancis.com/blogs/myworld/archive/2007/11/29/my-new-dell-xps-m1330.aspx</link><pubDate>Thu, 29 Nov 2007 11:42:42 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:1284</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>8</slash:comments><description>&lt;p&gt;I've finally got my new computer! :)&lt;/p&gt; &lt;p&gt;It arrived about 2 weeks ago and I've finally got everything up and running just the way I like it.&lt;/p&gt; &lt;h2&gt;Specs&lt;/h2&gt; &lt;ul&gt; &lt;li&gt;Dell XPS m1330  &lt;li&gt;Intel Core 2 Duo T770 @ 2.4GHz  &lt;li&gt;4GB DDR2 667MHz RAM  &lt;li&gt;64GB SSD Hard Drive  &lt;li&gt;NVIDIA GeForce 8400M GS 128MB DDR3  &lt;li&gt;13.3" WLED with 0.3MP Webcam  &lt;li&gt;Fingerprint reader  &lt;li&gt;Bluetooth  &lt;li&gt;Wireless a/b/g/n  &lt;li&gt;6-cell battery&lt;/li&gt;&lt;/ul&gt; &lt;h2&gt;Why the m1330?&lt;/h2&gt; &lt;p&gt;I decided on this laptop because after a few weeks of travelling interstate for work I realised that I wanted something that was more portable than those big ol' D820's. This machine is easy to carry in one hand and comfortably fits on the tray in an economy flight, while keeping up the pace with a powerful chip and lots of memory. For those interested, I have posted a few &lt;a href="http://ducasfrancis.com/photos/blogpics/tags/XPS+m1330/default.aspx" target="_blank"&gt;photos of the unboxing&lt;/a&gt;. Now let the chronicles begin...&lt;/p&gt; &lt;h2&gt;Setup&lt;/h2&gt; &lt;p&gt;The first thing I did after unboxing was blow away the partitions. I really didn't want 10 of 64 GB dedicated to recovery so the standard set up was a bit of a problem. I also decided it would be a good chance to give a 64-bit operating system a go. When I purchased the laptop, I ticked the Windows Vista Ultimate 32-bit but I thought I'd try my luck at installing Vista Ultimate 64-bit because the T7700 has EM64.&lt;/p&gt; &lt;p&gt;Anyway, after the initial installer went through the OS wouldn't boot, but instead kept blue-screening. I switched on to &lt;a href="http://forum.notebookreview.com/showthread.php?t=158277&amp;amp;page=1" target="_blank"&gt;this forum post&lt;/a&gt; which describes the process of installing 64 bit Vista on the m1330. One of the first things mentioned is this nasty BSOD problem where the OS won't start because the right AHCI driver isn't installed. So I did as it said and turned the SATA mode to ATA, which meant the OS would start but I couldn't get AHCI working because the default driver was not the right one.&lt;/p&gt; &lt;p&gt;After a while of trying to get ACHI and Flash Cache working by balancing a water bottle on my head while standing on my hands and pressing the install button with my toes, I ran into &lt;a href="http://www.codinghorror.com/blog/archives/000927.html" target="_blank"&gt;Jeff Atwood's m1330 review&lt;/a&gt; which mentions installing the driver while Vista is installing. D'oh! Why didn't I think of that...?!&lt;/p&gt; &lt;p&gt;Ok, so after a couple of nights mucking around I've finally got an installation of 64-bit Vista that's working properly with the SSD hard drive working at full capacity. So I installed more of the drivers that were attached to &lt;a href="http://forum.notebookreview.com/showthread.php?t=158277&amp;amp;page=1" target="_blank"&gt;the forum post&lt;/a&gt; and things started coming together nicely. I actually didn't install the video card and fingerprint reader drivers recommended. Instead, I waited for Windows Update to pick them up and it did it for me. I think the most important thing with this process is to install the necessary things to get you up and running so you can connect the net and let Windows update itself.&lt;/p&gt; &lt;h2&gt;&lt;/h2&gt; &lt;h2&gt;Media Direct&lt;/h2&gt; &lt;p&gt;Now, I did something naughty when I was installing Vista... I forgot to use the Media Direct CD to partition my hard drive. What does this mean? Simply that I don't have any Media Direct functionality anymore.&lt;/p&gt; &lt;p&gt;I thought I could live with that until I decided to press the little home button while my computer was off. This actually tried to start Media Direct which gave me a lovely little "NTLDR is missing" message. Time to freak out right...? Well, an hour later, after trying fixmbr and all the rest, I decided to hit the same home button while the laptop was off and voiala, Windows boot screen. Lesson learnt.&lt;/p&gt; &lt;p&gt;Another bad thing about not having the Media Direct software installed is that hitting the home button while Vista is running doesn't run Media Center anymore. This is quite sad because (as some of you already know) I'm quite lazy, so I'm not quite happy using the mouse to select it from the start menu.&lt;/p&gt; &lt;h2&gt;Activating Windows Vista 64 bit with 32 bit OEM Key&lt;/h2&gt; &lt;p&gt;Next came activating Windows. I was quite scared off the concept of attempting to install the 64-bit Vista with the OEM key provided with the laptop because not many people at all reported success. Being the cowboy I am, I thought I'd give it a go. Once I had connected to the net a couple of times, Windows informed me that the key I've used can't be activated. So I called the call centre and after typing in the 48 digit installation ID the automated voice told me that it was invalid, so I transferred to an operator. I explained the situation to the operator and she kindly gave me the correct digits to activate Windows. Woot! :)&lt;/p&gt; &lt;h2&gt;Performace&lt;/h2&gt; &lt;p&gt;I don't know if this can fully justify the price of the SSD, but here's the HDTune stats...&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;img height="458" src="http://ducasfrancis.com/photos/blogpics/images/1281/original.aspx" width="570"&gt; &lt;/p&gt; &lt;p&gt;Sweet hey...? :)&lt;/p&gt; &lt;p&gt;And the WEI...&lt;/p&gt; &lt;p&gt;&lt;img src="http://ducasfrancis.com/photos/blogpics/images/1282/original.aspx"&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;For a 13.3" that weighs 2kg, I think that's pretty darn good.&lt;/p&gt; &lt;p&gt;I tried to run a PCMark05, but ran into a few issues and it wouldn't give me a score. Oh well...&lt;/p&gt; &lt;h2&gt;My Conclusion&lt;/h2&gt; &lt;p&gt;This is a powerful little unit. Personally, I'm loving it. I've paired it with a WD Passport 250GB and use it to store my Virtual PCs that I've created as development environments.&lt;/p&gt; &lt;p&gt;The only downsides I've found are that it only has 2 USB ports and the WLED screen runs a resolution of 1280x800, which is low even by 13" standards. But the size is definitely a plus for me because I don't even feel it on my back when I'm travelling and it's actually feasible to use on a plane. Also, it fits into almost any backpack so I've shunned that disgraceful tech.ed delegates bag.&lt;/p&gt; &lt;p&gt;Having said that, now that the m1530 is out, I'd be torn between them if I was making the same purchasing decision...&lt;/p&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=1284" width="1" height="1"&gt;</description></item><item><title>Back in office</title><link>http://ducasfrancis.com/blogs/myworld/archive/2007/11/26/back-in-office.aspx</link><pubDate>Tue, 27 Nov 2007 04:07:11 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:1254</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Ok, so I'm back from Bora Bora and it's back to work... :(&lt;/p&gt; &lt;p&gt;I've uploaded a few of my photos from the holiday &lt;a title="Holidays - Bora Bora Album" href="http://ducasfrancis.com/photos/holidays_2007/category1054.aspx" target="_blank"&gt;here&lt;/a&gt;. Overall, we had a great time and came back very relaxed.&lt;/p&gt; &lt;p&gt;We got the chance to do a bit of snorkelling and canoeing, which was a lot of fun. But realistically, I think we enjoyed lounging around the most. :)&lt;/p&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=1254" width="1" height="1"&gt;</description></item><item><title>Out of Office - In Bora Bora</title><link>http://ducasfrancis.com/blogs/myworld/archive/2007/11/18/out-of-office-in-bora-bora.aspx</link><pubDate>Mon, 19 Nov 2007 05:01:44 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:1164</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Clare and I have decided that we deserved a bit of time to our selves, so we've escaped to Tahiti for a week... :) &lt;p&gt;Today is our second day in the beautiful island of Bora Bora. We're staying in the Le Meridien resort and absolutely loving it. We have our own little overwater bungalow with a glass floor and a ladder from the balcony into the gorgeous blue water. &lt;p&gt;After arriving yesterday, we basically spent the entire day chilling out and frolicking in the water. Today we basically did much the same. We got to see the turtles being fed this morning though, which was quite fun. We planned on using the snorkelling gear they've given us to have a swim with the fish and turtles in the lagoon, but just never got around to it... &lt;p&gt;Over the next few days we plan on doing stuff like kayaking, canoeing and windsurfing, but it's so tempting to just sit on the balcony and soak up some rays. &lt;p&gt;Unfortunately, I had a bit of a BF moment and forgot to pack the USB cable for my camera so photos are going to have to wait a while. Until then, I took a quick one of the view from the balcony with the webcam on my new laptop (which I will blog about eventually...).&lt;/p&gt; &lt;p&gt;&lt;img src="http://ducasfrancis.com/photos/blogpics/images/1163/original.aspx"&gt;&lt;/p&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=1164" width="1" height="1"&gt;</description></item><item><title>Why doesn't Windows do a better job of handling the case where the default audio device goes away?</title><link>http://ducasfrancis.com/blogs/myworld/archive/2007/10/31/why-doesn-t-windows-do-a-better-job-of-handling-the-case-where-the-default-audio-device-goes-away.aspx</link><pubDate>Wed, 31 Oct 2007 23:55:26 GMT</pubDate><guid isPermaLink="false">77b7c8b1-dbd6-4442-92a2-f709dbb7fb99:1129</guid><dc:creator>ducasfrancis</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;As a recent purchaser of a set of bluetooth headphones, I frequently run into the situation of loading a media file before realising that the wrong default audio device is selected. As a result, I've had to shut down IE or WMP in order to change the default audio device before I can hear the audio from my chosen media.&lt;/p&gt; &lt;p&gt;Thinking this was just an issue with Vista, I put it to the back of my mind and tried to keep a mental note. Today I checked my blog subscriptions and found that (once again) &lt;a href="http://blogs.msdn.com/larryosterman/archive/2007/10/31/what-happens-when-audio-rendering-fails.aspx" target="_blank"&gt;Larry Osterman&lt;/a&gt; has done a great job of describing why this happens.&lt;/p&gt; &lt;p&gt;Larry's short answer: "It's the responsibility of the application to deal with handling errors.&amp;nbsp; The audio stack bubbles out the error to the application and lets it figure out how to deal with the problem." &lt;p&gt;What I love about Larry's blog is that he always gets into the nitty-gritty. In this blog post, he goes into how applications access Vista's audio functionality and what developers can do to make their applications handle this situation. &lt;p&gt;My question for today is, if any application can handle this situation, then why doesn't WMP 11...? &lt;p&gt;&lt;a href="http://blogs.msdn.com/larryosterman/archive/2007/10/31/what-happens-when-audio-rendering-fails.aspx"&gt;Larry Osterman's WebLog : What happens when audio rendering fails?&lt;/a&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f802d69a-3b9f-4d0b-aa49-f7f84a34ebbe" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Vista" rel="tag"&gt;Vista&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Audio%20Devices" rel="tag"&gt;Audio Devices&lt;/a&gt;&lt;/div&gt;&lt;img src="http://ducasfrancis.com/aggbug.aspx?PostID=1129" width="1" height="1"&gt;</description><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Tech/default.aspx">Tech</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Random/default.aspx">Random</category><category domain="http://ducasfrancis.com/blogs/myworld/archive/tags/Vista/default.aspx">Vista</category></item></channel></rss>