<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Agile Methodologies</title>
        <link>http://geekswithblogs.net/chrisfalter/category/7692.aspx</link>
        <description>Agile development methodologies are revolutionizing the way we implement software systems.</description>
        <language>en-US</language>
        <copyright>Chris Falter</copyright>
        <managingEditor>chrisfalter@yahoo.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Agile Software Development: A "Value-Up" Approach</title>
            <link>http://geekswithblogs.net/chrisfalter/archive/2008/02/13/119559.aspx</link>
            <description>&lt;font face="Arial"&gt;
&lt;p&gt;&lt;font face="Arial"&gt;I am reading &lt;a href="http://www.amazon.com/Software-Engineering-Microsoft-Visual-Development/dp/0321278720/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1202955129&amp;amp;sr=8-1"&gt;Software Engineering with Microsoft Visual Studio Team System&lt;/a&gt; by Sam Guckenheimer, the group product planner for Microsoft's Visual Studio Team System.  I am finding the book very helpful and thought-provoking, so I want to share my thoughts as I work through the book.  This essay contains my thoughts on the first chapter.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;The standard models of software project management--in particular, the "waterfall" methodology at the root of the Software Development Lifecycle (SDLC)--are based on the management approaches of other engineering disciplines, such as civil engineering.  Consider the project management forces in play when you are building a bridge:&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;em&gt;Well-Understood Design&lt;/em&gt; - You can build a new bridge that is virtually identical with an existing bridge.  The design elements of a bridge, the milestones the project will cross, and the features that must be included (move a certain volume of traffic safely) contain no surprises.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;em&gt;Low Variance in Estimates&lt;/em&gt; - Hundreds of similar bridges have been built previously, so it is not difficult to estimate cost and effort with great accuracy.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;em&gt;Little Ability to Provide Incremental Value&lt;/em&gt; - A half-finished bridge is of no use to anyone!&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Guckenheimer refers to SDLC methodology as a &lt;em&gt;"work-down"&lt;/em&gt; approach.  After you have completed your design, you draw up the task list, estimate the effort, and draft a work plan.  Managing the effort (especially the critical path) is based on this up-front work plan--hence the use of the term "work-down."&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;The problem with the work-down approach is that most software projects face quite different forces than the typical bridge building project:&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;em&gt;Design issues are not often solved prior to building the system.&lt;/em&gt;  The new system is not identical to any other system--at least any system whose project plan and resource expenditures are known.  If an almost identical system were available, the customer would probably buy it off the shelf.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;em&gt;System requirements are incomplete, at best.&lt;/em&gt;  As users start to interact with the system and discover its capabilities, they will generate new ideas for features.  Thus the development team will face a demand for shifting requirements.  Of course, if the requirements change, you can throw the original estimation of cost and effort out the window.  On the other hand, if the project team resists shifting requirements due to its up-front investment in an extensive design phase and work estimation (you have heard of "scope creep," right?), the team is at risk of delivering a system with lots of features that offer little value to the customer.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;em&gt;The up-front estimation of time and effort may be very imprecise&lt;/em&gt; due to poorly understood design challenges and customer requirements.&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;The Agile development movement is a response to these difficulties in the traditional work-down approach.  The Agile approach is a &lt;em&gt;"value-up&lt;/em&gt;" approach; it seeks to provide increasing value, incrementally, as a system is being built.  Essentially, an agile approach targets (in collaboration with the customer) a specific set of valued features in a project iteration.  This iteration should not have a long duration; in the &lt;a href="http://en.wikipedia.org/wiki/Scrum_(development)"&gt;Scrum &lt;/a&gt;methodology, for example, the team's iteration is a one-month "sprint."  This short duration minimizes the risks involved with a traditional software project, since the customer is (presumably) obtaining the highest value features first, and the design/coding tasks being estimated are an easier-to-understand portion of an ever-evolving system.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Guckenheimer provides a table of differences between work-down and value-up approaches that I summarize here:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;
&lt;table cellspacing="1" cellpadding="1" width="80%" align="center" summary="" border="1"&gt;
    &lt;caption&gt;&lt;em&gt;&lt;font size="2"&gt;Work-Down vs. Value-Up Methodologies&lt;/font&gt;&lt;/em&gt;&lt;/caption&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;
            &lt;p&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Work-Down (Traditional) Approach&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
            &lt;/td&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Value-Up (Agile) Approach&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Planning and Change Management&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;Invest heavily in up-front planning to get it right, then monitor the project against the plan.  Be vigilant to guard against change.&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;Change is inevitable, so embrace it.  Do just enough planning to understand risks and manage the next project iteration.&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Progress Measurement&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;Task completion&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;Customer-approved deliverables.  Be skeptical of interim mileposts that do not deliver value to the customer.&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Definition of Quality&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;Conformance to requirements.  To reduce risk, invest heavily in getting the right requirements up-front.&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;Value to the customer.  Since the customer may not understand what value a system can deliver before it is built, deliver incrementally and do not seek comprehensive requirements up-front.&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Intermediate Work Products&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;Models, requirements documents, etc., help decompose the effort into tasks that can be estimated.  Therefore their completion provides useful milestones in measuring project progress.&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;You want just enough models and documents to maximize the flow of work towards completing deliverables that a customer values.  Intermediate work products have no other value and are not counted as deliverables.&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;&lt;strong&gt;Evaluation of Project Team&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;Compare individuals' work output against the project plan.  Individuals that are struggling (like Wally in the Dilbert cartoons) are motivated to obfuscate and shift blame.&lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;Team members are motivated when the value of their work is measured by their team's deliverables.  Transparency (all team members can see the overall team's performance) is highly valued.&lt;/font&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Visual Studio Team System (VSTS) facilitates Agile project management by providing a work item list that is visible to all team members.  The status of any item is tracked by the status of the latest tests (such as &lt;a href="http://geekswithblogs.net/chrisfalter/archive/2008/02/05/119320.aspx"&gt;FIT scenarios&lt;/a&gt;) linked to requirements, and by the system build version(s) against which a test suite is run.  Often project plans are hard to manage because updates and tracking (like source code check-ins) are manual operations; VSTS eases the burden by providing automated updates to work items via check-in changesets and automated build verification tests (BVTs).&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;VSTS work item tracking can also answer questions about quality concerns and project run rates.  For example:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;table cellspacing="1" cellpadding="1" width="80%" align="center" summary="" border="1"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;strong&gt;Project Management Question&lt;/strong&gt;&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;VSTS Feature That Provides an Answer&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;font face="Arial"&gt;Are there any components that are poorly designed?  &lt;/font&gt;&lt;/td&gt;
            &lt;td&gt;Check the bug count for the various assemblies.  &lt;br /&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;Are there any components that are inadequately tested?&lt;/td&gt;
            &lt;td&gt;Check the code churn metric and the code coverage percentage in the automated tests&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;Can we deliver the projected functionality on time? &lt;/td&gt;
            &lt;td&gt;Don't rely on code check-in metrics only; instead, make sure that the bug backlog for desired features is decreasing.  If the open bug count is not decreasing over time (or worse, is increasing), you're likely not going to deliver on plan, even if the team believes the project is 95% finished.&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
 
&lt;p&gt;Our organization has not been fully aware of how VSTS can facilitate agile software development; maybe it's time to start finding out.&lt;/p&gt;
&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119559"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119559" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/chrisfalter/aggbug/119559.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Falter</dc:creator>
            <guid>http://geekswithblogs.net/chrisfalter/archive/2008/02/13/119559.aspx</guid>
            <pubDate>Wed, 13 Feb 2008 21:22:43 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/chrisfalter/comments/119559.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/chrisfalter/archive/2008/02/13/119559.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/chrisfalter/comments/commentRss/119559.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/chrisfalter/services/trackbacks/119559.aspx</trackback:ping>
        </item>
        <item>
            <title>Why You Should Consider Using FIT</title>
            <link>http://geekswithblogs.net/chrisfalter/archive/2008/02/05/119320.aspx</link>
            <description>&lt;p&gt;I was looking for ways to improve our development process when I stumbled across the Framework for Integrated Testing (FIT).  The rest of this post is the body of an email I recently sent to my manager.&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;The goal of the &lt;em&gt;Customer&lt;/em&gt; update is to migrate all their customizations to a new framework in a reliable and quick manner.  The major risks I have been able to identify are as follows:&lt;/font&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Developers won’t be able to identify all the behaviors that need to migrate.&lt;/font&gt;
    &lt;ul&gt;
        &lt;li&gt;&lt;font face="Arial"&gt;Requirements are scattered.&lt;/font&gt; &lt;/li&gt;
        &lt;li&gt;&lt;font face="Arial"&gt;Code is not organized optimally.  Much business and workflow logic is scattered throughout the UI layer, in particular. Many customizations in domain logic are located in poor locations in the domain class hierarchy; the root domain object seems to have become a catch-all location for just about anything.&lt;/font&gt; &lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Manual regression testing will become a bottleneck.  It is already a serious bottleneck for other projects.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Poor code organization will be perpetuated into the new source code base.  As a result, the project will proceed more slowly (due to high bug rate and unnecessary complexity), and subsequent evolution of the code will be hampered as well.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;Lack of an automated testing framework will impede any efforts to refactor code.  Since this project by definition requires an extensive reworking of our source code, this risk is quite serious.&lt;/font&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;em&gt;Note to readers: I'm sure many of you have faced these kinds of challenges on one or more projects.  Read on to discover a framework that can help you can meet the challenges!&lt;/em&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;While unit testing would go a long way toward addressing the third and fourth risks, it would not help us address the first 2 risks.  We can ask business analysts (BAs) to help developers identify migration requirements, but we don’t have a repository for storing these requirements.  Even if we implement such a repository, a developer must still translate requirements (in whatever form they exist) into unit tests, which introduces the possibility of error.  Finally, the unit tests are not visible to the BAs, so they cannot rely on them for regression testing.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;The &lt;a href="http://fit.c2.com/"&gt;Framework for Integrated Testing&lt;/a&gt; (FIT) seems to address all four of these risks quite adeptly.  Before I proceed, I should explain that FIT allows a non-developer to write requirements in tabular form.  FIT provides 3 types of test fixtures that can be used in a table:&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;A &lt;em&gt;ColumnFixture&lt;/em&gt; is useful for business rules, as it is used to declare a set of inputs and expected output(s).  For example, you could use a column fixture to declare that a dwelling in a particular location built in 1996 should have a BCEGS of 99, but if it is built in 2004 it should have a BCEGS of 4.  As the &lt;em&gt;Customer&lt;/em&gt; systems are replete with custom rules (such as underwriter referral rules), the ColumnFixture should prove very helpful.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;A &lt;em&gt;RowFixture&lt;/em&gt; is ensures that data are being stored and retrieved correctly from a data repository.  While I see no need to test the data layer’s reliability with respect to standard data such as dwelling address (it has proven quite reliable for other projects), the RowFixture could help us with data that are unique to &lt;em&gt;Customer&lt;/em&gt; (such as subdivision).&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;An &lt;em&gt;ActionFixture&lt;/em&gt; is used to simulate workflow requirements.  For example, a tabular ActionFixture could state that when a user enters a dwelling limit of $10k and presses “Continue”, a certain error message should appear; when s/he enters a dwelling limit of 300k and presses “Continue”, the system advances to the Quote Summary page; and if s/he enters a dwelling limit of 1100k, the system advances to the Qualification Questions page (due to consent to rate rules).&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;If we use the &lt;a href="http://msdn.microsoft.com/msdnmag/issues/05/02/ExcelUnitTests/default.aspx"&gt;WinFitRunnerLite&lt;/a&gt; tool, a BA can construct the test data tables in Excel, which may be more intuitive than writing them in Word and saving as HTML.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;A developer must write a test fixture in order to translate the test data into an actual test.  The test fixture will link to the domain, data, and controller/workflow libraries of the system under test, pass data from the test document’s tables to the appropriate methods, and evaluate the results against the BA-supplied expectations.  If we follow this approach, it will be impossible for a developer to embed workflow logic, rules, or domain logic in the UI (a big win!).  &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;One of the other advantages of FIT is that a BA can “own” the generation of requirements and tests, since they are maintained in a single location.  A BA can easily design the test scenarios that the system must pass; I’ve seen complex requirements in Excel spreadsheets plenty of times, so I have no doubt about the ability of our BAs to generate FIT scenarios.  On the other hand, how many BAs could write a unit test?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Using FIT can help answer many project management questions:&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;em&gt;Developer:&lt;/em&gt; How have requirements for the system changed?  &lt;em&gt;Answer&lt;/em&gt;: check the FIT document.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;em&gt;Developer&lt;/em&gt;: What are the requirements I should work on?  &lt;em&gt;Answer&lt;/em&gt;: see which FIT tests have not yet passed.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;em&gt;BA&lt;/em&gt;: How close are we to completing the latest project milestone?  &lt;em&gt;Answer&lt;/em&gt;: run the FIT tests and see how many tests have not yet passed.&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;&lt;em&gt;BA&lt;/em&gt;: Do the latest changes contain any regressions?  &lt;em&gt;Answer&lt;/em&gt;: run the FIT tests and see if any tests that used to pass have started to fail.&lt;/font&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;font face="Arial"&gt;It is true that the FIT tests do not run against the actual UI.  I see this is a positive, as it will prevent the project team from falling into the “&lt;a href="http://codeidol.com/csharp/domain-driven-design/Isolating-the-Domain/The-Smart-UI-Anti-Pattern/"&gt;Smart UI&lt;/a&gt;” trap.  However, it also means that FIT, however useful I think it will be, is not a silver bullet; testers will still have to interact with the system’s UI.   &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Nevertheless, I think FIT will prove very helpful for this project, and for our shop in general.  And since BAs have to write requirements and perform testing, and developers have to translate requirements into testable code anyway, using FIT should not be burdensome.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;/font&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119320"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119320" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/chrisfalter/aggbug/119320.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Falter</dc:creator>
            <guid>http://geekswithblogs.net/chrisfalter/archive/2008/02/05/119320.aspx</guid>
            <pubDate>Tue, 05 Feb 2008 22:12:48 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/chrisfalter/comments/119320.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/chrisfalter/archive/2008/02/05/119320.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/chrisfalter/comments/commentRss/119320.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/chrisfalter/services/trackbacks/119320.aspx</trackback:ping>
        </item>
    </channel>
</rss>