<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>The Wit and Ramblings of David Giard</title>
  <link rel="alternate" type="text/html" href="http://www.davidgiard.com/" />
  <link rel="self" href="http://www.davidgiard.com/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2012-05-17T08:54:48.3972669-07:00</updated>
  <author>
    <name>David Giard</name>
  </author>
  <subtitle>Demanding rigidly defined areas of doubt and uncertainty</subtitle>
  <id>http://www.davidgiard.com/</id>
  <generator uri="http://www.dasblog.net" version="2.0.7180.0">DasBlog</generator>
  <entry>
    <title>GANG10: Godfrey Nolan on Executable Requirements or BDD in .NET</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/05/17/GANG10GodfreyNolanOnExecutableRequirementsOrBDDInNET.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,3925b7dd-a3a7-4a52-b30c-9c270c9076bf.aspx</id>
    <published>2012-05-17T08:54:00-07:00</published>
    <updated>2012-05-17T08:54:48.3972669-07:00</updated>
    <category term=".Net" label=".Net" scheme="http://www.davidgiard.com/CategoryView,category,.Net.aspx" />
    <category term="Agile" label="Agile" scheme="http://www.davidgiard.com/CategoryView,category,Agile.aspx" />
    <category term="ALM" label="ALM" scheme="http://www.davidgiard.com/CategoryView,category,ALM.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In October, the <a href="http://www.davidgiard.com/ct.ashx?id=3bcaeb14-1ba6-4bab-a062-2bf2b784ea6c&amp;url=http%3a%2f%2fmigang.org%2fHome.aspx">Great
Lakes Area .NET User Group</a> (GANG) celebrated 10 years this past October with an
all-day event. Here is Godfrey Nolan’s presentation on <em>Executable Requirements
or BDD in .NET</em>. 
</p>
        <!--[if IE]><object width="437" height="370" id="viddlerOuter-e3640ede" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="//www.viddler.com/player/e3640ede/"><param name="allowScriptAccess" value="always"><param name="allowNetworking" value="all"><param name="allowFullScreen" value="true"><param name="flashVars" value="f=1&openURL=44181151&autoplay=f&loop=0&nologo=0&hd=0"><object id="viddlerInner-e3640ede"><video id="viddlerVideo-e3640ede" src="//www.viddler.com/file/e3640ede/html5mobile?openURL=44181151" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/e3640ede/" controls="controls" x-webkit-airplay="allow"></video></object></object><![endif]-->
        <!--[if !IE]> <!-->
        <object width="437" height="370" id="viddlerOuter-e3640ede" type="application/x-shockwave-flash" data="//www.viddler.com/player/e3640ede/">
          <param name="movie" value="//www.viddler.com/player/e3640ede/" />
          <param name="allowScriptAccess" value="always" />
          <param name="allowNetworking" value="all" />
          <param name="allowFullScreen" value="true" />
          <param name="flashVars" value="f=1&amp;openURL=44181151&amp;autoplay=f&amp;loop=0&amp;nologo=0&amp;hd=0" />
          <object id="viddlerInner-e3640ede">
            <video id="viddlerVideo-e3640ede" src="//www.viddler.com/file/e3640ede/html5mobile?openURL=44181151" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/e3640ede/" controls="controls" x-webkit-airplay="allow">
            </video>
          </object>
        </object>
        <!--<![endif]-->
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=3925b7dd-a3a7-4a52-b30c-9c270c9076bf" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Tracking Thread History in SQL Server 2010</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/05/16/TrackingThreadHistoryInSQLServer2010.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,f52289a1-ad2c-46e0-b14d-5c84ccc438ca.aspx</id>
    <published>2012-05-16T07:05:00-07:00</published>
    <updated>2012-05-15T11:05:25.8593155-07:00</updated>
    <category term="SQL Server" label="SQL Server" scheme="http://www.davidgiard.com/CategoryView,category,SQL%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The SQL Server master database contains many dynamic views that contain information
about the current state of the SQL Server. One such view is <em>dm_os_workers</em>,
which lists all active threads run by SQL Server and information about each thread.
Of particular interest are the error columns: 
<br />
One or more of the following bit columns will return 1 if there is anything is going
wrong with a thread:
</p>
        <ul>
          <li>
is_sick 
</li>
          <li>
is_in_cc_exception 
</li>
          <li>
is_fatal_exception 
</li>
          <li>
is_inside_catch 
</li>
        </ul>
        <p>
One limitation of this view is that it does not retain any history. If you want to
keep a history of threads, you can create a Database to hold that history and the
following SQL to copy the results of <em>dm_os_workers </em>to a table in that database.
The following SQL copies the dm_os_workers view results to the <em>dbo.ThreadsHistory</em> table
in the Instrumentation database.
</p>
        <pre class="csharpcode">
          <span class="kwrd">IF</span>
          <span class="kwrd">NOT</span>
          <span class="kwrd">EXISTS</span> (<span class="kwrd">SELECT</span> * <span class="kwrd">FROM</span> Instrumentation.sys.objects <span class="kwrd">WHERE</span> object_id
= OBJECT_ID(N<span class="str">'[Instrumentation].[dbo].[ThreadsHistory]'</span>) <span class="kwrd">AND</span> type <span class="kwrd">IN</span> (N<span class="str">'U'</span>)) <span class="kwrd">BEGIN</span><span class="kwrd">SELECT</span> GETDATE() <span class="kwrd">AS</span> TimeLogged,
worker_address, status, is_preemptive, is_fiber, is_sick, is_in_cc_exception, is_fatal_exception,
is_inside_catch, is_in_polling_io_completion_routine, context_switch_count, pending_io_count,
pending_io_byte_count, pending_io_byte_average, wait_started_ms_ticks, wait_resumed_ms_ticks,
task_bound_ms_ticks, worker_created_ms_ticks, exception_num, exception_severity, exception_address,
locale, affinity, <span class="kwrd">state</span>, start_quantum, end_quantum, last_wait_type,
return_code, quantum_used, max_quantum, boost_count, tasks_processed_count, fiber_address,
task_address, memory_object_address, thread_address, signal_worker_address, scheduler_address,
processor_group <span class="kwrd">INTO</span> [Instrumentation].[dbo].[ThreadsHistory] <span class="kwrd">FROM</span> sys.dm_os_workers <span class="kwrd">WHERE</span> 1=0 <span class="kwrd">END</span><span class="kwrd">DECLARE</span> @TimeNow <span class="kwrd">AS</span> DATETIME <span class="kwrd">SELECT</span> @TimeNow
= GETDATE() INSERT <span class="kwrd">INTO</span> Instrumentation.dbo.ThreadsHistory
( TimeLogged, worker_address, status, is_preemptive, is_fiber, is_sick, is_in_cc_exception,
is_fatal_exception, is_inside_catch, is_in_polling_io_completion_routine, context_switch_count,
pending_io_count, pending_io_byte_count, pending_io_byte_average, wait_started_ms_ticks,
wait_resumed_ms_ticks, task_bound_ms_ticks, worker_created_ms_ticks, exception_num,
exception_severity, exception_address, locale, affinity, <span class="kwrd">state</span>,
start_quantum, end_quantum, last_wait_type, return_code, quantum_used, max_quantum,
boost_count, tasks_processed_count, fiber_address, task_address, memory_object_address,
thread_address, signal_worker_address, scheduler_address, processor_group ) ( <span class="kwrd">SELECT</span> @TimeNow,
worker_address, status, is_preemptive, is_fiber, is_sick, is_in_cc_exception, is_fatal_exception,
is_inside_catch, is_in_polling_io_completion_routine, context_switch_count, pending_io_count,
pending_io_byte_count, pending_io_byte_average, wait_started_ms_ticks, wait_resumed_ms_ticks,
task_bound_ms_ticks, worker_created_ms_ticks, exception_num, exception_severity, exception_address,
locale, affinity, <span class="kwrd">state</span>, start_quantum, end_quantum, last_wait_type,
return_code, quantum_used, max_quantum, boost_count, tasks_processed_count, fiber_address,
task_address, memory_object_address, thread_address, signal_worker_address, scheduler_address,
processor_group <span class="kwrd">FROM</span> sys.dm_os_workers )</pre>
        <style type="text/css">

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
You can use SQL Agent to schedule a job that runs this every 60 seconds (or however
frequently you want) to keep a history of the threads being generated by SQL. This
history can tell you if threads are generating exception and if thread counts are
increasing. 
<br /><hr /><font size="1">Steve Latsch contributed to this article.</font><img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=f52289a1-ad2c-46e0-b14d-5c84ccc438ca" /></div>
    </content>
  </entry>
  <entry>
    <title>GANG10: Richard Hale Shaw on Programming in the Zone</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/05/15/GANG10RichardHaleShawOnProgrammingInTheZone.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,3bcaeb14-1ba6-4bab-a062-2bf2b784ea6c.aspx</id>
    <published>2012-05-15T07:43:00-07:00</published>
    <updated>2012-05-15T03:45:11.2411731-07:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
In October, the <a href="http://migang.org/Home.aspx" target="_blank">Great Lakes
Area .NET User Group</a> (GANG) celebrated 10 years this past October with an all-day
event. Here is Richard Hale Shaw’s presentation from that meeting, in which he helps
developers better get into “the zone”, where they can write code more efficiently.
</p>
        <!--[if IE]><object width="437" height="370" id="viddlerOuter-4cbe7393" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="//www.viddler.com/player/4cbe7393/"><param name="allowScriptAccess" value="always"><param name="allowNetworking" value="all"><param name="allowFullScreen" value="true"><param name="flashVars" value="f=1&openURL=95644550&autoplay=f&loop=0&nologo=0&hd=0"><object id="viddlerInner-4cbe7393"><video id="viddlerVideo-4cbe7393" src="//www.viddler.com/file/4cbe7393/html5mobile?openURL=95644550" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/4cbe7393/" controls="controls" x-webkit-airplay="allow"></video></object></object><![endif]-->
        <!--[if !IE]> <!-->
        <object width="437" height="370" id="viddlerOuter-4cbe7393" type="application/x-shockwave-flash" data="//www.viddler.com/player/4cbe7393/">
          <param name="movie" value="//www.viddler.com/player/4cbe7393/" />
          <param name="allowScriptAccess" value="always" />
          <param name="allowNetworking" value="all" />
          <param name="allowFullScreen" value="true" />
          <param name="flashVars" value="f=1&amp;openURL=95644550&amp;autoplay=f&amp;loop=0&amp;nologo=0&amp;hd=0" />
          <object id="viddlerInner-4cbe7393">
            <video id="viddlerVideo-4cbe7393" src="//www.viddler.com/file/4cbe7393/html5mobile?openURL=95644550" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/4cbe7393/" controls="controls" x-webkit-airplay="allow">
            </video>
          </object>
        </object>
        <!--<![endif]-->
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=3bcaeb14-1ba6-4bab-a062-2bf2b784ea6c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Sarah Dutkiewicz on Powershell</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/05/14/SarahDutkiewiczOnPowershell.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,5191ad31-b96f-40fc-afe6-4d003af0aa23.aspx</id>
    <published>2012-05-14T10:27:00-07:00</published>
    <updated>2012-05-15T03:27:10.9753557-07:00</updated>
    <category term="Technology and Friends" label="Technology and Friends" scheme="http://www.davidgiard.com/CategoryView,category,Technology%2Band%2BFriends.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img border="0" src="http://www.davidgiard.com/content/binary/TechnologyAndFriends.gif" />
        </p>
        <p>
          <strong>Episode 212</strong>
        </p>
        <p>
          <a href="http://technologyandfriends.com/SubText/archive/2012/05/14/tf212.aspx" target="_blank">Sarah
