<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>The Runtime.com</title><link>http://www.theruntime.com/blogs/MainFeed.aspx</link><description>.NET by Subtext</description><generator>Subtext Version 1.9.5.0</generator><item><title>Windows Mobile Devices and Power States</title><link>http://theruntime.com/blogs/brianpeek/archive/2008/07/03/windows-mobile-devices-and-power-states.aspx</link><pubDate>Thu, 03 Jul 2008 04:00:11 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/brianpeek/archive/2008/07/03/windows-mobile-devices-and-power-states.aspx</guid><wfw:comment>http://theruntime.com/blogs/brianpeek/comments/2640.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/brianpeek/comments/commentRss/2640.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/brianpeek/archive/2008/07/03/windows-mobile-devices-and-power-states.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/brianpeek/services/trackbacks/2640.aspx</trackback:ping><source url="http://theruntime.com/blogs/brianpeek/rss.aspx">Windows Mobile Devices and Power States</source><description>&lt;p&gt;I’ve been doing some &lt;a href="http://www.microsoft.com/windowsmobile/en-us/default.mspx" target="_blank"&gt;Windows Mobile&lt;/a&gt; development with the &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa497273.aspx" target="_blank"&gt;.NET Compact Framework&lt;/a&gt; recently and ran into a scenario where I needed the device to be in “full power” mode at all times with the back-light on.  The device is constantly powered, so battery life is not a concern.&lt;/p&gt;  &lt;p&gt;The obvious choice is to go into the Brightness and Power control panels and turn off the appropriate settings, but I learned that there is a way to handle this at an application level so the behavior only occurs while the application is running.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Power State&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;An application can force a specific power state using the &lt;em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms920689.aspx" target="_blank"&gt;SetPowerRequirement&lt;/a&gt;&lt;/em&gt; method, and release that state using the &lt;em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms919803.aspx" target="_blank"&gt;ReleasePowerRequirement&lt;/a&gt;&lt;/em&gt; method.  Using P/Invoke, these methods look like the following:&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: consolas, 'Courier New', courier, monospace; background-color: #f4f4f4"&gt;   &lt;div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum1" style="color: #606060"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;enum&lt;/span&gt; CEDevicePowerState&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum2" style="color: #606060"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum3" style="color: #606060"&gt;   3:&lt;/span&gt;     D0 = 0,    &lt;span style="color: #008000"&gt;// Full On&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum4" style="color: #606060"&gt;   4:&lt;/span&gt;     D1,        &lt;span style="color: #008000"&gt;// Low On&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum5" style="color: #606060"&gt;   5:&lt;/span&gt;     D2,        &lt;span style="color: #008000"&gt;// Standby&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum6" style="color: #606060"&gt;   6:&lt;/span&gt;     D3,        &lt;span style="color: #008000"&gt;// Sleep&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum7" style="color: #606060"&gt;   7:&lt;/span&gt;     D4,        &lt;span style="color: #008000"&gt;// Off&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum8" style="color: #606060"&gt;   8:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum9" style="color: #606060"&gt;   9:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum10" style="color: #606060"&gt;  10:&lt;/span&gt; [DllImport(&lt;span style="color: #006080"&gt;"coredll.dll"&lt;/span&gt;, SetLastError=&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum11" style="color: #606060"&gt;  11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; IntPtr SetPowerRequirement(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; device, CEDevicePowerState ceDevicePowerState, &lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; deviceFlags, IntPtr systemState, &lt;span style="color: #0000ff"&gt;ulong&lt;/span&gt; stateFlags);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum12" style="color: #606060"&gt;  12:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum13" style="color: #606060"&gt;  13:&lt;/span&gt; [DllImport(&lt;span style="color: #006080"&gt;"coredll.dll"&lt;/span&gt;, SetLastError=&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum14" style="color: #606060"&gt;  14:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;int&lt;/span&gt; ReleasePowerRequirement(IntPtr handle);&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;SetPowerRequirement&lt;/em&gt; will allow you to set a specific power state on a specific device.  In my scenario, I wanted to set the back-light to full power.  The name of the back-light on &lt;strong&gt;most&lt;/strong&gt; (not all) Windows Mobile devices appears to be “BKL1:”.  So, to set the back-light to full power (the &lt;em&gt;D0&lt;/em&gt; state), you would call the method as follows:&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;pre id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;IntPtr handle = SetPowerRequirement(&lt;span style="color: #006080"&gt;"BKL1:"&lt;/span&gt;, CEDevicePowerState.D0, 1, IntPtr.Zero, 0);&lt;/pre&gt;
&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;The power state will be returned to its default settings when the application exits, or you may call &lt;em&gt;ReleasePowerRequirement&lt;/em&gt;, passing in the handle returned from the call to &lt;em&gt;SetPowerRequirement&lt;/em&gt; to reset it yourself.&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;&lt;strong&gt;Suspend&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div&gt;The above will leave the back-light on at all times, but it will not stop the device from going into a suspended state as configured in the control panel.  To stop this from happening, simply call the &lt;em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa930260.aspx" target="_blank"&gt;SystemIdleTimerReset&lt;/a&gt;&lt;/em&gt; method at a short, regular interval:&lt;/div&gt;

&lt;div&gt; &lt;/div&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum1" style="color: #606060"&gt;   1:&lt;/span&gt; [DllImport(&lt;span style="color: #006080"&gt;"coredll.dll"&lt;/span&gt;, SetLastError=&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum2" style="color: #606060"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;extern&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; SystemIdleTimerReset();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum3" style="color: #606060"&gt;   3:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum4" style="color: #606060"&gt;   4:&lt;/span&gt; &lt;span style="color: #008000"&gt;// reset the system's idle time every 10 seconds so it doesn't suspend&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum5" style="color: #606060"&gt;   5:&lt;/span&gt; Timer timer = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Timer(IdleReset, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, 0, 10000);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum6" style="color: #606060"&gt;   6:&lt;/span&gt;  &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum7" style="color: #606060"&gt;   7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; IdleReset(&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; state)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum8" style="color: #606060"&gt;   8:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum9" style="color: #606060"&gt;   9:&lt;/span&gt;     &lt;span style="color: #008000"&gt;// no suspend&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum10" style="color: #606060"&gt;  10:&lt;/span&gt;     SystemIdleTimerReset();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum11" style="color: #606060"&gt;  11:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Lines 1-2 contain the P/Invoke signature.  Line 5 sets up a timer that will be called every 10 seconds (10000ms) to reset the idle timer, and lines 7-11 are the timer callback method which actually calls the &lt;em&gt;SystemIdleTimerReset&lt;/em&gt; method.&lt;/p&gt;

