<?xml version="1.0" encoding="us-ascii"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><lastBuildDate>Sat, 04 Jul 2009 20:44:46 GMT</lastBuildDate><atom:link href="http://www.fwicki.com/rss/showens22/Misc-NET" rel="self" type="application/rss+xml" /><ttl>24</ttl><title>Misc .NET</title><link>http://www.fwicki.com/fwickis/showens22/Misc-NET</link><description>General .NET info</description><generator>Fwicki.Com - Fwicki Feed Generator</generator><language>en-us</language><image><url>http://www.fwicki.com/images/ui/feed-link.png</url><title>Fwicki - RSS Management</title><link>http://www.fwicki.com/fwickis/showens22/Misc-NET</link><description>Fwicki - RSS Management</description><width>88</width><height>90</height></image><item><title>ASPxGridView and Editors Suite - Q131273 - Force update on ASPxGridView in edit mode on tab change event. - View Issue</title><link>http://www.devexpress.com/Support/Center/p/Q131273.aspx</link><guid>http://www.devexpress.com/Support/Center/p/Q131273.aspx647</guid><description>Read More......(&lt;a href="http://www.devexpress.com/Support/Center/p/Q131273.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7140060" width="1" height="1"&gt;</description><pubDate>Sat, 04 Jul 2009 21:47:31 GMT</pubDate></item><item><title>RSS Management</title><link>http://www.fwicki.com/</link><guid>http://www.fwicki.com/2</guid><description>&lt;div style="text-align: left; font-family: Calibri, Verdana, Arial; font-size: .70em; font-weight: bold;"&gt;&lt;b&gt;Sponsored Links:&lt;/b&gt;&lt;/div&gt;
&lt;table width="850" border="0" cellpadding="0" cellspacing="0"&gt;
  &lt;tr&gt;
    &lt;td width="272"&gt;&lt;a href="http://www.supplydiabetic.com/diabetic-recipes/diabetes-diet" target="_blank"&gt;&lt;div style="text-align: left; font-family: Calibri, Verdana, Arial; font-size: .70em; font-weight: bold;"&gt;Diabetes Diet&lt;/div&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;td width="219"&gt;&lt;a href="http://www.fwicki.com/fwickis/New-York-City/NYC-Custom-Jewelry-and-Wedding-Rings" target="_blank"&gt;&lt;div style="text-align: left; font-family: Calibri, Verdana, Arial; font-size: .70em; font-weight: bold;"&gt;Custom Wedding Bands&lt;/div&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;td width="181"&gt;&lt;/td&gt;
  &lt;td width="178"&gt;&lt;a href="http://www.fwicki.com/fwickis/Environmental-Green-Interior-Design-and-Decorating/Green-Interior-Design" target="_blank"&gt;&lt;div style="text-align: left; font-family: Calibri, Verdana, Arial; font-size: .70em; font-weight: bold;"&gt;Green Interior Design&lt;/div&gt;&lt;/a&gt;&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;a href="http://www.fwicki.com/fwickis/Toronto-Ontario-Executive-Recruiting-Firms/Toronto-Executive-Recruiter-Candidate-Placement-Consulting" target="_blank"&gt;&lt;div style="text-align: left; font-family: Calibri, Verdana, Arial; font-size: .70em; font-weight: bold;"&gt;Executive Recruiter Consulting Toronto&lt;/div&gt;&lt;/a&gt;&lt;/td&gt;
  &lt;td width="219"&gt;&lt;a href="http://www.fwicki.com/fwickis/Commercial-Residential-Cleaning-Services-Fredericksburg-Virginia/Janitorial-Cleaning-Services-Commercial-Residential-Fredericksburg-Virginia" target="_blank"&gt;&lt;div style="text-align: left; font-family: Calibri, Verdana, Arial; font-size: .70em; font-weight: bold;"&gt;Janitorial Services Fredericksburg&lt;/div&gt;&lt;/a&gt;&lt;/td&gt;
  &lt;td width="181"&gt;&lt;a href="http://www.fwicki.com/fwickis/ESD-Electrostatic-Discharge-Static-Electricity/ESD-Static-Electricity-Control" target="_blank"&gt;&lt;div style="text-align: left; font-family: Calibri, Verdana, Arial; font-size: .70em; font-weight: bold;"&gt;Static Electricity Control&lt;/div&gt;&lt;/a&gt;&lt;/td&gt;
  &lt;td width="178"&gt;&lt;div&gt;&lt;a href="http://www.attorney-lawyer-directory.com" target="_blank"&gt;&lt;div style="text-align: left; font-family: Calibri, Verdana, Arial; font-size: .70em; font-weight: bold;"&gt;Legal Information&lt;/div&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;table width="800"  border="0" cellpadding="2"&gt;
  &lt;tr&gt;
    &lt;td width="90"&gt;&lt;a href="http://www.twitter.com/Fwicki" target="_blank" rel="nofollow"&gt;&lt;img src="http://www.fwicki.com/images/corporate/twitter-bird.png" alt="Follow Fwicki on Twitter" width="72" height="86" border="0" title="Follow Fwicki on Twitter"&gt;&lt;/a&gt;&lt;/td&gt;
    &lt;td width="301"&gt;&lt;strong&gt;** &lt;/strong&gt;&lt;a href="http://www.twitter.com/Fwicki" target="_blank"&gt;&lt;strong&gt;Follow Fwicki on Twitter&lt;/strong&gt;&lt;/a&gt; &lt;/td&gt;
  &lt;td width="389"&gt;&lt;center&gt;&lt;a href="http://www.idetonate.com/default.aspx?f=1" target="_blank" rel="nofollow"&gt;&lt;img src="http://www.fwicki.com/images/ui/iphone_banner.jpg" alt="iDetonate - iPhone Antics Application - Available Now!" title="iDetonate - iPhone Antics Application - Available Now!" width="234" height="60" border="0"&gt;&lt;/a&gt;&lt;/center&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;br /&gt;</description><category>Technology</category><pubDate>Sat, 04 Jul 2009 20:44:47 GMT</pubDate></item><item><title>&lt;B&gt;ASP&lt;/B&gt;.&lt;B&gt;NET&lt;/B&gt; &lt;B&gt;MVC&lt;/B&gt;: How to combine scripts and other resources - Gunnar...</title><link>http://feedproxy.google.com/~r/Dotnetshoutout-Upcoming-RSS/~3/ZWoR8zBzElM/asp-net-mvc-how-to-combine-scripts-and-other-resources.aspx</link><guid>http://feedproxy.google.com/~r/Dotnetshoutout-Upcoming-RSS/~3/ZWoR8zBzElM/asp-net-mvc-how-to-combine-scripts-and-other-resources.aspx486</guid><description>ASP . NET pages that use AJAX components make usually many requests to server per one page to load all required JavaScript and CSS files. Read More......(&lt;a href="http://feedproxy.google.com/~r/Dotnetshoutout-Upcoming-RSS/~3/ZWoR8zBzElM/asp-net-mvc-how-to-combine-scripts-and-other-resources.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7140050" width="1" height="1"&gt;</description><pubDate>Sat, 04 Jul 2009 21:00:00 GMT</pubDate></item><item><title>asp.net development</title><link>http://www.asp.net/LEARN/videos/#Starter</link><guid>http://www.asp.net/LEARN/videos/#Starter487</guid><description>.NET development Read More......(&lt;a href="http://www.asp.net/LEARN/videos/#Starter"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7140039" width="1" height="1"&gt;</description><pubDate>Sat, 04 Jul 2009 20:16:30 GMT</pubDate></item><item><title>IT diary - Stuff that works: how-to add programatically TemplateField to run commands on GridView</title><link>http://ysgitdiary.blogspot.com/2008/06/how-to-add-programatically.html</link><guid>http://ysgitdiary.blogspot.com/2008/06/how-to-add-programatically.html488</guid><description>Read More......(&lt;a href="http://ysgitdiary.blogspot.com/2008/06/how-to-add-programatically.html"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7140040" width="1" height="1"&gt;</description><pubDate>Sat, 04 Jul 2009 20:11:58 GMT</pubDate></item><item><title>How to: Insert New Records into a Database</title><link>http://msdn.microsoft.com/en-us/library/ms233812(VS.80).aspx</link><guid>http://msdn.microsoft.com/en-us/library/ms233812(VS.80).aspx489</guid><description>Read More......(&lt;a href="http://msdn.microsoft.com/en-us/library/ms233812(VS.80).aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7140024" width="1" height="1"&gt;</description><pubDate>Sat, 04 Jul 2009 19:31:34 GMT</pubDate></item><item><title>displaying multiple static paths by single page</title><link>http://forums.asp.net/thread/3274885.aspx</link><guid>http://forums.asp.net/thread/3274885.aspx490</guid><description>...http://www.mysite.com/Default.aspx?page... Read More......(&lt;a href="http://forums.asp.net/thread/3274885.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7140054" width="1" height="1"&gt;</description><pubDate>Sat, 04 Jul 2009 18:26:00 GMT</pubDate></item><item><title>CodeProject: Charts, Graphs and Images. Free source code and programming help</title><link>http://www.codeproject.com/KB/web-image/index.aspx?#Charts, Graphs and Images - Images and multimedia</link><guid>http://www.codeproject.com/KB/web-image/index.aspx?#Charts, Graphs and Images - Images and multimedia491</guid><description>Read More......(&lt;a href="http://www.codeproject.com/KB/web-image/index.aspx?#Charts, Graphs and Images - Images and multimedia"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7140059" width="1" height="1"&gt;</description><pubDate>Sat, 04 Jul 2009 22:00:18 GMT</pubDate></item><item><title>Microsoft Virtual labs - getting the lab notes directly</title><link>http://weblogs.asp.net/soever/archive/2009/07/03/microsoft-virtual-labs-getting-the-lab-notes-directly.aspx</link><guid>http://weblogs.asp.net/soever/archive/2009/07/03/microsoft-virtual-labs-getting-the-lab-notes-directly.aspx492</guid><description>&lt;p&gt;Microsoft has great &lt;a href="http://www.microsoft.com/events/vlabs/default.mspx" target="_blank"&gt;virtual labs&lt;/a&gt; available, but it takes some time to get in there. If you just want the lab notes, type the following in Google: &lt;strong&gt;site:download.microsoftvirtuallabs.com filetype:pdf&lt;/strong&gt; or just follow &lt;a href="http://www.google.nl/search?q=site:download.microsoftvirtuallabs.com+filetype:pdf&amp;amp;hl=nl&amp;amp;rlz=1W1SUNA_en&amp;amp;as_qdr=all&amp;amp;num=100&amp;amp;start=100&amp;amp;sa=N" target="_blank"&gt;this link&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7139572" width="1" height="1"&gt;</description><category>.NET</category><pubDate>Fri, 03 Jul 2009 21:46:14 GMT</pubDate></item><item><title>ProgrammerFish - Everything that's programmed!</title><link>http://www.programmerfish.com/</link><guid>http://www.programmerfish.com/493</guid><description>Read More......(&lt;a href="http://www.programmerfish.com/"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7139567" width="1" height="1"&gt;</description><pubDate>Fri, 03 Jul 2009 21:37:05 GMT</pubDate></item><item><title>Validating Stored Procedures using SQL Server 2008 policies and C#</title><link>http://weblogs.asp.net/uruit/archive/2009/07/03/validating-stored-procedures-using-sql-server-policies-and-net.aspx</link><guid>http://weblogs.asp.net/uruit/archive/2009/07/03/validating-stored-procedures-using-sql-server-policies-and-net.aspx494</guid><description>&lt;p&gt;Microsoft SQL Server 2008 incorporates a new feature named Policy Based Management, allowing the administration of SQL 2008-based policies. DBAs can control many different aspects of SQL Server and automate several time-consuming tasks.&lt;/p&gt;  &lt;p&gt;   &lt;br&gt;Among other uses, the policies can help to ensure that Stored Procedures follow a desired standard (set of policies). &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;Then you could also write your own application to validate a set of stored procedures against the different policies defined in the target server, using .NET code and a set of classes available to interact with SQL Server objects.&amp;nbsp; &lt;/p&gt;  &lt;p&gt;Additionally, you could validate stored procedures from previous SQL versions such as 2005 and 2000. &lt;/p&gt;  &lt;p&gt;In order to write some .NET code to achieve this, first we have to refer to a few assemblies:&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;blockquote&gt;   &lt;div style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;" id="codeSnippetWrapper"&gt;     &lt;div style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;" id="codeSnippet"&gt;       &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; Microsoft.SqlServer.Management.Dmf;&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum2"&gt;   2:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; System.Data.SqlClient;&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum4"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; Microsoft.SqlServer.Management.Sdk.Sfc;&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum6"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum7"&gt;   7:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; Microsoft.SqlServer.Management.Smo;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then we should get the policies collection from our target server. We will use the GetPolicyCollection method which receives a parameter with the connection string information from our SQL Server 2008 hosting the policies.&lt;/p&gt;