Dutkiewicz on Powershell</a>
        </p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=5191ad31-b96f-40fc-afe6-4d003af0aa23" />
      </div>
    </content>
  </entry>
  <entry>
    <title>GANG10: Darrell Hawley on A Tale of Project Management</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/05/13/GANG10DarrellHawleyOnATaleOfProjectManagement.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,b996f779-be45-472a-8851-1fbd5352f28a.aspx</id>
    <published>2012-05-13T07:36:00-07:00</published>
    <updated>2012-05-12T22:36:27.6071973-07:00</updated>
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here is Darrell Hawley's presentation at GANG10, the October 1 event celebrating 10
years of the Great Lakes Area .NET User Group. Darell tells a parable describing how
projects can be run right or wrong. 
</p>
        <!--[if IE]><object width="437" height="370" id="viddlerOuter-c1d4724e" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="//www.viddler.com/player/c1d4724e/"><param name="allowScriptAccess" value="always"><param name="allowNetworking" value="all"><param name="allowFullScreen" value="true"><param name="flashVars" value="f=1&openURL=87289995&autoplay=f&loop=0&nologo=0&hd=0"><object id="viddlerInner-c1d4724e"><video id="viddlerVideo-c1d4724e" src="//www.viddler.com/file/c1d4724e/html5mobile?openURL=87289995" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/c1d4724e/" controls="controls" x-webkit-airplay="allow"></video></object></object><![endif]-->
        <!--[if !IE]> <!-->
        <object width="437" height="370" id="viddlerOuter-c1d4724e" type="application/x-shockwave-flash" data="//www.viddler.com/player/c1d4724e/">
          <param name="movie" value="//www.viddler.com/player/c1d4724e/" />
          <param name="allowScriptAccess" value="always" />
          <param name="allowNetworking" value="all" />
          <param name="allowFullScreen" value="true" />
          <param name="flashVars" value="f=1&amp;openURL=87289995&amp;autoplay=f&amp;loop=0&amp;nologo=0&amp;hd=0" />
          <object id="viddlerInner-c1d4724e">
            <video id="viddlerVideo-c1d4724e" src="//www.viddler.com/file/c1d4724e/html5mobile?openURL=87289995" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/c1d4724e/" controls="controls" x-webkit-airplay="allow">
            </video>
          </object>
        </object>
        <!--<![endif]-->
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=b996f779-be45-472a-8851-1fbd5352f28a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>GANG10: Bill Wagner on Async</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/05/12/GANG10BillWagnerOnAsync.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,1dfe45ab-b455-40cb-9274-37db7718d3e3.aspx</id>
    <published>2012-05-12T07:39:00-07:00</published>
    <updated>2012-05-11T08:39:53.7513037-07:00</updated>
    <category term=".Net" label=".Net" scheme="http://www.davidgiard.com/CategoryView,category,.Net.aspx" />
    <category term="C#" label="C#" scheme="http://www.davidgiard.com/CategoryView,category,C%23.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here is Bill Wagner's presentation at GANG10, the October 1 event celebrating 10 years
of the Great Lakes Area .NET User Group. Bill talks about asynchronous programming,
including the new features coming in C# 5. 
</p>
        <!--[if IE]><object width="437" height="370" id="viddlerOuter-b3e6ec23" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="//www.viddler.com/player/b3e6ec23/"><param name="allowScriptAccess" value="always"><param name="allowNetworking" value="all"><param name="allowFullScreen" value="true"><param name="flashVars" value="f=1&openURL=58235863&autoplay=f&loop=0&nologo=0&hd=0"><object id="viddlerInner-b3e6ec23"><video id="viddlerVideo-b3e6ec23" src="//www.viddler.com/file/b3e6ec23/html5mobile?openURL=58235863" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/b3e6ec23/" controls="controls" x-webkit-airplay="allow"></video></object></object><![endif]-->
        <!--[if !IE]> <!-->
        <object width="437" height="370" id="viddlerOuter-b3e6ec23" type="application/x-shockwave-flash" data="//www.viddler.com/player/b3e6ec23/">
          <param name="movie" value="//www.viddler.com/player/b3e6ec23/" />
          <param name="allowScriptAccess" value="always" />
          <param name="allowNetworking" value="all" />
          <param name="allowFullScreen" value="true" />
          <param name="flashVars" value="f=1&amp;openURL=58235863&amp;autoplay=f&amp;loop=0&amp;nologo=0&amp;hd=0" />
          <object id="viddlerInner-b3e6ec23">
            <video id="viddlerVideo-b3e6ec23" src="//www.viddler.com/file/b3e6ec23/html5mobile?openURL=58235863" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/b3e6ec23/" controls="controls" x-webkit-airplay="allow">
            </video>
          </object>
        </object>
        <!--<![endif]-->
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=1dfe45ab-b455-40cb-9274-37db7718d3e3" />
      </div>
    </content>
  </entry>
  <entry>
    <title>GANG10 Keynote: Leon Gersing on You!</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/05/11/GANG10KeynoteLeonGersingOnYou.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,f443ef8c-632d-41bc-a9d2-fa226eb3abc6.aspx</id>
    <published>2012-05-11T08:39:00-07:00</published>
    <updated>2012-05-11T04:39:52.2516316-07:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The Great Lakes Area .NET User Group celebrated 10 years this past October with an
all-day event, kicked off by a Leon Gersing Keynote. Here is a video of that keynote
</p>
        <!--[if IE]><object width="437" height="370" id="viddlerOuter-475571a7" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="//www.viddler.com/player/475571a7/"><param name="allowScriptAccess" value="always"><param name="allowNetworking" value="all"><param name="allowFullScreen" value="true"><param name="flashVars" value="f=1&openURL=28567661&autoplay=f&loop=0&nologo=0&hd=0"><object id="viddlerInner-475571a7"><video id="viddlerVideo-475571a7" src="//www.viddler.com/file/475571a7/html5mobile?openURL=28567661" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/475571a7/" controls="controls" x-webkit-airplay="allow"></video></object></object><![endif]-->
        <!--[if !IE]> <!-->
        <object width="437" height="370" id="viddlerOuter-475571a7" type="application/x-shockwave-flash" data="//www.viddler.com/player/475571a7/">
          <param name="movie" value="//www.viddler.com/player/475571a7/" />
          <param name="allowScriptAccess" value="always" />
          <param name="allowNetworking" value="all" />
          <param name="allowFullScreen" value="true" />
          <param name="flashVars" value="f=1&amp;openURL=28567661&amp;autoplay=f&amp;loop=0&amp;nologo=0&amp;hd=0" />
          <object id="viddlerInner-475571a7">
            <video id="viddlerVideo-475571a7" src="//www.viddler.com/file/475571a7/html5mobile?openURL=28567661" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/475571a7/" controls="controls" x-webkit-airplay="allow">
            </video>
          </object>
        </object>
        <!--<![endif]-->
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=f443ef8c-632d-41bc-a9d2-fa226eb3abc6" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Jennifer Marsman on the Windows 8 App Store</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/05/07/JenniferMarsmanOnTheWindows8AppStore.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,aaddac35-1db1-438b-b731-a247079f0d3f.aspx</id>
    <published>2012-05-07T08:19:00-07:00</published>
    <updated>2012-05-10T11:20:04.1882746-07:00</updated>
    <category term="Metro" label="Metro" scheme="http://www.davidgiard.com/CategoryView,category,Metro.aspx" />
    <category term="Technology and Friends" label="Technology and Friends" scheme="http://www.davidgiard.com/CategoryView,category,Technology%2Band%2BFriends.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <category term="Windows" label="Windows" scheme="http://www.davidgiard.com/CategoryView,category,Windows.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img border="0" src="http://www.davidgiard.com/content/binary/TechnologyAndFriends.gif" />
        </p>
        <p>
          <strong>Episode 211</strong>
        </p>
        <p>
          <a href="http://technologyandfriends.com/SubText/archive/2012/05/07/tf211.aspx" target="_blank">Jennifer
Marsman on the Windows 8 App Store</a>
        </p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=aaddac35-1db1-438b-b731-a247079f0d3f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>FizzBuzz Kata</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/05/03/FizzBuzzKata.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,597753ce-edfb-4d8d-b6ee-4f07cbc9d7c3.aspx</id>
    <published>2012-05-03T16:40:00-07:00</published>
    <updated>2012-05-03T12:27:54.6773358-07:00</updated>
    <category term="C#" label="C#" scheme="http://www.davidgiard.com/CategoryView,category,C%23.aspx" />
    <category term="JavaScript" label="JavaScript" scheme="http://www.davidgiard.com/CategoryView,category,JavaScript.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
At Codeslingers last night, someone pulled out some coding Katas. For those who don’t
know, a Kata is a coding exercise that is designed to practice your programming skills,
rather than to solve a particular business problem. I was handed the classic “FizzBuzz”
problem. The assignment:
</p>
        <p>
Create a function that will print the integers from 1 to 100 with the following exceptions:
</p>
        <ul>
          <li>
If a number is divisible by 3, print the word “Fizz” in place of that number.</li>
          <li>
If a number is divisible by 5, print the word “Buzz” in place of that number.</li>
          <li>
If a number is divisible by both 3 and 5, print the word “FizzBuzz” in place of that
number.</li>
        </ul>
        <p>
The output should look something like the following:
</p>
        <pre class="csharpcode">1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16</pre>
        <p>
