<?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>What did you learn today?</title>
  <link rel="alternate" type="text/html" href="http://blog.philknows.net/" />
  <link rel="self" href="http://blog.philknows.net/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2008-05-09T11:25:45.816-04:00</updated>
  <author>
    <name>Phil Denoncourt III</name>
  </author>
  <subtitle>Phil Denoncourt's Technology Rants</subtitle>
  <id>http://blog.philknows.net/</id>
  <generator uri="http://www.dasblog.net" version="2.0.7180.0">DasBlog</generator>
  <entry>
    <title>New Hampshire .NET User Group is resuming in a new location</title>
    <link rel="alternate" type="text/html" href="http://blog.philknows.net/PermaLink,guid,80aedee8-1632-4de3-9a9b-1e85aee2f600.aspx" />
    <id>http://blog.philknows.net/PermaLink,guid,80aedee8-1632-4de3-9a9b-1e85aee2f600.aspx</id>
    <published>2008-05-09T08:21:02.597-04:00</published>
    <updated>2008-05-09T11:25:45.816-04:00</updated>
    <category term="Speaking Engagements" label="Speaking Engagements" scheme="http://blog.philknows.net/CategoryView,category,Speaking%2BEngagements.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <h5>In case you haven't heard...  Notice the new location in Nashua.
</h5>
        <h5> 
</h5>
        <p>
          <a href="http://www.nhdn.com" target="_blank">New Hampshire Dot Net Users Group</a> is
back just in time for Microsoft’s latest releases of Visual Studio
</p>
        <p>
We’ll be meeting In our new home at
</p>
        <p>
6:00-8:30 May 15th
</p>
        <p>
Eaton Richmond Center room 100
</p>
        <p>
          <a href="http://www.dwc.edu">Daniel Webster College</a>
        </p>
        <p>
The Guest Speakers will be
</p>
        <p>
          <strong>
            <a href="http://www.philknows.net">Phil Denoncourt</a>
          </strong>
        </p>
        <p>
          <strong>Overview of the AJAX control toolkit:</strong>
        </p>
        <p>
AJAX is an way to make websites more interactive and responsive.  It's powerful
and easy to use.  The AJAX control toolkit is a set of controls that use AJAX
and wrap common UI scenarios.  Cascading dropdowns, Auto completing textboxes,
in-page popups, hovering menus and dynamically populated textboxes are some of the
controls we'll go over.  No AJAX experience is required.
</p>
        <p>
          <strong>And <a href="http://www.4square.net">Pat Tormey</a> will be presenting</strong>
        </p>
        <p>
What’s new and important in VS 2008 with a little bit of WPF and Expression Suite
</p>
        <p>
Stay tuned to <a href="http://www.nhdn.com">http://www.nhdn.com</a> for details
and register up for notices…
</p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=80aedee8-1632-4de3-9a9b-1e85aee2f600" />
      </div>
    </content>
  </entry>
  <entry>
    <title>70-561 Microsoft .NET Framework 3.5, ADO.NET Application Development - Section I - Connecting to Data Sources</title>
    <link rel="alternate" type="text/html" href="http://blog.philknows.net/PermaLink,guid,2a3eb8e1-9a7b-4149-8502-8a771328c736.aspx" />
    <id>http://blog.philknows.net/PermaLink,guid,2a3eb8e1-9a7b-4149-8502-8a771328c736.aspx</id>
    <published>2008-04-21T07:50:36.567-04:00</published>
    <updated>2008-04-21T07:51:43.0045-04:00</updated>
    <category term="Certifications" label="Certifications" scheme="http://blog.philknows.net/CategoryView,category,Certifications.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm going to be taking this next week, so I thought I'd post my study notes as I assemble
them.
</p>
        <ul>
          <li>
            <strong>May include but is not limited to: using the ConnectionStringBuilder; leveraging
the ConfigurationManager; protecting the connection string; using Security Support
Provider Interface (SSPI) or SQL Server authentication; correctly addressing the SQL
Server instance; managing “User Instance” and AttachDBfilename</strong>
          </li>
        </ul>
        <p>
The ConnectionStringBuilder objects allow for an abstract way of building a connection
string for ADO.NET.  There is a good <a href="http://blogs.msdn.com/dataaccess/archive/2005/03/30/403926.aspx" target="_blank">writeup</a> on
the data access blog showing basic usage.  There is a <a href="http://msdn2.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder(VS.80).aspx" target="_blank">SqlConnectionStringBuilder</a>, <a href="http://msdn2.microsoft.com/en-us/library/system.data.oledb.oledbconnectionstringbuilder(VS.80).aspx" target="_blank">OleDbConnectionStringBuilder</a>, <a href="http://msdn2.microsoft.com/en-us/library/system.data.odbc.odbcconnectionstringbuilder(VS.80).aspx" target="_blank">OdbcConnectionStringBuilder</a>,
and an <a href="http://msdn2.microsoft.com/en-us/library/system.data.oracleclient.oracleconnectionstringbuilder(VS.80).aspx" target="_blank">OracleConnectionStringBuilder</a>. 
</p>
        <p>
The ConfigurationManager has a specific section for storing connection strings and
the <a href="http://msdn2.microsoft.com/en-us/library/system.configuration.configurationmanager.connectionstrings.aspx" target="_blank">ConnectionStrings</a> property
to manipulate them.  See this article on <a href="http://msdn2.microsoft.com/en-us/library/ms254494(VS.80).aspx" target="_blank">MSDN</a> for
more information.  An area that doesn't get much attention is that the Connection
string configuration can be stored in a separate config file.  See the section
titled "Using external configuration files" to see how to use the configSource property. 
</p>
        <p>
MSDN has an <a href="http://msdn2.microsoft.com/en-us/library/89211k9b(VS.80).aspx" target="_blank">article</a> on
securing configuration strings.  An important part to pay attention to is encrypting
connection string information stored in config files.  Scott Forsyth has a <a href="http://weblogs.asp.net/owscott/archive/2005/07/29/421063.aspx" target="_blank">post</a> on
using aspnet_regiis to protect web.config files.  Daruish Tasdighi has an <a href="http://www.codeproject.com/KB/cs/Configuration_File.aspx" target="_blank">article</a> at
codeproject about protecting the contents using the ConfigurationSection.<a href="http://msdn2.microsoft.com/en-us/library/system.configuration.sectioninformation.protectsection.aspx" target="_blank">ProtectSection</a> / <a href="http://msdn2.microsoft.com/en-us/library/system.configuration.sectioninformation.unprotectsection.aspx" target="_blank">UnprotectSection</a> methods. 
</p>
        <ul>
          <li>
            <strong>Manage connection objects.<br /></strong>
            <strong>May include but is not limited to: managing connection state, managing
connection pool; implementing persistent data connections; implementing Multiple Active
Result Sets (MARS); encrypting and decrypting data</strong>
          </li>
        </ul>
        <p>
Managing connection state.  I think that is knowing that there are methods on
the connection object to open and close the connection.  The connection will
be closed when the connection object is disposed. 
</p>
        <p>
There is a great <a href="http://weblogs.asp.net/sjoseph/archive/2005/03/23/395601.aspx" target="_blank">post</a> by
Sijin Joseph about connection pooling with all the different connection objects. 
I wasn't aware that there is no connection pooling with ODBC using the managed providers. 
Also interesting was that connection pooling for SQL Server was disabled while debugging
in Visual Studio.  Another thing to be aware of is that when using Integrated
Security for SQL Server, the domain/user is added to the list of things that need
to match for a connection to be reused. 
</p>
        <p>
To have a persistent data connection, you disable connection pooling and keep the
instance of the connection object around.  The connection will remain open until
the connection object is disposed or the close method is used. 
</p>
        <p>