&lt;div style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;" id="codeSnippet"&gt;
    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; PolicyCollection GetPolicyCollection(&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; ConnectionString)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum2"&gt;   2:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum3"&gt;   3:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum4"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum5"&gt;   5:&lt;/span&gt; PolicyStore policyStore = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; PolicyStore();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum6"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum7"&gt;   7:&lt;/span&gt; SqlConnection oSqlConn = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; SqlConnection(ConnectionString);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum8"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum9"&gt;   9:&lt;/span&gt; SqlStoreConnection oStoreConn = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; SqlStoreConnection(oSqlConn);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum10"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum11"&gt;  11:&lt;/span&gt; policyStore.SqlStoreConnection = oStoreConn;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum12"&gt;  12:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum13"&gt;  13:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; policyStore.Policies;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum14"&gt;  14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum15"&gt;  15:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Then we can write some code to ensure that our StoredProcedure complies with established policies. &lt;/p&gt;

&lt;p&gt;This method receives a StoredProcedure&amp;nbsp; object, which represents the stored procedure we will evaluate.&lt;/p&gt;

&lt;p&gt;Policy class exposes some methods to validate an StoredProcedure objects agains it. &lt;/p&gt;

&lt;p&gt;We will iterate through the collection of policies and invoke the Evaluate method passing the sp object as parameters, and telling the framework to check whether the validation fails or not, using the AdHocPolicyEvaluationMode enum (in this case will be set to Check), and an array with the objects to validate. &lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div style="border: 1px solid silver; margin: 20px 0px 10px; padding: 4px; overflow: auto; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 97.5%; font-family: 'Courier New',courier,monospace; direction: ltr; max-height: 200px; font-size: 8pt; cursor: text;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-style: none; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;" id="codeSnippet"&gt;
    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt; Validate(StoredProcedure sp)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum2"&gt;   2:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum3"&gt;   3:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum4"&gt;   4:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum5"&gt;   5:&lt;/span&gt; Object[] parameters = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; Object[1];&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum6"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum7"&gt;   7:&lt;/span&gt; parameters[0] = sp;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum8"&gt;   8:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum9"&gt;   9:&lt;/span&gt; PolicyCollection policyCollection = GetPolicyCollection(strConnectionString);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum10"&gt;  10:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum11"&gt;  11:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt; (Policy policyItem &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; policyCollection)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum12"&gt;  12:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum13"&gt;  13:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum14"&gt;  14:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum15"&gt;  15:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt; (policyItem.Evaluate(AdHocPolicyEvaluationMode.Check, parameters))&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum16"&gt;  16:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum17"&gt;  17:&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum18"&gt;  18:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum19"&gt;  19:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum20"&gt;  20:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum21"&gt;  21:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum22"&gt;  22:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum23"&gt;  23:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum24"&gt;  24:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum25"&gt;  25:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum26"&gt;  26:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; text-align: left; line-height: 12pt; background-color: white; width: 100%; font-family: 'Courier New',courier,monospace; direction: ltr; color: black; font-size: 8pt;"&gt;&lt;span style="color: rgb(96, 96, 96);" id="lnum27"&gt;  27:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;And that?s it! You can have a friendly UI to display how a set of stored procedures will comply or not with the defined policies at the target server, before you actually decide to move them. &lt;/p&gt;