I started with a C# console application because that is the language with which I
am most familiar. It was able to finish the following in under 2 minutes. It took
me 5 minutes to write the unit tests.
</p>
        <pre class="csharpcode">
          <span class="kwrd">class</span> Program { <span class="kwrd">static</span><span class="kwrd">void</span> Main(<span class="kwrd">string</span>[]
args) { <span class="kwrd">for</span> (<span class="kwrd">int</span> i = 1; i &lt;
100; i++) { var p = FizzBuzz(i); Console.WriteLine(p); } Console.ReadLine(); } <span class="kwrd">protected</span><span class="kwrd">static</span><span class="kwrd">string</span> FizzBuzz(<span class="kwrd">int</span> i)
{ <span class="kwrd">if</span> (i % 15 == 0) <span class="kwrd">return</span><span class="str">"FizzBuzz"</span>; <span class="kwrd">if</span> (i
% 3 == 0) <span class="kwrd">return</span><span class="str">"Fizz"</span>; <span class="kwrd">if</span> (i
% 5 == 0) <span class="kwrd">return</span><span class="str">"Buzz"</span>; <span class="kwrd">return</span> i.ToString();
} }</pre>
        <p>
          <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
I only occasionally code in JavaScript, so I tackled that language next. Someone recommended
using <a title="http://jsfiddle.net/&#xD;&#xA;" href="http://jsfiddle.net/">http://jsfiddle.net/ 
<br /></a>as an online IDE for writing and sharing JavaScript, so I tried it and liked it.
Of course, JavaScript is a dynamic language and one of my big challenges was spelling
things correctly without all the help Visual Studio provides when writing in a statically-typed
language. In my case, I misspelled the id of a div, which cost me at least 15 minutes.
I created the following boilerplate HTML:
</p>
        <pre class="csharpcode">&lt;html&gt;
    &lt;body&gt;
        &lt;div id=<span class="str">"fizzbuzz"</span>&gt;&lt;/div&gt;
&lt;/body&gt; &lt;/html&gt;</pre>
        <p>
          <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
Then, I used the following JavaScript (plus a bit of jQuery) to output the FizzBuzz
results:
</p>
        <pre class="csharpcode">
          <span class="kwrd">for</span> (i = 1; i &lt;= 100; i++) {
$(<span class="str">"#fizzbuzz"</span>).append(<span class="kwrd">function</span>()
{ <span class="kwrd">var</span> newLine = i; <span class="kwrd">if</span> (i % 3 ===
0) { newLine = <span class="str">"Fizz"</span>; } <span class="kwrd">if</span> (i
% 5 === 0) { newLine = <span class="str">"Buzz"</span>; } <span class="kwrd">if</span> (i
% 15 === 0) { newLine = <span class="str">"FizzBuzz"</span>; } <span class="kwrd">var</span> newDiv
= $(<span class="str">"&lt;div&gt;"</span>).text(newLine); <span class="kwrd">return</span> newDiv;
}); }</pre>
        <p>
          <style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
A simple program like this provides a fun way to practice an old language and to learn
a new language. Next up, I’ll try this program with F# and Ruby, since I have very
little experience with these languages.
</p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=597753ce-edfb-4d8d-b6ee-4f07cbc9d7c3" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Brent Stineman on Azure as a Financial Institution</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/05/02/BrentStinemanOnAzureAsAFinancialInstitution.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,c82240b2-3ff3-41c1-bc99-0c11dba237d4.aspx</id>
    <published>2012-05-02T09:56:00-07:00</published>
    <updated>2012-05-03T10:57:08.1403648-07:00</updated>
    <category term="Azure" label="Azure" scheme="http://www.davidgiard.com/CategoryView,category,Azure.aspx" />
    <category term="Technology and Friends" label="Technology and Friends" scheme="http://www.davidgiard.com/CategoryView,category,Technology%2Band%2BFriends.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img border="0" src="http://www.davidgiard.com/content/binary/TechnologyAndFriends.gif" />
        </p>
        <p>
          <strong>Episode 210</strong>
        </p>
        <p>
          <a href="http://technologyandfriends.com/SubText/archive/2012/05/02/tf210.aspx" target="_blank"> Brent
Stineman on Azure as a Financial Institution </a>
        </p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=c82240b2-3ff3-41c1-bc99-0c11dba237d4" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Kevin Griffin on SignalR</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/30/KevinGriffinOnSignalR.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,1bf9d167-07d5-40d0-9dd5-28e810a1dd0c.aspx</id>
    <published>2012-04-30T07:00:00-07:00</published>
    <updated>2012-04-30T03:56:16.5789716-07:00</updated>
    <category term="Technology and Friends" label="Technology and Friends" scheme="http://www.davidgiard.com/CategoryView,category,Technology%2Band%2BFriends.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img border="0" src="http://www.davidgiard.com/content/binary/TechnologyAndFriends.gif" />
        </p>
        <p>
          <strong>Episode 209</strong>
        </p>
        <p>
          <a href="http://technologyandfriends.com/SubText/archive/2012/04/30/tf209.aspx" target="_blank">Kevin
Griffin on SignalR</a>
        </p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=1bf9d167-07d5-40d0-9dd5-28e810a1dd0c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Seth Juarez at GANG: Machine Learning</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/29/SethJuarezAtGANGMachineLearning.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,3c8a2cad-642c-403b-97c8-64d1ce86a998.aspx</id>
    <published>2012-04-29T10:58:00-07:00</published>
    <updated>2012-04-30T03:59:42.7409006-07:00</updated>
    <category term=".Net" label=".Net" scheme="http://www.davidgiard.com/CategoryView,category,.Net.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here is a video of Seth Juarez's Machine Learning presentation at the Great Lakes
Area .NET User Group in January 2012. 
</p>
        <!--[if IE]><object width="437" height="370" id="viddlerOuter-4756aae3" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="//www.viddler.com/player/4756aae3/"><param name="allowScriptAccess" value="always"><param name="allowNetworking" value="all"><param name="allowFullScreen" value="true"><param name="flashVars" value="f=1&openURL=104113122&autoplay=f&loop=0&nologo=0&hd=0"><object id="viddlerInner-4756aae3"><video id="viddlerVideo-4756aae3" src="//www.viddler.com/file/4756aae3/html5mobile?openURL=104113122" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/4756aae3/" controls="controls" x-webkit-airplay="allow"></video></object></object><![endif]-->
        <!--[if !IE]> <!-->
        <object width="437" height="370" id="viddlerOuter-4756aae3" type="application/x-shockwave-flash" data="//www.viddler.com/player/4756aae3/">
          <param name="movie" value="//www.viddler.com/player/4756aae3/" />
          <param name="allowScriptAccess" value="always" />
          <param name="allowNetworking" value="all" />
          <param name="allowFullScreen" value="true" />
          <param name="flashVars" value="f=1&amp;openURL=104113122&amp;autoplay=f&amp;loop=0&amp;nologo=0&amp;hd=0" />
          <object id="viddlerInner-4756aae3">
            <video id="viddlerVideo-4756aae3" src="//www.viddler.com/file/4756aae3/html5mobile?openURL=104113122" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/4756aae3/" controls="controls" x-webkit-airplay="allow">
            </video>
          </object>
        </object>
        <!--<![endif]-->
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=3c8a2cad-642c-403b-97c8-64d1ce86a998" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Sarah Dutkiewicz at GANG: Powershell</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/29/SarahDutkiewiczAtGANGPowershell.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,bdbf5b87-3af7-48fe-aad2-744ea7a85ca5.aspx</id>
    <published>2012-04-29T07:01:00-07:00</published>
    <updated>2012-04-27T05:02:08.9057697-07:00</updated>
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here is a video of Sarah Dutkiewicz’s Powershell presentation from the February 2012 <a href="http://migang.org" target="_blank">Great
Lakes Area .NET User Group</a> (GANG) meeting.
</p>
        <!--[if IE]><object width="437" height="370" id="viddlerOuter-81f8f430" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="//www.viddler.com/player/81f8f430/"><param name="allowScriptAccess" value="always"><param name="allowNetworking" value="all"><param name="allowFullScreen" value="true"><param name="flashVars" value="f=1&openURL=44259585&autoplay=f&loop=0&nologo=0&hd=0"><object id="viddlerInner-81f8f430"><video id="viddlerVideo-81f8f430" src="//www.viddler.com/file/81f8f430/html5mobile?openURL=44259585" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/81f8f430/" controls="controls" x-webkit-airplay="allow"></video></object></object><![endif]-->
        <!--[if !IE]> <!-->
        <object width="437" height="370" id="viddlerOuter-81f8f430" type="application/x-shockwave-flash" data="//www.viddler.com/player/81f8f430/">
          <param name="movie" value="//www.viddler.com/player/81f8f430/" />
          <param name="allowScriptAccess" value="always" />
          <param name="allowNetworking" value="all" />
          <param name="allowFullScreen" value="true" />
          <param name="flashVars" value="f=1&amp;openURL=44259585&amp;autoplay=f&amp;loop=0&amp;nologo=0&amp;hd=0" />
          <object id="viddlerInner-81f8f430">
            <video id="viddlerVideo-81f8f430" src="//www.viddler.com/file/81f8f430/html5mobile?openURL=44259585" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/81f8f430/" controls="controls" x-webkit-airplay="allow">
            </video>
          </object>
        </object>
        <!--<![endif]-->
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=bdbf5b87-3af7-48fe-aad2-744ea7a85ca5" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Glenn Block at GANG: Node.js, Web API, Oh My!</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/28/GlennBlockAtGANGNodejsWebAPIOhMy.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,68c91497-a7ac-405f-a80d-7d4ca296f499.aspx</id>
    <published>2012-04-28T07:59:00-07:00</published>
    <updated>2012-04-27T04:59:47.1743187-07:00</updated>
    <category term="Community" label="Community" scheme="http://www.davidgiard.com/CategoryView,category,Community.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <category term="Web" label="Web" scheme="http://www.davidgiard.com/CategoryView,category,Web.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here is the video of Glenn Block’s presentation at the November 2011 <a href="http://migang.org" target="_blank">Great
