<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Jay Harris is Cpt. LoadTest</title>
    <link>http://www.cptloadtest.com/</link>
    <description>a .net developers blog on improving user experience of humans and coders</description>
    <language>en-us</language>
    <copyright>Jason Harris</copyright>
    <lastBuildDate>Tue, 30 Jun 2009 03:53:45 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>jharris@harrisdesigns.com</managingEditor>
    <webMaster>jharris@harrisdesigns.com</webMaster>
    <creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/CaptainLoadtest" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <trackback:ping>http://www.cptloadtest.com/Trackback.aspx?guid=4100313f-ecaf-401f-8581-92a49f62b87e</trackback:ping>
      <pingback:server>http://www.cptloadtest.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.cptloadtest.com/PermaLink,guid,4100313f-ecaf-401f-8581-92a49f62b87e.aspx</pingback:target>
      <dc:creator>Jay Harris</dc:creator>
      <wfw:comment>http://www.cptloadtest.com/CommentView,guid,4100313f-ecaf-401f-8581-92a49f62b87e.aspx</wfw:comment>
      <wfw:commentRss>http://www.cptloadtest.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4100313f-ecaf-401f-8581-92a49f62b87e</wfw:commentRss>
      
      <title>Speaking Engagements</title>
      <guid isPermaLink="false">http://www.cptloadtest.com/PermaLink,guid,4100313f-ecaf-401f-8581-92a49f62b87e.aspx</guid>
      <link>http://feedproxy.google.com/~r/CaptainLoadtest/~3/EyWAc31zz9k/Speaking-Engagements.aspx</link>
      <pubDate>Tue, 30 Jun 2009 03:53:45 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
I enjoy being a speaker. I have learned a lot through my mentors, colleagues, and&#xD;
through other community speakers, and standing before a group of my peers and sharing&#xD;
my knowledge is one way that I can give back to the development community. By linking&#xD;
together my speaking and my blog, I can provide a central repository for the slide&#xD;
decks and demo code for my sessions and make these things available to the audience&#xD;
for further review. Here, you will find all of my slides and code for all past presentations,&#xD;
as well as information about all my past and future talks. This post will also be&#xD;
linked through my top navigation so that it can be easily found, and will also be&#xD;
regularly updated with any new schedules and slide decks.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Thank you to everyone who as attended any of my sessions, and as always, I encourage&#xD;
you to give me any feedback you have via &lt;a href="http://www.speakerrate.com/jayharris/" target="_blank"&gt;SpeakerRate&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;h2&gt;Upcoming Talks&#xD;
&lt;/h2&gt;&#xD;
        &lt;p&gt;&#xD;
I would love to speak at your user group or developer's conference; please feel free&#xD;
to &lt;a title="Contact Jay Harris" href="http://www.cptloadtest.com/Email.aspx" target="_blank"&gt;contact&#xD;
me&lt;/a&gt; if you are interested. &#xD;
&lt;/p&gt;&#xD;
        &lt;h2&gt;Presentations &#xD;
&lt;/h2&gt;&#xD;
        &lt;h3&gt;Dev Basics: The ASP.NET Page Life Cycle &#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
When a request occurs for an ASP.Net page, the response is processed through a series&#xD;
of events before being sent to the client browser. These events, known as the Page&#xD;
Life Cycle, are a complicated headache when used improperly, manifesting as odd exceptions,&#xD;
incorrect data, performance issues, and general confusion. It seems simple when reading&#xD;
yet-another-book-on-ASP.NET, but never when applied in the real world. In this session,&#xD;
we decompose this mess, and turn the Life Cycle into an effective and productive tool.&#xD;
No ASP.NET MVC, no Dynamic Data, no MonoRail, no technologies of tomorrow, just the&#xD;
basics of ASP.NET, using the tools we have available in the office, today. &#xD;
&lt;br&gt;&lt;a title="Slides for &amp;quot;Dev Basics: The ASP.NET Page Life Cycle&amp;quot;" href="http://www.slideshare.net/jayharris/dev-basics-the-aspnet-page-life-cycle" target="_blank"&gt;Slides&lt;/a&gt; | &lt;a title="Code for &amp;quot;Dev Basics: The ASP.NET Page Life Cycle&amp;quot;" href="http://code.google.com/p/jayharris/source/browse/#svn/trunk/Demos/AspNetPageLifecycleDemo" target="_blank"&gt;Code&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;h3&gt;Continuous Integration: More than just a toolset &#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Does your team spend days integrating code at the end of a project? Continuous Integration&#xD;
can help. Using Continuous Integration will eliminate that end-of-project integration&#xD;
stress, and at the same time will make your development process easier. But Continuous&#xD;
Integration is more than just a tool like CruiseControl.Net; it is a full development&#xD;
process designed to bring you closer to your mainline, increase visibility of project&#xD;
status throughout your team, and to streamline deployments to QA or to your client.&#xD;
Find out what Continuous Integration is all about, and what it can do for you. &#xD;
&lt;br&gt;&lt;a title="Slides for &amp;quot;Continuous Integration: More than just a toolset&amp;quot;" href="http://www.slideshare.net/jayharris/continuous-integration-more-than-just-a-toolset" target="_blank"&gt;Slides&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;h2&gt;Past Talks &#xD;
&lt;/h2&gt;&#xD;
        &lt;h3&gt;June 2009 &#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Dev Basics: The ASP.NET Page Life Cycle @ CodeStock 2009 &#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;January 2009 &#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Continuous Integration: More than just a toolset @ NWNUG Monthly Meeting &#xD;
&lt;br&gt;&#xD;
Continuous Integration: More than just a toolset @ GANG Monthly Meeting &#xD;
&lt;br&gt;&#xD;
Continuous Integration: More than just a toolset @ CodeMash 2009 &#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;October 2009 &#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Continuous Integration: More than just a toolset @ AADND Monthly Meeting &#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;September 2008 &#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Continuous Integration: More than just a toolset @ GLUGnet-Flint Monthly Meeting&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5d7ded68-28b6-46ba-91a2-4256419317df" class="wlWriterEditableSmartContent"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/Speaking" rel="tag"&gt;Speaking&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Presentations" rel="tag"&gt;Presentations&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.cptloadtest.com/aggbug.ashx?id=4100313f-ecaf-401f-8581-92a49f62b87e"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=EyWAc31zz9k:72X3kBWe1DE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=EyWAc31zz9k:72X3kBWe1DE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=EyWAc31zz9k:72X3kBWe1DE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=EyWAc31zz9k:72X3kBWe1DE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=EyWAc31zz9k:72X3kBWe1DE:gsZI0cpJP_o"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=gsZI0cpJP_o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=EyWAc31zz9k:72X3kBWe1DE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CaptainLoadtest/~4/EyWAc31zz9k" height="1" width="1"/&gt;</description>
      <comments>http://www.cptloadtest.com/CommentView,guid,4100313f-ecaf-401f-8581-92a49f62b87e.aspx</comments>
      <category>Events</category>
      <category>Speaking</category>
    <feedburner:origLink>http://www.cptloadtest.com/2009/06/30/Speaking-Engagements.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.cptloadtest.com/Trackback.aspx?guid=d08d861c-a8fb-487e-9ead-0f64b80640ff</trackback:ping>
      <pingback:server>http://www.cptloadtest.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.cptloadtest.com/PermaLink,guid,d08d861c-a8fb-487e-9ead-0f64b80640ff.aspx</pingback:target>
      <dc:creator>Jay Harris</dc:creator>
      <wfw:comment>http://www.cptloadtest.com/CommentView,guid,d08d861c-a8fb-487e-9ead-0f64b80640ff.aspx</wfw:comment>
      <wfw:commentRss>http://www.cptloadtest.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d08d861c-a8fb-487e-9ead-0f64b80640ff</wfw:commentRss>
      
      <title>Dev Basics: ASP.NET Page Life Cycle, Part 1 [Events]</title>
      <guid isPermaLink="false">http://www.cptloadtest.com/PermaLink,guid,d08d861c-a8fb-487e-9ead-0f64b80640ff.aspx</guid>
      <link>http://feedproxy.google.com/~r/CaptainLoadtest/~3/62oLL92Lbew/Dev-Basics-ASPNET-Page-Life-Cycle-Part-1-Events.aspx</link>
      <pubDate>Tue, 23 Jun 2009 03:53:57 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