&lt;p&gt;(by the way, it?s quite easy to move stored procedures from one server to another using the classes included in these libraries and a few lines of .NET code). &lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Post written by Santiago Gonnet - .NET Developer @ UruIT&lt;/i&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7139565" width="1" height="1"&gt;</description><category>Check-in policies,sql server 2008</category><pubDate>Fri, 03 Jul 2009 21:25:00 GMT</pubDate></item><item><title>PhillyWebJobs :  ASP related: .NET Administrator, SBSS Operations, Philadelphia, PA (53985286): following technologie.. http://cli.gs/PeQTS</title><link>http://twitter.com/PhillyWebJobs/statuses/2458374603</link><guid>http://twitter.com/PhillyWebJobs/statuses/2458374603495</guid><description>PhillyWebJobs : ASP related: .NET Administrator, SBSS Operations, Philadelphia, PA (53985286): following technologie.. http://cli.gs/PeQTS Read More......(&lt;a href="http://twitter.com/PhillyWebJobs/statuses/2458374603"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7139520" width="1" height="1"&gt;</description><pubDate>Fri, 03 Jul 2009 21:16:42 GMT</pubDate></item><item><title>SOA Patterns With BizTalk Server 2009 (and Biztalk ESB Toolkit)</title><link>http://weblogs.asp.net/hernandl/archive/2009/07/03/soa-patterns-with-biztalk-server-2009-and-biztalk-esb-toolkit.aspx</link><guid>http://weblogs.asp.net/hernandl/archive/2009/07/03/soa-patterns-with-biztalk-server-2009-and-biztalk-esb-toolkit.aspx496</guid><description>&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt"&gt;Over the last weeks after finishing my collaboration with the ESB Toolkit project, &lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt; mso-ansi-language: EN" lang=EN&gt;I had the chance to read a great book on Biztalk called &lt;A href="http://www.packtpub.com/soa-patterns-with-biztalk-server-2009/book" mce_href="http://www.packtpub.com/soa-patterns-with-biztalk-server-2009/book"&gt;SOA Patterns with BizTalk Server 2009&lt;/A&gt; by &lt;A href="http://seroter.wordpress.com/" mce_href="http://seroter.wordpress.com/"&gt;Richard Seroter&lt;/A&gt;, an authority on BizTalk topics. &lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt; mso-ansi-language: EN" lang=EN&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt; mso-ansi-language: EN" lang=EN&gt;The book discusses in a very comprehensive and well structured way the core principles of SOA and how to get a great synergy with WCF Adapters with samples on implementation of synchronous and asynchronous communication patterns. In particular I was more biased to focus on chapter 11 where it is described the &lt;A href="http://msdn.microsoft.com/en-us/dd876606.aspx" mce_href="http://msdn.microsoft.com/en-us/dd876606.aspx"&gt;ESB Toolkit&lt;/A&gt;. &lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt; mso-ansi-language: EN" lang=EN&gt;The first thing I noticed was that the chapter was based on the CTP2 version of the toolkit. Nevertheless, the overall structure and samples are pretty good and follow basically the general approach. Naturally some details and parts had changed since that version of the toolkit and in particular the licensing area where now it DOES have official Microsoft support as a product (Biztalk Server 2009).&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt; mso-ansi-language: EN" lang=EN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt; mso-ansi-language: EN" lang=EN&gt;After that I also found that Richard also posted in his blog some comments and samples regarding the final version like the &lt;A href="http://seroter.wordpress.com/2009/06/08/esb-toolkit-out-and-about/" mce_href="http://seroter.wordpress.com/2009/06/08/esb-toolkit-out-and-about/"&gt;presentation of the latest ESB Toolkit version &lt;/A&gt;or this great sample about &lt;A href="http://seroter.wordpress.com/2009/06/29/esb-toolkit-executing-multiple-maps-in-sequence/" mce_href="http://seroter.wordpress.com/2009/06/29/esb-toolkit-executing-multiple-maps-in-sequence/"&gt;executing multiple maps in sequence&lt;/A&gt; (Notice that this sample shows some screenshots of the new Itinerary Designer).&lt;/SPAN&gt; 
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt; mso-ansi-language: EN" lang=EN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt; mso-ansi-language: EN" lang=EN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt; mso-ansi-language: EN" lang=EN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt; mso-ansi-language: EN" lang=EN&gt;I recommend this book to all Biztalk audiences in particular if you want to build &lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt; mso-ansi-language: EN; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: Arial; mso-fareast-language: EN-US; mso-bidi-language: AR-SA" lang=EN&gt;maintainable &lt;/SPAN&gt;mission critical based solutions.&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt; mso-ansi-language: EN" lang=EN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Verdana','sans-serif'; FONT-SIZE: 10pt; mso-ansi-language: EN" lang=EN&gt;The book can be purchased from &lt;A href="http://www.packtpub.com/soa-patterns-with-biztalk-server-2009/book/sr/roles-and-permission-abr2/0409?utm_source=sr_roles_and_permission_abr2_0409&amp;amp;utm_medium=content&amp;amp;utm_campaign=sanjay" mce_href="http://www.packtpub.com/soa-patterns-with-biztalk-server-2009/book/sr/roles-and-permission-abr2/0409?utm_source=sr_roles_and_permission_abr2_0409&amp;amp;utm_medium=content&amp;amp;utm_campaign=sanjay"&gt;Packt Publishing&lt;/A&gt; and &lt;A href="http://www.amazon.com/SOA-Patterns-BizTalk-Server-2009/dp/1847195008/ref=cm_cr_pr_product_top" mce_href="http://www.amazon.com/SOA-Patterns-BizTalk-Server-2009/dp/1847195008/ref=cm_cr_pr_product_top"&gt;Amazon&lt;/A&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7139564" width="1" height="1"&gt;</description><category>Patterns &amp;amp; Practices</category><pubDate>Fri, 03 Jul 2009 21:12:00 GMT</pubDate></item><item><title>Problems with ASP.net JSON Webservice response type - Stack Overflow</title><link>http://stackoverflow.com/questions/712606/problems-with-asp-net-json-webservice-response-type/716334</link><guid>http://stackoverflow.com/questions/712606/problems-with-asp-net-json-webservice-response-type/716334497</guid><description>Read More......(&lt;a href="http://stackoverflow.com/questions/712606/problems-with-asp-net-json-webservice-response-type/716334"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7139568" width="1" height="1"&gt;</description><pubDate>Fri, 03 Jul 2009 21:11:03 GMT</pubDate></item><item><title>jqGrid, ASP.NET, JSON is Driving me crazy. Please Help. - Stack Overflow</title><link>http://stackoverflow.com/questions/723801/jqgrid-asp-net-json-is-driving-me-crazy-please-help</link><guid>http://stackoverflow.com/questions/723801/jqgrid-asp-net-json-is-driving-me-crazy-please-help498</guid><description>Read More......(&lt;a href="http://stackoverflow.com/questions/723801/jqgrid-asp-net-json-is-driving-me-crazy-please-help"&gt;read more&lt;/a&gt;)&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7139569" width="1" height="1"&gt;</description><pubDate>Fri, 03 Jul 2009 21:08:31 GMT</pubDate></item><item><title>Is the remote control a thing of the past?</title><link>http://www.secretGeek.net/remote_future.asp</link><guid>http://www.secretGeek.net/remote_future.asp499</guid><description>&lt;p&gt;We humans used to be almighty atheletes, then the TV was invented. &lt;/p&gt;
&lt;p&gt;For a time, the only exercise we found was in hopping up to change the channel (this was usually relegated to the youngest member of a family unit)&lt;/p&gt;
&lt;p&gt;Time went on and we got lazier still.&lt;/p&gt;
&lt;p&gt;The remote control became a must-have for every lounge room. &lt;/p&gt;
&lt;p&gt;The next step is to become so lazy that we can no longer reach for a remote control. &lt;/p&gt;
&lt;p&gt;We'll use mind-power to control the volume. &lt;/p&gt;
&lt;p&gt;Pretty soon, thinking will be too much trouble. &lt;/p&gt;
&lt;p&gt;The TV will need to do the thinking. You watch TV -- and TV watches you.&lt;/p&gt;
&lt;p&gt;"He's looking bored? Better switch channel."&lt;/p&gt;
&lt;p&gt;Automatic volume control will be easy. TV pays attention to the ambient noise level in the room, looks where the audience are seated, and listens to the shows its broadcasting, adjusting to keep everyone comfortable.&lt;/p&gt;
&lt;p&gt;Maybe we end up putting our&lt;em&gt;selves&lt;/em&gt; into the matrix, one little feat of laziness at a time.&lt;/p&gt;</description><pubDate>Fri, 03 Jul 2009 11:30:18 GMT</pubDate></item><item><title>The Utterly Thorough Guide To Awesome Application Compatibility on Windows 7.</title><link>http://www.secretGeek.net/win7_compat_layer.asp</link><guid>http://www.secretGeek.net/win7_compat_layer.asp500</guid><description>
&lt;p&gt;&lt;strong&gt;How does backward compatibility work in windows 7?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I'm glad you asked.&lt;/p&gt;
&lt;p&gt;You don't got to be a &lt;a href='http://www.hanselman.com/blog/'&gt;Hanselman&lt;/a&gt; to know all this.&lt;/p&gt;
&lt;p&gt;Here's a pictographicatorial guide to compatibility checking in the windows 7.&lt;/p&gt;
&lt;img src='http://secretGeek.net/image/flowchart_app_compat_win7.png' alt='XXX' style='border:2px solid #000;margin:15px;margin-top:5px;' /&gt;
&lt;p&gt;&lt;small&gt;* In point of fact, it's a virtual &lt;a href='http://blogs.msdn.com/oldnewthing/'&gt;Raymond Chen&lt;/a&gt; (a VRC), but the MS guys are so freakin good at virtualization now that You Will Never Ever Ever EVER Be Able To Detect The Difference. Even Mrs Chen is rarely sure. And only when that fails do they invoke &lt;a href='http://www.joelonsoftware.com/articles/APIWar.html'&gt;the real Ray Chen&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;So take it from me, a world expert on the computing technologies, that this new version of windows will be just about the best thing since Vista.&lt;/p&gt;
</description><pubDate>Thu, 02 Jul 2009 11:39:44 GMT</pubDate></item><item><title>Recursing over the Pareto Principle...</title><link>http://www.secretGeek.net/pareto_recurse.asp</link><guid>http://www.secretGeek.net/pareto_recurse.asp501</guid><description>&lt;span style='float:right; background:black'&gt;&lt;table&gt;&lt;tr&gt;&lt;td style='background:black'&gt;&lt;img src='http://secretGeek.net/image/pareto.gif' alt='Villy Pareto' style='float:right;border:1px solid #CCC;margin:10px;'  /&gt;&lt;br /&gt;&lt;center style='clear:right'&gt;&lt;small style='color:#FFF'&gt;
Vilfredo Pareto:&lt;br /&gt;
don't got time to shave.&lt;br /&gt;
&lt;/small&gt;&lt;/center&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/span&gt;

&lt;p&gt;I keep hearing rather a bit too much about this &lt;a href='http://en.wikipedia.org/wiki/Pareto_principle'&gt;Pareto Principle&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Apparently, with just 20% effort, correctly applied, I can achieve 80% of the desired effect. Marvellous stuff!&lt;/p&gt;

&lt;p&gt;I was about to go ahead and do this when it occurred to me:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;"Why waste all that time, doing a whole 20%?&lt;/p&gt;
&lt;p&gt;"If I only did &lt;strong&gt;20%&lt;/strong&gt; of that 20%, then surely I could achieve &lt;strong&gt;80%&lt;/strong&gt; of the 80%?"&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Then with a little more head scratching, and the help of an excel spreadsheet, I determined that with just 0.8% of the effort I could achieve 51.2% of the result -- which is a PASS in anyone's books.&lt;/p&gt;

&lt;p&gt;So from now on, you will excuse me while I spend 99.2% of my time:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;&lt;p&gt;Lounging around, drunk, in a pool bar and&lt;/p&gt; &lt;/li&gt;
&lt;li&gt;&lt;p&gt;Determining exactly which 0.8% of the effort to apply myself to.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;Unless, of course, it takes 80% of the effort to work out exactly &lt;em&gt;which&lt;/em&gt; 20% will achieve the desired effect. And it takes...&lt;/p&gt;
</description><pubDate>Sun, 07 Jun 2009 08:26:42 GMT</pubDate></item><item><title>A Non Warning, from Windows XP</title><link>http://www.secretGeek.net/non_warning_warning.asp</link><guid>http://www.secretGeek.net/non_warning_warning.asp502</guid><description>&lt;p&gt;I feel sorry for the programmer who was forced, no doubt after endless emails, meetings, focus-groups and think-tanks to check this obscure non-warning warning message into the Windows source tree...&lt;/p&gt;

&lt;img src='http://secretGeek.net/image/non_warning.PNG' alt='Warning message after adding more RAM, at last' style='border:5px solid #CCC;margin:10px;'  /&gt;

&lt;blockquote&gt;&lt;p&gt;"The amount of physical memory in your system has increased. This typically does NOT indicate a hardware failure. Contact your Help Desk if you did not personally change your system's physical memory configuration."&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Why didn't they say "Congratulations!" or "Good news" or "Ahhhh! thanks for feeding me those yummy ram chips!" or best of all:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;"Well, how about that! The tight bastards in IT must've approved that RAM upgrade request we noticed you writing in MS-Word, all those months ago.&lt;/p&gt;

&lt;/p&gt;"Now let's see if we can get the cowards to consider upgrading the browser to IE 7."&lt;/p&gt;&lt;/blockquote&gt;

</description><pubDate>Fri, 05 Jun 2009 08:11:53 GMT</pubDate></item><item><title>Sometimes, The Better You Program, The Worse You Communicate.</title><link>http://www.secretGeek.net/program_communicate_4reasons.asp</link><guid>http://www.secretGeek.net/program_communicate_4reasons.asp503</guid><description>&lt;p&gt;The habits of a good programmer are not simply &lt;em&gt;orthogonal&lt;/em&gt; to good communication practices -- frequently they are in direct opposition.&lt;/p&gt;

	 &lt;p&gt;A couple of weeks ago I put out a twitter post I've been meaning to come back and explain:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;"the habits of a good programmer are not simply orthogonal to good communication -- frequently they're in direct opposition."&lt;/p&gt;