Lakes Area .NET User Group</a> (GANG) meeting. Glenn described his 2 latest projects:
Web API and node.js.
</p>
        <!--[if IE]><object width="437" height="370" id="viddlerOuter-808144d0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="//www.viddler.com/player/808144d0/"><param name="allowScriptAccess" value="always"><param name="allowNetworking" value="all"><param name="allowFullScreen" value="true"><param name="flashVars" value="f=1&openURL=84247174&autoplay=f&loop=0&nologo=0&hd=0"><object id="viddlerInner-808144d0"><video id="viddlerVideo-808144d0" src="//www.viddler.com/file/808144d0/html5mobile?openURL=84247174" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/808144d0/" controls="controls" x-webkit-airplay="allow"></video></object></object><![endif]-->
        <!--[if !IE]> <!-->
        <object width="437" height="370" id="viddlerOuter-808144d0" type="application/x-shockwave-flash" data="//www.viddler.com/player/808144d0/">
          <param name="movie" value="//www.viddler.com/player/808144d0/" />
          <param name="allowScriptAccess" value="always" />
          <param name="allowNetworking" value="all" />
          <param name="allowFullScreen" value="true" />
          <param name="flashVars" value="f=1&amp;openURL=84247174&amp;autoplay=f&amp;loop=0&amp;nologo=0&amp;hd=0" />
          <object id="viddlerInner-808144d0">
            <video id="viddlerVideo-808144d0" src="//www.viddler.com/file/808144d0/html5mobile?openURL=84247174" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/808144d0/" controls="controls" x-webkit-airplay="allow">
            </video>
          </object>
        </object>
        <!--<![endif]-->
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=68c91497-a7ac-405f-a80d-7d4ca296f499" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Richard Campbell at GANG: The Scaling Habits of ASP.NET Applications</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/27/RichardCampbellAtGANGTheScalingHabitsOfASPNETApplications.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,57209789-5529-4a04-8adb-ac37325d6092.aspx</id>
    <published>2012-04-27T07:13:00-07:00</published>
    <updated>2012-04-27T04:54:34.2106821-07:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here is Richard Campbell’s September 2009 presentation at the <a href="http://migang.org" target="_blank">Great
Lakes Area .NET User Group</a> (GANG). Richard described what developers can do to
make their ASP.NET applications more scalable.
</p>
        <!--[if IE]><object width="437" height="370" id="viddlerOuter-9e1d466f" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="movie" value="//www.viddler.com/player/9e1d466f/"><param name="allowScriptAccess" value="always"><param name="allowNetworking" value="all"><param name="allowFullScreen" value="true"><param name="flashVars" value="f=1&openURL=59633500&autoplay=f&loop=0&nologo=0&hd=0"><object id="viddlerInner-9e1d466f"><video id="viddlerVideo-9e1d466f" src="//www.viddler.com/file/9e1d466f/html5mobile?openURL=59633500" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/9e1d466f/" controls="controls" x-webkit-airplay="allow"></video></object></object><![endif]-->
        <!--[if !IE]> <!-->
        <object width="437" height="370" id="viddlerOuter-9e1d466f" type="application/x-shockwave-flash" data="//www.viddler.com/player/9e1d466f/">
          <param name="movie" value="//www.viddler.com/player/9e1d466f/" />
          <param name="allowScriptAccess" value="always" />
          <param name="allowNetworking" value="all" />
          <param name="allowFullScreen" value="true" />
          <param name="flashVars" value="f=1&amp;openURL=59633500&amp;autoplay=f&amp;loop=0&amp;nologo=0&amp;hd=0" />
          <object id="viddlerInner-9e1d466f">
            <video id="viddlerVideo-9e1d466f" src="//www.viddler.com/file/9e1d466f/html5mobile?openURL=59633500" type="video/mp4" width="437" height="328" poster="//www.viddler.com/thumbnail/9e1d466f/" controls="controls" x-webkit-airplay="allow">
            </video>
          </object>
        </object>
        <!--<![endif]-->
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=57209789-5529-4a04-8adb-ac37325d6092" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Joe Guadagno on INETA</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/25/JoeGuadagnoOnINETA.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,b6fe02c7-c9f4-41fe-971b-c6478ff8d8c5.aspx</id>
    <published>2012-04-25T11:10:00-07:00</published>
    <updated>2012-04-27T04:10:47.4977617-07:00</updated>
    <category term="Community" label="Community" scheme="http://www.davidgiard.com/CategoryView,category,Community.aspx" />
    <category term="Technology and Friends" label="Technology and Friends" scheme="http://www.davidgiard.com/CategoryView,category,Technology%2Band%2BFriends.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img border="0" src="http://www.davidgiard.com/content/binary/TechnologyAndFriends.gif" />
        </p>
        <p>
          <strong>Episode 208</strong>
        </p>
        <p>
          <a href="http://technologyandfriends.com/SubText/archive/2012/04/25/tf208.aspx" target="_blank">Joe
Guadagno on INETA</a>
        </p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=b6fe02c7-c9f4-41fe-971b-c6478ff8d8c5" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Troy Hunt on ASP.NET Security</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/23/TroyHuntOnASPNETSecurity.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,626cd51b-7ac2-49f3-bc5b-6e32f0e7b9de.aspx</id>
    <published>2012-04-23T13:37:00-07:00</published>
    <updated>2012-04-23T18:37:58.3695099-07:00</updated>
    <category term="ASP.NET" label="ASP.NET" scheme="http://www.davidgiard.com/CategoryView,category,ASP.NET.aspx" />
    <category term="Security" label="Security" scheme="http://www.davidgiard.com/CategoryView,category,Security.aspx" />
    <category term="Technology and Friends" label="Technology and Friends" scheme="http://www.davidgiard.com/CategoryView,category,Technology%2Band%2BFriends.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img border="0" src="http://www.davidgiard.com/content/binary/TechnologyAndFriends.gif" />
        </p>
        <p>
          <strong>Episode 207</strong>
        </p>
        <p>
          <a href="http://technologyandfriends.com/SubText/archive/2012/04/23/tf207.aspx" target="_blank">Troy
Hunt on ASP.NET Security </a>
        </p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=626cd51b-7ac2-49f3-bc5b-6e32f0e7b9de" />
      </div>
    </content>
  </entry>
  <entry>
    <title>2012 Kalamazoo X Recap</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/22/2012KalamazooXRecap.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,1141389f-d940-4ba4-9949-c5e33636cb58.aspx</id>
    <published>2012-04-22T07:25:00-07:00</published>
    <updated>2012-04-21T16:25:48.5108295-07:00</updated>
    <category term="Community" label="Community" scheme="http://www.davidgiard.com/CategoryView,category,Community.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
This year, Michael Eaton and his colleagues hosted the 4th annual Kalamazoo X conference.
I have attended all 4 years and I have to say this was the best one. For those who
haven’t yet heard of Kalamazoo X, it is a conference targeted at software developers,
but the topics focus on the softer skills (i.e., the non-technical skills) required
in your career. Each presentation is only 30 minutes long, which keeps things moving
very rapidly. A single track provides a shared experience for all attendees. Every
presentation was excellent and the room was packed. Speakers would often reference
a presentation from earlier in the day. 
</p>
        <p>
Below are my notes from the sessions I attended.
</p>
        <p>
          <strong>Joe O'Brien 
<br /></strong>
          <em>People Patterns 
<br /></em>Packed a lot of great ideas 
<br />
Never seen a project fail for technical reasons. 
<br />
Corollary: Never seen a project SUCCEED for technical reasons. 
<br />
Deliver bad news quickly
</p>
        <p>
          <strong>Laura Bergells 
<br /></strong>
          <em>The People You Like the Least are the People You Need the Most 
<br /></em>Teams require different personality types 
<br />
Idea people (Putting the "Fun" in "DYSFUNCTIONAL") and rational
people (Putting the "No" in "INNOVATION")
</p>
        <p>
          <strong>Suzan Bond 
<br /></strong>
          <em>Intuition: Your Very Own Super Power 
<br /></em>Learn to understand intuition and trust yourself. 
<br />
Takes guts 
<br />
OK to find ways to back up intuition.
</p>
        <p>
          <strong>Leon Gersing 
<br /></strong>
          <em>Going Gonzo – an exploration of cultures in software development 
<br /></em>Allow yourself to separate from the dominant culture and its associated dogma. 
<br />
Drew inspiration from Hunter Thompson, Frank Zappa, and Georges Seurat. 
<br />
"Most people doing Agile today are actually doing Waterfall with Agile terms.
Agile is dead." 
<br />
More important to be right than to be wise. Understand the problems you are solving.
</p>
        <p>
          <strong>Tim Wingfield 
<br /></strong>
          <em>Your Career is Yours 
<br /></em>Watch Sir Ken Robinson's TED talk 
<br />
Ask Why? Does my customer really need this feature? 
<br />
Coding Katas: Practice how to code. 
<br />
Need to build trust. Be honest. 
<br />
Work/Life balance: You need to enjoy your career; not endure your career.
</p>
        <p>
          <strong>Justin Searls 
<br /></strong>
          <em>The Mythical Team-Month 
<br /></em>If you are going to fail, fail quickly. 
<br />
We are conditioned to avoid failure 
<br />
Finding great developers: 
<br />
Most traits are non-technical 
<br />
Look for one who can succeed without you. 
</p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=1141389f-d940-4ba4-9949-c5e33636cb58" />
      </div>
    </content>
  </entry>
  <entry>
    <title>More Free Stuff from Microsoft</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/20/MoreFreeStuffFromMicrosoft.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,c2fccc97-b7b3-4db2-8e32-b2c6f841fcbf.aspx</id>
    <published>2012-04-19T18:33:00-07:00</published>
    <updated>2012-04-19T16:43:28.1367835-07:00</updated>
    <category term=".Net" label=".Net" scheme="http://www.davidgiard.com/CategoryView,category,.Net.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I published some of these links last month, but Microsoft has released links for even
more free sletuff. Check out the cool stuff by clicking the links below.
</p>
        <ul>
          <li>
            <a href="http://tinyurl.com/Azure12SDK" target="_blank">Azure SDK</a>
          </li>
          <li>
            <a href="http://tinyurl.com/Azure12Trial" target="_blank">Free 30-Day Azure Trial</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093532" target="_blank">Windows
Phone SDK</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093529" target="_blank">WebMatrix</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093529" target="_blank">Windows
8 Consumer Preview</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093624" target="_blank">Visual
Studio 2011 Beta for Windows 8</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200101180" target="_blank">System
Center 2012 Incentive Program</a>
          </li>
          <li>
            <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200099698" target="_blank">Career