&lt;p&gt;And that’s that.  With both of these methods in place, my application remains running with the device at full power, never suspending, and with the back-light always on.&lt;/p&gt;
Cross Posted from &lt;a href="http://www.brianpeek.com/"&gt;www.brianpeek.com&lt;/a&gt;.&lt;img src="http://theruntime.com/blogs/brianpeek/aggbug/2640.aspx" width="1" height="1" /&gt;</description><dc:creator>Brian Peek</dc:creator></item><item><title>Hello TheRuntime!</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2008/06/30/hello-theruntime.aspx</link><pubDate>Mon, 30 Jun 2008 01:50:45 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2008/06/30/hello-theruntime.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2638.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2638.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2008/06/30/hello-theruntime.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2638.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Hello TheRuntime!</source><description>&lt;p&gt;I'm Thomas Williams, and I blog about SQL Server, Reporting Services, .NET, and development in general.&lt;/p&gt;
&lt;p&gt;My old blog at &lt;a href="http://dotnetjunkies.com/WebLog/thomasswilliams"&gt;DotNetJunkies&lt;/a&gt; was in desperate need of updating - thanks to &lt;a href="http://theruntime.com/blogs/jaykimble/archive/2008/06/29/welcome-thomas-s.-williams.-or-trt-goes-global.aspx"&gt;Jay&lt;/a&gt; for setting me up here at my new home! Please subscribe to &lt;a href="http://www.theruntime.com/blogs/MainFeed.aspx"&gt;TheRuntime main feed&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/thomasswilliams-tech"&gt;my personal feed&lt;/a&gt; to make sure you stay up-to-date with my posts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;More about me&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I work in the health industry in Frankston, Victoria, Australia and live with my beautiful wife Olivia and 3 young kids. I am an MCP (going for MCAD.NET) and a MCTS in SQL Server 2005.&lt;/p&gt;
&lt;p&gt;My full-time job involves writing software to process large amounts of data for enterprise data sources, using SQL Server 2005, SSIS, Reporting Services, and windows and web front ends (this is what I find myself blogging most about too, surprisingly).&lt;/p&gt;
&lt;p&gt;I have a personal blog at &lt;a href="http://thomasswilliams.blogspot.com/"&gt;Thomas Williams.blog&lt;/a&gt;, and I also enjoy movies, reading, board games, XBox, and some non-geeky things as well :-)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Tags: &lt;a rel="tag" href="http://technorati.com/tag/about"&gt;about&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tag/thomas+williams"&gt;thomas williams&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tag/personal"&gt;personal&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2638.aspx" width="1" height="1" /&gt;</description><dc:creator>Thomas Williams</dc:creator></item><item><title>Welcome Thomas S. Williams... or TRT goes global</title><link>http://theruntime.com/blogs/jaykimble/archive/2008/06/29/welcome-thomas-s.-williams.-or-trt-goes-global.aspx</link><pubDate>Sun, 29 Jun 2008 13:00:52 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/jaykimble/archive/2008/06/29/welcome-thomas-s.-williams.-or-trt-goes-global.aspx</guid><wfw:comment>http://theruntime.com/blogs/jaykimble/comments/2637.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/jaykimble/comments/commentRss/2637.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/jaykimble/archive/2008/06/29/welcome-thomas-s.-williams.-or-trt-goes-global.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/jaykimble/services/trackbacks/2637.aspx</trackback:ping><source url="http://theruntime.com/blogs/jaykimble/rss.aspx">Welcome Thomas S. Williams... or TRT goes global</source><description>&lt;p&gt;You may have noticed that our main feed was recently populated with a bunch of of our new blogger Thomas S. Williams posts (the SubText BlogML importer’s fault... sorry about that... I have tried to correct the problem... sometimes I swear that no one who develops for SubText really tests on community-based sites).&lt;/p&gt;  &lt;p&gt;Thomas has been blogging for almost as long as I have (4 years). He specializes in SQL and VB. Check out his stuff! Oh yeah, he’s our first non-US blogger (he’s from the land down under).&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/jaykimble/aggbug/2637.aspx" width="1" height="1" /&gt;</description><dc:creator>Jay Kimble</dc:creator></item><item><title>May 2004 Melbourne SQL Server SIG - Reporting Services Deployment</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/03/may-2004-melbourne-sql-server-sig---reporting-services-deployment.aspx</link><pubDate>Thu, 03 Jun 2004 04:46:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/03/may-2004-melbourne-sql-server-sig---reporting-services-deployment.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2636.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2636.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/03/may-2004-melbourne-sql-server-sig---reporting-services-deployment.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2636.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">May 2004 Melbourne SQL Server SIG - Reporting Services Deployment</source><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;My musings on the May SQL Server SIG in Melbourne, Australia (a few days late)...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;strong&gt;The Rundown&lt;br /&gt;&lt;/strong&gt;I went to a Special Interest Group meeting at Microsoft in Melbourne a couple of weeks back. I had seen the presenter, Jason Buck, before and once again he demonstrated how well he knew the product (assisted by David from MS and Greg, a consultant tasked with "..extracting out of the community...expertise..."). There were lots of people there (more than I'd seen at an SQL Server SIG before), which is a good indicator of the poularity of this add-on to SQL Server 2000 - I know it's hard to tell a book by it's cover (or a man by his clothes), but looking at the range of people and judging by the suits, there were some BI-type people, some developers, some managers.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;strong&gt;The Highlights&lt;br /&gt;&lt;/strong&gt;Jason focused on deployment and backup. He kind of powered his way through the slides, and part of the reason for that was the side discussions that kept coming up based on questions from the audience. I was hoping to see more "tips and tricks" relating to advanced report design as our deployment here was fairly painless - I guess I'll wait for the "Hitchhiker's Guide to SQL Server 2000 Reporting Services" book (see &lt;/font&gt;&lt;/font&gt;&lt;a href="http://www.sqlreportingservices.net"&gt;&lt;font face="Verdana" size="2"&gt;http://www.sqlreportingservices.net&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;). One 'wow' factor was a command-line tool to build folders, set permissions and deploy reports called "rs.exe" which used special ".rss" batch files written in VB.NET. Very cool.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;The other highlight was the amount of feedback the team running the night asked for, in terms of future topics with the SIG and the desire to build a community. I see this commonly online, but in person I find it's even more rewarding. Looking forward to the next SIG in June (see &lt;a href="http://www.local.microsoft.com.au/australia/events/register/home.aspx?levent=268429"&gt;http://www.local.microsoft.com.au/australia/events/register/home.aspx?levent=268429&lt;/a&gt; for details).&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2636.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Me, Me, Me</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/03/me-me-me.aspx</link><pubDate>Thu, 03 Jun 2004 04:51:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/03/me-me-me.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2635.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2635.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/03/me-me-me.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2635.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Me, Me, Me</source><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Obligatory first post - my name is Thomas Williams, I'm a Melbourne, Australia-based senior systems analyst working mainly with SQL Server (and Analysis Services, Reporting Services) and VB.NET. I'm 30 years old, and I'm looking forward to sharing what I've got with anyone who might be interested!&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;I've been reading blogs for a year or so now, and writing my own personal blog at &lt;/font&gt;&lt;a href="http://thomasswilliams.blogspot.com/"&gt;&lt;font face="Verdana" size="2"&gt;http://thomasswilliams.blogspot.com/&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; since September 2004. &lt;/font&gt;&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2635.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>SQL Server Developer Centre</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/04/sql-server-developer-centre.aspx</link><pubDate>Fri, 04 Jun 2004 03:23:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/04/sql-server-developer-centre.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2634.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2634.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/04/sql-server-developer-centre.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2634.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">SQL Server Developer Centre</source><description>&lt;font face="Verdana" size="2"&gt;Via &lt;/font&gt;&lt;a title="Early Adopter: SQL Server Developer Center" href="http://ea.3leaf.com/2004/06/sql_server_deve.html"&gt;&lt;font face="Verdana" size="2"&gt;Early Adopter&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; comes new of an Microsoft &lt;/font&gt;&lt;a title="SQL Server Home" href="http://msdn.microsoft.com/sql/"&gt;&lt;font face="Verdana" size="2"&gt;SQL Server Developer Centre&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; with the standard articles, downloads and KB's, but also links to blogs and an RSS feed.&lt;/font&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2634.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>GUI Design Guidelines</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/04/gui-design-guidelines.aspx</link><pubDate>Fri, 04 Jun 2004 03:33:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/04/gui-design-guidelines.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2633.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2633.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/04/gui-design-guidelines.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2633.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">GUI Design Guidelines</source><description>It's a little out-of-date, but the &lt;a href="http://digilander.libero.it/chiediloapippo/Engineering/iarchitect/index-1.htm" title="Isys Information Architects"&gt;Isys Information Architects&lt;/a&gt;site has a whole lot of examples of good (&lt;a href="http://digilander.libero.it/chiediloapippo/Engineering/iarchitect/mfame.htm" title="Interface Hall of Fame"&gt;Hall of Fame&lt;/a&gt;) and bad (&lt;a href="http://digilander.libero.it/chiediloapippo/Engineering/iarchitect/shame.htm" title="Interface Hall of Shame"&gt;Hall of Shame&lt;/a&gt;) GUIs, dialog boxes and "features" (from I don't know where).&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2633.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>GUIs Part 2</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/04/guis-part-2.aspx</link><pubDate>Fri, 04 Jun 2004 03:39:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/04/guis-part-2.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2632.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2632.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/04/guis-part-2.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2632.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">GUIs Part 2</source><description>&lt;font face="Verdana" size="2"&gt;While I'm thinking of GUIs, the &lt;/font&gt;&lt;a title="GUI Olympics" href="http://www.guiolympics.com/news_comments_full.asp?c=1&amp;amp;NewsID=139&amp;amp;u=0"&gt;&lt;font face="Verdana" size="2"&gt;GUI Olympics&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; (which has to do with skins, rather than full-blown widgets and interfaces) produced some nice looking interfaces. When I ran Mandrake at home I was pleased with the amount of customisation that could be done, being the tweaker that I am.&lt;/font&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2632.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Ohad's Reporting Services Links</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/09/ohads-reporting-services-links.aspx</link><pubDate>Wed, 09 Jun 2004 00:00:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/09/ohads-reporting-services-links.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2631.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2631.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/09/ohads-reporting-services-links.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2631.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Ohad's Reporting Services Links</source><description>&lt;font face="Verdana" size="2"&gt;Ohad has a list of &lt;/font&gt;&lt;a title="Reporting Services - Links" href="http://weblogs.asp.net/israelio/archive/2004/06/08/151088.aspx"&gt;&lt;font face="Verdana" size="2"&gt;Reporting Services links&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; that look interesting.&lt;/font&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2631.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>MS Application Updater Block</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/11/ms-application-updater-block.aspx</link><pubDate>Fri, 11 Jun 2004 03:19:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/11/ms-application-updater-block.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2630.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2630.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/11/ms-application-updater-block.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2630.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">MS Application Updater Block</source><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;From Brendan, a &lt;/font&gt;&lt;a title="Create a Self-Updating WinForms App with the Application Updater Block" href="/WebLog/BsBlog/archive/2004/06/10/16118.aspx"&gt;&lt;font face="Verdana" size="2"&gt;great step-by-step post on the MS Application Updater block&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;, which I had downloaded months ago and have sitting around for when my app gets closer to deployment (in a month or so).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;I also use the Data Access Application Block (V2, currently, as SQL Server support is all I need). I passed over the error logging Application Block in favor of &lt;a title="NeoWorks - Enterprise Software Solutions" href="http://www.neoworks.com/products/free/log4net/"&gt;log4net&lt;/a&gt; which more than meets the requirements I've got.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2630.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Finding Stored Procedure/Table Dependencies</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/15/finding-stored-proceduretable-dependencies.aspx</link><pubDate>Tue, 15 Jun 2004 00:29:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/15/finding-stored-proceduretable-dependencies.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2629.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2629.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/15/finding-stored-proceduretable-dependencies.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2629.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Finding Stored Procedure/Table Dependencies</source><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Recently I had a problem that I needed to update my stored procedures to point at a new set of tables. I systematically worked through my 3 stored procedures for populating the tables, but I couldn't remember all the stored procedures that accessed them for data retrieval.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Enter &lt;code&gt;information_schema.routines&lt;/code&gt; and a tip from &lt;/font&gt;&lt;a title="Microsoft SQL Server: Table Dependencies" href="http://www.experts-exchange.com/Databases/Microsoft_SQL_Server/Q_20996679.html"&gt;&lt;font face="Verdana" size="2"&gt;Experts Exchange&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;:&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;select * from information_schema.routines where routine_definition like '%yourtablename%'
&lt;/pre&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;The downside is that this searches the stored procedure text (well, the first 4000 characters in the &lt;code&gt;routine_definition&lt;/code&gt; column) for the table name, so you'll get hits even where the table name is used in a comment. The upside is that dynamic SQL is accounted for.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2629.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Upcoming June 2004 Melbourne SQL Server SIG - Replication Lessons from the Real World</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/15/upcoming-june-2004-melbourne-sql-server-sig---replication-lessons.aspx</link><pubDate>Tue, 15 Jun 2004 02:12:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/15/upcoming-june-2004-melbourne-sql-server-sig---replication-lessons.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2628.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2628.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/15/upcoming-june-2004-melbourne-sql-server-sig---replication-lessons.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2628.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Upcoming June 2004 Melbourne SQL Server SIG - Replication Lessons from the Real World</source><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Tonight is the Melbourne SQL Server SIG on replication, presented by Adam Thurgar. Replication is not something I know a great deal about - I'm hoping to learn ways to sync our production and development servers as currently I use multiple DTS jobs coded by hand and scheduled with SQL Server Agent. The DTS/SQL Agent approach is very flexible, but I want &lt;strong&gt;simple&lt;/strong&gt;: whenever a new table is added, data is synchronised, and the two servers are kept exactly the same.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Hopefully replication is the answer! I've printed an article from DatabaseJournal called &lt;a title="Setting Up Merge Replication: A Step-by-step Guide" href="http://www.databasejournal.com/features/mssql/article.php/1438231"&gt;Setting Up Merge Replication: A Step-by-step Guide&lt;/a&gt; to read while I'm waiting around beforehand, to at least open my eyes to what can be done.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Anyway I should have more to report on in the coming days.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2628.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>June 2004 Melbourne SQL Server SIG - Replication Lessons from the Real World</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/16/june-2004-melbourne-sql-server-sig---replication-lessons-from.aspx</link><pubDate>Wed, 16 Jun 2004 00:27:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/16/june-2004-melbourne-sql-server-sig---replication-lessons-from.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2627.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2627.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/16/june-2004-melbourne-sql-server-sig---replication-lessons-from.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2627.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">June 2004 Melbourne SQL Server SIG - Replication Lessons from the Real World</source><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Here's my brief overview of Tuesday's Melbourne SQL Server SIG on "Replication Lessons from the Real World", presented by Adam Thurgar at Microsoft Melbourne Offices on Chapel Street:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Adam did a great job presenting the topic (which I have absolutely zero prior experience with), and quickly established his credibility by talking about the work he does with Match.com and it's 90GB database (leaves my largest, at 2GB, looking pretty pathetic). Adam spoke candidly about problems he'd encountered and alluded to several improvements in Yukon, all the while infusing his talk with humour and trying to keep the audience involved. His presentation was mostly theory (no code, no screenshots, no demos) but he was quick to take questions from the group gathered. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;The highlight of the talk for me was when he covered three or four "don't do this at home" scenarios where he was able to work around some of the limitations/correct replication mistakes using the SQL Server System Tables. I went along with a particular business need in mind, and so was able to extract enough information to make a decision (my decision was yes, we'll use replication, but I need to do some more research first). I'm looking forward to reviewing the PowerPoint slides Adam used, when they get posted (at the &lt;/font&gt;&lt;a title="Australian SQL Server User Group" href="http://www.sqlserver.org.au/"&gt;&lt;font face="Verdana" size="2"&gt;Australian SQL Server User Group&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; site). &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;There were fewer attendees than the last time when Reporting Services was being discussed, which is no problems because bigger doesn't necessarily mean better. Myself, I struggle with large crowds and have absolutely zero networking skills. Maybe it's time to learn some! &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Overall I enjoyed the night from a technical side, and I'm looking forward to the future SIG's which will be targeted at Yukon.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2627.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Re-indexing Tables with Original Fillfactor</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/22/re-indexing-tables-with-original-fillfactor.aspx</link><pubDate>Tue, 22 Jun 2004 00:39:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/22/re-indexing-tables-with-original-fillfactor.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2626.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2626.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/22/re-indexing-tables-with-original-fillfactor.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2626.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Re-indexing Tables with Original Fillfactor</source><description>&lt;p&gt;As part of a weekly database job that runs out-of-hours, I re-index all the tables in a particular reporting database. After playing around with index fillfactor I arrived at a fill factor of 90 as the tables are mostly being read and only being updated a couple of times a month. For my key tables, I made sure I set up clustered indexes on the fields that were being used most commonly in my queries (which of course speeds data access up considerably)&lt;/p&gt;
&lt;p&gt;I discovered a simple script that would rebuild indexes on all tables in a database to have a fill factor of 90 (see &lt;a href="http://www.sql-server-performance.com/rebuilding_indexes.asp"&gt;http://www.sql-server-performance.com/rebuilding_indexes.asp&lt;/a&gt;), but I wanted more customisation so wrote a script to rebuild all indexes with their original fill factor (some of may tables are set higher as the table is never updated, and some are set lower as the table is updated more often).&lt;/p&gt;
&lt;p&gt;So, here's the script, which doesn't actually do the re-indexing, just PRINTs the relevant statements to the Messages window (if using Query Analyzer):&lt;/p&gt;&lt;pre&gt;  --table name variable
  DECLARE @TableName VARCHAR(255)
  --index name variable
  DECLARE @IndexName VARCHAR(255)
  --original fill afctor variable
  DECLARE @OriginalFillFactor TINYINT
  --override fill factor (can be NULL)
  DECLARE @OverrideFillFactor TINYINT
  --set override fill factor for indexes here, if required. This WILL overwrite the original value
  --for each index! (If commented out, original fill factor will be used)
  --SET @OverrideFillFactor = 90

  --temporary table for holding all indexes
  CREATE TABLE #tempIndexes 
  (
      index_name VARCHAR(255), 
      index_description VARCHAR(210), 
      index_keys NVARCHAR(2048)
  )
  --temporary table for holding table name, index name, index id and fillfactor
  DECLARE @temp TABLE (
      TableName VARCHAR(255), 
      IndexName VARCHAR(255), 
      IndexId INT, 
      OriginalFillFactor TINYINT
  )

  --set NOCOUNT ON
  SET NOCOUNT ON

  --get all the tables using INFORMATION_SCHEMA.TABLES into a cursor
  DECLARE TableCursor CURSOR FOR
  SELECT  TABLE_NAME 
  FROM    INFORMATION_SCHEMA.TABLES 
  WHERE   TABLE_TYPE = 'BASE TABLE'

  --open the cursor
  OPEN TableCursor
  --get the first row
  FETCH NEXT FROM TableCursor INTO @TableName
  --if we got a valid row, continue
  WHILE @@FETCH_STATUS = 0 BEGIN 
      --clear out the #temp table, containing indexes for the passed table
      DELETE FROM #tempIndexes
      --get indexes into #tempIndexes. This may print a warning message "The object does not 
      --have any indexes.", which can be ignored
      INSERT INTO #tempIndexes EXEC sp_helpindex @TableName

      --insert into outer table, the table name, the index name
      INSERT INTO @temp ([TableName], [IndexName])
      SELECT  @TableName, index_name
      FROM    #tempIndexes

      FETCH NEXT FROM TableCursor INTO @TableName
  END

  CLOSE TableCursor
  DEALLOCATE TableCursor

  --drop the temp index table
  DROP TABLE #tempIndexes

  --now get the index id and original fill factors
  UPDATE  @temp
  SET     IndexId = i.[indid], OriginalFillFactor = i.[OrigFillFactor]
  FROM    sysindexes i, sysobjects o, @temp T
  WHERE   i.[id] = o.[id] AND o.[name] = T.TableName AND T.IndexName = i.[name]

  --lastly loop through the @temp table and re-index
  DECLARE DBREINDEXCursor CURSOR FOR
  SELECT  TableName, IndexName, OriginalFillFactor 
  FROM    @temp
  --open cursor
  OPEN DBREINDEXCursor
  --get first row into local variables
  FETCH NEXT 
  FROM    DBREINDEXCursor 
  INTO    @TableName, @IndexName, @OriginalFillFactor
  --loop through cursor while there are rows remaining
  WHILE @@FETCH_STATUS = 0
  BEGIN
      --if we've been given an override fill factor, apply it here
      IF NOT (@OverrideFillFactor IS NULL) SET @OriginalFillFactor = @OverrideFillFactor 
      --do the re-index operation here
      PRINT 'DBCC DBREINDEX(' + @TableName + ',' + @IndexName + 
          ',' + CONVERT(VARCHAR(3), @OriginalFillFactor) + ')'
      --get the next row
      FETCH NEXT 
      FROM    DBREINDEXCursor 
      INTO    @TableName, @IndexName, @OriginalFillFactor
  END

  --close and deallocate the cursor
  CLOSE DBREINDEXCursor
  DEALLOCATE DBREINDEXCursor

  GO
&lt;/pre&gt;
&lt;p&gt;Some indexing resources I found helpful are at &lt;a href="http://www.c-sharpcorner.com/Code/2004/March/SQLPerformanceChecklist06.asp,"&gt;http://www.c-sharpcorner.com/Code/2004/March/SQLPerformanceChecklist06.asp&lt;/a&gt;, &lt;a href="http://www.extremeexperts.com/sql/articles/BestPractices.aspx"&gt;http://www.extremeexperts.com/sql/articles/BestPractices.aspx&lt;/a&gt; and &lt;a href="http://www.sql-server-performance.com/rebuilding_indexes.asp"&gt;http://www.sql-server-performance.com/rebuilding_indexes.asp&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2626.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Reporting Services SP1</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/24/reporting-services-sp1.aspx</link><pubDate>Thu, 24 Jun 2004 01:02:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/24/reporting-services-sp1.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2625.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2625.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/24/reporting-services-sp1.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2625.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Reporting Services SP1</source><description>&lt;p&gt;As promised by Microsoft, covered by many many others, and incidently delivered right on time, &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=580FEBF7-2972-40E7-BCCF-6CD90AC2F464&amp;amp;displaylang=en"&gt;Reporting Services Service Pack 1&lt;/a&gt; is now available.&lt;/p&gt;
&lt;p&gt;I'm getting ready to load it up over the next couple of days. The big thing we've been waiting on is better Excel support (for versions prior to 2002) and grouping in Excel (which was in the beta, but pulled for the final product).&lt;/p&gt;
&lt;p&gt;The main gripe I'm hearing from my users is not being able to print directly from Internet Explorer. I believe it's got something to do with IFRAMEs, and the workaround I'm offering is to export to PDF and print it there.&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2625.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Reporting Services SP1 - Installed</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/25/reporting-services-sp1---installed.aspx</link><pubDate>Fri, 25 Jun 2004 04:27:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/25/reporting-services-sp1---installed.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2624.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2624.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/25/reporting-services-sp1---installed.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2624.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Reporting Services SP1 - Installed</source><description>&lt;p&gt;Reporting Services SP1 is installed, the installation went really well, and one feature that was in the beta is back: Excel "groups" (the plus/minus rollups in Excel). Believe it or not, this was one of the things that got my boss excited about Reporting Services as many of our managers are familiar with Excel, and when it dropped off in the RTM I had to go through and create some copies of reports specifically for an Excel export. &lt;/p&gt;
&lt;p&gt;One strange thing is that there seems to be at least two means of creating expandable groups/hiding report items in the designer, for display in a browser. One way is to set the whole group to being hidden, and set a textbox as a toggle item in the "Grouping and Sorting Properties" dialog (&lt;em&gt;figure 1&lt;/em&gt;), another is to set report row(s) as being hidden, toggled by the same textbox (&lt;em&gt;figure 2&lt;/em&gt;). &lt;/p&gt;
&lt;table style="BORDER-TOP: #ececec 3px double; BORDER-BOTTOM: #ececec 3px double" cellspacing="2" cellpadding="2" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td align="middle"&gt;&lt;img height="440" alt="Reporting Services Report Designer 'Grouping and Sorting Properties' dialog (Visibility tab)" src="/WebLog/images/dotnetjunkies_com/thomasswilliams/1379/r_grouping_and_sorting_properties.jpg" width="484" border="0" /&gt;&lt;br /&gt;&lt;em&gt;&lt;small&gt;Figure 1&lt;/small&gt;&lt;/em&gt;&lt;/td&gt;
&lt;td align="middle"&gt;&lt;img height="345" alt="Reporting Services Report Designer Row Properties Property Grid" src="/WebLog/images/dotnetjunkies_com/thomasswilliams/1379/r_row_properties.jpg" width="312" border="0" /&gt;&lt;br /&gt;&lt;em&gt;&lt;small&gt;Figure 2&lt;/small&gt;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The second method creates the Excel "groups" that made me and my boss so happy. I did have a small problem with some wording in the Reporting Services SP1 readme that said: &lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&lt;pre&gt;This service pack is independent of Service Pack 4 (SP4) for SQL Server 2000. If you are installing Reporting Services SP1 after SQL Server SP4 is released, Microsoft recommends that you apply SP4 first.&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;A search at Microsoft's "Service Packs for SQL Server" (&lt;a href="http://www.microsoft.com/sql/downloads/servicepacks.asp"&gt;http://www.microsoft.com/sql/downloads/servicepacks.asp&lt;/a&gt;) site showed there isn't any SQL Server 2000 SP4, yet, but I found clarification on the newsgroups at &lt;a href="http://groups.google.com/groups?hl=en&amp;amp;lr=&amp;amp;ie=UTF-8&amp;amp;frame=right&amp;amp;th=f7246d07373b6bb2&amp;amp;seekm=%23koDNGiWEHA.644%40tk2msftngp13.phx.gbl#link3"&gt;http://groups.google.com/groups?hl=en&amp;amp;lr=&amp;amp;ie=UTF-8&amp;amp;frame=right&amp;amp;th=f7246d07373b6bb2&amp;amp;seekm=%23koDNGiWEHA.644%40tk2msftngp13.phx.gbl#link3&lt;/a&gt; which had: &lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&lt;pre&gt;The readme was not meant to imply that you need to have SQL Server SP4
before applying Reporting Services SP1. You can apply Reporting Services SP1
now and then later apply SQL Server SP4 when it is released.
&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;The newsgroups also saved me some headache with an error in Visual Studio after applying the Service Pack (it's for client PC's - report designers - as well as for the SQL Server/web server) which read: &lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&lt;pre&gt;Could not load type Microsoft.ReportingServices.Interfaces.CachedDataStatus 
&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;The solution was at &lt;a href="http://groups.google.com/groups?hl=en&amp;amp;lr=&amp;amp;ie=UTF-8&amp;amp;frame=right&amp;amp;th=b1ccf47d2cd15078&amp;amp;seekm=epuanhTWEHA.2544%40TK2MSFTNGP10.phx.gbl#link7"&gt;http://groups.google.com/groups?hl=en&amp;amp;lr=&amp;amp;ie=UTF-8&amp;amp;frame=right&amp;amp;th=b1ccf47d2cd15078&amp;amp;seekm=epuanhTWEHA.2544%40TK2MSFTNGP10.phx.gbl#link7&lt;/a&gt;, which said: &lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&lt;pre&gt;Just out of curiosity, would you do a search under the hidden folder:

C:\Documents and Settings\&lt;your user=""&gt;\Local Settings\Application Data\assembly\dl2

for a file named

Microsoft.ReportingServices.Interfaces.*

If it's there, rename it and see if that resolves the issue.  If it does, you may delete the file.&lt;/your&gt;&lt;/pre&gt;&lt;/blockquote&gt;Overall a fairly painless experience, which has improved the functionality of an already pretty good application.&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2624.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Media Center Theme for Windows XP</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/30/media-center-theme-for-windows-xp.aspx</link><pubDate>Wed, 30 Jun 2004 03:09:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/30/media-center-theme-for-windows-xp.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2623.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2623.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/30/media-center-theme-for-windows-xp.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2623.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Media Center Theme for Windows XP</source><description>&lt;p&gt;&lt;a href="http://dotnetjunkies.com/WebLog/demiliani/archive/2004/06/29/17916.aspx"&gt;Stefano&lt;/a&gt; and &lt;a href="http://msmvps.com/gbvb/archive/2004/06/29/9230.aspx"&gt;Girish&lt;/a&gt; inform us that the official Windows Media Center theme (called Royale) can be used on Windows XP. Cool!&lt;/p&gt;
&lt;p&gt;I like tweaking my colors but am not willing to load themes from 3rd-party sites on my work PC (or don't want to get busted), so it's nice to have an option. There's instructions on where to copy the theme to in the RAR file, which can be downloaded from &lt;a href="http://www.winbeta.org/images/wb-royale-mce.rar"&gt;Winbeta&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;UPDATE: &lt;/strong&gt;&lt;/em&gt;&lt;a href="http://dotnetjunkies.com/WebLog/demiliani/archive/2004/10/12/28289.aspx"&gt;&lt;em&gt;&lt;strong&gt;Stefano&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;strong&gt; alerts us that the theme has been officially released (called “Energy Blue“), and can be got &lt;/strong&gt;&lt;/em&gt;&lt;a href="http://download.microsoft.com/download/5/2/9/5295fa0c-575a-4ee6-b186-0a8cf7ddfde6/WindowsXP-TabletPC-EnergyBlueTheme-x86-ENU.exe"&gt;&lt;em&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;strong&gt;. You'll have to extract the relevant files with WinRAR and copy them manually to your Resources directory, though, as the installer is designed for Tablet PC's only.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2623.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Tips for Optimising Reporting Services Performance from tudortr</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/30/tips-for-optimising-reporting-services-performance-from-tudortr.aspx</link><pubDate>Wed, 30 Jun 2004 03:16:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/06/30/tips-for-optimising-reporting-services-performance-from-tudortr.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2622.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2622.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/06/30/tips-for-optimising-reporting-services-performance-from-tudortr.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2622.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Tips for Optimising Reporting Services Performance from tudortr</source><description>&lt;a href="http://blogs.msdn.com/tudortr/archive/2004/06/28/167969.aspx"&gt;tudortr&lt;/a&gt; has some tips on measuring and improving Reporting Services performance. I heartily agree with number 1: optimise your queries. I've found that using a) proper indexes and b) creating intermediate tables where necessary (possibly containing summarised data from a month that is reported in many different reports, rather than going to the transaction-level original data table, for instance) are the best things I can do to improve performance on my reports.&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2622.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Philip Su Shows Me The Money</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/02/philip-su-shows-me-the-money.aspx</link><pubDate>Fri, 02 Jul 2004 04:10:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/07/02/philip-su-shows-me-the-money.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2621.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2621.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/02/philip-su-shows-me-the-money.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2621.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Philip Su Shows Me The Money</source><description>Philip has a great post on &lt;a href="http://blogs.msdn.com/philipsu/archive/2004/07/01/170682.aspx"&gt;when he worked on the Money team at MS&lt;/a&gt; - funny, insightful, and memorable.&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2621.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>URLScan, FlexWiki and Reporting Services</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/08/urlscan-flexwiki-and-reporting-services.aspx</link><pubDate>Thu, 08 Jul 2004 04:12:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/07/08/urlscan-flexwiki-and-reporting-services.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2620.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2620.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/08/urlscan-flexwiki-and-reporting-services.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2620.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">URLScan, FlexWiki and Reporting Services</source><description>&lt;p&gt;Here's hoping that someone will find this information useful when working with the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=dde9efc0-bb30-47eb-9a61-fd755d23cdec&amp;amp;displaylang=en"&gt;IIS Lockdown Tool&lt;/a&gt;, &lt;a href="http://www.flexwiki.com/default.aspx/FlexWiki.FlexWiki"&gt;FlexWiki&lt;/a&gt; and Reporting Services. If the URLScan filter is set to a fairly restrictive level, neither Reporting Services or FlexWiki will work (returning constant 404 errors). I found helpful advice at the following pages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://weblogs.asp.net/rhurlbut/archive/2004/01/17/59716.aspx"&gt;FlexWiki and URLScan&lt;/a&gt; : Robert Hurlbut points out that setting the “AllowDotInPath” setting in urlscan.ini to "1" fixes FlexWiki.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/technet/itsolutions/net/maintain/opnetapp.mspx"&gt;Operating .NET-based Applications&lt;/a&gt; : The code for this MS whitepaper (see &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=9989D151-5C55-4BD3-A9D2-B95A15C73E92&amp;amp;displaylang=en"&gt;Security Guide Scripts Download&lt;/a&gt;) has sample urlscan.ini files for development and production servers, which will re-enable ASP and ASPX files in IIS.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dotnetjunkies.com/WebLog/darrell.norton/archive/2004/03/24/9936.aspx"&gt;Got IIS Problems? Check the URLScan logs&lt;/a&gt; : Darrell Norton brings all of the advice that I've listed here together himself, and even explains what's going on (see also his entry on &lt;a href="http://dotnetjunkies.com/WebLog/darrell.norton/archive/2003/10/06/2090.aspx"&gt;How to Configure IISLockdown and UrlScan for .NET Servers&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;312376"&gt;How To Configure URLScan to Allow Requests with a Null Extension in IIS&lt;/a&gt; : a step I didn't have to do (but it's not over yet) from the MS KB's.&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2620.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Printing a Form in VB.NET</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/13/printing-a-form-in-vb.net.aspx</link><pubDate>Tue, 13 Jul 2004 04:04:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/07/13/printing-a-form-in-vb.net.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2619.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2619.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/13/printing-a-form-in-vb.net.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2619.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Printing a Form in VB.NET</source><description>&lt;p&gt;I don't have a need for it right now, but I know one day that &lt;a href="http://weblogs.asp.net/mschiffer/archive/2004/07/13/181111.aspx"&gt;Mathias Schiffer's PrintForm replacement for Visual Basic .NET&lt;/a&gt; code will come in handy for allowing users to print what they see.&lt;/p&gt;
&lt;p&gt;My current solution is “official“, pre-baked reporting via Reporting Services, and I'm using the ComponentOne FlexGrid for on-screen data displays (I wonder if it has a Print method?)&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2619.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Ordering Task Bar Buttons, and Removing "Use the Web Service to find the appropriate program" Dialog</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/14/ordering-task-bar-buttons-and-removing-use-the-web-service.aspx</link><pubDate>Wed, 14 Jul 2004 00:59:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/07/14/ordering-task-bar-buttons-and-removing-use-the-web-service.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2618.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2618.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/14/ordering-task-bar-buttons-and-removing-use-the-web-service.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2618.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Ordering Task Bar Buttons, and Removing "Use the Web Service to find the appropriate program" Dialog</source><description>&lt;p&gt;Omer wants &lt;a href="http://weblogs.asp.net/OKloeten/archive/2004/07/13/181939.aspx?Pending=true"&gt;ordering of task bar buttons&lt;/a&gt;, and I agree. It sounds trivial but I find that every day I order my buttons (from left to right) Outlook, MyIE web browser, Windows Explorer, the rest. I reckon I save 10 minutes a day just by knowing where my browser window is when I'm switching between programs.&lt;/p&gt;
&lt;p&gt;On the other hand, Alt-Tab is probably faster than the mouse.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Next, Kevin posts a 5-second registry tip to &lt;a href="http://weblogs.asp.net/KDente/archive/2004/07/13/181912.aspx"&gt;get rid of the useless “Use the Web Service to find the appropriate program” dialog&lt;/a&gt; that comes up when you try to open a file with an unknown extension in XP. Thanks Kevin!&lt;/p&gt;
&lt;p&gt;The Web Service link is still available at the bottom of the “Open With” dialog, so you get the best of both worlds.&lt;/p&gt;
&lt;p&gt;&lt;font color="#ff0000"&gt;UPDATE: Mis-spelt Omer's name - thanks Omer for the notification. Sorry for the inconvenience!&lt;/font&gt;&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2618.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Realisations</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/20/realisations.aspx</link><pubDate>Tue, 20 Jul 2004 03:57:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/07/20/realisations.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2617.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2617.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/20/realisations.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2617.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Realisations</source><description>&lt;p&gt;&lt;a href="http://weblogs.asp.net/Jeff/archive/2004/07/19/187615.aspx"&gt;Jeff&lt;/a&gt; reflects on 3 years of experiences and priorities, thinking he was happy (but realising he was actually miserable) and doing something about it. He writes about the need for support (and sounds like he's very grateful that he got that from his wife), self-esteem, balance and ability to take risks (and a lot of other stuff that you'll have to read for yourself). &lt;/p&gt;
&lt;p&gt;His post made me think of a time when I felt down in general and I felt bad about my job and future prospects, and I realised something: it's OK to feel bad. I'm learning from that and I &lt;strong&gt;still&lt;/strong&gt; spend a lot of time trying to make myself feel better or avoid bad feelings entirely rather than accept the fact that I'm not always going to feel great, and just get on with things.&lt;/p&gt;
&lt;p&gt;Jeff's post also highlights for me a need to be able to take risks:&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;Finally, the inability to take risks will keep you forever stuck in the same place.&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Something to work on!&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2617.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Melbourne SQL Server SIG review for July - SQL Server 2005: What's new in the relational and storage engines</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/22/melbourne-sql-server-sig-review-for-july---sql-server.aspx</link><pubDate>Thu, 22 Jul 2004 01:03:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/07/22/melbourne-sql-server-sig-review-for-july---sql-server.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2616.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2616.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/22/melbourne-sql-server-sig-review-for-july---sql-server.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2616.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Melbourne SQL Server SIG review for July - SQL Server 2005: What's new in the relational and storage engines</source><description>&lt;p&gt;Tony Bain (from &lt;a title="Red Rock SQL Services" href="http://sqlservices.redrock.net.au/"&gt;Red Rock SQL Services&lt;/a&gt;), a Microsoft SQL Server MVP, spoke at Wednesday night's SQL Server SIG at the Microsoft offices in Melbourne. His primary topic was improvements in the core technology of SQL Server over the 2000 version. Tony has been using the software for the last 12 months - since the first beta - and had lots of insights to show for it. &lt;/p&gt;
&lt;p&gt;Tony started off explaining that this was a "What's New"-type session, which meant a brief overview of the improvements without any real advice on how to implement them in the real world. Left out of the night's discussion were .NET integration, Reporting Services, Analysis Services, XQuery, and more (which Tony labelled as the "cool" parts of Yukon), and the focus was on the sort of improvements that a DBA is going to spend time in, namely the relational and storage engines and the changes there. Tony discussed (this is not an exhaustive list):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;replacements for TEXT, NTEXT and IMAGE (BLOB) datatypes: VARCHAR(MAX), NVARCHAR(MAX) and VARBINARY(MAX) which can be searched in WHERE clauses&lt;/li&gt;
&lt;li&gt;the ability to take a read-only snapshot of a database at a particular point in time and run queries against them (he admitted one of the shortcomings of these snapshots were that they could not be backed up)&lt;/li&gt;
&lt;li&gt;referring to queries as variables (Tony called these run-time views), although I didn't see much difference from the current TABLE datatype except that declaration and population can be done at the same time&lt;/li&gt;
&lt;li&gt;recursive queries, with the afore-mentioned run-time views...I liked the sound of this!&lt;/li&gt;
&lt;li&gt;inbuilt function to see how often your indexes were being used&lt;/li&gt;
&lt;li&gt;ability to include columns in an index, that are not part of the actual index but are stored with the index to save the query going back to the table to get the field&lt;/li&gt;
&lt;li&gt;triggers on Data Definition Language (DDL) statements, e.g. every time a table was added to your database, a trigger could fire&lt;/li&gt;
&lt;li&gt;more consistent DDL statements - basically a CREATE, ALTER and DROP for almost any object you can think of - to reconcile DBCC commands, extended stored procedures and normal DDL statements&lt;/li&gt;
&lt;li&gt;function to return the SPID, Transaction name and running time of currently open transactions&lt;/li&gt;
&lt;li&gt;TRY...CATCH blocks - Tony explained that they currently only caught one type of exception, a transaction fail exception&lt;/li&gt;
&lt;li&gt;select a random number of rows from a table (very fast)&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;There was more, but I honestly can't remember all the new things. Suffice to say there is a lot to learn! &lt;/p&gt;
&lt;p&gt;I was amazed at how many changes and improvements Microsoft had worked into SQL Server 2005, even given the limited range that Tony covered. Greg Linwood from the user group mentioned that last night's event was the first of a series of Yukon presentations, with the August SQL SIG in Melbourne titled &lt;a title="Changes to Backup and Recovery in SQL Server 2005" href="http://www.sqlserver.org.au/Events/ViewEvent.aspx?EventId=11"&gt;Changes to Backup and Recovery in SQL Server 2005&lt;/a&gt;. Looking forward to it...&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2616.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Pivot Tables/Horizontal Tables With Reporting Services</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/26/pivot-tableshorizontal-tables-with-reporting-services.aspx</link><pubDate>Mon, 26 Jul 2004 04:04:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/07/26/pivot-tableshorizontal-tables-with-reporting-services.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2615.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2615.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/26/pivot-tableshorizontal-tables-with-reporting-services.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2615.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Pivot Tables/Horizontal Tables With Reporting Services</source><description>&lt;p&gt;Chris Hays shows step-by-step &lt;a href="http://blogs.msdn.com/ChrisHays/archive/2004/07/23/193292.aspx"&gt;how to do “horizonal tables”&lt;/a&gt; (fixed rows, variable columns) with Reporting Services. I'm bookmarking this to have a look at later.&lt;/p&gt;
&lt;p&gt;Chris uses the matrix which is an interesting Reporting Services control. I've used this in the past to take advantage of the multi-level drill-down which I reckon is slightly easier to use than a table control. The subtotals are easier than tables too, but there's a trade-off because with the table you have very tight control over what gets displayed, and how, compared to the matrix.&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2615.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>'Favorite' Tip from IE Blog</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/28/favorite-tip-from-ie-blog.aspx</link><pubDate>Wed, 28 Jul 2004 04:31:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/07/28/favorite-tip-from-ie-blog.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2614.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2614.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/28/favorite-tip-from-ie-blog.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2614.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">'Favorite' Tip from IE Blog</source><description>&lt;p&gt;The IE blog at MSDN has a &lt;a href="http://blogs.msdn.com/ie/archive/2004/07/26/197754.aspx"&gt;quick tip for IE&lt;/a&gt;, where giving an IE Favorite a one-word name allows you to type that one word into your address bar to go to the Favorite URL.&lt;/p&gt;
&lt;p&gt;That's interesting for me, I probably still prefer two mouse clicks. But, even more interesting than this, check the stats on the IE blog:&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;&lt;strong&gt;posts - 9, comments - 825&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;That has to be the highest comment to post ratio ever!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2614.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Roy's Visual Studio.NET Add-In Contest</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/29/roys-visual-studio.net-add-in-contest.aspx</link><pubDate>Thu, 29 Jul 2004 01:20:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/07/29/roys-visual-studio.net-add-in-contest.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2613.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2613.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/29/roys-visual-studio.net-add-in-contest.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2613.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Roy's Visual Studio.NET Add-In Contest</source><description>I haven't had time to download any of them yet, but the submissions for &lt;a href="http://dev.magen.com/AddinContest/default.aspx"&gt;Roy Osherove's Add-In Contest&lt;/a&gt; for Visual Studio.NET look good. Something to get back to later, I guess...&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2613.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>C# to Visual Basic Translation Tool</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/29/c-to-visual-basic-translation-tool.aspx</link><pubDate>Thu, 29 Jul 2004 02:57:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/07/29/c-to-visual-basic-translation-tool.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2612.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2612.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/29/c-to-visual-basic-translation-tool.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2612.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">C# to Visual Basic Translation Tool</source><description>&lt;p&gt;August's MSDN Magazine has a &lt;a href="http://msdn.microsoft.com/msdnmag/issues/04/08/EndBracket/default.aspx"&gt;C# to Visual Basic Translation Tool&lt;/a&gt; which will take a whole C# project and convert it to a VB.NET project.&lt;/p&gt;
&lt;p&gt;I have used the resources that the author John Robbins mentions for small snippets of C# (&lt;a href="http://www.kamalpatel.net/ConvertCSharp2VB.aspx"&gt;ConvertCSharp2VB&lt;/a&gt; and &lt;a href="http://authors.aspalliance.com/aldotnet/examples/translate.aspx"&gt;C# to VB.NET Translator&lt;/a&gt;), but the ability to convert a whole project sounds pretty good.&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2612.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Source Control Options</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/30/source-control-options.aspx</link><pubDate>Fri, 30 Jul 2004 03:29:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/07/30/source-control-options.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2611.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2611.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/07/30/source-control-options.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2611.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Source Control Options</source><description>&lt;p&gt;I'm on a development team of 1, so source control isn't a huge or pressing issue for me. The biggest advantages of having source control is for rolling back to earlier versions, and using a diff tool to see what I've changed. It also means I follow some better practices than just developing away, heedless of key files I might overwrite, or changes I might make that break a system.&lt;/p&gt;
&lt;p&gt;About a year ago I set up &lt;a href="http://www.cvsnt.org/wiki/"&gt;CVS&lt;/a&gt;, which worked pretty well. It took a lot of fiddling to get working just right, but when I figured out the securities and settings, Visual Studio.NET played along pretty nicely with it (using &lt;a href="http://www.jalindi.com/igloo/"&gt;Jalindi Igloo&lt;/a&gt;). I would give either of those two products a hearty recomendation to anyone interested in CVS source control on Windows. &lt;/p&gt;
&lt;p&gt;Then the Windows 2000 server I had CVS working on started playing up - it had very little memory, I was asking a lot of it, and I had a whole bunch of demo and beta software on it that meant it needed a rebuild. Eventually we got a new server instead of rebuilding the old one, and eventually that new server got repaved after a power blackout (long story).&lt;/p&gt;
&lt;p&gt;So now I feel I'm back at square one. I've downloaded &lt;a href="http://www.sourcegear.com/vault/index.asp"&gt;Vault&lt;/a&gt; and &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; (thanks to &lt;a href="http://dotnetjunkies.com/WebLog/seichert/archive/2004/07/27/20416.aspx"&gt;Steve Eichert&lt;/a&gt; for an interesting &amp;amp; informative post on Subversion) and I'm poised, ready to pull the trigger and go with one of them. I'll have to try them both out, of course. Leaning towards Subversion as it's open source and that means that others can come on board without having to cough up dough for licenses. Alternatively, I've expressed interest in a project out of hours that uses Vault, so maybe getting to learn that would be good. Vault has the fact that it's a mature and supported product going in its favour.&lt;/p&gt;
&lt;p&gt;Add to this the new Team System on the horizon, and it makes for a lot of source control options!&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2611.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Inductive User Interface MSDN Sample, in VB.NET</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/08/06/inductive-user-interface-msdn-sample-in-vb.net.aspx</link><pubDate>Fri, 06 Aug 2004 00:08:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/08/06/inductive-user-interface-msdn-sample-in-vb.net.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2610.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2610.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/08/06/inductive-user-interface-msdn-sample-in-vb.net.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2610.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Inductive User Interface MSDN Sample, in VB.NET</source><description>&lt;p&gt;Michael Weinhardt's excellent article &lt;a href="http://msdn.microsoft.com/vcsharp/using/columns/wonders/default.aspx?pull=/library/en-us/dnforms/html/winforms07202004.asp"&gt;IUIs and Web-Style Navigation in Windows Forms, Part 1&lt;/a&gt; describes how to create an “inductive” (I consider it to be like a task-based) user interface, like the Windows XP "Workgroup-Mode User Account Management" or the Office 2003 Research Pane. I can't do a very good job explaining inductive versus deductive user interfaces; there's an &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwui/html/iuiguidelines.asp"&gt;old article at MSDN&lt;/a&gt; that gives the complete run-down.&lt;/p&gt;
&lt;p&gt;The other day and had a play around with the download which is in C#. Michael has created a neat little way to get a wizard-like interface (that's also capable of much more) and Windows Forms as almost web pages inside a container. Each “page” is designed using the Visual Studio designer window, allowing for a lot of control. &lt;/p&gt;
&lt;p&gt;Converting the sample app that uses Michael's C# “Navigation“ framework to VB.NET was fairly straightforward using the &lt;a href="http://authors.aspalliance.com/aldotnet/examples/translate.aspx"&gt;C# to VB.NET Translator&lt;/a&gt; - I created a new VB.NET project and converted one file from the MSDN sample, "PageTemplate.cs", to "PageTemplate.vb", and then the other pages inherit from this - and only a simple change in syntax is necessary for “hyperlinking“ to pages:&lt;/p&gt;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;p&gt;C# syntax for displaying a page: &lt;font face="Courier New"&gt;Go(typeof(&amp;lt;form&amp;gt;));&lt;/font&gt;&lt;br /&gt;VB.NET syntax: &lt;font face="Courier New"&gt;Go(GetType(&amp;lt;form&amp;gt;))&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I hope this helps anyone attempting to work with the MSDN sample in VB.NET 2003. I don't have anywhere to post the VB.NET project, please let me know if it would be of use to you.&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2610.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Build Regime (or lack of)</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/08/10/build-regime-or-lack-of.aspx</link><pubDate>Tue, 10 Aug 2004 04:20:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/08/10/build-regime-or-lack-of.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2609.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2609.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/08/10/build-regime-or-lack-of.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2609.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Build Regime (or lack of)</source><description>&lt;p&gt;As mentioned before, I pretty much work in a one-developer shop. This is not an excuse! &lt;/p&gt;
&lt;p&gt;When I started a fairly sizable project last year, I tried to start off right and set up CVS for source control, learned how to use &lt;a href="http://nant.sourceforge.net/"&gt;NAnt&lt;/a&gt; to build my solution, did some playing with &lt;a href="http://www.nunit.org/"&gt;NUnit&lt;/a&gt; for tests and also set up &lt;a href="http://ndoc.sourceforge.net/"&gt;NDoc&lt;/a&gt; to do my documentation.&lt;/p&gt;
&lt;p&gt;A year and a half later I look back with regret that I ditched all of these in favor of...nothing. I was worried about the maintenance around my whole “build regime“ and it seemed like all my effort was adding nothing of value to the project. I deleted my NAnt build files, didn't keep up with the many NUnit upgrades and add-ins and have not got any documentation to show.&lt;/p&gt;
&lt;p&gt;My project is getting bigger and bigger (of course!) and I hope I'm learning my lesson - that tools like I've mentioned keep things in check rather than add to the complexity in the long run. So now I'm leaning back towards NAnt, I've swapped to Subversion (which I've pretty much installed) for source control and I'm trying to find good bug/issue tracking software for when my app goes out “into the wild”.&lt;/p&gt;
&lt;p&gt;To get me started I'm looking at a great article on 15 Seconds called “&lt;a href="http://www.15seconds.com/issue/040621.htm"&gt;Using Open Source .NET Tools for Sophisticated Builds&lt;/a&gt;”, and also Jan Tielens' &lt;a href="http://dotnet.leadit.be/buildfilebuilder/"&gt;NAnt BuildFile Builder&lt;/a&gt; (via &lt;a href="http://msmvps.com/gbvb/archive/2004/08/05/11263.aspx"&gt;Girish&lt;/a&gt;).&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2609.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Geek Laughs</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/08/13/geek-laughs.aspx</link><pubDate>Fri, 13 Aug 2004 03:20:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/08/13/geek-laughs.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2608.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2608.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/08/13/geek-laughs.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2608.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Geek Laughs</source><description>&lt;p&gt;Only a geek could laugh at some of the &lt;a href="http://geekswithblogs.net/dthakur/archive/2004/08/12/9594.aspx"&gt;jokes Devankur Thakur has collected&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also found out my brother likes &lt;a href="http://dwlt.net/tapestry/"&gt;Dilbert&lt;/a&gt;, I thought I was the only one in my family!&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2608.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Determining if you have Windows XP SP2</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/08/20/determining-if-you-have-windows-xp-sp2.aspx</link><pubDate>Fri, 20 Aug 2004 03:42:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/08/20/determining-if-you-have-windows-xp-sp2.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2607.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2607.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/08/20/determining-if-you-have-windows-xp-sp2.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2607.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Determining if you have Windows XP SP2</source><description>&lt;p&gt;With Windows XP Service Pack 2 released, it would be handy to determine if you have it installed programatically (using C# or VB.NET). &lt;a href="http://dotnetjunkies.com/WebLog/saarc/archive/2004/08/19/22552.aspx"&gt;Saar Carmi&lt;/a&gt; points me in the right direction to &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;304721"&gt;KB 304721&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Related is &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;304283"&gt;KB 304283&lt;/a&gt; which explains how to find out Windows versions in C# using the &lt;font face="Courier New"&gt;System.Environment.OSVersion&lt;/font&gt; structure (I don't know if it detects SP2, as I don't have SP2 yet...at least now I'm able to check!)&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2607.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>Local Weather via RSS</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/08/20/local-weather-via-rss.aspx</link><pubDate>Fri, 20 Aug 2004 04:01:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/08/20/local-weather-via-rss.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2606.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2606.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/08/20/local-weather-via-rss.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2606.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">Local Weather via RSS</source><description>&lt;p&gt;This is a &lt;a href="http://www.rssweather.com/"&gt;good utilisation of an existing technology&lt;/a&gt; e.g. airport locations, free weather availability and RSS (via &lt;a href="http://blogs.msdn.com/alexbarn/archive/2004/08/18/216722.aspx"&gt;Alex Barnett&lt;/a&gt;). &lt;a href="http://www.rssweather.com/dir/"&gt;This link&lt;/a&gt; lists countries outside the US and Canada that the service supports, and Melbourne weather is &lt;a href="http://www.rssweather.com/hw3.php?icao=YMML"&gt;here&lt;/a&gt; (using &lt;a href="http://www.acronymfinder.com/af-query.asp?String=exact&amp;amp;Acronym=ICAO&amp;amp;Find=Find"&gt;ICAO&lt;/a&gt; code YMML).&lt;/p&gt;
&lt;p&gt;This is handy to be able to tell the wife when it's OK to hang washing on the line, or to know if I need my umbrella to walk out to the car. I don't know if I've got a use for visibility, windspeed, and barometer readings just yet, but it is handy to have this kind of news delivered to me if I need it.&lt;/p&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2606.aspx" width="1" height="1" /&gt;</description><dc:creator /></item><item><title>E-mail to RSS</title><link>http://theruntime.com/blogs/thomasswilliams/archive/2004/08/29/e-mail-to-rss.aspx</link><pubDate>Sun, 29 Aug 2004 09:51:00 GMT</pubDate><guid isPermaLink="true">http://theruntime.com/blogs/thomasswilliams/archive/2004/08/29/e-mail-to-rss.aspx</guid><wfw:comment>http://theruntime.com/blogs/thomasswilliams/comments/2605.aspx</wfw:comment><wfw:commentRss>http://theruntime.com/blogs/thomasswilliams/comments/commentRss/2605.aspx</wfw:commentRss><comments>http://theruntime.com/blogs/thomasswilliams/archive/2004/08/29/e-mail-to-rss.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://theruntime.com/blogs/thomasswilliams/services/trackbacks/2605.aspx</trackback:ping><source url="http://theruntime.com/blogs/thomasswilliams/rss.aspx">E-mail to RSS</source><description>&lt;div&gt;Lately I had to sign up to a site to get access to the answers to questions posted on their forum. How did I know that the site had answers? Well, Google showed me the question and part of the answer when I searched for the exact error message for a problem I was having, but when I followed the link from Google to the site I found I couldn't view the answer unless I became a (free) member.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I retreated back to Google to find to my dismay that there's no cached copy of the page I want. So, I became a member of the site, found the answer, and moved on. Now, two weeks later, I notice I've got two weekly newsletters from the site in my inbox.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This is not a problem as the newsletter is actually quite good, but it's just that I don't want to put aside time to read mailing-list type stuff on my personal e-mail. Luckily this site has the option not to receive newsletters and has an RSS feed, so I can still read the content when I read my feeds and my inbox stays clean. &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;I did some quick hunting around to find two sites that will give out an e-mail address and then allow you to subscribe to your “inbox” using RSS:&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;MailBucket (&lt;a href="http://www.mailbucket.org/"&gt;http://www.mailbucket.org/&lt;/a&gt;) 
&lt;/li&gt;&lt;li&gt;MailbyRss (&lt;a href="http://www.iupload.com/product/mailbyrss.asp"&gt;http://www.iupload.com/product/mailbyrss.asp&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;This seems like a useful service to have. I'll give one or both of them a try and see how I go.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;&lt;strong&gt;UPDATE: &lt;/strong&gt;To use MailbyRss you sign up, they provide you with an e-mail address (a GUID), and whenever you mail something to this mail address it is “posted” to a web page that's kind of like a blog-lite, which has an RSS feed. Pretty simple. MailbyRss allows two optional tags in the e-mail that you send to be “posted” - an abstract for the entry, and an alternate date for the date of the posting. &lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;MailbyRss looks like it is set up for corporate users as a subset of a larger suite of tools. Its creators advertise it as another information stream to potential buyers of your product or existing users for support.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The advantages of MailbyRss are that it would be hard for someone to guess the e-mail address used to post. The resulting content is available to anyone, though.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;MailBucket seems similar but both the e-mail used to post and the resulting content are open to anyone. It seems to be targeted at developers who do not have time to read all the posts on a mailing list and instead prefer to consume the information using RSS. I think the downfall is lack of unique identity - there's no sign up, just check if your desired address is in use (the e-mail address for the “inbox“ becomes the web address to get the RSS from) - which means mailing list information I send to a MailBucket e-mail address might be hijacked by someone else (unless I'm getting the site horribly wrong, which is a possibility).&lt;/div&gt;&lt;img src="http://theruntime.com/blogs/thomasswilliams/aggbug/2605.aspx" width="1" height="1" /&gt;</description><dc:creator /></item></channel></rss>