<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Bilal Shouman</title><subtitle type="html">DotNetting</subtitle><id>http://weblogs.asp.net/bilalshouman/atom.aspx</id><link rel="alternate" type="text/html" href="http://weblogs.asp.net/bilalshouman/default.aspx" /><link rel="self" type="application/atom+xml" href="http://weblogs.asp.net/bilalshouman/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2008-10-14T00:26:00Z</updated><entry><title>Validating Recaptcha using Client-Side Web Service Calls</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/bilalshouman/archive/2009/05/06/validating-recaptcha-using-client-side-web-service-calls.aspx" /><id>http://weblogs.asp.net/bilalshouman/archive/2009/05/06/validating-recaptcha-using-client-side-web-service-calls.aspx</id><published>2009-05-06T09:27:00Z</published><updated>2009-05-06T09:27:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://recaptcha.net" mce_href="http://recaptcha.net"&gt;reCAPTCHA&lt;/a&gt; is a free CAPTCHA service that helps to digitize books, newspapers and old time radio shows.&lt;/p&gt;  &lt;p&gt;Interactive Web applications may need to dynamically create the reCAPTCHA widget in response to user input. To support such applications, RECAPTCHA offers an AJAX API.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;Heres a simple Demo on how to create and validate recaptcha using clientside web service call&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;lt;script type="text/javascript" src="&lt;a href="http://api.recaptcha.net/js/recaptcha_ajax.js%22" mce_href="http://api.recaptcha.net/js/recaptcha_ajax.js&amp;quot;"&gt;http://api.recaptcha.net/js/recaptcha_ajax.js"&lt;/a&gt;&amp;gt;&amp;lt;/script&amp;gt;     &lt;br&gt;&amp;lt;script src="Scripts/jquery-1.2.6.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;lt;script type="text/javascript"&amp;gt;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(document).ready(function() {&amp;nbsp;&amp;nbsp; showRecaptcha('recap') ;&amp;nbsp;&amp;nbsp;&amp;nbsp; }); &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function GetWebService()    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return DemoProject.Services.WebService1;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function showRecaptcha(element) {    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var RecaptchaOptions = {     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; theme: 'custom',     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lang: 'en',     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; custom_theme_widget: 'recaptcha_widget'     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Recaptcha.create("xxxxxxxxxxxxxxxxxxxx", element, RecaptchaOptions);     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RecaptchaStr_en.play_again = "replay";     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RecaptchaStr_en.cant_hear_this = "can't hear";     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function ValidateRecaptcha() {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetWebService().ValidateRecaptcha(Recaptcha.get_challenge(),&amp;nbsp; Recaptcha.get_response(), onValidateRecaptchaSuccess, onValidateRecaptchaFailed);     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function onValidateRecaptchaSuccess(ret) {    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (ret == true)     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert('success');     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert('failed');&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Reload recaptcha in case it fails    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Recaptcha.reload();     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; function onValidateRecaptchaFailed(ret) {    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alert('an error has occured');&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }     &lt;br&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;//Add a scriptmanager to your page&lt;/p&gt;  &lt;p&gt;&amp;lt;asp:ScriptManager ID="ScriptManager1" runat="server"&amp;gt;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Services&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:ServiceReference Path="~/Services/WebService1.asmx" /&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Services&amp;gt;     &lt;br&gt;&amp;lt;/asp:ScriptManager&amp;gt; &lt;/p&gt;  &lt;p&gt;&amp;lt;div id="recap"&amp;gt;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="recaptcha_widget" style='display: block'&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span&amp;gt;Please type in both words separated by a space. Words are not     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case-sensitive.&amp;lt;/span&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="recaptcha_only_if_image"&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span&amp;gt;Having trouble? &amp;lt;a href="javascript:Recaptcha.switch_type('audio')"&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listen&amp;lt;/a&amp;gt; to an audio captcha or &amp;lt;a href="javascript:Recaptcha.reload()"&amp;gt;load&amp;lt;/a&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a different image.&amp;lt;/span&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="recaptcha_only_if_audio"&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href="javascript:Recaptcha.switch_type('image')"&amp;gt;Go back&amp;lt;/a&amp;gt;to the image, or     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href="javascript:Recaptcha.reload()"&amp;gt;load&amp;lt;/a&amp;gt; a different audio captcha     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id="recaptcha_image"&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class="recaptcha_only_if_incorrect_sol"&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Incorrect please try again&amp;lt;/div&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span class="recaptcha_only_if_image"&amp;gt;Enter the words above:&amp;lt;/span&amp;gt; &amp;lt;span class="recaptcha_only_if_audio"&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Enter the words you hear:&amp;lt;/span&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type="text" id="recaptcha_response_field" name="recaptcha_response_field"&amp;nbsp; /&amp;gt;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;     &lt;br&gt;&amp;lt;/div&amp;gt;     &lt;br&gt;&amp;lt;input type="button" value="validate" onclick="ValidateRecaptcha();"&amp;nbsp; /&amp;gt;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;//WebService1.asmx&lt;/p&gt;  &lt;p&gt;   &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [WebMethod(true)]     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [System.Web.Script.Services.ScriptMethod()]     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private bool ValidateRecapatcha(string challengeValue, string responseValue)     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Recaptcha.RecaptchaValidator captchaValidtor = new Recaptcha.RecaptchaValidator     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PrivateKey = "xxxxxxxxxxxxxxxxxxxx",     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RemoteIP = HttpContext.Current.Request.UserHostAddress,     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Challenge = challengeValue,     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response = responseValue     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Recaptcha.RecaptchaResponse recaptchaResponse = captchaValidtor.Validate();     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return recaptchaResponse.IsValid;     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception)     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //log the error &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }     &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;HTH&lt;/p&gt;  &lt;p&gt;Regards&lt;/p&gt;&lt;p&gt;Bilal Shouman &lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7074676" width="1" height="1"&gt;</content><author><name>jrice</name><uri>http://weblogs.asp.net/members/jrice.aspx</uri></author><category term="Tips&amp;amp;Tricks" scheme="http://weblogs.asp.net/bilalshouman/archive/tags/Tips_2600_amp_3B00_Tricks/default.aspx" /><category term="Ajax" scheme="http://weblogs.asp.net/bilalshouman/archive/tags/Ajax/default.aspx" /></entry><entry><title>LINQ to SQL Debug Visualizer</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/bilalshouman/archive/2009/02/17/linq-to-sql-debug-visualizer.aspx" /><id>http://weblogs.asp.net/bilalshouman/archive/2009/02/17/linq-to-sql-debug-visualizer.aspx</id><published>2009-02-17T13:16:00Z</published><updated>2009-02-17T13:16:00Z</updated><content type="html">&lt;p&gt;Add LINQ to SQL Debug Visualizer to your VS2008, &lt;a href="http://www.scottgu.com/blogposts/linqquery/SqlServerQueryVisualizer.zip" mce_href="http://www.scottgu.com/blogposts/linqquery/SqlServerQueryVisualizer.zip"&gt;here&lt;/a&gt; is a link for the add-in.    &lt;br&gt;The download contains both a binary .dll assembly version of the visualizer (within the \bin\debug directory below), as well as all of the source code for the visualizer.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;To install the LINQ to SQL debug visualizer, follow the below steps:&lt;/p&gt;  &lt;p&gt;1) Shutdown all running versions of Visual Studio 2008&lt;/p&gt;  &lt;p&gt;2) Copy the &lt;b&gt;SqlServerQueryVisualizer.dll&lt;/b&gt; assembly from the &lt;b&gt;\bin\debug\&lt;/b&gt; directory in the .zip download above into your local &lt;b&gt;\Program Files\Microsoft Visual Studio 9.0\Common7\Packages\Debugger\Visualizers\&lt;/b&gt; directory&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;Regards&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6910844" width="1" height="1"&gt;</content><author><name>jrice</name><uri>http://weblogs.asp.net/members/jrice.aspx</uri></author><category term=".NET" scheme="http://weblogs.asp.net/bilalshouman/archive/tags/.NET/default.aspx" /><category term="Tips&amp;amp;Tricks" scheme="http://weblogs.asp.net/bilalshouman/archive/tags/Tips_2600_amp_3B00_Tricks/default.aspx" /></entry><entry><title>Visual Studio shortcuts</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/bilalshouman/archive/2008/11/26/visual-studio-shortcuts.aspx" /><id>http://weblogs.asp.net/bilalshouman/archive/2008/11/26/visual-studio-shortcuts.aspx</id><published>2008-11-26T13:09:00Z</published><updated>2008-11-26T13:09:00Z</updated><content type="html">&lt;p&gt;A shortcut I was searching for along time CTRL + "M" + "M"&lt;/p&gt;  &lt;p&gt;This one will collapse the region your cursor is at whether its a method, namespace or whatever for collapsing code blocks, regions and methods. The first will collapse only the block/method or region your cursor is at while the second will collapse the entire region you are at.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;Here's a reference for more &lt;a href="http://www.dev102.com/2008/05/06/11-more-visual-studio-shortcuts-you-should-know/" mce_href="http://www.dev102.com/2008/05/06/11-more-visual-studio-shortcuts-you-should-know/"&gt;Visual Studio Shortcuts&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy :)&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6755112" width="1" height="1"&gt;</content><author><name>jrice</name><uri>http://weblogs.asp.net/members/jrice.aspx</uri></author><category term="Tips&amp;amp;Tricks" scheme="http://weblogs.asp.net/bilalshouman/archive/tags/Tips_2600_amp_3B00_Tricks/default.aspx" /><category term="Visual Studio" scheme="http://weblogs.asp.net/bilalshouman/archive/tags/Visual+Studio/default.aspx" /></entry><entry><title>TFS Helper Class</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/bilalshouman/archive/2008/11/20/tfs-helper-class.aspx" /><id>http://weblogs.asp.net/bilalshouman/archive/2008/11/20/tfs-helper-class.aspx</id><published>2008-11-20T15:15:00Z</published><updated>2008-11-20T15:15:00Z</updated><content type="html">&lt;p&gt;&lt;font size="3"&gt;&lt;b&gt;A helper class that might help, when you are developing with TFS:&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;using System;   &lt;br&gt;using System.Collections.Generic;    &lt;br&gt;using Microsoft.TeamFoundation.WorkItemTracking.Client;    &lt;br&gt;using System.Net;    &lt;br&gt;using Microsoft.TeamFoundation.Client; &lt;/p&gt;  &lt;p&gt;namespace Utilities   &lt;br&gt;{    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class TFSHelper    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private WorkItemStore MyStore { get; set; } &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public TFSHelper()   &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NetworkCredential cred = new NetworkCredential("userName", "password", "domain");    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TeamFoundationServer tfs = new TeamFoundationServer("serverName", cred);    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tfs.EnsureAuthenticated();    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyStore = (WorkItemStore)tfs.GetService(typeof(WorkItemStore));    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;   &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Get AllowedValues by workItemId and fieldName    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="workItemId"&amp;gt;&amp;lt;/param&amp;gt;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;param name="FieldName"&amp;gt;&amp;lt;/param&amp;gt;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public AllowedValuesCollection GetAllowedValues(int workItemId, string FieldName)    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WorkItem WI = MyStore.GetWorkItem(workItemId);    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AllowedValuesCollection states = WI.Fields[FieldName].AllowedValues;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return states;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;  &lt;p&gt;   &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public WorkItemCollection GetWorkItems(string queryName, string projectName)    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Project project = MyStore.Projects[projectName];    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dictionary&amp;lt;string, string&amp;gt; values = new Dictionary&amp;lt;string, string&amp;gt;();    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; values.Add("project", projectName); &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (StoredQuery projectQuery in project.StoredQueries)   &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (projectQuery.Name == queryName)    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WorkItemCollection workItems = MyStore.Query(projectQuery.QueryText);    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return workItems;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new Exception("Query does not exists");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;  &lt;p&gt;   &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void UpdateWorkItem(int workItemId, string Description, string tag)    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WorkItem WI = MyStore.GetWorkItem(workItemId);    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WI.Open();    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WI.Fields["Description"].Value = Description;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WI.Fields["tag"].Value = tag;    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WI.Save();    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }    &lt;br&gt;}&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;Regards&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6748401" width="1" height="1"&gt;</content><author><name>jrice</name><uri>http://weblogs.asp.net/members/jrice.aspx</uri></author><category term="Team System" scheme="http://weblogs.asp.net/bilalshouman/archive/tags/Team+System/default.aspx" /></entry><entry><title>Binding ASP.NET TreeView</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/bilalshouman/archive/2008/11/11/binding-asp-net-treeview.aspx" /><id>http://weblogs.asp.net/bilalshouman/archive/2008/11/11/binding-asp-net-treeview.aspx</id><published>2008-11-11T12:30:08Z</published><updated>2008-11-11T12:30:08Z</updated><content type="html">&lt;p&gt;A great post written by my friend &lt;a href="http://varjabedian.net"&gt;Ralph&lt;/a&gt; about binding asp.net treeview&lt;/p&gt;  &lt;p&gt;check it out: &lt;a href="http://varjabedian.net/archive/2008/04/22/binding-asp.net-treeview-to-a-dataset-or-an-objectdatasource.aspx"&gt;Binding ASP.NET TreeView to a DataSet or an ObjectDataSource&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Regards&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6729323" width="1" height="1"&gt;</content><author><name>jrice</name><uri>http://weblogs.asp.net/members/jrice.aspx</uri></author><category term=".NET" scheme="http://weblogs.asp.net/bilalshouman/archive/tags/.NET/default.aspx" /></entry><entry><title>a Great loss to TELEPHONE.com team, A GREAT WIN TO the blue monster</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/bilalshouman/archive/2008/10/31/a-great-loss-to-telephone-com-team-a-great-win-to-the-blue-monster.aspx" /><id>http://weblogs.asp.net/bilalshouman/archive/2008/10/31/a-great-loss-to-telephone-com-team-a-great-win-to-the-blue-monster.aspx</id><published>2008-10-31T09:27:24Z</published><updated>2008-10-31T09:27:24Z</updated><content type="html">&lt;p&gt;Today my teammate and my friend, &lt;a href="http://wessamzeidan.net/cs/blog/default.aspx"&gt;[MVP] Wessam Zeidan&lt;/a&gt;, will leave &lt;a href="http://www.telephone.com"&gt;Telephone.com&lt;/a&gt; to join Microsoft. It's a huge loss for &lt;a href="http://www.telephone.com"&gt;Telephone.com&lt;/a&gt; team. Wessam is a great guy, with a huge amount of technical information. We are going to miss him, and we all wish him a good luck.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6713898" width="1" height="1"&gt;</content><author><name>jrice</name><uri>http://weblogs.asp.net/members/jrice.aspx</uri></author></entry><entry><title>Rosario VS2010</title><link rel="alternate" type="text/html" href="http://weblogs.asp.net/bilalshouman/archive/2008/10/14/rosario-vs2010.aspx" /><id>http://weblogs.asp.net/bilalshouman/archive/2008/10/14/rosario-vs2010.aspx</id><published>2008-10-13T21:26:00Z</published><updated>2008-10-13T21:26:00Z</updated><content type="html">&lt;div id="main-wrapper"&gt;&lt;div class="main section" id="main"&gt;&lt;div class="widget Blog" id="Blog1"&gt;&lt;div class="blog-posts hfeed"&gt;&lt;div class="post hentry"&gt;

&lt;div class="post-body entry-content"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="post hentry"&gt;Reveals extensive enhancements for simplified application 
life-cycle management, provides sneak peek at all key focus areas for Visual 
Studio 2010("Rosario") and the .NET Framework 4.0.&lt;br&gt;&lt;br&gt;&lt;br&gt;Stay tuned to &lt;a href="http://channel9.msdn.com/VisualStudio/"&gt;http://channel9.msdn.com/VisualStudio/&lt;/a&gt;&amp;nbsp; 
for all of the action&lt;br&gt;&lt;br&gt;&lt;div class="post-body entry-content"&gt;&lt;div dir="ltr"&gt;&lt;a href="http://jquery.com/"&gt;&lt;/a&gt;&lt;br&gt;Regards&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;!-- spacer for skins that want sidebar and main to be the same height--&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6679166" width="1" height="1"&gt;</content><author><name>jrice</name><uri>http://weblogs.asp.net/members/jrice.aspx</uri></author><category term=".NET" scheme="http://weblogs.asp.net/bilalshouman/archive/tags/.NET/default.aspx" /></entry></feed>