Advancement Offer</a>
          </li>
        </ul>
        <div>
        </div>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=c2fccc97-b7b3-4db2-8e32-b2c6f841fcbf" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Dustin Campbell on Roslyn</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/18/DustinCampbellOnRoslyn.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,d4b9e402-8c96-40a2-ac61-4edb88a63fdc.aspx</id>
    <published>2012-04-18T07:20:00-07:00</published>
    <updated>2012-04-18T04:20:51.30437-07:00</updated>
    <category term=".Net" label=".Net" scheme="http://www.davidgiard.com/CategoryView,category,.Net.aspx" />
    <category term="Technology and Friends" label="Technology and Friends" scheme="http://www.davidgiard.com/CategoryView,category,Technology%2Band%2BFriends.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <category term="Visual Studio" label="Visual Studio" scheme="http://www.davidgiard.com/CategoryView,category,Visual%2BStudio.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img border="0" src="http://www.davidgiard.com/content/binary/TechnologyAndFriends.gif" />
        </p>
        <p>
          <strong>Episode 206</strong>
        </p>
        <p>
          <a href="http://technologyandfriends.com/SubText/archive/2012/04/18/tf206.aspx" target="_blank">Dustin
Campbell on Roslyn</a>
        </p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=d4b9e402-8c96-40a2-ac61-4edb88a63fdc" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Clemens Vasters on Azure Service Bus</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/16/ClemensVastersOnAzureServiceBus.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,5a3823bd-a066-4885-a51f-b2db4f511952.aspx</id>
    <published>2012-04-16T08:02:00-07:00</published>
    <updated>2012-04-16T10:02:48.2204989-07:00</updated>
    <category term="Azure" label="Azure" scheme="http://www.davidgiard.com/CategoryView,category,Azure.aspx" />
    <category term="Technology and Friends" label="Technology and Friends" scheme="http://www.davidgiard.com/CategoryView,category,Technology%2Band%2BFriends.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img border="0" src="http://www.davidgiard.com/content/binary/TechnologyAndFriends.gif" />
        </p>
        <p>
          <strong>Episode 205</strong>
        </p>
        <p>
          <a href="http://technologyandfriends.com/SubText/archive/2012/04/16/tf205.aspx" target="_blank">Clemens
Vasters on Azure Service Bus</a>
        </p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=5a3823bd-a066-4885-a51f-b2db4f511952" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Passing Parameters to SQL Server</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/12/PassingParametersToSQLServer.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,d2fe1c98-3ecb-4366-b245-8bce04b3f12f.aspx</id>
    <published>2012-04-12T16:13:00-07:00</published>
    <updated>2012-04-12T13:28:55.8012071-07:00</updated>
    <category term=".Net" label=".Net" scheme="http://www.davidgiard.com/CategoryView,category,.Net.aspx" />
    <category term="C#" label="C#" scheme="http://www.davidgiard.com/CategoryView,category,C%23.aspx" />
    <category term="SQL Server" label="SQL Server" scheme="http://www.davidgiard.com/CategoryView,category,SQL%2BServer.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
SQL Injection  is one of the most frequently-exploited vulnerabilities in the
software world. It refers to user-entered data making its way into commands sent to
back-end systems. It is common because so many developers are unaware of the risk
and how to mitigate it.
</p>
        <p>
Most of the applications I work with read from and write to a relational database,
such as Microsoft SQL Server.  I frequently run across ADO.NET code like the
following:
</p>
        <pre class="csharpcode">
          <span class="kwrd">string</span> lastName = <span class="str">"'Adams'"</span>; <span class="kwrd">string</span> sql
= <span class="str">"Select * from dbo.Customer where LastName = '"</span> +
lastName + <span class="str">"'"</span>; <span class="kwrd">string</span> connString
= ConfigurationManager.ConnectionStrings[<span class="str">"LocalConn"</span>].ConnectionString; <span class="kwrd">using</span> (var
conn = <span class="kwrd">new</span> SqlConnection(connString)) { conn.Open(); var
cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlDataReader reader = cmd.ExecuteReader(); <span class="kwrd">while</span> (reader.Read())
{ Console.WriteLine(<span class="str">"Bad Name: {0} {1}"</span>, reader[<span class="str">"FirstName"</span>],
reader[<span class="str">"LastName"</span>]); } }</pre>
        <style type="text/css">


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
This code is designed to call a stored procedure like the following:
</p>
        <pre class="csharpcode">
          <span class="kwrd">CREATE</span>
          <span class="kwrd">PROCEDURE</span> [dbo].[GetCustomersByFirstName]
@FirstName NVARCHAR(50) <span class="kwrd">AS</span><span class="kwrd">BEGIN</span><span class="rem">--
SET NOCOUNT ON added to prevent extra result sets from</span><span class="kwrd">SET</span> NOCOUNT <span class="kwrd">ON</span>; <span class="kwrd">SELECT</span> Id,
FirstName, LastName <span class="kwrd">FROM</span> dbo.Customer <span class="kwrd">WHERE</span> FirstName
= @FirstName <span class="kwrd">ORDER</span><span class="kwrd">BY</span> Id <span class="kwrd">END</span> GO</pre>
        <style type="text/css">


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <p>
This method of code has several disadvantages 
</p>
        <ol>
          <li>
This code is not optimal because SQL Server does not have a chance to reuse a cached
query plan unless the user happens to send the exact same text into SQL Server. 
</li>
          <li>
The string concatenation opens the system to SQL Injection attacks. 
</li>
        </ol>
        <p>
A SQL Injection Attack is an attempt by an unscrupulous user to pass malicious commands
to a database. In the above example, imagine that the variable x was provided by a
user inputting text into a text box on a web age. An evil user might type something
like 
</p>
        <pre class="csharpcode">
          <span class="str">"Smith';DROP TABLE Customer;//"</span>
        </pre>
        <style type="text/css">


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
        <br />