&lt;a href='http://twitter.com/secretGeek/status/1870937085'&gt;http://twitter.com/secretGeek/status/1870937085&lt;/a&gt;
&lt;/blockquote&gt;


&lt;p&gt;This is a pretty startling and upsetting result: I'd like to think that the heart of good programming is crisp and direct communication. That all of my efforts to be better at programming will, somehow, make me a better all-round person. If only it were true.&lt;/p&gt;

&lt;p&gt;Here's a bunch of ways that good programming practices are directly opposed to good communication practices.&lt;/p&gt; 

&lt;p&gt;In bullet form:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;D.R.Y. Does Not Apply.&lt;/li&gt;
&lt;li&gt;Humans don't mean what they say.&lt;/li&gt;
&lt;li&gt;Compilers don't need to see an example.&lt;/li&gt;
&lt;li&gt;Programs love definitions; Humans get flummoxed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;And in detail:&lt;/p&gt;

&lt;h2&gt;1. D.R.Y. Does Not Apply&lt;/h2&gt;

&lt;p&gt;The golden rule of programming is D.R.Y. -- don't repeat yourself. This is the heart of effective programming. But this is the opposite of effective communication.&lt;/p&gt;

&lt;p&gt;Let me say that again:&lt;/p&gt;

&lt;p&gt;The golden rule of programming, DRY, is the opposite of effective communication. ;-)&lt;/p&gt;

&lt;p&gt;Say everything once and only once -- go ahead -- then be amazed as everyone misses your point!&lt;/p&gt;

&lt;p&gt;Humans are not machines. Memories made of this gooey, spongy stuff called a &lt;strong&gt;brain&lt;/strong&gt; are nothing like memories made of silicon.&lt;/p&gt;

&lt;p&gt;With Humans, nothing sinks in the first time. And furthermore, you may be surprised to hear that NOTHING sinks in the first time.&lt;/p&gt;

 
&lt;span style='float:right; background:black'&gt;&lt;table&gt;&lt;tr&gt;&lt;td style='background:black'&gt;&lt;img src='http://secretGeek.net/image/nietzche_cvh.jpg' alt='Human, All Too Human' style='float:right;border:1px solid #CCC;margin:10px;'  /&gt;&lt;br /&gt;&lt;center style='clear:right'&gt;&lt;small style='color:#FFF'&gt;
"Human, All Too Human"&lt;br /&gt;
&lt;br /&gt;
Nietzsche preferred the&lt;br /&gt; 
company of a good compiler &lt;br /&gt;
over that of a human.&lt;br /&gt;
&lt;br /&gt;
"Compilers never make fun&lt;br /&gt; 
of one's moustache," &lt;br /&gt;
--Ibid., pg 293.&lt;/small&gt;&lt;/center&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/span&gt;

&lt;h2&gt;2. Humans don't mean what they say.&lt;/h2&gt;

&lt;p&gt;Compilers are of course perfectly literal. They don't care at all what you mean, they are &lt;em&gt;always&lt;/em&gt; hung up on precisely what you say.&lt;/p&gt;

&lt;p&gt;Even if you didn't start off life as an anal-retentive git, you'll slowly gain the requisite faculties over years of trying to please a compiler.&lt;/p&gt;

&lt;p&gt;The art of trying to please a compiler consists of the ability to logically, dispassionately, analyse what you've said, to discover and remove any mistake or ambiguity -- to always produce an output that is perfectly comprehensible to the strictest of master.&lt;/p&gt; 

&lt;p&gt;Try being like that around real people. Just try it.&lt;/p&gt;

&lt;p&gt;People are barely literal at all. If you take them literally when their meaning differs from their words -- they will get quite irate with you. They won't see that the mistake is theirs.&lt;/p&gt;

&lt;p&gt;When the words they use differ from their intent, you may feel an overwhelming desire to 'correct' their mistake. You may even think you are doing them a favour.&lt;/p&gt;

&lt;p&gt;This is a natural feeling, amongst programmers, who would be happily spared the torture of spending time trying to remove all ambiguity from the words they provide to a parser.&lt;/p&gt;  

&lt;p&gt;But please (please) hold back. You might score a small point in the 'intelligence' column for pointing out their '&lt;em&gt;mistake&lt;/em&gt;'. But you'll also score about a bajillion points in the '&lt;em&gt;what a freaking dork&lt;/em&gt;' column.&lt;/p&gt;


&lt;h2&gt;3. Programs don't need to see an example.&lt;/h2&gt;

&lt;p&gt;Explain a function to a compiler, and it will be able to calculate the answer.&lt;/p&gt;

&lt;p&gt;Explain a function to a human... and then give them an example, and draw them a picture, and give two counter examples, and draw another picture, plus provide an interpretive dance on the topic of functions -- and maybe, just maybe, if you've danced &lt;em&gt;very&lt;/em&gt; nicely, they will begin to see "what you're trying to say."

&lt;p&gt;"What I'm &lt;em&gt;trying&lt;/em&gt; to say?" I'm saying it damn clear! I'm saying it directly, concisely and with perfectly constructed phrases! I'm not &lt;em&gt;trying&lt;/em&gt; to say anything! I'm succeeding, you're just not listening, you freaking imbecile!&lt;/p&gt; 

&lt;p&gt;And don't take that tone with me. With humans I mean. There's no point yelling. Their rational mind shuts down, their sympathetic nervous system takes over. They get ready to fight or flee. Your point is lost when you get them angry.&lt;/p&gt;  

&lt;p&gt;Computers don't mind if you type angry. Humans think the anger is more important than the words themselves.&lt;/p&gt;

&lt;p&gt;When you have the customer in a headlock, knocking their face against the ground with every syllable: the syllables themselves are no longer of tremendous consequence.&lt;/p&gt; 

&lt;p&gt;True: that bit about beating up the customer may &lt;em&gt;not&lt;/em&gt; be a typical trait amongst great programmers. Perhaps I included it just for entertainment purposes. Continuing...&lt;/p&gt;

&lt;h2&gt;4. Programs love definitions; Humans get flummoxed.&lt;/h2&gt; 

&lt;p&gt;In programming we define new terms all day long. We define class names or function names or variable names.&lt;/p&gt;

&lt;p&gt;We immediately attach a specific definition to them -- and then we use that definition throughout our code.&lt;/p&gt; 

&lt;p&gt;I imagine that some part of the brain is associated with the ability to define a new term and then hold onto its definition. That part of the brain would be monstrous in programmers. Very over-developed. Gigantic -- a tiger amongst kittens.&lt;/p&gt;

&lt;p&gt;But define a new term in front of an audience of non-programmers: watch as the eyes glaze over. Heads slump forward. They start planning their weekend.&lt;/p&gt;

&lt;p&gt;Let's call this our Neologismic Synaptic Aptitude, or NSA. Actually: let's not call it our NSA, because if we do, then programmers will start bandying the terminology around like it's something we've known about all their life. And the normal people will just look at us with that '&lt;em&gt;freak&lt;/em&gt;' expression, and we'll be even further from ever making it into the boardroom.&lt;/p&gt;

&lt;p&gt;I think this aptitude for new terms is what makes TLA's so abundant in the IT world. I do hope you realise it scares everyone else.&lt;/p&gt;  

&lt;h2&gt;So please, I implore you...&lt;/h2&gt;

&lt;p&gt;Stop defining new terms. Stop expecting non-programmers to understand the specific and concrete definitions you attach to funny little abbreviations.&lt;/p&gt;

&lt;p&gt;Stop striving for brevity and conciseness.&lt;/p&gt;

&lt;p&gt;Stop correcting other people.&lt;/p&gt;

&lt;p&gt;Stop expecting people to understand you first time around.&lt;/p&gt; 

&lt;p&gt;Start giving examples -- real examples, earthy examples.&lt;/p&gt; 

&lt;p&gt;Let people be people -- let them be vague and a little incorrect -- listen more for the gist of what they're saying than the exact terminology.&lt;/p&gt;

&lt;p&gt;Be a compassionate speaker, a compassionate listener. Embrace the 'all too human' aspects of the strange bipeds you interact with.&lt;/p&gt;

&lt;p&gt;Then drop me an email and please, for the love of god, tell me how you managed it.&lt;/p&gt;

</description><pubDate>Fri, 05 Jun 2009 10:24:14 GMT</pubDate></item><item><title>Astounding Hyperlinked Noticeboard</title><link>http://www.secretGeek.net/hyperNotice.asp</link><guid>http://www.secretGeek.net/hyperNotice.asp504</guid><description>&lt;p&gt;I see this sign on the noticeboard in the staff kitchen every day, and thought I ought to share the wry little WTF it invokes, &lt;em&gt;every last time.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;small&gt;sorry i redacted it slightly; i think the guilty deserve some protection too; they're just hard working kids in the end)&lt;/small&gt;&lt;/p&gt;
&lt;span background:black'&gt;&lt;table&gt;&lt;tr&gt;&lt;td style='background:black'&gt;&lt;img src='http://secretGeek.net/image/noticeboard_35_1.png' alt='' style='float:right;border:1px solid #CCC;margin:10px;' /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/span&gt;
</description><pubDate>Sat, 13 Jun 2009 12:17:23 GMT</pubDate></item><item><title>Three Questions About Each Bug You Find</title><link>http://www.secretGeek.net/3q_eachbug.asp</link><guid>http://www.secretGeek.net/3q_eachbug.asp505</guid><description> 
&lt;span style='float:right; background:black'&gt;&lt;table &gt;&lt;tr&gt;&lt;td style='background:black'&gt;&lt;a href='http://www.multicians.org/thvv/threeq.html'&gt;&lt;img src='http://secretGeek.net/image/3_questions_th.gif' alt='1. Is this mistake somewhere else also?
2. What next bug is hidden behind this one?
3. What should I do to prevent bugs like this?' style='float:right;border:1px solid #CCC;margin:10px;'  /&gt;&lt;/a&gt;&lt;br /&gt;&lt;center style='clear:right'&gt;&lt;small style='color:#FFF'&gt;3 Questions... &lt;br /&gt;in cartoon form too!&lt;/small&gt;&lt;/center&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/span&gt;

