<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Omar AL Zabir (MVP)</title><subtitle type="html" /><id>http://dotnetusergroup.com/blogs/omar/atom.aspx</id><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/default.aspx" /><link rel="self" type="application/atom+xml" href="http://dotnetusergroup.com/blogs/omar/atom.aspx" /><generator uri="http://communityserver.org" version="2.0.60217.2664">Community Server</generator><updated>2006-09-23T09:30:41Z</updated><entry><title>Eat cornflakes, use Pageflakes</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2007/01/10/381.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2007/01/10/381.aspx</id><published>2007-01-10T10:46:10Z</published><updated>2007-01-10T10:46:10Z</updated><content type="html">This is what I do every morning when I wake up. I take cornflakes and milk in a bowl and start my laptop and visit my "Reading" page. I eat cornflakes and read my Pageflakes page:   This gives me daily nutrition for both my body and mind. Start Page is a really good productivity tool for infotainment. It saves me from going to all these sites in order to see what's new. I read news feeds, stories from Digg, new bookmarks from Del.icio.us -&amp;nbsp;all from the same page. It saves so much of my time...(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2007/01/10/381.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=381" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>Make a surveillance application which captures desktop and emails you as attachment</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2007/01/07/378.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2007/01/07/378.aspx</id><published>2007-01-07T17:17:21Z</published><updated>2007-01-07T17:17:21Z</updated><content type="html">Some time back I needed to capture a certain computers desktop in order to find out what that user is doing every day. So, I made a .NET 2.0 Winforms Application which stays on system tray (optional) and capture the desktop in given time&amp;nbsp;interval (say every 60 secs)&amp;nbsp;and emailed the captured images to me as message attachment (say every 30 mins). It ensures the captures are small enough and embedded inside HTML email so that I don't need to open hundreds of attachments and see the screenshots....(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2007/01/07/378.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=378" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>Make a surveilence application which captures desktop and emails you as attachment</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2007/01/07/377.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2007/01/07/377.aspx</id><published>2007-01-07T16:19:07Z</published><updated>2007-01-07T16:19:07Z</updated><content type="html">...(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2007/01/07/377.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=377" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>Build Google IG like AJAX Start Page in 7 days using ASP.NET AJAX and .NET 3.0</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2007/01/04/376.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2007/01/04/376.aspx</id><published>2007-01-04T08:38:35Z</published><updated>2007-01-04T08:38:35Z</updated><content type="html">I will show you how I built a start page similar to Google IG in 7 nights using ASP.Net Ajax, .NET 3.0, Linq, DLinq and XLinq. I have logged my day to day development experience in this article and documented all the technical challenges, interesting discoveries and important design &amp;amp; architectural decisions. You will find the implementation quite close to actual Google IG. It has drag &amp;amp; drop enabled widgets, complete personalization of the pages, multi page feature and so on. It's not just...(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2007/01/04/376.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=376" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>What to do when you kill your database with your own hand</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2007/01/02/373.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2007/01/02/373.aspx</id><published>2007-01-02T11:54:50Z</published><updated>2007-01-02T11:54:50Z</updated><content type="html">Couple of months ago, we had an interesting day. It was a bright summer morning. We were all in the office doing our regular work. Developers writing codes, QA testing the site. We&amp;nbsp;were all&amp;nbsp;happy and smiling as there was no major bug. Some were drinking coffee and having nice chit chat. Our honorable Sys Admin came to office as usual late after noon. We all welcomed him remembering his day and night inhuman effort to keep our systems up and running fighting against germs and bacteria. As...(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2007/01/02/373.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=373" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>Executing one workflow from another synchronously</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2006/12/27/367.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2006/12/27/367.aspx</id><published>2006-12-27T15:41:15Z</published><updated>2006-12-27T15:41:15Z</updated><content type="html">The InvokeWorkflow activity which comes with Workflow Foundation (.NET 3.0)&amp;nbsp;executes a workflow asynchronously. So, if you are calling a workflow from ASP.NET which in turn calls another workflow, the second workflow is going to be terminated prematurely instead of executing completely. The reason is, ManualWorkflowSchedulerService will execute the first workflow synchronously and then finish the workflow execution and close down. If you used InvokeWorkflow activity in order to run another workflow...(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2006/12/27/367.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=367" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>Database connection string wrong in MSDN Subscription website</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2006/12/17/355.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2006/12/17/355.aspx</id><published>2006-12-17T14:54:19Z</published><updated>2006-12-17T14:54:19Z</updated><content type="html">This is one of those moments in history which you must be really lucky to witness. Can you believe MSDN actually had a connection string problem in their website which were exposed wide open to the public? Also they deployed the site in debug mode in order to see the error. Moreover, they actually turned on showing remote errors. Must have been really hard to find what was wrong with the site.   So, what we learn from here?  Don't deploy production site in debug mode  Do not set "off" to &amp;lt;customErrors&amp;gt;....(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2006/12/17/355.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=355" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>Automate website deployment using Powershell</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2006/12/15/353.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2006/12/15/353.aspx</id><published>2006-12-15T08:59:00Z</published><updated>2006-12-15T08:59:00Z</updated><content type="html">I published an article which automates website deployment.  http://www.codeproject.com/dotnet/DeploySite.asp  The Powershell script does the following for you:  · Maintains different configuration information for different deployments. For example, different connection strings for development servers and production servers (one or more production servers).  · Creates a deployment folder using the deployment date, time, and version so that you have a separate folder for each deployment and can keep...(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2006/12/15/353.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=353" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>Reduce web site build time</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2006/12/07/343.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2006/12/07/343.aspx</id><published>2006-12-07T16:43:32Z</published><updated>2006-12-07T16:43:32Z</updated><content type="html">When you have a pretty large web site in Visual Studio 2005, the site build time grows dramatically and it becomes very difficult to change code and then hit F5 (or Ctrl+Shift+B) in order to see if the project builds properly or not. In Pageflakes, we have a giant web site. It takes so long to build the site that we generally issue the build command, go to kitchen and make a cup of tea, drink it, come back and see the site still building. Generally when we do this 20 to 30 times per day,&amp;nbsp;we...(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2006/12/07/343.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=343" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>ASP.net Ajax under the hood secrets</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2006/12/01/330.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2006/12/01/330.aspx</id><published>2006-12-01T16:48:27Z</published><updated>2006-12-01T16:48:27Z</updated><content type="html">I have published a new article in codeproject: ASP.net Ajax under the hood secrets You will find the following tricks on it:  Batch call advantages and disadvantages  Implement auto retry in all web method call by modifying Ajax core framework  Implement queue based web method call in order to prevent browser from getting stuck with too many Ajax calls  Caching web method response, fix bug in ASP.net 2.0 cache header problem  How slow is Http Post, capture data transfer over the wire and see Some...(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2006/12/01/330.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=330" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>MVP Award</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2006/11/03/299.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2006/11/03/299.aspx</id><published>2006-11-04T04:55:05Z</published><updated>2006-11-04T04:55:05Z</updated><content type="html">I have been awarded MVP Award 2007 on Visual C# again. This is my second year. This time the gifts are realy nice. This program is getting better and better every year. The level of support and appreciation MVPs receive from Microsoft by this award is phenomenal. Free MSDN Universal Susbcription, Visual Studio Team System, TechEd 2006 DVDs, woohoo! You might be thinking, you did nothing for the community! How come you get this award? Here's what I did: Ajax Series  Beginning Atlas series: Why Atlas?...(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2006/11/03/299.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=299" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>Atlas 7: Caching web service response on browser and save bandwidth significantly</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2006/09/23/262.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2006/09/23/262.aspx</id><published>2006-09-23T16:52:01Z</published><updated>2006-09-23T16:52:01Z</updated><content type="html"> Browser can cache images, javascripts, css files on users hard drive and it can also cache Xml Http calls if the call is a Http Get. The cache is based on Url. If it's the same Url and it's cached on the computer then the response is loaded from cache, not from the server when it is requested again. Basically, browser can cache any Http Get call and return cached data based on Url. If you make a Xml Http call as Http GET and server returns some special header which informs the browser to cache the...(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2006/09/23/262.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=262" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>Atlas 6: When 'this' is not really 'this'</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2006/09/23/261.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2006/09/23/261.aspx</id><published>2006-09-23T16:47:16Z</published><updated>2006-09-23T16:47:16Z</updated><content type="html"> Atlas callbacks are not executed on the same context where they are called. For ex, if you are making a Page method call from a javascript class like this:   function SampleClass()
{
    this.id = 1;
    this.call = function()
    {
        PageMethods.DoSomething( &amp;quot;Hi&amp;quot;, function(result)
        {
            debug.dump( this.id );
        } );
    }
}
What happens when you call the "call" method? Do you get "1" on the debug console? No, you get "null" on the debug console because...(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2006/09/23/261.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=261" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>Atlas 4: Only 2 calls at a time and don't expect any order</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2006/09/23/260.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2006/09/23/260.aspx</id><published>2006-09-23T16:36:46Z</published><updated>2006-09-23T16:36:46Z</updated><content type="html"> Browsers make 2 concurrent AJAX calls at a time to a domain. If you make 5 AJAX calls, browser is going to make 2 calls first, then wait for any one of them to complete and then make another call until all remaining 4 calls are complete. Moreover, you cannot expect calls to execute in the same order as you make the calls. Here's why:  Here you see, call 3's response download is quite big and thus takes longer than Call 5. So, Call 5 actually gets executed before Call 3.  So, the world of HTTP is...(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2006/09/23/260.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=260" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry><entry><title>Atlas 5: Bad calls make good calls timeout</title><link rel="alternate" type="text/html" href="http://dotnetusergroup.com/blogs/omar/archive/2006/09/23/258.aspx" /><id>http://dotnetusergroup.com/blogs/omar/archive/2006/09/23/258.aspx</id><published>2006-09-23T16:30:41Z</published><updated>2006-09-23T16:30:41Z</updated><content type="html"> If 2 http calls somehow get stuck for too long, those two bad calls are going to make some good calls expire too which in the meantime got queued. Here's a nice example: function timeoutTest() { PageMethods.Timeout( { timeoutInterval : 3000, onMethodTimeout: function() { debug.dump("Call 1 timed out"); } } ); PageMethods.Timeout( { timeoutInterval : 3000, onMethodTimeout: function() { debug.dump("Call 2 timed out"); } } ); PageMethods.DoSomething( 'Call 1', { timeoutInterval : 3000, onMethodTimeout:...(&lt;a href="http://dotnetusergroup.comhttp://dotnetusergroup.com/blogs/omar/archive/2006/09/23/258.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://dotnetusergroup.com/aggbug.aspx?PostID=258" width="1" height="1"&gt;</content><author><name>Omar AL Zabir</name><uri>http://dotnetusergroup.com/members/Omar+AL+Zabir.aspx</uri></author></entry></feed>