<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-15316861</id><updated>2011-12-14T09:28:03.476+05:30</updated><title type='text'>The Never Ending Ooze</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://theneverendingooze.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://theneverendingooze.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>sAnKaLp VeRmA</name><uri>http://www.blogger.com/profile/15828691828465751118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-15316861.post-115874942620825680</id><published>2006-09-20T16:18:00.000+05:30</published><updated>2006-09-20T16:22:11.946+05:30</updated><title type='text'>Model Driven Architecture..Huh! What is that?</title><content type='html'>&lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;As you all would have noticed, lately I have been pondering a lot about architecture, design and the way software development can be made easier for the software community. Well, this led to me Model Driven Architecture. Now, you would wonder-what is different about Model Driven Architecture? After all, all software starts with design where you develop a sort of model of the end software.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;First let me try to explain a problem which we software developers face almost everyday-CHANGING TECHNOLOGY. First there was VB, then came VB.NET, first there was remoting, then came web services. Each time a new technology comes into the market, lot of rework needs to be done. Add to this the plethora of rapidly changing requirements and the ability that your software needs to interact with other systems and you get a fairly complex scenario which haunts you everyday. I on a personal basis hate the client asking me to change the application so that his application can run on Oracle database as well.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;Allow me to explain a little more, Model Driven Architecture is a new way of writing just what you thought-“Specifications”. Here, no technology is taken into consideration. So, what do you exactly write? You develop a platform independent base UML model aptly called Platform Independent Models (PIMs). You are not supposed to concentrate on the language to be used or the database on which the software will run or the number of frigging threads the application will spawn. You concentrate only on the functionality and the end behavior of the application. There is no relation what so ever with the implementation details. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;So, what is the benefit of this sort of architecture?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;With today’s fast changing technology environment, lots of new platforms and infrastructure are coming into the market. Now what happens to your existing applications? If your applications have been written solely targeted towards a particular platform or infrastructure, then they become redundant-right? So, that means you lose all your investment that you have been putting into technology hoping for a better tomorrow. Now, that’s a really scary situation. This is where Model Driven Architecture steps into the picture. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;MDA is already being projected as the next big step to be taken by the software industry. At the heart of the MDA development is UML, which involves developing models in order to develop your application. So, during the analysis of the requirements, UML is used to develop a model in a standard way which acts like a blueprint for your application. But you would be wondering how can just developing a model, lead to the development of the entire application. So, here in order for the application to be targeted towards a particular platform or infrastructure, the Platform Independent Model needs to be converted into a Platform Specific Model (PSM). So, if you wish to put it into simple words, a PIM sits at the center of the application and then a PSM is written around the PIM. The PSM can be written in any technical language-be it CORBA, or .NET or JAVA. The business functionality and the behavior of an application are etched into the PIM and the UI and the UI components are written in any available language.&lt;o:p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/o:p&gt;It is then the responsibility of the platform specialists to convert the model into one targeted towards a specific platform like CCM, EJB or MTS. Standardized tools are used in order to do this conversion from PIM to PSM. This is one area where a lot of scope is still there for research and development due to the fact that although the tools being used today use standard mappings to do the conversion, there is still a lot of human intervention involved. So, this is a sort of developing art which needs some hand-holding even today.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;        &lt;p class="MsoNormal"  style="text-align: justify;font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;The next step is the actual generation of the code. Finally, the software developers would have heaved a sigh of relief here-after all what will they do if everything is done by the model. The actual code generation will involve generating a lot of configuration files, interface files and so on. If the models generated using UML are complete or encompass the entire functionality of the application, there will be lesser work to do during the PSM conversion phase and the better the application nitty-gritty’s and runtime behavior have been handled in the PSM, the lesser code will have to generated. &lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;br /&gt;This type of architecture is still in its infancy stage right now and if you expect that you can generate all your code using models TODAY, then you are probably mistaken. MDA offers just another layer of reusability below the development tools which we all are already using these days. This art of architecture still has to grow a lot before we start searching for expert UML modelers rather than expert C# developers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;   &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15316861-115874942620825680?l=theneverendingooze.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theneverendingooze.blogspot.com/feeds/115874942620825680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15316861&amp;postID=115874942620825680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115874942620825680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115874942620825680'/><link rel='alternate' type='text/html' href='http://theneverendingooze.blogspot.com/2006/09/model-driven-architecturehuh-what-is.html' title='Model Driven Architecture..Huh! What is that?'/><author><name>sAnKaLp VeRmA</name><uri>http://www.blogger.com/profile/15828691828465751118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15316861.post-115752297042905375</id><published>2006-09-06T11:39:00.000+05:30</published><updated>2006-09-06T11:39:30.433+05:30</updated><title type='text'>Domain Driven Design</title><content type='html'>&lt;p&gt;Well, a couple of google searches later, I have come to know that there is infact a community of developers who are working on providing domain specific designs and they have coined a name to it-Domain Driven Design (DDD)-COOL!&lt;/p&gt; &lt;p&gt;DDD works on the assumption that all software that is developed is BASED on a proper understanding of the domain-its intricacies, its complexities. So, rather than spending hours trying to solve the technical complexities, a developer should be spending more time with the analyst or domain expert trying to understand the complexities involved in the domain on which the software or code piece is to be written. DEVELOPERS AND ANALYSTS WORKING TOGETHER??? Since when did this become possible? After all, they are supposed to be entirely different backgrounds. A developer might be someone who has done his B.S/B.Tech., whereas the analyst might be some arts graduate who has done his MBA from some B School and has some expertise on the domain say finance. How can these two different types of creatures survive together?&lt;/p&gt; &lt;p&gt;But howsoever impossible it might sound, the domain and technology experts need to sit together and pool in their knowledge of the domain so that it can form the basis of the software. Together, their knowledge can be invaluable (obviously only when the mostly egoistical programmer learns to share his/her knowledge ;-) ) This is not so impossible, since I have to come to know that in a large account of Tavant Technologies the developers are in fact working with the analysts in order to understand the financial domain more-thanks to Nitish for this information.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15316861-115752297042905375?l=theneverendingooze.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theneverendingooze.blogspot.com/feeds/115752297042905375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15316861&amp;postID=115752297042905375' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115752297042905375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115752297042905375'/><link rel='alternate' type='text/html' href='http://theneverendingooze.blogspot.com/2006/09/domain-driven-design.html' title='Domain Driven Design'/><author><name>sAnKaLp VeRmA</name><uri>http://www.blogger.com/profile/15828691828465751118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15316861.post-115752220294629206</id><published>2006-09-06T11:26:00.000+05:30</published><updated>2006-09-06T11:26:42.986+05:30</updated><title type='text'>Design Patterns based on Domains</title><content type='html'>Recently we have been discussing around domains-which problems we had faced while working on what domain, how we had solved it, which domain offers more job opportunities and stuff like that. This made us come up with the premise that probably there should be design patterns targetted towards specific domains. Since design patterns offer solutions to complex problems which have been faced by developers across technologies across the world, maybe there should be a forum where similar design patterns are discussed for problems faced while developing an application for a particular domain. Dont you think this would offer more lucid designs and help architects and developers to think alike. Rather than focussing on some technical issue, they can rather concentrate on providing a better solution itself to the user. Need to do some research on this. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15316861-115752220294629206?l=theneverendingooze.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theneverendingooze.blogspot.com/feeds/115752220294629206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15316861&amp;postID=115752220294629206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115752220294629206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115752220294629206'/><link rel='alternate' type='text/html' href='http://theneverendingooze.blogspot.com/2006/09/design-patterns-based-on-domains.html' title='Design Patterns based on Domains'/><author><name>sAnKaLp VeRmA</name><uri>http://www.blogger.com/profile/15828691828465751118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15316861.post-115709105859264365</id><published>2006-09-01T11:40:00.000+05:30</published><updated>2006-09-01T11:40:58.646+05:30</updated><title type='text'>AJAX or AHAB???</title><content type='html'>&lt;p&gt;Recently I was going through Peter Bromberg's blog and happened to go through his archives. I saw the article &lt;a href="http://petesbloggerama.blogspot.com/2006/06/this-just-in-ajax-doesnt-have-to-be.html"&gt;This Just In: AJAX doesnt Have to be -- AJAX&lt;/a&gt;, which was sort of his views (against) about the AJAX hype. Google certainly seems to have upped the hype on this very OLD technology by incorporating it in almost all of its products. As the term Google is growing in the market, so is the term AJAX. Every web developer wants to use XMLHTTP web requests in order to seamlessly integrate page post backs and add his/her own touch of Googleism to his/her website (even I have tried that and my current application is completely done using XMLHTTP web requests)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15316861-115709105859264365?l=theneverendingooze.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115709105859264365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115709105859264365'/><link rel='alternate' type='text/html' href='http://theneverendingooze.blogspot.com/2006/09/ajax-or-ahab.html' title='AJAX or AHAB???'/><author><name>sAnKaLp VeRmA</name><uri>http://www.blogger.com/profile/15828691828465751118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-15316861.post-115705159221590328</id><published>2006-09-01T00:38:00.000+05:30</published><updated>2006-09-05T16:33:10.476+05:30</updated><title type='text'>Setting up test environment.....What is involved?</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;Scenario:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;We have completed the development phase and need to deploy the app to&lt;br /&gt;the test environment. Needed to know what all things are involved in&lt;br /&gt;setting up the test environment.&lt;br /&gt;the application consists of Serviced Components and ASP.NET 2.0&lt;br /&gt;pages/code and SQL 2005 database.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt; I think i would need the following:&lt;br /&gt;&lt;/span&gt; &lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Need to install the Serviced components on the test server &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; Copy over the ASP.NET pages and the precompiled Code behind. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; However I should use the existing database server setup in the test &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; environment. I think it is a bad idea to backup the DEV database and &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; restore it to the TEST database, since it would already contain the &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; data that is supposed to get populated after you run the application &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; and play around with it right??? &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;An insight into deploying a .NET web application:&lt;br /&gt;&lt;br /&gt;I think using something like NAnt and CruiseControl would be a much &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; better option. You can also create a deployment project for your web &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; app using VS.NET &lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;p  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;If you prefer to use the manual way, you just need to simulate your&lt;br /&gt;development enviroment on the test machine-folders and stuff.&lt;br /&gt;&lt;/span&gt; &lt;/p&gt;&lt;p  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;Copy over your web app dll to the bin folder and make sure you copy all&lt;br /&gt;the aspx pages. You dont need the code behind.&lt;br /&gt;&lt;/span&gt; &lt;/p&gt;&lt;p  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;Regarding the database, create scripts for all your tables, sps,&lt;br /&gt;triggers etc and run the script on the test/staging machine. This&lt;br /&gt;should also populate the tables which are necessary to 'start' the&lt;br /&gt;application such as user roles etc. Other than this, the transactional&lt;br /&gt;data should not be populated using these scripts. The data should be&lt;br /&gt;populated next.&lt;br /&gt;&lt;/span&gt; &lt;/p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;I would suggest not to use your development data on the staging &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; machine. Create scripts to insert values into the newly created tables &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; and then populate the data. Make sure someone who knows the &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; functionality of the application and has an overview of the database &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; design, but doesnt know the code does this, as then the testing will &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; bring out some bugs which developers tend to hide using 'manipulated &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; data'.  &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15316861-115705159221590328?l=theneverendingooze.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://groups.google.co.in/group/DotNetDevelopment/browse_thread/thread/5da3f47a0a08ca0f?hl=en' title='Setting up test environment.....What is involved?'/><link rel='replies' type='application/atom+xml' href='http://theneverendingooze.blogspot.com/feeds/115705159221590328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15316861&amp;postID=115705159221590328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115705159221590328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115705159221590328'/><link rel='alternate' type='text/html' href='http://theneverendingooze.blogspot.com/2006/09/setting-up-test-environmentwhat-is.html' title='Setting up test environment.....What is involved?'/><author><name>sAnKaLp VeRmA</name><uri>http://www.blogger.com/profile/15828691828465751118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15316861.post-115701927579547870</id><published>2006-08-31T15:40:00.000+05:30</published><updated>2006-09-24T18:21:45.536+05:30</updated><title type='text'>Testing.....WHO? ME?</title><content type='html'>&lt;div class="postTitle" id="95894650-ff39-44cd-b86a-bad705c77f19" contenteditable="true" style="border-width: 0px; margin: 0px; padding: 0px; font-weight: bold; text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;Testing.....WHO?  ME?&lt;/span&gt;&lt;/div&gt;&lt;div class="post"&gt; &lt;div class="body"&gt;  &lt;div class="postBody" id="5a6160c7-9144-4c8d-b3a5-70915c9d5d4f" contenteditable="true" style="border-width: 0px; margin: 4px 0px 0px; padding: 0px;"&gt;  &lt;p&gt;&lt;span style="font-size:100%;"&gt;Being into the IT industry for the past 4 years now has given me a fair idea  of testing and the advantages it brings with it. But one thing that I have never  done is thinking about what would be the best way to design a test case  document, is there any formal definition of a test case, what all should a test  case not have and so on.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;Recently when I was given this responsibility of managing a project, i really  thought of giving it a thought. We were supposed to implement ISO 9001:2000 in  our project and this meant documenting each and everything, and test cases form  an integral part of the software development life cycle. So, let me rephrase the  statement as "I was FORCED to give it a thought".&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;A test case is an entity which fully tests all the related aspects of a  requirement in an application-be it functionality, be it UI, be it database. In  other words, it tests ALL the aspects of a feature or requirement. It  includes:&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;The reason why the test is being done.  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;The process that would be followed for doing the test.  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;The scenarios that would arise out of performing a particular test.  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;The criteria which would decide when a test has failed.  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;The criteria which would decide when a test has succeeded.  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Any specific software and hardware requirements for the test.  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;The assumptions that have been done in order to write the test  cases.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;This is too much of work to do-right? So, then who knows about the project so  much that he can write the test case document? The project manager? Does he have  all the time to write these test cases? I dont think so...I can feel this now  that I am doing project management. In most of the cases, it is mostly a Quality  Analyst/Engineer or a team of QAs who sit down along with the Project  Manager/Leader, understand the functionality of the entire task and then  accordingly write the test cases. Once the test cases have been put down by the  QA team, the document has to be reviewed by the peers.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;Figure 1.0 lists a sample detailed test case document which the QA of my team  Vidya Nair wrote for one on the various modules of the existing application I am  working on.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/2043/1414/1600/testcases.0.png"&gt;&lt;img style="cursor: pointer; width: 354px; height: 194px;" src="http://photos1.blogger.com/blogger/2043/1414/320/testcases.0.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;Once the test cases have been reviewed by the peers, it should function as a  tool to help the developers in their development. This is one reason why I  believe a QA team has a BIG role in delivering the product bug-free and with the  best quaity on time. One of the issues, which stops a QA engineer from coming up  with a good test case is the plethora of information available to him/her. The  key here, I guess is to "work smart"-Pick out the most important scenarios and  frame your test cases accordingly-think about the scenarios which are critical  for the application to function and work on them first. Then, if you have  sufficient time, you can work on more test cases having a lower  priority.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15316861-115701927579547870?l=theneverendingooze.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theneverendingooze.blogspot.com/feeds/115701927579547870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15316861&amp;postID=115701927579547870' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115701927579547870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115701927579547870'/><link rel='alternate' type='text/html' href='http://theneverendingooze.blogspot.com/2006/08/testingwho-me.html' title='Testing.....WHO? ME?'/><author><name>sAnKaLp VeRmA</name><uri>http://www.blogger.com/profile/15828691828465751118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15316861.post-115518709798130715</id><published>2006-08-10T10:25:00.000+05:30</published><updated>2006-09-24T18:30:04.006+05:30</updated><title type='text'>Some basic rules of development</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;h4 class="TextColor1" id="subjcns!BA941134539258D2!244"  style="margin-bottom: 0px;font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://petesbloggerama.blogspot.com/2006/07/some-basic-rules-of-development.html"&gt;Some Basic Rules of Development&lt;/a&gt;&lt;/span&gt;&lt;/h4&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;div  id="msgcns!BA941134539258D2!244" style="font-family:verdana;"&gt; &lt;div&gt;&lt;span style="font-size:100%;"&gt;1) A development team should have a single design authority. The best  systems have one member of a team who dominates the design and development and  has a clear view of where the system is going. Without this strong focus and  lead, many projects throw together a set of conflicting ideas and the system  will ultimately stagnate or become extremely difficult to maintain. This person  needs to be big on communication and small on ego.&lt;br /&gt;&lt;br /&gt;2) Code should be  documented, but not overdocumented. Lots of documentation does not equal good  design and will not guarantee a good, well designed system. A system can have a  good design even with minimal documentation. Especially, keep in mind that the  initial set of documentation is for the DEVELOPERS THEMSELVES.&lt;br /&gt;&lt;br /&gt;3) Good  people build good systems, bad people build bad systems. No amount of processes  or documentation will change that, it will only make a relatively small  increment in system quality. The overwhelming factor in developing a quality  solution is to hire good people. NASA statistics have shown productivity  differences of 1000% between their best and worst people.&lt;br /&gt;&lt;br /&gt;4) Design for  change and flexibility. Things will always change, do not tie your system to  rigid principles or business processes that change frequently. Break your system  up into its OOP oriented objects and define them as early as possible in the  development cycle. Make sure everybody on the team understands what the objects  are and what their purpose is, and how they will interact with each other.&lt;br /&gt;&lt;br /&gt;5) Don't build a foundation on a sand dune. The first few steps in the  project are usually the most critical: the choice of tool, platform,  architecture etc. If the wrong choices are made, it can result in a lot of  rework and will destroy the motivation of most development teams. If you find  early in your process that a decision may have been wrong, be smart enough to  change it instead of attempting to "Band-Aid" it into functionality.&lt;br /&gt;&lt;br /&gt;6)  Keep it simple, don't build in complexity that doesn't need to be there. Don't  spend time making the system portable if it doesn't need to be. If you're using  SQL 2005 and are going to stick with it, use all the SQL 2005 specific features  you like. "Explicit code is easier to understand, which makes the code easier to  modify" -- Martin Fowler&lt;br /&gt;&lt;br /&gt;7) Use accepted and well-known technology.  Niche tools/technologies are expensive, lack support and it can be difficult  finding people with the right skills, particularly a couple of years later.&lt;br /&gt;&lt;br /&gt;8) Deliver often. A project taking more than 6 months before delivering  software will likely fail and the reasons for it being built may not even apply  anymore. Delivering often provides good targets for developers and good  visibility for the system in question. If you have 3 Alphas and 6 Betas over a  short period of time, that's better than no Alphas and one Beta. User feedback  is extremely important in being able to be flexible enough to make mid-course  corrections.&lt;br /&gt;&lt;br /&gt;9) Don't add extra people to a team to try and speed up  development. Increasing the size of a team mid project will almost certainly  slow development down. A team of 4 to 6 developers is enough for most projects.  Large projects should be broken down into small development teams of this size.&lt;br /&gt;&lt;br /&gt;10) Use of industry-accepted development methods: object-oriented design  and modelling, well-structured development process, unit testing, sound  documentation, use of version control tools, project management tools.&lt;br /&gt;&lt;br /&gt;11) Communicate often within the team. You don't need four different  people each creating their own Data Accesss helper class when if they had all  sat down and discussed it first, everybody could all be using the same one, with  better features.&lt;br /&gt;&lt;br /&gt;12) Above all, do be nice to your development team.  Developer turnover in the middle of a project can really send expenses through  the roof, and morale down the toilet.&lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/div&gt; &lt;div&gt;&lt;span style="font-size:100%;"&gt;~Peter Bromberg&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15316861-115518709798130715?l=theneverendingooze.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://petesbloggerama.blogspot.com/2006/07/some-basic-rules-of-development.html' title='Some basic rules of development'/><link rel='replies' type='application/atom+xml' href='http://theneverendingooze.blogspot.com/feeds/115518709798130715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15316861&amp;postID=115518709798130715' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115518709798130715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115518709798130715'/><link rel='alternate' type='text/html' href='http://theneverendingooze.blogspot.com/2006/08/some-basic-rules-of-development.html' title='Some basic rules of development'/><author><name>sAnKaLp VeRmA</name><uri>http://www.blogger.com/profile/15828691828465751118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15316861.post-115166335883537598</id><published>2006-06-30T12:42:00.001+05:30</published><updated>2006-09-05T16:34:59.926+05:30</updated><title type='text'></title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Using AJAX in ASP.NET&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;If some one has ever used &lt;a href="http://www.google.com/webhp?complete=1&amp;hl=en"&gt;Google Suggest&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;, then they have seen AJAX (Asynchronous Javascript and XML) in action. I have been using Google Suggest for quite some time now and never bothered to ponder over how this thing works. I had been discussing this with my colleague Sanjeeva for quite some time but really came to know more about the technology when an issue came up in my current project.(happens with me all the time-when I use it, I get to know more. :-) )&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Google has been vigorously using AJAX lately-take Google Maps or Google Suggest-both are based on the fundamentals on AJAX and work beautifully. I really appreciated the idea of the search engine telling me what to search ;-) And what more-these applications are doing beautifully-check out these analysis of the same- &lt;a href="http://johnvey.com/features/gmailapi/"&gt;Gmail&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;, &lt;a href="http://serversideguy.blogspot.com/2004/12/google-suggest-dissected.html"&gt;Google Suggest&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; and &lt;a href="http://web.archive.org/web/20050331002145/jgwebber.blogspot.com/2005/02/mapping-google.html"&gt;Google Maps&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;The issue is as follows -- We have a web application which displays beautiful reports to the user apart from having some other nitty-grities. Apart from the graph being displayed on the page, there is a plethora of information being shown to the user. Then the customer asked us to add a filter to the chart so that the user can get a new chart based on the filter chosen. Doing a postback would have been good and beauifully traditional, BUT then the entire page would be loaded again and this would make the user mad waiting for the entire information to be loaded up again. Just to make myself clear, when I say 'traditional' approach, I mean that any user action, say a button click) in the web page would lead to a postback (if configured that way, of course). So effectively it means a HTTP request would be sent to the server. On receiving the request, the server would take appropriate action and return a rendered HTML page back to the waiting browser. But the question that is obvious out here is-what if the page is very heavy? Wont the page take a lot of time to load again when all the user required was something refresh the chart when he/she changes some display criteria? How many times have you banged your head on the table, when you select 'India' in your drop down and the page is posted back to fetch all the states that are a part if the Indian Republic? Why dont the application developers just send the states back to the browser when the country is selected? Why do they have to load the entire page again? Quite obvious questions and these are what came to my mind...&lt;br /&gt;&lt;br /&gt;Here is where we thought of taking help of AJAX.&lt;br /&gt;&lt;br /&gt;An AJAX implemented web page removes all this HTTP request-response pain by adding a sort of layer in between. AJAX allows the user to use JavaScript to send XMLHTTPWebRequest to the server by making HTTP requests (GET/POST) without reloading the page. Basically, it is just old wine in a new bottle since technologies like XMLHTTPRequest etc were already there in the market for quite some time when Mcrosoft introduced it in IE 5.0 and Apple in Safari 1.2 and Mozilla in Firefox 1.0 onwards. The server handles the request and sends a response which MAY NOT be XML-it can be something as simple as comma separate list or simple string.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;A couple of Google searches later I was ready with a fully functional AJAX implemented web page.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;This is the javascript that was added to the aspx page --&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;var xmlHttp; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;var requestURL = 'some aspx page made to handle the ajax request'; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;var is_ie = (navigator.userAgent.indexOf('MSIE') &gt;= 0) ? 1 : 0; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;var is_ie5 = (navigator.appVersion.indexOf("MSIE 5.5")!=-1) ? 1 : 0; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;var is_opera = ((navigator.userAgent.indexOf("Opera6")!=-1)(navigator.userAgent.indexOf("Opera/6")!=-1)) ? 1 : 0; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//netscape, safari, mozilla behave the same??? &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;var is_netscape = (navigator.userAgent.indexOf('Netscape') &gt;= 0) ? 1 : 0; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;function show_data(strName) &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;{ &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;alert(strName); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//Append the query strings to search for to the requestURL &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;var url = requestURL + '?q=' + strName + '&amp;ajax=1&amp;amp;amp;amp;amp;amp;amp;amp;amp;dummy=' + new Date().getTime(); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;alert(url); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//Create the xmlHttp object to use in the request &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//stateChangeHandler will fire when the state has changed, i.e. data is received back &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;// This is non-blocking (asynchronous)&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt; xmlHttp = GetXmlHttpObject(stateChangeHandler); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//Send the xmlHttp get to the specified url &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;xmlHttp_Get(xmlHttp, url); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;} &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//stateChangeHandler will fire when the state has changed, i.e. data is received back &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;// This is non-blocking (asynchronous) &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;function stateChangeHandler() &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;{ &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//readyState of 4 or 'complete' represents that data has been returned &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;if (xmlHttp.readyState == 4 xmlHttp.readyState == 'complete') &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;{ &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//Gather the results from the callback &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;var str = xmlHttp.responseText; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;var temp = new Array(); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;temp = str.split(','); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//alert(str); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//Populate the innerHTML of the div with the results &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;document.getElementById('SOMEHTMLIMAGECONTROL').src = temp[0]; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;} &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;} &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;// XMLHttp send GET request &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;function xmlHttp_Get(xmlhttp, url) &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;{&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt; xmlhttp.open('GET', url, true); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;xmlhttp.send(null); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;} &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;function GetXmlHttpObject(handler) &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;{ &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;var objXmlHttp = null; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//Holds the local xmlHTTP object instance &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//Depending on the browser, try to create the xmlHttp object &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;if (is_ie)&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;{ &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//The object to create depends on version of IE &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//If it isn't ie5, then default to the Msxml2.XMLHTTP object &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;var strObjName = (is_ie5) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//Attempt to create the object &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;try&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;{ &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;objXmlHttp = new ActiveXObject(strObjName); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;objXmlHttp.onreadystatechange = handler; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;} &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;catch(e) &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;{ &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//Object creation errored &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;alert('IE detected, but object could not be created. Verify that active scripting and activeX controls are enabled'); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;return; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;} &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;} &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;else if (is_opera)&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;{ //Opera has some issues with xmlHttp object functionality &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;alert('Opera detected. The page may not behave as expected.'); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;return; } &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;else { // Mozilla Netscape Safari &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;objXmlHttp = new XMLHttpRequest(); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;objXmlHttp.onload = handler; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;objXmlHttp.onerror = handler;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt; } //Return the instantiated object &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;return objXmlHttp; }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;The function show_data is called on some event say the change of drop down or click of a button.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;The changes that were done in the code behind are --&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;string ajax = ""; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;ajax = Request.QueryString["ajax"]; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;if(ajax != null) &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;{ &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;Response.Clear(); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;Response.Write(imageURL + "," + imageBarURL); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//imageBarURL is the path to the image which will be displayed on the webpage. &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;Response.End(); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;}&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;You would notice a small thing in the javascript above-"&amp;dummy=' + new Date().getTime();" This was done so that the caching effect of the browser can be done away with. I know it is a hack-but it works.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;A better way would be to expire the cache on the parent web page or user control as follows --&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;//Avoid the caching effect in Internet Explorer &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;Response.Cache.SetCacheability(HttpCacheability.NoCache); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;Response.Buffer = true; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;Response.ExpiresAbsolute = DateTime.Now.Subtract(new TimeSpan(360, 0, 0, 0)); Response.Expires = -1; &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(153, 255, 255);"&gt;Response.Cache.AppendCacheExtension("max-age=0, no-store, must-revalidate"); Response.AddHeader("Pragma", "no-cache"); &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;The above works on IE 5.0 and above, Mozilla Firefox, Safari, Netscape 7.0 and above. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15316861-115166335883537598?l=theneverendingooze.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theneverendingooze.blogspot.com/feeds/115166335883537598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15316861&amp;postID=115166335883537598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115166335883537598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/115166335883537598'/><link rel='alternate' type='text/html' href='http://theneverendingooze.blogspot.com/2006/06/using-ajax-in-asp_30.html' title=''/><author><name>sAnKaLp VeRmA</name><uri>http://www.blogger.com/profile/15828691828465751118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15316861.post-113086033021488788</id><published>2005-11-01T21:14:00.000+05:30</published><updated>2005-11-01T21:22:10.226+05:30</updated><title type='text'></title><content type='html'>A very Happy Deepavali to everyone.&lt;br /&gt;&lt;br /&gt;We did a small family puja in the evening and then lit candles and diyas all over the place. For the first time, am not going to burst crackers. Reason??? Out of solidarity for the families who were affected by the recent earthquake in Jammu and Kashmir and the serial bomb blasts in New Delhi.&lt;br /&gt;Moreover, every year, someone or the other keeps 'educating' us about the pollution caused by the crackers especially during Deepavali time. Last year, after Deepavali, there was a thick smog over New Delhi for a couple of days. I dont need crackers-'Deepavali' word itself spells 'Deep' (Light) rather than 'Patakha'-avali. (Patakha is Hindi for crackers). And I ensured that lot of candles and diyas were all over my place.&lt;br /&gt;&lt;br /&gt;We are planning a drive to Allahabad day after tomorrow to see my 6 month old niece. Lets see if that materialises or not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15316861-113086033021488788?l=theneverendingooze.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theneverendingooze.blogspot.com/feeds/113086033021488788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15316861&amp;postID=113086033021488788' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/113086033021488788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/113086033021488788'/><link rel='alternate' type='text/html' href='http://theneverendingooze.blogspot.com/2005/11/very-happy-deepavali-to-everyone.html' title=''/><author><name>sAnKaLp VeRmA</name><uri>http://www.blogger.com/profile/15828691828465751118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15316861.post-113074562516518134</id><published>2005-10-31T13:21:00.000+05:30</published><updated>2005-10-31T13:30:25.166+05:30</updated><title type='text'></title><content type='html'>Reached Lucknow via New Delhi yesterday night. Man, the journey was a real pain-in-the-ass. I have sworn that I am never gonna come over to Lucknow by train again. I am gonna take a flight whatever it takes-planning a year in advance or my entire month's salary.&lt;br /&gt;&lt;br /&gt;Moreover, the incident that happened in New Delhi day before yesterday has really pissed me off.......All this bloodshed, all this pain just because these Pakistanis could not defend their country and lost Bangladesh to us??? They would never agree to this but the fact IS that since India was instrumental in getting Bangladesh their freedom, these Pakistanis are hell-bent on making India bleed as well by trying to separate Kashmir from India. Every one has a right to create castles in the air---All you Pakistanis too can create some of your own....but think twice when you kill an innocent citizen.....what has he got to do with your dreams??? Give us some much needed break....I think you also need it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15316861-113074562516518134?l=theneverendingooze.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theneverendingooze.blogspot.com/feeds/113074562516518134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15316861&amp;postID=113074562516518134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/113074562516518134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/113074562516518134'/><link rel='alternate' type='text/html' href='http://theneverendingooze.blogspot.com/2005/10/reached-lucknow-via-new-delhi.html' title=''/><author><name>sAnKaLp VeRmA</name><uri>http://www.blogger.com/profile/15828691828465751118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15316861.post-113074447736699622</id><published>2005-10-31T12:52:00.000+05:30</published><updated>2005-10-31T13:18:49.173+05:30</updated><title type='text'></title><content type='html'>Enough is enough!!!&lt;br /&gt;Dont you all think so? Another bomb blast, another attempt to terrorize the inncocent masses-another attempt to make people think twice before going to that over-crowded market........&lt;br /&gt;What the heck is going on? Why dont these people stay away and deal with the agencies tackling them? Who do they have to bring in the innocent citizens of this country? Was the poor 3 year old who died in the blast in any way affecting their struggle? Were the 3 families who are haggling over the body of the 3 year old remotely anywhere affecting the freedom campaign of these so-called 'Jehadis'? My heart weeps as I think about the families and kith and kin of the INNOCENT masses who died in the bomb blasts.....At the same time I am filled with anger-helpless anger over these people who are doing NOTHING but creating anger in the hearts of the masses.&lt;br /&gt;&lt;br /&gt;This is nothing but an act of war. The damned Pakistanis have not declared one but it is unofficially a war.......one where these cowards dont have the 'balls' to face the third largest standing army in the world 'eye-to-eye', one where the Muslims are trying to create an isolated world where no one else lives, no one else is allowed, no one is allowed to speak, women have no rights, men are allowed to practice polygamy, the Holy Koran is followed so rigidly that there is nothing but hatred in the minds of the people!!!!!!!!! Come on people, GROW UP. In this globalized economy, where the heck are you trying to go by chasing religious fundamentalism???&lt;br /&gt;Yesterday's bomb blasts call for an immediate response from the Indian Government...similar on the lines of the one initiated after the London blasts.&lt;br /&gt;&lt;br /&gt;Either we respond now and bring an end to this once-and-for-all, or we just keep praying to God that there is some decent gap before the next time these terrorists strike back. We need to send a hard-hitting unambiguous message across that we are not at all going to accept such acts of cowardice, acts where innocent citizens are killed. 65 of my POOR INNOCENT country men were killed yesterday by these people.....GOD GUIDE ME AS TO WHAT I SHOULD DO, BRING AN END TO THIS, LET US ALL BREATHE IN PEACE. HELP ME GOD AND MY POOR COUNTRYMEN WHO ARE BEING KILLED FOR NO FAULT OF THEIR'S!!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15316861-113074447736699622?l=theneverendingooze.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theneverendingooze.blogspot.com/feeds/113074447736699622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15316861&amp;postID=113074447736699622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/113074447736699622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/113074447736699622'/><link rel='alternate' type='text/html' href='http://theneverendingooze.blogspot.com/2005/10/enough-is-enough-dont-you-all-think-so.html' title=''/><author><name>sAnKaLp VeRmA</name><uri>http://www.blogger.com/profile/15828691828465751118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15316861.post-112374442547737951</id><published>2005-08-11T12:42:00.000+05:30</published><updated>2005-08-11T12:43:45.486+05:30</updated><title type='text'></title><content type='html'>Creating my frigging FIRST post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/15316861-112374442547737951?l=theneverendingooze.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://theneverendingooze.blogspot.com/feeds/112374442547737951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15316861&amp;postID=112374442547737951' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/112374442547737951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15316861/posts/default/112374442547737951'/><link rel='alternate' type='text/html' href='http://theneverendingooze.blogspot.com/2005/08/creating-my-frigging-first-post.html' title=''/><author><name>sAnKaLp VeRmA</name><uri>http://www.blogger.com/profile/15828691828465751118</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