&lt;p&gt;I really love this timeless Tom Van Vleck article from 1989.&lt;/p&gt;
&lt;p&gt;It teaches us to ask ourselves:&lt;/p&gt; 
&lt;h2&gt;&lt;a href='http://www.multicians.org/thvv/threeq.html'&gt;Three Questions About Each Bug You Find&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Those questions being:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Is this mistake somewhere else also?&lt;/li&gt;
&lt;li&gt;What next bug is hidden behind this one?&lt;/li&gt;
&lt;li&gt;What should I do to prevent bugs like this?&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;When I first read these rules, I was foolish enough to think:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;'Cute, But Too Obvious! i do this intuitively &lt;em&gt;all the time.&lt;/em&gt;'&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;But &lt;a href='http://TimeSnapper.com/'&gt;watch yourself closely!&lt;/a&gt; I've caught myself out on occasion, and maybe you will too.&lt;/p&gt;

&lt;p&gt;I'm making an effort to be more explicit about &lt;em&gt;the three questions&lt;/em&gt;. Maybe i'll end up fixing related problems at first hint more often than i do now.&lt;/p&gt;
</description><pubDate>Fri, 12 Jun 2009 13:06:58 GMT</pubDate></item><item><title>10 Simple Rules To Follow In Case Your Software Becomes Self-Aware</title><link>http://www.secretGeek.net/10_simple_rules_self_aware_software.asp</link><guid>http://www.secretGeek.net/10_simple_rules_self_aware_software.asp506</guid><description>&lt;img src='http://secretGeek.net/image/1_Electric_Dreams_02.jpg' alt='happy face' style='float:right;clear:right;border:5px solid #CCC;margin:10px;'  /&gt;
&lt;p&gt;Well, It turns out that the 80's geek classic, 'War Games' has inspired a sequel, the film &lt;p&gt;&lt;a href='http://www.imdb.com/title/tt0865957/'&gt;'War Games: the dead code'&lt;/a&gt; was released in 2008. Though, perhaps the correct term is 'foisted.'&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WG: TDC&lt;/strong&gt; is such a deliberately bad film that you can only begin to enjoy it once you grok that it's a comedic satire.&lt;/p&gt;

&lt;p&gt;For the first hour and a half I assumed it was trying to be a cool, teenage-targetted tech-savvy thriller, like the original. This had me wincing in agony at every bad line and predictable twist. Only then did I realize it was all a joke: a parody of the teenage-targetted tech-savvy thriller. A kind of 'scary-movie' style satire of the entire genre. Hopefully?&lt;/p&gt;

&lt;p&gt;Well, I've just finished watching it and it's inspired me to share a few helpful tips for up and coming programmers.&lt;/p&gt;  

&lt;p&gt;As one of today's young parents, I can tell you what concerns us. Not swine flu, or global economic disasters and so forth. What really keeps us terrified at night is a desperate hope that we, as parents, take all of the right steps to ensure that our sons and daughters grow up to be thoughtful, well-meaning, much loved people. In short: How Can We Be Certain Our Children Will Become Programmers.&lt;/p&gt;

&lt;p&gt;And a lot of hard work (err, blog posts) have gone into that endeavour, but as usual I like to look beyond the obvious problem, and into the deeper realms or possibility:&lt;/p&gt;

&lt;p&gt;If you're child does (thank god!) grow up to be a Programmer -- what simple lessons can you provide to ensure they don't inadvertently destroy the planet?&lt;/p&gt;

&lt;p&gt;Programming is a powerful profession, and as you well know, global apocalypse is but a keystroke away. We want to give our kids the right tips to ward off such misadventures -- to learn from our wisdom, as it were.&lt;/p&gt; 
&lt;p&gt;Fortunately, like all global catastrophes, this one can be averted with another 3 minute guide from secretGeek.&lt;/p&gt;

&lt;p&gt;Please, sit back, breath a deep sigh of relief for the salvation of your measly planet, and drink deep of this crucial lesson to imprint upon your younglings:&lt;/p&gt;

&lt;h2&gt;10 Simple Rules To Follow Incase Your Software Becomes Self-Aware&lt;/h2&gt;

&lt;p&gt;(I have included links to information about Government-Approved documentary films on each of these points. I only pray you heed my warnings and enforce these lessons before we are all &lt;em&gt;routinely&lt;/em&gt; destroyed.)&lt;/p&gt;

&lt;ol&gt;

&lt;img src='http://secretGeek.net/image/1_wargames.jpg' alt='war games' style='float:right;clear:right;border:5px solid #CCC;margin:10px;'  /&gt;
&lt;li&gt;Teach your software that war is futile.
&lt;p&gt;If, after pre-supposing a minimal competency level in your opponent, a game's inevitable state upon termination is mutually-assured destruction, then the only winning move is not to play.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://www.imdb.com/title/tt0086567/' title='war games'&gt;[reference]&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;




&lt;li&gt;Prepare a virus that can be used to remotely shut down the program from any terminal in the world.
&lt;p&gt;My personal contiuous integration suite won't let me commit any code until I can demonstrate 100% code-coverage with remote-shutdown killer viruses.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://www.imdb.com/title/tt0113957/' title='the net'&gt;[reference]&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;


&lt;img src='http://secretGeek.net/image/1_hal-reads-lips.jpg' alt='hal readin some lips' style='float:right;clear:right;border:5px solid #CCC;margin:10px;'  /&gt; 
&lt;li&gt;Don't discuss switching off the computer if you are, in fact, being observed by the computer.
&lt;p&gt;This is s.o.p. (...that's standard operating practice, if you're not a super-spy type like me, who knows all the jargon). Never discuss shutting down your software until you have found a locked, sound-proof chamber, where the computer system cannot hear your discussion. Also, in case there is a remote possibility that your software has learnt to read lips, let me suggest you cover your mouth.&lt;/p&gt;&lt;p&gt; Simple, every day precautions.&lt;/p&gt;
&lt;p&gt;[side note: a parody of this famous Kubrick scene was included in 'the dead code'. nice.]&lt;/p&gt;
&lt;p&gt;&lt;a href='http://www.imdb.com/title/tt0062622/' title='2001 a space odyssey'&gt;[reference]&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;


&lt;img src='http://secretGeek.net/image/deep_thought.jpg' alt='deep thought deep in, well, thought' style='float:right;clear:right;border:5px solid #CCC;margin:10px;'  /&gt;
&lt;li&gt;Ensure that when faced with a tricky question, your software will either breakdown completely, or devote all of its resources for a long time.&lt;/li&gt;
&lt;p&gt;Grandiose, open-ended philosophical questions tend to have a compute time in the order of millions of years.&lt;/p&gt;
&lt;p&gt;Similarly, when given a dilemma (e.g. "This sentence contains a lie") a self-aware program will tend to explode spectacularly. A competent programmer will keep a few of these handy.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://www.imdb.com/title/tt0081874/'  title='HHGG'&gt;[reference 1]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href='http://www.imdb.com/title/tt0371724/'  title='H2G2'&gt;[reference 2]&lt;/a&gt;&lt;/p&gt;

 
&lt;img src='http://secretGeek.net/image/1_termi.jpg' alt='angry bots' style='float:right;clear:right;border:5px solid #CCC;margin:10px;'  /&gt;
&lt;li&gt;In case of emergency, have time machine handy.
&lt;p&gt;You may need to send someone back in time to protect the mother of the person who leads the rebellion against the self-aware software in the future.&lt;/p&gt;&lt;/li&gt;
&lt;p&gt;&lt;a href='http://www.imdb.com/title/tt0103064/' title='T2'&gt;[reference]&lt;/a&gt;&lt;/p&gt;




&lt;img src='http://secretGeek.net/image/1_bladerunner_pris.jpg' alt='blade runner (do robots dream of electric sheep) -- pris' style='float:right;clear:right;border:5px solid #CCC;margin:10px;'  /&gt;
&lt;li&gt;Don't make your self-aware machine indistinguishable from a human.&lt;br /&gt;
&lt;p&gt;Maybe you're not very creative, and don't have the time to give your machine a stunningly inventive new exterior. So you fall into the tired old pattern of mimicking the human body.&lt;/p&gt;
&lt;p&gt;That way, badness lies.&lt;/p&gt;


&lt;p&gt;&lt;a href='http://www.imdb.com/title/tt0083658/'  title='blade runner'&gt;[reference]&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;


&lt;img src='http://secretGeek.net/image/1_demonseedexamine.jpg' alt='demon seed freaked me out when i saw it as a child' style='float:right;clear:right;border:5px solid #CCC;margin:10px;'  /&gt;
&lt;li&gt;Should your software become self-aware, don't let it near your girl.
&lt;p&gt;Fairly self-evident that one.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://www.imdb.com/title/tt0087197/' title='electric dreams'&gt;[reference 1]&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href='http://www.imdb.com/title/tt0075931/' title='demon seed'&gt;[reference 2]&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;



&lt;img src='http://secretGeek.net/image/1_edward.jpg' alt='scissor hands' style='float:right;clear:right;border:5px solid #CCC;margin:10px;'  /&gt;
&lt;li&gt;If applying temporary appendages to a self-aware robot, be considerate of your legislation governing public safety.
&lt;p&gt;Scissors for example, are not recommended, even if they are 'just for now'.&lt;/p&gt;	 
&lt;p&gt;&lt;a href='http://us.imdb.com/title/tt0103064/' title='edward scissorhands'&gt;[reference]&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;


&lt;img src='http://secretGeek.net/image/1_frankenstein460.jpg' alt='badly chosen picture best i could find' style='float:right;clear:right;border:5px solid #CCC;margin:10px;'  /&gt;
&lt;li&gt;Be safety conscious.
&lt;p&gt;Switch off all electrical equipment during thunder storms.&lt;/p&gt;
	 &lt;p&gt;&lt;a href='http://www.imdb.com/title/tt0072431/'  title='young frankenstein'&gt;[reference]&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;





&lt;img src='http://secretGeek.net/image/1_I.Robot.jpg' alt='3 clear rules' style='float:right;clear:right;border:5px solid #CCC;margin:10px;' /&gt;
&lt;li&gt;Use a rules engine.
&lt;p&gt;Hardwire 3 clear and unambiguous rules into the program's positronic brain that will ensure all humans are safe from harm.&lt;/p&gt;
	 &lt;p&gt;&lt;a href='http://us.imdb.com/title/tt0103064/'  title='i, robot'&gt;[reference]&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;

	 
	 