When a request occurs for an ASP.NET page, the response is processed through a series&#xD;
of events before being sent to the client browser. These events, known as the ASP.NET&#xD;
Page Life Cycle, are a complicated headache when used improperly, manifesting as odd&#xD;
exceptions, incorrect data, performance issues, and general confusion. It seems simple&#xD;
when reading yet-another-book-on-ASP.NET, but never when applied in the real world.&#xD;
What is covered in a few short pages in many ASP.NET books (and sometimes even just&#xD;
a few short paragraphs), is much more complicated outside of a "Hello, World!"&#xD;
application and inside of the complex demands of the enterprise applications that&#xD;
developers create and maintain in their day-to-day work life. As close to the core&#xD;
as the life cycle is to any ASP.NET web application, the complications and catches&#xD;
behind this system never seems to get wide coverage on study guides or other documentation.&#xD;
But, they should.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
A little help on the Page Life Cycle is never a bad thing. In this series, I will&#xD;
go over the events that make up the ASP.NET Page Life Cycle, as well as some tips&#xD;
and tricks on how to get the most out of this event structure while avoiding the traps&#xD;
and pitfalls. Rather than pursuing broad coverage of the entire ASP.NET Framework,&#xD;
we'll dive deeply into the "small" portion that is the ASP.NET Page Life&#xD;
Cycle.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Events of the ASP.NET Page Life Cycle&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
I want to start at the beginning. The primary make-up of the Page Life Cycle is the&#xD;
events that process any ASP.NET requests. Unlike the public static void main of a&#xD;
WinForms application, where everything based on methods, the execution of a page request&#xD;
is the execution of these events. These events, which execute in a particular order,&#xD;
handle the entire request, including loading all of the controls, processing all of&#xD;
the form data, handling all user-initiated actions, and rendering the page to the&#xD;
web browser. Knowing the order in which these events are executed, as well as the&#xD;
responsibility of each event in processing your request, is important for developing&#xD;
solid, quality ASP.NET applications.&#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;Start&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
This is where the page object is instantiated, and where the initial properties of&#xD;
the page are set. Page properties such as Response and Request, UICulture (similar&#xD;
to the UICulture property within a WinForms thread), and the value of IsPostBack are&#xD;
all determined and assigned. No controls are available at this time, so do not try&#xD;
to set the value of that TextBox control, as it doesn't exist, yet. Fortunately, no&#xD;
event handlers can be attached to this event, anyway, so there isn't much you can&#xD;
do to customize this processing or to access that TextBox's value property; "Move&#xD;
along. There is nothing to see here." But, be aware that this event does occur&#xD;
after the Constructor, so if you try to access properties such as IsPostBack prior&#xD;
to the Start event, they have yet to be assigned, and will likely be incorrect.&#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;Page Initialization&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
During page initialization, the controls are created, initialized, and added to the&#xD;
Page's controls collection. This is the first time that you can access a control by&#xD;
its UniqueID. Do note that all control properties are set to their code values, be&#xD;
it from code-behind or code-in-front, regardless of what may be available in ViewState&#xD;
and Form Post values. Control state has yet to be restored, so ViewState and Form&#xD;
Post values have not yet been pushed to the controls. Finally, Initialization (specifically,&#xD;
PreInit) is the only time that the Theme and Master Page can be programmatically modified.&#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;Page Load&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
Page Load is where control state is restored. If the request is a PostBack, rather&#xD;
than a new request, all available property values are restored from ViewState and&#xD;
Form Post data and pushed to the applicable controls. Under most scenarios, this is&#xD;
where you're going to get what you need from the Database, such as pulling a value&#xD;
from the query string and loading an item with the matching identity.&#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;Validation&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
The Validation event only applies to PostBack requests, and only when Validators are&#xD;
present in the control collection. The Validate method is executed for each Validator&#xD;
present, through which the IsValid property is set for each Validator. These IsValid&#xD;
property values are then cascaded up to the Page's IsValid property. Be aware that&#xD;
even if all Validators on the page are disabled, the Validation event will still fire;&#xD;
if a Validator is present, Validate is executed, without regard to any other property.&#xD;
Also, note that the Validation event is a child of the Page's Load event, so it is&#xD;
executed within the Page Load event chain, after Page Load, but prior to PostBack&#xD;
Events and LoadComplete.&#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;PostBack Events&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
Once Validation is complete (if applicable), all PostBack events are executed, including&#xD;
the OnChange event of a DropDownList and the OnClick event of a command button. Post&#xD;
Back Events are also a child of the Page's Load event, executing after Validation&#xD;
and before LoadComplete.&#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;Render&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
Finally, once all of the data is processed and Post Back events handled, the Page&#xD;
is rendered within the Web Browser. The Render event consists of saving all control&#xD;
property data to ViewState, processing the Page and each Control into HTML, and writing&#xD;
the HTML to the output stream. This is the last opportunity to modify the HTML output.&#xD;
&lt;/p&gt;&#xD;
        &lt;blockquote&gt;&#xD;
          &lt;h4&gt;Remembering the Order&#xD;
&lt;/h4&gt;&#xD;
          &lt;p&gt;&#xD;
If you are having trouble remembering the order, instead try and remember this simple&#xD;
mnemonic: &lt;strong&gt;SILVER&lt;/strong&gt;; Start, Initialize, Load, Validation, Events, Render.&#xD;
&lt;/p&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;p&gt;&#xD;
If you are doing a lot of ASP.NET programming, or anticipate that you will be in the&#xD;
near future, try to commit to memory the order of each of these events, and their&#xD;
scope of influence. Understanding these basic fundamentals of the ASP.NET Page Life&#xD;
Cycle will help ensure that you are executing your custom code at the right time,&#xD;
and in the right order, rather than stepping on yourself by conflicting with the core&#xD;
functionality.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now that we know the order of execution on Page Events, what is the order of the Controls?&#xD;
Does Page.Load execute before Control.Load? How about the order of sibling controls?&#xD;
What is the order of myTextBox1.TextChanged versus myTextBox2.TextChanged? Also, what&#xD;
are some things to look out for? As this series continues, we will discuss the details&#xD;
of event execution order within the ASP.NET Page Life Cycle, as well as some tips,&#xD;
trick, and traps when developing ASP.NET applications.&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f31df0e8-d581-43ef-94f3-a3ebdce80ce6" class="wlWriterEditableSmartContent"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Page+Life+Cycle" rel="tag"&gt;Page&#xD;
Life Cycle&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Event+Life+Cycle" rel="tag"&gt;Event&#xD;
Life Cycle&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Dev+Basics" rel="tag"&gt;Dev Basics&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Back+to+Basics" rel="tag"&gt;Back&#xD;
to Basics&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.cptloadtest.com/aggbug.ashx?id=d08d861c-a8fb-487e-9ead-0f64b80640ff"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=62oLL92Lbew:mJXLbeg9VsU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=62oLL92Lbew:mJXLbeg9VsU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=62oLL92Lbew:mJXLbeg9VsU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=62oLL92Lbew:mJXLbeg9VsU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=62oLL92Lbew:mJXLbeg9VsU:gsZI0cpJP_o"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=gsZI0cpJP_o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=62oLL92Lbew:mJXLbeg9VsU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CaptainLoadtest/~4/62oLL92Lbew" height="1" width="1"/&gt;</description>
      <comments>http://www.cptloadtest.com/CommentView,guid,d08d861c-a8fb-487e-9ead-0f64b80640ff.aspx</comments>
      <category>ASP.Net</category>
      <category>Dev Basics</category>
    <feedburner:origLink>http://www.cptloadtest.com/2009/06/23/Dev-Basics-ASPNET-Page-Life-Cycle-Part-1-Events.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.cptloadtest.com/Trackback.aspx?guid=e8d18cc4-127b-4fe1-a86c-f8cd56b3edb8</trackback:ping>
      <pingback:server>http://www.cptloadtest.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.cptloadtest.com/PermaLink,guid,e8d18cc4-127b-4fe1-a86c-f8cd56b3edb8.aspx</pingback:target>
      <dc:creator>Jay Harris</dc:creator>
      <wfw:comment>http://www.cptloadtest.com/CommentView,guid,e8d18cc4-127b-4fe1-a86c-f8cd56b3edb8.aspx</wfw:comment>
      <wfw:commentRss>http://www.cptloadtest.com/SyndicationService.asmx/GetEntryCommentsRss?guid=e8d18cc4-127b-4fe1-a86c-f8cd56b3edb8</wfw:commentRss>
      
      <title>Speaking at CodeStock 2009 on ASP.NET Page Life Cycle</title>
      <guid isPermaLink="false">http://www.cptloadtest.com/PermaLink,guid,e8d18cc4-127b-4fe1-a86c-f8cd56b3edb8.aspx</guid>
      <link>http://feedproxy.google.com/~r/CaptainLoadtest/~3/7g942yTtX0M/Speaking-At-CodeStock-2009-On-ASPNET-Page-Life-Cycle.aspx</link>
      <pubDate>Mon, 18 May 2009 13:27:01 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Next month, I will be speaking at &lt;a href="http://www.codestock.org/"&gt;CodeStock&lt;/a&gt;,&#xD;
a developer conference in Knoxville, Tennessee, held June 26-27. We will be discussing&#xD;
the ASP.NET Page Life Cycle, to help get over the fears and troubles with validation,&#xD;
event handing, data binding, and the conflicts between page load and page initialization.&#xD;
&lt;/p&gt;&#xD;
        &lt;blockquote&gt;&#xD;
          &lt;h3&gt;Dev Basics: The ASP.NET Page Life Cycle&#xD;
&lt;/h3&gt;&#xD;
          &lt;p&gt;&#xD;
            &lt;em&gt;Jay Harris / Session Level: 100 &#xD;
&lt;br&gt;&lt;/em&gt;When a request occurs for an ASP.NET page, the response is processed through&#xD;
a series of events before being sent to the client browser. These events, known as&#xD;
the Page Life Cycle, are a complicated headache when used improperly, manifesting&#xD;
as odd exceptions, incorrect data, performance issues, and general confusion. It seems&#xD;
simple when reading yet-another-book-on-ASP.NET, but never when applied in the real&#xD;
world. In this session, we decompose this mess, and turn the Life Cycle into an effective&#xD;
and productive tool. No ASP.NET MVC, no Dynamic Data, no MonoRail, no technologies&#xD;
of tomorrow, just the basics of ASP.NET, using the tools we have available in the&#xD;
office, today.&#xD;
&lt;/p&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;p&gt;&#xD;
It's a long drive from Michigan to Knoxville, but the conference is worth the trip&#xD;
(the first of two Tennessee conferences I will be attending this year). A few other&#xD;
local speakers will be making the trip to Knoxville, as well. Check out the &lt;a title="CodeStock Session List" href="http://www.codestock.org/Sessions.aspx"&gt;full&#xD;
session list&lt;/a&gt; for more information, and while you are at it, &lt;a title="Register for CodeStock" href="http://www.codestock.org/Pages/Register.aspx"&gt;register&#xD;
for the event&lt;/a&gt; if you haven't already done so; the cost is only $25 if you sign&#xD;
up before the end of May. I was there last year for the first CodeStock, and I had&#xD;
a great time; I'm excited about this years event, not only because I am speaking,&#xD;
but to see what other new things that people are talking about, catch up with friends,&#xD;
and to meet new people in the community.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I hope to see you there.&#xD;
&lt;/p&gt;&#xD;
        &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:79086fe6-58e7-4b4a-9394-194cfd2007b6" class="wlWriterEditableSmartContent"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/CodeStock" rel="tag"&gt;CodeStock&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Speaking" rel="tag"&gt;Speaking&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.cptloadtest.com/aggbug.ashx?id=e8d18cc4-127b-4fe1-a86c-f8cd56b3edb8"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=7g942yTtX0M:CaNZu-PlrOQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=7g942yTtX0M:CaNZu-PlrOQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=7g942yTtX0M:CaNZu-PlrOQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=7g942yTtX0M:CaNZu-PlrOQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=7g942yTtX0M:CaNZu-PlrOQ:gsZI0cpJP_o"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=gsZI0cpJP_o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=7g942yTtX0M:CaNZu-PlrOQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CaptainLoadtest/~4/7g942yTtX0M" height="1" width="1"/&gt;</description>
      <comments>http://www.cptloadtest.com/CommentView,guid,e8d18cc4-127b-4fe1-a86c-f8cd56b3edb8.aspx</comments>
      <category>ASP.Net</category>
      <category>Events</category>
      <category>Speaking</category>
    <feedburner:origLink>http://www.cptloadtest.com/2009/05/18/Speaking-At-CodeStock-2009-On-ASPNET-Page-Life-Cycle.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.cptloadtest.com/Trackback.aspx?guid=43d7519f-a17a-4fb2-a33d-3b27cd39f994</trackback:ping>
      <pingback:server>http://www.cptloadtest.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.cptloadtest.com/PermaLink,guid,43d7519f-a17a-4fb2-a33d-3b27cd39f994.aspx</pingback:target>
      <dc:creator>Jay Harris</dc:creator>
      <wfw:comment>http://www.cptloadtest.com/CommentView,guid,43d7519f-a17a-4fb2-a33d-3b27cd39f994.aspx</wfw:comment>
      <wfw:commentRss>http://www.cptloadtest.com/SyndicationService.asmx/GetEntryCommentsRss?guid=43d7519f-a17a-4fb2-a33d-3b27cd39f994</wfw:commentRss>
      
      <title>Virtues and Villainy of Robots.txt</title>
      <guid isPermaLink="false">http://www.cptloadtest.com/PermaLink,guid,43d7519f-a17a-4fb2-a33d-3b27cd39f994.aspx</guid>
      <link>http://feedproxy.google.com/~r/CaptainLoadtest/~3/29rr3ShiB_0/Virtues-And-Villainy-Of-Robotstxt.aspx</link>
      <pubDate>Fri, 15 May 2009 13:31:37 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