Eric Moreau has a <a href="http://www.emoreau.com/Entries/Articles/2006/11/MARS-and-Asynchronous-ADONet.aspx" target="_blank">post</a> on
using MARS.  It is only supported in the SQL Server and Oracle managed providers.  
</p>
        <p>
You can encrypt/decrypt the data passed from the client back and to the database server
by adding the Encrypt keyword to the connection string for SQL Server or using the <a href="http://msdn2.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.encrypt.aspx" target="_blank">Encrypt</a> property
on the SqlConnectionStringBuilder. 
</p>
        <ul>
          <li>
            <strong>Work with data providers. 
<br />
May include but is not limited to: limitations, behaviors, performance, installation
issues, deployment issues; ODBC, Microsoft OLE DB, SqlClient, managed providers, third-party
providers, native providers</strong>
          </li>
        </ul>
        <p>
I guess this is a nice way of saying, "Know everything about ADO.NET".  Some
of the things I'm aware of are the just because you have a managed provider available,
you still need the native dll libraries.  Oracle, for example.  The client
needs the oracle client libraries in order to connect to Oracle.  I mentioned
some of the shortcomings of ODBC above in regards to pooling.  A great source
for third party data providers can be found at the <a href="http://www.mono-project.com/Database_Access" target="_blank">mono
project</a> (Firebird, MySql, SQLLite, PostgresSQL, Mimer, Sybase..)
</p>
        <ul>
          <li>
            <strong>Connect to a data source by using a generic data access interface. 
<br />
May include but is not limited to: System.Data.Common namespace classes</strong>
          </li>
        </ul>
        <p>
The <a href="http://msdn2.microsoft.com/en-us/library/system.data.common.aspx" target="_blank">common</a> namespace
is the abstract definition for all data providers.  You would use this when you
aren't sure which data provider your application will ultimately use.  Using
the <a href="http://msdn2.microsoft.com/en-us/library/system.data.common.dbproviderfactory.aspx" target="_blank">DbProviderFactory</a> you
can instantiate objects for a specific data provider.   Suman Chakrabarti
has a <a href="http://blogs.msdn.com/sumanc/archive/2006/05/11/592596.aspx" target="_blank">post</a> showing
how to use the DbProviderFactory class. 
</p>
        <ul>
          <li>
            <strong>Handle and diagnose database connection exceptions.<br />
May include but is not limited to: implementing try/catch handlers</strong>
          </li>
        </ul>
        <p>
Joydip Kanjilal has a <a href="http://www.sql-server-performance.com/articles/asp_ado/ado_exceptions_p1.aspx" target="_blank">post</a> on
handling exceptions in ADO.NET.  If you catch a SqlException, you would examine
the number property to determine the root cause of the problem.
</p>
        <p>
 
</p>
        <p>
Next -&gt; Section II Selecting and Querying Data
</p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=2a3eb8e1-9a7b-4149-8502-8a771328c736" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Research and Development Progress - Stuck</title>
    <link rel="alternate" type="text/html" href="http://blog.philknows.net/PermaLink,guid,514ae07d-5736-4a18-96d7-99002c3731d0.aspx" />
    <id>http://blog.philknows.net/PermaLink,guid,514ae07d-5736-4a18-96d7-99002c3731d0.aspx</id>
    <published>2007-11-12T15:15:10.421875-05:00</published>
    <updated>2007-11-12T15:15:10.421875-05:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm retrieving data without effort now.  The Linq syntax is starting to sink
in.  I don't have to look at the reference as much anymore.  I think I'm
stuck, though.  I'm trying to send updates back and I was hoping to have one
method per entity called "Save" that would take in the modified entities and use Linq
magic to get it back to the database.  No such magic seems to exist.  I'm
going to have to write a method per operation (Delete, Insert, Update).  What
stinks is that the work required to do this is about the same as it was before using
traditional methods.
</p>
        <p>
This could be a case of programming in a closet and not having anyone currently present
to bounce ideas off of.  I'm going to bounce this off some of the developers
when I go back to work tomorrow.
</p>
        <p>
So far, Linq has a nice intuitive syntax and allows a standardized way of querying
collections.  It's also nice that it supports lazy loading and relationships
natively. However, from a productivity point of view, I'm not sure it adds a lot to
what we currently have.  
</p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=514ae07d-5736-4a18-96d7-99002c3731d0" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Research and Development Progress - Getting Started</title>
    <link rel="alternate" type="text/html" href="http://blog.philknows.net/PermaLink,guid,02efa2c3-93d9-4c09-803b-c3dd06230313.aspx" />
    <id>http://blog.philknows.net/PermaLink,guid,02efa2c3-93d9-4c09-803b-c3dd06230313.aspx</id>
    <published>2007-11-12T14:03:39.203125-05:00</published>
    <updated>2007-11-12T14:03:39.203125-05:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
After getting the images downloaded and setup, I've started to develop.  After
getting over a few minor bumps, I'm underway.  I've used SqlMetal to generate
entity classes from the DB Schema.  Initially, the classes weren't marked as
datacontracts.  This is because I didn't use the /Serialization:Unidirectional
switch.  After I regenerated the entity classes, I'm in business.  My WPF
application binds to the results of a WCF call that retrieves data using Linq to SQL.
</p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=02efa2c3-93d9-4c09-803b-c3dd06230313" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Research and Development Day  - Visual Studio 2008</title>
    <link rel="alternate" type="text/html" href="http://blog.philknows.net/PermaLink,guid,710d4b24-f8de-4642-8c58-ad7870b6188f.aspx" />
    <id>http://blog.philknows.net/PermaLink,guid,710d4b24-f8de-4642-8c58-ad7870b6188f.aspx</id>
    <published>2007-11-12T09:52:59.625-05:00</published>
    <updated>2007-11-12T09:52:59.625-05:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I haven't been very good lately about taking time to learn the new technologies, so
I'm taking today off to learn Visual Studio 2008.  I've found over the years
the best way to learn a new technology is to create a demo application.  I'm
going to be creating a restaurant reservation / order system, using a <a href="http://www.databaseanswers.org/data_models/restaurant_bookings/index.htm" target="_blank">model</a> proposed
by Barry Williams at <a href="http://www.databaseanswers.org/index.htm" target="_blank">Database
Answers</a>.  I hope to post progress as things go along.
</p>
        <p>
I'm really hoping to get into <a href="http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx" target="_blank">Linq</a>,
so I'm going to architect the system using the traditional 3 tiers, DB, Mid Tier and
Presentation.  The Mid Tier should contain all the linq stuff, exposing the objects
via a WCF Service.  I'll start with a smart client presentation, and perhaps
add a web facade later today.  
</p>
        <p>
I'm still waiting for the download to finish; probably another 2 hours.  So right
now I'm going to read all I can about C# 3.0 and Linq.  An article I found very
informative is the <a href="http://msdn2.microsoft.com/en-us/library/bb425822.aspx" target="_blank">Linq
to SQL overview</a> at MSDN.  The nagging issue I'm trying to resolve is, "How
does Linq make life easier for the Mid Tier developer"?  It looks real easy if
you don't mind exposing your data model to service consumers. But if you want to abstract
the data model a bit, it looks like end up writing some code because you lose a lot
of convenience features.
</p>
        <p>
          <a href="http://blog.denoncourtassociates.com/content/binary/WindowsLiveWriter/ResearchandDevelopmentDayVisualStudio200_8AF6/YumDataSchema.jpg">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="YumDataSchema" src="http://blog.denoncourtassociates.com/content/binary/WindowsLiveWriter/ResearchandDevelopmentDayVisualStudio200_8AF6/YumDataSchema_thumb.jpg" width="242" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=710d4b24-f8de-4642-8c58-ad7870b6188f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>New Hampshire DotNet (NHDN) User Group on summer vacation</title>
    <link rel="alternate" type="text/html" href="http://blog.philknows.net/PermaLink,guid,2aa6734d-7b3d-411b-8224-4b253fbab58c.aspx" />
    <id>http://blog.philknows.net/PermaLink,guid,2aa6734d-7b3d-411b-8224-4b253fbab58c.aspx</id>
    <published>2007-06-23T12:44:41.267625-04:00</published>
    <updated>2007-06-23T12:46:37.002-04:00</updated>
    <category term="Development" label="Development" scheme="http://blog.philknows.net/CategoryView,category,Development.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