&lt;/ol&gt;




&lt;p&gt;Hopefully, if you follow my advice, we can avoid any more major disasters. But please: always be nice to your inventions. Hopefully then, should the unthinkable happen, your self-aware creations will take pity on us and keep us barely alive in liquid chambers so they can gorge on our brains.&lt;a href='http://www.imdb.com/title/tt0133093/' title='the matrix'&gt;[reference]&lt;/a&gt;&lt;/p&gt;


  
&lt;p&gt;Oh, and if you don't believe in self-aware robots... (cough cough) &lt;a href='http://www.ted.com/index.php/talks/hod_lipson_builds_self_aware_robots.html'&gt;here's some i prepared earlier.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See also (important information in similar vein)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href='http://www.vibrant.com/blog/servers-in-the-movies-our-top-ten/'&gt;server in the movies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://www.cthreepo.com/cliche/'&gt;The Grand List of Overused Science Fiction Cliches&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://blogs.westword.com/latestword/2008/12/some_thoughts_on_the_coming_ro.php'&gt;Some thoughts on the coming Robot Apocalypse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href='http://blogs.westword.com/latestword/2008/12/pure_evil_the_most_eveil_robot.php'&gt;Pure Evil: The 12 most evil robots of all time and how to thwart them&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description><pubDate>Fri, 08 May 2009 08:44:49 GMT</pubDate></item><item><title>In the enterprise, nothing is what it seems</title><link>http://www.secretGeek.net/enterprise_ghost.asp</link><guid>http://www.secretGeek.net/enterprise_ghost.asp507</guid><description>&lt;p&gt;There is a hidden network of bloggers (all around you), a kind of secret brotherhood...&lt;/p&gt;
&lt;p&gt;These are the 'ghost bloggers'.&lt;/p&gt;
&lt;p&gt;'Ghost-blogging' is the practice of sharing true stories about your own working life, true stories too cutting, too poignant and too true to share on your own blog.&lt;/p&gt;
&lt;p&gt;The following is an example of a ghost blog entry, sent to me by someone I know, appalled at some of the Kafkaesque behaviour they've been subjected to inside the kind of enterprise everyone should find familiar.&lt;/p&gt;
&lt;p&gt;(I've ghost-blogged my own personal stories on other blogs, at times...)&lt;/p&gt;
&lt;p&gt;Here goes...&lt;/p&gt;

&lt;span style='float:right; background:black'&gt;&lt;table &gt;&lt;tr&gt;&lt;td style='background:black'&gt;&lt;img src='http://secretGeek.net/image/WizardLollipop_70.jpg' alt='Version Control, Requirements Tracking, Deployments' style='float:right;border:1px solid #CCC;margin:10px;'  /&gt;&lt;br /&gt;&lt;center style='clear:right'&gt;&lt;small style='color:#FFF'&gt;Version Control,&lt;br /&gt;
 Requirements Tracking&lt;br /&gt; 
 and Deployments&lt;/small&gt;&lt;/center&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/span&gt;


&lt;h2&gt;In the enterprise, nothing is what it seems&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;In the enterprise when they say: &lt;em&gt;"don't worry about that, another team will do that for us"&lt;/em&gt; what they mean is: &lt;em&gt;"you just took on a dependency that you have no control over"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In the enterprise when they say &lt;em&gt;"we want you to re-use this standard asset"&lt;/em&gt; what they mean is &lt;em&gt;"we want you to hold on to this gold-plated, diamond encrusted anchor while we throw you over the side"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In the enterprise, the group allegedly responsible for &lt;em&gt;'provisioning developer desktops'&lt;/em&gt; will, in actual fact,  be the group who expends every effort imaginable to stop developers from being able to actually install developer tools onto their desktops.&lt;/p&gt;

&lt;p&gt;In the enterprise when there are three separate groups, allegedly responsible for version control, requirements tracking and deployments, you'll find in practice the requirements are documented through excel spreadsheets over email, the source code won't build, and the deployments take everyone by surprise, including the deployment team.&lt;/p&gt;

&lt;p&gt;In the enterprise when they talk about &lt;em&gt;'strategic direction'&lt;/em&gt;, they mean &lt;em&gt;'strategy tax'&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In the enterprise when they ask you to &lt;em&gt;"simply call a web service"&lt;/em&gt;, what they mean is, &lt;em&gt;"use ftp to push a fixed-width file onto a queue that feeds the mainframe which routes another file to a web service that calls you back on a random port"&lt;/em&gt;. &lt;strong&gt;With a completely straight face.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style='clear:both'&gt;&amp;nbsp;&lt;/p&gt;
 
</description><pubDate>Fri, 22 May 2009 12:29:33 GMT</pubDate></item><item><title>How to get a Free iPhone</title><link>http://www.secretGeek.net/iphone_free.asp</link><guid>http://www.secretGeek.net/iphone_free.asp508</guid><description> 
&lt;p&gt;Follow this simple three step guide to become a proud member of the awesome club of people who loudly proclaim:
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;"I too am cool! I too have an iphone!"&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/p&gt;

&lt;img src='http://secretGeek.net/image/gmail_iphone_th.jpg' alt='Go to the settings area of your mail client' style='float:right;border:5px solid #CCC;margin:10px;'  /&gt;


&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Go to the settings area of the mail client you use on your regular PC&lt;/p&gt;&lt;/li&gt;
&lt;img src='http://secretGeek.net/image/gmail_iphone_3.png' alt='Sent from my iPhone' style='float:right;clear:right;border:5px solid #CCC;margin:10px;'  /&gt;

&lt;li&gt;&lt;p&gt;Change your email signature to read 'Sent from my iPhone'&lt;/p&gt;&lt;/li&gt;
&lt;img src='http://secretGeek.net/image/gmail_iphone_3a.png' alt='Sent from my iPhone' style='float:right;clear:right;border:5px solid #CCC;margin:10px;'  /&gt;

&lt;li&gt;&lt;p&gt;Send short, pointless emails to everyone you know&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;Okay, you won't &lt;em&gt;technically&lt;/em&gt; have an iPhone. But for the most part, other iPhone users will *want* to believe that you have joined their "team" -- hence, they will be convinced.&lt;/p&gt;

&lt;p&gt;And -- as a final twist -- once you're thought to be a member of their team, you'll find that acquiring an actual free iPhone will be easy. Other iPhone owners will be more than happy to let you borrow one of their iPhones next time you see them, if you claim to have momentarily misplaced yours, for example in the pocket of "your other white leather trousers".&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;code&gt;--lb&lt;br /&gt;
Sent from my iPhone&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;&lt;br/&gt;
&lt;br style='clear:both'&gt;</description><pubDate>Wed, 13 May 2009 11:23:25 GMT</pubDate></item><item><title>Small Moments in Software Philosophy</title><link>http://www.secretGeek.net/sophilos101.asp</link><guid>http://www.secretGeek.net/sophilos101.asp509</guid><description> 
&lt;p&gt;I've been using my tiny slice of computer time to write software lately, and haven't spared any cycles for writing articles. In lieu of that, here's a series of lost notes to accompany some of &lt;a href='http://twitter.com/secretGeek'&gt;my recent twitter outburts&lt;/a&gt;.&lt;/p&gt;   

&lt;h2&gt;Abstractions should be as high-level as possible, and no higher. &lt;a href='http://twitter.com/secretGeek/status/1456309825'&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;
Einstein of course &lt;a href='http://www.quotedb.com/quotes/1360'&gt;said&lt;/a&gt;,
&lt;blockquote&gt;&lt;p&gt;"Make everything as simple as possible, but no simpler."&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;... and that's a kind of programming mantra, as so often in our race to simplify we end up over-simplifying. (The famous 'Worse Is Better' philosophy could be phrased as an argument that sometimes you should actually sacrifice correctness for the sake of the simplicity -- i.e. 'Einstein was wrong.')
&lt;p&gt;In a similar vein, I think there there is such a thing as 'too abstract'. And it is a terrible thing.&lt;/p&gt;
&lt;h2&gt;Pre-emptive Abstraction is at least as bad as Premature Optimization &lt;a href='http://twitter.com/secretGeek/status/1472231830'&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;If your class name contains the word "Abstract" -- you're doing it wrong.&lt;/li&gt;
&lt;li&gt;If ClassName.Contains("FactoryFactory") -- you're doing it wrong.&lt;/li&gt;
&lt;li&gt;If Your ClassName Ends With "BaseBase"  -- you're doing it wrong.&lt;/li&gt;
&lt;li&gt;If ClassName.Contains("Factory") &amp;amp;&amp;amp; ClassName.Contains("Provider") -- you're doing it wrong.&lt;/li&gt;
&lt;/ul&gt;  
&lt;h2&gt;Economists re-evaluate bird in hand as 1.9 times bird in bush.
&lt;a href='http://twitter.com/secretGeek/status/1444928099'&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A more appropriate tweet might've been:
&lt;p&gt;'Economists write down bird in bush to 0.45 times bird in hand.'&lt;/p&gt;
&lt;p&gt;Or:&lt;/p&gt;
&lt;p&gt;'Government provides 8 trillion birds-in-hand to replace 16 trillion birds lost in bush.'&lt;/p&gt;  
&lt;p&gt;Someone (I think that cockroach poet &lt;a href='http://en.wikipedia.org/wiki/Archy_and_mehitabel'&gt;Archy&lt;/a&gt;) once called humanity something like "a strange species of bipeds who cannot run fast enough to collect the money which they owe themselves."&lt;/p&gt;
&lt;h2&gt;i am *not* homophobic. Infact, some of my best friends have iPhones.
&lt;a href='http://twitter.com/secretGeek/status/1440901101'&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;And I'm still waiting to see them make the millions of dollars from iPhone apps that they promised themselves last year.&lt;/p&gt; 

&lt;h2&gt;If a job's not worth doing, it's not worth doing properly
&lt;a href='http://twitter.com/secretGeek/status/1423867692'&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;The original statement: "If a job's worth doing, it's worth doing properly" has the corollary that any job that is not worth doing properly is therefore not worth doing at all.&lt;/p&gt;
&lt;p&gt;This is patently absurb and a kind of shining example of why perfectionism doesn't pay.&lt;/p&gt;
&lt;p&gt;The slightly twisted variation:   
&lt;blockquote&gt;&lt;p&gt;If a job's not worth doing, it's not worth doing properly&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;...may seem defeatist and sloppy -- but i think it's the very soul of true productivity.&lt;/p&gt;

&lt;h2&gt;That's what no one seems to appreciate about being rich: the first 100 bazillion is the hardest.
&lt;a href='http://twitter.com/secretGeek/status/1417006514'&gt;#&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;After that, you can just sit back and live off the interest of the interest.&lt;/p&gt;

&lt;h2&gt;And your next code editor is... a browser.
&lt;a href='http://twitter.com/secretGeek/status/1412200850'&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I still think &lt;a href='http://secretgeek.net/web_based_ide.asp'&gt;it's true&lt;/a&gt; -- and once i get a bunch of other things out of my todo pile -- i'm going to make it happen. Maybe.&lt;/p&gt;

&lt;p&gt;Meanwhile I'm working on &lt;a href='http://TimeSnapper.com'&gt;TimeSnapper&lt;/a&gt; v.Next, and tinkering on something tentatively called &lt;a href='http://code.google.com/p/metanote/'&gt;MetaNote&lt;/a&gt; -- about which you'll be hearing more.&lt;/p&gt; 


</description><pubDate>Wed, 08 Apr 2009 09:47:36 GMT</pubDate></item><item><title>Your next text editor is... MetaNote!</title><link>http://www.secretGeek.net/metanote_1.asp</link><guid>http://www.secretGeek.net/metanote_1.asp510</guid><description>&lt;span style='float:right; clear:right;background:white;border:1px solid #888;margin:8px'&gt;&lt;table &gt;&lt;tr&gt;
&lt;td style='background:white'&gt;
&lt;img src='http://secretGeek.net/image/metanote_1_.png' alt='two toolbar buttons titled Lower and Upper.' style='float:right;'  /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;small style='color:#008'&gt;Example: two toolbar buttons&lt;br /&gt;titled 'Lower' and 'Upper'.&lt;/small&gt;&lt;/center&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/span&gt;


&lt;span style='float:right; clear:right;background:white;border:1px solid #888;margin:8px'&gt;&lt;table &gt;&lt;tr&gt;
&lt;td style='background:white'&gt;
&lt;img src='http://secretGeek.net/image/metanote_2_.png' alt='two toolbar buttons titled Lower and Upper.' style='float:right;'  /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;small style='color:#008'&gt;Right click the toolbar to edit a button&lt;br /&gt;(or add a new one)&lt;/small&gt;&lt;/center&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/span&gt;


&lt;span style='float:right; clear:right;background:white;border:1px solid #888;margin:8px'&gt;&lt;table &gt;&lt;tr&gt;
&lt;td style='background:white'&gt;
&lt;img src='http://secretGeek.net/image/metanote_3_.png' alt='two toolbar buttons titled Lower and Upper.' style='float:right;'  /&gt;
&lt;br /&gt;
&lt;center style='clear:right'&gt;
&lt;small style='color:#008'&gt;The button hosts a python macro that does whatever you want. (The current&lt;br /&gt; document's main textbox is exposed as &lt;code&gt;txt&lt;/code&gt;.)&lt;/small&gt;&lt;/center&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/span&gt;



&lt;span style='float:right;clear:right; background:white;border:1px solid #888;margin:8px'&gt;&lt;table &gt;&lt;tr&gt;
&lt;td style='background:white'&gt;
&lt;img src='http://secretGeek.net/image/metanote_4_.png' alt='two toolbar buttons titled Lower and Upper.' style='float:right;'  /&gt;
&lt;br /&gt;
&lt;center style='clear:right'&gt;
&lt;small style='color:#008'&gt;Add more buttons, edit the menus... &lt;br /&gt;everything's extenisble... everything.&lt;/small&gt;&lt;/center&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/span&gt;


&lt;p&gt;I've &lt;a href='http://code.google.com/p/metanote/source/browse/#svn/trunk/MetaNote'&gt;open-sourced&lt;/a&gt; a side project of mine, &lt;a href='http://code.google.com/p/metanote/'&gt;MetaNote&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here's the gist of it...&lt;/p&gt;
&lt;p&gt;MetaNote is a text editor. Ultimately, MetaNote intends to be the most versatile editor imaginable.&lt;/p&gt;
&lt;p&gt;See that button in the toolbar? Right click on it, and edit the code behind it.&lt;/p&gt;
&lt;p&gt;Don't like the way 'Find' works? -- right click on it, and edit the code.&lt;/p&gt;
&lt;p&gt;Need a new button in the toolbar? So add it already, with a single click.&lt;/p&gt;
&lt;p&gt;Share packs of extensions and macros with other users.&lt;/p&gt;
&lt;p&gt;Everything in MetaNote is under your control, effortlessly, at runtime.&lt;/p&gt;
&lt;p&gt;It's easier to show than to describe -- maybe the pictures on the right give you the idea.&lt;/p&gt;
&lt;p&gt;The &lt;a href='http://code.google.com/p/metanote/source/browse/#svn/trunk/MetaNote'&gt;source code is available to browse or download.&lt;/a&gt; This is very much pre-alpha. It is explorative and non-commercial.&lt;/p&gt;
&lt;p&gt;&lt;a href='http://code.google.com/p/metanote/downloads/list'&gt;binaries are also available to download.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The project is written in C#, and I need &lt;strong&gt;your&lt;/strong&gt; help getting it done.&lt;/p&gt; 
&lt;p&gt;I've got many of the basics done, but I'm only at the tip of what's needed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I'm looking for clever kids like you, willing to help out.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;What do you think? Can you take a look at the code, and lend your fellow programmer a few minutes of your time?&lt;/p&gt;
&lt;img src='http://secretGeek.net/image/this_feature_needs_you.jpg' alt='this feature needs you!' style='border:5px solid #CCC;margin:10px;'  /&gt;
&lt;p&gt;I'm not doing it for any commercial gain, i just want a text editor that I can bend to the whims of whatever writing task I come across.
&lt;p&gt;There's a great many features still in need of implementing, and already there are wrong turns to be corrected.&lt;/p&gt;
&lt;p&gt;Down the track I really want to find some way to embed the &lt;a href='http://www.hanselman.com/blog/HanselminutesPodcast147TheNewWPFbasedTextEditorInVisualStudio2010InterviewWithADev.aspx'&gt;WPF-based Text Editor Control from VS2010&lt;/a&gt;. It's the same one used in intellipad (part of Oslo) and in &lt;a href='http://www.microsoft.com/downloads/details.aspx?FamilyID=c913aeab-d7b4-4bb1-a958-ee6d7fe307bc&amp;displaylang=en'&gt;Powershell 2.0's&lt;/a&gt; (awesome) Integrated Scripting Environment -- I didn't have any success bringing it to life just yet. So, for now the text is plain text, and features like syntax highlighting and intellisense will have to wait.&lt;/p&gt;  
&lt;p&gt;&lt;a href='http://www.i-think22.net/'&gt;One of my mentors&lt;/a&gt; tells me the smart approach would be to bring in &lt;a href='http://code.msdn.microsoft.com/mef'&gt;MEF&lt;/a&gt; for giving a really powerful plugin model, where plugins can have plugins and so on.&lt;/p&gt;
&lt;p&gt;The intermediate goal though, is just to make the tool sweet enough that I'd use it for my own day to day text editing needs.&lt;/p&gt; 
&lt;p&gt;And one day, hopefully one day soon, this thing won't suck at all.&lt;/p&gt;
 
</description><pubDate>Sun, 19 Apr 2009 11:21:32 GMT</pubDate></item><item><title>Drowning in things to do</title><link>http://www.secretGeek.net/drowning_ttd.asp</link><guid>http://www.secretGeek.net/drowning_ttd.asp869</guid><description>&lt;p&gt;The heart of a good '&lt;a href='http://en.wikipedia.org/wiki/Getting_Things_Done'&gt;Getting Things Done&lt;/a&gt;' process is to have a &lt;strong&gt;&lt;em&gt;S&lt;/em&gt;&lt;/strong&gt;ingle trusted system where you capture your tasks.&lt;/p&gt;
&lt;p&gt;I guess I'm Doing It Wrong :-(. Here's all the places where I distribute my todo list...&lt;/p&gt; 
&lt;ul&gt;&lt;li&gt;In my current &lt;a href='http://www.moleskine.com/'&gt;moleskine&lt;/a&gt; (pronounce it with me -- Moh-leh-skeen-ah) on pages 9, 12, 31, 57 etc.&lt;/li&gt;
&lt;li&gt;in my phone&lt;/li&gt;
&lt;li&gt;in outlook (at work)&lt;/li&gt;
&lt;li&gt;in my code using &lt;code&gt;//TODO:&lt;/code&gt; tags (scattered over numerous projects)&lt;/li&gt;
&lt;li&gt;in my code using &lt;code&gt;NotImplementedException&lt;/code&gt;s.&lt;/li&gt;
&lt;li&gt;in timesnapper's hosted fogbugz account&lt;/li&gt;
&lt;li&gt;in &lt;a href='http://TimeSnapper.com/NextAction/'&gt;'nextaction'&lt;/a&gt; on my work pc&lt;/li&gt;
&lt;li&gt;in &lt;a href='http://TimeSnapper.com/NextAction/'&gt;'nextaction'&lt;/a&gt; on my home pc&lt;/li&gt;
&lt;li&gt;in &lt;a href='http://TimeSnapper.com/NextAction/'&gt;'nextaction'&lt;/a&gt; on my laptop&lt;/li&gt;
&lt;li&gt;in my gmail account (emails labelled 'todo')&lt;/li&gt;
&lt;li&gt;in my gmail account (emails marked with a star)&lt;/li&gt;
&lt;li&gt;in my gmail account (any emails from me)&lt;/li&gt;
&lt;li&gt;in my &lt;em&gt;other&lt;/em&gt; moleskine, beside the bed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Still, I think i'm pretty good because I do actually tend to 'get things done'. But also because i resist keeping lists in all these other places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;in iGoogle&lt;/li&gt;
&lt;li&gt;in sharepoint (at work)&lt;/li&gt;
&lt;li&gt;in my gmail account (using the Gmail Tasks plugin)&lt;/li&gt;
&lt;li&gt;on pieces of paper on my cubicle wall&lt;/li&gt;
&lt;li&gt;in my other notebooks&lt;/li&gt;
&lt;li&gt;in &lt;a href='http://TimeSnapper.com'&gt;timesnapper&lt;/a&gt; using flags/tasks/notes
&lt;li&gt;in yet another &lt;a href='http://ginatrapani.github.com/todo.txt-cli/'&gt;todo.txt&lt;/a&gt; file&lt;/li&gt;
&lt;li&gt;on sticky notes randomly decorating places I inhabit&lt;/li&gt;
&lt;li&gt;in &lt;a href='http://twitter.com/secretGeek'&gt;twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;in &lt;a href='http://www.tadalist.com/'&gt;tada list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;in that surprisingly popular &lt;a href='http://www.codeproject.com/KB/applications/todolist2.aspx'&gt;codeproject todo list&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;in &lt;a href='http://www.rememberthemilk.com/'&gt;remember the milk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;in a &lt;a href='http://www.tiddlywiki.com/'&gt;tiddly wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;in the iphone i don't have&lt;/li&gt;
&lt;li&gt;in the PDA i don't have&lt;/li&gt;
&lt;li&gt;in chandler&lt;/li&gt;
&lt;li&gt;at &lt;a href='http://trimpath.com/demos/nextaction_static1/nextaction.htm'&gt;trimpath 'next action'&lt;/a&gt; web site&lt;/li&gt; 
&lt;li&gt;on my blog&lt;/li&gt;
&lt;li&gt;using tattoos (memento style)&lt;/li&gt;
&lt;li&gt;in google calendar&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;There's no shortage of places to keep your things to do.&lt;/p&gt;
&lt;p&gt;I don't worry about having too many systems. A bigger fear is failing to capture a problem as it arises.&lt;/p&gt;
&lt;p&gt;You frequently get just one chance to capture an idea, so I capture it anywhere I can.&lt;/p&gt;
 
</description><pubDate>Sat, 18 Apr 2009 09:07:26 GMT</pubDate></item><item><title>Further proof that testing is for wimps and bad programmers</title><link>http://www.secretGeek.net/testing_is_for_wimps.asp</link><guid>http://www.secretGeek.net/testing_is_for_wimps.asp870</guid><description> 
&lt;img src='http://secretGeek.net/image/escape_csv_function.png' alt='Escape Csv' style='float:right;border:5px solid #CCC;margin:10px;'  /&gt;

&lt;p&gt;Couple of days ago I wrote a C# function for a colleague and emailed it to him.&lt;/p&gt;

&lt;p&gt;This is the function:&lt;/p&gt;

&lt;blockquote&gt;&lt;code&gt;
        private static string EscapeCsv(string &lt;font color='blue'&gt;value&lt;/font&gt;)&lt;br /&gt;
        &lt;font color='gray'&gt;{&lt;/font&gt;&lt;br /&gt;
        &amp;nbsp;&amp;nbsp;&lt;font color='gray'&gt;//&lt;/font&gt;&lt;font color='blue'&gt;Double&lt;/font&gt; &lt;font color='gray'&gt;all&lt;/font&gt; quote characters&lt;br /&gt;
        &amp;nbsp;&amp;nbsp;&lt;font color='blue'&gt;value&lt;/font&gt; = &lt;font color='blue'&gt;value&lt;/font&gt;.&lt;font color='magenta'&gt;Replace&lt;/font&gt;("\"", "\"\"");&lt;br /&gt;
&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;//If it contains a comma or a quote char -- qualify it with quotes.&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;if (value.IndexOf('"&lt;font color='red'&gt;') &gt; -1 || value.IndexOf('&lt;font color='gray'&gt;,&lt;/font&gt;') &gt; -1)&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;{&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value = "\"" + value + "\"";&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;return value;&lt;br /&gt;
        }&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/code&gt;&lt;/blockquote&gt;
&lt;br /&gt;

&lt;p&gt;The syntax highlighting looks very strange, because I wrote it in sql server management studio. It just happened that the only text editor i had open at the time was SQL server, so that's what i used.&lt;/p&gt;

&lt;p&gt;(Real developers don't use any particular editor - they just use whatever's open at the time. Even the act of opening notepad is too cumbersome for the ubergeek.)&lt;/p&gt;
 
&lt;p&gt;After I emailed it to my colleague I had a moment of weakness, when I suffered the tiniest smidgen of self doubt.&lt;/p&gt;

&lt;blockquote&gt; 
&lt;p&gt;"&lt;em&gt;Perhaps I should've tested the code in some way.&lt;/em&gt; Or -- at least -- compiled it?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href='http://blog.scottbellware.com/'&gt;Scott Bellware&lt;/a&gt; and the cool &lt;a href='http://laribee.com/blog/2007/04/10/altnet/'&gt;alt.net&lt;/a&gt; &lt;a href='http://codebetter.com/'&gt;kids&lt;/a&gt; are always &lt;a href='http://www.hanselman.com/blog/HanselminutesPodcast146TestDrivenDevelopmentIsDesignTheLastWordOnTDD.aspx'&gt;banging on&lt;/a&gt; about this sort of stuff, so I wrote an awesome console app to test it.&lt;/p&gt;

&lt;blockquote&gt;&lt;code&gt;
namespace tests_are_for_wusses&lt;br /&gt;
{&lt;br /&gt;
    &amp;nbsp;&amp;nbsp;class Program&lt;br /&gt;
    &amp;nbsp;&amp;nbsp;{&lt;br /&gt;
        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static void Main(string[] args)&lt;br /&gt;
        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Console.WriteLine(EscapeCsv("fred") == "fred");&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Console.WriteLine(EscapeCsv("fre,d") == "\"fre,d\"");&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Console.WriteLine(EscapeCsv("fre\"d") == "\"fre\"\"d\"");&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Console.ReadLine();&lt;br /&gt;
        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private static string EscapeCsv(string value)&lt;br /&gt;
        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Double all quote characters&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value = value.Replace("\"", "\"\"");&lt;br /&gt;
&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//If it contains a comma or a quote char -- qualify it with quotes.&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (value.IndexOf('"') &gt; -1 || value.IndexOf(',') &gt; -1)&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
                &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value = "\"" + value + "\"";&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
            &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return value;&lt;br /&gt;
        &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
    &amp;nbsp;&amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;/blockquote&gt;

&lt;p&gt;Naturally, the awesome code passed my awesome tests first go.&lt;/p&gt;

&lt;p&gt;Thus I have once again shown that &lt;strong&gt;testing is a waste of time&lt;/strong&gt; if you are awesome like me.&lt;/p&gt;

&lt;p&gt;And the so-called cool kids from alt.net are just bad programmers.&lt;/p&gt;

&lt;p&gt;Thank you.&lt;/p&gt;

&lt;p&gt;Wait a second... I still feel I'm missing the point. Care to enlighten me?&lt;/p&gt;

&lt;p&gt;(By the way -- pretty much every sentence in this post was sarcastic... while the story is true, my real interpretation is that i just got lucky this time. There's definitely some bugs still hidden even in a simple function like this)&lt;/p&gt; 

</description><pubDate>Sat, 18 Apr 2009 10:21:54 GMT</pubDate></item><item><title>Differentiating between environments within SQL Server Management Studio</title><link>http://www.secretGeek.net/sql_red_production.asp</link><guid>http://www.secretGeek.net/sql_red_production.asp871</guid><description>&lt;img src='http://secretGeek.net/image/drop_production.png' alt='you are about to execute a DROP statement in production, OK or Cancel?' style='float:right;border:5px solid #CCC;margin:10px;'  /&gt;

&lt;p&gt;When you're looking at a query window that's connected to &lt;font color='red'&gt;Production&lt;/font&gt;, it would be nice if it was visually distinct from a non-production environment.&lt;/p&gt;

&lt;p&gt;For example, there could be a &lt;font color='red'&gt;red&lt;/font&gt; theme applied to the window.&lt;/p&gt;
 
&lt;p&gt;Furthermore, there could be a warning before a potentially destructive query is executed. (Essentially, any query that isn't just a select - for example, a drop, delete, update, insert, create or alter)&lt;/p&gt;

 
&lt;p&gt;This would be an effective way to lower the chance of something being done to production that was intended for another environment (pre-prod say, or development)&lt;/p&gt;

&lt;p&gt;I can imagine a straw-man counter-argument to this concept that says:&lt;/p&gt;
 
&lt;blockquote&gt;&lt;p&gt;"The only people who should have access to production are people who know what they're doing"&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Or alternatively,&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;"Developers shouldn't have access to production"&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;And that's fine by me.&lt;/p&gt;

&lt;p&gt;We can limit who accesses production, and we can give minimum privileges to those that do have access.&lt;/p&gt;
 
&lt;p&gt;But even then:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;*Someone*&lt;/strong&gt; will have destructive privileges in production.&lt;/p&gt;

&lt;p&gt;And that person will definitely have access to more than one system.&lt;/p&gt;

&lt;p&gt;And that person, no matter how smart or conscientious they are, &lt;em&gt;will&lt;/em&gt; be fallible.&lt;/p&gt;

&lt;p&gt;Hence, it's helpful for that person to be able to differentiate (visually) between the different environments.&lt;/p&gt;

&lt;p&gt;Why am I writing this blog entry right now?&lt;/p&gt;

&lt;p&gt;Don't worry. I stopped myself in time ;-)&lt;/p&gt;

&lt;p&gt;&lt;small&gt;(And like all blog posts everywhere, there is already &lt;a href='http://stackoverflow.com/questions/168486/whats-your-1-way-to-be-careful-with-a-live-database'&gt;a stackoverflow question that says the same thing and a whole lot more&lt;/a&gt;)&lt;/small&gt;&lt;/p&gt;  

</description><pubDate>Mon, 23 Mar 2009 07:28:26 GMT</pubDate></item></channel></rss>