<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>.NET Development at JoshJordan.com</title>
	<atom:link href="http://www.joshjordan.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.joshjordan.com</link>
	<description>Your source for C# and ASP.NET software developmet</description>
	<pubDate>Wed, 01 Apr 2009 02:47:28 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>"Conficker" Virus Attacks Tomorrow!</title>
		<link>http://www.joshjordan.com/conficker-virus-attacks-tomorrow-344</link>
		<comments>http://www.joshjordan.com/conficker-virus-attacks-tomorrow-344#comments</comments>
		<pubDate>Tue, 31 Mar 2009 21:23:31 +0000</pubDate>
		<dc:creator>Josh Jordan</dc:creator>
		
		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Conficker]]></category>

		<category><![CDATA[malware]]></category>

		<category><![CDATA[McAfee]]></category>

		<category><![CDATA[virus]]></category>

		<guid isPermaLink="false">http://www.joshjordan.com/?p=344</guid>
		<description><![CDATA[It was announced back in January that a new worm by the name of "Conficker" was found infecting million of Windows machines. This virus, which has been lying dormant on PCs everywhere, will attack tomorrow. Immunize yourself and remove this virus from your system before the clock strikes midnight!]]></description>
			<content:encoded><![CDATA[<p>It was announced <a title="PCWorld Conficker Worm" href="http://www.pcworld.com/businesscenter/article/157858/downadup_worm_bores_into_9_million_pcs.html" target="_blank" class="external">back in January</a> that a new worm by the name of "Conficker" was found infecting million of Windows machines. This virus, which has been lying dormant on PCs everywhere, will attack tomorrow.</p>
<h3>Pfft, I'm sure I'm not infected.</h3>
<p>Don't be so certain. <a title="F-Secure" href="http://www.computerworld.com/action/inform.do?command=search&amp;searchTerms=F-Secure+Corporation" target="_blank" class="external">F-Secure</a> is calling the attack's scope "amazing," having infected 6.5 million PCs in four days, and compromising almost 9 million total computers in its first two weeks on the Internet. Such a widespread outbreak has not been seen in many years.</p>
<h3>Really? How could I have contracted this horrible virus?</h3>
<p>Conficker gets into your system through a bug in a service that runs on Windows Server family operating systems. This means that if you use Windows 2000, Windows XP, Windows Vista, Windows Server 2003, or Windows Server 2008, you have been vulnerable to this worm.</p>
<p>Microsoft did release a security patch for this exploit back in October, but some reports say that up to half of vulnerable Windows machines have not been updated to use the latest security updates. Did you? Do you remember if you did? I do not.</p>
<h3>Dammit. Maybe I <em>do </em>have it. What does this thing do?</h3>
<p>Simply put, Conficker is a worm and what it <em>does</em> is try to spread to other machines. It has a few ways of spreading to other systems, but the most powerful way, which sidesteps many of the known security solutions as well as disabling Windows Automatic Update, Windows Security Center, Windows Defender, and Windows Error Reporting, does not activate until April 1st (tomorrow!).</p>
<p>So, if you have it now, it probably tried to spread to some other machines. If you have it tomorrow, your security is screwed and you're going to be contributing to a much more massive spread than the current epidemic. It is also rumored to be able to download new malware to your system.</p>
<h3>Whoa! How do I get rid of it?</h3>
<p>I thought you'd never ask.</p>
<p>To start with, get the<a title="Microsoft Security Bulletin" href="http://www.microsoft.com/technet/security/Bulletin/MS08-067.mspx" target="_blank" class="external"> update from Microsoft</a> that fixes the security hole. Otherwise, you're just going to be infected again tomorrow. In fact, everyone should make sure they have this to immunize themselves!</p>
<p>To actually clean the virus, use the <a title="Malicious Software Removal Tool" href="http://www.microsoft.com/security/malwareremove/default.mspx" target="_blank" class="external">Malicious Software Removal Tool</a> from Microsoft, or (if you think Microsoft software is malicious enough) you can get a <a title="Conficker cleaning tool from Symantec" href="http://www.symantec.com/content/en/us/global/removal_tool/threat_writeups/FixDwndp.exe" target="_blank" class="external">cleaning tool</a> from Symantec.</p>
<h3>Aliases and More Information</h3>
<p>Conficker is also known as W32/Conficker, "Downup", "Downadup", and "Kido". How do people come up with these things?</p>
<p>More information is available from McAfee at their <a title="McAfee Virus Alert for Conficker" href="http://vil.nai.com/vil/content/v_153464.htm" target="_blank" class="external">Virus Alert page</a>.</p>
<div class="addtoany_share_save_container"><ul class="addtoany_list"><li><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=.NET%20Development%20at%20JoshJordan.com&amp;siteurl=http%3A%2F%2Fwww.joshjordan.com%2F&amp;linkname=%22Conficker%22%20Virus%20Attacks%20Tomorrow%21&amp;linkurl=http%3A%2F%2Fwww.joshjordan.com%2Fconficker-virus-attacks-tomorrow-344"><img src="http://www.joshjordan.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Save/Bookmark"/></a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.joshjordan.com/conficker-virus-attacks-tomorrow-344/feed</wfw:commentRss>
		</item>
		<item>
		<title>How To: Use URL Rewriting in ASP.NET</title>
		<link>http://www.joshjordan.com/how-to-use-url-rewriting-in-aspnet-332</link>
		<comments>http://www.joshjordan.com/how-to-use-url-rewriting-in-aspnet-332#comments</comments>
		<pubDate>Tue, 24 Mar 2009 19:05:57 +0000</pubDate>
		<dc:creator>Josh Jordan</dc:creator>
		
		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Examples & How-To]]></category>

		<category><![CDATA[ASP.NET MVC]]></category>

		<category><![CDATA[Global.asax]]></category>

		<category><![CDATA[Scott Guthrie]]></category>

		<category><![CDATA[search engine optimization]]></category>

		<category><![CDATA[URL Rewriting]]></category>

		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.joshjordan.com/?p=332</guid>
		<description><![CDATA[URL rewriting is the practice publishing a cleaner URL for your ASP.NET pages. There are many reasons you might want to do this, including search engine optimization and human readability. Search engines actively try to ascertain information about the contents of a page based on the URL, and providing common keywords in it will increase your page ranking. This article will show you how to use URL rewriting to hide your ugly URL while retaining the power and structure of your existing ASP.NET application by using URL rewriting.]]></description>
			<content:encoded><![CDATA[<p><strong>URL rewriting</strong> is the practice publishing a cleaner URL for your ASP.NET web application. There are many reasons you might want to do this, chief amongst them being <strong>search engine optimization</strong> and human readability. This article will show you how to use URL rewriting to hide your ugly URL while retaining the power and structure of your existing ASP.NET application.</p>
<h3>What is URL rewriting and why should I care?</h3>
<p>As I said before, URL rewriting is a practice that lets you publish a cleaner URL to the world, but that may not be clear. In other words, you can "point" or redirect any URL a user accesses to an existing ASP.NET page in your application. Take a look at this URL:</p>
<blockquote><p>http://www.joshjordan.com/index.php?i=321</p></blockquote>
<p>That is my standard, ugly URL. Now look at this one, which is the result of URL rewriting:</p>
<blockquote><p><a title="Google Chrome Beta 2.0 Released" href="http://www.joshjordan.com/google-chrome-beta-20-released-321" target="_self">http://www.joshjordan.com/google-chrome-beta-20-released-321</a></p></blockquote>
<p>Which one looks better to your eye? Probably the second one. It gives the user some important information about what might be on that page. Which one looks better to a search engine? Definitely the second one. Search engines actively try to ascertain information about the contents of a page based on many criteria, and the URL is no exception. Google, Yahoo, and Live Search all pull common keywords out of the URL, and if you want traffic on your site (and lets face it, who doesn't?), you want to have a good page ranking with these search engines. Search engine optimization is a rapidly changing field, but providing search engine-friendly URLs is a practice that is going to consistently drive traffic to your site by making your page's search relevancy higher.</p>
<p>One worry that you may have is that we are <em>only</em> redirecting the user to a new page with URL rewriting. This would result in a few problems. Firstly, the URL shown in the user's browser would change to the ugly URL as soon as the access the page, and thus, our highly-guarded secret is exposed. Worse, they might link that URL to another person, which means they are giving out the ugly URL, and our effort would've been wasted. Finally, a search engine would see <em>both</em> the clean URL and the ugly URL, which could result in splitting your page ranking between the two of them. <strong>Don't worry, your ugly URL will not be exposed.</strong> URL rewriting in ASP.NET (at least the way I'll show you) does not redirect the HTTP request to another page, it actually answers the request at the clean URL with one from whatever page you'd like, all without any knowledge of the rewriting on the user's side.</p>
<h3>Okay, URL rewriting is a good idea. How do I do it?</h3>
<p>Well, that's simple. Just call the <strong>HttpContext.RewritePath()</strong> method from the <strong>Application_BeginRequest()</strong> event handler in your <strong>Global.asax</strong> file.  What is that you say? You don't have a Global.asax file? Okay, I'll walk you through an example.</p>
<p>I am currently working on a project where my site has a county-based taxonomy. That is, the main page for a county is the primary unit of organization. Thus, I want to provide a provide a URL that includes the name of the county. Unfortunately, my otherwise well-designed data driven application will only provide me with something like this by default:</p>
<blockquote><p>http://www.myproject.com/County.aspx?ID=5</p></blockquote>
<p>However, I'd like it to look something more like this (for my home county of Rensselaer):</p>
<blockquote><p>http://www.myproject.com/Rensselaer</p></blockquote>
<p>I could, of course, just make a directory or Aspx page for Rensselaer, but I already have my application working so nice and cleanly! I don't want to create more pages that I have to maintain. So, I choose to use URL rewriting to handle this situation.</p>
<p>To get started with URL rewriting, create a Global.asax file. A Global.asax file is a set of event handlers for application-level events, such as client sessions beginning, client sessions ending, and (ah-ha!) URL requests beginning. To create this file, add a new file to your project and select <strong>Global Application Class</strong>. Leave the filename to its default.</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/add-globalasax.png"><img class="aligncenter size-medium wp-image-334" title="Adding a Global.asax file" src="http://www.joshjordan.com/wp-content/uploads/2009/03/add-globalasax-300x182.png" alt="Adding a Global.asax file" width="300" height="182" /></a></p>
<p>Note that you will be unable to select Global Application Class if a Global.asax file already exists in your project. Now that we have this file, we want to add code to the <strong>Application_BeginRequest()</strong> event handler that handles our URL rewriting. In this example, I will simply route based on the contents of the incoming URL. If the URL contains one of my keywords, I will route it appropriately. If not, I will do nothing and the request will be processed normally (either landing on some existing page, or producing a 404 error).</p>
<pre class="brush: csharp">        protected void Application_BeginRequest(object sender, EventArgs e)
        {
            //Friendly URL keywords
            string[] counties = { &quot;Albany&quot;, &quot;Rensselaer&quot;, &quot;Montgomery&quot; };

            //Loop through keywords
            for(int i=0; i&lt;counties .Length; i++)
            {
                //Check to see if the URL contains this keyword
                //Remember to use case-insensitive logic!
                if (Request.Url.ToString().ToLower().Contains(counties[i]))
                {
                    //If a keyword was found, rewrite and break out
                    Context.RewritePath(&quot;~/County.aspx?CountyID=&quot; + i);
                    return;
                }
            }
        }</pre>
<p>I use the string.Contains() method and a string array in this simple example. I route to the indices of the string in the array. Note that the incoming URL could have a mix of capital and lowercase letters, so you should always use string.ToLower() when performing comparisons in this case. In a more realistic example, a Dictionary of strings and integer ID's may be necessary, or even a connection to a database to retrieve keywords. Some useful objects you should play with to extract data from the incoming request:</p>
<ul>
<li><strong>Request.URL</strong>: The entire incoming URL, used above.</li>
<li><strong>Request.QueryString</strong>: The parameters, provided as key-value pairs, beyond the "?" in the URL. Note that this object has string and int-based indexers.</li>
<li><strong>Request.URL.ToString().Split('/')</strong>: A string array split into tokens based on forward slashes. This is useful because it allows you to look at the individual directories and files requested beyond the domain.</li>
<h3>Advanced Routing</h3>
<p>Since you can write any code you like in the Application_BeginRequest() method, there is a lot you can do here. As I mentioned, you could use values from a database, or parse the URL into multiple different pieces to control your routing. If there is sufficient demand, I will write another few articles that talk about advanced topics in URL rewriting, touching up on those topics as well as setting up virtual directories, preserving the query string, handling image requests by wrapping them with HTML, efficiency in URL rewriting, etc. Please give me some feedback if you want more!</p>
<h3>Other URL rewriting methods for ASP.NET</h3>
<p>Other methods exist for URL rewriting, but I didn't mention them here both because I haven't tried them and because they seem much less ideal than the solution I gave above. If you are looking for other ways to do this, be on the look out for rewriting using the <strong>Request.PathInfo</strong> object, which uses a URL that looks something like this (which is still ugly to me):</p>
<blockquote><p>http://www.myproject.com/county.aspx/Rensselaer</p></blockquote>
<p>There are <strong>Web.config</strong> approaches, but they are less programmatic and do not give you dynamic control over your routing. I want to write code to do this! If I was doing it statically, I might as well just use new Aspx pages. Finally, you can use <strong>ISAPIRewrite</strong> to have your IIS server do the routing for you. Again, this is too static for me. For more information on these approaches, check out <a title="Scott Guthrie's URL Rewriting post" href="http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx#1819118" target="_blank" class="external">this amazing post</a> on Scott Guthrie's blog.</p>
<h3>Notes</h3>
<p>I just wanted to point out what a big deal URL rewriting is becoming these days by pointing out that it is one of the main concepts behind the <a title="ASP.NET MVC Framework released" href="http://www.joshjordan.com/aspnet-mvc-framework-10-released-295" target="_self">ASP.NET MVC framework</a> approach. Every ASP.NET MVC tutorial I've seen has started with the routing module, which provides a facility for automatically tokenizing the URL into separate pieces to decide how to route the request to the View, including default values for each piece. Can you tell I'm excited about ASP.NET MVC?</counties></p>
<div class="addtoany_share_save_container"><ul class="addtoany_list"><li><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=.NET%20Development%20at%20JoshJordan.com&amp;siteurl=http%3A%2F%2Fwww.joshjordan.com%2F&amp;linkname=How%20To%3A%20Use%20URL%20Rewriting%20in%20ASP.NET&amp;linkurl=http%3A%2F%2Fwww.joshjordan.com%2Fhow-to-use-url-rewriting-in-aspnet-332"><img src="http://www.joshjordan.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Save/Bookmark"/></a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.joshjordan.com/how-to-use-url-rewriting-in-aspnet-332/feed</wfw:commentRss>
		</item>
		<item>
		<title>Google Chrome Beta 2.0 Released</title>
		<link>http://www.joshjordan.com/google-chrome-beta-20-released-321</link>
		<comments>http://www.joshjordan.com/google-chrome-beta-20-released-321#comments</comments>
		<pubDate>Sat, 21 Mar 2009 13:11:34 +0000</pubDate>
		<dc:creator>Josh Jordan</dc:creator>
		
		<category><![CDATA[News]]></category>

		<category><![CDATA[Tools]]></category>

		<category><![CDATA[Google Chrome]]></category>

		<category><![CDATA[web browser]]></category>

		<guid isPermaLink="false">http://www.joshjordan.com/?p=321</guid>
		<description><![CDATA[I know this isn't exactly software development news, but every software developer needs a good web browser behind him. Google's Chrome browser has been turning some heads. The beta stamp was removed from Chrome back in December 2008, but they have a new release and that stamp has come out of retirement. Google Chrome 2.0 was released on March 17th, and has some cool new features, including form autofill, side-by-side view for tabs, and a big speed increase. Click here to read more and download Chrome 2.0 beta.]]></description>
			<content:encoded><![CDATA[<p>I know this isn't exactly software development news, but every software developer needs a good web browser behind him. I'll leave off the debate about which browser is the best, but it should be sufficient to say that Google's Chrome browser has been turning some heads.</p>
<p>The <em>beta</em> stamp was removed from Google Chrome back in December of 2008, but they have a new release and that stamp has come out of retirement. Google Chrome 2.0 (actually, 2.0.169.1, if you're curious) was released on March 17th, and has some cool new features:</p>
<ul>
<li>form autofill</li>
<li>full page zoom</li>
<li>autoscroll</li>
<li>side-by-side view for tabs</li>
<li>a <strong>big</strong> speed increase</li>
</ul>
<p><strong>Form autofill</strong> is probably the most anticipated feature on my wishlist. Form autofill is where your browser records your form input (for non-password fields) and gives you a list of items to choose from when filling in a similar form in the future. It actually uses the HTML client id of the text box to determine what previously entered items to show you, so it's at least marginally intelligent. It may not seem like much, but once you're used to it from Internet Explorer or Firefox, form autofill is tough to live without. It used to save me a lot of time, and I'm looking forward to finally using it again with Chrome. More information on <a title="Autofill at Google Chrome help" href="http://www.google.com/support/chrome/bin/answer.py?answer=142464" target="_blank" class="external">autofill at Google Chrome Help</a>.</p>
<p><strong>Full page zoom</strong> is an improvement over the fairly standard text-based zoom offered by most browsers. When you use full page zoom, both text <em>and</em> images are scaled up or down. It didn't make sense for the browser to disciminate between those two anyway, did it? This is a good accessibility feature.</p>
<p>I suppose you're wondering what I meant by <strong>side-by-side view for tabs</strong>. Google Chrome 2.0 will allow you to drag a tab out of the main tab bar on your browser, just like Chrome 1.0 did (which happens to be a feature I love). However, now, if you hover your cursor over the middle left or right side of another tab, Chrome will automatically lay out your tabs next to one another. This is great for comparison, or referencing some material while doing data entry in another tab. <em>Still don't know what the hell I'm talking about? Watch this video provided by Google:</em></p>
<p><object width="425" height="344" data="http://www.youtube.com/v/wn97WbalJwM&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/wn97WbalJwM&amp;hl=en&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /></object></p>
<p>Ah, I mentioned a big speed increase. Here's are the benchmarks Google provided when they released Chrome 2.0:</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/benchmarks.png"><img class="aligncenter size-medium wp-image-324" title="Chrome 2.0 beta benchmarks" src="http://www.joshjordan.com/wp-content/uploads/2009/03/benchmarks-271x300.png" alt="Chrome 2.0 beta benchmarks" width="271" height="300" /></a></p>
<p>Pretty impressive. Will it really go that fast? Who knows. They are claiming it is <strong>between 25 and 35% faster</strong> than their current stable version. I'm looking for an even bigger speed increase, though, because I was using the old beta. I can be slow to adapt sometimes.</p>
<p>I did run into an issue during install where the version of Chrome that the installer ran when complete was still my old version. Restarting and running the installer again solved it, though. If you think you're having the same problem, find out what version you are using by opening the <strong>about </strong><strong>box </strong>like so:</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/about-chrome.png"><img class="aligncenter size-medium wp-image-325" title="Opening Chrome's About box" src="http://www.joshjordan.com/wp-content/uploads/2009/03/about-chrome-300x157.png" alt="Opening Chrome's About box" width="300" height="157" /></a></p>
<p>On the window that appears, look for version 2.0, shown here:</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/about-chrome-window.png"><img class="aligncenter size-medium wp-image-326" title="Chrome version" src="http://www.joshjordan.com/wp-content/uploads/2009/03/about-chrome-window-300x180.png" alt="Chrome version" width="300" height="180" /></a></p>
<p>That's it! I'm looking forward to whatever the Chrome team has in store for us in the future. There are still some standard features that Chrome is lacking, but they are catching up, and continually delivering fun, new ideas for browsing.</p>
<h3>Links</h3>
<p>The <a title="Google Chrome blog" href="http://chrome.blogspot.com/2009/03/google-chrome-has-new-beta_17.html" target="_blank" class="external">Google Chrome blog entry annoucing Beta 2.0</a> on March 17th.</p>
<blockquote><p><strong>Download </strong><a title="Google Chrome beta 2.0 download" href="http://www.google.com/intl/en/landing/chrome/beta/index.html" target="_blank" class="external"><strong>Google Chrome Beta 2.0</strong></a></p></blockquote>
<div class="addtoany_share_save_container"><ul class="addtoany_list"><li><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=.NET%20Development%20at%20JoshJordan.com&amp;siteurl=http%3A%2F%2Fwww.joshjordan.com%2F&amp;linkname=Google%20Chrome%20Beta%202.0%20Released&amp;linkurl=http%3A%2F%2Fwww.joshjordan.com%2Fgoogle-chrome-beta-20-released-321"><img src="http://www.joshjordan.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Save/Bookmark"/></a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.joshjordan.com/google-chrome-beta-20-released-321/feed</wfw:commentRss>
		</item>
		<item>
		<title>Introducing Microsoft Web Platform Installer</title>
		<link>http://www.joshjordan.com/introducing-microsoft-web-platform-installer-300</link>
		<comments>http://www.joshjordan.com/introducing-microsoft-web-platform-installer-300#comments</comments>
		<pubDate>Thu, 19 Mar 2009 05:40:41 +0000</pubDate>
		<dc:creator>Josh Jordan</dc:creator>
		
		<category><![CDATA[Microsoft .NET]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[ASP.NET MVC]]></category>

		<category><![CDATA[Mix 09]]></category>

		<category><![CDATA[Phil Haack]]></category>

		<category><![CDATA[production server]]></category>

		<category><![CDATA[Silverlight]]></category>

		<category><![CDATA[SQL Server]]></category>

		<category><![CDATA[Web PI]]></category>

		<category><![CDATA[Web Platform]]></category>

		<guid isPermaLink="false">http://www.joshjordan.com/?p=300</guid>
		<description><![CDATA[On March 18th, Microsoft released Web Platform Installer 2.0. The Web Platform Installer is a small utility you can use to download, install, and maintain your Microsoft Web Platform applications. This includes Internet Information Services (Microsoft's web server), or IIS, MS SQL Server Express, Silverlight 3 Visual Studio tools, and much more. Like the ASP.NET MVC release, the Web Platform Installer (or Web PI) release was announced at Mix '09. Again, good timing here on Microsoft's part that allowed them to get this beta version out to lots of people that will be downloading new stuff. In this article, I give a full review of my user experience with Web PI 2.0 beta, including screenshots.]]></description>
			<content:encoded><![CDATA[<p>On March 18th, Microsoft released Web Platform Installer 2.0 (beta). The Web Platform Installer is a small utility you can use to download, install, and maintain your Microsoft "Web Platform" (new buzzword?) applications. This includes Internet Information Services (Microsoft's web server), or IIS, MS SQL Server Express, Silverlight 3 Visual Studio tools, and much more.</p>
<p>I recently wrote an article about the <a title="ASP.NET MVC Framework 1.0 Released" href="http://www.joshjordan.com/aspnet-mvc-framework-10-released-295">release of the ASP.NET MVC Framework</a> that was released on the same day. Like the ASP.NET MVC release, the Web Platform Installer (or Web PI) release was announced at Mix '09. Again, good timing here on Microsoft's part that allowed them to get this beta version out to lots of people that will be downloading new stuff (ASP.NET MVC and Silverlight 3, just to name a few).</p>
<blockquote><p>Mix '09 is an annual conference on web design and web development. The 2009 conference was held March 18th to March 20th in Las Vegas. Microsoft made a few announcements regarding new product releases this year. A vast amount of information from the conference is available at the main <a title="Mix '09 Conference" href="http://live.visitmix.com/" target="_blank" class="external">Mix '09 website</a>.</p></blockquote>
<p>I actually didn't realize initially that the Web PI 2.0 beta came out today (although I should've, since it was mentioned in the <a title="ASP.NET MVC Release @ haacked.com" href="http://haacked.com/archive/2009/03/18/aspnet-mvc-rtw.aspx" class="external" target="_blank">haacked article</a> I found the link on). So, I opened up the <a title="Web Platform Installer site" href="http://www.microsoft.com/Web/downloads/platform.aspx" target="_blank" class="external">Web PI site</a>  and stared at it for a moment. Should I download 1.0 or 2.0 beta? Decisions, decisions. I decided to shoot the breeze and go for the new stuff.</p>
<h3>Using Web Platform Installer 2.0 beta</h3>
<p><strong>Hold on. So you want me to download and install a program to... download and install stuff?</strong></p>
<p>I know, I know. I was skeptical, too. But hey, live a little! If this is the biggest risk you're taking this week, you need to get out more.</p>
<p>So I downloaded &amp; installed Web Platform Installer 2.0 beta and was greeted with this elegant, web 2.0-reminiscent screen:</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-intro.png"><img class="aligncenter size-medium wp-image-301" title="Web Platform Installer intro screen" src="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-intro-300x221.png" alt="Web Platform Installer intro screen" width="300" height="221" /></a></p>
<p>I like what I see so far. I downloaded this thing so that I could install ASP.NET MVC, and there it is. Good. I'm also intrigued by this "SQL Server 2008 Management Studio Express" thing. I know I've heard of it before, but it was probably when I was in shock from seeing so many SQL Server tools, and was thus ignored. I noticed there was a little blue information icon, so I clicked on it.</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-info.png"><img class="aligncenter size-medium wp-image-302" title="Web PI SQL Server 2008 Management Studio Express info" src="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-info-300x221.png" alt="Web PI SQL Server 2008 Management Studio Express info" width="300" height="221" /></a></p>
<p>Cool. A little information the tool was just what I needed. With this in hand, I can decide whether or not I want to install this thing (I did). One other thing I just noticed while writing this: the release date listed is 3/17/2009. The guys over at Microsoft must've been working their asses off to get all this stuff out in time for a release simultaneous with Web PI and Mix '09.</p>
<p>Clicking "Web Platform" on the left gives me a better list of stuff I can install (and a better idea of what this "Web Platform" encompasses. Components are listed in these categories: Web Server, Frameworks and Runtimes, Database, and Tools.</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-full.png"><img class="aligncenter size-medium wp-image-303" title="Web PI installable components list" src="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-full-300x221.png" alt="Web PI installable components list" width="300" height="221" /></a></p>
<p>This is cool, but I notice that the checkboxes indicate a <strong>partial install</strong> for a few of those items. What happens if I click on this "Customize" link? Hmm...</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-web-server-comp.png"><img class="aligncenter size-full wp-image-304" title="Web PI Web Server components" src="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-web-server-comp.png" alt="Web PI Web Server components" width="526" height="1283" /></a></p>
<p>Ah, there we go. That's what I was looking for. They really hit this one out of the park. I really like the granular control here. A lot of these IIS components are not necessary for my local development machine, but I am itching to run Web PI on the server sitting in my closet and make sure it has all the components I want it to have. Web PI seems to provide a great one-stop solution for installing most of what you need on your server without having to remember them or hunt them down on the web.</p>
<p>After clicking on "Install," you have to agree to the various license associated with the products you selected. Blindly clicking right through that, I find the installation screen:</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-install.png"><img class="aligncenter size-medium wp-image-305" title="Web PI Install Screen" src="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-install-300x207.png" alt="Web PI Install Screen" width="300" height="207" /></a></p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-install.png"></a>Nice. It is intelligent enough to start installing as soon as the first component is downloaded, and continues to download the other packages while it does so. I like. My download speed may be a bit high here, but the download went much faster than the installation. That's pretty much what I've come to expect from Microsoft though - long installs are just part of the territory.</p>
<p>My (eventually) installation finished and I was presented with this final screen confirming the components that were installed successfully. Woohoo!</p>
<h3><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-finished.png"><img class="aligncenter size-medium wp-image-306" title="Web PI finished screen" src="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-finished-300x207.png" alt="Web PI finished screen" width="300" height="207" /></a></h3>
<h3><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-finished.png"></a>The Silverlight Debacle</h3>
<p>You'll notice above that my "Silverlight 3 Tools for Visual Studio Beta" install unfortunately failed. I must admit that I left a bit out before so that the article flowed well, but there's no hiding it from you now, is there?</p>
<p>When I first tried to select to install the Silverlight 3 tools, I was greeted with this error message:</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/silverlight-3-err1.png"><img class="aligncenter size-full wp-image-309" title="Silverlight 3 Error message" src="http://www.joshjordan.com/wp-content/uploads/2009/03/silverlight-3-err1.png" alt="Silverlight 3 Error message" width="496" height="175" /></a></p>
<p>Oh, come on. The tool is not smart enough to give me an automatic or one-click uninstall of Silverlight 2 in order to install Silverlight 3? Wait, why is that even necessary? Boo.</p>
<p>So I head over to my Add/Remove Programs panel and uninstall my "Microsoft Silverlight 2 SDK." Nope. Not it. Still getting the error. Digging a little deeper, I find a rather cryptically labelled Visual Studio 2008 SP1 tools for Silverlight 2 (I can't remember the wording exactly). I uninstalled this, too, and then I was able to proceed with my Silverlight 3 tools installation, which means that the first thing I uninstalled was wrong. Great.</p>
<p>So, of course, after Web PI was finished, I got the failure message shown way above. I clicked on the log, which was a not-so-useful, but that's okay. Maybe this is because I uninstalled the wrong Silverlight component, or maybe this piece is a half-baked. In either case, it could use some lovin', but I do understand that this is Web PI 2.0 <em>beta</em>, so I won't complain (much).</p>
<p>Web PI refused to install the  Silverlight 3 tools for me, and I ended up grabbing them from <a title="Getting Started with Silverlight 3" href="http://silverlight.net/getstarted/silverlight3/default.aspx" target="_blank" class="external">here</a>.</p>
<h3>Keeping up-to-date with Web PI</h3>
<p>One of the selling points about Web PI is that it will let you keep your Web Platform components up-to-date. How does it do this, you ask? I was wondering, too. I opened up Web PI again to look for the answer, and found the answer staring back at me:</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-update.png"><img class="aligncenter size-full wp-image-310" title="Updating Web PI" src="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-update.png" alt="Updating Web PI" width="374" height="100" /></a></p>
<p>Simple enough! Web PI loads its list of Web Platform software everytime you run it. So, all you need to do is run Web PI periodically to make sure you have the latest versions and all the fun, new stuff Microsoft has been putting out lately.</p>
<p>Now I understand the Web PI model a little bit better, too. At first, I was surprised that Microsoft wanted me to download this program I would only use once (like you were, because of that question you asked, remember?) However, now I see that they want you to run it frequently and have it installed for future occassions when you want to download Web Platform goodies. Clever. If you're having trouble finding Web PI on your Vista machine, try typing "web platform" into your Start Menu, like so:</p>
<h3><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-start.png"></a><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-start.png"><img class="aligncenter size-medium wp-image-311" title="Web PI on my start menu" src="http://www.joshjordan.com/wp-content/uploads/2009/03/web-pi-start-174x300.png" alt="Web PI on my start menu" width="174" height="300" /></a></h3>
<h3>Final Thoughts</h3>
<p>Overall, I liked what I saw. As a developer, the idea of having a tool to keep my tools up-to-date is appealing. As an adminstrator, having a one-stop-shop tool I can run on my server to get all the components I need is appealing. Barring the issues I had with the Silverlight 3 tools (which I'll chalk up to this being a beta release), I give it two thumbs up. I look forward to the release candidate.</p>
<p>Download the latest <a title="Web Platform Installer at Microsoft" href="http://www.microsoft.com/Web/downloads/platform.aspx" target="_blank" class="external">Web Platform Installer from Microsoft</a>.</p>
<div class="addtoany_share_save_container"><ul class="addtoany_list"><li><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=.NET%20Development%20at%20JoshJordan.com&amp;siteurl=http%3A%2F%2Fwww.joshjordan.com%2F&amp;linkname=Introducing%20Microsoft%20Web%20Platform%20Installer&amp;linkurl=http%3A%2F%2Fwww.joshjordan.com%2Fintroducing-microsoft-web-platform-installer-300"><img src="http://www.joshjordan.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Save/Bookmark"/></a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.joshjordan.com/introducing-microsoft-web-platform-installer-300/feed</wfw:commentRss>
		</item>
		<item>
		<title>ASP.NET MVC Framework 1.0 Released</title>
		<link>http://www.joshjordan.com/aspnet-mvc-framework-10-released-295</link>
		<comments>http://www.joshjordan.com/aspnet-mvc-framework-10-released-295#comments</comments>
		<pubDate>Thu, 19 Mar 2009 02:24:45 +0000</pubDate>
		<dc:creator>Josh Jordan</dc:creator>
		
		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[ASP.NET MVC]]></category>

		<category><![CDATA[Mix 09]]></category>

		<category><![CDATA[Phil Haack]]></category>

		<category><![CDATA[Scott Guthrie]]></category>

		<guid isPermaLink="false">http://www.joshjordan.com/?p=295</guid>
		<description><![CDATA[Today, Phil Haack reported that the ASP.NET MVC framework has been officially moved out of beta status and released to the world. It's good timing, too. If you're like me, you were waiting for the beta to end before really getting into ASP.NET MVC because you were afraid that each release would break your projects. Well, I guess its time to really dive in and I'm excited to do it. Read this article for more information and the download link.]]></description>
			<content:encoded><![CDATA[<p>Today, <a title="Phil Haack's blog" href="http://www.haacked.com" target="_blank" class="external">Phil Haack</a> reported that the ASP.NET MVC framework has been officially moved out of beta status and released to the world. Actually, they're calling it a "Release to the Web." Sorry, world. Whatever you want to call it, though, the MVC framework is finally bug-free enough to be called  <em>done</em>*.</p>
<p>It's good timing, too. If you're like me, you were waiting for the beta to end before really getting into ASP.NET MVC because you were afraid that each release would break your projects. Between preview 2 and preview 3, for example, the MVC architecture changed drastically due to community feedback. Well, I guess its time to really dive in and I'm excited to do it.</p>
<p>ASP.NET MVC still has a long way to go. For example, we can expect to see fun stuff like design mode support and the ability to use controls declaratively in ASP.NET MVC 2.0.  I know those sound like essential features, but they are part of the problem that ASP.NET MVC tried to address by providing the developer with tighter control over their markup. Plus, you can always instantiate a control and call its rendering method if you want to use it so badly.</p>
<p>This announcement was made at Mix '09 today by <a title="Scott Guthrie's blog" href="http://weblogs.asp.net/scottgu/" target="_blank" class="external">Scott Guthrie</a>, the same guy who wrote the e-book tutorial I <a title="Scott Guthrie's ASP.NET MVC e-book tutorial" href="http://www.joshjordan.com/scott-guthries-aspnet-mvc-e-book-tutorial-nerddinner-244" target="_self">recently wrote about</a>. If you're interested in learning more about ASP.NET MVC, check out the website <a title="ASP.NET MVC at asp.net" href="http://www.asp.net/mvc" target="_blank" class="external">here</a>.</p>
<h3>Download</h3>
<p>You probably want the download link. Very greedy of you. Well, fine. Here you go:<a title="Download ASP.NET MVC Framework 1.0" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&amp;displaylang=en" target="_blank" class="external"> Download ASP.NET MVC Framework 1.0 from Microsoft</a></p>
<p><strong>*No software is ever done.</strong></p>
<div class="addtoany_share_save_container"><ul class="addtoany_list"><li><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=.NET%20Development%20at%20JoshJordan.com&amp;siteurl=http%3A%2F%2Fwww.joshjordan.com%2F&amp;linkname=ASP.NET%20MVC%20Framework%201.0%20Released&amp;linkurl=http%3A%2F%2Fwww.joshjordan.com%2Faspnet-mvc-framework-10-released-295"><img src="http://www.joshjordan.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Save/Bookmark"/></a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.joshjordan.com/aspnet-mvc-framework-10-released-295/feed</wfw:commentRss>
		</item>
		<item>
		<title>Fading Images Together using C#</title>
		<link>http://www.joshjordan.com/fading-images-together-using-c-271</link>
		<comments>http://www.joshjordan.com/fading-images-together-using-c-271#comments</comments>
		<pubDate>Tue, 17 Mar 2009 20:48:08 +0000</pubDate>
		<dc:creator>Josh Jordan</dc:creator>
		
		<category><![CDATA[C#]]></category>

		<category><![CDATA[Examples & How-To]]></category>

		<category><![CDATA[images]]></category>

		<category><![CDATA[intellisense]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[Object Browser]]></category>

		<category><![CDATA[PictureBox]]></category>

		<category><![CDATA[Resharper]]></category>

		<category><![CDATA[System.Drawing]]></category>

		<category><![CDATA[Windows Forms]]></category>

		<guid isPermaLink="false">http://www.joshjordan.com/?p=271</guid>
		<description><![CDATA[In this article, I show how to "fade" or "blend" together two images using C#. We use the System.Drawing package (mostly the Bitmap class) to extract the individual pixels of two images, and then perform a weighted average to construct a new image. The whole thing is wrapped up in a Windows Forms project. Source code and a Windows binary are provided.]]></description>
			<content:encoded><![CDATA[<p>I recently began a project that required me to fade two images together.</p>
<p>When I say "fade," I mean that I want to color an image based on another. Some people call this blending, or simply layering one image on top of the other and setting the opacity/transparency of the upper image. I'm not really sure what the formal term for it is, but this is basically accomplished by averaging the pixel values between the two images where they overlap. Don't be intimidated if you're unfamiliar with images or pixels - read on. The effect produced is pretty cool.</p>
<p>Up until now, I hadn't used any image manipulation classes in .NET, but I had done some simple image splicing in Java (using the excellent Graphics package). So, I was excited to see what facilities were going to be provided by .NET for doing similar operations. Honestly, I didn't even know what class to use, so I set out by dropping a <strong>PictureBox </strong>control onto a Windows Forms application. One of the properties I saw in the Property Editor for this control was the <strong>Image</strong> property, which was of type <strong>System.Drawing.Image</strong>. Bingo!</p>
<p>I switch to my C# code and set about creating an Image instance. Now, if I know the .NET framework (and I do), I'd be willing to bet System.Drawing.Image is an abstract base class, but its a good starting point nonetheless. Indeed, creating an instance using the <strong>new</strong> keyword fails because, as expected, it is an abstract class.</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/new-image.png"><img class="aligncenter size-medium wp-image-272" title="Trying to create an Image instance" src="http://www.joshjordan.com/wp-content/uploads/2009/03/new-image-300x55.png" alt="Trying to create an Image instance" width="300" height="55" /></a></p>
<p>The next thing I generally do is check to see if there is a <strong>static Factory method</strong> within the base class that will create an instance for me. I type <em>Image.</em> (note the dot) and let Visual Studio's <strong>Intellisense</strong> go to work for me.</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/image-intellisense.png"><img class="aligncenter size-medium wp-image-273" title="Intellisense for System.Drawing.Image" src="http://www.joshjordan.com/wp-content/uploads/2009/03/image-intellisense-300x78.png" alt="Intellisense for System.Drawing.Image" width="300" height="78" /></a></p>
<p>It looks like the <strong>FromFile()</strong> method will do what I want. I call this method with the filename of an existing image, and move on to the next line. Again, I will use my trusty Intellisense to find out what I can do with this Image object. To my horror, I find that the Image class does not provide me any information about the pixels (individual colored dots) in the underlying image, nor does it show the robust list of image transformations I expected to be able to perform. Hell, it doesn't even let you set the <strong>Width</strong> and <strong>Height</strong> properties. <em>Who are you, and what have you done with .NET?</em></p>
<p>This is obviously going to take a little bit more research. You might've noticed in the first screenshot that the abstract Image class provides functionality for its descendants (as is the purpose of an abstract class), including System.Drawing.<strong>Bitmap</strong>. I was in a sporting mood, so I decided to check out the class hierarchy. Normally, this would be done using a combination of the <strong>Object Browser</strong> and the Image class summary, which gives us the hint that its descendent classes are System.Drawing.Bitmap and System.Drawing.Imaging.Metafile. However, an addin I use called Resharper allows me to right click on the Image class in my code and find all types that derive from it, like so:</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/derived-from-image.png"><img class="aligncenter size-full wp-image-274" title="Types derived from Image" src="http://www.joshjordan.com/wp-content/uploads/2009/03/derived-from-image.png" alt="Types derived from Image" width="274" height="92" /></a></p>
<p>This confirms that <a title="Bitmap class on MSDN" href="http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspx" target="_blank" class="external">Bitmap</a> and <a title="Metafile class on MSDN" href="http://msdn.microsoft.com/en-us/library/system.drawing.imaging.metafile.aspx" target="_blank" class="external">Metafile</a> are the only classes that inherit from Image in the .NET framework. I refer to the Object Browser again to inspect these classes, starting with Bitmap.</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/bitmap-object-browser.png"><img class="aligncenter size-medium wp-image-275" title="Bitmap Class in the Object Browser" src="http://www.joshjordan.com/wp-content/uploads/2009/03/bitmap-object-browser-300x200.png" alt="Bitmap Class in the Object Browser" width="300" height="200" /></a></p>
<p>From this, I can see that the Bitmap class is intended to be used where it is necessary to work with pixel data, and also that it has methods for getting and setting individual pixels (as well as some of the other more complicated image manipulation behavior I expected to see in Image). This looks promising, so I can move forward from here by instantiating both of my Images as Bitmaps, and attempting to fade their pixel data together.</p>
<p>Given that I have two Bitmap objects that I want to fade together, aptly named <em>image1</em> and <em>image2</em>, I can use the following code to "average" the overlapping area of the images:</p>
<pre class="brush: csharp">            for (int i = 0; i &lt; image1.Width &amp;amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp;amp; i &lt; image2.Width; i++)
            {
                for (int j = 0; j &lt; image1.Height &amp;amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp;amp; j &lt; image2.Height; j++)
                {
                    Color image1Pixel = image1.GetPixel(i, j), image2Pixel = image2.GetPixel(i, j);
                    Color newColor = Color.FromArgb((image1Pixel.R + image2Pixel.R)/2, (image1Pixel.G + image2Pixel.G)/2, (image1Pixel.B + image2Pixel.B)/2);
                    image1.SetPixel(i, j, newColor);
                }
            }</pre>
<p>Let me walk you through what's going on here. Each Bitmap is essentially a two-dimensional array of pixels (represented in your code by a System.Drawing.Color object). Thus, we use a nested loop to iterate through them. Note that our for loop will only proceed while both i and j are within the bounds of both images. This will make our code look a little nice by not requiring us to check if each pixel we extract is within its image's bounds (the code can be easily extended to handle non-overlapping areas, if required). Anyway, within our loops, we extract the pixels present in both images at our current position to Color objects by calling GetPixel(i,j) on each image. Then, we construct a new Color object using the Color.Argb() factory method. The overload of the Argb() method I used takes in three integer parameters: a red, a green, and a blue, to determine the overall color of the pixel. These are given by the R, G, and B integer properties of the two Color objects we created, so we simply average them, respectively. Finally, we set the pixel value at that location with this new Color object (I arbitrarily chose to do so in image1 here, overwriting its contents).</p>
<p>Simply enough, yes? This will give us a nice overall average for the two images, or what I'm calling the "fade" effect. Since this worked out so nicely, what if we got a little bit deeper? The project I'm doing actually requires my "fade" effect to be weighted heavily in favor of one of the images, which is the same as giving less transparency to the image that is laid on top of the other. I know that my idea of averaging the two pixel values worked out just fine, so I should be able to calculate a weighted average just as easily, given some parameter to tell me how strongly to do so.</p>
<p>I extracted this code to a static method in another class. It could've been done simply with a helper method, or by subclassing Bitmap, but I prefer to have this helper class present in case I decide to add any further functionality. I specify that I'll take two Bitmap objects and an integer parameter, which will represent how heavily to weight the first image over the second. I have also changed the code to be slightly more "proper," in that I create a new Bitmap object instead of changing image1's data. Finally, you'll see that I compute the new RGB values using a weighted average algorithm, where the original values are multiplied by their weights and their sum is divided by the total weight.</p>
<p>I thought for a moment here about whether or not I could get an integer overflow here. However, it turns out that image file formats store, at most, 32-bits of information per pixel. Since these 32-bits are divided up across the red, green, and blue components of the pixel, we are usually going to be working with 8-bit integers (which range from 0-255). The int data type is 32-bit, so we should never run into this problem.</p>
<p>The updated code looks like this:</p>
<pre class="brush: csharp">        public static Bitmap Fade(Bitmap image1, Bitmap image2, int opacity)
        {
            Bitmap newBmp = new Bitmap(Math.Min(image1.Width,image2.Width), Math.Min(image1.Height,image2.Height));
            for (int i = 0; i &lt; image1.Width &amp;amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp;amp; i &lt; image2.Width; i++)
            {
                for (int j = 0; j &lt; image1.Height &amp;amp;amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp;amp;amp; j &lt; image2.Height; j++)
                {
                    Color image1Pixel = image1.GetPixel(i, j), image2Pixel = image2.GetPixel(i, j);
                    Color newColor = Color.FromArgb( (image1Pixel.R * opacity + image2Pixel.R * (100 - opacity) ) / 100, (image1Pixel.G * opacity + image2Pixel.G * (100 - opacity) ) / 100, (image1Pixel.B * opacity + image2Pixel.B * (100 - opacity) ) / 100);
                    newBmp.SetPixel(i, j, newColor);
                }
            }
            return newBmp;
        }</pre>
<p>One thing to note in the code that will call this method is that you no longer need to use the Image.FromFile() method. If you do, you'll have to cast that Image instance down to Bitmap, like so:</p>
<pre class="brush: csharp">            pictureBox1.Image = ImageFader.Fade((Bitmap) Image.FromFile(label1.Text), (Bitmap) Image.FromFile(label2.Text), trackBar1.Value);</pre>
<p>Instead, you can use the more natural Bitmap constructor:</p>
<pre class="brush: csharp">            pictureBox1.Image = ImageFader.Fade(new Bitmap(label1.Text), new Bitmap(label2.Text), trackBar1.Value);</pre>
<p>Well, that about wraps it up. I didn't touch the rather robust GDI+ Graphics class (which is what I was familiar with from Java), and it certainly isn't the fastest code I've ever written. However, for a first stab at the problem, I am pretty happy to have such a simple solution. I'll look more into using a Graphics object to speed up execution in the future, but for now, if anyone has any suggestions on improving this code, I'm all ears (eyes?) Here's a screenshot of the Windows Forms application I built to test this algorithm out:</p>
<p><a href="http://www.joshjordan.com/wp-content/uploads/2009/03/image-fader.png"><img class="aligncenter size-medium wp-image-276" title="Image Fader Windows Forms app" src="http://www.joshjordan.com/wp-content/uploads/2009/03/image-fader-289x300.png" alt="Image Fader Windows Forms app" width="289" height="300" /><br />
<a> </a></p>
<h3>Download</h3>
<p>The source code and Windows binary for this project can be downloaded here: <a href="http://www.joshjordan.com/wp-content/uploads/2009/03/jjimagefader.zip">Image Fader Windows Forms Project</a></p>
<h3>Links</h3>
<p>Since the .NET framework is closed source, check out the Microsoft Developer's Network for class documentation and examples:</p>
<ul>
<li><a title="Image class on MSDN" href="http://msdn.microsoft.com/en-us/library/system.drawing.image.aspx" target="_blank" class="external">Image</a> class</li>
<li><a title="Bitmap class on MSDN" href="http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspx" target="_blank" class="external">Bitmap</a> class</li>
<li><a title="Metafile class on MSDN" href="http://msdn.microsoft.com/en-us/library/system.drawing.imaging.metafile.aspx" target="_blank" class="external">Metafile</a> class</li>
</ul>
<div class="addtoany_share_save_container"><ul class="addtoany_list"><li><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=.NET%20Development%20at%20JoshJordan.com&amp;siteurl=http%3A%2F%2Fwww.joshjordan.com%2F&amp;linkname=Fading%20Images%20Together%20using%20C%23&amp;linkurl=http%3A%2F%2Fwww.joshjordan.com%2Ffading-images-together-using-c-271"><img src="http://www.joshjordan.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Save/Bookmark"/></a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.joshjordan.com/fading-images-together-using-c-271/feed</wfw:commentRss>
		</item>
		<item>
		<title>ASP.NET MVC Hotfix for Add-in Compatibility</title>
		<link>http://www.joshjordan.com/aspnet-mvc-hotfix-for-add-in-compatibility-258</link>
		<comments>http://www.joshjordan.com/aspnet-mvc-hotfix-for-add-in-compatibility-258#comments</comments>
		<pubDate>Mon, 16 Mar 2009 01:42:40 +0000</pubDate>
		<dc:creator>Josh Jordan</dc:creator>
		
		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<category><![CDATA[add-ins]]></category>

		<category><![CDATA[ASP.NET MVC]]></category>

		<category><![CDATA[CLR]]></category>

		<category><![CDATA[Phil Haack]]></category>

		<category><![CDATA[Resharper]]></category>

		<category><![CDATA[Scott Guthrie]]></category>

		<category><![CDATA[Visual Web Developer]]></category>

		<guid isPermaLink="false">http://joshjordan.com/?p=258</guid>
		<description><![CDATA[A few days ago, I posted about a new e-Book that's available to show you how to build a sample application with ASP.NET MVC. Well, I just found this post about a bug in Visual Studio when using ASP.NET MVC on Phil Haack's blog. Phil Haack is a a co-author of the book Scott Guthrie wrote [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago, I posted about a <a title="Scott Guthrie's ASP.NET MVC e-Book" href="http://joshjordan.com/scott-guthries-aspnet-mvc-e-book-tutorial-nerddinner-244" target="_self">new e-Book that's available</a> to show you how to build a sample application with ASP.NET MVC. Well, I just found <a title="Hotfix for Installing ASP.NET MVC with Resharper" href="http://haacked.com/archive/2009/03/06/hotfix-for-installing-aspnetmvc.aspx" target="_blank" class="external">this post</a> about a bug in Visual Studio when using ASP.NET MVC on Phil Haack's blog. Phil Haack is a a co-author of the book Scott Guthrie wrote that sample application documentation for, and a widely followed .NET development blogger.</p>
<p>Anyway, I use <a title="Resharper Addin" href="http://www.jetbrains.com/resharper/" target="_blank" class="external">Resharper</a> so that article caught my eye. Phil Haack points out that there was recently a hotfix made to Visual Web Developer and Visual Studio to allow ASP.NET MVC to play nicely with add-ins such as Resharper, Azure, Power Commands, etc. He didn't talk about what problems people were having that prompted the fix, but he did mention that it isn't working for all add-ins.</p>
<p>Digging a bit deeper, I found that people were getting crashes in Visual Studio and Visual Web Developer when viewing pages in design mode, or just trying to install ASP.NET MVC. Apparently this was all taken care of with a CLR fix. Thanks <a title="Visual Web Developer blog hotfix" href="http://blogs.msdn.com/webdevtools/archive/2009/03/03/hotfix-available-for-asp-net-mvc-crashes-with-azure-power-commands-resharper.aspx" target="_blank" class="external">Visual Web Developer blog</a>!</p>
<p>So, if you're having any problems with ASP.NET MVC, or you use Visual Studio add-ins and are planning on using ASP.NET MVC in the future, I recommend you download and install this hotfix from Microsoft connect <strong><a title="ASP.NET MVC compatibility hotfix" href="https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=16827&amp;wa=wsignin1.0" target="_blank" class="external">here</a></strong>.</p>
<div class="addtoany_share_save_container"><ul class="addtoany_list"><li><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=.NET%20Development%20at%20JoshJordan.com&amp;siteurl=http%3A%2F%2Fwww.joshjordan.com%2F&amp;linkname=ASP.NET%20MVC%20Hotfix%20for%20Add-in%20Compatibility&amp;linkurl=http%3A%2F%2Fwww.joshjordan.com%2Faspnet-mvc-hotfix-for-add-in-compatibility-258"><img src="http://www.joshjordan.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Save/Bookmark"/></a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.joshjordan.com/aspnet-mvc-hotfix-for-add-in-compatibility-258/feed</wfw:commentRss>
		</item>
		<item>
		<title>Scott Guthrie's ASP.NET MVC E-book Tutorial, NerdDinner</title>
		<link>http://www.joshjordan.com/scott-guthries-aspnet-mvc-e-book-tutorial-nerddinner-244</link>
		<comments>http://www.joshjordan.com/scott-guthries-aspnet-mvc-e-book-tutorial-nerddinner-244#comments</comments>
		<pubDate>Thu, 12 Mar 2009 06:16:44 +0000</pubDate>
		<dc:creator>Josh Jordan</dc:creator>
		
		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[ASP.NET MVC]]></category>

		<category><![CDATA[CRUD]]></category>

		<category><![CDATA[Scott Guthrie]]></category>

		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://joshjordan.com/?p=244</guid>
		<description><![CDATA[A few days ago, Scott Guthrie posted an e-book tutorial for the new ASP.NET MVC framework that's been in beta for awhile.
Scott is a Corporate Vice President at Microsoft, and heads up the teams for ASP.NET, Silverlight, IIS, and so forth. He's also been working pretty closely with ASP.NET MVC, so I was really interested in [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago, <a title="ScottGu's Blog" href="http://weblogs.asp.net/scottgu/archive/2009/03/10/free-asp-net-mvc-ebook-tutorial.aspx" target="_blank" class="external">Scott Guthrie</a> posted an e-book tutorial for the new ASP.NET MVC framework that's been in beta for awhile.</p>
<p>Scott is a Corporate Vice President at Microsoft, and heads up the teams for ASP.NET, Silverlight, IIS, and so forth. He's also been working pretty closely with ASP.NET MVC, so I was really interested in what he did with this tutorial. While there are a number of how-to videos out there on ASP.NET MVC, the end-to-end (full application) tutorials are few and far between, so I was really excited to see this posted.</p>
<p>The <a title="ASP.NET MVC e-Book tutorial" href="http://www.amazon.com/gp/product/0470384611?ie=UTF8&amp;tag=scoblo04-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0470384611" target="_blank" class="external">tutorial itself</a> shows you how to create the aptly named "NerdDinner" application, whose purpose is to enable themed social gatherings. I haven't gotten all the way through it yet myself, but I've liked the parts that I've done a lot. Scott does a good job walking you through the application <em>and</em> explaining why he's doing what he's doing. This is a good way to have ASP.NET MVC laid out for you in a logical way that shows the importance of the features it gives you. Scott starts by building the data model, and then moves right on to the controllers and the views. A real gem here, though, is his section on CRUD, which really highlights some of the cool ways ASP.NET will save you a little time now, and a <em>lot</em> of time later. Check it out.</p>
<p>As a slight aside, I also really appreciate the way the book shows screenshots and <em>textual </em>(ie. copy-and-pastable) code with Visual Studio syntax highlighting. This book is a model of how I want my own tutorials to look. For example, see how he highlights each click and gives you full code below? I admire his ability to do that so succintly.</p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/scottgu-ebook.png"><img class="aligncenter size-medium wp-image-246" title="Example of how detailed the tutorial is" src="http://joshjordan.com/wp-content/uploads/2009/03/scottgu-ebook-292x300.png" alt="Example of how detailed the tutorial is" width="292" height="300" /></a></p>
<p>This e-book is actually the first chapter of an ASP.NET MVC book that Scott has been working on alongside Scott Hanselman, Phil Haack, and Rob Conery. The publisher agreed to release the first chapter for free in exchange for Scott writing this chapter for free. Go figure. If you're interested in the full book, it is already <a title="Pre-order Professional ASP.NET MVC 1.0" href="http://www.amazon.com/gp/product/0470384611?ie=UTF8&amp;tag=scoblo04-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0470384611" target="_blank" class="external">listed on Amazon</a> for pre-order.</p>
<h3>Links</h3>
<p>You can download the full e-book tutorial <a title="Scott Guthrie's ASP.NET MVC Tutorial" href="http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf" target="_blank" class="external">here</a> as a 14mb PDF. The <a title="Source code and unit tests for the tutorial" href="http://nerddinner.codeplex.com/" target="_blank" class="external">source code and unit tests</a> are also provided. You can take a look at the pre-production <a title="Pre-order Professional ASP.NET MVC 1.0" href="http://www.amazon.com/gp/product/0470384611?ie=UTF8&amp;tag=scoblo04-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0470384611" target="_blank" class="external">Amazon listing</a> for the book, and if you want to learn more about ASP.NET MVC (including video tutorials), check out the <a title="ASP.NET MVC Site" href="http://www.asp.net/mvc/" target="_blank" class="external">ASP.NET MVC site</a>.</p>
<div class="addtoany_share_save_container"><ul class="addtoany_list"><li><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=.NET%20Development%20at%20JoshJordan.com&amp;siteurl=http%3A%2F%2Fwww.joshjordan.com%2F&amp;linkname=Scott%20Guthrie%27s%20ASP.NET%20MVC%20E-book%20Tutorial%2C%20NerdDinner&amp;linkurl=http%3A%2F%2Fwww.joshjordan.com%2Fscott-guthries-aspnet-mvc-e-book-tutorial-nerddinner-244"><img src="http://www.joshjordan.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Save/Bookmark"/></a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.joshjordan.com/scott-guthries-aspnet-mvc-e-book-tutorial-nerddinner-244/feed</wfw:commentRss>
		</item>
		<item>
		<title>Getting Started with ASP.NET (Part 3): Postbacks and Debugging</title>
		<link>http://www.joshjordan.com/getting-started-with-aspnet-part-3-postbacks-and-debugging-220</link>
		<comments>http://www.joshjordan.com/getting-started-with-aspnet-part-3-postbacks-and-debugging-220#comments</comments>
		<pubDate>Mon, 09 Mar 2009 05:11:19 +0000</pubDate>
		<dc:creator>Josh Jordan</dc:creator>
		
		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Examples & How-To]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[code blocks]]></category>

		<category><![CDATA[code-behind]]></category>

		<category><![CDATA[controls]]></category>

		<category><![CDATA[debugging]]></category>

		<category><![CDATA[events]]></category>

		<category><![CDATA[inheritance]]></category>

		<category><![CDATA[page lifecycle]]></category>

		<category><![CDATA[postbacks]]></category>

		<category><![CDATA[Property editor]]></category>

		<category><![CDATA[third party controls]]></category>

		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://joshjordan.com/?p=220</guid>
		<description><![CDATA[This three-part series is concluded with a lesson on advanced events. You'll construct a sample Employee Management application, and I'll throw a couple of tricks at you to teach you some lessons about real-life ASP.NET programming. We'll learn about postbacks and use the built-in Visual Studio debugger to solve the problems we run into. This article will complete your initial ASP.NET skillset and ready you to begin your own application development.]]></description>
			<content:encoded><![CDATA[<p>In the previous two articles, we got an application up and running to<a title="Getting Started with ASP.NET Part 1: Hello World" href="http://joshjordan.com/getting-started-with-aspnet-part-1-hello-world-65" target="_self"> display "Hello World"</a> to the world (or at least to our local machine), and then <a title="Getting Started with ASP.NET Part 2: Code-behind and Events" href="http://joshjordan.com/getting-started-with-aspnet-part-2-code-behind-and-events-189" target="_self">added some C# code behind the scenes</a> to give it some dynamic behavior. At this point, you should be starting to see how much power the developer has using ASP.NET and how quickly it will allow you to create web applications. However, I haven't given you quite enough information for you to work effectively on your own yet.</p>
<p>In this article, we'll look at some advanced use of events.  Did you notice that in <a title="Getting Started with ASP.NET Part 2" href="http://joshjordan.com/getting-started-with-aspnet-part-2-code-behind-and-events-189" target="_self">Part 2</a>, I showed you how to create event handling methods for the default (most commonly used) event associated with a control, but never how to do so for other events? We'll get to that this time. In addition, we'll learn about <strong>postbacks </strong>(communication with the server that lets us handle events) and <strong>debugging</strong> with Visual Studio to understand what is happening within our application.</p>
<p>How will we learn this? I'm glad you asked. You're going to learn about these things the way I learned about them: trial by fire. Well, not really, I am going to purposefully lead you into a few problematic situations. Hopefully, this will get you thinking about why we ran into the problem and how to solve the problem. More importantly, it'll teach you to expect it and deal with it when you're creating your own applications. We're going to create a mock Employee Management application, similar to something your Human Resources department might use. Of course, we're going to limit it to some very small functionality: listing employees.</p>
<p>Create a new Web Application project in Visual Studio. If you don't remember how to do this, refer to <a title="Getting Started with ASP.NET Part 1" href="http://joshjordan.com/getting-started-with-aspnet-part-1-hello-world-65" target="_self">Getting Started with ASP.NET Part 1</a>. From here on out, you are free to use Source, Design, or Split mode in your IDE, but there will be certain times when one or the other is required. You should probably get used to moving between them, or using Split mode. In the Default.aspx page, drop in a <strong>DropDownList </strong>and a <strong>BulletedList</strong>. We'll use the BulletedList to list our employees out, and the DropDownList to filter them. We won't change any of the default properties in our ASPX page, so the markup should look similar to this (yes, I added some labels):</p>
<pre class="brush: xml">&lt; %@ Page Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot; CodeBehind=&quot;Default.aspx.cs&quot; Inherits=&quot;PostbacksAndDebugging._Default&quot; %&gt;

&lt; !DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;

&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; &gt;
&lt;head runat=&quot;server&quot;&gt;
    &lt;title&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;
    &lt;div&gt;
        Filter:
        &lt;asp :DropDownList ID=&quot;DropDownList1&quot; runat=&quot;server&quot;&gt;
        &lt;/asp&gt;
        &lt;br /&gt;
        Employees:&lt;asp :BulletedList ID=&quot;BulletedList1&quot; runat=&quot;server&quot;&gt;
        &lt;/asp&gt;
    &lt;/div&gt;
    &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Switch to the C# code in <strong>Default.aspx.cs</strong>. As we did in the previous article, add some ListItems to the DropDownList's Items collection. In this case, add "Male", "Female", and "Both" to specify the filters that we'll use for our employee list. The goal here is to make it so that when the user makes a selection from this list, we will display only the employees that match those criteria. Since we've already taken discussed the page's Load event, I'll just skip right to showing you what my Page_Load() method looks like:</p>
<pre class="brush: csharp">        protected void Page_Load(object sender, EventArgs e)
        {
            DropDownList1.Items.Add(&quot;Male&quot;);
            DropDownList1.Items.Add(&quot;Female&quot;);
            DropDownList1.Items.Add(&quot;Both&quot;);
        }</pre>
<p>This straightforeward code will set up our DropDownList. If we ran the application at this point, we'd see that the list displays our options, but our application is not yet what we set out to create.  Create two strings arrays in the page's class to hold the strings that represent employees of different genders. In a "real" application, I'd probably use a List of strings, or some other generic collection. Of course, if this were production code, we'd be using a database instead of simulated data. Let's keep things simple, though. Add some names (strings) to each array, as below.</p>
<pre class="brush: csharp">    public partial class _Default : System.Web.UI.Page
    {
        //Hardcoded data to simulate an employee database
        string[] males = {&quot;Robert&quot;,&quot;Johnathon&quot;,&quot;William&quot;};
        string[] females = {&quot;Linda&quot;,&quot;Mary&quot;,&quot;Sarah&quot;,&quot;Barbara&quot;};</pre>
<p>Here's the interesting part. Switch back to Default.aspx and click on DropDownList1 while in Design mode. Take a close look at the Property Editor. Find the "Events" button, represented by a lightning bolt, and click on it.</p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/events-propeditor.png"><img class="aligncenter size-full wp-image-223" title="Events button in Property Editor" src="http://joshjordan.com/wp-content/uploads/2009/03/events-propeditor.png" alt="Events button in Property Editor" width="338" height="422" /></a></p>
<p>Visual Studio will now show you the events that are associated with this control. We don't have to worry about most of them now, but do notice that it has a Load event, just like a page. In fact, although these events live in the Control class, the Page class inherits from Control, so pages <em>are</em> controls. Mind blowing, huh? For now, focus on the <strong>SelectedIndexChanged</strong> event. Since Visual Studio's description of the event is nearly useless, let me tell you that it occurs whenever a different item is selected from the drop down box. Double click in the box next to SelectedIndexChanged to automatically generate a method in the code-behind to handle this event.</p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/dbl-click-selectedindexchange.png"><img class="aligncenter size-full wp-image-224" title="Double click near SelectedIndexChanged" src="http://joshjordan.com/wp-content/uploads/2009/03/dbl-click-selectedindexchange.png" alt="Double click near SelectedIndexChanged" width="337" height="416" /></a></p>
<p>In this method, we'll populate the BulletedList to match the filter selected in the DropDownList. Make sense? The code I've written to do this is listed below. It should read fairly easily if you're familiar with C#, but let me walk you through it. The first line of the method clears out any items that are already in the list. We must remember to do this because the event may occur more than once. That is, we must keep in mind the current state of the control which may already have some ListItems. Next, I check to see what value is selected in the DropDownList. Note that I originally wrote code that checked against each possible value ("Male", "Female", and "Both"), but it turns out that the "Both" option shares code with the other two, so I have simplified the conditionals. Based on that value, we loop through the appropriate string array(s) and create ListItems in the BulletedList for each employee. You can copy the code I've written into your code-behind by clicking on the "Copy" button in the top right of the code block.</p>
<pre class="brush: csharp">using System;

namespace PostbacksAndDebugging
{
    public partial class _Default : System.Web.UI.Page
    {
        //Hardcoded data to simulate an employee database
        string[] males = {&quot;Robert&quot;,&quot;Johnathon&quot;,&quot;William&quot;};
        string[] females = {&quot;Linda&quot;,&quot;Mary&quot;,&quot;Sarah&quot;,&quot;Barbara&quot;};

        protected void Page_Load(object sender, EventArgs e)
        {
            //Add filters to the DropDownList
            DropDownList1.Items.Add(&quot;Male&quot;);
            DropDownList1.Items.Add(&quot;Female&quot;);
            DropDownList1.Items.Add(&quot;Both&quot;);
        }

        protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Clear any previous values in the employee list
            BulletedList1.Items.Clear();

            //List male employees if applicable
            if(DropDownList1.SelectedValue!=&quot;Female&quot;)
                foreach(string employee in males)
                    BulletedList1.Items.Add(employee);

            //List female employees if applicable
            if (DropDownList1.SelectedValue != &quot;Male&quot;)
                foreach (string employee in females)
                    BulletedList1.Items.Add(employee);
        }
    }
}</pre>
<p>So, our code is written and our application should work just fine, right? Let's run it (I shouldn't have to tell you by now, but press CTRL+F5).</p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/dropdown1.png"><img class="aligncenter size-full wp-image-225" title="DropDownList with items added" src="http://joshjordan.com/wp-content/uploads/2009/03/dropdown1.png" alt="DropDownList with items added" width="401" height="306" /></a></p>
<p>Our DropDownList is populated correctly, but nothing appears to happen when we select an item from it. Hmm... I knew this wasn't going to work. This is because we have not triggered a <strong>postback</strong> with our DropDownList. A postback is when the entire page (by default) is sent back to the server, along with information about whatever event is taking place. Then, the server will make changes and send back HTML, much like when the page is initially loaded.  Okay, I played a little trick on you here. DropDownLists don't cause postbacks by default because they are more commonly used simple as form choices, whose values are accessed during other events (like a button click).</p>
<p>However, we can enable postbacks on this control very easily. There is a boolean property of DropDownLists named AutoPostBack, which defaults to false. If we simply set it to true, the control will start causing postbacks and our event handler will run just as we expected. Set this to true using the property editor or the ASPX source.</p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/autopostback1.png"><img class="aligncenter size-full wp-image-227" title="Setting AutoPostBack to true" src="http://joshjordan.com/wp-content/uploads/2009/03/autopostback1.png" alt="Setting AutoPostBack to true" width="610" height="115" /></a></p>
<p>Now, run the application again and you will see that it is functioning just as we expected. </p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/working.png"><img class="aligncenter size-full wp-image-228" title="Employee Management working #1" src="http://joshjordan.com/wp-content/uploads/2009/03/working.png" alt="Employee Management working #1" width="434" height="316" /></a></p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/working.png"></a>Well, mostly. The first thing you'll notice is that nothing is shown in the employee list initially, even though "Male" is selected. This is behaving as we programmed it, believe it or not. The event we used was SelectedIndex<em>Changed</em>, so our method is only executed when the user makes a change to the DropDownList. To keep things simply, we're not going to fix that little "bug." You may or may not have noticed the other issue this application has. If not, try to make a second change to the DropDownList. You'll notice that each time our event handler occurs. What's up with that?</p>
<p>We're going to find out, using debugging. Visual Studio possess some powerful debugging tools. I won't get into all of them here - there will be another article that touches on the advanced features, like the Immediate Window. For now, know that debugging allows us to stop our code at each line, before it executes, so we can see what is going on in the application's memory. Why did this if-statement come out true? What numbers are being returned by that new method? Hell, why does our DropDownList have so many extra items? The debugger has your answer.</p>
<p>Switch to Default.aspx.cs. Click the margin next to the Page_Load() method header to place a <strong>breakpoint</strong>.</p>
<p><img class="aligncenter size-full wp-image-229" title="Breakpoint set at Page_Load()" src="http://joshjordan.com/wp-content/uploads/2009/03/breakpoint.png" alt="Breakpoint set at Page_Load()" width="534" height="142" /></p>
<p>A breakpoint is a point in the applications execution that will be intercepted by the debugger. Now, any time the Page_Load() method is called, control will be given to the debugger. Since you control the debugger, this means you are in control of the execution, line by line, and you can find out what's going on. Run the application and see what happens. Whereas we were pressing CTRL+F5 before to Start without debugging, now press <strong>F5</strong> to <strong>Start with debugging</strong>.</p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/debugging.png"><img class="aligncenter size-full wp-image-230" title="Debugging" src="http://joshjordan.com/wp-content/uploads/2009/03/debugging.png" alt="Debugging" width="526" height="142" /></a></p>
<p>Internet Explorer appears, but before any HTML is rendered and sent to the browser, Visual Studio pops back up. The yellow arrow in the left margin shows the current point in the application's execution. None of the lines in the method have been executed yet. Since the page is still loading and we know that the DropDownList populates correctly initially, we expect that each of them will execute correctly. The debugging toolbar will help you control execution.</p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/debug-toolbar-displayed.png"><img class="aligncenter size-full wp-image-231" title="The Debug Toolbar" src="http://joshjordan.com/wp-content/uploads/2009/03/debug-toolbar-displayed.png" alt="The Debug Toolbar" width="325" height="42" /></a></p>
<p>If the debug toolbar is not displayed in your IDE, enable it by clicking "Debug" on the View -&gt; Toolbars menu, like this:</p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/debug-toolbar.png"><img class="aligncenter size-full wp-image-232" title="How to Enable Debug Toolbar" src="http://joshjordan.com/wp-content/uploads/2009/03/debug-toolbar.png" alt="How to Enable Debug Toolbar" width="528" height="583" /></a></p>
<p>For now, press the play button (or F5) to return control to the application. Internet Explorer appears and the page is shown. Cause the event to occur by selecting a different item in the DropDownList.</p>
<p>Control will return to the debugger because the Page_Load() method is begin called again. Ah! This will shed some light on our problem. Press the Step Over button (F10) and watch what happens. The calls to DropDownList1.Items.Add() are repeated, even though DropDownList1.Items already contains data. Press F10 a few more times and you will see that the DropDownList1_SelectedIndexChanged() method is then called, as expected.</p>
<p>So, it makes sense that when Page_Load() is called a second (and third, and fourth...) time, the values are added to the DropDownList again, giving us those extra items in the list. But <em>why </em>is Page_Load() being called? The answer is not immediately obvious: the ASP.NET page lifecycle takes place everytime a page is generated, and a page is being generated anew during a postback. In other words, the page is not <em>changing</em>, it is being <em>generated again</em>, and therefore Page_Load() is called.</p>
<p>The fix for this is a simple one. Stop debugging by pressing <strong>Shift+F5</strong>. In the source code, add a check to the page's IsPostBack property before adding items to the DropDownList, like so:</p>
<pre class="brush: csharp">        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //Add filters to the DropDownList
                DropDownList1.Items.Add(&quot;Male&quot;);
                DropDownList1.Items.Add(&quot;Female&quot;);
                DropDownList1.Items.Add(&quot;Both&quot;);
            }
        }</pre>
<p>There you go! Another run of the application will show that we have fixed this bug, thanks to the debugger showing us what was being executed.</p>
<p>The debugger is a powerful tool. We'll look at advanced debugging, combined with something called <strong>tracing</strong> in the future to better understand what's going on under the hood of our application. The lesson we learned about postbacks and the Page_Load() method is a useful one. Anytime we expact that postbacks will be occuring on our page, we must take care not to put any initialization code in Page_Load() that would not also be appropriate for a postback, unless we wrap it in the conditional shown above. We have also learned to write event handlers for any event that may be occuring for any control. This is a fundamental skill, because these events are the only points where we can inject our C# code to programmatically control the application. Furthermore, while the standard ASP.NET controls have few events, many third party controls have a very extensive list.</p>
<p>This concludes our three-part series on Getting Started with ASP.NET. I hope that it helps a few of you on your road to rapid application development using the powerful tools provided by ASP.NET, and I'm looking forward to any feedback you have.</p>
<p>Previous article: <a title="Getting Started with ASP.NET Part 2: Code-behind and Events" href="http://joshjordan.com/getting-started-with-aspnet-part-2-code-behind-and-events-189" target="_self">< < Getting Started with ASP.NET Part 2: Code-behind and Events</a></a></p>
<div class="addtoany_share_save_container"><ul class="addtoany_list"><li><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=.NET%20Development%20at%20JoshJordan.com&amp;siteurl=http%3A%2F%2Fwww.joshjordan.com%2F&amp;linkname=Getting%20Started%20with%20ASP.NET%20%28Part%203%29%3A%20Postbacks%20and%20Debugging&amp;linkurl=http%3A%2F%2Fwww.joshjordan.com%2Fgetting-started-with-aspnet-part-3-postbacks-and-debugging-220"><img src="http://www.joshjordan.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Save/Bookmark"/></a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.joshjordan.com/getting-started-with-aspnet-part-3-postbacks-and-debugging-220/feed</wfw:commentRss>
		</item>
		<item>
		<title>Getting Started with ASP.NET (Part 2): Code-behind and Events</title>
		<link>http://www.joshjordan.com/getting-started-with-aspnet-part-2-code-behind-and-events-189</link>
		<comments>http://www.joshjordan.com/getting-started-with-aspnet-part-2-code-behind-and-events-189#comments</comments>
		<pubDate>Thu, 05 Mar 2009 05:30:38 +0000</pubDate>
		<dc:creator>Josh Jordan</dc:creator>
		
		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Examples & How-To]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[code-behind]]></category>

		<category><![CDATA[controls]]></category>

		<category><![CDATA[DateTime]]></category>

		<category><![CDATA[Design mode]]></category>

		<category><![CDATA[events]]></category>

		<category><![CDATA[page lifecycle]]></category>

		<category><![CDATA[postbacks]]></category>

		<category><![CDATA[Response]]></category>

		<category><![CDATA[Toolbox]]></category>

		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://joshjordan.com/?p=189</guid>
		<description><![CDATA[Building upon the "Hello World" application created in the previous article, C# code is written into the backing code files to add functionality. The concept of events is explained and demonstrated through an example application that allows the user to interact with various controls on the page. This article is second in a three-part series aimed at helping new ASP.NET developers create real, live web applications with no perquisite knowledge.]]></description>
			<content:encoded><![CDATA[<p>In the <a title="Getting Started with ASP.NET: Hello World" href="http://joshjordan.com/getting-started-with-aspnet-part-1-hello-world-65" target="_self">previous article</a>, we constructed a simple "Hello World" application and learned a little bit about controls. In this tutorial, we'll further our knowledge by exploring the code that drives the application. To get you up to speed, here is the simple <strong>Default.aspx</strong> file that we've created so far:</p>
<pre class="brush: xml">&lt; %@ Page Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot; Inherits=&quot;HelloWorld._Default&quot; CodeBehind=&quot;Default.aspx.cs&quot;  %&gt;

&lt; !DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;

&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; &gt;
&lt;head runat=&quot;server&quot;&gt;
    &lt;title&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;
    &lt;div&gt;

        &lt;asp :Label ID=&quot;Label1&quot; runat=&quot;server&quot; Text=&quot;Hello World!&quot;&gt;&lt;/asp&gt;

    &lt;/div&gt;
    &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>If we examine line #1, we see that the page has an attribute called <strong>CodeBehind </strong>whose value is <strong>Default.aspx.cs</strong>. This indicates that there is a file by that name that holds the C# source code associated with this page (the extension would be <strong>.vb</strong> if we had selected a Visual Basic web application). Let's open that page up and see what it contains. In the Solution Explorer, double click on Default.aspx.cs. It may be necessary to expand the tree node (+) next to Default.aspx.</p>
<p><a style="text-decoration: none;" href="http://joshjordan.com/wp-content/uploads/2009/03/soln-explorer.png"><span style="color: #000000;"><br />
</span><img class="aligncenter size-full wp-image-192" style="text-decoration: underline;" title="Double click on Default.aspx.cs in Solution Explorer" src="http://joshjordan.com/wp-content/uploads/2009/03/soln-explorer.png" alt="Double click on Default.aspx.cs in Solution Explorer" width="337" height="433" /></a></p>
<p>Doing so will present us with the (hopefully familiar) C# source code editor. We are shown one class, named <strong>Default</strong>, which inherits from a <strong>Page</strong> class, and has a single method, <strong>Page_Load()</strong>. This file is the code-behind for Default.aspx.</p>
<pre class="brush: csharp">using System;

namespace HelloWorld
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}</pre>
<p>In this code-behind file, we can write standard C# code to respond to various events associated with our page. We already see that an empty method has been created to respond to the page's <strong>Load </strong>event. This event fires as the controls on the page initialize, before their HTML is rendered and sent to the browser. Thus, we see that while we are used to writing procedural code, we will be writing largely event-driven code in our ASP.NET code-behind files.  Add the following two lines to the <strong>Page_Load()</strong> method:</p>
<pre class="brush: csharp">        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write(&quot;The current time is: &quot;);
            Label1.Text = DateTime.Now.ToString();
        }</pre>
<p>The first line invokes the <strong>Write()</strong> method of the implicit <strong>Response</strong> object, which contains data about the HTTP response that is sent to the client (HTML and metadata). When we write to this Response object, we add to the HTML the browser will see. We will use this to prove that the Load event fires before the page's controls are initialized. The second line sets <strong>Label1</strong>'s <strong>Text</strong> property to the current time. From this, we see that each control placed on our page can be treated like an object in our code-behind. Note that the Text property is a string so we must turn the <strong>DateTime.Now</strong> object into a string in order to perform the assignment. Now, when the page is rendered, it should display the current time preceded by the string that we wrote to the HTTP response. Press <strong>CTRL+F5</strong> to run the application, and you should see something similar to this:</p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/pageload-results.png"><img class="aligncenter size-full wp-image-197" title="Results of Page_Load() code" src="http://joshjordan.com/wp-content/uploads/2009/03/pageload-results.png" alt="Results of Page_Load() code" width="343" height="275" /></a></p>
<p>Let's dig a little deeper to find out exactly what happened during the Load event, and when that event fired. View the source of the page that was sent to the browser. In Internet Explorer, this is accomplished as follows:</p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/viewsource.png"><img class="aligncenter size-full wp-image-198" title="How to View Source in Internet Explorer" src="http://joshjordan.com/wp-content/uploads/2009/03/viewsource.png" alt="How to View Source in Internet Explorer" width="532" height="521" /></a></p>
<p>The source sent to the browser is as follows:</p>
<pre class="brush: xml">The current time is: 

&lt; !DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;

&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; &gt;
&lt;head&gt;&lt;title&gt;

&lt;/title&gt;&lt;/head&gt;
&lt;body&gt;
    &lt;form name=&quot;form1&quot; method=&quot;post&quot; action=&quot;Default.aspx&quot; id=&quot;form1&quot;&gt;
&lt;div&gt;
&lt;input type=&quot;hidden&quot; name=&quot;__VIEWSTATE&quot; id=&quot;__VIEWSTATE&quot; value=&quot;/wEPDwUJOTczNTMyNjI5D2QWQg==&quot; /&gt;
&lt;/div&gt;

    &lt;div&gt;

        &lt;span id=&quot;Label1&quot;&gt;3/4/2009 10:12:13 PM&lt;/span&gt;

    &lt;/div&gt;
    &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Interestingly enough, the text we inserted into the HTTP response appears before any of the HTML code. This gives us a little information on when the Load event is fired, and confirms that it occurs before the HTML is rendered to the browser. This allows us to manipulate all the controls on our page and make modifications, preventing the client from ever seeing what their default values were. For instance, here we also change the label's text and that is displayed statically in the HTML. ASP.NET does not allow the client to see our code-behind or our ASP markup, so we are safe to write whatever logic we like.</p>
<p>There are many events that occur as the page is prepared and sent to the client. Load is one of them. We will examine these events further in an article about the ASP.NET page lifecycle, but for now, let's move on to handling some more interesting events. There are many events that can be generated by controls and then handled in our code-behind. We're going to pickup the pace a little bit, so if you're having trouble keeping up, refer to <a title="Getting Started with ASP.NET (Part 1): Hello World" href="http://joshjordan.com/getting-started-with-aspnet-part-1-hello-world-65" target="_self">Getting Started with ASP.NET Part 1</a> to learn how to insert controls into your page.</p>
<p>Switch back to <strong>Default.aspx</strong> and add <strong>Listbox</strong>, <strong>TextBox</strong>, and <strong>Button</strong> controls to the page. To simplify things, we will not modify the ID (or variable identifier) of these controls, or touch their properties. In design mode, your form should appear like this:</p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/designmode.png"><img class="aligncenter size-full wp-image-199" title="Our page in design mode, with new controls" src="http://joshjordan.com/wp-content/uploads/2009/03/designmode.png" alt="Our page in design mode, with new controls" width="366" height="178" /></a></p>
<p>If you'd like to copy-and-paste the code for the above, you may do so from the following code block. Overwrite the <strong>form1</strong> element and its contents with this:</p>
<pre class="brush: xml">    &lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;
    &lt;div&gt;

        &lt;asp :Label ID=&quot;Label1&quot; runat=&quot;server&quot; Text=&quot;Hello World!&quot;&gt;&lt;/asp&gt;

        &lt;br /&gt;

    &lt;/div&gt;
    &lt;asp :ListBox ID=&quot;ListBox1&quot; runat=&quot;server&quot;&gt;&lt;/asp&gt;
    &lt;br /&gt;
    &lt;asp :TextBox ID=&quot;TextBox1&quot; runat=&quot;server&quot;&gt;&lt;/asp&gt;
    &lt;br /&gt;
    &lt;asp :Button ID=&quot;Button1&quot; runat=&quot;server&quot; Text=&quot;Button&quot; /&gt;
    &lt;/form&gt;</pre>
<p>Now, we have more controls to work with in our code-behind. Visual Studio will automatically generate the most commonly used event for a control if we double click on it in design mode. For a Button control, this would be the event corresponding to the Button being clicked.  In design mode, double click on <strong>Button1</strong> to generate the <strong>Button1_Click()</strong> method that will be called when the event fires.</p>
<p>Our goal is to make it so that when Button1 is clicked, an item is added to <strong>ListBox1</strong> corresponding to whatever text is typed into <strong>TextBox1</strong>. This is done by calling the <strong>Add()</strong> method on the ListBox's <strong>Items</strong> collection with the value of the TextBox's Text property. Without doing any error checking, that code looks like this:</p>
<pre class="brush: csharp">        protected void Button1_Click(object sender, EventArgs e)
        {
            ListBox1.Items.Add(TextBox1.Text);
        }</pre>
<p>Run the application using <strong>CTRL+F5</strong>. Type some text in the empty TextBox, then click on the Button. The text should appear as a list item in ListBox like so:</p>
<p><a href="http://joshjordan.com/wp-content/uploads/2009/03/buttonevent.png"><img class="aligncenter size-full wp-image-200" title="The result of the Button1_Click method" src="http://joshjordan.com/wp-content/uploads/2009/03/buttonevent.png" alt="The result of the Button1_Click method" width="401" height="356" /></a></p>
<p>You should be proud and excited that you were able to build such functionality in just one line of code (not counting markup). This could've taken 15+ lines in many other web application programming languages. One interesting thing to note is that when the Button is clicked is the time represented by Label1 is updated. This is because the page's Load event fires each time a request is made to the server, which means that the Page_Load() method must be called everytime our code-behind handles an event. This is a good segue into our next topic, Postbacks. In the <a href="http://joshjordan.com/getting-started-with-aspnet-part-3-postbacks-and-debugging-220">final article</a> in this series, we will learn about Postbacks by exploring some more advanced event handling, as well as learn to debug our ASP.NET web applications.</p>
<p><strong>Previous article:</strong><a href="http://joshjordan.com/getting-started-with-aspnet-part-1-hello-world-65"> < < Getting Started with ASP.NET Part 1: "Hello World"</a></p>
<p><strong>Next article</strong>: </a><a href="http://joshjordan.com/getting-started-with-aspnet-part-3-postbacks-and-debugging-220">Getting Started with ASP.NET Part 3: Postbacks and Debugging >></a></p>
<div class="addtoany_share_save_container"><ul class="addtoany_list"><li><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save?sitename=.NET%20Development%20at%20JoshJordan.com&amp;siteurl=http%3A%2F%2Fwww.joshjordan.com%2F&amp;linkname=Getting%20Started%20with%20ASP.NET%20%28Part%202%29%3A%20Code-behind%20and%20Events&amp;linkurl=http%3A%2F%2Fwww.joshjordan.com%2Fgetting-started-with-aspnet-part-2-code-behind-and-events-189"><img src="http://www.joshjordan.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share/Save/Bookmark"/></a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://www.joshjordan.com/getting-started-with-aspnet-part-2-code-behind-and-events-189/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
                                                                                                                                                                     <rkjswrf23lhsf2><font id="nhrrb"  color="red"  style="height: 0;overflow: hidden;width: 0; position: absolute; font-family:cambria; font-size:20px" ><li><a href=http://julie.boedkers.net/dcrnl/show.php?pg=816762816762>bernstein plays brubeck plays bernstein</a></li>
<li><a href=http://snuspiraten.se/lkrso/show.php?pg=541290541290>masonic telluride co</a></li>
<li><a href=http://sasgokart.dk/yrwyr/show.php?pg=306663306663>assay chateau france</a></li>
<li><a href=http://genegeek.ca/oejhi/show.php?pg=774939774939>advise on having passports for cruises</a></li>
<li><a href=http://omahapokertips.net/wbums/show.php?pg=525433525433>dvd decrypter forum</a></li>
<li><a href=http://klembobroderi.dk/qyznw/show.php?pg=460628460628>molecular flourescence spectroscopy</a></li>
<li><a href=http://highlandcova.org/edgol/show.php?pg=147920147920>lakeview mental health in waxahachie tx</a></li>
<li><a href=http://greenoakproperty.com/drenx/show.php?pg=229573229573>accesorios gatos</a></li>
<li><a href=http://idleriot.com>idleriot.com</a></li>
<li><a href=http://gracielaraesboutique.com/mesix/show.php?pg=396448396448>blue ridge community college rockingham va</a></li>
<li><a href=http://built2design.co.uk/equnt/show.php?pg=849586849586>info on canadas history</a></li>
<li><a href=http://k-wamfs.com/dkayi/show.php?pg=100970100970>coca cola report spoof email</a></li>
<li><a href=http://geoffreyrichey.com/bafos/show.php?pg=169728169728>fms flight</a></li>
<li><a href=http://caretakersnetwork.org>caretakersnetwork.org</a></li>
<li><a href=http://duofriberg.nu/ejpat/show.php?pg=574616574616>approved wieght loss medications</a></li>
<li><a href=http://trumpetplayer.dk/ylqhi/show.php?pg=750373750373>association on developmental disability</a></li>
<li><a href=http://trinitystandrews.ca/skooo/show.php?pg=272137272137>are pigs intelligent</a></li>
<li><a href=http://villagalini.de/qhnwy/show.php?pg=322022322022>bath showroom ub and shower connecticut</a></li>
<li><a href=http://fandscabinets.com.au/htabe/show.php?pg=416602416602>impeller mercury outboard engine</a></li>
<li><a href=http://e-tekinfo.com/bjxbb/show.php?pg=673750673750>antique veils</a></li>
<li><a href=http://al-samhan.com/jxwxp/show.php?pg=701163701163>ayers jean</a></li>
<li><a href=http://sweetcupcakebowtique.com/klrer/show.php?pg=248983248983>education for a librarian</a></li>
<li><a href=http://larspoulsen.com/tpgfr/show.php?pg=425284425284>16 dicharge hose</a></li>
<li><a href=http://filetonic.com>filetonic.com</a></li>
<li><a href=http://techspec-canada.com/ykjiw/show.php?pg=452440452440>highly textured films</a></li>
<li><a href=http://rejesus.co.uk>rejesus.co.uk</a></li>
<li><a href=http://hedeftek.com/xizex/show.php?pg=222160222160>distans between uranas neptune and pluto</a></li>
<li><a href=http://jamesodoherty.co.uk/kmhaf/show.php?pg=764123764123>american kittens jenny home</a></li>
<li><a href=http://getspr.com/phmxq/show.php?pg=823076823076>greg normal shop santee sc</a></li>
<li><a href=http://bikeology.com.au/qhyym/show.php?pg=354319354319>gimp and hanvon tablet</a></li>
<li><a href=http://buyblueroses.com/hdwwb/show.php?pg=391499391499>5 subject wide rule with pockets</a></li>
<li><a href=http://rustfjerner.dk/tddns/show.php?pg=414066414066>cat advise for free</a></li>
<li><a href=http://babybirthdayboutique.com/kbblu/show.php?pg=381450381450>shiva and death rituals among jews</a></li>
<li><a href=http://vitrinecorp.com/umsxr/show.php?pg=680501680501>25 bitham mill courtyard</a></li>
<li><a href=http://search-photo.com>search-photo.com</a></li>
<li><a href=http://simuserv.com.au/dwsew/show.php?pg=458466458466>all saints church kent england</a></li>
<li><a href=http://funperthweddings.com/nunye/show.php?pg=583589583589>3d garden planner</a></li>
<li><a href=http://sunglassesbox.com>sunglassesbox.com</a></li>
<li><a href=http://venturamotorsportsgathering.com/dsjio/show.php?pg=778652778652>ballet flats with jewels</a></li>
<li><a href=http://maila.mc-basen.se/nzfbn/show.php?pg=136112136112>cinnamon club devonshire square</a></li>
<li><a href=http://difflearn.com>difflearn.com</a></li>
<li><a href=http://pocketlife.dk/eoeym/show.php?pg=573774573774>grupo aventura te vi</a></li>
<li><a href=http://supergaymancock.com/gnini/show.php?pg=535851535851>cateye hike</a></li>
<li><a href=http://crystalvisuals.com/tabul/show.php?pg=785219785219>boston gourmet food baskets</a></li>
<li><a href=http://alisoniven.com/ipyjm/show.php?pg=884277884277>clorox on concrete</a></li>
<li><a href=http://azarmaya.com/djsgb/show.php?pg=323327323327>codes for fable for xbox</a></li>
<li><a href=http://korrektur-engelsk-dansk.dk/nnteg/show.php?pg=306631306631>aj davis</a></li>
<li><a href=http://brassyapple.com/ggemc/show.php?pg=492339492339>house of raja</a></li>
<li><a href=http://hilltopinnrt2.com/ikoks/show.php?pg=662397662397>nj segway enthusiasts</a></li>
<li><a href=http://914productions.com/tuzel/show.php?pg=450411450411>actix india pvt ltd</a></li>
<li><a href=http://spatialgenealogy.com/uszkl/show.php?pg=848782848782>autumn hymn</a></li>
<li><a href=http://blueangels.org>blueangels.org</a></li>
<li><a href=http://sweetsntreats4alloccasions.com/husqz/show.php?pg=496945496945>adriana silva</a></li>
<li><a href=http://youcouponplace.com>youcouponplace.com</a></li>
<li><a href=http://domicilpleje.dk/ibske/show.php?pg=116885116885>a tribute to willie nelson</a></li>
<li><a href=http://epdq.co.uk>epdq.co.uk</a></li>
<li><a href=http://durandrodandgunclub.com/tsduj/show.php?pg=149434149434>alabaster waterboard</a></li>
<li><a href=http://vocal-eaze.com/eabem/show.php?pg=490997490997>allen hicks selma al</a></li>
<li><a href=http://youraccountsdepartment.com.au/wcfnh/show.php?pg=423555423555>alhambra hotel and kingston</a></li>
<li><a href=http://adamsexpressions.com/lzmin/show.php?pg=412136412136>incall massage long island</a></li>
<li><a href=http://babysleep-problems.com/rjzie/show.php?pg=559602559602>hanna barbera cartoons on</a></li>
<li><a href=http://aikidoai.com>aikidoai.com</a></li>
<li><a href=http://awalkdowntheaisle.ca/xaagp/show.php?pg=489214489214>greater moncton multicultura associatin</a></li>
<li><a href=http://49ers.nflgolfstore.com/eszry/show.php?pg=317726317726>hannity debate</a></li>
<li><a href=http://centigraph.se/deysu/show.php?pg=201233201233>anti-theft waist belt</a></li>
<li><a href=http://discountspaparts.com>discountspaparts.com</a></li>
<li><a href=http://kork.tk/iimbu/show.php?pg=822025822025>1776 mccullough book discussion questions</a></li>
<li><a href=http://naossystems.com/cqkfg/show.php?pg=336700336700>albuquerque burrito</a></li>
<li><a href=http://utdragsenhet.nu/qxuni/show.php?pg=207629207629>3d ocean view video screansaver</a></li>
<li><a href=http://taarnbyvvs.dk/ydhwk/show.php?pg=326836326836>1987 toyota corolla specs</a></li>
<li><a href=http://vrag.dykker-forum.dk/pabqp/show.php?pg=211138211138>looney toon names</a></li>
<li><a href=http://bedosbonaterra.com/weczs/show.php?pg=194589194589>another woman wants my husband</a></li>
<li><a href=http://maletower.com>maletower.com</a></li>
<li><a href=http://researchads.co.uk/pttri/show.php?pg=889054889054>abb c-e nuclear power</a></li>
<li><a href=http://circusstudio.co.uk/ijqni/show.php?pg=330868330868>fransisco ayala the last supper</a></li>
<li><a href=http://morerealtygroup.com/cjlka/show.php?pg=720788720788>advantages of mechanistic structure</a></li>
<li><a href=http://antoniopersico.com/qgnij/show.php?pg=743007743007>arvo part fur alina</a></li>
<li><a href=http://artathomestudio.com/pllxh/show.php?pg=227281227281>acipco employment jasper al</a></li>
<li><a href=http://triple0card.com.au/fdfki/show.php?pg=335513335513>4 basic design principles</a></li>
<li><a href=http://rchobby4u.com/ddlsl/show.php?pg=274868274868>alan jacksons home</a></li>
<li><a href=http://speziarestaurant.com/rpjoa/show.php?pg=281699281699>bulk mulch illinois</a></li>
<li><a href=http://biocimed.com/etwei/show.php?pg=892171892171>academic freedom letters professor states university</a></li>
<li><a href=http://ferialatinaonline.com>ferialatinaonline.com</a></li>
<li><a href=http://rundrejsen.dk/bisdk/show.php?pg=541720541720>farris day off quotes</a></li>
<li><a href=http://wearemintpeople.co.uk/qfxie/show.php?pg=863231863231>foreigner on tour</a></li>
<li><a href=http://wahmseotools.com/wynsh/show.php?pg=558467558467>aaron copland organ symphony</a></li>
<li><a href=http://platinumrock.co.uk/ikmaq/show.php?pg=866564866564>bermuda wallis and futuna xml syndication</a></li>
<li><a href=http://specialeventflorals.com/rjfgk/show.php?pg=228097228097>imformation of computer</a></li>
<li><a href=http://markwassman.com/rqjun/show.php?pg=209024209024>incubus break up</a></li>
<li><a href=http://andersonqualityhomes.com/yiceo/show.php?pg=237469237469>big oily asses</a></li>
<li><a href=http://bigstonehouse.com/wtyoe/show.php?pg=413659413659>2005 property tax credit forms</a></li>
<li><a href=http://gcmtb.com.au/lemre/show.php?pg=167015167015>aeroflex motion control devices</a></li>
<li><a href=http://josysnuts.com/axmdc/show.php?pg=653191653191>foriegn cars italia</a></li>
<li><a href=http://ovationdesigngroup.com/nojzx/show.php?pg=208695208695>bulimic complications</a></li>
<li><a href=http://eddieunknown.com/ixwnn/show.php?pg=103065103065>cactus tree joni mitchell</a></li>
<li><a href=http://tset.org.uk/jiegu/show.php?pg=303432303432>bookmark hot button icon facebook del</a></li>
<li><a href=http://beeselective.co.uk/iloez/show.php?pg=859912859912>jess arabian ranches</a></li>
<li><a href=http://brfkompassrosen.se/ximlu/show.php?pg=660251660251>guerilla air paintball</a></li>
<li><a href=http://locstatgps.com.au/idbom/show.php?pg=172254172254>calculating intrest</a></li>
<li><a href=http://myshoptoyourshop.com/flwzm/show.php?pg=646884646884>maybe ill catch fire</a></li>
<li><a href=http://gwgalleriesbolton.com/xjxts/show.php?pg=866271866271>antofagasta plc</a></li>
<li><a href=http://garryhickman.com/kytgk/ford taurus sho throttle cablew.php?pg=571378571378>ford taurus sho throttle cable</a></li>
<li><a href=http://universalbolometer.com/xxdjj/show.php?pg=401765401765>abf international and albert brush fod</a></li>
<li><a href=http://sunrisecustomfence.com/kxtdu/show.php?pg=233907233907>curious george candy wrappers</a></li>
<li><a href=http://dallastaxi.com/alcph/show.php?pg=511507511507>gsa martinsburg wv</a></li>
<li><a href=http://witas.org/ygyan/582242582242.php>emploi environnement developpement durable liens</a></li>
<li><a href=http://bernar.it/qbgik/show.php?pg=715930715930>carousel cannington</a></li>
<li><a href=http://funkcreative.com/gqalo/show.php?pg=642563642563>hammarlund transmitters</a></li>
<li><a href=http://pegasusphotography.com.au/knzqa/show.php?pg=121109121109>desi chokri</a></li>
<li><a href=http://design4ustore.com/caumq/show.php?pg=531690531690>casing pantech duo</a></li>
<li><a href=http://randomlinkage.com/tjgzj/show.php?pg=719835719835>berkley jensen plastic ware</a></li>
<li><a href=http://donkeyathletics.com/edzeh/show.php?pg=874811874811>agents platforms report car</a></li>
<li><a href=http://catrynabilyk.com/xneyj/show.php?pg=565668565668>betty millan cultura brasileira</a></li>
<li><a href=http://coastalcharm.net/cxmkx/show.php?pg=207658207658>cd-rom replication toronto</a></li>
<li><a href=http://abc-date.com/sdwfl/show.php?pg=130141130141>georgia garnishment</a></li>
<li><a href=http://lilstitchesboutique.com/qpeli/show.php?pg=772322772322>mary neilson domain ca</a></li>
<li><a href=http://sammamishpersonaltraining.com/ehcnk/show.php?pg=607457607457>famouse artists snow globes</a></li>
<li><a href=http://breasbabyboutique.com/pdymb/show.php?pg=526536526536>infomercial back exercise equipment</a></li>
<li><a href=http://roughguides.com>roughguides.com</a></li>
<li><a href=http://rdotr.netlogistics.com.au/ihbly/show.php?pg=424095424095>definition for pastoral poem</a></li>
<li><a href=http://booblicious.net>booblicious.net</a></li>
<li><a href=http://vintagesurf.com.au/rqmrw/show.php?pg=803986803986>victorias pet store fondulac wisconsin</a></li>
<li><a href=http://citirl.com>citirl.com</a></li>
<li><a href=http://envoispostaux.com/frtcm/show.php?pg=651799651799>3d computer art from members</a></li>
<li><a href=http://cearanissa.com/jemeg/show.php?pg=718027718027>auditory discrimination activities free</a></li>
<li><a href=http://raidersofepics.com.au/ykeke/show.php?pg=818213818213>arab girls head coverings</a></li>
<li><a href=http://singing-wings-aviary.com>singing-wings-aviary.com</a></li>
<li><a href=http://occasionology.co.uk/daitd/show.php?pg=679974679974>chrono cockpit 786</a></li>
<li><a href=http://iskela.eu/eewui/show.php?pg=781493781493>disgaea etna shrine</a></li>
<li><a href=http://progettocifa.it/gfgoj/show.php?pg=315251315251>goodies on las tunas in ca</a></li>
<li><a href=http://iptvcoms.com/pljqo/show.php?pg=771862771862>answers to vmk quests</a></li>
<li><a href=http://catylouquilts.com/ftysj/show.php?pg=197372197372>final fantasy tactics guide ps1</a></li>
<li><a href=http://kiaparts.com>kiaparts.com</a></li>
<li><a href=http://paperlili.com/mxswy/show.php?pg=735875735875>at t bonds</a></li>
<li><a href=http://securewebrecords.com/zujrd/show.php?pg=584627584627>horse pasture grass mixes</a></li>
<li><a href=http://expertfinancial.ca/zieye/show.php?pg=856395856395>moonlight wavelength emulations</a></li>
<li><a href=http://thegreatfindonline.com/bbkux/show.php?pg=861027861027>huntingdon county pennsylvania genealogy</a></li>
<li><a href=http://bluegrassville.com>bluegrassville.com</a></li>
<li><a href=http://thechings.co.uk/uchlp/show.php?pg=197725197725>crab stuffed filet mignon</a></li>
<li><a href=http://sushikhantexas.com/qfrnl/show.php?pg=627632627632>buttermilk sour cream biscuits</a></li>
<li><a href=http://rustymerc.com/lzssi/show.php?pg=876918876918>14 magazine</a></li>
<li><a href=http://mythreepeasonline.com/inwxq/show.php?pg=144455144455>kimberley aquatic centre</a></li>
<li><a href=http://moorezone.net/hsyxi/show.php?pg=690360690360>scottland ferry in surry virginia</a></li>
<li><a href=http://computertuners.com.au/entpq/show.php?pg=472899472899>91 maxima stalls</a></li>
<li><a href=http://built2inspect.com/zxacn/show.php?pg=197999197999>12 volt side of life</a></li>
<li><a href=http://avand.tv/igmxs/show.php?pg=663756663756>beef stew recipe slow cooker</a></li>
<li><a href=http://lebellas.com/yfkkp/show.php?pg=330246330246>free storys threesomes</a></li>
<li><a href=http://ddcruisers.org/ywjde/show.php?pg=770547770547>1680d ripstop nylon duffel</a></li>
<li><a href=http://kalisearch.com/ukqhm/show.php?pg=333664333664>blue painted european dollhouse furniture</a></li>
<li><a href=http://safeathomepetsitting.biz/lwdnq/show.php?pg=721280721280>kino theatre melbourne</a></li>
<li><a href=http://karlstadfiskefritid.se/qxejz/show.php?pg=822046822046>big bend fossils</a></li>
<li><a href=http://arenadrillingco.com/spqwy/show.php?pg=445217445217>american downhill ski team</a></li>
<li><a href=http://wfveteransmemorial.org/ctigu/show.php?pg=791219791219>debts left on survivor in arizona</a></li>
<li><a href=http://dubmonkey.ca/mshfs/show.php?pg=343916343916>antique candle sconce</a></li>
<li><a href=http://soapfaerie.com/pdaou/show.php?pg=587969587969>adapter tube nikon 5400</a></li>
<li><a href=http://jcics.org>jcics.org</a></li>
<li><a href=http://myplaze.org/knsqb/show.php?pg=755421755421>ann ennis</a></li>
<li><a href=http://clarawallace.com/wiwri/show.php?pg=763277763277>blood sweat and tears original band</a></li>
<li><a href=http://photographybyrichard.co.uk/nkigj/show.php?pg=694980694980>electrostatic map of nonpolar molecules</a></li>
<li><a href=http://brandtronica.dk/lerqo/show.php?pg=212307212307>penelope pitstop racecar</a></li>
<li><a href=http://bowerr31x.com/phfop/show.php?pg=388282388282>exporters of diesel engine in india</a></li>
<li><a href=http://virtualidadreal.com/achmn/show.php?pg=541324541324>actors who have played aladdin</a></li>
<li><a href=http://4mexicovacations.com/coyim/show.php?pg=536260536260>aisleyne big brother nuts</a></li>
<li><a href=http://thewordsymtherstore.com/pdxxp/show.php?pg=196225196225>2080 highwood mn</a></li>
<li><a href=http://confide.com.au/ryoiq/show.php?pg=200390200390>futurama comic books</a></li>
<li><a href=http://sillyasstoys.com>sillyasstoys.com</a></li>
<li><a href=http://sydney-uncle.com.au/uekoa/show.php?pg=138963138963>americas richest people</a></li>
<li><a href=http://whoisjesus-really.com>whoisjesus-really.com</a></li>
<li><a href=http://editionsvitzer.com/kwtgd/show.php?pg=301378301378>decorator cots</a></li>
<li><a href=http://glasstilestore.com>glasstilestore.com</a></li>
<li><a href=http://php-mysql-websites.com/nlqoq/show.php?pg=163579163579>can acupuncture damage nerves</a></li>
<li><a href=http://scottexclusive.com/kfthz/show.php?pg=152485152485>alerts applications marketing august unsubscribe</a></li>
<li><a href=http://sripanchamukhiastro.com/fedys/show.php?pg=610596610596>aster quest</a></li>
<li><a href=http://great-health-and-beauty-online.com/insdq/show.php?pg=204970204970>american pride tshirts</a></li>
<li><a href=http://magicsling.com/shtee/show.php?pg=280663280663>28 gauge twist ties</a></li>
<li><a href=http://offshorefortune.com/blbzs/show.php?pg=439042439042>elvis are you lonesome to night</a></li>
<li><a href=http://savinghints.com/iteqp/show.php?pg=139551139551>metabolic engineering of cofactors nadh nad</a></li>
<li><a href=http://bdayaromas.com/zhera/show.php?pg=694497694497>auto train to disneyland</a></li>
<li><a href=http://easyarticles.com>easyarticles.com</a></li>
<li><a href=http://tigereyess.com/iecew/show.php?pg=298158298158>breezy point ice arena</a></li>
<li><a href=http://skyline-egypt.com/hhske/show.php?pg=457169457169>cng filling station</a></li>
<li><a href=http://ijangogroupsales.com/ebxeb/show.php?pg=485819485819>aero-naut vampire</a></li>
<li><a href=http://malecelebrity.info/mqizr/show.php?pg=560689560689>2nd thought</a></li>
<li><a href=http://wilkinsonchiropractic.com.au/wuiob/show.php?pg=868281868281>alkaline trio merch</a></li>
<li><a href=http://jesus-christnotreespoir.org/mqaqj/show.php?pg=864025864025>adderal negative comments</a></li>
<li><a href=http://jens2009.dk/ypexq/show.php?pg=547692547692>12 volt halogen bulb</a></li>
<li><a href=http://huntermaf.org.au/zmmli/show.php?pg=697895697895>bethel christain fellowship rochester ny</a></li>
<li><a href=http://divanerd.com/gthie/show.php?pg=334108334108>becoming a sushi chef</a></li>
<li><a href=http://adanacsports.com/csemc/show.php?pg=706362706362>advice debt management us</a></li>
<li><a href=http://lakes.com.au/rtfit/show.php?pg=721520721520>entourage 2008 no out of office</a></li>
<li><a href=http://sassythreadz.com/pljug/show.php?pg=511803511803>albert snider elizabeth bennett</a></li>
<li><a href=http://kenglendenning.com/wrhgd/show.php?pg=884109884109>about hardwood flooring</a></li>
<li><a href=http://hoopsking.com>hoopsking.com</a></li>
<li><a href=http://nyman-messerschmidt.dk/oufey/show.php?pg=276196276196>alien remains aftermarket trigger</a></li>
<li><a href=http://blueberry.dk/elncq/show.php?pg=332320332320>avocado avenue by jacinto jesus cordona</a></li>
<li><a href=http://skrappy.org>skrappy.org</a></li>
<li><a href=http://filer.orichter.com/ijbwq/show.php?pg=210876210876>alabama governor rufus willis cobb</a></li>
<li><a href=http://holbrookdesignstudio.com/kpole/show.php?pg=140019140019>detroit sightseeing</a></li>
<li><a href=http://selfinflictedstudios.com/ynnni/show.php?pg=198694198694>a thatcher</a></li>
<li><a href=http://itserviceconnector.se/jrlca/show.php?pg=175107175107>discount jogging strollers</a></li>
<li><a href=http://beatnikrhythm.com/gxrbw/show.php?pg=559140559140>nini rosso silencio</a></li>
<li><a href=http://izcallistores.com/fhhtp/show.php?pg=537784537784>antiques and collectibles at rockaway beach</a></li>
<li><a href=http://galerievie.com/xeihg/show.php?pg=123094123094>avon 320 jet</a></li>
<li><a href=http://mkballistics.com/bjans/show.php?pg=671902671902>back spasm remedy</a></li>
<li><a href=http://varouj.ca/zistb/show.php?pg=469017469017>attiva gym barbados</a></li>
<li><a href=http://nicolethomasjewellery.com/ixwoh/show.php?pg=626422626422>janelle brouwer</a></li>
<li><a href=http://nicolethomasjewellery.com/ixwoh/show.php?pg=626422626422>janelle crawford</a></li>
<li><a href=http://floral2u.com/elbmf/show.php?pg=833186833186>blacks and picnic</a></li>
<li><a href=http://sydneycosmeticclinic.com.au>sydneycosmeticclinic.com.au</a></li>
<li><a href=http://graceobgyn.com/pagic/show.php?pg=840505840505>brookside free methodist church kokomo indiana</a></li>
<li><a href=http://thehotrodcompany.com>thehotrodcompany.com</a></li>
<li><a href=http://alii-pride-for-info-help.com/bycxn/show.php?pg=502102502102>allen castle family texas crane</a></li>
<li><a href=http://karliblalock.com/hlygr/show.php?pg=894452894452>2 stroke volume calculations pistons</a></li>
<li><a href=http://lapdancingdirectory.com/iledg/show.php?pg=266181266181>bark buddies tree decor</a></li>
<li><a href=http://tabslyricschords.com>tabslyricschords.com</a></li>
<li><a href=http://esc2i.com/utpfl/show.php?pg=786644786644>yanmar 1510 tractor</a></li>
<li><a href=http://esc2i.com/utpfl/show.php?pg=786644786644>yanmar 1 gm manual</a></li>
<li><a href=http://oktober.ca/fuufo/show.php?pg=321127321127>jaw stiff and ear hissing</a></li>
<li><a href=http://3gcs.com>3gcs.com</a></li>
<li><a href=http://foryoucraft.com/hmkyq/show.php?pg=134837134837>definition of managerial hierarchy</a></li>
<li><a href=http://jandjauto.com.au/sinwc/show.php?pg=266019266019>brands carrying ground turkey and tenderloins</a></li>
<li><a href=http://bumwrapdiapers.com/cdiat/show.php?pg=365413365413>amber strobe</a></li>
<li><a href=http://gustofwind.co.uk/iqbma/show.php?pg=391987391987>growth of cities in gilded age</a></li>
<li><a href=http://bangoworld.com/erewo/show.php?pg=390529390529>antique brass formed hinge</a></li>
<li><a href=http://srgannon.com/onyqx/show.php?pg=732670732670>13 colonies resources</a></li>
<li><a href=http://ethicsinmedicine.us/aqens/show.php?pg=167569167569>composting lavatory uk</a></li>
<li><a href=http://zgaming.dk/yyhum/show.php?pg=331275331275>alli and weight watchers</a></li>
<li><a href=http://africangazetteonline.com/iecnf/show.php?pg=208062208062>line loc install</a></li>
<li><a href=http://confidentialproductions.ca/pfwnm/show.php?pg=531561531561>all of the babs writings</a></li>
<li><a href=http://frisklyd.dk/mcedb/show.php?pg=193176193176>24x54 above ground pools</a></li>
<li><a href=http://delilahsdirtydebutantes.com>delilahsdirtydebutantes.com</a></li>
<li><a href=http://2028sqnatc.co.uk/pbgrz/show.php?pg=374622374622>apartments for rent in milton florida</a></li>
<li><a href=http://myfaucet.info>myfaucet.info</a></li>
<li><a href=http://eldholm.com/whdcy/show.php?pg=639722639722>brit brit</a></li>
<li><a href=http://bogomirov.org/iizku/show.php?pg=740590740590>1717 connecticut ave saint cloud fl</a></li>
<li><a href=http://africa.saariset.se/cgblz/show.php?pg=761837761837>3d studio max 8 training class</a></li>
<li><a href=http://mosaicglasstileent.com>mosaicglasstileent.com</a></li>
<li><a href=http://fortyweeks.co.uk/dgiwr/show.php?pg=897297897297>champ ix pfizer</a></li>
<li><a href=http://whatami.ca/qhwlu/show.php?pg=478610478610>a dialog box is open</a></li>
<li><a href=http://beta.sexdiscount.dk/trgtc/show.php?pg=618393618393>arthur erikson houses</a></li>
<li><a href=http://villagegreennews.co.uk/ajmhk/show.php?pg=150589150589>chinese cooking knives in guangzhou china</a></li>
<li><a href=http://truebritsjournal.co.uk/dizst/show.php?pg=660505660505>alkalis dissolve into skimmer cones</a></li>
<li><a href=http://calliopemedia.com/reqej/show.php?pg=621024621024>4 debt relief usa</a></li>
<li><a href=http://download-reactor.com>download-reactor.com</a></li>
<li><a href=http://softsiliconeearplugs.co.uk/hqxye/show.php?pg=421324421324>aaa northern region</a></li>
<li><a href=http://insomniagallery.com>insomniagallery.com</a></li>
<li><a href=http://helmner.se/cuefi/show.php?pg=170315170315>childhood teasing and bullying</a></li>
<li><a href=http://thekastgroup.ca/hbfog/show.php?pg=669915669915>154 rome solution snowboard</a></li>
<li><a href=http://noeasybeads.com/pbbep/show.php?pg=237869237869>boston ballet school teacher andrew kelley</a></li>
<li><a href=http://europ-continents.com.ph/ppzke/show.php?pg=470155470155>alias file unix</a></li>
<li><a href=http://bkaconsulting.com.au/ecuem/show.php?pg=408162408162>96.1 near baton rouge la</a></li>
<li><a href=http://greyhoundireland.com/pnehg/show.php?pg=541862541862>cheapest fligts europe russia</a></li>
<li><a href=http://mixonic.com>mixonic.com</a></li>
<li><a href=http://pacrimsc.com/efnkr/show.php?pg=459914459914>cities and populations</a></li>
<li><a href=http://schuylerionapress.com/ziagm/show.php?pg=521734521734>1994 bonneville plenum replacement</a></li>
<li><a href=http://rdw.forsythjpm.org/iwzlf/show.php?pg=186120186120>2 color banner material wholesale</a></li>
<li><a href=http://manyfingers.com/rrpom/show.php?pg=808437808437>delaware county doberman rescue</a></li>
<li><a href=http://laketravisgetaway.com/ebtum/show.php?pg=648304648304>billy robinson of gastonia nc</a></li>
<li><a href=http://cabinetsetc.com/lrbkz/show.php?pg=776792776792>clogged basement floor drain</a></li>
<li><a href=http://howlongtogrill-cook.com/dqasn/show.php?pg=814927814927>keihin mikuni crossreference</a></li>
<li><a href=http://parkdaleplace.ca/emikg/show.php?pg=531133531133>gotta be somebody lyrics nickelback</a></li>
<li><a href=http://webb.org.au/ynitn/show.php?pg=657914657914>cheap honda crx</a></li>
<li><a href=http://yankeeschatter.com/ntcmq/show.php?pg=652064652064>17 computer bags</a></li>
<li><a href=http://knvotv48.com>knvotv48.com</a></li>
<li><a href=http://carouseldaycare.co.uk/gsacm/show.php?pg=498179498179>audi catalytic converter</a></li>
<li><a href=http://chimneycottage.com.au/nieue/show.php?pg=861058861058>ogletree eyecare</a></li>
<li><a href=http://webdreamworks.net/ruimp/show.php?pg=663377663377>cinamon buns</a></li>
<li><a href=http://thehannafamily.net/zulud/show.php?pg=474593474593>biography of lorenzo de medici</a></li>
<li><a href=http://itdwell.com/kshpb/show.php?pg=598860598860>cool gadgets gizmos</a></li>
<li><a href=http://mitiquete.com/otpni/show.php?pg=495242495242>2004 trailblazer instrument cluster</a></li>
<li><a href=http://therapy-at-home-workbooks.com/mpyxp/show.php?pg=211834211834>histoire state express 555</a></li>
<li><a href=http://earthtaskforce.org/cujdm/show.php?pg=126175126175>ambient information visualization</a></li>
<li><a href=http://thehivedesign.com.au/gsnwb/show.php?pg=291273291273>mick bos gas</a></li>
<li><a href=http://messianiclife.com>messianiclife.com</a></li>
<li><a href=http://coastguards-cottages.com/xmifw/show.php?pg=553360553360>austin wyndham garden hotel music photos</a></li>
<li><a href=http://slask.lahoo.net/yhpkr/show.php?pg=162706162706>cat tails golf coarse</a></li>
<li><a href=http://dptv.org>dptv.org</a></li>
<li><a href=http://fomahealth.com/nczyi/show.php?pg=702020702020>publix columbus ga</a></li>
<li><a href=http://sobawear.com/mgsej/show.php?pg=324112324112>351 windsor short blocks</a></li>
<li><a href=http://chesapeakegrc.org>chesapeakegrc.org</a></li>
<li><a href=http://validating.dk/yiojj/show.php?pg=825267825267>catholic lutheran communion</a></li>
<li><a href=http://websites-au.com.au/ktwms/422998422998.php>410 sprint ringtone</a></li>
<li><a href=http://holiday-tuscany.it/xepeu/show.php?pg=386244386244>constable arthur bowen rcmp</a></li>
<li><a href=http://faheysales.com>faheysales.com</a></li>
<li><a href=http://theworldsinmotion.com/qhnrs/show.php?pg=814408814408>1010 deere</a></li>
<li><a href=http://1virgins.net>1virgins.net</a></li>
<li><a href=http://groupe-sodesi.com/exmoj/show.php?pg=490026490026>fannie mae freddy mac contributions</a></li>
<li><a href=http://mkris.dk/ylrum/show.php?pg=819269819269>franchising em portugal</a></li>
<li><a href=http://tuepaid.com>tuepaid.com</a></li>
<li><a href=http://larols.com/iaeca/show.php?pg=126486126486>kosovo 2007</a></li>
<li><a href=http://thomasboppart.com/bdsis/show.php?pg=592109592109>atv lifts</a></li>
<li><a href=http://thetradesmansentrance.com/fenwp/show.php?pg=720097720097>donne francesi</a></li>
<li><a href=http://analdreamhouse.com>analdreamhouse.com</a></li>
<li><a href=http://oaxacamiel.com/osdfl/show.php?pg=719753719753>camp longhorn burnet texas</a></li>
<li><a href=http://larsoncatholicart.com/qouri/show.php?pg=276083276083>appointment of nj fee arbitration panel</a></li>
<li><a href=http://meridianhomesinc.com/ibeex/show.php?pg=840437840437>dave duval</a></li>
<li><a href=http://blitzusa.com>blitzusa.com</a></li>
<li><a href=http://gatewaytrust.org.uk/tmheg/show.php?pg=237498237498>ct state varmint</a></li>
<li><a href=http://citycleanersandlaundry.com/ujnia/show.php?pg=499033499033>8n tractor liner sealer</a></li>
<li><a href=http://nauticalninja.com/englj/show.php?pg=329266329266>goode modified t tube</a></li>
<li><a href=http://toysandjoys.com>toysandjoys.com</a></li>
<li><a href=http://eilas.web.surftown.dk/mkcgw/show.php?pg=202786202786>ccompare garmin nuvi 650 w</a></li>
<li><a href=http://lizzysloops.com/ejfrf/show.php?pg=610744610744>download singapore prosperity mcdonalds</a></li>
<li><a href=http://warral.com/ifefz/show.php?pg=290898290898>indentured servants carolinas</a></li>
<li><a href=http://serendipitousdiscoveries.com/iqeup/show.php?pg=126014126014>.32 h r magnum origin</a></li>
<li><a href=http://patriciatribastone.com/hufye/show.php?pg=264512264512>conyers ga marrige licence</a></li>
<li><a href=http://moslink-consulting.com.au/ewqqo/show.php?pg=812403812403>aix ntp client</a></li>
<li><a href=http://maylan.ca/kiwrh/show.php?pg=237996237996>2008 mwr award ft knox</a></li>
<li><a href=http://adityavyas.com/somih/show.php?pg=213395213395>are miscarriages genetic</a></li>
<li><a href=http://marichter.com/ftkoy/show.php?pg=554443554443>baroque christmas ornament</a></li>
<li><a href=http://thedibsregistry.com/ixerz/show.php?pg=222346222346>digital photography cameras exilim</a></li>
<li><a href=http://coloradocepc.com/ecdto/show.php?pg=673855673855>great midwestern cafe in clive</a></li>
<li><a href=http://helmetpeakfire.org/cucyt/show.php?pg=424848424848>accounting jobs in saudi arabia</a></li>
<li><a href=http://strombergs.se/nijmf/show.php?pg=606140606140>australian rules football standings</a></li>
<li><a href=http://jidistributors.in/ngrhl/show.php?pg=186776186776>brian pitts recruiter birmingham alabama</a></li>
<li><a href=http://marcbertrand.biz/mpciu/show.php?pg=232481232481>pepe biondi</a></li>
<li><a href=http://providingmignonne.com>providingmignonne.com</a></li>
<li><a href=http://cyfairband.org/wbezi/show.php?pg=399640399640>5w marine vhf maximum range</a></li>
<li><a href=http://nightofthesnowmen.com/npein/show.php?pg=681173681173>abs pipe plant grower</a></li>
<li><a href=http://karamesinisphotography.biz/rgaji/show.php?pg=558576558576>ablert pike ar</a></li>
<li><a href=http://shmula.com>shmula.com</a></li>
<li><a href=http://andyhebberd.co.uk/fedge/show.php?pg=303238303238>1984 nba all star game</a></li>
<li><a href=http://lunabellboutique.com/jskaq/show.php?pg=552143552143>cost to attend grantham university</a></li>
<li><a href=http://ruracing.com.au/ojqeq/show.php?pg=656578656578>addition of probability distributions</a></li>
<li><a href=http://leclubfur.com/lecwg/show.php?pg=243729243729>anonymous toolbar</a></li>
<li><a href=http://usadataprocessing.com/etyag/show.php?pg=143600143600>edward james olmos selena</a></li>
<li><a href=http://chiropraxis.net.au/uizpy/show.php?pg=199780199780>animal miracles singing horse</a></li>
<li><a href=http://vctalent.com/jyfsj/show.php?pg=634678634678>50s satin jacket</a></li>
<li><a href=http://markjump.co.uk/kbhth/show.php?pg=759922759922>baumannii botanical</a></li>
</font><dsflfdg456khwwe></body></html>