<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-13892529</atom:id><lastBuildDate>Sun, 28 Aug 2011 20:38:58 +0000</lastBuildDate><category>EJS</category><category>ASP.NET 2.0</category><category>How To</category><category>Microsoft</category><category>javascript</category><category>ASP.</category><category>news</category><category>TRG Tech</category><category>XMLHttpRequest</category><category>.NET2.0</category><category>code samples</category><category>AJAX</category><category>Security</category><category>AdWords</category><category>ASP.NET</category><category>respnsive web apps</category><category>presentation</category><category>portfolio</category><category>frameworks</category><category>Resources</category><category>Chrome</category><category>Reverse AJAX</category><category>Patterns n Practices</category><category>static code analysis</category><category>FxCop</category><category>tips n tricks</category><category>video</category><category>performance</category><category>HTTP Streaming</category><category>Events</category><category>Comet</category><category>.NET 3.5</category><category>ExtJS</category><category>code review</category><category>charts</category><category>best practices</category><category>Long-Lived-HTTP-Request</category><category>humour</category><category>Server Push</category><category>.NET3.0</category><category>YUI</category><category>Google</category><category>libraries</category><category>LazyHTTP</category><category>ASP.NET AJAX</category><category>web2.0</category><category>about me</category><category>design guidelines</category><category>Getting Started</category><category>ASP.NET 3.5</category><title>Zeeshan Qadir</title><description>Zeeshan Qadir is a Solutions Architect at Lebara [http://www.lebara.com].&lt;br&gt;&lt;br&gt;
Zeeshan has got over 7 years of professional experience in engineering sophisticated applications ranging from web 2.0 to enterprise level call centre centric software products. His areas of interest include analysis &amp;amp; architecture, software design, software process improvement as well as addressing security, performance, scalability, extensibility &amp;amp; usability concerns in application design and development.</description><link>http://zeeshanqadir.blogspot.com/</link><managingEditor>noreply@blogger.com (Zeeshan Qadir)</managingEditor><generator>Blogger</generator><openSearch:totalResults>27</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/zeeshanqadir" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="zeeshanqadir" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-8321579238956580620</guid><pubDate>Sun, 27 Sep 2009 09:34:00 +0000</pubDate><atom:updated>2009-09-27T11:13:02.139+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">about me</category><title>My Personal DNA</title><description>Last year, I took an online test designed by professional psychologists to assess one's personality using quite intuitive techniques.&lt;br/&gt;&lt;br /&gt;The results were quite interesting and detailed. They were surprisingly quite close to my personality as well. It categorized me as a Benevolent Architect and different aspects of my personality depicted by the below coloured boxes. &lt;br/&gt;&lt;br /&gt;Today I happened to see the detailed report of it again and I was once again amazed by the accuracy of the report. The report not only covered who am I, but also provides information regarding what to change if I want to be different. I really wonder how come they can provide such a detailed yet an accurate analysis of one's personality based on the answers to a few dozen of questions. I thought it's worth sharing the summary of the report represented in the form of these coloured boxes.&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;script src="http://personaldna.com/t/?k=fMdtcNqXCsSqjWb-NO-ADCDA-f025&amp;t=Benevolent+Architect"&gt; &lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;Take your mouse on the different coloured boxes above to see the different aspects represented by my personal DNA. &lt;br/&gt;&lt;br /&gt;One must try this test at www.personaldna.com, however sharing the results with other's is a matter of personal choice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-8321579238956580620?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2009/09/personal-dna.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-86300981181541192</guid><pubDate>Sun, 12 Jul 2009 09:31:00 +0000</pubDate><atom:updated>2009-07-15T20:41:08.298+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">news</category><category domain="http://www.blogger.com/atom/ns#">portfolio</category><title>Long Time!!!</title><description>It has been quite some time that I have not been that active on my blog, as I used to be a year back. Now, I am getting back to the routine and have been eagerly waiting to get back to my blog. However, before I get back, I thought it’s a good idea to share what has been going on at my end in the last few months.&lt;br /&gt;&lt;br /&gt;It was back in October 2008 that &lt;a href="http://www.trgworld.com" target="_blank"&gt;my company&lt;/a&gt;’s vice president asked me to be one of the authors of the &lt;a href="http://trgtech.blogspot.com" target="_blank"&gt;official blog of the company&lt;/a&gt;. The aim was to present the technical leadership and technical diversity of the resources we had at the company. So, I decided to start blogging for the company’s blog. The first thing I did was revamping the complete blog so as to have a consistent look and feel of the blog with the &lt;a href="http://www.trgworld.com/trgtech" target="_blank"&gt;company’s website&lt;/a&gt;. Then, I wrote a few articles on &lt;a href="http://trgtech.blogspot.com/2008/10/http-compression-sounds-strange.html" target="_blank"&gt;HTTP Compression&lt;/a&gt;, &lt;a href="http://trgtech.blogspot.com/2008/11/engineering-enterprise-level.html" target="_blank"&gt;Engineering Enterprise Level Applications using Microsoft .NET Framework&lt;/a&gt; and &lt;a href="http://trgtech.blogspot.com/2009/02/user-experience-design-patterns.html" target="_blank"&gt;User Experience Design Patterns&lt;/a&gt;.  The experience was great and the recognition was worth the effort.&lt;br /&gt;&lt;br /&gt;In January 2009, I decided to relocate to London, UK for work. I got Tier 1 in February, left my existing job at TRG TECH; &lt;a href="http://www.trgworld.com" target="_blank"&gt;The Resource Group&lt;/a&gt; in March, moved to UK in April, started working for a multi national MVNO in the name of &lt;a href="http://www.lebara.com" target="_blank"&gt;Lebara&lt;/a&gt; in May 2009. &lt;br /&gt;&lt;br /&gt;So over the past few months there have been quite some transitions going on and I was unable to keep up with my blog. However now I am getting back to it. &lt;br /&gt;&lt;br /&gt;One of the many good things about all these transitions is that my technology spectrum and technical horizon is increasing. Previously I have been working purely on the &lt;a href="http://www.stratasoft.com" target="_blank"&gt;call centre centric software product&lt;/a&gt; development with all the energies channelized in re-engineering a high availability, fault tolerant, scalable, secure and rich interactive solution, but now at my new job at Lebara, I am working more on integration and B2B projects, along with extending and customizing Microsoft’s business management software product range. &lt;br /&gt;&lt;br /&gt;Now you can expect a bit more technical diversity on my blog with some technical articles on Microsoft Dynamics as well, in addition to the .NET and Java Script stuff. Hope you would like it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-86300981181541192?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2009/07/long-time.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-8314864225237087357</guid><pubDate>Wed, 06 May 2009 09:01:00 +0000</pubDate><atom:updated>2009-05-06T11:16:14.820+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">respnsive web apps</category><category domain="http://www.blogger.com/atom/ns#">How To</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET 3.5</category><category domain="http://www.blogger.com/atom/ns#">performance</category><category domain="http://www.blogger.com/atom/ns#">Security</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET AJAX</category><category domain="http://www.blogger.com/atom/ns#">charts</category><category domain="http://www.blogger.com/atom/ns#">web2.0</category><category domain="http://www.blogger.com/atom/ns#">Comet</category><category domain="http://www.blogger.com/atom/ns#">EJS</category><category domain="http://www.blogger.com/atom/ns#">ExtJS</category><category domain="http://www.blogger.com/atom/ns#">Google</category><title>Google Analytics reveal the 'Top 7 - Last One Year'</title><description>I have been using Google Analytics for quite some time now to find out some of the hidden facts and a few of the interesting user trends on this blog.&lt;br /&gt;&lt;br /&gt;Today I generated a report of the most visited blog entries for the last one year and found that people love to read about ExtJS and other web 2.0 stuff; my blog is getting the attraction of a lot of such readers.&lt;br /&gt;&lt;br /&gt;Here are the rankings - you might be interested in reading a few of them as well!&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://zeeshanqadir.blogspot.com/2007/11/extjs-20-making-web-applications-more.html" target="_blank"&gt;ExtJS 2.0 - Making Web applications more responsive with minimal network traffic!&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://zeeshanqadir.blogspot.com/2008/08/how-to-setup-intellisense-for-extjs-in.html" target="_blank"&gt;How To: Setup JavaScript IntelliSense for ExtJS in Visual Studio 2008 (SP1)&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://zeeshanqadir.blogspot.com/2008/01/aspnet-35-extensions-preview-dynamic.html" target="_blank"&gt;ASP.NET 3.5 Extensions Preview: Dynamic Data Websites Part 1, Engineering Data Centric Web Application from End-to-End&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://zeeshanqadir.blogspot.com/2007/11/comet-futuristic-view-of-web.html" target="_blank"&gt;Comet: The futuristic view of web applications – A food for thought!&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://zeeshanqadir.blogspot.com/2007/12/engineering-secure-web-applications-in.html" target="_blank"&gt;Engineering Secure Web Apps in ASP.NET 2.0&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://zeeshanqadir.blogspot.com/2008/01/firebug-yslow-for-mozilla-firefox-must.html" target="_blank"&gt;FireBug + YSlow for Mozilla Firefox: A must use tool for all Web2.0 developers&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://zeeshanqadir.blogspot.com/2008/06/emprise-javascript-charts-with-aspnet.html" target="_blank"&gt;Emprise JavaScript Charts with ASP.NET AJAX&lt;/a&gt; &lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-8314864225237087357?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2009/05/google-analytics-reveal-top-7-last-one.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-2360789286227247754</guid><pubDate>Tue, 18 Nov 2008 17:08:00 +0000</pubDate><atom:updated>2008-11-18T17:25:57.595Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">news</category><category domain="http://www.blogger.com/atom/ns#">TRG Tech</category><title>Now blogging at the official trg tech blog</title><description>I have recently started blogging on the official blog of my company; &lt;a href="http://www.trgworld.com/trgtech" target="_blank"&gt;trg tech&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;We plan to share the experiences of trg techies at trg tech on the official trg tech blog. Other than the technical stuff, you will also find words from the recruiters and others at trg tech in order to get to know about the lifestyle of trg techies at their very own company i.e. trg tech. &lt;br /&gt;&lt;br /&gt;Hope you would like the posts over there too. Its &lt;a href="http://trgtech.blogspot.com" target="_blank"&gt;http://trgtech.blogspot.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-2360789286227247754?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2008/11/now-blogging-at-official-trg-tech-blog.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-4559726330213417967</guid><pubDate>Wed, 03 Sep 2008 12:19:00 +0000</pubDate><atom:updated>2008-09-03T13:35:47.491+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">web2.0</category><category domain="http://www.blogger.com/atom/ns#">Chrome</category><category domain="http://www.blogger.com/atom/ns#">Google</category><title>Google Chrome – Web Browser for the Next Generation of Web Apps</title><description>&lt;a href="http://www.google.com/chrome" target="_blank"&gt;Google Chrome&lt;/a&gt; is available for download from today!&lt;br /&gt;&lt;br /&gt;It’s a brand new web browser by Google for those who love GMail, Google Docs and other JavaScript centric web applications; applications which have truly proved the very essence of Web as a Platform.&lt;br /&gt;&lt;br /&gt;Google Chrome is yet another examplification of the simplicity and elegancy of Google’s User Interfaces. It’s fast, it’s speedy and it’s yet another innovation on part of Google in terms of its memory management and JavaScript execution. It considers every tab and every website as a separate process. Google has definitely created a benchmark in Web Browsers.&lt;br /&gt;&lt;br /&gt;It has got features that are very useful for Web2.0 Engineers. It has got built in DOM Inspector, JavaScript Debugger, Network Traffic Analyzer, Memory / CPU / Network Profiler so that you can precisely know which web app or web page is taking more memory, CPU or bandwidth. &lt;br /&gt;&lt;br /&gt;Google has not just engineered this whole thing but have presented the whole concept behind it in an equally superb way. Read the full story of Google Chrome at &lt;a href="http://www.google.com/googlebooks/chrome/#" target="_blank"&gt;http://www.google.com/googlebooks/chrome/#&lt;/a&gt; to explore what it actually is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-4559726330213417967?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2008/09/google-chrome-web-browser-for-next.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-9060020452189645038</guid><pubDate>Sun, 17 Aug 2008 07:46:00 +0000</pubDate><atom:updated>2008-08-17T09:25:39.073+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">web2.0</category><category domain="http://www.blogger.com/atom/ns#">How To</category><category domain="http://www.blogger.com/atom/ns#">ExtJS</category><category domain="http://www.blogger.com/atom/ns#">code samples</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET 3.5</category><title>How To: Setup JavaScript IntelliSense for ExtJS in Visual Studio 2008 (SP1)</title><description>One of the much awaited features incorporated in &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=27673C47-B3B5-4C67-BD99-84E525B5CE61&amp;amp;displaylang=en" target="_blank"&gt;Visual Studio 2008 Service Pack 1&lt;/a&gt; is the JavaScript IntelliSense support for 3rd Party JavaScript Frameworks like &lt;a href="http://zeeshanqadir.blogspot.com/2007/11/extjs-20-making-web-applications-more.html" target="_blank"&gt;ExtJS&lt;/a&gt;, jQuery, Prototype etc.&lt;br /&gt;&lt;br /&gt;Now you can add references to your 3rd party libraries in you JavaScript files and JavaScript blocks, and Visual Studio 2008 (on installation of Service Pack 1) will start recognizing the classes and functions defined in those libraries.&lt;br /&gt;&lt;br /&gt;In order to setup ExtJS JavaScript IntelliSense you just need to add the following lines (/// reference tags) in your JavaScript files or script blocks to make it work. (Adjust the relative paths to the two JavaScript files as per your website hierarchy)&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://3.bp.blogspot.com/_EuhYJ6HjTPA/SKfYbUO8VnI/AAAAAAAAAXM/iEzkaQ4epKg/s1600-h/ExtJS+IntelliSense+-+Add+Reference.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5235391055640942194" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_EuhYJ6HjTPA/SKfYbUO8VnI/AAAAAAAAAXM/iEzkaQ4epKg/s400/ExtJS+IntelliSense+-+Add+Reference.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;And here is the outcome; ExtJS based classes are now available in IntelliSense&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://4.bp.blogspot.com/_EuhYJ6HjTPA/SKfY7DOqbHI/AAAAAAAAAXU/TM3XIl9tl1U/s1600-h/ExtJS+IntelliSense+-+Classes.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5235391600832179314" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_EuhYJ6HjTPA/SKfY7DOqbHI/AAAAAAAAAXU/TM3XIl9tl1U/s400/ExtJS+IntelliSense+-+Classes.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;Moreover a variable that’s initialized as with ExtJS based Store is now showing the respective methods of Ext.data.Store class in IntelliSense&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://4.bp.blogspot.com/_EuhYJ6HjTPA/SKfcYriMrmI/AAAAAAAAAXc/3BbBqUBscjk/s1600-h/ExtJS+IntelliSense+-+DataStore+Functions.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5235395408402624098" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_EuhYJ6HjTPA/SKfcYriMrmI/AAAAAAAAAXc/3BbBqUBscjk/s400/ExtJS+IntelliSense+-+DataStore+Functions.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;I have updated the ASP.NET AJAX with ExtJS sample to incorporate this JavaScript IntelliSense feature. You can download the updated code sample from &lt;a href="http://zeeshanqadir.googlepages.com/ExtJSIntelliSenseinVS2008SP1.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;What I can say about this feature is; it is simply a superb addition in Visual Studio feature set and will definitely increase the popularity and penetration of JavaScript based frameworks and libraries.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-9060020452189645038?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2008/08/how-to-setup-intellisense-for-extjs-in.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_EuhYJ6HjTPA/SKfYbUO8VnI/AAAAAAAAAXM/iEzkaQ4epKg/s72-c/ExtJS+IntelliSense+-+Add+Reference.jpg" height="72" width="72" /><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-8054905145613808015</guid><pubDate>Wed, 02 Jul 2008 18:04:00 +0000</pubDate><atom:updated>2008-07-02T19:45:04.862+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET AJAX</category><category domain="http://www.blogger.com/atom/ns#">AJAX</category><category domain="http://www.blogger.com/atom/ns#">TRG Tech</category><category domain="http://www.blogger.com/atom/ns#">presentation</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET 3.5</category><title>TRG Tech Talk Series: “AJAX – Inside Out”</title><description>I gave a presentation at my company in connection to the new Tech Talk series initiated by &lt;a href="http://www.trgworld.com/trgtech" target="_blank"&gt;TRG TECH&lt;/a&gt;. I was honored to be the very first one to have a Tech Talk in this connection. The topic I chose for this first Tech Talk was “AJAX – Inside Out”. The reason for choosing this topic was to build the foundation for our upcoming Tech Talks on engineering rich, interactive user experiences over the web which me and my team will be conducting in a month or so.&lt;br /&gt;&lt;br /&gt;My presentation covered everything related with AJAX including&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Web 2.0&lt;/li&gt;&lt;li&gt;XMLHTTPRequest&lt;/li&gt;&lt;li&gt;Hidden Frames&lt;/li&gt;&lt;li&gt;ASP.NET AJAX&lt;/li&gt;&lt;li&gt;JSON&lt;/li&gt;&lt;li&gt;Programming Model of ASP.NET AJAX&lt;/li&gt;&lt;li&gt;Server Centric Programming Model&lt;/li&gt;&lt;li&gt;Client Centric Programming Model&lt;/li&gt;&lt;li&gt;Trade Offs of the two Programming Models&lt;/li&gt;&lt;li&gt;Supporting tools for Web 2.0 developers for analyzing the network traffic created by your web app, manipulating DOM, styles and other aspects of your web app and browser. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The supporting tools for the debugging and analysis included the following&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;amp;displaylang=en" target="_blank"&gt;Internet Explorer Developer Toolbar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Nikhil Kothari's &lt;a href="http://projects.nikhilk.net/WebDevHelper/" target="_blank"&gt;Web Development Helper&lt;/a&gt; for Internet Explorer&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.getfirebug.com/" target="_blank"&gt;Firebug&lt;/a&gt; for Firefox&lt;/li&gt;&lt;li&gt;&lt;a href="http://developer.yahoo.com/yslow/" target="_blank"&gt;YSlow&lt;/a&gt; for Firebug&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I also gave three demos/code walkthroughs during the course of this presentation one on each of the XMLHttpRequest, UpdatePanel and PageMethods.&lt;br /&gt;&lt;br /&gt;The feedback and response was overwhelming and the hall remained jam packed till the end :)&lt;br /&gt;&lt;br /&gt;You can download my presentation from &lt;a href="http://zeeshanqadir.googlepages.com/AJAXInsideOut.ppt" target="_blank"&gt;here&lt;/a&gt; so as to have a deeper look at it and get better insight of AJAX really from inside out.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-8054905145613808015?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2008/07/trg-tech-talk-series-ajax-inside-out.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-5997907432399065836</guid><pubDate>Sun, 29 Jun 2008 18:24:00 +0000</pubDate><atom:updated>2008-06-29T20:24:54.446+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">AJAX</category><category domain="http://www.blogger.com/atom/ns#">respnsive web apps</category><category domain="http://www.blogger.com/atom/ns#">Resources</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET 3.5</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET AJAX</category><category domain="http://www.blogger.com/atom/ns#">charts</category><category domain="http://www.blogger.com/atom/ns#">web2.0</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">EJS</category><category domain="http://www.blogger.com/atom/ns#">code samples</category><category domain="http://www.blogger.com/atom/ns#">ExtJS</category><category domain="http://www.blogger.com/atom/ns#">libraries</category><title>Emprise JavaScript Charts with ASP.NET AJAX</title><description>&lt;p align="left"&gt;I am a big fan of &lt;a href="http://zeeshanqadir.blogspot.com/2007/11/extjs-20-making-web-applications-more.html" target="_blank"&gt;ExtJS&lt;/a&gt; for engineering rich interactive user interfaces for all the data centric web2.0 based applications, but one of the components that’s missing in ExtJS is the charting component. I consider ExtJS as a comprehensive java script based UI Framework but still they haven’t focused on providing Java Script based charting controls so far.&lt;/p&gt;&lt;p align="left"&gt;Most of the charting controls I came across are server centric and require the chart image to be transmitted to the web browser; others require some plug-in (Flash Player etc) to be installed on every client machine or some other limitation.&lt;/p&gt;&lt;p align="left"&gt;I came across &lt;a href="http://www.ejschart.com/" target="_blank"&gt;EJS Charts (Emprise Java Script Charts)&lt;/a&gt; some time back and found it really useful in fulfilling the gap in the graphical data presentation needs over the web by presenting these charts in an equally responsive fashion like the data.&lt;/p&gt;&lt;p align="left"&gt;The good things about them are &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;They are purely Java Script based charting controls, doesn’t require any plug-in to be installed on client machines&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;They are pretty much interactive; provide features like zooming, mouse hints etc.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Just provide them with the data in java script (arrays, xml, csv) and they will render the specified chart at the client end.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Series can be added to / removed from an already rendered chart so as to get the affect of a continually updating chart.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Minimizes the overall network traffic generated by the web app, they require transfer of just the data between the server and web browser and not the complete chart in image format.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Programming model is fairly simple.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Works with all the modern browsers i.e. Internet Explorer 6 and above, FireFox 1.5 and above etc.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="left"&gt;The bad things about them are&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;They don’t provide extensive range of chart types as provided by other server side charting controls, but I hope that they will mature over the period of time.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;They are not widely spread so far; people are really un-aware that this thing can happen at the client end too.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="left"&gt;Here is the simple sequence of steps you need to follow in order to utilize these web2.0 Java Script based charts in ASP.NET AJAX. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;Call the server method to get the data (e.g. List&amp;lt;keyvaluepair&amp;lt;string,int&amp;gt;&amp;gt;) from the ASP.NET PageMethod (if required, otherwise use the data got from the last call to the server method) and hook the callback for it.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;In the callback function, check if the EJS based 'Chart' object is already defined, if not then define one. The constructor of that EJS Chart takes a div id where it needs to render the generated chart. You can optionally specify other properties in the constructor for the chart in order to customize title, captions, hints, legend, gridlines and other visual and behaviour related properties of the chart. If a series is already added in the previosuly generated chart, remove it so that the new series as per the user selection can be added to the same chart instance.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Transform the data returned from the Server (e.g. List&amp;lt;keyvaluepair&amp;lt;string,int&amp;gt;&amp;gt;) to an ordinary 'Java Script Array' &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Define the EJS based 'Chart Series' (LineSeries, BarSeries or AreaSeries etc) as per the user selection and supply the array you have just created as the datasource for the chart.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Add this 'Chart Series' instance to the 'Chart' instance &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="left"&gt;Here are the images of the charts generated from the &lt;a href="http://zeeshanqadir.googlepages.com/EJSChartingASP_NET.zip" target="_blank"&gt;sample code&lt;/a&gt; I have uploaded for you to have a look at and experiment.&lt;/p&gt;&lt;p align="left"&gt;&lt;a href="http://bp3.blogger.com/_EuhYJ6HjTPA/SGfVQPmiJ6I/AAAAAAAAAUs/_2D6fd7qsjE/s1600-h/EJSChart_LineSeries+ASP_NET.jpg"&gt;&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5217373168374785954" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_EuhYJ6HjTPA/SGfVQPmiJ6I/AAAAAAAAAUs/_2D6fd7qsjE/s400/EJSChart_LineSeries%2BASP_NET.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_EuhYJ6HjTPA/SGfVguTVv2I/AAAAAAAAAU0/hkLVcFR84Uc/s1600-h/EJSChart_BarSeries+ASP_NET.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217373451493687138" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_EuhYJ6HjTPA/SGfVguTVv2I/AAAAAAAAAU0/hkLVcFR84Uc/s400/EJSChart_BarSeries%2BASP_NET.jpg" border="0" /&gt; &lt;/a&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217374006851713314" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_EuhYJ6HjTPA/SGfWBDLAuSI/AAAAAAAAAU8/Ecgdynn0aPE/s400/EJSChart_AreaSeries%2BASP_NET.jpg" border="0" /&gt;&lt;/p&gt;&lt;p&gt;You can download the &lt;a href="http://zeeshanqadir.googlepages.com/EJSChartingASP_NET.zip" target="_blank"&gt;sample code&lt;/a&gt; that uses EJS with ASP.NET AJAX (that present different graphical representations of data based on user selected chart type) from &lt;a href="http://zeeshanqadir.googlepages.com/EJSChartingASP_NET.zip" target="_blank"&gt;here&lt;/a&gt;. Please note that the sample code uses ASP.NET 3.5 (December Extensions Preview) and &lt;a href="http://www.ejschart.com/"&gt;EJS&lt;/a&gt; Personal Edition (EJS personal edition has got a few limitations too, read more about those from &lt;a href="http://www.ejschart.com/pricing.php"&gt;here&lt;/a&gt;). &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-5997907432399065836?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2008/06/emprise-javascript-charts-with-aspnet.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp3.blogger.com/_EuhYJ6HjTPA/SGfVQPmiJ6I/AAAAAAAAAUs/_2D6fd7qsjE/s72-c/EJSChart_LineSeries%2BASP_NET.jpg" height="72" width="72" /><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-2443180858774935266</guid><pubDate>Tue, 22 Apr 2008 05:06:00 +0000</pubDate><atom:updated>2008-04-22T06:20:28.298+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">design guidelines</category><category domain="http://www.blogger.com/atom/ns#">best practices</category><category domain="http://www.blogger.com/atom/ns#">FxCop</category><category domain="http://www.blogger.com/atom/ns#">static code analysis</category><category domain="http://www.blogger.com/atom/ns#">code review</category><title>FxCop – Automated Code Review for .NET Assemblies</title><description>I have been using &lt;a href="http://blogs.msdn.com/fxcop/" target="_blank"&gt;FxCop&lt;/a&gt; on and off, for quite some time now, for the automated static code review of .NET Assemblies for possible design, security and performance issues (inefficient string manipulation / comparisons, unused utility functions, unnecessary casting, security vulnerabilities etc).&lt;br /&gt;&lt;br /&gt;I would recommend it to all those, who want to cross check their .NET Assemblies conformance, with the Microsoft’s Best Practices and Design Guidelines. What it actually does is that, it has a rule base of more than 200 rules organized in different categories, against which it inspects your .NET Assembly. You can selectively check your assembly for performance and security issues or you can specify whether you want to skip the Naming Rules conformance for a particular code analysis run or not.&lt;br /&gt;&lt;br /&gt;Once installed and opened, you only need to do is ‘Add Target’ to your new project; target is the .NET Assembly (dll / exe) you want to inspect. Once you have added the Target(s), press ‘Analyze’ button in FxCop toolbar. Once the analysis is done, it will provide you with a granular report, drilled down to function level for the possible issues in your code. The good thing is that, it won’t only report the issue but will also report the reason and possibly the recommended fix for it!&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://bp3.blogger.com/_EuhYJ6HjTPA/SA1zekMS83I/AAAAAAAAAS8/JxUr2b24CCE/s1600-h/FxCop-AjaxControlToolkit.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5191932914376569714" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_EuhYJ6HjTPA/SA1zekMS83I/AAAAAAAAAS8/JxUr2b24CCE/s400/FxCop-AjaxControlToolkit.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt; Once you will start using it, you will eventually learn from it and will definitely avoid making those mistakes in future development. You can download latest release of &lt;a href="http://blogs.msdn.com/fxcop/" target="_blank"&gt;FxCop&lt;/a&gt; from &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=3389F7E4-0E55-4A4D-BC74-4AEABB17997B&amp;amp;displaylang=en" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-2443180858774935266?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2008/04/fxcop-automated-code-review-for-net.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp3.blogger.com/_EuhYJ6HjTPA/SA1zekMS83I/AAAAAAAAAS8/JxUr2b24CCE/s72-c/FxCop-AjaxControlToolkit.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-6435140929921672527</guid><pubDate>Sat, 09 Feb 2008 14:41:00 +0000</pubDate><atom:updated>2008-02-09T14:44:30.954Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">.NET3.0</category><category domain="http://www.blogger.com/atom/ns#">Getting Started</category><category domain="http://www.blogger.com/atom/ns#">How To</category><category domain="http://www.blogger.com/atom/ns#">.NET 3.5</category><category domain="http://www.blogger.com/atom/ns#">Resources</category><category domain="http://www.blogger.com/atom/ns#">code samples</category><category domain="http://www.blogger.com/atom/ns#">Microsoft</category><title>How To: “Getting Started with C# 3.0”</title><description>Here is my suggested approach on how to get started with C#3.0. This strategy is advised to be followed by those who are seasoned programmers in .NET 1.1 / 2.0, and now they want to get their hands on C#3.0. It’s quite an easy migration as far as the core language enhancements in C#3.0 are concerned. One can get a good know how as well hands on experimentation of the new features in a matter of hours.&lt;br /&gt;&lt;br /&gt;So here go the steps on how to get started with C#3.0.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;C#3.0 Language Specifications &lt;/strong&gt;&lt;br /&gt;Go through the C# 3.0 Language Specifications. It’s just a 26 page document, containing each of the new feature definition as well as the code samples. If you have been working in C# 2.0, you can go through it in a matter of 3 hours.&lt;br /&gt;&lt;br /&gt;I don’t want to reproduce what ever is in the above document, but just to give you an idea that there are only a few additions in C# 3.0 and those are the implicitly typed local variables, extension methods, lambda expressions, object initializes, anonymous types, implicitly typed arrays, query expressions and the expression trees. These additions serve as the foundation for LINQ (Language Integrated Query) and make the code concise.&lt;br /&gt;&lt;br /&gt;You can download the C# 3.0 Language Specifications document from &lt;a href="http://download.microsoft.com/download/9/5/0/9503e33e-fde6-4aed-b5d0-ffe749822f1b/csharp%203.0%20specification.doc" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;C#3.0 Language Enhancements Hands On Lab&lt;br /&gt;&lt;/strong&gt;There is a comprehensive hands on lab exercise outlined by Microsoft, and that’s too isn’t that long, and would only take a few hours to go through and experiment, for a seasoned programmer.&lt;br /&gt;&lt;br /&gt;You can grab the complete script of the Hands on Lab from &lt;a href="http://download.microsoft.com/download/0/e/2/0e255cf3-b11f-44cb-b42c-7d55ed7b556c/CSharp_3.0_Language_Enhancements_Hands_on_Lab.doc" target="_blank"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-6435140929921672527?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2008/02/how-to-getting-started-with-c-30.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-1608023979258125283</guid><pubDate>Fri, 08 Feb 2008 18:21:00 +0000</pubDate><atom:updated>2008-02-09T14:50:46.611Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">news</category><category domain="http://www.blogger.com/atom/ns#">portfolio</category><title>“Best Developer” Award by TRG; The Resource Group</title><description>I have been recently awarded the “Best Developer” accolade by my company, &lt;a href="http://www.trgworld.com/" target="_blank"&gt;TRG; The Resource Group&lt;/a&gt; at the Annual Employee Appreciation Day 2007 on 3rd Feburary 2008.&lt;br /&gt;&lt;br /&gt;It was a total surprise for me and unfortunately I missed the ceremony (was out of town) :(   but still it’s always a good feeling, to be the one amongst the hundreds :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-1608023979258125283?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2008/02/best-developer-award-by-trg-resource.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-1089834915273844777</guid><pubDate>Thu, 17 Jan 2008 08:43:00 +0000</pubDate><atom:updated>2008-01-17T09:10:09.989Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">news</category><category domain="http://www.blogger.com/atom/ns#">Microsoft</category><title>The much awaited .NET Framework source code is finally available</title><description>&lt;p&gt;The source code of .NET Framework is finally available under a &lt;strong&gt;read only reference license&lt;/strong&gt;, enabling programmers to browse the source code and debug their programs more deeply and effectively. &lt;/p&gt;&lt;p&gt;It seems that now the code of .NET Framework is so mature that they are releasing it for public. Let’s see how the proponents of open source perceive it.&lt;br /&gt;&lt;br /&gt;Currently the following libraries have their source code available for browsing and debugging.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;NET Base Class Libraries (including System, System.CodeDom, System.Collections, System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading, etc). &lt;/li&gt;&lt;li&gt;ASP.NET (System.Web, System.Web.Extensions) &lt;/li&gt;&lt;li&gt;Windows Forms (System.Windows.Forms) &lt;/li&gt;&lt;li&gt;Windows Presentation Foundation (System.Windows) &lt;/li&gt;&lt;li&gt;ADO.NET and XML (System.Data and System.Xml) &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;More and more libraries are said to be included in the above list.&lt;/p&gt;&lt;p&gt;You can refer to the the &lt;a href="http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx" target="_blank"&gt;post by Shawn Burke&lt;/a&gt; on how to configure your Visual Studio 2008 to debug the .NET Framework Source Code.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-1089834915273844777?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2008/01/much-awaited-net-framework-source-code.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-1923766540529012680</guid><pubDate>Wed, 09 Jan 2008 11:46:00 +0000</pubDate><atom:updated>2008-04-22T06:06:11.610+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">performance</category><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">tips n tricks</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET AJAX</category><category domain="http://www.blogger.com/atom/ns#">web2.0</category><category domain="http://www.blogger.com/atom/ns#">respnsive web apps</category><title>FireBug + YSlow for Mozilla Firefox: A must use tool for all Web2.0 developers</title><description>I have been very keen in improving the response time of web applications and used to postmortem the web applications from the perspective of their initial load time, overall network traffic created, number of requests sent and the overall network traffic created to perform an action and a number of other parameters.&lt;br /&gt;&lt;br /&gt;In order to perform this postmortem, the Mozilla add on in the name of &lt;a href="http://www.getfirebug.com/" target="_blank"&gt;Firebug&lt;/a&gt; comes in picture and really provide very useful and good enough information on the overall network traffic created, contents of each of the user request / server response, runtime inspection and modification in the CSS, HTML and Javascript of the currently viewed web page, JavaScript Debugger support for the java script statement “debugger;”, DOM Inspector and much more.&lt;br /&gt;&lt;br /&gt;Thus, using this tool (Firebug; Mozilla Firefox Add-on), a Web 2.0 developer can very easily analyze which user action creates how much traffic behind the scenes using AJAX, which user action is performed at the client side, how much requests are generated for each user action, what’s the size of request / response for a user action and other such stuff related with the debugging of Java Script, modification in CSS and DOM Inspection. So, I would recommend every web developer who is involved in evaluating the different UI controls to be used in web applications or other such tasks related to improving the overall user experience of a web application to try this add-on; FireBug on FireFox. A snapshot of this tool, is shown below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://bp2.blogger.com/_EuhYJ6HjTPA/R4S1IhF-5RI/AAAAAAAAASk/_Azn-INX_7Q/s1600-h/Fire+Bug,+Network+Traffic+Analysis.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153443031545734418" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_EuhYJ6HjTPA/R4S1IhF-5RI/AAAAAAAAASk/_Azn-INX_7Q/s400/Fire+Bug,+Network+Traffic+Analysis.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;There is in add-on in FireBug in the name of &lt;a href="http://developer.yahoo.com/yslow/" target="_blank"&gt;YSlow&lt;/a&gt;. That provides information on how to improve the performance of your website. This add-on is by Yahoo Developer Network and automates the verification of all the &lt;a href="http://zeeshanqadir.blogspot.com/2007/09/considerations-for-high-performance.html" target="_blank"&gt;Consideration for High Performance Websites&lt;/a&gt; in this single tool. This not only verifies and ranks the website against the said Best Practices for High Performance websites, but also provides information on what’s wrong and what you can do to improve the performance. A snap shot of the YSlow Addon of Firebug is shown below.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_EuhYJ6HjTPA/R4S1UhF-5SI/AAAAAAAAASs/aMzEo4mmCEY/s1600-h/YSolw,+High+Performance+Website+Analysis,+Ranking+and+REcommendations.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153443237704164642" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_EuhYJ6HjTPA/R4S1UhF-5SI/AAAAAAAAASs/aMzEo4mmCEY/s400/YSolw,+High+Performance+Website+Analysis,+Ranking+and+REcommendations.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Something similar but with relatively lesser features is the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;amp;displaylang=en" target="_blank"&gt;IE Developer Toolbar&lt;/a&gt;, which Internet Explorer centric Web 2.0 developers, should definitely have a look at and experiment with. [Added: 22nd April 2008]&lt;/p&gt;&lt;p&gt;Another easy to use tool out there for Internet Explorer to perform a similar analysis of web applications (a bit buggy on I.E 6 at least on my machine) is the &lt;a href="http://www.nikhilk.net/Project.WebDevHelper.aspx" target="_blank"&gt;Web Development Helper by Nikhil Khotari&lt;/a&gt;. Below is the snapshot of that.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_EuhYJ6HjTPA/R4S1fhF-5TI/AAAAAAAAAS0/QGE1fkHeitg/s1600-h/IE+Web+Dev+Helper.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153443426682725682" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_EuhYJ6HjTPA/R4S1fhF-5TI/AAAAAAAAAS0/QGE1fkHeitg/s400/IE+Web+Dev+Helper.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-1923766540529012680?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2008/01/firebug-yslow-for-mozilla-firefox-must.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp2.blogger.com/_EuhYJ6HjTPA/R4S1IhF-5RI/AAAAAAAAASk/_Azn-INX_7Q/s72-c/Fire+Bug,+Network+Traffic+Analysis.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-2730953473061838860</guid><pubDate>Tue, 08 Jan 2008 18:25:00 +0000</pubDate><atom:updated>2008-01-09T09:59:30.214Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">Getting Started</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">ASP.</category><category domain="http://www.blogger.com/atom/ns#">How To</category><category domain="http://www.blogger.com/atom/ns#">.NET 3.5</category><category domain="http://www.blogger.com/atom/ns#">Resources</category><category domain="http://www.blogger.com/atom/ns#">code samples</category><category domain="http://www.blogger.com/atom/ns#">Microsoft</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET 3.5</category><title>ASP.NET 3.5 Extensions Preview: Dynamic Data Websites Part 1, Engineering Data Centric Web Application from End-to-End</title><description>I hope you have gone through my &lt;a href="http://zeeshanqadir.blogspot.com/2008/01/aspnet-35-extensions-preview.html" target="_blank"&gt;last post&lt;/a&gt; that lists all pre-requisites for this tutorial and have prepared the development environment, on how to get hands on with these tutorials and walkthroughs on the newly added features in ASP.NET 3.5 Extensions Preview.&lt;br /&gt;&lt;br /&gt;Here comes the very first tutorial in the series that’s on the Dynamic Data Websites. The reason for starting the ASP.NET 3.5 Extensions Preview tutorial series with this Dynamic Data Websites feature is to demonstrate how quickly you can engineer a data centric web application with the newly added features of ASP.NET 3.5 Extensions Preview. You will learn that the overall code required to be written by the end developer is reduced to the extent that one merely needs to write a few lines for any custom business rules or any customized view of the data which one may require as per the custom needs.&lt;br /&gt;&lt;br /&gt;The pre-requisite, the portion I will not be covering in this tutorial for engineering a data centric web application from end-to-end is the designing of the database. I will assume that you have your database designed, tables and relationships with Primary and Foreign Keys created. The database I will be using for my tutorials as stated in the last post is the well known, Microsoft provided “Northwind” database.&lt;br /&gt;&lt;br /&gt;So let’s start with the step by step walkthrough, in this part of Dynamic Data Website walkthrough I will be covering on how to engineer a web application with the built-in templates and features as provided by Microsoft in the ASP.NET 3.5 Extensions Preview. In the next post I will demonstrate on how to customize the generated web application by incorporating custom business rules and designing custom views as per the custom needs of your business. So, let’s get started with the step by step procedure.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Create a new website, by clicking the “New Web Site” item in the “File” Menu. A dialog box titled “New Web Site” appears. Select the “Dynamic Data Website” from that “New Web Site” dialog box and set the location for that new Dynamic Data Website. Here I name the website “DDWDemo” i.e. Dynamic Data Website Demo.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_EuhYJ6HjTPA/R4PQFxF-5HI/AAAAAAAAARU/aGDq2d30Iqg/s1600-h/2-New+Dynamic+Data+Website.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153191196138333298" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_EuhYJ6HjTPA/R4PQFxF-5HI/AAAAAAAAARU/aGDq2d30Iqg/s320/2-New+Dynamic+Data+Website.jpg" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A new website containing the files/structure as shown below is created.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_EuhYJ6HjTPA/R4PRCBF-5II/AAAAAAAAARc/Tp8iVog4Wv4/s1600-h/3-Newly+Created+Dynamic+Data+Website.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153192231225451650" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_EuhYJ6HjTPA/R4PRCBF-5II/AAAAAAAAARc/Tp8iVog4Wv4/s320/3-Newly+Created+Dynamic+Data+Website.jpg" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now we need to add database to our web application, for that I create the App_Data folder in my web application and drag n drop the mdf file of the “Northwind” database to it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_EuhYJ6HjTPA/R4PSKhF-5JI/AAAAAAAAARk/5QtLuCy2IrY/s1600-h/4-Add+App_Data+Folder.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153193476765967506" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_EuhYJ6HjTPA/R4PSKhF-5JI/AAAAAAAAARk/5QtLuCy2IrY/s320/4-Add+App_Data+Folder.jpg" border="0" /&gt;&lt;/a&gt; &lt;a href="http://bp0.blogger.com/_EuhYJ6HjTPA/R4PS1RF-5KI/AAAAAAAAARs/EtlsS2j0NIM/s1600-h/5-Database+Added.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153194211205375138" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_EuhYJ6HjTPA/R4PS1RF-5KI/AAAAAAAAARs/EtlsS2j0NIM/s320/5-Database+Added.jpg" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now we have our database added to our web application. I will start with generating the Business Entities for my Northwind database, so that I map my data in the Relational World to my Object Oriented World, and doing so is facilitated by the “LINQ to SQL Classes” feature of the ASP.NET 3.5 Extensions Preview. I will create a new LINQ to SQL Classes instance, which are internally mapped to relational objects, by right clicking on my website and selecting Add New Item. I select the LINQ to SQL Classes template and name it SCM.dbml (here SCM stands for Supply Chain Management and not the Software Configuration Management) and click Add. A prompt appears asking me to automatically put the files in the App_Code folder; I click on ‘Yes’ for it, and my LINQ to SQL Classes files is added in my project. This file provides me an Object Relational Designer through which I can easily generate my DataContext Class as well as the ADO.NET Entity Classes.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_EuhYJ6HjTPA/R4PT9xF-5LI/AAAAAAAAAR0/CFiT00UZdLo/s1600-h/6-LINQ+to+SQL+Classes.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153195456745890994" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_EuhYJ6HjTPA/R4PT9xF-5LI/AAAAAAAAAR0/CFiT00UZdLo/s400/6-LINQ+to+SQL+Classes.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_EuhYJ6HjTPA/R4PUtBF-5MI/AAAAAAAAAR8/y2bT1A0r6iI/s1600-h/7-LINQ+to+SQL+Classes+Added.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153196268494709954" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_EuhYJ6HjTPA/R4PUtBF-5MI/AAAAAAAAAR8/y2bT1A0r6iI/s400/7-LINQ+to+SQL+Classes+Added.jpg" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now what we do is that I double click on my Northwind database in the App_Data folder, it will open the database in the Database Explorer. I expand all the tables under it, select all the tables and drag and drop them on the left pane of the SCM.dbml file, that’s the object relational designer surface to auto generate my Data Classes for all the tables I have dropped on it. It will also automatically create the relationships among the generated classes by improvising them form Primary / Foreign Key Relationships in the Database. You can view the code generated by this action by expanding the SCM.dbml file and browsing the SCM.designer.cs file. The SCM.designer.cs file will contain the definition of SCMDataContext that allows access to all tables and handles the CRUD operations on the Business Entities through LINQ queries, moreover the SCM.designer.cs file contains definition of all the business entities, which are actually the ADO.NET Entities. One thing to note about them is that these generated business entities are defined as partial classes and also provides some extensibility methods (we will learn using them in part 2 of this tutorial).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_EuhYJ6HjTPA/R4PVOxF-5NI/AAAAAAAAASE/AW--V1Z-3bM/s1600-h/8-DataClasses+Created.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153196848315294930" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_EuhYJ6HjTPA/R4PVOxF-5NI/AAAAAAAAASE/AW--V1Z-3bM/s400/8-DataClasses+Created.jpg" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;li&gt;So, by now we have our Business Entities defined which are directly mapped to the Tables. Now we need to present them in a good way to the user so that User can perform the CRUD (Create, Read, Update and Delete) operations on these. This is facilitated by the use of templates defined in the Dynamic Data Website template. What we need to do is to set the enableTemplates attribute of the dynamicData section in web.config file to true. I can also optionally set the dataContextType attribute of dynamicData to SCMDataContext. So here, what I have done is that I have enabled the templates for the List and Details view of all the Business Entities defined in the SCMDataContext. By default it will use the ListDetailsTemplate.aspx for all the business entities. The ListDetailsTemplates.aspx is defined in the subfolder App_Shared/DynamicDataPages so that I can customize it to give a personalized look and feel. This template uses the master page defined in the website as MasterPage.master which I can customize too for the personalized look and feel; here I customize the main heading of the website to be ‘Supply Chain Management’ instead of dynamic data controls site. Just a food for thought that the ListDetailsTemplates.aspx uses the newly introduced Dynamic Data Controls and I would recommend having a look at these templates to get some idea on how it’s utilizing the features of ASP.NET 3.5 Dynamic Data Controls behind the scenes.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_EuhYJ6HjTPA/R4PV8BF-5OI/AAAAAAAAASM/ookZoIWPxS4/s1600-h/9-Enable+Templates+in+Web+Config.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153197625704375522" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_EuhYJ6HjTPA/R4PV8BF-5OI/AAAAAAAAASM/ookZoIWPxS4/s400/9-Enable+Templates+in+Web+Config.jpg" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now, start the web application by clicking on the Start Debugging button in the toolbar of Visual Web Developer 2008. A prompt stating the Debugging isn’t enabled, simply click OK button on it to enable debugging and a web application with the default templates appears in front of you.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_EuhYJ6HjTPA/R4PWehF-5PI/AAAAAAAAASU/aYl1U0OUyTk/s1600-h/10-Dynamic+Control+Website.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153198218409862386" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_EuhYJ6HjTPA/R4PWehF-5PI/AAAAAAAAASU/aYl1U0OUyTk/s400/10-Dynamic+Control+Website.jpg" border="0" /&gt;&lt;/a&gt; &lt;a href="http://bp3.blogger.com/_EuhYJ6HjTPA/R4PW2BF-5QI/AAAAAAAAASc/KKfWPqoRIlU/s1600-h/11-Dynamic+Control+Website+List+Details.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5153198622136788226" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 231px; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_EuhYJ6HjTPA/R4PW2BF-5QI/AAAAAAAAASc/KKfWPqoRIlU/s400/11-Dynamic+Control+Website+List+Details.jpg" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;So, here in this tutorial, we have learnt on how to generate a Data Centric Web Application using ASP.NET 3.5 Extensions Preview, in a few clicks. In the second part of this tutorial which I will be posting in a day or two, I will demonstrate on how you can customize the Views for some of the entities, use some other template for some other entities as well as enforcing you custom business rules in the Business Entities.&lt;br /&gt;&lt;br /&gt;You can download the complete source code of this walkthrough as a single package from &lt;a href="http://zeeshanqadir.googlepages.com/DDWDemo_Part1.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-2730953473061838860?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2008/01/aspnet-35-extensions-preview-dynamic.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp2.blogger.com/_EuhYJ6HjTPA/R4PQFxF-5HI/AAAAAAAAARU/aGDq2d30Iqg/s72-c/2-New+Dynamic+Data+Website.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-2936600612073859764</guid><pubDate>Wed, 02 Jan 2008 19:26:00 +0000</pubDate><atom:updated>2008-01-02T19:56:38.735Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">frameworks</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET AJAX</category><category domain="http://www.blogger.com/atom/ns#">AJAX</category><category domain="http://www.blogger.com/atom/ns#">news</category><category domain="http://www.blogger.com/atom/ns#">Getting Started</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">How To</category><category domain="http://www.blogger.com/atom/ns#">.NET 3.5</category><category domain="http://www.blogger.com/atom/ns#">code samples</category><category domain="http://www.blogger.com/atom/ns#">Microsoft</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET 3.5</category><title>ASP.NET 3.5 Extensions Preview: Walkthroughs, Tutorials and Code Samples</title><description>Long time, no posts!!!&lt;br /&gt;&lt;br /&gt;With the release of &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=A9C6BC06-B894-4B11-8300-35BD2F8FC908&amp;displaylang=en" target="_blank"&gt;ASP.NET 3.5 Extensions Preview&lt;/a&gt; a couple of weeks back, I have been busy in experimenting with the new features and controls added in this very first preview of ASP.NET 3.5 Extensions.&lt;br /&gt;&lt;br /&gt;The new additions like Dynamic Data Websites, Dynamic Data Controls, LINQ to SQL, ADO.NET Data Services and their invocation using AJAX, LINQ enhancements, ASP.NET AJAX enhancements definitely added sufficient enough data points to the proponents of ‘Using ASP.NET for RAD’.&lt;br /&gt;&lt;br /&gt;Having said all that, the ASP.NET 3.5 Extensions Preview also includes the first public preview&lt;br /&gt;of the much awaited built-in ASP.NET MVC Framework as well, the final release of which is expected in first half of this year. The addition of this built-in ASP.NET MVC Framework added a sound Architectural Pattern to the ASP.NET Web Development portfolio and it not only enforces the separation of concerns but also facilitates TDD that’s the need of the hour.&lt;br /&gt;&lt;br /&gt;Earlier this week I have been presenting the said new additions in ASP.NET 3.5 Extensions to my office colleagues in successive training / tutorial sessions titled “What’s new in ASP.NET 3.5” on each of the newly added features and they went great and, from now I will be posting the scripts / walkthroughs with code samples of all those sessions over here by this weekend, for my office colleagues in particular and rest of you in general.&lt;br /&gt;&lt;br /&gt;I used the well know “Northwind” database in all the tutorials so that I every one has the general idea of the DB Schema. For your convenience I will be including the Database files in the sample codes of each of the tutorial as well, in order to provide you a single code sample package for each of the tutorial.&lt;br /&gt;&lt;br /&gt;In the mean time I would recommend all of you to prepare the Development Environment for those tutorials and walkthroughs accompanying the code samples which I will be posting by this weekend. All you need to have on your system is the Visual Studio 2008 and the newly released ASP.NET 3.5 Extensions Preview. If you don’t have Visual Studio 2008 then for the time being you can go with the free Visual Web Developer 2008 Express Edition as well instead of Visual Studio 2008. You can download Visual Web Developer from &lt;a href="http://www.microsoft.com/express/download/" target="_blank"&gt;here&lt;/a&gt; and the ASP.NET 3.5 Extensions Preview from &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=A9C6BC06-B894-4B11-8300-35BD2F8FC908&amp;displaylang=en" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Keep your fingers crossed for Walkthroughs + Code Samples on Dynamic Data Websites, ADO.NET Data Services, LINQ and last but not the least the ASP.NET MVC Framework.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-2936600612073859764?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2008/01/aspnet-35-extensions-preview.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-583820108870332662</guid><pubDate>Tue, 11 Dec 2007 08:41:00 +0000</pubDate><atom:updated>2007-12-29T07:01:10.277Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">video</category><category domain="http://www.blogger.com/atom/ns#">humour</category><category domain="http://www.blogger.com/atom/ns#">web2.0</category><title>The Technology Bubble</title><description>Here is a Silicon Valley music video by the &lt;a href="http://www.richterscales.com/" target="_blank"&gt;Richter Scales&lt;/a&gt;, a must watch for all those web geeks out there, who are inspired by the success of MySpace, Orkut, Facebook, Digg, Flickr, Del.icio.us ..... blah blah. Hope you will enjoy it&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=I6IQ_FOCE6I" target="_blank"&gt;http://www.youtube.com/watch?v=I6IQ_FOCE6I&lt;/a&gt;&lt;br /&gt;(Links Updated On 29th December 2007)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-583820108870332662?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2007/12/technology-bubble.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-989802157681101227</guid><pubDate>Mon, 10 Dec 2007 07:43:00 +0000</pubDate><atom:updated>2007-12-11T09:03:11.892Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">Security</category><category domain="http://www.blogger.com/atom/ns#">tips n tricks</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET 2.0</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">How To</category><category domain="http://www.blogger.com/atom/ns#">Resources</category><category domain="http://www.blogger.com/atom/ns#">libraries</category><category domain="http://www.blogger.com/atom/ns#">.NET2.0</category><title>Engineering Secure Web Apps in ASP.NET 2.0</title><description>&lt;p&gt;Security is one of the critical components in the engineering of any web application but unfortunately it isn’t handled in an equally critical way. With an ever increasing popularity of providing access to information over the web at a mouse-click, security concerns are increasing with a similar pace.&lt;br /&gt;&lt;br /&gt;Below I have jolted down the list of some of the major security related items (you can call them ASP.NET security best practices, security checklist or the tips and tricks for engineering secure web applications in ASP.NET) which one must keep in mind, while engineering an ASP.NET Web application in which “SECURITY IS A CONCERN”.&lt;br /&gt;&lt;br /&gt;My approach is not to provide you the complete end to end solution to each of the concern, but to highlight and provide pointers to the different approaches to cater each of these security items in the check list.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;User Authentication&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You can use the built-in authentication mechanisms (&lt;a href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/security/formsauth.aspx" target="_blank"&gt;Forms&lt;/a&gt;, &lt;a href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/security/windowsauth.aspx" target="_blank"&gt;Windows&lt;/a&gt; and Passport) or Custom Authentication (Session Based; storing some user specific value in user’s session at the time of authentication so as to validate the user for subsequent requests by the same user, Using Hidden Fields; the traditional way but un secure way of maintaining authenticated user information etc).&lt;/li&gt;&lt;li&gt;You can use the &lt;a href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/security/login.aspx" target="_blank"&gt;built-in login controls&lt;/a&gt; provided in ASP.NET 2.0. Additionally in order to have a granular control over the User Authentication process refer to the &lt;a href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/security/membership.aspx" target="_blank"&gt;Membership and Role Management API&lt;/a&gt;. In case you want the Login Controls / Management API to work with your custom database, you can write your own Membership and Role Provider.&lt;/li&gt;&lt;li&gt;In case you need to implement the “remember me on this computer” feature, use cookies with “&lt;a href="http://en.wikipedia.org/wiki/One-time_password" target="_blank"&gt;One Time Password&lt;/a&gt;” design pattern.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Encrypt sections of the configuration file having confidential information&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Whenever you need to put any confidential information in the configuration file like the database user name / password, don’t leave that information in plain text in the configuration file, rather encrypt it using the built-in “aspnet_regiis” utility with the command line option “-pe”. The aspnet_regiis.exe is located at &lt;system&gt;:\WINDOWS\Microsoft.NET\Framework\v2.0.50727. &lt;/li&gt;&lt;li&gt;Once a section of the web.config file is encrypted then contents of that section aren’t human readable whenever that file is opened in some text editor, however when you access the configuration information through ASP.NET (the .NET 2.0 framework) it knows how to decrypt the contents and provide actual contents to the application.&lt;/li&gt;&lt;li&gt;You can use the &lt;a href="http://quickstarts.asp.net/QuickStartv20/aspnet/doc/management/default.aspx" target="_blank"&gt;Management API&lt;/a&gt; in order to programmatically encrypt the sections of your Web.Config file. The Management API added in ASP.NET 2.0 is very rich and provides you access to the complete configuration of the application and ability to modify the configuration file on the fly. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;One-way encrypt the user passwords before storing in database&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Never store user passwords in the database, in plain text. Store them in Encrypted format using any one way encryption algorithm like MD5, best is to encrypt (MD5) the user passwords at the client side using JavaScript and then at the server store it in the database. &lt;/li&gt;&lt;li&gt;Later on when the user wants to log in, encrypt the user entered password using the same encryption algorithm and then match it with the password in the database. &lt;/li&gt;&lt;li&gt;In case the user has forgotten his password, provide user an interface to set a new password after performing necessary validations. You can send a link to set new password for that user at his email address.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Use database user having limited rights&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Create a user in the database that has limited rights (INSERT, UPDATE, SELECT and may be DELETE from specific tables) only those tables of the database that needs to be accessed by your web application, and use that user to access the database from within your application.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Show custom error pages with user friendly error messages&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Never show the built in error page, telling the complete error detail for debugging the error to your end user. That discloses a lot of information that’s not intended for an end user.&lt;/li&gt;&lt;li&gt;You should better show custom error pages to the user with user friendly error messages while Logging the actual error occurred for the application developers to re-produce / debug and eventually resolve that error.&lt;/li&gt;&lt;li&gt;Always handle any of the unhandled exception in the Application_OnError event, use the Server.GetLastError() to get the detailed information about the error that occurred, while showing the user a custom error page and logging the actual error.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Check the Request’s Referrer Property&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Check that the request has actually originated from your own website (from an intended page). Not checking so can lead to un precedent attacks &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Handle SQL Injection Attacks&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;If you are using stored procedures, then you will be using SQL Parameters to send the user input to it and get the results. In that case your application isn’t prone to SQL Injections. However using the Stored Procudures or not in your web application is another debate, lets not get into that and focus on handling SQL Injections.&lt;/li&gt;&lt;li&gt;The problem comes when you are using inline queries and concatenates the user input with in the SQL Query. A well tailored user input by a hacker can break your security checks as well as can possibly drop the tables in your database etc. by using the single quotes and comment signs with in the user input. So concatenating the user input’s as is in inline SQL Queries can be fatal for your web application.&lt;/li&gt;&lt;li&gt;Use SQL Parameters even with “inline queries”, they automatically cater for the SQL Injection attacks.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Handle Cross Site Scripting Attacks&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;ASP.NET default behavior doesn’t allow the user to enter tags “&lt;xyz&gt;&lt;xyz&gt;” and shows an error page if such input is entered in a form field.&lt;/li&gt;&lt;li&gt;Some application may need to allow the user to enter information in tags, but this will result in potential security leaks, that’ named Cross Site Scripting. A user can write the &amp;lt;script&amp;rt; tag, which can be possibly rendered to another user browsing the site. That script tag will be executed in the context of that second user, and that intelligently tailored script tag can possibly access the second user cookies etc and moreover can possibly submit a malicious request with the second user credentials using XML Http Request / AJAX etc.&lt;/li&gt;&lt;li&gt;Use the &lt;a href="http://msdn2.microsoft.com/en-us/security/aa973814.aspx" target="_blank"&gt;Microsoft’s AntiXSS Library &lt;/a&gt;to handle cross site scripting attacks.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Handle Dictionary Attacks – Captcha&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Hackers can attack your website authentication system and submit automated login requests to crack the passwords of authenticated users of your protected website. You should check that your Login form / Authentication system isn’t attacked by this, by ensuring that it’s accessed by humans (asking the user to enter the characters shown on a bit distorted but human readable image). For more information on Dictionary Attacks point to &lt;a href="http://en.wikipedia.org/wiki/Dictionary_attack" target="_blank"&gt;Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Denial of Service Attacks &lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The last resort for any hacker of your website is the denial of service attacks. You should track the activity for each of the user and should limit the repeated requests sent by the same IP to a decent number.&lt;/li&gt;&lt;li&gt;You can use the &lt;a href="http://www.asp.net/AJAX/AjaxControlToolkit/Samples/NoBot/NoBot.aspx" target="_blank"&gt;ASP.NET AJAX Control Toolkit – No Robot Control &lt;/a&gt;to help you out in this, but it should be used with caution as stated on the above website.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Log user activity &lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;This way you don’t only capture some very useful data about the user trends but this data can also help you detect any un-desired activity made by the user.&lt;/li&gt;&lt;li&gt;You can use the Enterprise Library Logging Application Block log the user activity. &lt;a href="http://msdn2.microsoft.com/en-us/library/aa480464.aspx" target="_blank"&gt;Microsoft Enterprise Library’s Logging Application Block&lt;/a&gt; has the feature to log in the database, so that you can later on query it and create reports on it to find not only any interesting patterns based on “User Pathology” but can also point out any un-desired user activity.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I hope this pretty much covers most of the security check list items. However, I will be adding more and more to it, to provide a to-date comprehensive guide for engineering secure web apps in ASP.NET 2.0&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-989802157681101227?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2007/12/engineering-secure-web-applications-in.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-610042788195162559</guid><pubDate>Mon, 10 Dec 2007 07:10:00 +0000</pubDate><atom:updated>2007-12-10T07:42:20.112Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">tips n tricks</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET 2.0</category><category domain="http://www.blogger.com/atom/ns#">Patterns n Practices</category><category domain="http://www.blogger.com/atom/ns#">Getting Started</category><category domain="http://www.blogger.com/atom/ns#">How To</category><category domain="http://www.blogger.com/atom/ns#">Resources</category><category domain="http://www.blogger.com/atom/ns#">Microsoft</category><title>How To: “Getting Started with ASP.NET 2.0”</title><description>I have been asked a number of times, by students, fresh graduates and my office colleagues, on how to get started with ASP.NET 2.0? The people asking me this question have different exposures (some haven’t worked in the web domain at all, some have worked on static web pages, some have worked in classical ASP 3.0, some have worked in other server side scripting languages like JSP/PHP etc and some have worked in ASP.NET 1.1) but all of them have a Computer Science background, and now they are looking for the tips &amp;amp; trick and resources to get their hands on ASP.NET 2.0.&lt;br /&gt;&lt;br /&gt;So, I decided to share &lt;strong&gt;“My Proposed Strategy of Learning ASP.NET 2.0”&lt;/strong&gt; over here for people to look at and get started. Although the points listed below don’t apply to every one, and that varies, depending on a person’s level of exposure in engineering web applications.&lt;br /&gt;&lt;br /&gt;My strategy is to start from the basics and finally conclude by providing pointers to resources for engineering more sophisticated applications in ASP.NET 2.0.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Know how of basics i.e. HTML, JavaScript and CSS&lt;/strong&gt;&lt;br /&gt;One thing a person must have an idea of, before directly starting to work on ASP.NET 2.0 is the basics and the fundamentals of developing any web page i.e. the person should have the idea of HTML, JavaScript as well as CSS. Without the basic knowledge of these three, it’s really not going to end up too far in engineering sophisticated web applications. One quick reference to get started on all these is &lt;a href="http://www.w3schools.com/" target="_blank"&gt;http://www.w3schools.com/&lt;/a&gt;. Navigate to the relevant tutorials on the left panel to get a quick review of &lt;a href="http://www.w3schools.com/html/default.asp" target="_blank"&gt;HTML&lt;/a&gt;, &lt;a href="http://www.w3schools.com/js/default.asp" target="_blank"&gt;JavaScript &lt;/a&gt;and &lt;a href="http://www.w3schools.com/css/default.asp" target="_blank"&gt;CSS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Know how of Client-Server Interaction in Web Apps&lt;/strong&gt;&lt;br /&gt;Once you are done with the basics, you should have an idea of the interaction of the Client (web browser) and the web server (IIS etc) in any web based application.&lt;br /&gt;&lt;br /&gt;The client sends a request to the server, server processes that request and finally sends the response back to the client. So, it’s a “request/response” based interaction between the web client and the web server.&lt;br /&gt;&lt;br /&gt;Moreover this interaction between the client and the server is stateless. Cookies are used to maintain state at the client as well as the server between the successive requests made by a single client (wherever management of user state, between successive requests is required).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Know how of Implicit Objects in any Server Side Scripting Language&lt;/strong&gt;&lt;br /&gt;After that, a person should have an idea of what a server side scripting language is and the implicit objects available in that as well as the capability / role of each of those implicit objects. Those implicit objects include Request, Response, Server, Application and Session.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Development Environment&lt;/strong&gt;&lt;br /&gt;Once you are done with this much background knowledge, you should have the right development tools / IDE as well as the .NET 2.0 Framework (also comes packaged with IDE) installed on your machine. If you have Visual Studio 2005 available with you, that’s well and good as it will install the Framework, the IDE as well as the SQL Server 2005 Express through a single install package. Otherwise you can download and install the “Free Version” in the name of Visual Web Developer 2005 Express Edition (IDE for ASP.NET 2.0, contains the.NET Framework 2.0) and the SQL Server 2005 Express Edition (Backend Database Server). You can download them from for free from the Microsoft Website i.e. &lt;a href="http://www.microsoft.com/express/2005/download/default.aspx" target="_blank"&gt;http://www.microsoft.com/express/2005/download/default.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ASP.NET 2.0 Beginners / How Do I Video Tutorials&lt;/strong&gt;&lt;br /&gt;A picture is worth a thousand words and a guided video have a much more impact. So I recommend people to view web casts on ASP.NET 2.0 and related topics to have a better and quicker insight of it. The official ASP.NET website provides a very good pool of video tutorials on ASP.NET 2.0 which I strongly recommend people to download, watch and eventually apply. You can point to &lt;a href="http://www.asp.net/learn/videos/#beginners" target="_blank"&gt;http://www.asp.net/learn/videos/#beginners&lt;/a&gt; for those video tutorials.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ASP.NET 2.0 Quickstart Samples&lt;/strong&gt;&lt;br /&gt;By now you must have been able to develop a good enough small sized web application in ASP.NET 2.0. However you still are in need to some samples / code examples and a quick description of each of the feature of ASP.NET 2.0. Here, the excellently tailored ASP.NET 2.0 Quickstarts serves the purpose. You can point to the official ASP.NET website &lt;a href="http://quickstarts.asp.net/" target="_blank"&gt;http://quickstarts.asp.net/&lt;/a&gt; for an online version of these code examples and related descriptions of each of the features of ASP.NET 2.0. The code samples in these Quickstarts are available both in C# and VB.NET depending on user preference.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Microsoft Patterns &amp;amp; Practices: Enterprise Library&lt;br /&gt;&lt;/strong&gt;People at &lt;a href="http://www.microsoft.com/practices" target="_blank"&gt;Microsoft Patterns &amp;amp; Practices&lt;/a&gt; are working quite devotedly to provide you with Libraries and APIs needed for the development of your applications in .NET Framework. You can leverage from their very first initiative the Enterprise Library, which has evolved over the period of time and is much mature now. You can get the latest version 3.1 of it, which works with the .NET Framework 2.0 / 3.0 / 3.5 from &lt;a href="http://www.codeplex.com/entlib" target="_blank"&gt;http://www.codeplex.com/entlib&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Microsoft Patterns &amp;amp; Practices: Software Factories&lt;/strong&gt;&lt;br /&gt;Still need some more pointers to engineer a more sophisticated web applications? Look for the Software Factories; another great initiative of &lt;a href="http://www.microsoft.com/practices" target="_blank"&gt;Microsoft Patterns and Practices &lt;/a&gt;Team. Refer to the &lt;a href="http://www.codeplex.com/websf" target="_blank"&gt;Web Client Software Factory on CodePlex&lt;/a&gt; for more details.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Strongly Recommended&lt;/strong&gt;&lt;br /&gt;The Data Access Application Block, Logging Application and Caching Application Block of the Enterprise Library are the ones which one must try. I can guarantee that you will find them really helpful in engineering your applications without bothering much about these common functionalities.&lt;br /&gt;&lt;br /&gt;I also strongly recommend all those who want to have quick hands on, on ASP.NET 2.0 to locally install quick-starts on their own development machines (available under the Microsoft .NET Framework 2.0 SDK in Visual Studio 2005 installer), and go through the topics and code samples whenever you are free. This will really help you in getting a broader idea of the capabilities of ASP.NET 2.0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-610042788195162559?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2007/12/how-to-getting-started-with-aspnet-20.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-6490673063408548522</guid><pubDate>Wed, 28 Nov 2007 08:27:00 +0000</pubDate><atom:updated>2007-11-28T10:00:46.809Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">Server Push</category><category domain="http://www.blogger.com/atom/ns#">Reverse AJAX</category><category domain="http://www.blogger.com/atom/ns#">Long-Lived-HTTP-Request</category><category domain="http://www.blogger.com/atom/ns#">HTTP Streaming</category><category domain="http://www.blogger.com/atom/ns#">Comet</category><category domain="http://www.blogger.com/atom/ns#">LazyHTTP</category><title>Comet: The futuristic view of web applications – A food for thought!</title><description>I hope that this word “Comet” must be a new one for most of you. Might be some of you have heard about it in the name of Reverse AJAX or Server Push or HTTP Streaming or LazyHTTP or Long-Lived-Http-Requests or what not. These all are different names given to variations of the same idea, trying to achieve the same goal one way or other.&lt;br /&gt;&lt;br /&gt;Here I will try to explain “What Comet actually Is?” So, let’s start with the basics. HTTP protocol is based on the pull model i.e. the client sends a request to the server, the server processes that request and sends the response back to the client. This conventional way leads to serious bandwidth + network traffic + scalability issues for web applications that need to provide some real time information i.e. news ticker or stock quotes or a web based chat client kind of things over the web. Considering this pull model of HTTP, the web application simulates the real time updates of the news / stock quotes ticker by periodically sending AJAX requests using some Java Script timers or a similar approach. So in that case my application is generating periodic XMLHttp Requests irrespective of the fact whether there are any updates on the server or not, this leads to a substantial over head in terms of the network bandwidth, web server’s scalability and performance. This way of simulating the real time updates is call the Ping Model, in which you are continuously ping-ing the server to get any of the updated contents available on the server.&lt;br /&gt;&lt;br /&gt;What if I don’t want to Ping the server for updates? What if I want the web server itself to notify the client whenever there is an update? Can we really do that? Is it possible over HTTP? Is it possible in ASP.NET + IIS? These are the questions which must be storming your mind by now.&lt;br /&gt;&lt;br /&gt;What I can say about all this is that, there are several giants who are into it, like Google is achieving this task some how on it’s &lt;a href="http://www.google.com/talk" target="_blank"&gt;Google Talk&lt;/a&gt; web chat panel inside &lt;a href="http://www.google.com/mail" target="_blank"&gt;GMail&lt;/a&gt; web based interface. &lt;a href="http://www.meebo.com/" target="_blank"&gt;Meebo&lt;/a&gt; is also providing that server push kind of thing for its web chat platform. There are also several (experimental + commercial) implementations of Comet which are available out there.&lt;br /&gt;&lt;br /&gt;Still I have serious doubts about the scalability any such solution. What we know is that HTTP is based on the pull model, then how can these implementations achieve a real server push over HTTP? What as per my feeling, they are doing is simulating the server push using Long-Lived-Http-Requests or the other option to achieve Server Push is to bypass HTTP and use the Raw TCP sockets, but that would lead many other concerns related with security, scalability etc.&lt;br /&gt;&lt;br /&gt;Another way to achieve this server push on Web is using Sockets in Flash movies, these flash movies can be easily embedded in web pages that can be shown over HTTP, but in that case we need a Flash Communication Server. Thus even for that, there is some thing that’s required from the server to achieve this push kind of behavior in web applications to provide real time information on web pages.&lt;br /&gt;&lt;br /&gt;So far, Microsoft is quite on this. Let’s see how things turn out from there end.&lt;br /&gt;&lt;br /&gt;Below are a few links to the related articles and working samples to increase your urge to learn more and more about Comet.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://ajaxpatterns.org/HTTP_Streaming" target="_blank"&gt;HTTP Streaming on AJAXPatterns&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Comet_(programming)" target="_blank"&gt;Comet at Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wwwm.meebo.com/" target="_blank"&gt;Meebo&lt;/a&gt; a Web Chat Platform &lt;/li&gt;&lt;li&gt;An elementary &lt;a href="http://ajaxify.com/run/streaming/" target="_blank"&gt;example&lt;/a&gt; at Ajaxif &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.lightstreamer.com/" target="_blank"&gt;LightStreamer&lt;/a&gt; a commercial server for Comet Apps, also available for ASP.NET now&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-6490673063408548522?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2007/11/comet-futuristic-view-of-web.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-5094411840351822073</guid><pubDate>Mon, 26 Nov 2007 16:55:00 +0000</pubDate><atom:updated>2007-11-26T17:28:39.844Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">XMLHttpRequest</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET AJAX</category><category domain="http://www.blogger.com/atom/ns#">AJAX</category><category domain="http://www.blogger.com/atom/ns#">respnsive web apps</category><title>What is AJAX?</title><description>I have been among the interviewers at my work places for 50+ technical interviews, at different stages, for different positions, ranging from positions requiring fresh graduates to 4-5 years experienced resources. Out of all those interviews, I can count those good ones on fingers who correctly answered “What is AJAX?” So I consider it a worth sharing information, “What actually AJAX is”.&lt;br /&gt;&lt;br /&gt;If you have any of the below questions in your mind, then I would recommend you to continue reading this post.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Is it a tool? &lt;/li&gt;&lt;li&gt;Is it a language? &lt;/li&gt;&lt;li&gt;Is it a technology? &lt;/li&gt;&lt;li&gt;Is it a library? &lt;/li&gt;&lt;li&gt;Is it a technique? &lt;/li&gt;&lt;li&gt;What’s so special about AJAX? &lt;/li&gt;&lt;li&gt;What’s working behind the scenes in AJAX? &lt;/li&gt;&lt;li&gt;Can’t we do the same trick if we don’t have the XMLHttpRequest object available in browsers? &lt;/li&gt;&lt;li&gt;Can’t we make an AJAX request synchronous? &lt;/li&gt;&lt;li&gt;How comes AJAX improve the responsiveness of a Web Application? &lt;/li&gt;&lt;li&gt;Is the round-trip eliminated in case of AJAX? &lt;/li&gt;&lt;li&gt;When to use AJAX? &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Here are the points one needs to remember about AJAX, so as to have a clear understanding of what it actually is, what’s working behind the scenes, what are it’s alternates, when to use it and when not to use it. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;“AJAX stands for Asynchronous JavaScript and XML”. &lt;/li&gt;&lt;li&gt;“AJAX is a technique” to make web applications more responsive, by enabling the application developers to “seamlessly make a request to the server without the need to Post Back the complete page” in order to provider better user experience. &lt;/li&gt;&lt;li&gt;AJAX is a “mix of JavaScript, HTML, CSS, DOM, XML/JSON”&lt;/li&gt;&lt;li&gt;The core object that’s working behind the scenes to seamlessly make a request to the server and is available in all modern browsers is “XMLHttpRequest / Microsoft.XMLHTTP”. &lt;/li&gt;&lt;li&gt;There are “many libraries/frameworks written on top of this XMLHttpRequest / Microsoft.XMLHTTP” object that facilitate the AJAX based development. &lt;a href="http://ajax.asp.net/" target="_blank"&gt;ASP.NET AJAX&lt;/a&gt; is one of those 100s of frameworks available for free to the ASP.NET developers to incorporate AJAX features in their ASP.NET based web applications. &lt;/li&gt;&lt;li&gt;“We can make a synchronous requests” with XMLHttpRequest too.&lt;/li&gt;&lt;li&gt;“We can do a similar trick as of AJAX by using the old &amp;amp; gold HTML Frames (a 0 sized frame)” and use Java Script to change the “src” attribute of that 0 sized frame based on some user action, to make a seamless request to the server, without the need to post back the actual page shown in the frame actually visible to the end use, and once the requested page in 0 sized frame is loaded, you can use JavaScript to manipulate the contents of the actually visible Frame to reflect the data actually fetched from the server in that 0 sized frame. This is the technique which I used back in 2002, on the SOFTEC 2003’s, Macromedia Flash 5 based website, to submit a data entered by the user in a flash based form, to the server without posting back the page in which the Flash movie was loaded so as to provide the best possible user experience to the end user.&lt;/li&gt;&lt;li&gt;AJAX makes the application responsive by seamlessly sending an XMLHTTP request to the server without the need to post back the complete page. “By wisely using AJAX you can decrease the network traffic (and in turn increase the responsiveness) by just sending the request (and optionally the parameters) to the server and getting just the required data from the server and eventually displaying it to the end user in a neat fashion using JavaScript + HTML + DOM + CSS”.&lt;/li&gt;&lt;li&gt;AJAX “doesn’t eliminate the round-trip to the server”; it’s not like that all the data required by the page is sent to the client side when the page is first rendered, using such approach (might) result in performance hit (in most cases). It’s actually an “on-demand fetching of the required data based on user actions / timers in a seamless fashion to provide a better user experience”.&lt;/li&gt;&lt;li&gt;“Use AJAX in order to improve the user experience”. Keep the end use of your web application in mind, while you are engineering the application. This is the real key to make a successful web product / application.&lt;/li&gt;&lt;li&gt;“Use AJAX in order to minimize the overall network traffic” created by your web application.&lt;/li&gt;&lt;li&gt;“Don’t use AJAX to the extent that makes the response of your web application un-predictable for an end user”. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I will be providing a quick review of &lt;a href="http://ajax.asp.net/" target="_blank"&gt;ASP.NET AJAX &lt;/a&gt;and its Programming Models in a week or so, keep your fingers crossed. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-5094411840351822073?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2007/11/what-is-ajax.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-7659832137394820761</guid><pubDate>Mon, 26 Nov 2007 09:04:00 +0000</pubDate><atom:updated>2007-11-26T09:21:57.632Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">Events</category><category domain="http://www.blogger.com/atom/ns#">Google</category><category domain="http://www.blogger.com/atom/ns#">AdWords</category><title>Secrets of Internet Marketing with Google – Google AdWords</title><description>&lt;p&gt;A couple of weeks back, I attended a seminar on “Secrets of Internet Marketing with Google” at my university; &lt;a href="http://www.lums.edu.pk/" target="_blank"&gt;LUMS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The session started with case studies on &lt;a href="http://adwords.google.com/" target="_blank"&gt;Google’s AdWords&lt;/a&gt;, presented by CEOs / Technical Consultants of &lt;/p&gt;&lt;ul&gt;&lt;li&gt;ShopHive &lt;/li&gt;&lt;li&gt;CottonSocks &lt;/li&gt;&lt;li&gt;LumenSoft &lt;/li&gt;&lt;li&gt;Bramerz &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;After that &lt;a href="http://www.badar.com.pk/" target="_blank"&gt;Badar Khushnood&lt;/a&gt;; Country Consultant of Google Pakistan at Google Inc., presented an enlightening and quite a convincing presentation on the said topic.&lt;br /&gt;&lt;br /&gt;I knew from quite some time that Google shows relevant Sponsored Text Ads with search results but I never knew that even a person like me can design a marketing campaign, at an affordable cost, using &lt;a href="http://adwords.google.com/" target="_blank"&gt;Google AdWords&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I heard quite a few surprising facts of internet marketing with Google at the seminar and would like to share some of those with you so that you can use it too to increase the market share of your products / services. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;“ShopHive” a Pakistani Shopping portal with monthly revenue of around 5 Million Rs is using Google AdWords and have a bigger competitive edge on “MyShop” because of the targeted audience. &lt;/li&gt;&lt;li&gt;“CottonSocks” is reaching its targeted audience for exports by using Google AdWords and is happy with the overall cost / benefit ratio; same is the case with “LumeSoft”. &lt;/li&gt;&lt;li&gt;Google “doesn’t charge you just for displaying your Ads” in the sponsored Ads panel in its search results. You will be only charged when any user browsing the search results actually clicks on your Ad. &lt;/li&gt;&lt;li&gt;There is a “cost associated with per user click (CPC)” on your Ad and that depends on word you have chosen against which your Ad will be shown to the user who searches on that word or any of the related word. &lt;/li&gt;&lt;li&gt;You can reach your “Targeted Audience” with Google AdWords. You can design your marketing campaign such that your Ads will be displayed only to those users browsing the web from a particular geographical area e.g. you can limit that your Ads should be displayed to only those users who are browsing the search results from Lahore only. &lt;/li&gt;&lt;li&gt;You can tailor “any number of Ads” to be displayed in the sponsored links panel of Google Search Results. &lt;/li&gt;&lt;li&gt;You can display your Ad as the sponsored links on the Google Search Results page with daily expenditure of as low as 1$ i.e. 60 Rs only, which is far low as compared to any other medium of advertising and is much more effective. In essence you can “define you daily budget for the Ads” to be displayed. &lt;/li&gt;&lt;li&gt;Google also offers “certifications in Google AdWords” which one can opt for as a consultant to attract more and more companies to get consultation from him/her. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-7659832137394820761?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2007/11/secrets-of-internet-marketing-with.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-7757042150345526712</guid><pubDate>Sun, 25 Nov 2007 13:21:00 +0000</pubDate><atom:updated>2008-08-17T09:29:17.594+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">frameworks</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET AJAX</category><category domain="http://www.blogger.com/atom/ns#">respnsive web apps</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">ExtJS</category><category domain="http://www.blogger.com/atom/ns#">code samples</category><title>ExtJS 2.0 - Making Web applications more responsive with minimal network traffic!</title><description>It has been quite long that I have been working on engineering responsive web applications using Microsoft ASP.NET and related technologies.&lt;br /&gt;&lt;br /&gt;Although the use of Update Panel can do the wonders to make a traditional ASP.NET Application a bit more responsive but I have always been eager to make the application responsive with minimal network traffic and that’s not the case when we use the ASP.NET AJAX Update Panel.&lt;br /&gt;&lt;br /&gt;So I personally prefer the Client Centric Programming Model of ASP.NET AJAX (the PageMethods approach) in which you only transfer the required data and not the complete UI. And in this case when you transfer just the required data and not the complete UI, you are stuck on how to present the data in a good enough fashion. For that you need the command on Java Script + HTML DOM, but even when you have command on all this JavaScript + CSS stuff, making a “GridView” kind of thing to show the data using Java Script is hell of a task.&lt;br /&gt;&lt;br /&gt;This is where &lt;a href="http://www.extjs.com/" target="_blank"&gt;ExtJS &lt;/a&gt;comes in, to serve the purpose. ExtJS is basically a JavaScript based UI framework and provides sufficient enough controls through which you can fulfill the data presentation needs of your applications.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.extjs.com/" target="_blank"&gt;ExtJS&lt;/a&gt; controls range from HTML Control extenders (text, button, text area, select list) to a full fledged grid controls (with built-in client side sorting, column reordering, column hide/show, grouping, inline editing, deletion and what not) which can be 2 way-binded to multiple kinds of data sources (JSON, Arrays, XML etc), and quite amazingly all this is done in JavaScript.&lt;br /&gt;&lt;br /&gt;A quick walkthrough on how to bind the data returned from server to an ExtJS based Grid is outlined below.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Get the data from the server (like getting a list of Employee type of objects i.e. List&lt;employee&gt;) using the ASP.NET AJAX Page Methods. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Define the ExtJS based “Record” that maps the Employee type of C# Class objects to an ExtJS based employee “Record” type. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Define the ExtJS based “JsonReader” and associate that reader with the employee “Record” type you have just defined in Ext JS. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Define the ExtJS based “Store” and load the returned List&lt;employee&gt; in that store using the reader you have already defined. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now you can bind this ExtJS based “Store” to any ExtJS based “GridPanel” or Select list or can use the store as a temporary data place holder for further manipulation later on. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The tricky part is to read the returned List of Employees in “JsonReader” and load it in “Store”, once the data is loaded in the Store, you can bind it to any data bound ExtJS control or can manipulate it later on. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;On request of one of the readers; Imtiaz, &lt;/strong&gt;&lt;a href="http://zeeshanqadir.googlepages.com/ASP-NETAJAXASP-NET2-0ExtJS.zip"&gt;&lt;strong&gt;here is the sample code&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; of the above walkthough. [Added: 14/12/2007]&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The code sample is updated to incorporate JavaScript IntelliSense for ExtJS in Visual Studio 2008 SP1 and is available &lt;a href="http://zeeshanqadir.blogspot.com/2008/08/how-to-setup-intellisense-for-extjs-in.html" target="_blank"&gt;here&lt;/a&gt;. [Added: 17/08/2008]&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;ExtJS is compatible with all the modern browsers, and can be used for free under open source license or under a commercial copy-left license. For more details on licensing, refer to the ExtJS website. i.e. &lt;a href="http://www.extjs.com/" target="_blank"&gt;http://www.extjs.com/&lt;/a&gt; &lt;/p&gt;&lt;p&gt;A few sample UIs (snapshots of ExtJS examples) made with the ExtJS UI Framework are shown below to give you an idea of what we can get out of ExtJS.&lt;/p&gt;&lt;a href="http://bp1.blogger.com/_EuhYJ6HjTPA/R0l9Mvqor_I/AAAAAAAAAQE/e2UVDIZmx9Y/s1600-h/extjs.jpg" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5136774507899957234" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="ExtJS based UI, Web Desktop" src="http://bp1.blogger.com/_EuhYJ6HjTPA/R0l9Mvqor_I/AAAAAAAAAQE/e2UVDIZmx9Y/s320/extjs.jpg" border="0" /&gt;&lt;/a&gt;&lt;a href="http://bp0.blogger.com/_EuhYJ6HjTPA/R0l9-fqosAI/AAAAAAAAAQM/BOrJdHRum0Q/s1600-h/extjs2.jpg" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5136775362598449154" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="ExtJS based UI, Task List" src="http://bp0.blogger.com/_EuhYJ6HjTPA/R0l9-fqosAI/AAAAAAAAAQM/BOrJdHRum0Q/s320/extjs2.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-7757042150345526712?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2007/11/extjs-20-making-web-applications-more.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp1.blogger.com/_EuhYJ6HjTPA/R0l9Mvqor_I/AAAAAAAAAQE/e2UVDIZmx9Y/s72-c/extjs.jpg" height="72" width="72" /><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-7022803835698795052</guid><pubDate>Sat, 24 Nov 2007 20:25:00 +0000</pubDate><atom:updated>2007-11-25T13:55:01.788Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">news</category><title>Quarter Break + Annual Leaves</title><description>Finally it’s the end of another quarter of my MS-CS at LUMS &amp; from yesterday onwards I am on annual leaves from office till the 1st week of December 2007. &lt;br /&gt;&lt;br /&gt;Along with my other plans on how to spend these holidays, like spending some healthy time with my parents, I plan to update my blog with my experiences so far; old + new including but not limited to stuff like Comet, AJAX+ASP.NET AJAX 1.0, FxCop, Firebug + YSlow, SandCastle, MVC Framework for ASP.NET, C#3.0/3.5, Web Client Software Factory, Provider Model, Google AdWords etc. Let’s see how much successful I am in sharing some really exciting information on the said topics I have learnt through my experience working in these.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-7022803835698795052?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2007/11/quarter-break-annual-leaves.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-1197161028229748958</guid><pubDate>Mon, 05 Nov 2007 16:04:00 +0000</pubDate><atom:updated>2007-11-05T16:09:59.228Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">.NET3.0</category><category domain="http://www.blogger.com/atom/ns#">.NET 3.5</category><category domain="http://www.blogger.com/atom/ns#">Microsoft</category><category domain="http://www.blogger.com/atom/ns#">.NET2.0</category><title>What’s new in Microsoft .NET 3.0 &amp; .NET 3.5?</title><description>I came across this comprehensive diagrammatic representation that will definitely clarify what’s new in .NET 3.0 &amp; .NET 3.5. The main point to remember is that both the .NET 3.0 and .NET 3.5 are built on top of .NET 2.0. &lt;br /&gt;&lt;br /&gt;.NET 3.0 adds four frameworks namely Windows Communication Foundation (WCF), Windows Workflow Foundation (WF), Windows Presentation Foundation (WPF) and Card Space to .NET 2.0 and Microsoft named the resulting framework as .NET 3.0 (a marketing tactic). &lt;br /&gt;&lt;br /&gt;Similarly .NET 3.5 adds Language Integrated Query (LINQ), Representational State Transfer (REST) and AJAX functionality to .NET 3.0 and named the resulting framework as .NET 3.5.&lt;br/&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_EuhYJ6HjTPA/Ry8_to8E7AI/AAAAAAAAAP4/VpG7QSHmQAA/s1600-h/Additive+Versions+of+.NET+Farmework.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_EuhYJ6HjTPA/Ry8_to8E7AI/AAAAAAAAAP4/VpG7QSHmQAA/s320/Additive+Versions+of+.NET+Farmework.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5129388553914346498" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-1197161028229748958?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2007/11/whats-new-in-microsoft-net-30-net-35.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp3.blogger.com/_EuhYJ6HjTPA/Ry8_to8E7AI/AAAAAAAAAP4/VpG7QSHmQAA/s72-c/Additive+Versions+of+.NET+Farmework.jpg" height="72" width="72" /><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-13892529.post-5484804352710766506</guid><pubDate>Thu, 13 Sep 2007 09:01:00 +0000</pubDate><atom:updated>2007-11-26T14:03:08.278Z</atom:updated><category domain="http://www.blogger.com/atom/ns#">performance</category><category domain="http://www.blogger.com/atom/ns#">tips n tricks</category><title>Considerations for High Performance Websites</title><description>&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;Steve Souders has jolted down fourteen simple tips and tricks to improve website performance. &lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Make fewer HTTP requests&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Use a CDN&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Add an Expires header&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Gzip components&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Put CSS at the top&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Move JS to the bottom&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Avoid CSS expressions&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Make JS and CSS external&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Reduce DNS lookups&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Minify JS&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Avoid redirects&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Remove duplicate scripts&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Turn off ETags&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;"&gt;Make AJAX cacheable and small&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;You can download his complete presentation on the said topic at Web 2.0 Expo conference from &lt;/span&gt;&lt;a href="http://www.web2expo.com/presentations/webex2007/souders_steve.ppt" target="_blank"&gt;&lt;span style="font-family:trebuchet ms;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;"&gt;For a detailed description of each of the above 14 tips refer to &lt;/span&gt;&lt;a href="http://developer.yahoo.com/performance/" target="_blank"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Exceptional Performance &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;section at &lt;/span&gt;&lt;a href="http://developer.yahoo.com/" target="_blank"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Yahoo Developer Network&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;. &lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13892529-5484804352710766506?l=zeeshanqadir.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://zeeshanqadir.blogspot.com/2007/09/considerations-for-high-performance.html</link><author>noreply@blogger.com (Zeeshan Qadir)</author><thr:total>0</thr:total></item></channel></rss>