From <a href="http://www.4square.net">Pat Tormey</a>, Director of NHDN:
</p>
        <p>
Summer Recess..And Study Groups
</p>
        <p>
During the summer I'll be forming Study Groups to meet for particular topics.
</p>
        <p>
Personally I'll be studying the SmartClient Software Factory. If you are interested,
drop me a note.. We'll be meeting at my office in Derry NH on Monday evenings
</p>
        <p>
If you'd like to host a Study Group or have an idea for one please drop <a href="mailto:PTormey@4square.net">me </a>a
note and I'll see if we can find some people in your area with the same interests.
</p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=2aa6734d-7b3d-411b-8224-4b253fbab58c" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Bob &amp; Chris' MSDN Roadshow - Back for More!</title>
    <link rel="alternate" type="text/html" href="http://blog.philknows.net/PermaLink,guid,062d986d-2de3-4b5e-a78b-58dc2c6a60bf.aspx" />
    <id>http://blog.philknows.net/PermaLink,guid,062d986d-2de3-4b5e-a78b-58dc2c6a60bf.aspx</id>
    <published>2007-05-07T11:51:33.093-04:00</published>
    <updated>2007-05-07T11:54:58.625-04:00</updated>
    <category term="ASP.NET" label="ASP.NET" scheme="http://blog.philknows.net/CategoryView,category,ASP.NET.aspx" />
    <content type="html">&lt;p&gt;