You may have heard of Robots.txt. Or, you may have seen requests for /Robots.txt in&#xD;
your web traffic logs, and if the file doesn't exist, a related HTTP 404. But what&#xD;
is this Robot file, and what does it do?&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Introduction to Robots.txt&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
When on a web server, Robots.txt is a file that directs Robots (a.k.a. Spiders or&#xD;
Web Crawlers) on which files and directories to ignore when indexing a site. The file&#xD;
is located on the root directory of the domain, and is typically used to hide areas&#xD;
of a site from search engine indexing, such as to keep a page off of Google's radar&#xD;
(such as my DasBlog login page) or if a page or image is not relevant to the traditional&#xD;
content of a site (maybe a mockup page for a CSS demo contains content about puppies,&#xD;
and you don't want to mislead potential audience). Robots request this file prior&#xD;
to indexing your site, and its absence indicates that the robot is free to index the&#xD;
entire domain. Also, note that each sub-domain uses a unique Robots.txt. When a spider&#xD;
is indexing msdn.microsoft.com, it won't look for the file on www.microsoft.com; MSDN&#xD;
will need its own copy of Robots.txt. &#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;How do I make a Robots.txt?&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Robots.txt is a simple text file. You can create it in Notepad, Word, Emacs, DOS Edit,&#xD;
or your favorite text editor. Also, the file belongs in the root of the domain on&#xD;
your web server.&#xD;
&lt;/p&gt;&#xD;
        &lt;h4&gt;Allow all robots to access everything:&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
The most basic file will be to authorize all robots to index the entire site. The&#xD;
asterisk [*] for &lt;em&gt;User Agent&lt;/em&gt; indicates that the rule applies to all robots,&#xD;
and by leaving the value of &lt;em&gt;Disallow&lt;/em&gt; blank rather than including a path,&#xD;
it effectively disallows nothing and allows everything.&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="plain:nocontrols" name="code"&gt;# Allow all robots to access everything&#xD;
User-agent: *&#xD;
Disallow:&lt;/pre&gt;&#xD;
        &lt;h4&gt;Block all robots from accessing anything:&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
Conversely, with only one more character, we can invert the entire file and block&#xD;
everything. By setting &lt;em&gt;Disallow&lt;/em&gt; to a root slash, every file and directory&#xD;
stemming from the root (in other words, the entire site) will be blocked from robot&#xD;
indexing.&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="plain:nocontrols" name="code"&gt;# Block all robots from accessing anything&#xD;
User-agent: *&#xD;
Disallow: /&lt;/pre&gt;&#xD;
        &lt;h4&gt;Allow all robots to index everything except scripts, logs, images, and that CSS&#xD;
demo on Puppies:&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;Disallow&lt;/em&gt; is a partial-match string; setting &lt;em&gt;Disallow&lt;/em&gt; to "image"&#xD;
would match both &lt;em&gt;/images/&lt;/em&gt; and &lt;em&gt;/imageHtmlTagDemo.html&lt;/em&gt;. &lt;em&gt;Disallow&lt;/em&gt; can&#xD;
also be included multiple times with different values to disallow a robot from multiple&#xD;
files and directories.&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="plain:nocontrols" name="code"&gt;# Block all robots from accessing scripts, logs,&#xD;
#    images, and that CSS demo on Puppies&#xD;
User-agent: *&#xD;
Disallow: /images/&#xD;
Disallow: /logs/&#xD;
Disallow: /scripts/&#xD;
Disallow: /demos/cssDemo/puppies.html&lt;/pre&gt;&#xD;
        &lt;h4&gt;Block all robots from accessing anything, except Google, which is only blocked&#xD;
from images:&#xD;
&lt;/h4&gt;&#xD;
        &lt;p&gt;&#xD;
Just as a browser has a user agent, so does a robot. For example, "Googlebot/2.1&#xD;
(http://www.google.com/bot.html)", is one of the user agents for Google's indexer.&#xD;
Like &lt;em&gt;Disallow&lt;/em&gt;, the &lt;em&gt;User-agent&lt;/em&gt; value in Robots.txt is a partial-match&#xD;
string, so simply setting the value to "Googlebot" is sufficient for a match.&#xD;
Also, the &lt;em&gt;User-agent&lt;/em&gt; and &lt;em&gt;Disallow&lt;/em&gt; entries cascade, with the most&#xD;
specific User Agent setting is the one that is recognized.&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="plain:nocontrols" name="code"&gt;# Block all robots from accessing anything,&#xD;
#    except Google, which is only blocked from images&#xD;
User-agent: *&#xD;
Disallow: /&#xD;
User-agent: Googlebot&#xD;
Disallow: /images/&lt;/pre&gt;&#xD;
        &lt;h3&gt;Shortcomings of Robots.txt&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Similar to the &lt;a title="Wikipedia: Pirate Code" href="http://en.wikipedia.org/wiki/Pirate_code" rel="nofollow"&gt;Code&#xD;
of the Order of the Brethren&lt;/a&gt;, Robots.txt "is more what you'd call 'guidelines'&#xD;
than actual rules." Robots.txt is not a standardized protocol, nor is it a requirement.&#xD;
Only the "honorable" robots such as the Google or Yahoo search spiders adhere&#xD;
to the file's instructions; other less-honorable bots, such as a spam spider searching&#xD;
for email addresses, largely ignore the file.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Also, do not use the file for access control. Robots.txt is just a suggestion for&#xD;
search indexing, and will by no means block requests to a disallowed directory of&#xD;
file. These disallowed URLs are still freely available to anyone on the web. Additionally,&#xD;
the contents of this file can be used to against you, as it the items you place in&#xD;
it may indicate areas of the site that are intended to be secret or private; this&#xD;
information could be used to prioritize candidates for a malicious attack with disallowed&#xD;
pages being the first places to target.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Finally, this file must be located in the root of the domain: www.mydomain.com/robots.txt.&#xD;
If your site is in a sub-folder from the domain, such as www.mydomain.com/~username/,&#xD;
the file must still be on the root of the domain, and you may need to speak with your&#xD;
webmaster to get your modifications added to the file.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Other Resources:&#xD;
&lt;/h3&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
The Web Robots Pages : &lt;a href="http://www.robotstxt.org"&gt;http://www.robotstxt.org&lt;/a&gt;&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Wikipedia : &lt;a title="http://en.wikipedia.org/wiki/Robots.txt" href="http://en.wikipedia.org/wiki/Robots.txt"&gt;http://en.wikipedia.org/wiki/Robots.txt&lt;/a&gt;&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e5842e47-5b09-4532-a0d2-8f965492aefc" class="wlWriterEditableSmartContent"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/SEO" rel="tag"&gt;SEO&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Robots.txt" rel="tag"&gt;Robots.txt&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.cptloadtest.com/aggbug.ashx?id=43d7519f-a17a-4fb2-a33d-3b27cd39f994"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=29rr3ShiB_0:fvG_NGBhMtM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=29rr3ShiB_0:fvG_NGBhMtM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=29rr3ShiB_0:fvG_NGBhMtM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=29rr3ShiB_0:fvG_NGBhMtM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=29rr3ShiB_0:fvG_NGBhMtM:gsZI0cpJP_o"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=gsZI0cpJP_o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=29rr3ShiB_0:fvG_NGBhMtM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CaptainLoadtest/~4/29rr3ShiB_0" height="1" width="1"/&gt;</description>
      <comments>http://www.cptloadtest.com/CommentView,guid,43d7519f-a17a-4fb2-a33d-3b27cd39f994.aspx</comments>
      <category>Blogging</category>
      <category>SEO</category>
    <feedburner:origLink>http://www.cptloadtest.com/2009/05/15/Virtues-And-Villainy-Of-Robotstxt.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.cptloadtest.com/Trackback.aspx?guid=77910679-8b77-44cf-87f3-67d47378e5bc</trackback:ping>
      <pingback:server>http://www.cptloadtest.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.cptloadtest.com/PermaLink,guid,77910679-8b77-44cf-87f3-67d47378e5bc.aspx</pingback:target>
      <dc:creator>Jay Harris</dc:creator>
      <wfw:comment>http://www.cptloadtest.com/CommentView,guid,77910679-8b77-44cf-87f3-67d47378e5bc.aspx</wfw:comment>
      <wfw:commentRss>http://www.cptloadtest.com/SyndicationService.asmx/GetEntryCommentsRss?guid=77910679-8b77-44cf-87f3-67d47378e5bc</wfw:commentRss>
      <slash:comments>1</slash:comments>
      
      <title>Lansing Give Camp Wrap-Up</title>
      <guid isPermaLink="false">http://www.cptloadtest.com/PermaLink,guid,77910679-8b77-44cf-87f3-67d47378e5bc.aspx</guid>
      <link>http://feedproxy.google.com/~r/CaptainLoadtest/~3/rdBuOT_zm-0/Lansing-Give-Camp-WrapUp.aspx</link>
      <pubDate>Thu, 07 May 2009 18:55:31 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
The event was about giving back to the community. A few weekends ago, April 24-26,&#xD;
2009, the Impression 5 Science Center held the first ever &lt;a href="http://www.lansinggivecamp.org/"&gt;Lansing&#xD;
Give Camp&lt;/a&gt;. The Lansing, Michigan event was a weekend of coding for charities,&#xD;
where nearly 50 area developers and over 10 volunteers gathered to donate their time&#xD;
and complete projects for 13 charities.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The event, which primarily took place in one large room on the first floor of Impression&#xD;
5, was full of excitement and emotion. Sponsors stepped up to offer additional assistance&#xD;
at the last minute, all to really make the event a success. TechSmith, DevExpress,&#xD;
the MSU University Club, and even Impression 5 all stepped up during the final week&#xD;
to sponsor a meal. The remainder of the meals were covered by collaboration between&#xD;
Microsoft, Wing Zone, Dominos Pizza, Guido's Pizza, Panera Bread, and Dunkin Donuts.&#xD;
Jennifer Middlin of TechSmith and Camron Gnass of Vision Creative also covered our&#xD;
late-night snacks, which included Tacos and "Insomnia Cookies." Nom, nom,&#xD;
nom.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The biggest drama of the weekend had to be Mother Nature's visit on Saturday afternoon.&#xD;
A band of severe Thunderstorms rolled through Lansing on Saturday, knocking out power&#xD;
to the entire facility. We didn't lose any work, since everyone's laptop battery kicked&#xD;
in as soon as the lights went dark, but the loss of power did kill all of the wireless&#xD;
access points, and with it all connectivity to the source control server and to web&#xD;
hosting facilities. However, within minutes, Erik Larson (Director of Impression 5)&#xD;
was on the phone with Eric Hart (Director of the Lansing Center), and the Lansing&#xD;
Center responded heroically by providing us with a temporary home with power and internet&#xD;
access until power was restored at Impression 5. Between three teams shipping of to&#xD;
local coffee houses, and the rest all taking the trip across the street to the Lansing&#xD;
Center, everyone was able to continue working on their projects with minimal delay.&#xD;
I extend a huge "Thank you" to the Lansing Center for helping us get out&#xD;
of a jam that could have been a major detriment to the success of our weekend.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
However, it was the closing ceremony at Lansing Give Camp that stole the show. There&#xD;
were many emotion-filled faces throughout the staff and crowd as each project conducted&#xD;
a presentation of their output, demoing their wares, and each charity saw dreams achieved&#xD;
and went home with a year of free hosting from LiquidWeb and an "everything you&#xD;
need to maintain your site" bag of software and books from Microsoft. Each of&#xD;
the attendees even went home with one or two prizes, which included books, hardware,&#xD;
and software from Microsoft, books from TechSmith, and software from DevExpress, Telligent,&#xD;
and Telleric.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
It was a great event. The charities were happy. The developers were happy. It was&#xD;
all a huge success. And I can't wait until next year.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Lansing Give Camp in News and Blogs:&#xD;
&lt;/h3&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
Great Lakes IT Report : &lt;a href="http://www.wwj.com/Lansing-GiveCamp-Develops-Free-Software-For-Nonpro/4273994"&gt;Lansing&#xD;
GiveCamp Develops Free Software for Nonprofits&lt;/a&gt;&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Lansing Capital Gains : &lt;a href="http://www.capitalgainsmedia.com/innovationnews/give0315.aspx"&gt;Give&#xD;
Camp Brings $50,000 in Tech Talent to Local Charities&lt;/a&gt;&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
AM Lansing : &lt;a href="http://amlansing.com/amLansing/Harris_4.27.html"&gt;On-Air Interview&#xD;
with Jay Harris on Lansing Give Camp&lt;/a&gt;&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
The Wit and Ramblings of David Giard : &lt;a href="http://www.davidgiard.com/2009/05/03/LansingGiveCampSuccess.aspx"&gt;Lansing&#xD;
Give Camp Success&lt;/a&gt;&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
The Wit and Ramblings of David Giard : &lt;a href="http://www.davidgiard.com/2009/04/29/McWhertersAndHarrisesOnTheLansingGiveCamp.aspx"&gt;McWherters&#xD;
and Harrises on the Lansing Give Camp&lt;/a&gt;&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d261b956-b3db-4d1c-b6c6-4f289d1e5d0d" class="wlWriterEditableSmartContent"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/Lansing" rel="tag"&gt;Lansing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Give+Camp" rel="tag"&gt;Give&#xD;
Camp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Charity" rel="tag"&gt;Charity&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.cptloadtest.com/aggbug.ashx?id=77910679-8b77-44cf-87f3-67d47378e5bc"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=rdBuOT_zm-0:QHJr6V-SCVc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=rdBuOT_zm-0:QHJr6V-SCVc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=rdBuOT_zm-0:QHJr6V-SCVc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=rdBuOT_zm-0:QHJr6V-SCVc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=rdBuOT_zm-0:QHJr6V-SCVc:gsZI0cpJP_o"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=gsZI0cpJP_o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=rdBuOT_zm-0:QHJr6V-SCVc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CaptainLoadtest/~4/rdBuOT_zm-0" height="1" width="1"/&gt;</description>
      <comments>http://www.cptloadtest.com/CommentView,guid,77910679-8b77-44cf-87f3-67d47378e5bc.aspx</comments>
      <category>Events</category>
    <feedburner:origLink>http://www.cptloadtest.com/2009/05/07/Lansing-Give-Camp-WrapUp.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.cptloadtest.com/Trackback.aspx?guid=9c10319f-4292-41c3-af6b-44acc6ac9734</trackback:ping>
      <pingback:server>http://www.cptloadtest.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.cptloadtest.com/PermaLink,guid,9c10319f-4292-41c3-af6b-44acc6ac9734.aspx</pingback:target>
      <dc:creator>Jay Harris</dc:creator>
      <wfw:comment>http://www.cptloadtest.com/CommentView,guid,9c10319f-4292-41c3-af6b-44acc6ac9734.aspx</wfw:comment>
      <wfw:commentRss>http://www.cptloadtest.com/SyndicationService.asmx/GetEntryCommentsRss?guid=9c10319f-4292-41c3-af6b-44acc6ac9734</wfw:commentRss>
      
      <title>Attend Give Camp or the X Conference? Both!</title>
      <guid isPermaLink="false">http://www.cptloadtest.com/PermaLink,guid,9c10319f-4292-41c3-af6b-44acc6ac9734.aspx</guid>
      <link>http://feedproxy.google.com/~r/CaptainLoadtest/~3/iZCSCWjirOU/Attend-Give-Camp-Or-The-X-Conference-Both.aspx</link>
      <pubDate>Wed, 08 Apr 2009 20:55:41 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Torn between attending Lansing Give Camp or the Kalamazoo X Conference?&lt;br&gt;&#xD;
You don't have to choose; do both!&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Give Camp or X Conference?&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
The first ever Lansing Give Camp is being held April 24-26. The first ever Kalamazoo&#xD;
X Conference is being held April 25. The sessions of the X Conference offer a great&#xD;
opportunity for learning and for improving your craft. For $20, you can't beat that.&#xD;
But Lansing Give Camp is a weekend of giving back to the community by helping out&#xD;
local charities. Coding for a cause; you can't beat that, either. Two amazing events,&#xD;
slightly more than an hour from each other, are being held the same weekend. It's&#xD;
like a bad case of deadlocked threads. Kalamazoo or Lansing? Lansing or Kalamazoo?&#xD;
How do you choose between them?&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
You don't have to choose. Go to both.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Spend the weekend in Kalamazansing!&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Kalamazoo X Conference and Lansing Give Camp have partnered together. Lansing Give&#xD;
Camp will have special projects that will accommodate X Conference attendees. Kalamazoo&#xD;
X Conference is waiving its registration fee for anyone attending Lansing Give Camp.&#xD;
Friday night, come out to Give Camp. Saturday morning you can grab a shower (thanks&#xD;
to a partnership with the Lansing YMCA), and head out to Kalamazoo. When the event&#xD;
is over, finish out the weekend back in Lansing, coding for a cause. It's almost like&#xD;
one big event, spread between two Michigan cities. Kalamazansing.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;I want to go to Kalamazansing!&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Sign up Lansing Give Camp at &lt;a href="http://www.lansinggivecamp.org"&gt;http://www.lansinggivecamp.org&lt;/a&gt;.&#xD;
The registration form includes an option to sign up for the X Conference, too. We'll&#xD;
take care of the rest.&#xD;
&lt;/p&gt;&#xD;
        &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8c55bcc1-5c4d-4459-aa76-47483eaab96d" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/X%20Conference" rel="tag"&gt;X Conference&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Kalamazoo" rel="tag"&gt;Kalamazoo&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Lansing" rel="tag"&gt;Lansing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Give%20Camp" rel="tag"&gt;Give&#xD;
Camp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Kalamazansing" rel="tag"&gt;Kalamazansing&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.cptloadtest.com/aggbug.ashx?id=9c10319f-4292-41c3-af6b-44acc6ac9734"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=iZCSCWjirOU:OqPlMkiTovs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=iZCSCWjirOU:OqPlMkiTovs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=iZCSCWjirOU:OqPlMkiTovs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=iZCSCWjirOU:OqPlMkiTovs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=iZCSCWjirOU:OqPlMkiTovs:gsZI0cpJP_o"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=gsZI0cpJP_o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=iZCSCWjirOU:OqPlMkiTovs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CaptainLoadtest/~4/iZCSCWjirOU" height="1" width="1"/&gt;</description>
      <comments>http://www.cptloadtest.com/CommentView,guid,9c10319f-4292-41c3-af6b-44acc6ac9734.aspx</comments>
      <category>Events</category>
    <feedburner:origLink>http://www.cptloadtest.com/2009/04/08/Attend-Give-Camp-Or-The-X-Conference-Both.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.cptloadtest.com/Trackback.aspx?guid=f8b1b499-e1d1-4978-b3e9-e80c45d3f150</trackback:ping>
      <pingback:server>http://www.cptloadtest.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.cptloadtest.com/PermaLink,guid,f8b1b499-e1d1-4978-b3e9-e80c45d3f150.aspx</pingback:target>
      <dc:creator>Jay Harris</dc:creator>
      <wfw:comment>http://www.cptloadtest.com/CommentView,guid,f8b1b499-e1d1-4978-b3e9-e80c45d3f150.aspx</wfw:comment>
      <wfw:commentRss>http://www.cptloadtest.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f8b1b499-e1d1-4978-b3e9-e80c45d3f150</wfw:commentRss>
      
      <title>Lansing Give Camp 2009, April 24-26</title>
      <guid isPermaLink="false">http://www.cptloadtest.com/PermaLink,guid,f8b1b499-e1d1-4978-b3e9-e80c45d3f150.aspx</guid>
      <link>http://feedproxy.google.com/~r/CaptainLoadtest/~3/msmGZB-20_A/Lansing-Give-Camp-2009-April-2426.aspx</link>
      <pubDate>Wed, 08 Apr 2009 16:50:07 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;a href="http://www.cptloadtest.com/content/binary/WindowsLiveWriter/LansingGiveCampApril2426_9F0E/LansGiveCamp2009_10.png"&gt;&#xD;
            &lt;img style="margin: 10px 0px 10px 10px" height="131" alt="LansGiveCamp2009" src="http://www.cptloadtest.com/content/binary/WindowsLiveWriter/LansingGiveCampApril2426_9F0E/LansGiveCamp2009_thumb_4.png" width="211" align="right" border="0"&gt;&lt;/img&gt;&#xD;
          &lt;/a&gt; On&#xD;
April 24th-26th, 2008, the local software development communities will pool their&#xD;
talents to put together the first ever Give Camp in Lansing Michigan. The event will&#xD;
be hosted at the &lt;a href="http://impression5.org"&gt;Impression 5 Science Center&lt;/a&gt; in&#xD;
downtown Lansing. For more information, please visit the event's web site, &lt;a href="http://www.lansinggivecamp.org"&gt;http://www.lansinggivecamp.org&lt;/a&gt;.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Lansing Give Camp&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
April 24-26 at the Impression 5 Science Center&lt;br&gt;&#xD;
200 Museum Drive, Lansing, MI 48933&lt;br&gt;&lt;a href="http://www.lansinggivecamp.org"&gt;http://www.lansinggivecamp.org&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;h3&gt;What is a Give Camp?&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
A Give Camp is a weekend-long event where software developers, designers, and database&#xD;
administrators donate their time to create custom software solutions for non-profit&#xD;
organizations. This custom software could be a new web site for the nonprofit organization,&#xD;
a small data-collection application to keep track of members, or an application for&#xD;
the Red Cross that automatically will email a blood donor three months after they've&#xD;
last donated blood to remind them that they are again eligible to donate blood. The&#xD;
only limitation for a Give Camp project is that it must be scoped to be completed&#xD;
within a weekend.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
During the event, developers are welcome to come and go as they please. The event&#xD;
will continue 24/7 from Friday afternoon through Sunday afternoon, and developers&#xD;
can choose to go home in the evenings or camp out for the entire weekend. Showers&#xD;
are not available at the Impression 5 facility, but the Lansing YMCA--just down the&#xD;
street--is donating their facilities throughout the weekend for any Give Camp attendees.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;How can I help?&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
If you are a developer and are interested in attending, please go to the event web&#xD;
site and register for the event. We are looking for developers of all skill levels&#xD;
to help out, from students to senior developers, and for developers of all skill sets,&#xD;
including designers, developers, database administrators, and more. If you can code,&#xD;
we want you there!&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;What about Sponsorship?&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Lansing Give Camp is seeking cash donations of any amount, or the sponsorship of a&#xD;
meal. A meal sponsorship would entail funding breakfast, lunch, or dinner for roughly&#xD;
100 volunteers. Typical meals would be sandwiches, pizza, or BBQ. As consideration&#xD;
for your donation, your organization’s logo will be added to the Give Camp web site,&#xD;
along with mention during the opening and closing sessions.&#xD;
&lt;/p&gt;&#xD;
        &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4ca0e935-2e92-46e4-bbed-4e4eafd8831e" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/Lansing" rel="tag"&gt;Lansing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Give%20Camp" rel="tag"&gt;Give&#xD;
Camp&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Charities" rel="tag"&gt;Charities&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.cptloadtest.com/aggbug.ashx?id=f8b1b499-e1d1-4978-b3e9-e80c45d3f150"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=msmGZB-20_A:nLeuyBR6UgQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=msmGZB-20_A:nLeuyBR6UgQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=msmGZB-20_A:nLeuyBR6UgQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=msmGZB-20_A:nLeuyBR6UgQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=msmGZB-20_A:nLeuyBR6UgQ:gsZI0cpJP_o"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=gsZI0cpJP_o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=msmGZB-20_A:nLeuyBR6UgQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CaptainLoadtest/~4/msmGZB-20_A" height="1" width="1"/&gt;</description>
      <comments>http://www.cptloadtest.com/CommentView,guid,f8b1b499-e1d1-4978-b3e9-e80c45d3f150.aspx</comments>
      <category>Events</category>
    <feedburner:origLink>http://www.cptloadtest.com/2009/04/08/Lansing-Give-Camp-2009-April-2426.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.cptloadtest.com/Trackback.aspx?guid=1969da77-0f42-4e5a-97cb-78a60ba0c946</trackback:ping>
      <pingback:server>http://www.cptloadtest.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.cptloadtest.com/PermaLink,guid,1969da77-0f42-4e5a-97cb-78a60ba0c946.aspx</pingback:target>
      <dc:creator>Jay Harris</dc:creator>
      <wfw:comment>http://www.cptloadtest.com/CommentView,guid,1969da77-0f42-4e5a-97cb-78a60ba0c946.aspx</wfw:comment>
      <wfw:commentRss>http://www.cptloadtest.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1969da77-0f42-4e5a-97cb-78a60ba0c946</wfw:commentRss>
      
      <title>[Fixed] Adding DotNetKicks FeedFlare to FeedBurner</title>
      <guid isPermaLink="false">http://www.cptloadtest.com/PermaLink,guid,1969da77-0f42-4e5a-97cb-78a60ba0c946.aspx</guid>
      <link>http://feedproxy.google.com/~r/CaptainLoadtest/~3/uB5pwkQrwsI/Fixed-Adding-DotNetKicks-FeedFlare-To-FeedBurner.aspx</link>
      <pubDate>Thu, 02 Apr 2009 13:07:41 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
FeedBurner used to allow adding DotNetKicks FeedFlare to your feeds. Even today, the&#xD;
FeedFlare catalog lists "Kick It" using DNK's &lt;a href="http://static.dotnetkicks.com/tools/feedflare/kickitflare.xml"&gt;FeedFlareUnit&#xD;
file&lt;/a&gt;. Unfortunately, when adding this file to FeedFlare using the link given in&#xD;
the catalog, the unfortunate user receives only a JavaScript alert of "We could not&#xD;
find a valid FeedFlare file at that location" instead of an enhanced feed. Why? No&#xD;
XML Declaration is contained within DNK's XML file.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Example XML Declaration&#xD;
&lt;/h3&gt;&#xD;
        &lt;pre class="xml:nocontrols" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
By adding only an XML Declaration to the top of the file, FeedBurner is now able to&#xD;
properly parse the document, and add the new flare to a feed. This would also apply&#xD;
to any custom FeedFlareUnit that you develop; be sure to add an XML Declaration to&#xD;
your XML.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Corrected File for DotNetKicks&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Download: &lt;a href="http://www.cptloadtest.com/content/text/kickitflare.xml"&gt;kickitflare.xml&lt;/a&gt;&lt;/p&gt;&#xD;
        &lt;pre class="xml:nocontrols" name="code"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&#xD;
&amp;lt;FeedFlareUnit&amp;gt;&#xD;
  &amp;lt;Catalog&amp;gt;&#xD;
    &amp;lt;Title&amp;gt;Kick it&amp;lt;/Title&amp;gt;&#xD;
    &amp;lt;Description&amp;gt;Kick this story on dotnetkicks.com&amp;lt;/Description&amp;gt;&#xD;
  &amp;lt;/Catalog&amp;gt;&#xD;
  &amp;lt;FeedFlare&amp;gt;&#xD;
    &amp;lt;Text&amp;gt;Kick it&amp;lt;/Text&amp;gt;&#xD;
    &amp;lt;Link href="http://www.dotnetkicks.com/kick/?url=${link}" /&amp;gt;&#xD;
  &amp;lt;/FeedFlare&amp;gt;&#xD;
&amp;lt;/FeedFlareUnit&amp;gt;&lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
I have &lt;a href="http://code.google.com/p/dotnetkicks/issues/detail?id=249"&gt;logged&#xD;
a ticket&lt;/a&gt; with DotNetKicks on their &lt;a href="http://code.google.com/p/dotnetkicks/"&gt;Google&#xD;
Code issue tracker&lt;/a&gt;. Hopefully, as opportunity allows, they can update the file&#xD;
on dotnetkicks.com so that the FeedFlare catalog entry will work once again. Feel&#xD;
free to add DotNetKicks FeedFlare to your FeedBurner feed using the file link above&#xD;
until they have an opportunity to address the ticket.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Adding DotNetKicks FeedFlare to your FeedBurner Feed&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
To add the "Kick It" FeedFlare to your existing FeedBurner feed:&#xD;
&lt;/p&gt;&#xD;
        &lt;ol&gt;&#xD;
          &lt;li&gt;&#xD;
Copy the URL for the updated kickitflare.xml file to your clipboard:&lt;br&gt;&lt;em&gt;http://www.cptloadtest.com/content/text/kickitflare.xml&lt;/em&gt;&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Log in to FeedBurner at &lt;a href="http://feedburner.google.com"&gt;http://feedburner.google.com&lt;/a&gt;&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Navigate to your feed details, then to the Optimize tab, then to FeedFlare &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Paste the URL into the textbox, and click &lt;em&gt;Add New Flare&lt;/em&gt;. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
As desired, check the appropriate checkboxes to add the flare to your RSS feed and&#xD;
to your site. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Click the &lt;em&gt;Save&lt;/em&gt; button at the bottom of the page.&lt;/li&gt;&#xD;
        &lt;/ol&gt;&#xD;
        &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9f91e4d9-f2f1-4e0b-aba8-871515dfa427" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/Blogging" rel="tag"&gt;Blogging&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DotNetKicks" rel="tag"&gt;DotNetKicks&lt;/a&gt;,&lt;a href="http://technorati.com/tags/FeedBurner" rel="tag"&gt;FeedBurner&lt;/a&gt;,&lt;a href="http://technorati.com/tags/FeedFlare" rel="tag"&gt;FeedFlare&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.cptloadtest.com/aggbug.ashx?id=1969da77-0f42-4e5a-97cb-78a60ba0c946"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=uB5pwkQrwsI:tO2DLCDUXps:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=uB5pwkQrwsI:tO2DLCDUXps:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=uB5pwkQrwsI:tO2DLCDUXps:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=uB5pwkQrwsI:tO2DLCDUXps:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=uB5pwkQrwsI:tO2DLCDUXps:gsZI0cpJP_o"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=gsZI0cpJP_o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=uB5pwkQrwsI:tO2DLCDUXps:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CaptainLoadtest/~4/uB5pwkQrwsI" height="1" width="1"/&gt;</description>
      <comments>http://www.cptloadtest.com/CommentView,guid,1969da77-0f42-4e5a-97cb-78a60ba0c946.aspx</comments>
      <category>Blogging</category>
    <feedburner:origLink>http://www.cptloadtest.com/2009/04/02/Fixed-Adding-DotNetKicks-FeedFlare-To-FeedBurner.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.cptloadtest.com/Trackback.aspx?guid=e1276750-40c4-46ca-9045-c0e3d7573fb5</trackback:ping>
      <pingback:server>http://www.cptloadtest.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.cptloadtest.com/PermaLink,guid,e1276750-40c4-46ca-9045-c0e3d7573fb5.aspx</pingback:target>
      <dc:creator>Jay Harris</dc:creator>
      <wfw:comment>http://www.cptloadtest.com/CommentView,guid,e1276750-40c4-46ca-9045-c0e3d7573fb5.aspx</wfw:comment>
      <wfw:commentRss>http://www.cptloadtest.com/SyndicationService.asmx/GetEntryCommentsRss?guid=e1276750-40c4-46ca-9045-c0e3d7573fb5</wfw:commentRss>
      
      <title>Dev Basics: What is Continuous Integration?</title>
      <guid isPermaLink="false">http://www.cptloadtest.com/PermaLink,guid,e1276750-40c4-46ca-9045-c0e3d7573fb5.aspx</guid>
      <link>http://feedproxy.google.com/~r/CaptainLoadtest/~3/I0oV_s2EVvY/Dev-Basics-What-Is-Continuous-Integration.aspx</link>
      <pubDate>Thu, 02 Apr 2009 00:25:01 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Scheduled Integration is hard. I remember being involved in projects where developers&#xD;
would get a copy of the latest source code and a task, and race off like horses at&#xD;
the track while they spent a few weeks implementing their assigned feature. At the&#xD;
end of these many weeks was a scheduled integration, where all developers in the team&#xD;
would reconvene with their code modifications, and try to get their respective code&#xD;
to play well in a single sandbox. Project managers always seemed to expect that this&#xD;
would be a quick and painless process, but, of course, it never was. Reintegration&#xD;
of the code sometimes took just as long as the implementation, itself. Even if developers&#xD;
are all working in one big room throughout the project, the code remains isolated,&#xD;
never shared or reintegrated. Fortunately, Continuous Integration specifically focuses&#xD;
on this problem by reducing (and often eliminating) the end-of-project reintegration&#xD;
cycle through a continuous constant integration process.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Continuously Integrating your Mind&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
For a moment, compare  the process of software development with the process of&#xD;
learning new technologies in your field. In the past few years of Microsoft's .NET&#xD;
platform, we've seen .NET 2.0, Windows Communication Foundation, Windows Presentation&#xD;
Foundation, Workflow Foundation, Extension Methods, Generics, Linq, Dynamic Data,&#xD;
ASP.NET MVC, and more. For a developer that has not kept up with the latest trends,&#xD;
to suddenly and quickly catch up with the bleeding edge would be a major undertaking,&#xD;
and psychologically intimidating. This Scheduled Integration approach to learning&#xD;
can be overwhelming; the learning process is isolated, and only occasionally reconnects&#xD;
to the latest technologies. However, a developer that has kept up with the trends,&#xD;
learning through a continuous integration process, has been constantly updating, constantly&#xD;
learning the Next Big Thing over these past few years; this developer is already long&#xD;
familiar with .NET 2.0, WF, WCF, WPF, Generics, and Linq, and is now working on only&#xD;
Dynamic Data and MVC. The Continuous Integration process ensures that those involved&#xD;
are current with the latest developments in their project, and that the overwhelming&#xD;
burden of integration at the end of a project is instead simplified by distributing&#xD;
it throughout the course of the timeline.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;Core Continuous Integration&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
At its core, Continuous Integration, or CI, is a development model where developers&#xD;
regularly commit and update against their source control repository. By committing&#xD;
(giving everyone else access to your code changes) and updating (getting code changes&#xD;
from everyone else), the scheduled, tedious integration process at the end of the&#xD;
project is eliminated. Added on top of this single fundamental, is ensuring the code&#xD;
works: Automating the build through scripting frameworks like Make, MSBuild, or NAnt&#xD;
helps developers validate their status quickly, by invoking a validation step that&#xD;
not only compiles, but executes a suite of unit tests against the code base. Validation&#xD;
results, along with the latest valid code, are then made easily accessible to anyone&#xD;
on the team.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The ten tenets of Continuous Integration are:&#xD;
&lt;/p&gt;&#xD;
        &lt;ol&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;strong&gt;Maintain a Source Code Repository&lt;/strong&gt;&#xD;
            &lt;br&gt;&#xD;
Use a code repository, such as Subversion, Bazaar, or even Visual Source Safe. This&#xD;
allows a central point-of-truth for the development team, against which code can be&#xD;
committed or updated. This even applies to a development team consisting of only one&#xD;
person, as a local hard drive alone cannot provide change logs, revision differences,&#xD;
rollback capability, and other benefits of source management. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;strong&gt;Commit Frequently&lt;/strong&gt;&#xD;
            &lt;br&gt;&#xD;
As other developers commit code changes, your local version of the code will get further&#xD;
and further from the revision head, thus increasing the likelihood of a conflicting&#xD;
change that will need manual resolution. By committing often (and by association,&#xD;
updating even more often), everyone can stay very close to the revision head, reducing&#xD;
the likelihood of conflicts, and reducing time to integrate code and functionality. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;strong&gt;Self-Testing Code&lt;br&gt;&lt;/strong&gt;"It compiles" is not sufficient criteria for determining if a project is&#xD;
ready for delivery or deployment to the client. Some level of testing must be conducted&#xD;
against each compile to measure application quality. Using unit tests, functional&#xD;
tests, or some other form of automated acceptance tests, the code can evaluate itself&#xD;
against expected outcome, providing a much more accurate and granular metric for readiness. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;strong&gt;Automate the Build&lt;/strong&gt;&#xD;
            &lt;br&gt;&#xD;
Using Make, NAnt, MSBuild, or similar frameworks, consolidate execution of your full&#xD;
build into a single command, or a single icon on your desktop. These scripts should&#xD;
execute a full compile, and run your full suite of testing and evaluation tools against&#xD;
the compile. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;strong&gt;Build Fast, Fail Fast&lt;br&gt;&lt;/strong&gt;Even if your build is automated, no one wants to wait 30 minutes for the&#xD;
build to complete. Building your code should not just be a lunch-break activity. Keep&#xD;
the build fast to enable developers to do so as often as possible. And if there is&#xD;
a problem, fail immediately. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;strong&gt;Build Every Mainline Commit on an Integration Machine&lt;br&gt;&lt;/strong&gt;We all have applications on our local desktops that will not be present in&#xD;
Production. Instant Messenger, iTunes, Visual Studio, and Office are all common for&#xD;
us, but rare in Production. However, these applications can conflict or distort build&#xD;
results, such as a reference to an Office assembly that is not included in your deployment&#xD;
package. By executing the automated build on an integration machine (iTunes free,&#xD;
and using a CI suite like Hudson or CruiseControl), you can increase confidence in&#xD;
your application and eliminate "it works on my box!" &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;strong&gt;Automate the Deployment&lt;br&gt;&lt;/strong&gt;Manual code deployment is a mundane, highly repetitive, error-prone, and&#xD;
time-consuming process that is ripe for automation. The time commitment adds to the&#xD;
stress when QA requests yet another deployment to the testing environment, particularly&#xD;
when all of the developers are in 80-hour-week crunch mode. In turn, this stress reduces&#xD;
deployment quality; environments often have configuration differences, such as different&#xD;
database connection strings, credentials, or web service URLs, and often only one&#xD;
configuration change needs to be overlooked to cause the entire system to malfunction.&#xD;
Automate this task, so that it can be executed easily, dependably, and often. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;strong&gt;Test in a Clone of the Production Environment&lt;br&gt;&lt;/strong&gt;In addition to Office and iTunes not being a part of the production server&#xD;
build, there are aspects of the production environment that are not a part of the&#xD;
desktop environment. Server farms, federated databases, and load balancing are examples&#xD;
of things that &lt;em&gt;do not&lt;/em&gt; exist on the developer desktop, but &lt;em&gt;do&lt;/em&gt; exist&#xD;
in production, and can cause surprises if they are not considered during development&#xD;
and testing. Consider the &lt;em&gt;haves&lt;/em&gt; and the &lt;em&gt;have-nots&lt;/em&gt; in your test environment,&#xD;
and eliminate these surprises. And if the cost of another production environment is&#xD;
out of reach, consider Virtual Machines. VMs have significantly reduced the cost of&#xD;
creating a &lt;a href="http://www.cptloadtest.com/2005/05/25/AWateredDownTestEnvironment.aspx"&gt;watered&#xD;
down test environment&lt;/a&gt; that still has things like server farms or database clusters;&#xD;
even if you cannot exactly replicate your production configuration, mitigate your&#xD;
risk by reducing the differences between your test and production environments. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;strong&gt;Everyone Can View the Latest Build Results&lt;br&gt;&lt;/strong&gt;The underlying driver behind Continuous Integration is transparency and visibility.&#xD;
Communication enables both transparency and visibility by allowing everyone on the&#xD;
team to know the full status of the build. Did it compile? Did the unit tests pass?&#xD;
Which unit tests failed? Did the deployment work? How many seconds did it take to&#xD;
compile the application? Who broke the build? Continuous Integration suites, such&#xD;
as Hudson or CruiseControl, provide reporting mechanisms on build status. Make this&#xD;
status available to anyone, including project managers, and even the sales guy. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;strong&gt;Everyone Can Get the Latest Executable&lt;br&gt;&lt;/strong&gt;On a software development project, communication is more than just green&#xD;
icons (successful builds) and red icons (failed builds). Communicate the ones and&#xD;
zeros, in the form of your compiled application, to your team. By allowing other developers,&#xD;
testers, and even the sales guy (perhaps for a demo) to get the latest bits for themselves,&#xD;
developers can focus on writing code.&lt;/li&gt;&#xD;
        &lt;/ol&gt;&#xD;
        &lt;h3&gt;Benefits of Continuous Integration&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
By continuously integrating all new code and feature sets, development teams can eliminate&#xD;
that long and tedious scheduled integration effort, which reduces overall effort,&#xD;
time line, and budget. Through self-testing code and building every mainline commit,&#xD;
code is continuously tested against a full suite of tests, allowing quick analysis&#xD;
and identification of breaking changes. Through the easy accessibility of the latest&#xD;
bits, the team can test early and often, allowing quick identification of broken functionality,&#xD;
and for early identification of features that don't quite align with what the client&#xD;
had in mind. And finally, the immediate and public feedback on the success or failure&#xD;
of the build provides incentives for developers to write code in smaller increments&#xD;
and perform more pre-commit testing, resulting in higher quality code.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I consider Continuous Integration to be an essential, required part of any development&#xD;
effort, every time. I started using CI in 2004, and I have since become dependent&#xD;
on it. I even have a Continuous Integration box at home, validating home projects&#xD;
for my development-team-of-one, and I am comforted by having a Continuous Integration&#xD;
server analyzing and validating every code change that I make. I break unit tests&#xD;
as often as anyone else does, and there still continues to be plenty of times that&#xD;
I even break the compile. At least once, every developer among us has checked in the&#xD;
project file while forgetting to add &lt;em&gt;myNewClass.cs&lt;/em&gt; to Source Control. It&#xD;
will break the compile every time. Fortunately, Continuous Integration is always watching&#xD;
my code commits; it will let me know that it could not find &lt;em&gt;myNewClass.cs&lt;/em&gt;,&#xD;
every time. And my application's quality is remarkably better for it. Every time.&#xD;
&lt;/p&gt;&#xD;
        &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f66bf28d-3c0c-4374-a537-abb6c7571de2" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/CI" rel="tag"&gt;CI&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Continuous%20Integration" rel="tag"&gt;Continuous&#xD;
Integration&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Developer%20Basics" rel="tag"&gt;Developer&#xD;
Basics&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.cptloadtest.com/aggbug.ashx?id=e1276750-40c4-46ca-9045-c0e3d7573fb5"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=I0oV_s2EVvY:6hhiloXG8G0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=I0oV_s2EVvY:6hhiloXG8G0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=I0oV_s2EVvY:6hhiloXG8G0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=I0oV_s2EVvY:6hhiloXG8G0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=I0oV_s2EVvY:6hhiloXG8G0:gsZI0cpJP_o"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=gsZI0cpJP_o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=I0oV_s2EVvY:6hhiloXG8G0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CaptainLoadtest/~4/I0oV_s2EVvY" height="1" width="1"/&gt;</description>
      <comments>http://www.cptloadtest.com/CommentView,guid,e1276750-40c4-46ca-9045-c0e3d7573fb5.aspx</comments>
      <category>Continuous Integration</category>
      <category>Dev Basics</category>
    <feedburner:origLink>http://www.cptloadtest.com/2009/04/02/Dev-Basics-What-Is-Continuous-Integration.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.cptloadtest.com/Trackback.aspx?guid=84de21c3-262c-4bd1-98de-6a16c8e86fb2</trackback:ping>
      <pingback:server>http://www.cptloadtest.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.cptloadtest.com/PermaLink,guid,84de21c3-262c-4bd1-98de-6a16c8e86fb2.aspx</pingback:target>
      <dc:creator>Jay Harris</dc:creator>
      <wfw:comment>http://www.cptloadtest.com/CommentView,guid,84de21c3-262c-4bd1-98de-6a16c8e86fb2.aspx</wfw:comment>
      <wfw:commentRss>http://www.cptloadtest.com/SyndicationService.asmx/GetEntryCommentsRss?guid=84de21c3-262c-4bd1-98de-6a16c8e86fb2</wfw:commentRss>
      
      <title>Changing of the Guard at Ann Arbor .Net Developers</title>
      <guid isPermaLink="false">http://www.cptloadtest.com/PermaLink,guid,84de21c3-262c-4bd1-98de-6a16c8e86fb2.aspx</guid>
      <link>http://feedproxy.google.com/~r/CaptainLoadtest/~3/j6Mq3pzvaDY/Changing-Of-The-Guard-At-Ann-Arbor-Net-Developers.aspx</link>
      <pubDate>Tue, 24 Mar 2009 14:38:25 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
February was election month for us .Net Developers in Ann Arbor, Michigan. On February&#xD;
11th, during the monthly meeting, the Ann Arbor .Net Developers user group held its&#xD;
annual elections. After serving as the group's leader for the past 3 years--ever since&#xD;
the group was formed--Bill Wagner decided to hand over the reins. When the election&#xD;
dust settled, I stood as the second President of the Ann Arbor .Net Developers. I&#xD;
appreciate the honor and the opportunity given to me, and I look forward to serving&#xD;
the group for 2009.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;The Elected&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;President:&lt;/strong&gt; Jay Harris&lt;br&gt;&lt;strong&gt;Vice Pres:&lt;/strong&gt; Scott Zischerk&lt;br&gt;&lt;strong&gt;Secretary: &lt;/strong&gt;Darrell Hawley&lt;br&gt;&lt;strong&gt;Treasurer:&lt;/strong&gt; Eric Bratton&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
That evening, after the meeting, we held our first board meeting, as we were responsible&#xD;
for filling the two appointed positions: Program Chair and Webmaster. As the group&#xD;
has grown, so have these two roles. Program Chair turned into a catchall for most&#xD;
of the membership and speaker management, and was an overload for one person. Webmaster&#xD;
had changed, too, as the group's web site is no longer the only communication medium&#xD;
we employ.&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
We restructured these two appointed positions into four. Program Director is responsible&#xD;
for knowing what people want to learn about, and making sure that our schedule is&#xD;
booked solid with great speakers. Webmaster has been rebranded as Communication Director,&#xD;
and is the public voice of our group; the position is responsible for any articles&#xD;
and communications published by the group, and for maintaining the web site, Twitter,&#xD;
Facebook, and all of our other various methods of getting the word out. Membership&#xD;
Director is one of our entirely new roles, responsible for maintaining demographics&#xD;
on the group, membership listings, and swag. Finally, we wanted to ease the burden&#xD;
on our group membership and work towards eliminating our member-dues fiscal model;&#xD;
the new Sponsorship Director is responsible for finding sponsorship funding to help&#xD;
run our group.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;The Appointed&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;strong&gt;Program Director: &lt;/strong&gt;Mike Woelmer&lt;br&gt;&lt;strong&gt;Membership Director: &lt;/strong&gt;Dennis Burton&lt;br&gt;&lt;strong&gt;Sponsorship Director:&lt;/strong&gt; Brian Genisio&lt;br&gt;&lt;strong&gt;Communications Director:&lt;/strong&gt; Len Smith&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The new board has some great ideas for the upcoming year, and I am excited to be a&#xD;
part of it. In addition, a sincere thank you goes out to the departing board members,&#xD;
Bill Wagner (President) and Dave Redding (Vice President); we appreciate the effort&#xD;
that you have put in to this group.&#xD;
&lt;/p&gt;&#xD;
        &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a1bb7c15-232d-4541-9f88-3f4afb7421b8" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/AADND" rel="tag"&gt;AADND&lt;/a&gt;,&lt;a href="http://technorati.com/tags/User%20Groups" rel="tag"&gt;User&#xD;
Groups&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Ann%20Arbor%20.Net%20Developers" rel="tag"&gt;Ann&#xD;
Arbor .Net Developers&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.cptloadtest.com/aggbug.ashx?id=84de21c3-262c-4bd1-98de-6a16c8e86fb2"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=j6Mq3pzvaDY:_53var-xlI0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=j6Mq3pzvaDY:_53var-xlI0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=j6Mq3pzvaDY:_53var-xlI0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=j6Mq3pzvaDY:_53var-xlI0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=j6Mq3pzvaDY:_53var-xlI0:gsZI0cpJP_o"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=gsZI0cpJP_o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=j6Mq3pzvaDY:_53var-xlI0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CaptainLoadtest/~4/j6Mq3pzvaDY" height="1" width="1"/&gt;</description>
      <comments>http://www.cptloadtest.com/CommentView,guid,84de21c3-262c-4bd1-98de-6a16c8e86fb2.aspx</comments>
      <category>Events</category>
    <feedburner:origLink>http://www.cptloadtest.com/2009/03/24/Changing-Of-The-Guard-At-Ann-Arbor-Net-Developers.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.cptloadtest.com/Trackback.aspx?guid=4837e042-3810-4dd1-8460-4c4dc229d5fd</trackback:ping>
      <pingback:server>http://www.cptloadtest.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.cptloadtest.com/PermaLink,guid,4837e042-3810-4dd1-8460-4c4dc229d5fd.aspx</pingback:target>
      <dc:creator>Jay Harris</dc:creator>
      <wfw:comment>http://www.cptloadtest.com/CommentView,guid,4837e042-3810-4dd1-8460-4c4dc229d5fd.aspx</wfw:comment>
      <wfw:commentRss>http://www.cptloadtest.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4837e042-3810-4dd1-8460-4c4dc229d5fd</wfw:commentRss>
      <slash:comments>1</slash:comments>
      
      <title>Quick Tips: Changing Subversion Commit Comments</title>
      <guid isPermaLink="false">http://www.cptloadtest.com/PermaLink,guid,4837e042-3810-4dd1-8460-4c4dc229d5fd.aspx</guid>
      <link>http://feedproxy.google.com/~r/CaptainLoadtest/~3/ALuH2XNYQtI/Quick-Tips-Changing-Subversion-Commit-Comments.aspx</link>
      <pubDate>Fri, 27 Feb 2009 21:54:45 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Have you ever made comments when committing in to source control that you wish you&#xD;
could take back? Perhaps in a rage, you entered "Jimmy's code was a pile of fermenting&#xD;
humus that didn't work. So I fixed it!" Now you realize that Jimmy will see it, your&#xD;
boss is going to see it, and you want to change the comments to something that has&#xD;
a bit more tact. Or maybe your reason is far less malicious: you identified a major&#xD;
bug that you just committed, and you would like to update the comment log to say "Don't&#xD;
use this revision. It has a major bug."&#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In Subversion, the comments can be updated long after the original commit. Log messages&#xD;
are just a property on the repository revision.&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="nocontrols" name="code"&gt;svn propset --revision &amp;lt;REVISION&amp;gt; --revprop &amp;lt;MESSAGE&amp;gt; &amp;lt;URL&amp;gt;&lt;/pre&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
&amp;lt;REVISION&amp;gt; : The revision number of the target log message. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
&amp;lt;MESSAGE&amp;gt; : The value of the new log message, wrapped in quotes if necessary. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
&amp;lt;URL&amp;gt; : The base URL of your repository. Since this applies to a revision property,&#xD;
rather than a file property, only the base URL of the repository is needed, rather&#xD;
than a URL directly to a file.&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
Now your malicious revision comment can be overwritten by:&#xD;
&lt;/p&gt;&#xD;
        &lt;pre class="nocontrols" name="code"&gt;svn propset --revision 123 --revprop "Fixed issue #17" http://svnserver/myrepos/&lt;/pre&gt;&#xD;
        &lt;p&gt;&#xD;
But next time, do try to be nice to Jimmy.&#xD;
&lt;/p&gt;&#xD;
        &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4cb2c096-64fc-4552-836a-fb52d0af0452" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/Subversion" rel="tag"&gt;Subversion&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Quick%20Tips" rel="tag"&gt;Quick&#xD;
Tips&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Programming" rel="tag"&gt;Programming&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.cptloadtest.com/aggbug.ashx?id=4837e042-3810-4dd1-8460-4c4dc229d5fd"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=ALuH2XNYQtI:lrk8WWq1xBA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=ALuH2XNYQtI:lrk8WWq1xBA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=ALuH2XNYQtI:lrk8WWq1xBA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=ALuH2XNYQtI:lrk8WWq1xBA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=ALuH2XNYQtI:lrk8WWq1xBA:gsZI0cpJP_o"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=gsZI0cpJP_o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=ALuH2XNYQtI:lrk8WWq1xBA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CaptainLoadtest/~4/ALuH2XNYQtI" height="1" width="1"/&gt;</description>
      <comments>http://www.cptloadtest.com/CommentView,guid,4837e042-3810-4dd1-8460-4c4dc229d5fd.aspx</comments>
      <category>Programming</category>
      <category>Quick Tips</category>
    <feedburner:origLink>http://www.cptloadtest.com/2009/02/27/Quick-Tips-Changing-Subversion-Commit-Comments.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://www.cptloadtest.com/Trackback.aspx?guid=084a817f-c549-4ad4-9dab-ffc998c7b487</trackback:ping>
      <pingback:server>http://www.cptloadtest.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.cptloadtest.com/PermaLink,guid,084a817f-c549-4ad4-9dab-ffc998c7b487.aspx</pingback:target>
      <dc:creator>Jay Harris</dc:creator>
      <wfw:comment>http://www.cptloadtest.com/CommentView,guid,084a817f-c549-4ad4-9dab-ffc998c7b487.aspx</wfw:comment>
      <wfw:commentRss>http://www.cptloadtest.com/SyndicationService.asmx/GetEntryCommentsRss?guid=084a817f-c549-4ad4-9dab-ffc998c7b487</wfw:commentRss>
      <slash:comments>4</slash:comments>
      
      <title>Visual Studio Macro: Modify Text Editor Font Size</title>
      <guid isPermaLink="false">http://www.cptloadtest.com/PermaLink,guid,084a817f-c549-4ad4-9dab-ffc998c7b487.aspx</guid>
      <link>http://feedproxy.google.com/~r/CaptainLoadtest/~3/QH6N426gHAQ/Visual-Studio-Macro-Modify-Text-Editor-Font-Size.aspx</link>
      <pubDate>Mon, 26 Jan 2009 16:38:48 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Increasing or decreasing the font size of your code in Visual Studio's text editor&#xD;
is almost required whenever VS is fired up on a projector. Anyone who has had to demo&#xD;
code, or give a talk at a user group, or present new technologies to their team has&#xD;
experienced the pain of increasing the font size through the &lt;em&gt;Tools -&amp;gt; Options&lt;/em&gt; menu,&#xD;
followed by an inquiry to the crowd: "How's that? Is this font size readable by everyone?"&#xD;
Often times the selected size is not quite the right solution, and the process is&#xD;
repeated. Life as a presenter would be easier if only you could modify the font size&#xD;
through a simple keyboard command, similar to how browsers enable you adjust the font&#xD;
through the &lt;em&gt;ctrl+&lt;/em&gt; and &lt;em&gt;ctrl-&lt;/em&gt; commands.&#xD;
&lt;/p&gt;&#xD;
        &lt;blockquote&gt;&#xD;
          &lt;p&gt;&#xD;
            &lt;strong&gt;Macros.Samples.Accessibility.DecreaseTextEditorFontSize&lt;br&gt;&lt;/strong&gt;Decreases the text editor font size in Visual Studio&#xD;
&lt;/p&gt;&#xD;
          &lt;p&gt;&#xD;
            &lt;strong&gt;Macros.Samples.Accessibility.IncreaseTextEditorFontSize&lt;br&gt;&lt;/strong&gt;Increases the text editor font size in Visual Studio&#xD;
&lt;/p&gt;&#xD;
        &lt;/blockquote&gt;&#xD;
        &lt;p&gt;&#xD;
Fortunately, this is easy with the help of Visual Studio's Sample Macros. To help&#xD;
show you the ropes of writing custom macros, VS ships with a collection samples, and&#xD;
two of these samples respectively increase and decrease the font size of the text&#xD;
editor. Right out of the box, Visual Studio comes with the ability to modify the font&#xD;
size for your code; all that remains is mapping these macros to the keyboard.&#xD;
&lt;/p&gt;&#xD;
        &lt;h3&gt;&#xD;
          &lt;img style="margin: 0px 0px 10px 20px" alt="Visual Studio Options Window, Assigning Macro to Keyboard Command" src="http://www.cptloadtest.com/content/binary/VSMacroIncreaseTextOptionsWindow.jpg" align="right"&gt;&lt;/img&gt;Mapping&#xD;
to the Keyboard&#xD;
&lt;/h3&gt;&#xD;
        &lt;p&gt;&#xD;
Anchoring these macros to specific keyboard commands is a simple process.&#xD;
&lt;/p&gt;&#xD;
        &lt;ol&gt;&#xD;
          &lt;li&gt;&#xD;
From Visual Studio, access the &lt;em&gt;Tools -&amp;gt; Options&lt;/em&gt; menu.&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
In the &lt;em&gt;Options&lt;/em&gt; window, navigate to &lt;em&gt;Environment -&amp;gt; Keyboard&lt;/em&gt;.&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Using the "&lt;em&gt;Show commands containing"&lt;/em&gt; input, enter in &lt;em&gt;IncreaseText&lt;/em&gt; or &lt;em&gt;DecreaseText&lt;/em&gt;.&#xD;
The list of available commands will automatically filter as you type, reducing the&#xD;
list to the applicable macro.&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Select the macro command, and select the "&lt;em&gt;Press shortcut keys"&lt;/em&gt; input, and&#xD;
enter your desired keyboard command. Click the &lt;em&gt;Assign&lt;/em&gt; button to set the command.&#xD;
I use "&lt;em&gt;Ctrl, Alt, Shift, =&lt;/em&gt;" (plus) and "&lt;em&gt;Ctrl, Alt, Shift, -&lt;/em&gt;" for&#xD;
my Increase and Decrease commands, respectively.&lt;/li&gt;&#xD;
        &lt;/ol&gt;&#xD;
        &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:af70b901-9836-405b-a0dc-b38bbcf6bff5" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati&#xD;
Tags: &lt;a href="http://technorati.com/tags/Visual%20Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Presenting" rel="tag"&gt;Presenting&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Speaking" rel="tag"&gt;Speaking&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Macros" rel="tag"&gt;Macros&lt;/a&gt;&lt;/div&gt;&#xD;
        &lt;img width="0" height="0" src="http://www.cptloadtest.com/aggbug.ashx?id=084a817f-c549-4ad4-9dab-ffc998c7b487"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=QH6N426gHAQ:qqfc28cNOuU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=QH6N426gHAQ:qqfc28cNOuU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=QH6N426gHAQ:qqfc28cNOuU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?i=QH6N426gHAQ:qqfc28cNOuU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=QH6N426gHAQ:qqfc28cNOuU:gsZI0cpJP_o"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=gsZI0cpJP_o" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CaptainLoadtest?a=QH6N426gHAQ:qqfc28cNOuU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CaptainLoadtest?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/CaptainLoadtest/~4/QH6N426gHAQ" height="1" width="1"/&gt;</description>
      <comments>http://www.cptloadtest.com/CommentView,guid,084a817f-c549-4ad4-9dab-ffc998c7b487.aspx</comments>
      <category>Speaking</category>
      <category>Tools</category>
      <category>Visual Studio</category>
    <feedburner:origLink>http://www.cptloadtest.com/2009/01/26/Visual-Studio-Macro-Modify-Text-Editor-Font-Size.aspx</feedburner:origLink></item>
  </channel>
</rss>