If that code runs with sufficient permissions, it would wreak havoc on your database.
The following query would be passed to SQL Server. <pre class="csharpcode"><span class="kwrd">Select</span> * <span class="kwrd">from</span> dbo.Customer <span class="kwrd">where</span> LastName
= <span class="str">'Smith'</span>;<span class="kwrd">DROP</span><span class="kwrd">Table</span><span class="kwrd">Customer</span>;//'</pre><style type="text/css">


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style><p>
Clearly, dropping the customer table is not what your code is intended to do.
</p><p>
Many of you will read the above example and decide that you are safe because 
</p><ol><li>
Your web code runs under a context with insufficient privileges to drop a table; and 
</li><li>
You are validating all user inputs to ensure a user cannot enter anything bad. 
</li></ol><p>
There are problems with this reasoning.
</p><ol><li>
A clever hacker can sometimes trick a user into running code under elevated privileges.
Often there are multiple steps to an attack. 
</li><li>
Even if you have caught every possible injection possibility in your user interface,
you cannot guarantee that every call to this API will be made only from your UI for
all eternity. You may open up the API to the public or you may subcontract writing
a mobile application that calls this API or you may hire a new programmer who doesn't
know better. 
</li></ol><p>
The point is that you need to check security at every level of your application. And
part of checking security is to not trust your inputs.
</p><p>
A far better approach than concatenating strings to form a SQL statement is to create
parameter instances; set the value of each parameter; and add these parameters to
a <em>Parameters </em>collection.
</p><p>
The code below shows how to do this.
</p><pre class="csharpcode"><span class="kwrd">string</span> lastName = <span class="str">"Adams"</span>; <span class="kwrd">string</span> sql
= <span class="str">"Select * from dbo.Customer where LastName = @LastName"</span>; <span class="kwrd">string</span> connString
= ConfigurationManager.ConnectionStrings[<span class="str">"LocalConn"</span>].ConnectionString; <span class="kwrd">using</span> (var
conn = <span class="kwrd">new</span> SqlConnection(connString)) { conn.Open(); var
cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlParameter lnParam = cmd.CreateParameter();
lnParam.ParameterName = <span class="str">"@LastName"</span>; lnParam.Value
= lastName; cmd.Parameters.Add(lnParam); SqlDataReader reader = cmd.ExecuteReader(); <span class="kwrd">while</span> (reader.Read())
{ Console.WriteLine(<span class="str">"Good Name: {0} {1}"</span>, reader[<span class="str">"FirstName"</span>],
reader[<span class="str">"LastName"</span>]); } Console.WriteLine();</pre><p><style type="text/css">


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
Pass an unexpected parameter here and it will no t be executed on the end of the query
because SQL Server is expecting a parameter for a specific use.
</p><p>
The same pattern works if I want to pass in a dynamic string of SQL. Passing Parameter
instances is more secure than concatenating SQL and passing that string to SQL Server.
</p><p>
Below is a console application that uses the vulnerable string concatenation method
to call SQL Server via ADO.NET
</p><pre class="csharpcode"><span class="kwrd">using</span> System; <span class="kwrd">using</span> System.Configuration; <span class="kwrd">using</span> System.Data.SqlClient; <span class="kwrd">namespace</span> PassingSql_WrongWay
{ <span class="kwrd">class</span> Program { <span class="kwrd">static</span><span class="kwrd">void</span> Main(<span class="kwrd">string</span>[]
args) { CallSqlQuery(); CallStoredProc(); Console.ReadLine(); } <span class="kwrd">private</span><span class="kwrd">static</span><span class="kwrd">void</span> CallSqlQuery()
{ <span class="kwrd">string</span> lastName = <span class="str">"'Adams'"</span>; <span class="rem">//string
lastName = "Adams';DROP TABLE dbo.ExtraTable;--";</span><span class="kwrd">string</span> sql
= <span class="str">"Select * from dbo.Customer where LastName = '"</span> +
lastName + <span class="str">"'"</span>; <span class="kwrd">string</span> connString
= ConfigurationManager.ConnectionStrings[<span class="str">"LocalConn"</span>].ConnectionString; <span class="kwrd">using</span> (var
conn = <span class="kwrd">new</span> SqlConnection(connString)) { conn.Open(); var
cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlDataReader reader = cmd.ExecuteReader(); <span class="kwrd">while</span> (reader.Read())
{ Console.WriteLine(<span class="str">"Bad Name: {0} {1}"</span>, reader[<span class="str">"FirstName"</span>],
reader[<span class="str">"LastName"</span>]); } } Console.WriteLine(); } <span class="kwrd">private</span><span class="kwrd">static</span><span class="kwrd">void</span> CallStoredProc()
{ <span class="kwrd">string</span> firstName = <span class="str">"James"</span>; <span class="kwrd">string</span> sql
= <span class="str">"EXEC GetCustomersByFirstName '"</span> + firstName
+ <span class="str">"'"</span>; <span class="kwrd">string</span> connString
= ConfigurationManager.ConnectionStrings[<span class="str">"LocalConn"</span>].ConnectionString; <span class="kwrd">using</span> (var
conn = <span class="kwrd">new</span> SqlConnection(connString)) { conn.Open(); var
cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlDataReader reader = cmd.ExecuteReader(); <span class="kwrd">while</span> (reader.Read())
{ Console.WriteLine(<span class="str">"Bad Name: {0} {1}"</span>, reader[<span class="str">"FirstName"</span>],
reader[<span class="str">"LastName"</span>]); } Console.WriteLine(); } }
} }</pre><p>
Below is a similar console app, using the more secure parameters pattern
</p><pre class="csharpcode"><span class="kwrd">using</span> System; <span class="kwrd">using</span> System.Configuration; <span class="kwrd">using</span> System.Data.SqlClient; <span class="kwrd">namespace</span> PassingSql_RightWay
{ <span class="kwrd">class</span> Program { <span class="kwrd">static</span><span class="kwrd">void</span> Main(<span class="kwrd">string</span>[]
args) { CallSqlQuery(); CallStoredProc(); Console.ReadLine(); } <span class="kwrd">private</span><span class="kwrd">static</span><span class="kwrd">void</span> CallSqlQuery()
{ <span class="kwrd">string</span> lastName = <span class="str">"Adams"</span>; <span class="rem">//string
lastName = "Adams;DROP TABLE dbo.ExtraTable;--";</span><span class="kwrd">string</span> sql
= <span class="str">"Select * from dbo.Customer where LastName = @LastName"</span>; <span class="kwrd">string</span> connString
= ConfigurationManager.ConnectionStrings[<span class="str">"LocalConn"</span>].ConnectionString; <span class="kwrd">using</span> (var
conn = <span class="kwrd">new</span> SqlConnection(connString)) { conn.Open(); var
cmd = conn.CreateCommand(); cmd.CommandText = sql; SqlParameter lnParam = cmd.CreateParameter();
lnParam.ParameterName = <span class="str">"@LastName"</span>; lnParam.Value
= lastName; cmd.Parameters.Add(lnParam); SqlDataReader reader = cmd.ExecuteReader(); <span class="kwrd">while</span> (reader.Read())
{ Console.WriteLine(<span class="str">"Good Name: {0} {1}"</span>, reader[<span class="str">"FirstName"</span>],
reader[<span class="str">"LastName"</span>]); } Console.WriteLine(); } } <span class="kwrd">private</span><span class="kwrd">static</span><span class="kwrd">void</span> CallStoredProc()
{ <span class="kwrd">string</span> firstName = <span class="str">"James"</span>; <span class="kwrd">string</span> storedProcName
= <span class="str">"GetCustomersByFirstName"</span>; <span class="kwrd">string</span> connString
= ConfigurationManager.ConnectionStrings[<span class="str">"LocalConn"</span>].ConnectionString; <span class="kwrd">using</span> (var
conn = <span class="kwrd">new</span> SqlConnection(connString)) { conn.Open(); var
cmd = conn.CreateCommand(); cmd.CommandText = storedProcName; cmd.CommandType = System.Data.CommandType.StoredProcedure;
SqlParameter lnParam = cmd.CreateParameter(); lnParam.ParameterName = <span class="str">"@FirstName"</span>;
lnParam.Value = firstName; cmd.Parameters.Add(lnParam); SqlDataReader reader = cmd.ExecuteReader(); <span class="kwrd">while</span> (reader.Read())
{ Console.WriteLine(<span class="str">"Good Name: {0} {1}"</span>, reader[<span class="str">"FirstName"</span>],
reader[<span class="str">"LastName"</span>]); } Console.WriteLine(); } }
} }</pre><p><style type="text/css">

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
If you wish to use the above code, create a new database named <em>TestData </em>and
run the following SQL DDL to create the database objects.
</p><pre class="csharpcode"><span class="kwrd">USE</span> [TestData] <span class="kwrd">GO</span> /****** <span class="kwrd">Object</span>: <span class="kwrd">Table</span> [dbo].[ExtraTable] <span class="kwrd">SET</span> ANSI_NULLS <span class="kwrd">ON</span><span class="kwrd">GO</span><span class="kwrd">SET</span> QUOTED_IDENTIFIER <span class="kwrd">ON</span><span class="kwrd">GO</span><span class="kwrd">CREATE</span><span class="kwrd">TABLE</span> [dbo].[ExtraTable](
[foo] [<span class="kwrd">nchar</span>](10) <span class="kwrd">NULL</span>, [bar]
[<span class="kwrd">nchar</span>](10) <span class="kwrd">NULL</span> ) <span class="kwrd">ON</span> [<span class="kwrd">PRIMARY</span>] <span class="kwrd">GO</span> /****** <span class="kwrd">Object</span>: <span class="kwrd">Table</span> [dbo].[Customer] <span class="kwrd">SET</span> ANSI_NULLS <span class="kwrd">ON</span><span class="kwrd">GO</span><span class="kwrd">SET</span> QUOTED_IDENTIFIER <span class="kwrd">ON</span><span class="kwrd">GO</span><span class="kwrd">CREATE</span><span class="kwrd">TABLE</span> [dbo].[Customer](
[Id] [<span class="kwrd">int</span>] <span class="kwrd">IDENTITY</span>(1,1) <span class="kwrd">NOT</span><span class="kwrd">NULL</span>,
[FirstName] [nvarchar](50) <span class="kwrd">NULL</span>, [LastName] [nvarchar](50) <span class="kwrd">NOT</span><span class="kwrd">NULL</span> ) <span class="kwrd">ON</span> [<span class="kwrd">PRIMARY</span>] <span class="kwrd">GO</span> INSERT <span class="kwrd">INTO</span> dbo.Customer
(FirstName, LastName) <span class="kwrd">VALUES</span> (<span class="str">'George'</span>, <span class="str">'Washington'</span>) <span class="kwrd">GO</span> INSERT <span class="kwrd">INTO</span> dbo.Customer
(FirstName, LastName) <span class="kwrd">VALUES</span> (<span class="str">'John'</span>, <span class="str">'Adams'</span>) <span class="kwrd">GO</span> INSERT <span class="kwrd">INTO</span> dbo.Customer
(FirstName, LastName) <span class="kwrd">VALUES</span> (<span class="str">'Thomas'</span>, <span class="str">'Jefferson'</span>) <span class="kwrd">GO</span> INSERT <span class="kwrd">INTO</span> dbo.Customer
(FirstName, LastName) <span class="kwrd">VALUES</span> (<span class="str">'James'</span>, <span class="str">'Madison'</span>) <span class="kwrd">GO</span> INSERT <span class="kwrd">INTO</span> dbo.Customer
(FirstName, LastName) <span class="kwrd">VALUES</span> (<span class="str">'James'</span>, <span class="str">'Monroe'</span>) <span class="kwrd">GO</span> INSERT <span class="kwrd">INTO</span> dbo.Customer
(FirstName, LastName) <span class="kwrd">VALUES</span> (<span class="str">'John Quincy'</span>, <span class="str">'Adams'</span>) <span class="kwrd">GO</span> /****** <span class="kwrd">Object</span>:
StoredProcedure [dbo].[GetCustomersByFirstName] <span class="kwrd">SET</span> ANSI_NULLS <span class="kwrd">ON</span><span class="kwrd">GO</span><span class="kwrd">SET</span> QUOTED_IDENTIFIER <span class="kwrd">ON</span><span class="kwrd">GO</span><span class="kwrd">CREATE</span><span class="kwrd">PROCEDURE</span> [dbo].[GetCustomersByFirstName]
@FirstName NVARCHAR(50) <span class="kwrd">AS</span><span class="kwrd">BEGIN</span><span class="kwrd">SET</span> NOCOUNT <span class="kwrd">ON</span>; <span class="kwrd">SELECT</span> Id,
FirstName, LastName <span class="kwrd">FROM</span> dbo.Customer <span class="kwrd">WHERE</span> FirstName
= @FirstName <span class="kwrd">ORDER</span><span class="kwrd">BY</span> Id <span class="kwrd">END</span><span class="kwrd">GO</span></pre><style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style><p><style type="text/css">

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
With a little bit of thought and a few lines of code, you can significantly reduce
the risk of SQL injection in your ADO.NET code.
</p><img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=d2fe1c98-3ecb-4366-b245-8bce04b3f12f" /></div>
    </content>
  </entry>
  <entry>
    <title>Upcoming Conferences and events in the Heartland</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/11/UpcomingConferencesAndEventsInTheHeartland.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,887176cf-f218-441f-b7d2-543795715e8c.aspx</id>
    <published>2012-04-11T07:37:00-07:00</published>
    <updated>2012-04-11T04:44:10.5281525-07:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
As always, there will be a lot of developer conferences and other events this summer
in the my region. Here is a partial list of conferences that have been announced in
or near the Heartland region in the coming months. Please let me know if I have missed
any.
</p>
        <table border="0" cellspacing="0" cellpadding="2" width="368">
          <tbody>
            <tr>
              <td valign="top" width="133">
                <strong>What</strong>
              </td>
              <td valign="top" width="120">
                <strong>Where</strong>
              </td>
              <td valign="top" width="113">
                <strong>When</strong>
              </td>
            </tr>
            <tr>
              <td valign="top" width="144">
                <a href="http://kalamazoox.org/" target="_blank">Kalamazoo X</a>
              </td>
              <td valign="top" width="127">
Kalamazoo, MI</td>
              <td valign="top" width="118">
Apr 21</td>
            </tr>
            <tr>
              <td valign="top" width="147">
                <a href="http://stirtrek.com" target="_blank">Stir Trek</a>
              </td>
              <td valign="top" width="134">
Columbus, OH</td>
              <td valign="top" width="118">
May 4</td>
            </tr>
            <tr>
              <td valign="top" width="147">
                <a href="http://glfpc.org/" target="_blank">Great Lakes Functional Programming Conference</a>
              </td>
              <td valign="top" width="134">
Ann Arbor, MI</td>
              <td valign="top" width="118">
May 5</td>
            </tr>
            <tr>
              <td valign="top" width="147">
                <a href="http://dayofagile.org/cincinnati" target="_blank">Cincinnati Day of Agile</a>
              </td>
              <td valign="top" width="134">
Westchester, OH</td>
              <td valign="top" width="118">
May 19</td>
            </tr>
            <tr>
              <td valign="top" width="147">
                <a href="http://pghtechfest.com/" target="_blank">Pittsburgh Tech Fest</a>
              </td>
              <td valign="top" width="134">
North Hills, PA</td>
              <td valign="top" width="118">
Jun 9</td>
            </tr>
            <tr>
              <td valign="top" width="147">
                <a href="http://codestock.org/" target="_blank">CodeStock</a>
              </td>
              <td valign="top" width="134">
Knoxville, TN</td>
              <td valign="top" width="118">
Jun 15-16</td>
            </tr>
            <tr>
              <td valign="top" width="147">
                <a href="http://clouddevelop.org/" target="_blank">CloudDevelop</a>
              </td>
              <td valign="top" width="134">
Columbus, OH</td>
              <td valign="top" width="118">
Aug 3</td>
            </tr>
            <tr>
              <td valign="top" width="147">
                <a href="http://www.thatconference.com/" target="_blank">That Conference</a>
              </td>
              <td valign="top" width="134">
Wisconsin Dells, WI</td>
              <td valign="top" width="118">
Aug 15-16</td>
            </tr>
            <tr>
              <td valign="top" width="147">
                <a href="http://devlink.net/" target="_blank">DevLink</a>
              </td>
              <td valign="top" width="134">
Chattanooga, TN</td>
              <td valign="top" width="118">
Aug 29-31</td>
            </tr>
            <tr>
              <td valign="top" width="147">
                <a href="http://www.brianhprince.com/post/2012/03/09/Windows-Azure-Kick-Start-Toure28093Sign-up-now.aspx" target="_blank">Windows
Azure Kick-Start</a>
              </td>
              <td valign="top" width="134">
Multiple cities</td>
              <td valign="top" width="118">
Multiple dates</td>
            </tr>
            <tr>
              <td valign="top" width="147">
                <a href="http://blogs.msdn.com/b/jennifer/archive/2012/03/27/windows-developer-camps.aspx" target="_blank">Windows
8 Developer Camps</a>
              </td>
              <td valign="top" width="134">
Multiple cities</td>
              <td valign="top" width="118">
Multiple dates</td>
            </tr>
          </tbody>
        </table>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=887176cf-f218-441f-b7d2-543795715e8c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Mads Torgersen on CSharp 5</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/09/MadsTorgersenOnCSharp5.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,0343734c-9646-4848-a014-16137e398812.aspx</id>
    <published>2012-04-09T07:03:00-07:00</published>
    <updated>2012-04-09T11:04:34.0799328-07:00</updated>
    <category term=".Net" label=".Net" scheme="http://www.davidgiard.com/CategoryView,category,.Net.aspx" />
    <category term="C#" label="C#" scheme="http://www.davidgiard.com/CategoryView,category,C%23.aspx" />
    <category term="Technology and Friends" label="Technology and Friends" scheme="http://www.davidgiard.com/CategoryView,category,Technology%2Band%2BFriends.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img border="0" src="http://www.davidgiard.com/content/binary/TechnologyAndFriends.gif" />
        </p>
        <p>
          <strong>Episode 204</strong>
        </p>
        <p>
          <a href="http://technologyandfriends.com/SubText/archive/2012/04/09/tf204.aspx" target="_blank">Mads
Torgersen on CSharp 5</a>
        </p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=0343734c-9646-4848-a014-16137e398812" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Orlando Code Camp Recap</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/03/OrlandoCodeCampRecap.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,b94303a7-095d-4fa3-b629-866f88a83e06.aspx</id>
    <published>2012-04-03T07:46:00-07:00</published>
    <updated>2012-04-02T06:13:20.0511281-07:00</updated>
    <category term="Community" label="Community" scheme="http://www.davidgiard.com/CategoryView,category,Community.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Saturday, I spoke at the Orlando Code Camp at Seminole State College, just east of
Orlando, FL. This was the seventh year of the Code Camp but my first time attending. 
</p>
        <p>
The first session I attended was <em>Memory Management Fundamentals – Garbage Collection
Deep Dive </em>by Scott Dorman. 
<br />
Scott explained the way memory management works under the hood. 
<br />
Key points:  
<br />
The garbage collector takes care of cleaning up objects when they are no longer needed. 
<br />
It's generally not advisable to implement a finalizer. 
<br />
If your machine has plenty of memory, garbage collection might not occur until the
user exits the app. 
<br />
Larger objects are cued up for cleanup. 
<br />
Here is a list of resources 
<br /><a href="http://geekswithblogs.net/sdorman/archive/2008/09/14/.net-memory-management-ndash-resources.aspx">http://geekswithblogs.net/sdorman/archive/2008/09/14/.net-memory-management-ndash-resources.aspx</a></p>
        <p>
The next session I attended was <em>Creating a HTML5 WinRT application</em> by Brian
Kassay 
<br />
You can build Windows 8 applications in either HTML5, JavaScript, and CSS3 or in XAML.
This session focused on HTML5, JavaScript, and CSS3. In order to work with this, one
needs to install Windows 8 and Visual Studio 11 (both are in beta).
</p>
        <p>
I planned to see Richie Rump's <em>Entity Framework - Code First and Magic Unicorns</em> session,
but others had the same idea and the room was packed. Rather than stand for an hour,
I opted to hear Greg Leonardo's <em>Line of Business development with MVC3</em>. 
<br />
This was a basic overview of how to use MVC. It consisted of more slides than demos. 
<br />
He did explain how MVC's Anti-forgery library works (issues a token to the user with
a response and checks for that token in subsequent requests). 
<br />
He also discussed the MVC Anti-XSS library, which is designed to protect your site
against cross-site scripting errors. By default, MVC disallows HTML input by. If you
decide to allow HTML input, it is important to scrub input with the Anti-XSS library.
</p>
        <p>
The final session I attended was Elijah Manor on <em>Exterminating Those Common Pesky
jQuery Bugs </em><br />
Elijah went through a series of common JavaScript mistakes made by developers and
showed ways to correct them. 
</p>
        <p>
I delivered a session on Visual Studio 2010 Database Tools. It was very well received
and the audience asked lots of questions.
</p>
        <p>
The organizers did a very good job on this conference and everything ran smoothly. 
<br />
The one drawback of this event was the lack of an obvious common area, where attendees
could talk and meet one another. When it was over, we regrouped at a local pub, which
gave me the opportunity to meet many of the local developer community. This was particularly
important to me at this conference because I only knew about 5 people among the speakers
and attendees. One of the reasons I came down to Orlando was for a chance to meet
people in the local Florida communities. It turns out that Orlando, Sarasota, and
South Florida have very vibrant communities based on the enthusiasm of those I spoke
with.
</p>
        <p>
Of course I recorded a couple episodes of Technology and Friends. Elijah Manor and
Max Trinidad agreed to go on camera to discuss JavaScript and Powershell respectively.
</p>
        <p>
The Orlando Code Camp will take place again next year and I'm seriously considering
making this an annual trip. I also heard of a few smaller events in the area which
might bring me back here.
</p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=b94303a7-095d-4fa3-b629-866f88a83e06" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Malcolm Sheridan on MVC Lessons Learnt from Getting Burnt</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/04/02/MalcolmSheridanOnMVCLessonsLearntFromGettingBurnt.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,4db0c8e4-0ec1-4d93-bcd7-5414b64473e5.aspx</id>
    <published>2012-04-02T07:49:00-07:00</published>
    <updated>2012-04-02T06:13:41.9864153-07:00</updated>
    <category term="MVC" label="MVC" scheme="http://www.davidgiard.com/CategoryView,category,MVC.aspx" />
    <category term="Technology and Friends" label="Technology and Friends" scheme="http://www.davidgiard.com/CategoryView,category,Technology%2Band%2BFriends.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img border="0" src="http://www.davidgiard.com/content/binary/TechnologyAndFriends.gif" />
        </p>
        <p>
          <strong>Episode 203</strong>
        </p>
        <p>
          <a href="http://technologyandfriends.com/SubText/archive/2012/04/02/tf203.aspx" target="_blank">Malcolm
Sheridan on MVC Lessons Learnt from Getting Burnt </a>
        </p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=4db0c8e4-0ec1-4d93-bcd7-5414b64473e5" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Day of Azure recap</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/03/28/DayOfAzureRecap.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,c376d433-93eb-40f2-81a9-21d5e44097c6.aspx</id>
    <published>2012-03-28T11:39:00-07:00</published>
    <updated>2012-03-28T16:39:26.1600673-07:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
The Detroit Day of Azure is history and I had a blast. On March 24, a group of volunteers
and I organized the first Detroit Day of Azure, with the idea of sharing knowledge
about Microsoft’s cloud computing platform and related technologies.
</p>
        <p>
          <img src="http://giard.smugmug.com/Tech-Community/2012-Detroit-Day-of-Azure/i-g9TH7Rv/0/M/IMG0361-M.jpg" />
        </p>
        <p>
Here are a few of the high points from the conference:
</p>
        <blockquote>
          <p>
We sold out our 144 tickets and about 130 people showed up for the Saturday event
in Southfield.
</p>
          <p>
The speakers were amazing. They traveled from Texas, Minnesota, Indiana, Chicago,
Ohio, and Kentucky to share their knowledge with us. The feedback I heard was all
positive. I was fortunate to get such a talented group of presenters.
</p>
          <p>
We ran 3 rooms simultaneously. The presentation in the large room was streamed live
all day, so people who could not make the conference could enjoy the presentations.
</p>
          <p>
We ran a Q&amp;A Panel at lunch time titled "Ask the Experts". Nearly all
the speakers participated and the audience got to ask  them questions about Windows
Azure. We cut this off after about 50 minutes, but could easily have gone twice as
long.
</p>
          <p>
Everyone loved the food. Lunch was from a local barbeque restaurant and featured some
outstanding brisket, pulled pork, and chicken, along with some tasty side dishes.
We also provided continental breakfast and an afternoon snack, both of which disappeared
in a hurry.
</p>
          <p>
Most of the sessions were recorded, thanks to volunteers Jim Priore, Falicia Starr,
and Max Friend, who manned the cameras. I'll get these online in the next few weeks.
</p>
          <p>
The volunteers were fantastic. People were proactive about seeing what needed to get
done and jumping in and doing it. I had very little to manage on the day of the event.
</p>
          <p>
Speakers and volunteers retreated to Copper Canyon Brew Pub for dinner afterwards.
It was nice to wind down with friends after a busy day.
</p>
        </blockquote>
        <p>
          <img src="http://giard.smugmug.com/Tech-Community/2012-Detroit-Day-of-Azure/i-KHdskdT/0/M/IMG0319-M.jpg" />
        </p>
        <p>
Here are a few things we could have done better:
</p>
        <blockquote>
          <p>
I couldn't find the wireless microphone for the lunchtime panel, which meant only
half the room could hear them well.
</p>
          <p>
I ordered way too much barbeque and we ended up with more leftovers than I would have
liked.
</p>
        </blockquote>
        <p>
But those are small things and I was overall pleased with how everything turned out.
</p>
        <p>
I need to catch my breath before thinking about the next event.
</p>
        <p>
          <hr />
Photos: <a href="http://giard.smugmug.com/Tech-Community/2012-Detroit-Day-of-Azure/">http://giard.smugmug.com/Tech-Community/2012-Detroit-Day-of-Azure/</a></p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=c376d433-93eb-40f2-81a9-21d5e44097c6" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Michael Crump on 11 Things Every Developer Should Do in 2012</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/03/26/MichaelCrumpOn11ThingsEveryDeveloperShouldDoIn2012.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,9704ec90-71cf-4713-90b6-fd397c493c5b.aspx</id>
    <published>2012-03-26T09:15:00-07:00</published>
    <updated>2012-03-26T08:16:05.1112269-07:00</updated>
    <category term="Technology and Friends" label="Technology and Friends" scheme="http://www.davidgiard.com/CategoryView,category,Technology%2Band%2BFriends.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img border="0" src="http://www.davidgiard.com/content/binary/TechnologyAndFriends.gif" />
        </p>
        <p>
          <strong>Episode 202</strong>
        </p>
        <p>
          <a href="http://technologyandfriends.com/SubText/archive/2012/03/26/tf202.aspx" target="_blank">Michael
Crump on 11 Things Every Developer Should Do in 2012 </a>
        </p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=9704ec90-71cf-4713-90b6-fd397c493c5b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Microsoft Hot LInks</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/03/23/MicrosoftHotLInks.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,34a20cf9-3f2e-4020-915d-8d1a5a9581c1.aspx</id>
    <published>2012-03-23T07:24:00-07:00</published>
    <updated>2012-03-23T12:24:47.033227-07:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Below are some links to download or sign up for some of Microsoft’s hottest new technologies.
</p>
        <table border="0" cellspacing="0" cellpadding="0">
          <tbody>
            <tr>
              <td valign="top" width="161">
                <p>
                  <b>Category </b>
                </p>
              </td>
              <td valign="top" width="428">
                <p>
                  <b>Link</b>
                </p>
              </td>
            </tr>
            <tr>
              <td valign="top" width="161">
                <p>
                  <b>Azure SDK</b>
                </p>
              </td>
              <td valign="top" width="428">
                <p>
                  <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093530">http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093530</a>
                </p>
              </td>
            </tr>
            <tr>
              <td valign="top" width="161">
                <p>
                  <b>Azure Trial</b>
                </p>
              </td>
              <td valign="top" width="428">
                <p>
                  <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093531">http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093531</a>
                </p>
              </td>
            </tr>
            <tr>
              <td valign="top" width="161">
                <p>
                  <b>Windows Phone SDK</b>
                </p>
              </td>
              <td valign="top" width="428">
                <p>
                  <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093532">http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093532</a>
                </p>
              </td>
            </tr>
            <tr>
              <td valign="top" width="161">
                <p>
                  <b>WebMatrix</b>
                </p>
              </td>
              <td valign="top" width="428">
                <p>
                  <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093529">http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093529</a>
                </p>
              </td>
            </tr>
            <tr>
              <td valign="top" width="161">
                <p>
                  <b>Windows 8 Consumer Preview</b>
                </p>
              </td>
              <td valign="top" width="428">
                <p>
                  <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093529">http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093529</a>
                </p>
              </td>
            </tr>
            <tr>
              <td valign="top" width="161">
                <p>
                  <b>Visual Studio 2011 Beta for Windows 8</b>
                </p>
              </td>
              <td valign="top" width="428">
                <p>
                  <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093624">http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093624</a>
                </p>
              </td>
            </tr>
          </tbody>
        </table>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=34a20cf9-3f2e-4020-915d-8d1a5a9581c1" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Upcoming Speaking Schedule</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/03/20/UpcomingSpeakingSchedule.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,7061ef04-2316-40e7-acde-6498eeaab695.aspx</id>
    <published>2012-03-20T16:30:00-07:00</published>
    <updated>2012-03-20T11:40:22.3660208-07:00</updated>
    <category term="Public Speaking" label="Public Speaking" scheme="http://www.davidgiard.com/CategoryView,category,Public%2BSpeaking.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have the following presentations scheduled
</p>
        <p>
On March 20 (tonight), I will present <em>Persistence In The Cloud: How to Use Azure
Storage </em>at the <em>24 Hours of Pass </em>online conference. <a href="http://www.sqlpass.org/24hours/spring2012/">Here
is a link</a>.
</p>
        <p>
On March 24, I will present <em>Persistence In The Cloud: How to Use Azure Storage </em>at
the <em>Detroit Day of Azure</em> in Southfield, MI (<a href="http://DetroitDayOfAzure.com">http://DetroitDayOfAzure.com</a>). 
</p>
        <p>
On March 31, I will present <em>Using the Database Tools of Visual Studio 2010 </em>at
the <em>Orlando Code Camp </em>in Orlando, FL (<a title="http://orlandocodecamp.com/" href="http://orlandocodecamp.com/">http://orlandocodecamp.com/</a>).
</p>
        <p>
On May 4, I will present <em>Data Visualization: The Ideas of Edward Tufte</em> at <em>Stir
Trek </em>in Columbus, OH. (<a title="http://stirtrek.com/" href="http://stirtrek.com/">http://stirtrek.com/</a>). 
</p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=7061ef04-2316-40e7-acde-6498eeaab695" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Detroit Day of Azure is coming!</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/03/20/DetroitDayOfAzureIsComing.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,3dbe0ba0-129e-40b5-b8d3-f3be3feb01e0.aspx</id>
    <published>2012-03-19T22:45:12.0636379-07:00</published>
    <updated>2012-03-19T22:45:12.0636379-07:00</updated>
    <category term="Azure" label="Azure" scheme="http://www.davidgiard.com/CategoryView,category,Azure.aspx" />
    <category term="Community" label="Community" scheme="http://www.davidgiard.com/CategoryView,category,Community.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Cloud computing has been a hot topic in the software industry for the past couple
years. Many of us hear about cloud technologies such as Windows Azure, but don't know
how to get started.
</p>
        <p>
I wanted to make it easy to find that information, so I'm organizing a 1-day conference
to teach people about Windows Azure. 
</p>
        <p>
The Detroit Day of Azure will take place Saturday March 24 from 8AM to 6PM at the
Microsoft office in Southfield, MI.
</p>
        <p>
14 speakers from 8 different states have agreed to deliver 19 presentations at this
event. The speakers (listed below) are among the foremost Azure experts in the region.
The list includes MVPs, Microsoft insiders, book authors, and people delivering real
Azure solutions for their customers.
</p>
        <p>
Dennis Burton 
<br />
Michael Collier 
<br />
Jason Follas 
<br />
John Ferringer 
<br />
David Giard 
<br />
Joe Kunk 
<br />
Jennifer Marsman 
<br />
Jeff Nuckolls 
<br />
Brian Prince 
<br />
Mark Stanislav 
<br />
Brent Stineman 
<br />
Mike Wood 
<br />
Chander Dhall 
<br />
Eric Boyd 
<br /></p>
        <p>
Azure MVP and Sogeti National Cloud Computing Lead Brent Stineman will deliver the
keynote; then we will split into 3 rooms for the rest of the day, where you can choose
from several great topics and speakers. Our plans are to record at least some of the
conference on video. We may even live stream some of it, but that is still in the
planning phase. 
</p>
        <p>
We will designate one room for programmers to build Azure applications. Attendees
can bring a laptop and either work on their own project or work through the Azure
labs, which we will provide for you. Many smart people will be around if you get stuck.
Remember to download and install the Azure SDK and sign up for a free Azure Trial
before you arrive! 
</p>
        <p>
          <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093530">Download
Azure SDK</a>
          <br />
          <a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200093531">Sign
Up for Free Azure Trial</a>
        </p>
        <p>
As with any successful event, many people helped out. Onorio Catenacci, Jamie Altizer,
Matt Ruma, Shelly Noll, Sukhdev Tur, Justin Baker, Akhil Mahajan, Brian Korzynski,
Jelard Macalino, Jim Priore, and Falicia Starr have volunteered their time to help;
while Microsoft, Sogeti, The Epitec Group, Telerik, and RIIS donated their money;
while Pluralsight, Wrox, and O'Reilly donated products to give away.
</p>
        <p>
If you have been attending the <a href="http://migang.org">Great Lakes Area .NET User
Group</a> (where I was president the last two years), you won't be surprised to learn
that we are serving some excellent food at this event. Included in the $20 admission
cost is a continental breakfast and a buffet lunch from Lockhart’s barbeque in Royal
Oak. We will also have some door prizes to give away at the end of the day.
</p>
        <p>
More information on the Detroit Day of Azure is available at <a href="http://DetroitDayOfAzure.com">http://DetroitDayOfAzure.com</a>.
You can register at <a href="http://DayOfAzure.eventbrite.com/">http://DayOfAzure.eventbrite.com/</a>.
</p>
        <p>
Space is limited and only a few tickets remain.
</p>
        <p>
I'm very excited about this event and looking forward to it as an organizer, as a
speaker, and as an attendee. 
</p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=3dbe0ba0-129e-40b5-b8d3-f3be3feb01e0" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Michael Crump on Silverlight 5</title>
    <link rel="alternate" type="text/html" href="http://www.davidgiard.com/2012/03/19/MichaelCrumpOnSilverlight5.aspx" />
    <id>http://www.davidgiard.com/PermaLink,guid,8c9a44bf-8732-41dd-9cf1-5787d28a6a66.aspx</id>
    <published>2012-03-19T08:05:00-07:00</published>
    <updated>2012-03-19T13:05:30.2110693-07:00</updated>
    <category term="Silverlight" label="Silverlight" scheme="http://www.davidgiard.com/CategoryView,category,Silverlight.aspx" />
    <category term="Technology and Friends" label="Technology and Friends" scheme="http://www.davidgiard.com/CategoryView,category,Technology%2Band%2BFriends.aspx" />
    <category term="Video" label="Video" scheme="http://www.davidgiard.com/CategoryView,category,Video.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img border="0" src="http://www.davidgiard.com/content/binary/TechnologyAndFriends.gif" />
        </p>
        <p>
          <strong>Episode 201</strong>
        </p>
        <p>
          <a href="http://technologyandfriends.com/SubText/archive/2012/03/19/tf201.aspx" target="_blank"> Michael
Crump on Silverlight 5 </a>
        </p>
        <img width="0" height="0" src="http://www.davidgiard.com/aggbug.ashx?id=8c9a44bf-8732-41dd-9cf1-5787d28a6a66" />
      </div>
    </content>
  </entry>
</feed>