For those of you local to New Hampshire, Chris Bowen and Bob Familiar will be back
in town speaking about AJAX.&amp;nbsp; I've been working with a client on an AJAX site
and have been very impressed with the results.
&lt;/p&gt;
&lt;p&gt;
Here's the information for the &lt;a href="http://blogs.msdn.com/cbowen/archive/2007/04/27/bob-chris-msdn-roadshow-back-for-more.aspx"&gt;Roadshow&lt;/a&gt;:
&lt;/p&gt;
&lt;h5 class="posthead pageTitle"&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/blogfiles/cbowen/WindowsLiveWriter/BobChrisMSDNRoadshowBackforMore_EF8F/BobChrisRoadshowLogo2.jpg" mce_href="http://blogs.msdn.com/blogfiles/cbowen/WindowsLiveWriter/BobChrisMSDNRoadshowBackforMore_EF8F/BobChrisRoadshowLogo2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=118 src="http://blogs.msdn.com/blogfiles/cbowen/WindowsLiveWriter/BobChrisMSDNRoadshowBackforMore_EF8F/BobChrisRoadshowLogo2_thumb.jpg" width=539 border=0 mce_src="http://blogs.msdn.com/blogfiles/cbowen/WindowsLiveWriter/BobChrisMSDNRoadshowBackforMore_EF8F/BobChrisRoadshowLogo2_thumb.jpg"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
We're back in the saddle again, gearing up for another five-city tour to bring deep
technical content to a projection screen near you!
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Dates, locations, and registration links are at the bottom of this post.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Note that we've changed venues from Farmington to Hartford, CT&amp;nbsp;and Manchester
to Nashua, NH.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
See you on the road!
&lt;/p&gt;
&lt;p&gt;
-Chris
&lt;/p&gt;
&lt;p&gt;
----------------------------------------------------------------------------------------------------------
&lt;/p&gt;
&lt;p&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: arial"&gt;&lt;font size=3&gt;&lt;font face=Calibri&gt;Bob
Familiar and Chris Bowen are two guys who love to write code and can’t stop talking
about it. And now they’ve decided to take their long winded rants and questionable
demos to a city near you. And if you were at our last event, you know the line about
questionable demos is no joke!&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: arial"&gt;&lt;font size=+0&gt;&lt;font face=Calibri&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;table class="" style="WIDTH: 404pt; BORDER-COLLAPSE: collapse" cellspacing=0 cellpadding=0 width=539 border=0&gt;
&lt;colgroup&gt;
&lt;col style="WIDTH: 72pt; mso-width-source: userset; mso-width-alt: 3510" width=96&gt;
&lt;col style="WIDTH: 332pt; mso-width-source: userset; mso-width-alt: 16201" width=443&gt;
&lt;tbody&gt;
&lt;tr style="HEIGHT: 36.75pt; mso-height-source: userset" height=49&gt;
&lt;td class=xl72 style="BORDER-RIGHT: black 1pt solid; BORDER-TOP: black 1pt solid; BORDER-LEFT: black 1pt solid; WIDTH: 404pt; BORDER-BOTTOM: black 1pt solid; HEIGHT: 36.75pt; BACKGROUND-COLOR: #c6d9f1" width=539 colspan=2 height=49&gt;
&lt;font size=3&gt;&lt;strong&gt;AGENDA: AJAX, Extensible Scrubbing Bubbles and that Cross Browser
Cleansing Motion&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 16.5pt; mso-yfti-irow: 1" height=22&gt;
&lt;td class=xl65 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT: black 1pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; HEIGHT: 16.5pt; BACKGROUND-COLOR: transparent" width=96 height=22&gt;
&lt;span style="LINE-HEIGHT: 115%; mso-bidi-font-size: 12pt"&gt;&lt;font size=3&gt;&lt;strong&gt;8:30am&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td class=xl66 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=443&gt;
&lt;span style="LINE-HEIGHT: 115%; mso-bidi-font-size: 12pt"&gt;&lt;font size=3&gt;&lt;strong&gt;Arrive,
check in, grab a nosh and a seat&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt; mso-height-source: userset; mso-yfti-irow: 2" height=21&gt;
&lt;td class=xl74 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT: black 1pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: black; BORDER-BOTTOM: black 1pt solid; HEIGHT: 117.75pt; BACKGROUND-COLOR: transparent" width=96 height=157 rowspan=2&gt;
&lt;font size=3&gt;&lt;strong&gt;9:00 – 10:15&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl68 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; BORDER-BOTTOM-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=443&gt;
&lt;strong&gt;&lt;font size=3&gt;XML and the Database&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 102pt; mso-height-source: userset" height=136&gt;
&lt;td class=xl69 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; HEIGHT: 102pt; BACKGROUND-COLOR: transparent" width=443 height=136&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: arial"&gt;&lt;font size=3&gt;SQL
Server 2005 offers architects and developers a slew of great features for creating
data driven solutions. For this session we will focus on the XML features including
XML Indexes, XQuery, the XML Datatype, the FOR XML clause and validating XML within
the database using XSD. The use cases for these XML capabilities will also be discussed.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 16.5pt; mso-yfti-irow: 3" height=22&gt;
&lt;td class=xl65 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT: black 1pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; HEIGHT: 16.5pt; BACKGROUND-COLOR: transparent" width=96 height=22&gt;
&lt;span style="LINE-HEIGHT: 115%; mso-bidi-font-size: 12pt"&gt;&lt;font size=3&gt;&lt;strong&gt;10:15
– 10:30&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td class=xl66 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=443&gt;
&lt;span style="LINE-HEIGHT: 115%; mso-bidi-font-size: 12pt"&gt;&lt;font size=3&gt;&lt;strong&gt;&amp;lt;Break
/&amp;gt;&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 18.75pt; mso-height-source: userset; mso-yfti-irow: 4" height=25&gt;
&lt;td class=xl74 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT: black 1pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: black; BORDER-BOTTOM: black 1pt solid; HEIGHT: 179.25pt; BACKGROUND-COLOR: transparent" width=96 height=239 rowspan=2&gt;
&lt;font size=3&gt;&lt;strong&gt;10:30 – 12:00&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl68 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; BORDER-BOTTOM-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=443&gt;
&lt;strong&gt;&lt;font size=3&gt;What’s New From The Patterns &amp;amp; Practices Group?&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 160.5pt; mso-height-source: userset" height=214&gt;
&lt;td class=xl69 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; HEIGHT: 160.5pt; BACKGROUND-COLOR: transparent" width=443 height=214&gt;
&lt;font size=3&gt;Like doing things the hard way?&amp;nbsp; Well, unfortunately for you this
session is all about making your life as a developer or architect easier.&amp;nbsp; The
Patterns &amp;amp; Practices group keeps churning out great tools, reference code, and
guidance to show you Microsoft's recommendations for designing, developing and deploying
great applications.&amp;nbsp; We'll cover Enterprise Library 3.0, various Software Factories,
the Guidance Automation Toolkit and more, explaining how they could fit in with your
development efforts.&amp;nbsp; If you suddenly find the hard way less thrilling, don't
say we didn't warn you!&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 26.25pt; mso-height-source: userset; mso-yfti-irow: 5" height=35&gt;
&lt;td class=xl65 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT: black 1pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; HEIGHT: 26.25pt; BACKGROUND-COLOR: transparent" width=96 height=35&gt;
&lt;span style="LINE-HEIGHT: 115%; mso-bidi-font-size: 12pt"&gt;&lt;font size=3&gt;&lt;strong&gt;12:00-1:00&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td class=xl66 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=443&gt;
&lt;span style="LINE-HEIGHT: 115%; mso-bidi-font-size: 12pt"&gt;&lt;font size=3&gt;&lt;strong&gt;Grab
a lunch and search for patterns in the carpet&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 33.75pt; mso-height-source: userset; mso-yfti-irow: 6" height=45&gt;
&lt;td class=xl74 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT: black 1pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: black; BORDER-BOTTOM: black 1pt solid; HEIGHT: 193.5pt; BACKGROUND-COLOR: transparent" width=96 height=258 rowspan=2&gt;
&lt;font size=3&gt;&lt;strong&gt;1:00 – 2:15&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl68 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; BORDER-BOTTOM-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=443&gt;
&lt;strong&gt;&lt;font size=3&gt;Microsoft Silverlight (aka Windows Presentation Foundation /
Everywhere)&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 159.75pt; mso-height-source: userset" height=213&gt;
&lt;td class=xl69 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; HEIGHT: 159.75pt; BACKGROUND-COLOR: transparent" width=443 height=213&gt;
&lt;font size=3&gt;At our last meeting, we dug into the Windows Presentation Foundation,
a .Net Framework development library that sits overtop of DirectX allowing one to
create the next generation of Windows user interfaces using advanced graphics, animation,
rich documents and multimedia along with traditional UI controls. Windows Silverlight
is a subset of the capabilities of WPF that can be used within browser based applications
on the PC and the Mac. This session will discuss the architecture of Microsoft Silverlight
and demonstrate how integrate XAML into your browser-based applications.&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 27.75pt; mso-height-source: userset; mso-yfti-irow: 7" height=37&gt;
&lt;td class=xl65 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT: black 1pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; HEIGHT: 27.75pt; BACKGROUND-COLOR: transparent" width=96 height=37&gt;
&lt;span style="LINE-HEIGHT: 115%; mso-bidi-font-size: 12pt"&gt;&lt;font size=3&gt;&lt;strong&gt;2:15-2:30&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td class=xl66 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=443&gt;
&lt;span style="mso-bidi-font-size: 12pt"&gt;&lt;font size=3&gt;&lt;strong&gt;Take a break and animate&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 20.25pt; mso-height-source: userset; mso-yfti-irow: 8" height=27&gt;
&lt;td class=xl74 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT: black 1pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: black; BORDER-BOTTOM: black 1pt solid; HEIGHT: 153pt; BACKGROUND-COLOR: transparent" width=96 height=204 rowspan=2&gt;
&lt;font size=3&gt;&lt;strong&gt;2:30 – 3:45&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl68 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; BORDER-BOTTOM-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=443&gt;
&lt;strong&gt;&lt;font size=3&gt;ASP.NET AJAX – Going Deeper&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 132.75pt; mso-height-source: userset" height=177&gt;
&lt;td class=xl69 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; HEIGHT: 132.75pt; BACKGROUND-COLOR: transparent" width=443 height=177&gt;
&lt;font size=3&gt;If you're developing applications for the web, you've likely heard about
AJAX and how it can improve the usability and functionality of your site.&amp;nbsp; In
this session, we'll quickly introduce the main concepts of ASP.NET AJAX and then we'll
roll up our sleeves for other details that will help you when you're in the trenches
with AJAX.&amp;nbsp; We'll talk about the client side library, Silverlight (formerly codenamed
WPF/E) integration, enabling and invoking server methods and web services, debugging,
best practices and more.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt; mso-yfti-irow: 10" height=21&gt;
&lt;td class=xl67 style="BORDER-RIGHT: black 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: black 1pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; HEIGHT: 15.75pt; BACKGROUND-COLOR: transparent" width=96 height=21&gt;
&lt;span style="LINE-HEIGHT: 115%"&gt;&lt;font size=3&gt;&lt;strong&gt;3:45 – 4:00&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td class=xl68 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; BORDER-BOTTOM-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=443&gt;
&lt;strong&gt;&lt;font size=3&gt;Zune Giveaway&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt; mso-yfti-irow: 17; mso-yfti-lastrow: yes" height=21&gt;
&lt;td class=xl70 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT: black 1pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; HEIGHT: 15.75pt; BACKGROUND-COLOR: transparent" width=96 height=21&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl71 style="BORDER-RIGHT: black 1pt solid; BORDER-LEFT-COLOR: #f0f0f0; WIDTH: 332pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=443&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p mce_keep="true"&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;table class="" style="WIDTH: 384pt; BORDER-COLLAPSE: collapse" cellspacing=0 cellpadding=0 width=512 border=0&gt;
&lt;colgroup&gt;
&lt;col style="WIDTH: 148pt; mso-width-source: userset; mso-width-alt: 7204" width=197&gt;
&lt;col style="WIDTH: 80pt; mso-width-source: userset; mso-width-alt: 3913" width=107&gt;
&lt;col style="WIDTH: 84pt; mso-width-source: userset; mso-width-alt: 4096" width=112&gt;
&lt;col style="WIDTH: 72pt; mso-width-source: userset; mso-width-alt: 3510" width=96&gt;
&lt;tbody&gt;
&lt;tr style="HEIGHT: 15.75pt" height=21&gt;
&lt;td class=xl65 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; HEIGHT: 15.75pt; BACKGROUND-COLOR: #8db3e2" width=197 height=21&gt;
&lt;font size=3&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl67 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 80pt; BACKGROUND-COLOR: #8db3e2" width=107&gt;
&lt;font size=3&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl67 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 84pt; BACKGROUND-COLOR: #8db3e2" width=112&gt;
&lt;font size=3&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl67 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BACKGROUND-COLOR: #8db3e2" width=96&gt;
&lt;font size=3&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 32.25pt" height=43&gt;
&lt;td class=xl66 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 32.25pt; BACKGROUND-COLOR: #8db3e2" width=197 height=43&gt;
&lt;font size=3&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl68 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 80pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: #8db3e2" width=107&gt;
&lt;font size=3&gt;&lt;strong&gt;Date&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl68 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 84pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: #8db3e2" width=112&gt;
&lt;font size=3&gt;&lt;strong&gt;Time&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl68 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: #8db3e2" width=96&gt;
&lt;strong&gt;&lt;font size=3&gt;Registration&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 18.75pt; mso-height-source: userset" height=25&gt;
&lt;td class=xl69 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: #f0f0f0 0.5pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; HEIGHT: 18.75pt; BACKGROUND-COLOR: transparent" width=197 height=25&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font size=3&gt;Sheraton Burlington
Hotel&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td class=xl79 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 80pt; BORDER-TOP-COLOR: windowtext; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=107 rowspan=4&gt;
&lt;font size=3&gt;May 8&lt;font class=font6&gt;&lt;sup&gt;th&lt;/sup&gt;&lt;/font&gt;&lt;font class=font5&gt;, 2007&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl79 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 84pt; BORDER-TOP-COLOR: windowtext; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=112 rowspan=4&gt;
&lt;font size=3&gt;8:30am-4:00pm&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl72 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: #f0f0f0 0.5pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;a href="http://www.msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032339883&amp;amp;culture=en-US" mce_href="http://www.msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032339883&amp;amp;culture=en-US"&gt;&lt;font size=3&gt;&lt;font color=#0066cc&gt;Register!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 16.5pt; mso-height-source: userset" height=22&gt;
&lt;td class=xl70 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; HEIGHT: 16.5pt; BACKGROUND-COLOR: transparent" width=197 height=22&gt;
&lt;font size=3&gt;870 Williston Road&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl73 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 18pt; mso-height-source: userset" height=24&gt;
&lt;td class=xl70 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; HEIGHT: 18pt; BACKGROUND-COLOR: transparent" width=197 height=24&gt;
&lt;font size=3&gt;Burlington Vermont&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl73 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;font size=3&gt;Event ID:&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 16.5pt" height=22&gt;
&lt;td class=xl71 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 16.5pt; BACKGROUND-COLOR: transparent" width=197 height=22&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl74 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent" align=right width=96&gt;
&lt;font size=3&gt;1032339883&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 18.75pt; mso-height-source: userset" height=25&gt;
&lt;td class=xl69 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: #f0f0f0 0.5pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; HEIGHT: 18.75pt; BACKGROUND-COLOR: transparent" width=197 height=25&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font size=3&gt;RIT INN &amp;amp;
Conference Center&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td class=xl79 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 80pt; BORDER-TOP-COLOR: windowtext; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=107 rowspan=4&gt;
&lt;font size=3&gt;May 10&lt;font class=font6&gt;&lt;sup&gt;th&lt;/sup&gt;&lt;/font&gt;&lt;font class=font5&gt;, 2007&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl79 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 84pt; BORDER-TOP-COLOR: windowtext; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=112 rowspan=4&gt;
&lt;font size=3&gt;8:30am-4:00pm&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl72 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: #f0f0f0 0.5pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032339884&amp;amp;Culture=en-US" mce_href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032339884&amp;amp;Culture=en-US"&gt;&lt;font size=3&gt;&lt;font color=#800080&gt;Register!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15pt; mso-height-source: userset" height=20&gt;
&lt;td class=xl70 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; HEIGHT: 15pt; BACKGROUND-COLOR: transparent" width=197 height=20&gt;
&lt;font size=3&gt;5257 Henrietta Road&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl73 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt; mso-height-source: userset" height=21&gt;
&lt;td class=xl70 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; HEIGHT: 15.75pt; BACKGROUND-COLOR: transparent" width=197 height=21&gt;
&lt;font size=3&gt;W. Henrietta New York&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl73 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;font size=3&gt;Event ID:&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 16.5pt" height=22&gt;
&lt;td class=xl71 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 16.5pt; BACKGROUND-COLOR: transparent" width=197 height=22&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl74 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent" align=right width=96&gt;
&lt;font size=3&gt;1032339884&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 16.5pt; mso-height-source: userset" height=22&gt;
&lt;td class=xl69 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: #f0f0f0 0.5pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; HEIGHT: 16.5pt; BACKGROUND-COLOR: transparent" width=197 height=22&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font size=3&gt;Sheraton Hartford
Hotel&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td class=xl79 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 80pt; BORDER-TOP-COLOR: windowtext; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=107 rowspan=4&gt;
&lt;font size=3&gt;May 14&lt;font class=font6&gt;&lt;sup&gt;th&lt;/sup&gt;&lt;/font&gt;&lt;font class=font5&gt;, 2007&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl79 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 84pt; BORDER-TOP-COLOR: windowtext; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=112 rowspan=4&gt;
&lt;font size=3&gt;8:30am-4:00pm&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl72 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: #f0f0f0 0.5pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032339886&amp;amp;Culture=en-US" mce_href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032339886&amp;amp;Culture=en-US"&gt;&lt;font size=3&gt;&lt;font color=#0066cc&gt;Register!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 18pt; mso-height-source: userset" height=24&gt;
&lt;td class=xl70 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; HEIGHT: 18pt; BACKGROUND-COLOR: transparent" width=197 height=24&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font size=3&gt;100 East River
Drive&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td class=xl73 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 18pt; mso-height-source: userset" height=24&gt;
&lt;td class=xl70 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; HEIGHT: 18pt; BACKGROUND-COLOR: transparent" width=197 height=24&gt;
&lt;font size=3&gt;Hartford Connecticut&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl73 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;font size=3&gt;Event ID:&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt" height=21&gt;
&lt;td class=xl71 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15.75pt; BACKGROUND-COLOR: transparent" width=197 height=21&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl75 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent" align=right width=96&gt;
&lt;font face=Verdana size=2&gt;1032339886&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 18pt; mso-height-source: userset" height=24&gt;
&lt;td class=xl76 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: #f0f0f0 0.5pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; HEIGHT: 18pt; BACKGROUND-COLOR: transparent" width=197 height=24&gt;
&lt;font size=3&gt;MESDA&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl79 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 80pt; BORDER-TOP-COLOR: windowtext; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=107 rowspan=4&gt;
&lt;font size=3&gt;May 15&lt;font class=font6&gt;&lt;sup&gt;th&lt;/sup&gt;&lt;/font&gt;&lt;font class=font5&gt;, 2007&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl79 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 84pt; BORDER-TOP-COLOR: windowtext; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=112 rowspan=4&gt;
&lt;font size=3&gt;8:30am-4:00pm&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl72 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: #f0f0f0 0.5pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032339885&amp;amp;Culture=en-US" mce_href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032339885&amp;amp;Culture=en-US"&gt;&lt;font color=#0066cc size=3&gt;Register!&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 18.75pt; mso-height-source: userset" height=25&gt;
&lt;td class=xl77 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; HEIGHT: 18.75pt; BACKGROUND-COLOR: transparent" width=197 height=25&gt;
&lt;font size=3&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;506 Main Street&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl73 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 19.5pt; mso-height-source: userset" height=26&gt;
&lt;td class=xl77 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; HEIGHT: 19.5pt; BACKGROUND-COLOR: transparent" width=197 height=26&gt;
&lt;font size=3&gt;Westbrook, ME 04092&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl73 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;font size=3&gt;Event ID:&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 16.5pt" height=22&gt;
&lt;td class=xl71 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 16.5pt; BACKGROUND-COLOR: transparent" width=197 height=22&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl78 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent" align=right width=96&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font size=3&gt;1032339885&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 18.75pt; mso-height-source: userset" height=25&gt;
&lt;td class=xl69 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: #f0f0f0 0.5pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; HEIGHT: 18.75pt; BACKGROUND-COLOR: transparent" width=197 height=25&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font size=3&gt;Sheraton Nashua
Hotel&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td class=xl79 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 80pt; BORDER-TOP-COLOR: windowtext; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=107 rowspan=4&gt;
&lt;font size=3&gt;May 17&lt;font class=font6&gt;&lt;sup&gt;th&lt;/sup&gt;&lt;/font&gt;&lt;font class=font5&gt;, 2007&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl79 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 84pt; BORDER-TOP-COLOR: windowtext; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent" width=112 rowspan=4&gt;
&lt;font size=3&gt;8:30am-4:00pm&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl72 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-TOP: #f0f0f0 0.5pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032339887&amp;amp;Culture=en-US" mce_href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032339887&amp;amp;Culture=en-US"&gt;&lt;font size=3&gt;&lt;font color=#0066cc&gt;Register!&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 18pt; mso-height-source: userset" height=24&gt;
&lt;td class=xl70 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; HEIGHT: 18pt; BACKGROUND-COLOR: transparent" width=197 height=24&gt;
&lt;span style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;font size=3&gt;11 Tara Boulevard&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td class=xl73 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 21pt; mso-height-source: userset" height=28&gt;
&lt;td class=xl70 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; HEIGHT: 21pt; BACKGROUND-COLOR: transparent" width=197 height=28&gt;
&lt;font size=3&gt;Nashua New Hampshire&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl73 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-BOTTOM-COLOR: #f0f0f0; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BACKGROUND-COLOR: transparent" width=96&gt;
&lt;font size=3&gt;Event ID:&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="HEIGHT: 15.75pt" height=21&gt;
&lt;td class=xl71 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: windowtext 1pt solid; WIDTH: 148pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; HEIGHT: 15.75pt; BACKGROUND-COLOR: transparent" width=197 height=21&gt;
&lt;font size=3&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;
&lt;td class=xl75 style="BORDER-RIGHT: windowtext 1pt solid; BORDER-LEFT: #f0f0f0 0.5pt solid; WIDTH: 72pt; BORDER-TOP-COLOR: #f0f0f0; BORDER-BOTTOM: windowtext 1pt solid; BACKGROUND-COLOR: transparent" align=right width=96&gt;
&lt;font face=Verdana size=2&gt;1032339887&lt;/font&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&gt;&gt;&gt;
&lt;/h5&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=062d986d-2de3-4b5e-a78b-58dc2c6a60bf" /&gt;</content>
  </entry>
  <entry>
    <title>Reviewing Databases</title>
    <link rel="alternate" type="text/html" href="http://blog.philknows.net/PermaLink,guid,49db5acf-a7d6-4c64-8727-50213033e338.aspx" />
    <id>http://blog.philknows.net/PermaLink,guid,49db5acf-a7d6-4c64-8727-50213033e338.aspx</id>
    <published>2007-03-21T11:59:42.77875-04:00</published>
    <updated>2007-03-21T12:03:56.4975-04:00</updated>
    <category term="Development" label="Development" scheme="http://blog.philknows.net/CategoryView,category,Development.aspx" />
    <category term="SQL" label="SQL" scheme="http://blog.philknows.net/CategoryView,category,SQL.aspx" />
    <content type="html">&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;There is plenty of guidance on reviewing code.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;(Look
at CodeFrisk.Com/Guidance.aspx for some links).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;I’ve
found that &lt;u&gt;the&lt;/u&gt; one absolutely most critical piece of a traditional application
never undergoes any type of review.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Most
applications live and die by their database, and yet it rarely gets reviewed.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If
you’re lucky (although you might not think so), you’ll have a DBA check things over,
but they are mostly concerned with performance.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Maintainability
and adherence to standards are not at the top of their list.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I’ve listed some of the things I look at when I review a database:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;-Appropriate Normalization&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;It’s tough to say what is and isn’t appropriate normalization.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You’ll
know it when you see it.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;Stuff
like having a separate table for the 
&lt;st1:country-region w:st="on"&gt;
&lt;st1:place w:st="on"&gt;US&lt;/st1:place&gt;
&lt;/st1:country-region&gt;
states or one called Gender is usually a red flag of having gone too far.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Conversely,
having the same field in multiple tables is usually a sign that normalization hasn’t
gone far enough.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Is all access through stored procedures&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Most development shops have a policy that says, “All data access
shall be done through stored procedures”.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If
you have that policy, check to make sure this is being adhered to.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;An
easy way to check this is to deny access to the tables and allow access to the stored
procedures.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Look for premature optimization&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I’ve seen times when developers are using Join hints or locking
hints in their query.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;“If I force the
query to use a merge join, it goes 5x faster”.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Meaning
it goes 5 times faster on the development box which has far fewer rows and 3 fewer
processors than the production machine.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Once
it goes the to production machine, there’s a good chance that SQL will decide upon
a different plan to execute the statement, making the hint destructive on the production
machine&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Are objects secured and scripted&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Eventually, when you roll the database into a production environment,
access to the database will (or should) be locked down.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Is
the development environment the same?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Are
the scripts that you have under source control (you do have the database creation
scripts under source control don’t you?)&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;include
securing of the object.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Are updates applied in the same order&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I can think of no better way to create an application that suffers
from chronic &lt;/font&gt;&lt;a href="http://www.sql-server-performance.com/deadlocks.asp"&gt;&lt;font color=#800080&gt;deadlock&lt;/font&gt;&lt;/a&gt;&lt;font color=#000000&gt; situations
than to have one stored procedure update tables A, B, &amp;amp; C (in that order) and
have another stored procedure update tables C, B, &amp;amp; A (in that order).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Updates
should always be applied in the same order.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Otherwise,
you’re increasing the chance that a row in A will be locked by one stored proc while
waiting for a row in table C locked by the other stored proc.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Generally
the order is enforced naturally because you have to respect foreign keys, but every
now and then I come across this.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Biblical stored procedures&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;By biblical, I mean volume, not divinely inspired.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I’m
referring to stored procedures that use up more than one printer cartridge if you
were to print it.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Nowadays when you see
a large stored procedure, it’s one of two things:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;1) Embedded business logic – This seems to be a remnant of client
server programming where you were forced to put your business logic in the stored
procedure.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s arguable about whether
or the database is the best place to keep your business logic.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Most
people (including me) believe it’s not.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Business
logic should be kept in a business logic component that validates, enforces and calculates.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;2) Poorly defined schema.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Most
validations that you see taking place in stored procs could be controlled by using
schema constructs like check constraints, triggers, foreign keys and defaults.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Put
that type of information in the schema where it can be enforced consistently everywhere
rather than burdening the stored procedure.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Does the Development database match what’s in source control&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;To reinforce this, database schema objects need to be kept under
source control.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Having a database backup
plan isn’t sufficient.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Putting the objects
in source control allow you to manage changes and releases much more effectively.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Otherwise
you’ll be struggling to determine which objects have changed in the development database
and need to be deployed, and figuring out who added a field to table.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Keeping
the schema under source control used to be a very manual process, but now tools like &lt;/font&gt;&lt;a href="http://msdn2.microsoft.com/en-us/teamsystem/aa718764.aspx"&gt;&lt;font color=#800080&gt;Visual
Studio for Database Professionals&lt;/font&gt;&lt;/a&gt;&lt;font color=#000000&gt; make this painless.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;--Cloned stored procedures / Views.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;This is very common.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;When
you need data, most developers don’t look to see if there is an existing stored procedure
or view that satisfies their needs.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;They’ll
create a brand new one.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Then you end
up with a database that has 3 different stored procedures that get a customer record
by its ID.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Now all these duplicated procs
have to be maintained.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Best prevention
for this is to have a strict naming convention for your procedures.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Those are some of the quick patterns I look for when reviewing
a database.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;What are the kind of things
that stand out when you look over a database?&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;font color=#000000&gt;Wouldn’t you feel comfortable
having your code reviewed by an expert?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Go
to &lt;/font&gt;&lt;a href="http://www.codefrisk.com/"&gt;&lt;font color=#800080&gt;CodeFrisk.com&lt;/font&gt;&lt;/a&gt;&lt;font color=#000000&gt; to
see how I can proofread your code at a reasonable price.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=49db5acf-a7d6-4c64-8727-50213033e338" /&gt;</content>
  </entry>
  <entry>
    <title>Introduction to SQL Data Mining</title>
    <link rel="alternate" type="text/html" href="http://blog.philknows.net/PermaLink,guid,4d9f3402-f3f8-444e-bf5b-6e866e128d8f.aspx" />
    <id>http://blog.philknows.net/PermaLink,guid,4d9f3402-f3f8-444e-bf5b-6e866e128d8f.aspx</id>
    <published>2007-03-19T08:06:22.497-04:00</published>
    <updated>2007-03-20T08:08:09.169375-04:00</updated>
    <category term="Speaking Engagements" label="Speaking Engagements" scheme="http://blog.philknows.net/CategoryView,category,Speaking%2BEngagements.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
On Wednesday, March21st, I'll be giving an introductary talk on Data Mining for the <a href="http://blog.denoncourtassociates.com/ct.ashx?id=3771176e-b6d4-404d-922f-5c8056e3612a&amp;url=http%3a%2f%2fbostonaccessday.com%2f"><font color="#003399">Boston
Access User's Group</font></a>.  I was scheduled to do this last month, but I
got sick.
</p>
        <p>
          <em>Introduction to Data Mining in SQL 2005</em>
          <br />
Data mining is the act of deriving patterns and trend that exist in your data. 
SQL 2005 provides a host of different algorithms that allow you to explore your data
for hidden patterns and trends.  Popular uses of data mining models are used
to predict future sales, target customers for marketing, examine patterns of navigation
through a website, and group products that are likely to be purchased together.
</p>
        <p>
Phil will give an introduction to data mining concepts, an overview of the different
algorithms, and how to incorporate the data mining results into your applications.
</p>
        <p>
Phil Denoncourt is a .NET consultant, who over the past 5 years has developed a wide
range of .NET applications and has over 20 years experience writing software. He is
the leader of the New England C# User Group and has acquired the MCPD, MCTS, MCSD,
MCDBA, MCSE, MCAD, MCSA and MCP+SB certifications. When not coding, or spending time
with his wife and 5 children, Phil is an avid fan of the Boston Red Sox and New England
Patriots.
</p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=4d9f3402-f3f8-444e-bf5b-6e866e128d8f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Code Reviews</title>
    <link rel="alternate" type="text/html" href="http://blog.philknows.net/PermaLink,guid,4d2b767e-9169-451b-8a23-b7de47092027.aspx" />
    <id>http://blog.philknows.net/PermaLink,guid,4d2b767e-9169-451b-8a23-b7de47092027.aspx</id>
    <published>2007-03-18T07:18:14.991-04:00</published>
    <updated>2007-03-18T07:24:09.850375-04:00</updated>
    <category term="Development" label="Development" scheme="http://blog.philknows.net/CategoryView,category,Development.aspx" />
    <content type="html">&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;As a developer, I love to write code.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Getting
involved with a problem, putting my head down, coming up a solution and getting immersed
in implementing it is an awesome feeling.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I also enjoy reading code.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I
like to look at a set of code and try to understand what the developer was thinking.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You
can tell a lot about how a person thinks by reading their code.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;To
me, participating in code reviews is a lot of fun.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I originally wrote these articles 6 months ago when I was about
to launch a new service to review code (For details, go to &lt;/font&gt;&lt;a href="http://www.codefrisk.com/"&gt;http://www.codefrisk.com/&lt;/a&gt;&lt;font color=#000000&gt;).&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I’m
now much too busy to review code, but these articles might be of value, so I’m uploading
them now.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;I’ll be posting a set of articles
about code reviews, best practices, coding standards…&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Here’s
the first article in the series:&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Coding Standards – How to write a useful Coding Standard document&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Coding standards are an agreement in a development team on how
the code for an application will be structured.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;They
promote consistency and easier maintenance.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;A
well-written and enforced standards policy will reduce the time that it takes for
new developers to feel comfortable with an application.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I’ve worked with many organizations over the years, most of which
have some sort of coding standards documentation.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The
needs of each organization are very different.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Some
organizations sold their source code, so they needed to make sure there was a very
high level of consistency.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Others were
in regulated industries and needed to conform to various practices.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;Others
were small shops that didn’t see tremendous value in having standards.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;The standards document had varying degrees of success.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Some
negative factors in coding standards I’ve seen are:&lt;/font&gt;
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in" type=disc&gt;
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Aggressively guarded by one person&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Enforcing rules that were necessary in older technologies, but
no longer hold relevance (Especially if they were burned by the problem)&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Too slim&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Too thick&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Too strict&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Begun, but never completed.&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Finished, but never enforced.&lt;/font&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;I’ve written a few coding standards docs and want to share what
I’ve found useful, and what you should try to avoid.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;First of all, if you’re the person tasked with writing the documentation,
make sure that you involve the rest of the development team as much as possible.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You
shouldn’t take the Moses approach; climb a mountain and come down with a set of commandments.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If
the developers on your team aren’t consulted on the coding standards, you’ll see a
lot of them not adhering to them.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;These
aren’t &lt;u&gt;your&lt;/u&gt; coding standards; they are the &lt;u&gt;teams&lt;/u&gt; coding standards.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Recognize that you aren’t writing a document with a stone and
chisel.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Coding standards must evolve
as your team has learned new techniques.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s
also not uncommon to see coding standard docs that never get finished because the
author feels the document must be 100% “complete” before they release it.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Take
an iterative approach and get the document out as soon as possible and continue to
refine it.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It’s impossible to get it
all right the first, second, or even tenth time.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;You’ll
probably find that most code reviews will result in changes to the standards document.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Kick off a discussion for an hour or two and brainstorm with the
development team about possible standards.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;There
will be contention.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If the team can’t
come to an agreement after 5 minutes, table the discussion point for later.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If
people have time to think about something, they will usually be able to justify or
back off on their opinion.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;The
important thing is to limit the time of the discussion in the interests of getting
an initial version within the same day.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Good
developers will talk about coding all day.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Areas to discuss would include:&lt;/font&gt;
&lt;/p&gt;
&lt;ul style="MARGIN-TOP: 0in" type=disc&gt;
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Naming standards – Camel, Pascal, Hungarian, Dewey Decimal System?&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Documentation expectations – XML Documentation, when/where to
put comments, class headers…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Design Patterns that are expected to be used – Factories, Observers,
Decorators…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Automated Unit Testing strategy – TDD? Tool type, Code Coverage…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Exception handling – Handling, Reporting…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Use of constants/resource files – Yes, No?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;One
resource for the entire project, one constant class?&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Complexity limits for methods - &amp;gt; 25 is a lot of branches&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Data access methods - Stored Procs, Dynamic SQL, DataSets, ORM,
Async, Transaction strategy…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Common components to use – Enterprise Library, Log4net, Infragistics…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Localization strategy -&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Needed?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Roll
your own or use .NET framework...&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Versioning – Versioning assemblies, strong name, signing, delay
signing…&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
&lt;font color=#000000&gt;Build strategy – Nightly builds, one solution or many solutions,
creating references&lt;/font&gt; 
&lt;li class=MsoNormal style="MARGIN: 0in 0in 0pt; COLOR: red; mso-list: l1 level1 lfo2; tab-stops: list .5in"&gt;
!Code Formatting&lt;o:p&gt;&lt;/o:p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;For the most part try to stay away from talking about code formatting.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Formatting
standards inevitably come down to one developer’s preference over another.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Capable
developers will be able to read the code regardless of how it is formatted.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;After you’ve had your discussion with the team, hole yourself
up in your office/cube and write up the standards doc.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Unless
you’re a dreadfully slow typist, this shouldn’t take more than 1 – 3 hours.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;The important thing is to make sure you get feedback from your
team on the document.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;If they don’t feel
involved and disagree with a particular piece, they will exhibit a little bit of passive-aggressive
behavior and not adhere to the standard.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;The Coding Standards document sets up expectations at code reviews.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;It
is a declaration of what is expected from a developer when they submit code.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Without
some set of coding standards, code reviews can quickly become counterproductive.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;font color=#000000&gt;Coding standard docs aren’t hard, aren’t intrusive, and are a
valuable resource.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;When there is a set
of guidelines to use when coding, it is much easier to bring new developers into the
project.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;The benefits justify the one
day of effort it takes to put one in place.&lt;/font&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;o:p&gt;
&lt;font color=#000000&gt;&amp;nbsp;&lt;/font&gt;
&lt;/o:p&gt;
&lt;/p&gt;
&lt;p class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;
&lt;i style="mso-bidi-font-style: normal"&gt;&lt;font color=#000000&gt;Wouldn’t you feel comfortable
having your code reviewed by an expert?&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;Go
to &lt;a href="http://www.codefrisk.com"&gt;CodeFrisk.com &lt;/a&gt;to see how I can proofread
your code at a reasonable price.&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=4d2b767e-9169-451b-8a23-b7de47092027" /&gt;</content>
  </entry>
  <entry>
    <title>Introduction to Data Mining</title>
    <link rel="alternate" type="text/html" href="http://blog.philknows.net/PermaLink,guid,3771176e-b6d4-404d-922f-5c8056e3612a.aspx" />
    <id>http://blog.philknows.net/PermaLink,guid,3771176e-b6d4-404d-922f-5c8056e3612a.aspx</id>
    <published>2007-02-02T08:40:51.298625-05:00</published>
    <updated>2007-02-02T08:42:16.908-05:00</updated>
    <category term="Speaking Engagements" label="Speaking Engagements" scheme="http://blog.philknows.net/CategoryView,category,Speaking%2BEngagements.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
On Wednesday, February 21st, I'll be giving an introductary talk on Data Mining for
the <a href="http://bostonaccessday.com/">Boston Access User's Group</a>.
</p>
        <p>
          <em>Introduction to Data Mining in SQL 2005</em>
          <br />
Data mining is the act of deriving patterns and trend that exist in your data. 
SQL 2005 provides a host of different algorithms that allow you to explore your data
for hidden patterns and trends.  Popular uses of data mining models are used
to predict future sales, target customers for marketing, examine patterns of navigation
through a website, and group products that are likely to be purchased together.
</p>
        <p>
Phil will give an introduction to data mining concepts, an overview of the different
algorithms, and how to incorporate the data mining results into your applications.
</p>
        <p>
Phil Denoncourt is a .NET consultant, who over the past 5 years has developed a wide
range of .NET applications and has over 20 years experience writing software. He is
the leader of the New England C# User Group and has acquired the MCPD, MCTS, MCSD,
MCDBA, MCSE, MCAD, MCSA and MCP+SB certifications. When not coding, or spending time
with his wife and 5 children, Phil is an avid fan of the Boston Red Sox and New England
Patriots.
</p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=3771176e-b6d4-404d-922f-5c8056e3612a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Introduction to WCF</title>
    <link rel="alternate" type="text/html" href="http://blog.philknows.net/PermaLink,guid,170128b6-52f8-408e-a448-c0466afb3cef.aspx" />
    <id>http://blog.philknows.net/PermaLink,guid,170128b6-52f8-408e-a448-c0466afb3cef.aspx</id>
    <published>2007-01-09T13:13:05.4275-05:00</published>
    <updated>2007-01-09T13:15:03.365-05:00</updated>
    <category term="Speaking Engagements" label="Speaking Engagements" scheme="http://blog.philknows.net/CategoryView,category,Speaking%2BEngagements.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'll be speaking at two user groups in the upcoming weeks:
</p>
        <p class="MsoPlainText" style="MARGIN: 0in 0in 0pt">
          <font face="Consolas">
            <strong>Introduction to WCF (Windows Communication Foundation).</strong>
          </font>
        </p>
        <p class="MsoPlainText" style="MARGIN: 0in 0in 0pt">
          <font face="Consolas">.NET 3.0 was released in November.<span style="mso-spacerun: yes">  </span>WCF
is one piece of the 3.0 puzzle and is a substantial improvement over ASP.NET web services.<span style="mso-spacerun: yes">  </span></font>
        </p>
        <p class="MsoPlainText" style="MARGIN: 0in 0in 0pt">
          <font face="Consolas">
            <span style="mso-spacerun: yes">
            </span>
          </font> 
</p>
        <p class="MsoPlainText" style="MARGIN: 0in 0in 0pt">
          <font face="Consolas">
            <span style="mso-spacerun: yes">
            </span>Phil will show the
overall architecture and how easy it is to develop WCF Services.</font>
        </p>
        <p class="MsoPlainText" style="MARGIN: 0in 0in 0pt">
          <font face="Consolas">
          </font> 
</p>
        <p class="MsoPlainText" style="MARGIN: 0in 0in 0pt">
          <font face="Consolas">
            <strong>Phil Denoncourt</strong> is a .NET consultant, who over
the past 5 years has developed a wide range of .NET applications and has over
20 years experience writing software. He is the leader of the New England C# User
Group and has acquired the MCPD, MCTS, MCSD, MCDBA, MCSE, MCAD, MCSA and MCP+SB certifications. </font>
        </p>
        <p class="MsoPlainText" style="MARGIN: 0in 0in 0pt">
          <font face="Consolas">
          </font> 
</p>
        <p class="MsoPlainText" style="MARGIN: 0in 0in 0pt">
          <font face="Consolas">When not coding, or spending time with his wife and 5 children,
Phil is an avid fan of the Boston Red Sox and New England Patriots.</font>
        </p>
        <p class="MsoPlainText" style="MARGIN: 0in 0in 0pt">
          <font face="Consolas">
          </font> 
</p>
        <p class="MsoPlainText" style="MARGIN: 0in 0in 0pt">
          <font face="Consolas">Jan 11 2007 at <a href="www.necsharp.net">New England C# Users
Group</a></font>
        </p>
        <p class="MsoPlainText" style="MARGIN: 0in 0in 0pt">
          <font face="Consolas">
          </font> 
</p>
        <p class="MsoPlainText" style="MARGIN: 0in 0in 0pt">
          <font face="Consolas">Jan 18 2007 at <a href="http://www.nhdn.com">New Hampshire .NET
Users Group</a></font>
        </p>
        <img width="0" height="0" src="http://blog.philknows.net/aggbug.ashx?id=170128b6-52f8-408e-a448-c0466afb3cef" />
      </div>
    </content>
  </entry>
</feed>