<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Adventures of Sudheer</title>
	<atom:link href="http://itzsudheer.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://itzsudheer.wordpress.com</link>
	<description>A Resource Puller's Blog</description>
	<lastBuildDate>Sat, 05 Jun 2010 11:03:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='itzsudheer.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Adventures of Sudheer</title>
		<link>http://itzsudheer.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://itzsudheer.wordpress.com/osd.xml" title="Adventures of Sudheer" />
	<atom:link rel='hub' href='http://itzsudheer.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Agile, a Different Methodology</title>
		<link>http://itzsudheer.wordpress.com/2010/06/05/agile-a-different-methodology/</link>
		<comments>http://itzsudheer.wordpress.com/2010/06/05/agile-a-different-methodology/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 11:03:33 +0000</pubDate>
		<dc:creator>Sudheer</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[SCRUM]]></category>
		<category><![CDATA[DSDM]]></category>

		<guid isPermaLink="false">http://itzsudheer.wordpress.com/?p=184</guid>
		<description><![CDATA[Introduction In the past year, Agile development methodologies have moved from the fringes to being considered a mainstream method for software development. The Agile movement started in the late 90&#8242;s with the advent of Extreme Programming (XP), SCRUM, DSDM, Feature Driven Development and others. The Agile manifesto created in February of 2001 contained the core [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=184&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>
<p>In the past year, Agile development methodologies have moved from the fringes to being considered a mainstream method for software development. The Agile movement started in the late 90&#8242;s with the advent of Extreme Programming (XP), SCRUM, DSDM, Feature Driven Development and others. The Agile manifesto created in February of 2001 contained the core principles of Agile development. Why is this important to us?</p>
<p>Agile is important, because in the end, it has helped to bring business discipline to software development. Agile has a lot in common with Lean methods, exemplified by the Toyota Production System. Lean methods have begun appearing in Agile teams, bringing even more business focus to software development/IT teams.</p>
<h3>Comparing Agile against what?</h3>
<p>When discussing Agile, what are we comparing it against? I am comparing Agile against strict Plan driven development approaches. Often called waterfall, your company may not have a specific name for it. But if the current process involves making sure that all the requirements are nailed down before the project is started, and changing those requirements includes a request to walk on water before it can be changed this is the process we are comparing Agile against.</p>
<p>To get a sense of the high level view of Agile you can read the manifesto at <a href="http://Agilemanifesto.org/">AgileManifesto.org</a>. The manifesto begins with four statements:</p>
<ul>
<li>Individuals and interactions over process and tools</li>
<li>Working software over comprehensive documentation</li>
<li>Customer Collaboration over contract negotiation</li>
<li>Responding to change over following a plan</li>
</ul>
<p>These statements may seem a little touchy, feely, so let us put some meat on the bone, to understand how to implement this in your shop.</p>
<p>For each of the statements in the Agile manifesto, concrete practices from Agile methods are used. Each statement is a section that will contain what practices are used to achieve the intent.</p>
<h3>Individuals and interactions over process and tools</h3>
<p>This statement may indicate to you that Agile has no process. In fact I have found this to be far from the truth. Agile does not throw process out the door, rather Agile says that Individuals and interactions trump the process and tools.</p>
<p>This shows in the frequent planning and daily standup meetings common to most Agile methods. In XP, Scrum, Lean the daily standup meeting is a staple. At this meeting all committed team members interact with each other via these questions:</p>
<ol>
<li>What did I do yesterday?</li>
<li>What am I working on today?</li>
<li>What is blocking my work?</li>
</ol>
<p>The daily standup should help communicate project progress. In other words, what is communicated in the standup (individuals AND interactions), may need to supersede the project plan. It is during these meetings that hurdles are uncovered. But usually they are discovered in time to fix the problems quickly. If a technology is not working as expected, or the <span style="text-decoration:underline;">business logic</span> actually conflicts with other logic, it is brought up in these meetings, and after the meeting the action plan is created.</p>
<h3>Working software over comprehensive documentation</h3>
<p>This phrase is best described by the practice of delivering software on a regular, fairly quick schedule. Normally in XP and Scrum, you work in iterations. The team selects the length of the iteration at the beginning of the project, and generally stays with that length for the duration of the project. Within an iteration, the team selects the stories or features they will complete. Once in that iteration, the stories that are being worked on cannot be changed. Any changes can be introduced at the beginning of the next iteration.</p>
<p>Normally, at the end of the iteration, there is a demo and planning meeting. In this meeting, your team demos the solution including the new features/stories to the stakeholders/customer. The intent is that if the customer likes this, the team could release that version of the software immediately. In practice this can mean that the team releases the software to QA or User Acceptance state where customers can test/use the new features. Other teams may release to production (think of all the google beta software you have used).</p>
<p>One note on iterations, the length is generally considered to be 1 week to 1 month. This is up to the team. Again, this decision should be made as a self determining team, it should not come from management.</p>
<p>Many Lean/Kanban teams do not use iterations, but they do frequent releases. The releases happen on a similar schedule as iterations. This allows the Lean/Kanban teams to release working software frequently.</p>
<p>The reason for valuing working software over detailed and comprehensive documentation is that the value delivered is the software. Documentation of your system should be baked into the process of delivering software. Agile does this, by encouraging good software engineering principles like Test Driven Development using automated unit tests and automated user acceptance tests.</p>
<p>Test Driven Development using unit tests, and acceptance tests, encourage test writing that serve as documentation. A well written unit or acceptance test should document the requirement the developer is testing for. When any maintenance is needed, different developers should be able to look at these unit tests and understand the requirements needed.</p>
<p>In addition, this suite of tests add a fantastic safety net for modifications later in the life of the software. If the software sits for a year before modifications, the new team can start development on new features, knowing that those tests ensure that they cannot break existing features.</p>
<div class="wp-caption alignnone" style="width: 586px"><a href="http://www.developer.com/img/2009/11/unit01.jpg"><img title="Figure 1: Example of what unit testing frameworks look like" src="http://www.developer.com/img/2009/11/unit01.jpg" alt="Figure 1: Example of what unit testing frameworks look like" width="576" height="431" /></a><p class="wp-caption-text">Figure 1: Example of what unit testing frameworks look like</p></div>
<p><strong>Customer Collaboration over Contract Negotiation</strong></p>
<p>In many plan driven environments, the customer sits down with analysts, and they put together a comprehensive document with their requirements. This document is handed over to a vendor or internal IT group, and an estimate is expected. The vendor/IT group can ask questions about the requirements, and once answered, they come back with an estimate.</p>
<p>At this point the customer is done, except for occasional contacts for milestones. Then when the agreed upon time frame is complete, the vendor/IT team delivers the software. For many, this is the first time the customer team has seen the software. In this scenario, many times, the customer asks to add features, or feels that what they wanted was not delivered.</p>
<p>When Agile methodologists talk about customer collaboration over contract negotiation, there is an expectation of close customer involvement. This means in the planning meetings held after every iteration, stakeholders are present. This also means that the customer is expected to assist team members in verifying requirements. So they may need to participate in creation of automated acceptance tests.</p>
<p>These acceptance tests, using tools like fitnesse, selenium, rSpec, define the tests using an agreed upon format. The tests are written in a business like language to call and test the software components that implement the <span style="text-decoration:underline;">business logic</span>.</p>
<p>In other words, the Customer Collaboration over Contract Negotiation does mean that the customer is more involved with development. The customer commits more than the example given at the beginning of this section. And that collaboration is designed to foster more trust between the customer and development team.</p>
<h3>Responding to change over following a plan</h3>
<p>This is my favorite statement on Agile. It also cuts to the heart of how a business can differentiate itself over the competition. When your systems and processes are configured to respond to change quickly and effectively, your business has a good chance to prosper and make a difference.</p>
<p>Practically this philosophy means that during the development of the software, expect and embrace changes. In XP, requirements are met by creating them in small sizes called user stories. Other Agile methods may break the requirements into features. No matter what the size of the requirement, each method allows customers to make changes before the start of each iteration.</p>
<p>For example, when working on an ecommerce site, one of the requirements may be that a customer of the site can bookmark the product, to be available in their shopping cart after they come back, in 1 day or 1 year. At the beginning of an iteration, the customer has a new requirement. Their research indicates that a new feature that adds a recommendation engine to the site will increase sales. During the planning meeting the customer now asks to put the new feature for the recommendation engine as the first one to work on in this iteration. The team is fine with this, and the customer understands that their other feature may not get in soon or ever.</p>
<p>Taking care of changes so close to the process ensures quick response to customer needs. This allows Agile teams to work without cumbersome change committees, just the stakeholders in the planning meeting.</p>
<p>This does mean that in theory the customer could start out with say 150 stories for their requirements. They could through the course of this process get rid of 100 stories and add 200. But Agile processes are transparent enough to show what the cost of those stories is. The customers in the planning meetings see how much the team completes, and the stories left to complete. When the customer wants to change direction, they can, but then old stories that have not been worked on yet, will be pushed to the back.</p>
<p>As noted above, those stories that do not get into an iteration may never get worked on. During the planning meetings and daily standups, customers/stakeholders begin to see the <span style="text-decoration:underline;">cost</span> of each feature. As they become familiar with the process, less important features may not be worked on, if there is no<span style="text-decoration:underline;">budget</span>. This whole process helps the team focus on features with the most value to the company.</p>
<h3>Agile is not Chaos</h3>
<p>Through the description of the methods used to back up Agile principles, you see that Agile is not about chaos. Instead the Agile name is pretty apt. It is about responding quickly to change, through a process. And that process is generally about delivering good value to the customer, whoever that customer is.</p>
<p>As Agile methods mature, there is a movement incorporating more lean values and methods into the process. Lean fits perfectly with Agile in its pure sense, and helps focus the teams even more into the business side of software/IT. In the end, the focus is about your customers, and your people. Agile is a way to get there.</p>
<h3>References</h3>
<p>Robert C. Martin &#8220;<a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://www.amazon.com/gp/product/0131857258?ie=UTF8&amp;tag=corporatecode-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0131857258">Agile Principles, Patterns and Practices in C#&#8221;</a><br />
Mike Cohn &#8220;<a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://www.amazon.com/gp/product/0131479415?ie=UTF8&amp;tag=corporatecode-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0131479415">Agile Estimating and Planning</a>&#8220;<br />
David Anderson &#8220;<a href="http://www.Agilemanagement.net/Articles/Papers/AKanbanSystemforSustainin.html">A Kanban System for Sustaining Engineering</a>&#8220;.<br />
Mary Poppendieck and Tom Poppendieck <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://www.amazon.com/gp/product/0321150783?ie=UTF8&amp;tag=corporatecode-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321150783">Lean Software Development: An Agile Toolkit</a></p>
<h3>About the Author</h3>
<p>Eric Landes is a Project Manager/Project Lead for a large corporate IT department, specializing in coaching Agile teams. He has 4 + years experience using Agile/Lean techniques to bring customer value and a team focus to projects. See his <a href="http://www.linkedin.com/pub/0/539/b14">LinkedIn</a> profile for more information</p>
<p>Ref: <a title="Developer.com" href="http://www.developer.com/mgmt/article.php/11085_3846406_1/Agile-a-Different-Methodology.htm">Developer.com</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/itzsudheer.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/itzsudheer.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/itzsudheer.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/itzsudheer.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/itzsudheer.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/itzsudheer.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/itzsudheer.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/itzsudheer.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/itzsudheer.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/itzsudheer.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/itzsudheer.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/itzsudheer.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/itzsudheer.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/itzsudheer.wordpress.com/184/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=184&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://itzsudheer.wordpress.com/2010/06/05/agile-a-different-methodology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47e058e0059ac4ee482dfd3c78222c13?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sudheer</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/11/unit01.jpg" medium="image">
			<media:title type="html">Figure 1: Example of what unit testing frameworks look like</media:title>
		</media:content>
	</item>
		<item>
		<title>The 7 Rules for Writing World Class Technical Documentation</title>
		<link>http://itzsudheer.wordpress.com/2010/06/05/the-7-rules-for-writing-world-class-technical-documentation/</link>
		<comments>http://itzsudheer.wordpress.com/2010/06/05/the-7-rules-for-writing-world-class-technical-documentation/#comments</comments>
		<pubDate>Sat, 05 Jun 2010 10:36:46 +0000</pubDate>
		<dc:creator>Sudheer</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Technical Documentation]]></category>
		<category><![CDATA[Writing Technical Document]]></category>
		<category><![CDATA[Writing Skills]]></category>
		<category><![CDATA[Documentation]]></category>

		<guid isPermaLink="false">http://itzsudheer.wordpress.com/?p=181</guid>
		<description><![CDATA[Introduction Writing a technical document is hard. Reading a poorly written technical document is harder, and probably more painful than writing one. It takes a lot of work to create a clear, accurate, engaging piece of technical writing. Thus, in order to make life a little easier for all parties involved, I am going to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=181&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Introduction</h2>
<p>Writing a technical document is hard. Reading a poorly written technical document is harder, and probably more painful than writing one. It takes a lot of work to create a clear, accurate, engaging piece of technical writing. Thus, in order to make life a little easier for all parties involved, I am going to share with you the 7 Rules that I follow when creating a piece of technical documentation. I did not think these rules up on my own. Rather, I formulated them from having had the benefit of working with many gifted technical and copy editors for more than a decade. Anything that I understand is because others have shown me the way. I cannot be more grateful.</p>
<p>Hopefully after reading this article, you will have some new tools in your technical writing toolbox that will help you create technical documents that are clearer, more engaging, less confusing and a lot more fun to read. Also, I&#8217;ve added at no extra charge to you, the consumer, a bonus section at the end that describes the process I use to create a piece of technical writing.</p>
<p>Okay, so here are the 7 Rules:</p>
<ol>
<li>Dry sucks</li>
<li>Before you start, be clear about what you want your reader to do after you end</li>
<li>Write to a well formed outline, always</li>
<li>Avoid ambiguous pronouns</li>
<li>clarity = illustrations + words</li>
<li>When dealing with concepts&#8230; logical illustration and example</li>
<li>Embrace revision</li>
</ol>
<h2>1. Dry sucks</h2>
<p>This is probably the hardest rule to formalize and the most important rule to follow. In the modern world of the Internet there are many forces at work vying for the attention of your reader. Boring, business as usual writing will not work. For better or worse, your reader wants to be entertained as well as informed. Therefore, if you create writing that is unclear and not fun, the reader will simply click the proverbial &#8220;next&#8221;; button and move on to another web page, another TV show or his or her Facebook page.</p>
<p>The easiest way that I&#8217;ve found to keep the reader entertained is to keep myself entertained. I make a significant effort always to write an article that I will want to read. I strive to have fun when I am writing. If I&#8217;m bored, the reader will be bored. If I&#8217;m confused, the reader will be confused. If I don&#8217;t really care about the topic at hand, the reader will never care. It&#8217;s that simple.</p>
<p>I like humor, so I try to make my writing humorous without compromising clarity. I try to talk to the reader, not at the reader. I write about topics that really matter to me. I use illustrations extensively in order to avoid confusing the reader.</p>
<p>Again, I try always to make the reading experience fun. I am aware always that I am writing in a competitive environment. There&#8217;s a lot of content out there that wants a piece of the reader&#8217;s attention. Thus, my advice for Rule #1 is, if you make your writing fun for you, it will be fun for the reader.</p>
<h2>2. Before you start, be clear about what you want your reader to do after you end</h2>
<p>Technical writing is all about the subsequent behavior of the reader. The reader is investing time reading your work because he or she wants to be able to do something after the reading experience is over. That something may be learning how to make <a href="http://allrecipes.com/recipe/best-chocolate-chip-cookies/Detail.aspx">chocolate chip cookies</a>, power down a <a href="http://www.howstuffworks.com/nuclear-power.htm/printable">nuclear reactor</a> or set up a <a href="http://developer.yahoo.com/hadoop/tutorial/module7.html">Hadoop cluster</a>. The important thing to remember is that the reader is using your writing as a means to another end. Your piece is a vehicle to another well defined behavior.</p>
<p>Thus, it will do you well to be very clear about what you want your reader to do after the reading experience is over. State your intention at the beginning. Don&#8217;t leave the reader guessing. Your declaration can be something as simple and obvious as, &#8220;after reading this article you will be able to <em>[fill in the blank here]</em>.&#8221; If you are clear about what you want your reader to do after you end, the easier it will be for you to write your piece at the beginning.</p>
<h2>3. Write to a well formed outline, always</h2>
<p>A well formed outline is the skeleton around which your document grows. Writing a technical document without using an outline is like trying to navigate the <a href="http://www.mta.info/nyct/maps/submap.htm">New York City Subway System</a> without a map. You can end up <em>anywhere</em> and that <em>anywhere</em> may not be where you intended to go.</p>
<p>Writing to an outline is not about creating more work. It&#8217;s about doing less work. When you write to an outline, you know where you&#8217;ve come from and where you are going to.</p>
<p>There are two rules of outlining that I always use.</p>
<ol>
<li>A sublevel topic requires at least one peer.</li>
<li>Any outline level requires at least two sentences.</li>
</ol>
<p>Allow me to elaborate. Listing 1 below is an example of an outline that violates the first rule: <em>A sublevel topic requires at least one peer</em>.</p>
<p>Listing 1: A poorly formed outline</p>
<p>1. Making an Orange Cranberry Tangerine Fizzle</p>
<p>1.1. The steps required for the Fizzle</p>
<p>1.1.1. Preparing the ingredients</p>
<p>1.1.2. Mixing the Fizzle</p>
<p>1.1.3. Serving the Fizzle</p>
<p>Notice please that in Listing 1, Level 1, has a single sublevel, <em>1.1 &#8211; The steps required for the Fizzle</em>. This structure is a violation of the first rule. In order for a sublevel to be well formed, there must be at least one other peer for a topic. In other words, this means that there must be at least two sublevels for any given level.</p>
<p>Please look at Listing 2 below. Notice that there are now three sublevels to Level 1, of which the topic,<em>Mixing the fizzle</em>, now has peers. The single level, <em>The steps required for the Fizzle</em>, has been eliminated.</p>
<p>You may ask, &#8220;Where is the topic, <em>The steps required for the fizzle</em>?&#8221; The answer is that the topic is no longer an outline item but content within the parent topic as shown in Listing 2 below.</p>
<p>Listing 2: A well formed outline that violates the two sentence rule</p>
<p>1. Making an Orange Cranberry Tangerine Fizzle</p>
<p>The section below describes the process that you need follow to make an orange cranberry tangerine fizzle.</p>
<p>1.1. Preparing the ingredients</p>
<p>1.2. Mixing the Fizzle</p>
<p>1.3. Serving the fizzle</p>
<p>Please notice that although Listing 2 presents an outline with a properly structured sublevel, there is only a single sentence as content for the Level 1 topic. Having a single sentence only as content to an outline topic violates the second rule of outlining, <em>Any outline level requires at least two sentences</em>.</p>
<p>Listing 3 below shows the Orange Cranberry Tangerine Fizzle piece adjusted to support the Two Sentence rule.</p>
<p>Listing 3: A well formed outline that supports the Two Sentence Rule</p>
<p>1.Making an Orange Cranberry Tangerine Fizzle</p>
<p>An Orange Cranberry Tangerine Fizzle can be a welcome treat on a hot summer day. The beverage is made from natural ingredients with no artificial flavors. An Orange Cranberry Tangerine Fizzle not only tastes good, but it’s good for you too!</p>
<p>The sections below describe the process that you need follow to make an Orange Cranberry Tangerine fizzle.</p>
<p>1.1. Preparing the ingredients</p>
<p>1.2. Mixing the Fizzle</p>
<p>1.3. Serving the fizzle</p>
<p>Why all the hubbub about proper outline structure and at least two sentences to a level? First, following the Sublevel rule forces me to be very clear about the logical segmentation of my piece. Also the Sublevel rule ensures that my writing communicates my ideas with a flow that makes sense and is easy to follow.</p>
<p>Second, The Two Sentence rule forces me to create copy that is engaging, detailed and makes sense. &#8220;One sentence&#8221; writing often lacks detail. And, with the exception of one- liner comedy, writing of the &#8220;one sentence&#8221; variety is not the most interesting copy to read.</p>
<h2>4. Avoid ambiguous pronouns</h2>
<p>Ambiguous pronoun references are probably the most typical cause of confusion in the practice of technical writing.</p>
<p>Consider the paragraph in Listing 4.</p>
<p>Listing 4: A paragraph that has ambiguous pronouns</p>
<p>Trafalgabors are a fundamental component of the Weebietatas framework. This article shows you what they are about and how to use them.</p>
<p>This paragraph may seem a bit comical, but it illustrates some important points. First, the paragraph attempts to put you in a place that the reader occupies. The reader wants to understand what&#8217;s going on but is unfamiliar with the language in play. And because the language is unfamiliar, the reader is ignorant and thus, vulnerable. The reader wants new information; he or she wants to get smarter. But the reader is also a bit anxious. Admitting ignorance, even to one&#8217;s self, even at a subconscious level, can be disconcerting. The reader is cognitively fragile. Concepts and words that you, the writer, take for granted, might be completely foreign to the reader. One ill explained concept or one word used without proper clarification can turn the reader off.</p>
<p>In the case of the paragraph above, I would not be surprised were you to be asking, &#8220;What is a Trafalgabor? What is a Weebietata? What is the paragraph talking about? How to use Trafalgabors? How to use Weebietatas? How to use both of them? This is confusing. I am going back to my Facebook page.&#8221;</p>
<p>If a reader has to take time out from your writing to figure out what you are trying to communicate, not only is expository flow compromised, the reader most probably will become confused. Once you confuse the reader, you&#8217;ve lost. All the other stuff in the world demanding the reader&#8217;s attention becomes more attractive than your work. So, the &#8220;next&#8221; button is clicked and your work goes unread.</p>
<p>In the case of Listing 4 shown above, the confusion is caused by the ambiguous use of the pronoun,<em>they</em> in the second sentence. Does <em>they</em> refer to the Trafalgabors, the Weebietatas or both? Remember please that the reader knows nothing of Trafalgabors or Weebietatas. (Please see Figure 1 below.)</p>
<p><strong><span style="font-weight:normal;"> </span></strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong></p>
<div class="wp-caption alignnone" style="width: 970px"><a href="http://www.developer.com/img/2009/12/trafalgabors.jpg"><img title="Figure 1: The use of ambiguous pronouns makes technical writing confusing" src="http://www.developer.com/img/2009/12/trafalgabors.jpg" alt="Figure 1: The use of ambiguous pronouns makes technical writing confusing" width="960" height="720" /></a><p class="wp-caption-text">Figure 1: The use of ambiguous pronouns makes technical writing confusing</p></div>
<p></strong></p>
<p>The solution to the problem is simple. Please take a look at Listing 5 below. The ambiguous pronoun is removed. Clarity is restored.</p>
<p>Listing 5: A remedy for ambiguous pronouuns</p>
<p>Trafalgabors are a fundamental component of the Weebietatas framework. This article shows you what Trafalgabors are about and how to use them</p>
<p>Beware! The ambiguous use of pronouns is a sign post on the road to confusing technical writing.</p>
<h2>5. clarity = illustrations + words</h2>
<p>Please take a look at the photo below. Tell me if you can, what is the graphic about?</p>
<div class="wp-caption alignnone" style="width: 500px"><a href="http://www.developer.com/img/2009/12/all-01.jpg"><img title="Figure 1" src="http://www.developer.com/img/2009/12/all-01.jpg" alt="Figure 1" width="490" height="367" /></a><p class="wp-caption-text">Figure 1</p></div>
<p>I am not surprised should you find yourself a bit perplexed. It&#8217;s a perplexing photo. You know what the items are, but you have no idea what they mean. Such is the nature of an illustration. A picture without words lacks context.</p>
<p>When it comes to illustrations, readers require context in order to avoid confusion. The reader should not need to waste time or thought trying to figure out what an illustration is about. The easiest way to avoid confusing illustrations is to provide a caption.</p>
<p>Please take a look at the Figure 2 below. It is the same photo. There is little question as to what the photo is about.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong></p>
<div class="wp-caption alignnone" style="width: 500px"><a href="http://www.developer.com/img/2009/12/all-01.jpg"><img title="Figure 2: The tools and ingredients required to make an Orange Cranberry Tangerine Fizzle " src="http://www.developer.com/img/2009/12/all-01.jpg" alt="Figure 2: The tools and ingredients required to make an Orange Cranberry Tangerine Fizzle " width="490" height="367" /></a><p class="wp-caption-text">Figure 2: The tools and ingredients required to make an Orange Cranberry Tangerine Fizzle </p></div>
<p></strong></p>
<p>When it comes to technical writing, I have found it to be a good practice to provide numbered, descriptive captions with all illustrations.</p>
<p>Please, don&#8217;t create captions that are figure numerals only. Use both a figure numerals and a descriptive comment in the caption. Also, you&#8217;ll do well to avoid orphaning illustrations. An orphan illustration is a figure that exists within the piece of technical writing yet has no reference from within the copy.</p>
<p>If you insert an illustration into your writing, make sure to refer to it in your copy by figure number and location using words such as, <em>above</em> and <em>below</em>. You don&#8217;t want to reader taking time out from reading your work to try to associate an illustration to copy or to locate an illustration within your article. If you add have a &#8220;Figure 4&#8243; in your piece, make sure that you have language in the text that says something like, <em>please refer to Figure 4 below</em>.</p>
<p><strong>Note:</strong> The eye is attracted to pictures</p>
<p>A decade back I worked in the group that wrote hard copy user manuals for a very, very big computer manufacturer. All manuals were subject to formal, quantitative usability study. One of the things that the User Experience Ph. Ds taught me is that as a subject reads a manual, the reader&#8217;s eye goes to the pictures first. Then the reader will read the copy around the picture. Thus, the manual writer&#8217;s tried to make sure that every page of a manual had at least one picture.</p>
<h2>6. When dealing with concepts&#8230; logical illustration and example, logical illustration and example</h2>
<p>Concepts are hard to understand&#8230;.that&#8217;s why they&#8217;re called, concepts. So, when it comes time for me to write about a concept, whether it is, the <a href="http://en.wikipedia.org/wiki/Second_law_of_thermodynamics">Second Law of Thermodynamics</a>, a piece of coding technique or a full fledged software framework, I use the following pattern in my writing: concept &#8211; logical illustration &#8211; example. I try to never introduce a concept without substantiating the concept with a logical illustration and then an example.</p>
<p>Let&#8217;s apply this rule to describe an elementary algebraic concept.</p>
<p>The Transitive Property of Equality is as follows:</p>
<p>If A = B, and B = C, then A = C</p>
<p>Now let&#8217;s provide a logical illustration that describes the concept. (Please see Figure 3.)</p>
<div class="wp-caption alignnone" style="width: 720px"><a href="http://www.developer.com/img/2009/12/trans-01.jpg"><img title="Figure 3: Thee Transitive Property of Equality is a fundamental principle of elementary algebra" src="http://www.developer.com/img/2009/12/trans-01.jpg" alt="Figure 3: Thee Transitive Property of Equality is a fundamental principle of elementary algebra" width="710" height="146" /></a><p class="wp-caption-text">Figure 3: Thee Transitive Property of Equality is a fundamental principle of elementary algebra</p></div>
<p>Listing 6 below shows a few concrete examples to solidify the understanding of the concept at hand.</p>
<p>Listing 6: Some concrete examples of the Transitive Property of Equality</p>
<ul>
<li>If 7 = 3 + 4, and 3 + 4 = 5 + 2, then 7 = 5 + 2</li>
<li>If 12 + 5 = 7 + 10, and 7 + 10 = 6 + 11, then 12 + 5 = 6 + 11</li>
<li>If x + y = z, and z = 2a, then x + y = 2a</li>
</ul>
<p>Thus, the rule as has been satisfied. We presented the concept, The Transitive Property of Equality, provided a descriptive illustration and followed up with concrete examples that substantiate the concept.</p>
<p>Let&#8217;s move on to a concept that is more relevant to software development and a bit more difficult to understand. The concept is <a href="http://maven.apache.org/pom.html">Maven POM Inheritance</a>. In Exhibit 1 below you are presented with the concept at hand and then a logical illustration that describes the concept. Finally, you are presented with another illustration that shows the concrete use of a POM files in an inheritance situation.</p>
<p>Exhibit 1: An excerpt of technical writing that describes Maven POM Inheritance</p>
<p>Understanding POM File Inheritance</p>
<p>A <a href="http://maven.apache.org/pom.html">POM</a> file (Project Object Model) is the XML file that you use to describe and work with a <a href="http://maven.apache.org/index.html">Maven</a>project. You can set up a Maven project to inherit settings from a separate parent POM file. The ability to inherit settings from a parent POM file is called, POM Inheritance. You use the &lt;parent&gt; element in your POM file to define a parent POM file from which to inherit settings.</p>
<p>Figure 4 below illustrates a fictitious project hierarchy that represents an example of how you can set up a master POM file from which other POM files can inherit common settings.</p>
<div class="wp-caption alignnone" style="width: 652px"><a href="http://www.developer.com/img/2009/12/pom-inheritance.jpg"><img title="Figure 4:You can designate a master POM from which you can inherit common settings" src="http://www.developer.com/img/2009/12/pom-inheritance.jpg" alt="" width="642" height="457" /></a><p class="wp-caption-text">Figure 4:You can designate a master POM from which you can inherit common settings</p></div>
<p>Figure 5 below shows the contents POM.xml files for the Maven projects, stooges-web, stooges-api and stooges-dal. Each project is configured to use the &lt;parent&gt; element to inherit settings from stooges-project.</p>
<div class="wp-caption alignnone" style="width: 1019px"><a href="http://www.developer.com/img/2009/12/pom-example.jpg"><img title="Figure 5: Use the &lt;parent&gt; element to direct a Maven project to inherit settings from an external POM file." src="http://www.developer.com/img/2009/12/pom-example.jpg" alt="" width="1009" height="709" /></a><p class="wp-caption-text">Figure 5: Use the &lt;parent&gt; element to direct a Maven project to inherit settings from an external POM file.</p></div>
<p>The example above relies heavily upon figures to provide logical illustration and a concrete example of the concept at hand. Creating interesting, engaging and accurate illustrations and examples are a difficult undertaking, but well worth the effort. Many times creating the illustrations for a piece of technical writing and providing example code will take as much, if not more time than writing the actual copy. Thus, I plan accordingly when allocating my time to meet a deadline.</p>
<p>When it comes to making a concept crystal clear, illustrate and then provide an example.</p>
<h2>7. Embrace revision</h2>
<p>It&#8217;s rare to produce a good piece of technical writing right off the bat. Understanding your topic, organizing your ideas and then finding the language to present the ideas clearly and accurately takes time as well as a lot of effort. Therefore, don&#8217;t constrain yourself by expecting to get everything right the first time. Rather, plan to write at least three versions of your piece. The first version just gets some words in print so that you can understand your intentions. The second version brings clarity and accuracy to your work. Then, once you have your facts right, your illustrations clear and your organization logical, create a third version that makes your work engaging and special.</p>
<p>To hijack the <a href="http://www.quotationspage.com/quote/24945.html">Thomas Edison quote</a>, <em>&#8220;Technical writing is 10% composition and 90% revision!&#8221;</em></p>
<h2>Bonus section</h2>
<p>Now that you learned about the 7 Rules for Creating World Class Technical Documentation, I am going to share with you the process that I use to create a piece of technical writing. It&#8217;s short, but to the point. I call the process, <em>The 7 Steps for Making a Technical Document</em>. Here goes:</p>
<ol>
<li>I create outline, at least to the second level, hopefully to the third.</li>
<li>I add to the outline my illustration for each concept.</li>
<li>I caption my illustrations.</li>
<li>I fill in the copy to the outline, following the Two Sentence Rule, adjusting my outline to adapt to the copy at hand.</li>
<li>I revise.</li>
<li>I send the piece to a subject matter expert for review. (A subject matter expert is a person that can identify inaccuracies and unclear writing.)</li>
<li>I revise again based on the response of the reviewer(s).</li>
</ol>
<p>There you have it. 7 Rules, 7 Steps. Who could ask for more? So, now that you&#8217;ve learned all of my tricks, feel free to go forth and make the world a more accurate, engaging, illustrative and interesting place in which to live. It&#8217;s worth the effort.</p>
<p>Ref: <a title="Developer.com" href="http://www.developer.com/mgmt/article.php/11085_3848981_1/The-7-Rules-for-Writing-World-Class-Technical-Documentation.htm">Developer.com</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/itzsudheer.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/itzsudheer.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/itzsudheer.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/itzsudheer.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/itzsudheer.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/itzsudheer.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/itzsudheer.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/itzsudheer.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/itzsudheer.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/itzsudheer.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/itzsudheer.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/itzsudheer.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/itzsudheer.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/itzsudheer.wordpress.com/181/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=181&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://itzsudheer.wordpress.com/2010/06/05/the-7-rules-for-writing-world-class-technical-documentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47e058e0059ac4ee482dfd3c78222c13?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sudheer</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/12/trafalgabors.jpg" medium="image">
			<media:title type="html">Figure 1: The use of ambiguous pronouns makes technical writing confusing</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/12/all-01.jpg" medium="image">
			<media:title type="html">Figure 1</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/12/all-01.jpg" medium="image">
			<media:title type="html">Figure 2: The tools and ingredients required to make an Orange Cranberry Tangerine Fizzle </media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/12/trans-01.jpg" medium="image">
			<media:title type="html">Figure 3: Thee Transitive Property of Equality is a fundamental principle of elementary algebra</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/12/pom-inheritance.jpg" medium="image">
			<media:title type="html">Figure 4:You can designate a master POM from which you can inherit common settings</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/12/pom-example.jpg" medium="image">
			<media:title type="html">Figure 5: Use the &#60;parent&#62; element to direct a Maven project to inherit settings from an external POM file.</media:title>
		</media:content>
	</item>
		<item>
		<title>9 Useful jQuery Calendar And Date Picker Plugins For Web Designers</title>
		<link>http://itzsudheer.wordpress.com/2009/12/21/9-useful-jquery-calendar-and-date-picker-plugins-for-web-designers/</link>
		<comments>http://itzsudheer.wordpress.com/2009/12/21/9-useful-jquery-calendar-and-date-picker-plugins-for-web-designers/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 11:06:33 +0000</pubDate>
		<dc:creator>Sudheer</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Calendar]]></category>
		<category><![CDATA[Date Picker]]></category>
		<category><![CDATA[Date Range Picker]]></category>
		<category><![CDATA[9 Useful]]></category>

		<guid isPermaLink="false">http://itzsudheer.wordpress.com/?p=176</guid>
		<description><![CDATA[I am a big fan of jQuery, so i always use jQuery Calendar plugins to accomplish my tasks when the clients asked me to implement an event caldendar for them. In this article, i would like to share 9 really useful jQuery Event Calendar and Date Picker plugins that every web designers and developers should [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=176&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am a big fan of jQuery, so i always use <strong>jQuery Calendar plugins</strong> to accomplish my tasks when the clients asked me to implement an event caldendar for them. In this article, i would like to share 9 really useful<strong> jQuery Event Calendar</strong> and <strong>Date Picker plugins</strong> that every web designers and developers should know.</p>
<h3>1. <a title="FullCalendar" href="http://arshaw.com/fullcalendar/" target="_blank">FullCalendar</a></h3>
<p>FullCalendar is a famous jQuery calendar plugin which offers features like drag-and-drop, integration with Google Calendar and able to fetch events through JSON. Designers can easily customize the look and feel of the calendar, while developers can utilize the exposed hooks for user-triggered events.<br />
<img title="FullCalendar" src="http://images.webdesignbooth.com/jquery-calendars/full-calendar.jpg" alt="FullCalendar" width="500" height="396" /></p>
<h3>2. <a title="Astonishing iCal-like Calendar" href="http://www.stefanoverna.com/log/create-astonishing-ical-like-calendars-with-jquery" target="_blank">Astonishing iCal-like Calendar</a></h3>
<p>This is a tutorial which uses both jQuery and CSS to build an iPhone styled calendar application. The author also implement the Coda-like effect for the popup event.<br />
<img title="Astonishing iCal-like Calendar" src="http://images.webdesignbooth.com/jquery-calendars/ical-like-calendar.jpg" alt="Astonishing iCal-like Calendar" width="500" height="454" /></p>
<h3>3. <a title="jQuery UI Datepicker" href="http://docs.jquery.com/UI/Datepicker" target="_blank">jQuery UI Datepicker</a></h3>
<p>The jQuery UI Datepicker is a highly configurable plugin that adds date picker functionality to your pages. You can customize the date format and language, restrict the selectable date ranges and add in buttons and other navigation options easily.<br />
<img title="jQuery UI Datepicker" src="http://images.webdesignbooth.com/jquery-calendars/jquery-ui-date-picker.jpg" alt="jQuery UI Datepicker" width="500" height="171" /></p>
<h3>4. <a title="jMonthCalendar" href="http://www.bytecyclist.com/projects/jmonthcalendar/" target="_blank">jMonthCalendar</a></h3>
<p>jMonthCalendar supports full month calendar and events. The interesting part of this plugin is it allows developers to interact with the calendar.<br />
<img title="jMonthCalendar" src="http://images.webdesignbooth.com/jquery-calendars/jmonthcalendar.jpg" alt="jMonthCalendar" width="500" height="237" /></p>
<h3>5. <a title="Date Picker" href="http://www.eyecon.ro/datepicker/" target="_blank">Date Picker</a></h3>
<p>Date Picker is a jQuery calendar plugin released under MIT and GPL licenses. It has a lot of options and features. For example, you can have multiple calendars in the component, mark dates as special days, easy to customize through CSS and allow different selection modes. All these can be easily setup though the configuration options.<br />
<img title="Date Picker" src="http://images.webdesignbooth.com/jquery-calendars/jquery-date-picker-plugin.jpg" alt="Date Picker" width="500" height="135" /></p>
<h3>6. <a title="jQuery Week Calendar" href="http://www.redredred.com.au/projects/jquery-week-calendar/" target="_blank">jQuery Week Calendar</a></h3>
<p>jQuery Week Calendar is a plugin which will include a weekly calendar in the web application. The events can be supplied as an array or JSON, and these events can be easily drag, drop and resize. There are a lot of options and event callbacks which you can refer through the official plugin page.<br />
<img title="jQuery Week Calendar" src="http://images.webdesignbooth.com/jquery-calendars/jquery-week-calendar.jpg" alt="jQuery Week Calendar" width="500" height="285" /></p>
<h3>7. <a title="Simple jQuery Date-picker Plugin" href="http://teddevito.com/demos/calendar.php" target="_blank">Simple jQuery Date-picker Plugin</a></h3>
<p>This is a very simple date picker plugin. However, it provides a lot of useful and necessary features for a date picker. For example, you can easily navigate to the months and years through the drop down selection boxes.<br />
<img title="Simple jQuery Date-picker Plugin" src="http://images.webdesignbooth.com/jquery-calendars/simple-jquery-date-picker.jpg" alt="Simple jQuery Date-picker Plugin" width="500" height="218" /></p>
<h3>8. <a title="jQuery Date Picker Plugin" href="http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/" target="_blank">jQuery Date Picker Plugin</a></h3>
<p>This is an clean, unobtrusive plugin for jQuery which allows you to easily add date picker to your web forms and pages. There are a lot of configurations and options for this simple plugin. You can refer to the plugin page for more examples of how to use this plugin.<br />
<img title="jQuery Date Picker Plugin" src="http://images.webdesignbooth.com/jquery-calendars/jquery-date-picker-simple-datepicker.jpg" alt="jQuery Date Picker Plugin" width="500" height="220" /></p>
<h3>9. <a title="jQuery Interactive Date Range Picker" href="http://www.filamentgroup.com/lab/date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/" target="_blank">jQuery Interactive Date Range Picker</a></h3>
<p>This powerful date range picker is a modified version of jQuery UI’s Datepicker component. It has a quicker date selection from a list of preset dates/ranges and a smooth transitions. The latest version uses the jQuery UI 1.7 and jQuery UI CSS Framework. With the power of jQuery UI, user can now switch the calendar theme easily.<br />
<img title="jQuery Interactive Date Range Picker" src="http://images.webdesignbooth.com/jquery-calendars/jquery-interactive-date-range-picker.jpg" alt="jQuery Interactive Date Range Picker" width="500" height="287" /></p>
<p>Ref:<a title="9 Useful jQuery Calendar And Date Picker Plugins For Web Designers" href="http://www.webdesignbooth.com/9-useful-jquery-calendar-and-date-picker-plugins-for-web-designers/" target="_blank">9 Useful jQuery Calendar And Date Picker Plugins For Web Designers</a></p>
<h1></h1>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/itzsudheer.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/itzsudheer.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/itzsudheer.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/itzsudheer.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/itzsudheer.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/itzsudheer.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/itzsudheer.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/itzsudheer.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/itzsudheer.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/itzsudheer.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/itzsudheer.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/itzsudheer.wordpress.com/176/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/itzsudheer.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/itzsudheer.wordpress.com/176/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=176&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://itzsudheer.wordpress.com/2009/12/21/9-useful-jquery-calendar-and-date-picker-plugins-for-web-designers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47e058e0059ac4ee482dfd3c78222c13?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sudheer</media:title>
		</media:content>

		<media:content url="http://images.webdesignbooth.com/jquery-calendars/full-calendar.jpg" medium="image">
			<media:title type="html">FullCalendar</media:title>
		</media:content>

		<media:content url="http://images.webdesignbooth.com/jquery-calendars/ical-like-calendar.jpg" medium="image">
			<media:title type="html">Astonishing iCal-like Calendar</media:title>
		</media:content>

		<media:content url="http://images.webdesignbooth.com/jquery-calendars/jquery-ui-date-picker.jpg" medium="image">
			<media:title type="html">jQuery UI Datepicker</media:title>
		</media:content>

		<media:content url="http://images.webdesignbooth.com/jquery-calendars/jmonthcalendar.jpg" medium="image">
			<media:title type="html">jMonthCalendar</media:title>
		</media:content>

		<media:content url="http://images.webdesignbooth.com/jquery-calendars/jquery-date-picker-plugin.jpg" medium="image">
			<media:title type="html">Date Picker</media:title>
		</media:content>

		<media:content url="http://images.webdesignbooth.com/jquery-calendars/jquery-week-calendar.jpg" medium="image">
			<media:title type="html">jQuery Week Calendar</media:title>
		</media:content>

		<media:content url="http://images.webdesignbooth.com/jquery-calendars/simple-jquery-date-picker.jpg" medium="image">
			<media:title type="html">Simple jQuery Date-picker Plugin</media:title>
		</media:content>

		<media:content url="http://images.webdesignbooth.com/jquery-calendars/jquery-date-picker-simple-datepicker.jpg" medium="image">
			<media:title type="html">jQuery Date Picker Plugin</media:title>
		</media:content>

		<media:content url="http://images.webdesignbooth.com/jquery-calendars/jquery-interactive-date-range-picker.jpg" medium="image">
			<media:title type="html">jQuery Interactive Date Range Picker</media:title>
		</media:content>
	</item>
		<item>
		<title>Installing SQL Server 2008</title>
		<link>http://itzsudheer.wordpress.com/2009/12/17/installing-sql-server-2008/</link>
		<comments>http://itzsudheer.wordpress.com/2009/12/17/installing-sql-server-2008/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 16:47:28 +0000</pubDate>
		<dc:creator>Sudheer</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Setup]]></category>
		<category><![CDATA[SQL Server 2008]]></category>

		<guid isPermaLink="false">http://itzsudheer.wordpress.com/?p=173</guid>
		<description><![CDATA[Introduction The installation process for SQL Server 2008 has many different options. These options allow you more control over your SQL Server Instance configuration. Having this additional control allows you to set up your SQL Server 2008 instances out of the box with the appropriate configuration, like directory structure, accounts, etc. In this article I&#8217;ll [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=173&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>The installation process for SQL Server 2008 has many different options. These options allow you more control over your SQL Server Instance configuration. Having this additional control allows you to set up your SQL Server 2008 instances out of the box with the appropriate configuration, like directory structure, accounts, etc. In this article I&#8217;ll walk you through the SQL Server installation process.</p>
<p><strong>Machine Set Up</strong></p>
<p>Prior to installing SQL Server 2008 you need to make sure your SQL Server machine will meet the requirements for SQL Server 2008. There are many different requirements that your SQL Server 2008 machine must meet depending on what version of SQL Server you are installing and the base operating system you are going to use. It is out of the scope of this article to describe all the different machine setups and dependences. Prior to installing SQL Server 2008 you should review the following webpage to identify the correct machine setup for your environment: <a href="http://msdn.microsoft.com/en-us/library/ms143506.aspx">http://msdn.microsoft.com/en-us/library/ms143506.aspx</a>.</p>
<p>For the purpose of this article I will be installing an evaluation copy of SQL Server 2008 Enterprise Edition. The base operating system I will be installing SQL Server on will be Windows 2003 Enterprise Edition SP1 version. My machine is also configured with a C, D, E, F, and G drives. I will use these different drives to place different components of SQL Server.</p>
<p><strong>Initial Setup Process</strong></p>
<p>When you first stick the SQL Server 2008 CD into your drive it will automatically startup the setup process for SQL Server 2008. If the setup doesn&#8217;t start then find the &#8220;setup.exe&#8221; file and run it. When the setup process starts it will check your machine to make sure the .Net Framework and an updated copy of Windows Installer are on your machine. If these are not on your machine then setup will require that these be installed first before you can install SQL Server 2008. The setup process will walk you through installing these prerequisites if they are not already installed. If you have to install them a reboot will be required before you can perform the actual install of SQL server 2008. Once your machine has all the prerequisites installed the setup process will bring up the following window:</p>
<p><img class="alignnone" title="Initial Setup Process - Planning" src="http://www.developer.com/img/2009/11/install1tn.jpg" alt="" width="425" height="248" /></p>
<p><a href="http://www.developer.com/img/2009/11/install1.jpg" target="newFrame"><em>Click here for larger image</em></a></p>
<p>On this window you can see you have a number of different hyperlinks you can use. There is a navigation pane on the left that has different SQL Server 2008 items you can pick from and on the right pane are the items associated with the selected left pane item. In my case I have the &#8220;Planning&#8221; item selected. Note it is displayed in bold font. To install SQL Server 2008 I will need to click on the &#8220;Installation&#8221; item. When I do that the following screen is displayed:</p>
<p><img class="alignnone" title="nitial Setup Process - Installion" src="http://www.developer.com/img/2009/11/install2tn.jpg" alt="" width="425" height="187" /></p>
<p><a href="http://www.developer.com/img/2009/11/install2.jpg" target="newFrame"></a><a href="http://www.developer.com/img/2009/11/install2.jpg" target="newFrame"><em>Click here for larger image</em></a></p>
<p>On this window you can also do a number of different things related to installing SQL Server. For the purpose of this article I will be going through the first item &#8220;New SQL Server stand-alone installation or add features to an existing installation&#8221; item to create a brand new SQL Server 2008 instance.</p>
<h3>SQL Server 2008 Installation Process</h3>
<p>Once you click on the &#8220;New SQL Server stand-alone installation or add features to an existing installation&#8221; item a series processes will run and some dialog boxes will be displayed to allow you to configure SQL Server 2008 the way you would like. In SQL Server 2008 a number of new configuration options are available at installation time, which in prior releases had to be done after you installed SQL Server.</p>
<p>After the stand-alone instance installation item is click the set up process runs through a number of rule check processes to verify that your system is setup correctly. The first one does a system configuration check. After each one of these rule check processes you are given a summarized report telling you whether or not your system passed the rules checked. In that summary report you are given the option to view a detailed report of each rule. I would suggest you look at the detail rules report to verify each rule. If you find a rule that needs to be fixed you will need to resolve the issue and then re-run the rule checks.</p>
<p>The next window displayed is the &#8220;Product Key&#8221; window. On this window you will need to select the version you want to install and enter the product key. The list of versions displayed will depend on what media you use for the installation. Select the appropriate version and key and then click on the &#8220;Next&#8221; button. This will bring up the &#8220;License Terms&#8221; window. On this screen you should read the license terms. If you agree with the licensing terms then click on the accept checkbox followed by the &#8220;Next&#8221; button to move on with the installation. Next, you will be prompted to install the setup files. Click on the &#8220;Install&#8221; button to start the setup file installation process. Once all the setup files are installed a summary of the setup installation process will be displayed. If all the critical setup rules where meet then you will be allowed to proceed with the installation, if not you will need to fix the reported problems and re-run the setup installation. Once again this setup process has a link where you can review the details of the setup installation. I recommend you review the details prior to proceeding, so you know exactly the status of each rule installed. Once you are ready to move on with the installation click on the &#8220;Next&#8221; button. This will bring up the following window:</p>
<p><img class="alignnone" title="Setup 3" src="http://www.developer.com/img/2009/11/setup3tn.jpg" alt="" width="425" height="318" /></p>
<p><a href="http://www.developer.com/img/2009/11/setup3.jpg" target="newFrame"><em>Click here for larger image</em></a></p>
<p>This window displays the different SQL Server 2008 feature you can install. Here you will click on the appropriate check boxes for the features you want to install for your instance. For the purpose of this article I&#8217;m going to only select the &#8220;Database Engine Services&#8221;, &#8220;SQL Server Books Online&#8221;, the &#8220;Management Tools &#8211; Basic&#8221;, and the &#8220;Management Tools -Complete&#8221;. Also on this screen you can select the directory where you want to install the shared features. In my case I&#8217;m installing my shared features on the &#8220;E:\&#8221; drive. Once all the features are selected and you have identified the location where you want the shared features to be installed you can then click the &#8220;Next&#8221; button to proceed. Doing that will bring up the following window:</p>
<p><img class="alignnone" title="Setup 4" src="http://www.developer.com/img/2009/11/setup4tn.jpg" alt="" width="425" height="318" /></p>
<p><a href="http://www.developer.com/img/2009/11/setup4.jpg" target="newFrame"><em>Click here for larger image</em></a></p>
<p>On this window you specify whether or not you what to install a default instance or a named instance, what you want for an instance ID and the root directory of the instance. For my install I&#8217;m just going to take the defaults and install a default instance and identify that instance with an instance id of<code>MSSQLSERVER</code>. But for the instance root directory I&#8217;m going to specify the &#8220;E:\&#8221;as a location. Once you are ready to move forward click on the &#8220;Next&#8221; button. The installation process will then calculate the amount of disk space required for the features you selected. The process will report the disk space requirements for each drive. Review the disk space requirements. If you realized you need to specify a different location you can use the &#8220;Back&#8221; button to go back and change installation location. once you are satisfied with the disk space allocations and placement click on the &#8220;Next&#8221; button. Doing that will bring up the following screen:</p>
<p><img class="alignnone" title="Setup 5" src="http://www.developer.com/img/2009/11/setup5tn.jpg" alt="" width="425" height="319" /></p>
<p><a href="http://www.developer.com/img/2009/11/setup5.jpg" target="newFrame"><em>Click here for larger image</em></a></p>
<p>On this window you can use the &#8220;Server Accounts&#8221; tab to specify the accounts that will be used to run the different SQL Server 2008 services and use the &#8220;Collation&#8221; tab to specify the collation you would like to use. I like to use domain accounts to run my services. In my case I am just going to use the same account for all SQL Server services. So I can either enter that account multiple times next to each service or I can click on the &#8220;Use the same account for all SQL Server services&#8221; and only enter the account and password once. On this screen you can also identify the status you would like each service to be placed in at startup. Your choices are &#8220;Manual&#8221;, &#8220;Automatic&#8221; or &#8220;Disabled&#8221;. I prefer that my SQL Server Agent and SQL Server Database engine to start automatically and the SQL Server Browser service to be disabled. To set the collation for your instance use the &#8220;Collation&#8221; tab. The default collation setting is &#8220;SQL_Latin1_General_CP1_CI_AS&#8221;. I&#8217;d suggest you click on the collation tab to verify the correct collation is specified prior to proceeding. Once you are satisfied with the Server Configuration settings click on the &#8220;Next&#8221; button to proceed with the installation. Doing this will bring up the following window:</p>
<p><img class="alignnone" title="Setup 6" src="http://www.developer.com/img/2009/11/setup6tn.jpg" alt="" width="425" height="319" /></p>
<p><a href="http://www.developer.com/img/2009/11/setup6.jpg" target="newFrame"></a><a href="http://www.developer.com/img/2009/11/setup6.jpg" target="newFrame"><em>Click here for larger image</em></a></p>
<p>On this screen you identify database engine configuration information. There are three different tabs to accomplish this: Account Provisioning, Data Directories, and FILESTREAM. Above you can see the &#8220;Account Provisioning&#8221; configuration options. Here you can specify whether your instance is to use Windows Authentication only or you want to run in mixed mode to support SQL Server and Windows authenticated logins. If you select &#8220;Mixed Mode&#8221; then you will need to specify a password for the SA account (no more mistakes in having a blank SA account). Another change is that the &#8220;BUILTIN\Administrators&#8221; user is no longer added by default, so no more back door for member of the Administrators group. You also now have an option to add users that you want placed in the &#8220;sysadmin&#8221; built-in server role. I suggest you place at least one user in here. This will allow that user to be able to login to your instance of SQL Server 2008 after the installation is complete. You do that by adding them use the &#8220;Add&#8221; button in the screen above. You can also use the &#8220;Add Current User&#8221; button to add the user that is doing the installation to the sysadmin role.</p>
<p>You now have a lot more options for how you want to configure your data directories at installation time, to specify that information click on the &#8220;Data Directories&#8221; tab on the window above. Upon doing this the following window will be displayed:</p>
<p><img class="alignnone" title="Coniguration 1" src="http://www.developer.com/img/2009/11/config7tn.jpg" alt="" width="425" height="317" /></p>
<p><a href="http://www.developer.com/img/2009/11/config7.jpg" target="newFrame"></a><a href="http://www.developer.com/img/2009/11/config7.jpg" target="newFrame"><em>Click here for larger image</em></a></p>
<p>As you can see here you can specify different directories for: user database DATA files, user database LOG files, tempdb DATA/LOG files, and the back up directory. This allows you to more easily separate your databases DATA and LOG files across different drives. As well allows you to make sure the system databases and tempdb files are also on different drives. Allowing you to do this now allows you to more optimally place your components at installation time to help minimize I/O bottlenecks. Here is how I configured my directories:</p>
<p><img class="alignnone" title="Cofiguration 2" src="http://www.developer.com/img/2009/11/config8tn.jpg" alt="" width="425" height="318" /></p>
<p><a href="http://www.developer.com/img/2009/11/config8.jpg" target="newFrame"></a><a href="http://www.developer.com/img/2009/11/config8.jpg" target="newFrame"><em>Click here for larger image</em></a></p>
<p>I have placed my user database DATA file on the E drive, where as the user LOG files are on the G drive. I also placed the tempdb DATA and LOG files on the F drive. This provided me some disk separation between components.</p>
<p>If you want to configure FILESTREAM during the setup process you can by using the &#8220;FILESTREAM&#8221; tab. The information under this tab allows you to specify exactly how you would like to enable and configure FILESTREAM.</p>
<p>Once you are happy with your Database Engine Configuration option click on the &#8220;Next&#8221; button. Doing this will bring up an &#8220;Errors and Usage Reporting&#8221; window where you can send errors and feature usage information to Microsoft. Once you have decided how to report to Microsoft there is another &#8220;Next&#8221; button to click to move on to the next step of the installation process, which is verifying all the Installation Rules. You should check this window to verify that all installation rules are successful for the components you are installing, and then click on the &#8220;Next&#8221; button. This will bring you to the final installation window. Here you get make a final review of the installation options you have selected. If there is something you want to change you can use the &#8220;Back&#8221; button to change it. once you are satisfied with the installation configuration you have identified click on the &#8220;install&#8221; button. this will start the installation process and install the components you selected in the locations you identified. once the installation process is finished the following window will be displayed:</p>
<p><img class="alignnone" title="Configuration 3" src="http://www.developer.com/img/2009/11/setup9tn.jpg" alt="" width="425" height="317" /></p>
<p><a href="http://www.developer.com/img/2009/11/setup9.jpg" target="newFrame"></a><a href="http://www.developer.com/img/2009/11/setup9.jpg" target="newFrame"><em>Click here for larger image</em></a></p>
<p>Here you can see all the components I selected have been installed successfully. The install of my SQL Server 2008 instance with the components I selected is now done. When I click on the &#8220;Next&#8221; button here the final &#8220;Close&#8221; screen is displayed where I can click on the &#8220;Close&#8221; button to close the SQL Server 2008 setup process.</p>
<h3>Conclusion</h3>
<p>Now that I have walked you through the installation process you can see that there are many different options for how might want to configure SQL Server 2008. Hopefully this article has given you a sense of the different options you will need to consider in order to make sure your installation configuration goes smoothly. I suggest you do some planning up front for how best to map out each of the SQL Server components across the different disks drives you have and what account or accounts you want to use for the different SQL Server services. Doing this additional planning will help you be successful in setting up your SQL Server instance configuration the way you want it the first time you install SQL Server 2008.</p>
<p style="text-align:left;">
<a class="alignleft" title="Installing SQL Server 2008" href="http://www.developer.com/net/article.php/10916_3847606_2/Installing-SQL-Server-2008.htm" target="_blank">Ref: Installing-SQL-Server-2008</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/itzsudheer.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/itzsudheer.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/itzsudheer.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/itzsudheer.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/itzsudheer.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/itzsudheer.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/itzsudheer.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/itzsudheer.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/itzsudheer.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/itzsudheer.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/itzsudheer.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/itzsudheer.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/itzsudheer.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/itzsudheer.wordpress.com/173/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=173&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://itzsudheer.wordpress.com/2009/12/17/installing-sql-server-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47e058e0059ac4ee482dfd3c78222c13?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sudheer</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/11/install1tn.jpg" medium="image">
			<media:title type="html">Initial Setup Process - Planning</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/11/install2tn.jpg" medium="image">
			<media:title type="html">nitial Setup Process - Installion</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/11/setup3tn.jpg" medium="image">
			<media:title type="html">Setup 3</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/11/setup4tn.jpg" medium="image">
			<media:title type="html">Setup 4</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/11/setup5tn.jpg" medium="image">
			<media:title type="html">Setup 5</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/11/setup6tn.jpg" medium="image">
			<media:title type="html">Setup 6</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/11/config7tn.jpg" medium="image">
			<media:title type="html">Coniguration 1</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/11/config8tn.jpg" medium="image">
			<media:title type="html">Cofiguration 2</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/11/setup9tn.jpg" medium="image">
			<media:title type="html">Configuration 3</media:title>
		</media:content>
	</item>
		<item>
		<title>Cross-Platform Development</title>
		<link>http://itzsudheer.wordpress.com/2009/12/16/cross-platform-development/</link>
		<comments>http://itzsudheer.wordpress.com/2009/12/16/cross-platform-development/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 13:42:18 +0000</pubDate>
		<dc:creator>Sudheer</dc:creator>
				<category><![CDATA[DotNet]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Cross Platform]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Silver Light]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://itzsudheer.wordpress.com/?p=171</guid>
		<description><![CDATA[Windows developer use Windows API for developing applications where as Mac developers use Cocoa or Carbon for developing applications. If we want to develop a thick client application which can run on both Mac and Windows then we have the following preferred technological options. Visual Basic: Microsoft doesn&#8217;t provide any support for Mac compatibility. We [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=171&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Windows developer use Windows API for developing applications where as Mac developers use Cocoa or Carbon for developing applications.</p>
<p>If we want to develop a thick client application which can run on both Mac and Windows then we have the following preferred technological options.</p>
<p><strong> </strong></p>
<p><strong>Visual Basic: </strong></p>
<p>Microsoft doesn&#8217;t provide any support for Mac compatibility. We have one 3party solution provider RealSoftware. He offer RealBasic which is similar to VB and which can be used to develop thick client applications for both Mac and Windows.</p>
<p><strong>Ref: </strong>REALbasic is a rapid application development environment that enables developers to create high-quality, native software for Windows, Mac and Linux.</p>
<p>REALbasic includes:</p>
<ul>
<li>an integrated environment designed for developer productivity</li>
<li>a modern, object oriented programming language</li>
<li>a cross-platform object framework</li>
<li>a cross compiler that produces native executables</li>
</ul>
<p>REALbasic is used to create all types of applications, including database clients, commercial software, custom business solutions, educational products and more. In fact, REALbasic itself is written in REALbasic.</p>
<p>REAL Software ships updates to REALbasic every 90 days. No other software tools company ships updates at this pace.</p>
<p>Each new REALbasic license includes all updates for six months. When your REALbasic update plan ends you can either purchase a one year update plan renewal or continue using any release that shipped during your update plan.</p>
<p><a href="http://www.realsoftware.com/support/whitepapers/portingvisualbasic/">http://www.realsoftware.com/support/whitepapers/portingvisualbasic/</a></p>
<p><strong>VB.NET:</strong></p>
<p>Microsoft Visual Basic .NET doesn&#8217;t have any support for Mac. There is a new technology introduced by Microsoft i.e., SilverLight which will be used to execute .NET application with out deploying the complete .NET framework at the client machine. But these applications will we based not thick clients.</p>
<p><strong>SilverLight:</strong></p>
<p>Microsoft® Silverlight™ is a cross-browser, cross-platform plug-in for delivering the next generation of .NET based media experiences and rich interactive applications for the Web. Silverlight offers a flexible programming model that supports AJAX, VB, C#, Python, and Ruby, and integrates with existing Web applications. Silverlight supports fast, cost-effective delivery of high-quality video to all major browsers running on the Mac OS or Windows.</p>
<p>Ref: <a href="http://silverlight.net/default.aspx">http://silverlight.net/default.aspx</a></p>
<p><strong>JAVA:</strong></p>
<p>Java is an platform independent language. We an build thick client application which can be deployed on both Windows and Mac.</p>
<p>Ref: <a href="http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac/">http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/itzsudheer.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/itzsudheer.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/itzsudheer.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/itzsudheer.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/itzsudheer.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/itzsudheer.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/itzsudheer.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/itzsudheer.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/itzsudheer.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/itzsudheer.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/itzsudheer.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/itzsudheer.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/itzsudheer.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/itzsudheer.wordpress.com/171/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=171&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://itzsudheer.wordpress.com/2009/12/16/cross-platform-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47e058e0059ac4ee482dfd3c78222c13?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sudheer</media:title>
		</media:content>
	</item>
		<item>
		<title>Open Source Licensing Detection Gets More Competitive</title>
		<link>http://itzsudheer.wordpress.com/2009/12/16/open-source-licensing-detection-gets-more-competitive/</link>
		<comments>http://itzsudheer.wordpress.com/2009/12/16/open-source-licensing-detection-gets-more-competitive/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 13:05:33 +0000</pubDate>
		<dc:creator>Sudheer</dc:creator>
				<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Licensing]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://itzsudheer.wordpress.com/?p=169</guid>
		<description><![CDATA[With the current economic recession, open source software is a route that some enterprise developers are increasingly considering as a lower-cost alterative to proprietary solutions. However, one of the potential issues with open source software adoption is license compliance—ensuring that developers and enterprises are not in violation with a particular license. There are a few [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=169&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>With the current economic recession, open source software is a route that some enterprise developers are increasingly considering as a lower-cost alterative to proprietary solutions. However, one of the potential issues with open source software adoption is license compliance—ensuring that developers and enterprises are not in violation with a particular license.</p>
<p>There are a few companies in the market today with solutions to help serve the need for open source license identification, including <a href="http://www.internetnews.com/dev-news/article.php/3706631/Predicting+Open+Source+Licensing.htm">Black Duck</a>, <a href="http://www.internetnews.com/dev-news/article.php/3569316">Palamida</a> and now OpenLogic. The business itself is also evolving from just being about detecting licenses to becoming part of an entire open source software adoption lifecycle process.</p>
<p>&#8220;Open source has made its way into enterprises of all sorts, and because open source software is so pervasive now, it&#8217;s critical for companies to look at how they comply with open source licenses,&#8221; Kim Weins, senior vice president of products and marketing at OpenLogic, told <em>InternetNews.com</em>.&#8221;Before they can comply with open source licenses, they need to know which open source licenses they are using. As much as you might think that&#8217;s easy to track, it&#8217;s not.&#8221;</p>
<p><a href="http://www.internetnews.com/dev-news/article.php/3647001">OpenLogic</a> is an open source stack and services support vendor. While it provides commercial support for open source software—most recently including the <a href="http://www.internetnews.com/dev-news/article.php/3850581">Red Hat Enterprise Linux clone, CentOS</a>—OpenLogic&#8217;s flagship service is <a href="http://www.internetnews.com/ent-news/article.php/3709156">OpenLogic Exchange (OLEX)</a>, which enables enterprises to manage their open source usage.</p>
<p>This week, the company announced new OLEX services to provide license discovery and compliance.</p>
<p>Weins said the difficulty in license identification is that open source software is often bundled together in sophisticated ways. As a result, a single open source project can often have additionally open source projects inside of it—with bits of code inside that can all be under different licenses.</p>
<p>&#8220;It&#8217;s not as simple as saying this particular application is licensed under Apache and being done with it,&#8221; Weins said.</p>
<p>The issue has led to a number of high-profile legal spats over the last two years. For instance, the Software Freedom Law Center has <a href="http://www.internetnews.com/bus-news/article.php/3734866">settled out-of-court disputes</a> with at least four different vendors over license violation issues that arose because of open source code buried with their software.</p>
<p>The business of license identification is one that Black Duck software has been involved in since 2002. For CEO Tim Yeaton, it&#8217;s a business that has evolved over the last few years to be about more than just license identification.</p>
<p>&#8220;We&#8217;ve expanded our capabilities from just being a compliance platform to being a full-on, open source lifecycle adoption platform,&#8221; Yeaton said. &#8220;We enable customers to search and select open source components, validate them against their process, put in workflows to automate polices, catalogue the resulting components and then attach them directly to their existing development infrastructure.&#8221;</p>
<p>Black Duck began its broader lifecycle adoption effort nearly two years ago with the launch of its <a href="http://www.internetnews.com/dev-news/article.php/3724356/Black+Duck+Opens+Code+Center.htm">Code Center application</a>.</p>
<p>OpenLogic&#8217;s Weins said she felt her company could offer a new competitive choice by producing fewer false positives than rivals. She also added that OpenLogic&#8217;s new services are cloud-focused and leverage the power of <a href="http://www.internetnews.com/dev-news/article.php/3824471">Hadoop open source technology</a> to deliver fast, accurate scans.</p>
<p>Black Duck&#8217;s Yeaton noted that his company has hosted and Software-as-a-Service offerings. He added that his concern is false negatives more so than false positives.</p>
<p>&#8220;If you&#8217;ve built a quality tool, done right, there is no such thing as a false positive—there are only things that you&#8217;d rather not see because they create noise,&#8221; Yeaton said, adding that scans can produce a lot of granular information that a user may not want or need.</p>
<p>He also said that Black Duck has filtering and automation features that lets users customize the information returned from a compliance scan, though they&#8217;re not enabled by default.</p>
<p>&#8220;The way we built our product and the way it&#8217;s deployed by default is that it provides access to all the information,&#8221; Yeaton said. &#8220;So shame on us for not helping customers upfront to filter. We are getting smarter to help customers to configure their systems.&#8221;</p>
<p>But Yeaton said the real issue for him is false negatives—that is, code that isn&#8217;t detected.</p>
<p>&#8220;There is clutter, because you got more information than you want, but you can turn on a filter,&#8221; he said. &#8220;But there is real corporate risk of a false negative &#8230; you don&#8217;t find something that you&#8217;re supposed to.&#8221;</p>
<p>By <a href="http://www.developer.com/open/article.php/3852841/Open-Source-Licensing-Detection-Gets-More-Competitive.htm">Developer.com</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/itzsudheer.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/itzsudheer.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/itzsudheer.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/itzsudheer.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/itzsudheer.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/itzsudheer.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/itzsudheer.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/itzsudheer.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/itzsudheer.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/itzsudheer.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/itzsudheer.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/itzsudheer.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/itzsudheer.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/itzsudheer.wordpress.com/169/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=169&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://itzsudheer.wordpress.com/2009/12/16/open-source-licensing-detection-gets-more-competitive/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47e058e0059ac4ee482dfd3c78222c13?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sudheer</media:title>
		</media:content>
	</item>
		<item>
		<title>Uploading an Image and Creating a Thumbnail in ASP.NET</title>
		<link>http://itzsudheer.wordpress.com/2009/10/19/uploading-an-image-and-creating-a-thumbnail-in-asp-net/</link>
		<comments>http://itzsudheer.wordpress.com/2009/10/19/uploading-an-image-and-creating-a-thumbnail-in-asp-net/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 05:12:21 +0000</pubDate>
		<dc:creator>Sudheer</dc:creator>
				<category><![CDATA[DotNet]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[thumbnail]]></category>
		<category><![CDATA[Upload]]></category>

		<guid isPermaLink="false">http://itzsudheer.wordpress.com/?p=166</guid>
		<description><![CDATA[There are literally thousands of facets to the .NET Framework, and writing them down functions as a way to learn, memorize or work out the details. This is especially useful for things you use infrequently, such as thumbnail images. I wrote an application several years ago to manage label images, but when I sat down [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=166&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There are literally thousands of facets to the .NET Framework, and writing them down functions as a way to learn, memorize or work out the details. This is especially useful for things you use infrequently, such as thumbnail images. I wrote an application several years ago to manage label images, but when I sat down to try to upload an image, I discovered that I had forgotten how to create a thumbnail image—a subject that makes a useful article topic.</p>
<p>This article shows you how to use an &lt;input&gt; control to browse and upload images, and then convert those images to thumbnail versions for display on the web site. The code is straightforward without a lot of sanity checking, as is the ASPX, and works fine for example purposes, but for a production application you&#8217;ll want to add validation and error checking (but that&#8217;s another article).</p>
<p><strong>Uploading Files with the </strong><strong>&lt;input&gt;</strong><strong> Element</strong></p>
<p>The &lt;input&gt; HTML element is a versatile HTML control. Based on the value you supply for the element&#8217;s type attribute, the &lt;input&gt; element can function (and display) as a general-purpose button, a radio, reset, or submit button, a checkbox, a file uploader, a hidden control, an image, a password field, or a text control. For the file uploader, set the &lt;input&gt; element&#8217;s type attribute to file, and the &lt;input&gt; control displays a textbox and a button labeled &#8220;Browse.&#8221; While you can code this manually, the easiest way to display a file uploader is to select the Input (File) item from the HTML tab of Visual Studio&#8217;s Toolbox.</p>
<p><a title="Click for a larger image" href="http://www.developer.com/img/2009/10/3842756_figure1.jpg" target="_blank"><br />
</a></p>
<div style="width:175px;margin-left:5px;margin-right:10px;"><a title="Click for a larger image" href="http://www.developer.com/img/2009/10/3842756_figure1.jpg" target="_blank"><img src="http://www.developer.com/img/2009/10/3842756_figure1.jpg" border="0" alt="" width="175" height="91" /><br />
<strong>Figure 1. Design-Time View</strong>: </a>From this design-time view, you can see how the sample page uses the table to lay out the other HTML elements.</div>
<p>The sample ASPX page contains this type of &lt;input&gt; element, as well as a label, a button to submit a selected image file, and an image element. The server creates a thumbnail of that image and returns it to the browser, which displays it in an &lt;img&gt; element on the same page. An HTML table handles the control layout (see <a href="http://www.developer.com/img/2009/10/3842756_listing1.htm" target="_blank">Listing 1</a>). At design-time, the page looks like <a href="http://www.developer.com/img/2009/10/3842756_figure1.jpg" target="_blank">Figure 1</a>.</p>
<p>// HTML tables are pretty versatile and easy to use. If you want a simple spreadsheet-like table then use &lt;tr&gt; elements to add rows and &lt;td&gt; elements to add cells. If you want a single cell to span multiple rows then set the &lt;td&gt; element&#8217;s rowspan attribute, or to span multiple columns, set its colspan attribute.</p>
<p>The only other interesting aspect of the HTML in <a href="http://www.developer.com/img/2009/10/3842756_listing1.htm" target="_blank">Listing 1</a> is that the &lt;img&gt; control (in column 2 in <a href="http://www.developer.com/img/2009/10/3842756_figure1.jpg" target="_blank">Figure 1</a>) has an ID attribute, and its runat attribute is set to server. Setting the runat attribute lets you manipulate the &lt;img&gt; control in the server-side code behind. You&#8217;ll use this to display the created thumbnail image.</p>
<p><strong>Saving the Uploaded Image</strong></p>
<p>When an &lt;input&gt; control has its type attribute set to file, a user can click the Browse button to select a file. After selecting a file, when the user submits the page the &lt;input&gt; control will have a populated PostedFile property, which is a class that will contain the file&#8217;s contents and other file information, such as its file name. To be specific, PostedFile is an instance of the HttpPostedFile class.</p>
<p>To use the GUI, a user clicks the Browse button, selects a file, and then clicks the Upload button. On the server, you can save the posted file by calling the &lt;input&gt; control&#8217;s PostedFile.SaveAs method, passing the path and file name where you want to save the file. The following code shows just how easy this part of the process is:</p>
<p>Private Const imagePath As String = &#8220;~/Images/&#8221;</p>
<p>Private Sub SaveUploadedFile(ByVal filename As String)</p>
<p>File1.PostedFile.SaveAs(MapPath(imagePath) + filename)</p>
<p>End Sub</p>
<p>In the preceding code, File1 is the ID of the &lt;input&gt; control. (The &lt;input&gt; control has the runat=&#8221;server&#8221; attribute set, so even though it&#8217;s an HTML control, it is available on the server side too.)</p>
<p><strong>Creating and Display the Thumbnail</strong></p>
<p>The sample program uses a Button control to submit the default form containing the &lt;input&gt; element. The &lt;input&gt; element has the posted file. The complete code, shown in <a href="http://www.developer.com/img/2009/10/3842756_listing2.htm" target="_blank">Listing 2</a>, performs four steps:</p>
<ol>
<li>Extract the file name from the posted file path</li>
<li>Save the uploaded file to a pre-determined server path</li>
<li>Save a thumbnail copy of the image</li>
<li>Set the &lt;img&gt;      element&#8217;s src attribute to the thumbnail&#8217;s location</li>
</ol>
<p>When the user submits the file, File1.PostedFile.FileName contains the client&#8217;s local path (the location of the file on the user&#8217;s machine). You will want to extract the filename without the path, which you can do with the System.IO.Path class&#8217;s GetFileName method.</p>
<p>The SaveUploadedFile method shown earlier uses the PostedFile.SaveAs method to save the file. Note that it uses the MapPath method, which maps a server-side relative path to its physical path. It appends the file name to that path, which creates a complete pathname where it saves the uploaded file. (You could also save the file to a database or display the file contents on the web page.)</p>
<p>The next step is to create the thumbnail image. The SaveThumbnail method creates a thumbnail copy of the image.</p>
<p>Private Sub SaveThumbnail(ByVal filename As String)</p>
<p>Dim image As Image = image.FromStream( _</p>
<p>File1.PostedFile.InputStream)</p>
<p>Dim thumbnail As Image = image.GetThumbnailImage( _</p>
<p>100, 100, AddressOf Callback, IntPtr.Zero)</p>
<p>thumbnail.Save(MapPath(GetThumbnailPath(filename)))</p>
<p>End Sub</p>
<p>Private Function GetThumbnailPath( _</p>
<p>ByVal filename As String) As String</p>
<p>Return &#8220;~/Images/&#8221; + _</p>
<p>String.Format(thumbnailMask, filename)</p>
<p>End Function</p>
<p>The SaveThumbnail method creates an in-memory System.Drawing.Image instance from the HttpPostedFile&#8217;s InputStream property by passing the input stream to the Image.FromStream method. Next, it creates a thumbnail copy of the image by calling the Image&#8217;s GetThumbnailImage method. GetThumbnailImage has some odd arguments, mostly because its implementation calls into unmanaged code. The first two arguments are the width and height of the thumbnail image, the third argument is an unused callback delegate, which you must provide, even though it&#8217;s unused. The fourth argument is another unused relic to satisfy the native code call. The final argument must be IntPtr.Zero. (Obviously, a better thumbnail wrapper probably needs to be created.) Finally, the method saves the thumbnail in the same location as the original image, but with the prefix thumbnail_ added to the file name.</p>
<p>Finally, the SetPreviewImage uses the virtual path for the thumbnail and assigns it to the &lt;img&gt; element&#8217;s src property.</p>
<p>Private Sub SetPreviewImage(ByVal filename As String)</p>
<p>PreviewImage.Src = GetThumbnailPath(filename)</p>
<p>End Sub</p>
<p>The topic of uploading files is a bit of an oldie, but it is still a goody. Creating and showing thumbnails is a good way to let users preview numerous images, and then select a full-sized version. The GetThumbnailImage method makes a call into unmanaged native code, so it has some unused &#8220;junk&#8221; arguments that make it a little cumbersome to use—but now you have the CliffNotes.</p>
<p><a class="alignleft" title="Uploading an Image and Creating a Thumbnail in ASP.NET" href="http://www.developer.com/net/asp/article.php/3842756/Uploading-an-Image-and-Creating-a-Thumbnail-in-ASPNET.htm" target="_blank">Uploading an Image and Creating a Thumbnail in ASP.NET</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/itzsudheer.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/itzsudheer.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/itzsudheer.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/itzsudheer.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/itzsudheer.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/itzsudheer.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/itzsudheer.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/itzsudheer.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/itzsudheer.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/itzsudheer.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/itzsudheer.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/itzsudheer.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/itzsudheer.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/itzsudheer.wordpress.com/166/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=166&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://itzsudheer.wordpress.com/2009/10/19/uploading-an-image-and-creating-a-thumbnail-in-asp-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47e058e0059ac4ee482dfd3c78222c13?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sudheer</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/10/3842756_figure1.jpg" medium="image" />
	</item>
		<item>
		<title>Obtaining Client-Specific Information with a Web Application</title>
		<link>http://itzsudheer.wordpress.com/2009/09/30/obtaining-client-specific-information-with-a-web-application/</link>
		<comments>http://itzsudheer.wordpress.com/2009/09/30/obtaining-client-specific-information-with-a-web-application/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 04:28:19 +0000</pubDate>
		<dc:creator>Sudheer</dc:creator>
				<category><![CDATA[DotNet]]></category>
		<category><![CDATA[adtivex]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[java script]]></category>

		<guid isPermaLink="false">http://itzsudheer.wordpress.com/?p=162</guid>
		<description><![CDATA[Obtaining Client-Specific Information with a Web Application Introduction An Editor friend and some of my co-workers have taken occasion to remind me that some people don&#8217;t like Internet Explorer or don&#8217;t see why anyone would ever develop Web applications just for Internet Explorer. Some of these same smart people have expressed the opinion that they [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=162&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="font-family:Verdana,Arial,Helvetica,sans-serif;"></p>
<h3>Obtaining Client-Specific Information with a Web Application</h3>
<h3>Introduction</h3>
<p>An Editor friend and some of my co-workers have taken occasion to remind me that some people don&#8217;t like Internet Explorer or don&#8217;t see why anyone would ever develop Web applications just for Internet Explorer. Some of these same smart people have expressed the opinion that they don&#8217;t like ActiveX in Web applications much either. I respect their opinions. Everyone is entitled to an opinion.</p>
<p>I understand. I have read the Cathedral and the Bazaar by Eric Raymond. I have even exchanged a couple of emails with him. I understand that some people think open source software and uniform standards is the way to go. However, I think about these kinds of issues-open source versus proprietary solutions and IE-only development versus multi- browser platform development-differently, from my own perspective.</p>
<p>First, IE is the most popular browser and is the most widely used. Second, I have actually worked on applications that were Web-based intranet applications and the customer requested IE only. The latest two applications had multi- million dollar budgets. If you are targeting the World Wide Web then IE only development may be short sighted. And, when it comes to ActiveX I think of all available code and solutions as possibilities. Most code has pluses and minuses. My criteria for using something are really just a matter of does it solve the issue expediently, efficiently, and cost effectively and are the risks manageable. Other than that I don&#8217;t care where the code comes from, which language it is in, or what coding standard was applied.</p>
<p>This article is limited to IE web-based development and just a few odds and bobs that let your JavaScript code obtain some client/user specific information.</p>
<h3>Enabling and Disabling Script Debugging in IE8</h3>
<p>Visual Studio 2008 automatically enables script debugging for Internet Explorer 8 sessions started from Visual Studio. You know longer have to uncheck this option (Disable script debugging (Internet Explorer)) in the IE Tools|Options in the Advanced tab. In fact, regardless of the debugging settings script debugging will be enabled for IE8 sessions started from Visual Studio.</p>
<p>There exists a potential for performance problems associated with script debugging always being on. For a registry hack that disables script debugging refer to my DevExpress blog entry <a href="http://community.devexpress.com/blogs/paulk/archive/2009/08/25/enabling-and-disabling-script-debugging-for-ie8.aspx">here</a>.</p>
<h3>Enabling ActiveX in IE8</h3>
<p>Internet Explorer security is established by zone. There are five zones: Internet, Local Intranet, Trusted Sites, Restricted Sites, and My Computer. The Internet zone is represented by Web sites on your computer that haven&#8217;t been assigned to another zone. The Local Intranet zone is represented by network connections established using a UNC path, Web sites that by-pass the proxy server, or sites that have not been assigned to the Restricted or Trusted zone. Also, if you use a fully qualified domain name (FQDN) or IP address then the site is considered part of the Internet zone. The Trusted Sites zone is for adding web sites that you trust, like FedEx.com, Dell.com, Amazon.com, and the Restricted Sites zone is for web sites that you don&#8217;t trust. My Computer is exactly what it sounds like.</p>
<p>If you want to enable ActiveX support for desktop development then you want to adjust the Local Intranet zone. If you add ActiveX controls to your public web site then your users will need to adjust the Internet zone.</p>
<p>If you write some JavaScript that uses an ActiveX object and your browser isn&#8217;t configured to permit ActiveX objects then you will get an error dialog like the one shown in Figure 1. To configure support for ActiveX controls on your workstation or laptop, the machine you are developing on, follow these steps (using Figure 2 as a guide):</p>
<ol>
<li>In Internet Explorer 8 select Tools|Options</li>
<li>Change to the Security tab and click Local intranet in     the zones section</li>
<li>Click Custom level</li>
<li>In the Security Settings dialog scroll to the ActiveX     controls and plug-ins</li>
<li>Change the &#8220;Initialize and script ActiveX controls not     marked as safe for scripting&#8221; from Disable to Enable or     Prompt. (If you want to remember that you have turned on     ActiveX support then select Prompt)</li>
<li>Click OK to close the Security Settings dialog</li>
<li>Click OK to close the Internet options dialog</li>
</ol>
<p><a href="http://www.developer.com/img/2009/08/jscript.jpg" target="newFrame"><br />
<img src="http://www.developer.com/img/2009/08/jscripttn.jpg" border="0" alt="" /><br />
<span style="font-size:small;"><em>Click here for larger image</em></span></a><br />
Figure 1: If you see this dialog then you need to enable ActiveX objects for the Local Intranet zone.</p>
<p><img src="http://www.developer.com/img/2009/08/activex.jpg" border="0" alt="" /><br />
Figure 2: To let ActiveX objects that you create in script run on your workstation&#8217;s browser set &#8220;Initialize and script ActiveX controls not marked as safe…&#8221; to Enable or Prompt.</p>
<p><strong>Creating an ActiveX Object</strong></p>
<p>ActiveX objects for ascertaining client information include WScript.Network and WScript.Shell. WScript.Network can be used to determine the active user, for example, and WScript.Shell can be used to query information like the path to the MyDocuments folder. For a complete reference for these ActiveX libraries refer to the MSDN help documentation.</p>
<p><strong>Tip: You can use script languages to run JavaScript at a command prompt by running the .js script file in the WScript.exe host.</strong></p>
<p>To create an instance of the desired ActiveXObject you can invoke new ActiveXObject passing in the name of the library as a string that you want to create. The following code demonstrates how to use the debugger; statement to break into the code and create an instance of WScript.Network and WScript.Shell. With these two objects the UserName and the path to the special folder MyDocuments is obtained (refer to Listing 1).</p>
<p>Listing 1: Some JavaScript in a Web page that obtains client-specific information using ActiveX.</p>
<p>//  &lt;script type=&#8221;text/javascript&#8221;&gt;</p>
<p>debugger;</p>
<p>var o = new ActiveXObject(&#8220;WScript.Network&#8221;);</p>
<p>//UserDomain</p>
<p>//ComputerName</p>
<p>//UserName</p>
<p>alert(o.UserName);</p>
<p>var w = new ActiveXObject(&#8220;WScript.Shell&#8221;);</p>
<p>alert(w.SpecialFolders(&#8220;MyDocuments&#8221;));</p>
<p>//CreateShortcut</p>
<p>//SpecialFolders</p>
<p>var jsonObject = { &#8220;UserName&#8221;: o.UserName,</p>
<p>&#8220;MyDocuments&#8221;: w.SpecialFolders(&#8220;MyDocuments&#8221;)</p>
<p>};</p>
<p>&lt;/script&gt;</p>
<p>The end of the listing contains a statement that starts with var jsonObject. Programmers used to create objects by writing new Object() and referring to the desired properties. The revised syntax above is part of JSON (pronounced Jason), or JavaScript Object Notation. JSON is a lightweight data-interchange format that is a subset of JavaScript. JSON is used in objects and arrays in a highly readable form, and the technology plays in the same space as XML. The statement above creates an object with two properties: UserName and MyDocuments.</p>
<p><strong>Summary</strong></p>
<p>Now that you have the tools to configure a browser for ActiveX features and obtain client-specific information, it is up to you to figure out how you are going to use it. To recap JavaScript debugging is enabled automatically when Visual Studio starts an instance of IE8. Security settings like ActiveX support are managed by zone. For local workstation ActiveX support modify the Local Intranet zone. You can choose between enabling ActiveX support or prompting for permission. (I choose the latter, so I turn it off when not needed.) Finally, two of the objects that support discovering client-side information are WScript.Shell and WScript.Network. You can explore the integrated MSDN help for more information.</p>
<p>As a final note JavaScript Object Notation (JSON) was briefly introduced. JSON is subset of JavaScript and is a lightweight data-interchange format. JSON is picking up steam and becoming more popular, so I wedged it into the sample.</p>
<p><strong>Biography</strong></p>
<p>Paul Kimmel is the VB Today columnist for www.codeguru.com and has written several books on object- oriented programming and .NET. Check out his upcoming book Professional DevExpress ASP.NET Controls (from Wiley) now available on Amazon.com and fine bookstores everywhere. Look for his upcoming book Teach Yourself the ADO.NET Entity Framework in 24 Hours (from Sams). You may contact him for technology questions at <a href="mailto:pkimmel@softconcepts.com">pkimmel@softconcepts .com</a>. Paul Kimmel is a Technical Evangelist for Developer Express, Inc, and you can ask him about Developer Express at <a href="mailto:paulk@devexpress.com">paulk@devexpress.com</a> and read his DX blog at <a href="http://community.devexpress.com/blogs/paulk">http:// community.devexpress.com/blogs/paulk</a>.</p>
<p>Ref: <a title="Obtaining Client-Specific Information with a Web Application" href="http://www.developer.com/net/article.php/10916_3836371_1/Obtaining-Client-Specific-Information-with-a-Web-Application.htm" target="_blank">Obtaining Client-Specific Information with a Web Application</a></p>
<p></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/itzsudheer.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/itzsudheer.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/itzsudheer.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/itzsudheer.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/itzsudheer.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/itzsudheer.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/itzsudheer.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/itzsudheer.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/itzsudheer.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/itzsudheer.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/itzsudheer.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/itzsudheer.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/itzsudheer.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/itzsudheer.wordpress.com/162/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=162&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://itzsudheer.wordpress.com/2009/09/30/obtaining-client-specific-information-with-a-web-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47e058e0059ac4ee482dfd3c78222c13?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sudheer</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/08/jscripttn.jpg" medium="image" />

		<media:content url="http://www.developer.com/img/2009/08/activex.jpg" medium="image" />
	</item>
		<item>
		<title>Implementing Skins and Themes for ASP.NET</title>
		<link>http://itzsudheer.wordpress.com/2009/09/30/implementing-skins-and-themes-for-asp-net/</link>
		<comments>http://itzsudheer.wordpress.com/2009/09/30/implementing-skins-and-themes-for-asp-net/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 04:18:09 +0000</pubDate>
		<dc:creator>Sudheer</dc:creator>
				<category><![CDATA[DotNet]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[skins]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[Web Application]]></category>

		<guid isPermaLink="false">http://itzsudheer.wordpress.com/?p=159</guid>
		<description><![CDATA[Implementing Skins and Themes for ASP.NET This article will show you how to define both a custom skin and a theme for a web application. Adding a Theme to Your Web Application You can add a custom theme to your web project from the Solution Explorer. Right-click the root project name and click &#8220;Add ASP.NET [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=159&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h1>Implementing Skins and Themes for ASP.NET</h1>
<p><span style="font-family:Verdana,Arial,Helvetica,sans-serif;"> <!--content_start-->This article will show you how to define both a custom skin and a theme for a web application.</p>
<h3>Adding a Theme to Your Web Application</h3>
<p>You can add a custom theme to your web project from the Solution Explorer. Right-click the root project name and click &#8220;Add ASP.NET Folder&#8221; from the context menu, and then select the Theme item. This step adds an <tt>App_Themes</tt> folder containing a <tt>Theme1</tt> subfolder. The intent is that each theme subfolder should contain all the elements for a particular theme. Therefore, if you want to have multiple themes, simply add additional <tt>Theme</tt> sub-folders to the <tt>App_Themes</tt> folder.</p>
<p></span></p>
<table style="background:white none repeat scroll 0 0;font-family:Verdana,Arial,Helvetica,Sans-Serif;font-size:x-small;color:black;" border="1" cellpadding="3" width="55%">
<tbody>
<tr>
<td><strong>Author&#8217;s Note</strong>: You can also click App_Themes, select Add ASP.NET Folder and pick &#8220;Theme&#8221; from the context menu after you&#8217;ve added the</p>
<pre>App_Themes</pre>
<p>folder to your project.</td>
</tr>
</tbody>
</table>
<p><span style="font-family:Verdana,Arial,Helvetica,sans-serif;"></p>
<h3>Defining a Skin File</h3>
<p>Skin files are XML files with a <tt>.skin</tt> extension. To add a skin file to your web project&#8217;s <tt>Theme</tt> folder, right-click the Theme folder (<tt>Theme1</tt> in this example), and select Add New Item. From the Add New Item dialog select the Skin File item.</p>
<p>Visual Studio inserts a skin file template that initially contains a comment and some boilerplate heading information that shows you two examples:</p>
<pre>&lt;%--
Default skin template. The following skins are provided as examples only.
1. Named control skin. The SkinId should be uniquely defined because
   duplicate SkinId's per control type are not allowed in the same theme.
&lt;asp:GridView runat="server" SkinId="gridviewSkin" BackColor="White" &gt;
   &lt;AlternatingRowStyle BackColor="Blue" /&gt;
&lt;/asp:GridView&gt;
2. Default skin. The SkinId is not defined. Only one default
   control skin per control type is allowed in the same theme.
&lt;asp:Image runat="server" ImageUrl="~/images/image1.jpg" /&gt;
--%&gt;
</pre>
<div style="float:right;width:175px;margin-left:5px;margin-right:10px;"><a title="Click for a larger image" href="http://www.developer.com/img/2009/09/3838596_figure1.jpg" target="_blank"><img src="http://www.developer.com/img/2009/09/3838596_figure1.jpg" border="0" alt="" width="136" height="175" /><br />
<strong>Figure 1. Associating Controls with Skins:</strong></a> If your skin files contain control properties with a <tt>SkinId</tt> attribute set, then you can select a specific value for the control&#8217;s <tt>SkinID</tt> property.</div>
<p>The first example in the preceding skin file contains a <tt>SkinId</tt>, while the second example does not. That&#8217;s important, because when a skin element has a <tt>SkinId</tt> it belongs to the group of items having that same <tt>SkinId</tt>. However, elements without a <tt>SkinId</tt> become part of the default Skin definition.</p>
<p>A skin file can contain multiple skins. You can have one default skin—control properties without a <tt>SkinId</tt>—and as many named skins as you want: control properties with <tt>SkinId</tt> attributes. If your skin elements have a <tt>SkinId</tt> then Visual Studio will let you select the various <tt>SkinId</tt> values from a control&#8217;s <tt>SkinID</tt> property (see <a href="http://www.developer.com/img/2009/09/3838596_figure1.jpg" target="_blank">Figure 1</a>).</p>
<p>One reasonable way to define control properties for a skin file is to format the item&#8217;s appearance directly in an ASP.NET web page—and then copy and paste the applicable elements from the ASPX file to the <tt>.skin</tt> file. The following code shows the skin file elements defined for the example application:</p>
<pre>&lt;asp:GridView runat="server"
  AllowPaging="true" Font-Names="Tahoma"
  Font-Size="9pt" CellPadding="4"&gt;
  &lt;HeaderStyle BackColor="#C1DBFA" /&gt;
  &lt;AlternatingRowStyle BackColor="#ECF4FE" /&gt;
  &lt;RowStyle /&gt;
  &lt;PagerStyle CssClass="PagerStyleClass" BackColor="#C1DBFA" /&gt;
&lt;/asp:GridView&gt;
</pre>
<div style="float:right;width:175px;margin-left:5px;margin-right:10px;"><a title="Click for a larger image" href="http://www.developer.com/img/2009/09/3838596_figure2.jpg" target="_blank"><img src="http://www.developer.com/img/2009/09/3838596_figure2.jpg" border="0" alt="" width="175" height="71" /><br />
<strong>Figure 2. Skinned GridView:</strong></a> Here&#8217;s how the GridView looks with a skin file applied.</div>
<p>Notice that the boilerplate comments were removed from the preceding code, which provides <tt>HeaderStyle</tt>, <tt>AlternatingRowStyle</tt>, and <tt>PagerStyle</tt> settings. The skin contents also look very similar to the HTML/XML that defines a GridView in an ASPX page.</p>
<p>These control properties define a default skin. The skin specifies <tt>BackColor</tt> attributes for the header and alternating rows, and references a cascading style sheet class for the <tt>PagerStyle</tt> (discussed in more detail in the next section). It&#8217;s worth noting that the <tt>runat</tt> attribute has to be set to <tt>server</tt> in the <tt>.skin</tt> file. <a href="http://www.developer.com/img/2009/09/3838596_figure2.jpg" target="_blank">Figure 2</a> shows the result when this skin file is applied to a GridView.</p>
<h3>Building Out a Cascading Style Sheet</h3>
<p>While writing my <a href="http://books.internet.com/books/0470500832" target="_blank">latest book</a>, I got so used to looking at the Aqua theme provided with the DevExpress controls that I decided to approximate it for the demo. The style employs a subtle contrast between the header and footer and the alternating rows. The preceding skin file defines the control properties, including fonts and colors; however, skin files do not support style information for HTML elements. You need to define those in a cascading style sheet. The good news is that adding a cascading style sheet to your theme automatically incorporates it as part of the theme, without you having to add a specific reference in your web page.</p>
<p>The example in Figure 2 shows a GridView populated with information from the Northwind database&#8217;s <tt>Customers</tt> table. The grid is inside a <tt>&lt;div&gt;</tt> tag with some padding applied, and the table header <tt>&lt;th&gt;</tt> and table cell <tt>&lt;td&gt;</tt> use a solid thin blue border. (Remember that controls such as GridViews are rendered as HTML.) The pager is also rendered as an HTML table, but I didn&#8217;t want a border around the pager items. To eliminate the border around the pager items the PagerStyleClass uses a combinatory <tt>*</tt> and <tt>td</tt> to indicate that descendant <tt>td</tt> elements inside of the PagerStyleClass will use the PagerStyleClass settings. Here&#8217;s the CSS file added to <tt>Theme1</tt>:</p>
<pre>body {
}
.divClass
{
  border:solid thin Silver;
  margin: 10px 20px 10px 20px;
  padding: 10px 20px 10px 20px;
}
.PagerStyleClass * td
{
  border-style: none;
}
th, td
{
  border:solid thin #A3C0E8;
}
</pre>
<p>The <tt>.divClass</tt> entry defines a border, margin, and padding. This <tt>.divClass</tt> is assigned to the page&#8217;s main <tt>&lt;div&gt;</tt> tag&#8217;s <tt>class</tt> attribute. The element styles for the <tt>th</tt> (table header) and <tt>td</tt> (table cell) define a solid, thin, bluish border. All <tt>&lt;th&gt;</tt> and <tt>&lt;td&gt;</tt> elements will employ this style unless it&#8217;s overridden by some other style. You could also define a specific style class for the grid using the combinator approach used with the <tt>.PagerStyleClass</tt>. Finally, the <tt>.PagerStyleClass * td</tt> uses the combinator <tt>*</tt> to mean that the style information applies to descendant table cells.</p>
<p>With the theme complete, you can remove all redundant control properties from the ASPX pages to unclutter the ASPX code. You don&#8217;t <em>have</em> to do this because theme information overrides local property settings—but doing so may eliminate some confusion. Here&#8217;s the ASPX code for the sample solution:</p>
<pre>&lt;%@ Page Language="VB" AutoEventWireup="false"
  CodeFile="Default.aspx.vb" Inherits="_Default" %&gt;

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

&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head runat="server"&gt;
    &lt;title&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;form id="form1" runat="server"&gt;
    &lt;div&gt;
      &lt;asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
        DataKeyNames="CustomerID" DataSourceID="SqlDataSource1"&gt;

        &lt;Columns&gt;
          &lt;asp:BoundField DataField="CustomerID" HeaderText="CustomerID" ReadOnly="True"
            SortExpression="CustomerID" /&gt;
          &lt;asp:BoundField DataField="CompanyName" HeaderText="CompanyName"
            SortExpression="CompanyName" /&gt;
          &lt;asp:BoundField DataField="ContactName" HeaderText="ContactName"
            SortExpression="ContactName" /&gt;
          &lt;asp:BoundField DataField="ContactTitle" HeaderText="ContactTitle"
            SortExpression="ContactTitle" /&gt;
          &lt;asp:BoundField DataField="Address" HeaderText="Address"
            SortExpression="Address" /&gt;
          &lt;asp:BoundField DataField="City" HeaderText="City" SortExpression="City" /&gt;
          &lt;asp:BoundField DataField="Region" HeaderText="Region"
            SortExpression="Region" /&gt;
          &lt;asp:BoundField DataField="PostalCode" HeaderText="PostalCode"
            SortExpression="PostalCode" /&gt;
          &lt;asp:BoundField DataField="Country" HeaderText="Country"
            SortExpression="Country" /&gt;
          &lt;asp:BoundField DataField="Phone" HeaderText="Phone" SortExpression="Phone" /&gt;
          &lt;asp:BoundField DataField="Fax" HeaderText="Fax" SortExpression="Fax" /&gt;
        &lt;/Columns&gt;
        &lt;PagerStyle BorderStyle="None" /&gt;
      &lt;/asp:GridView&gt;
      &lt;asp:SqlDataSource ID="SqlDataSource1" runat="server"
        ConnectionString="&lt;%$ ConnectionStrings:NorthwindConnectionString %&gt;"
        SelectCommand="SELECT * FROM [Customers]"&gt;&lt;/asp:SqlDataSource&gt;
    &lt;/div&gt;
    &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<h3>Adding the Theme to a Web Page</h3>
<p>You can apply a theme to an individual web page by adding either a <tt>Theme</tt> or a <tt>StyleSheetTheme</tt> attribute to the page&#8217;s <tt>@Page</tt> directive. The following code fragment demonstrates how to use the <tt>Theme</tt> attribute; you use the <tt>StyleSheetTheme</tt> attribute in the same way:</p>
<pre>&lt;%@ Page Language="VB" AutoEventWireup="false"
  CodeFile="Default.aspx.vb" Inherits="_Default" Theme="Theme1"%&gt;
</pre>
<p></span></p>
<table style="background:white none repeat scroll 0 0;font-family:Verdana,Arial,Helvetica,Sans-Serif;font-size:x-small;color:black;" border="1" cellpadding="3" width="55%">
<tbody>
<tr>
<td><strong>Author&#8217;s Note</strong>: The difference between <tt>Theme</tt> and <tt>StylesheetTheme</tt> is that if you apply the <tt>Theme</tt> attribute then the theme&#8217;s control property settings take precedence over any local property settings. In contrast, if you apply the <tt>StylesheetTheme</tt> attribute, local property settings take precedence over theme-based settings.</td>
</tr>
</tbody>
</table>
<p><span style="font-family:Verdana,Arial,Helvetica,sans-serif;"></p>
<h3>Adding a Theme to an Entire Web Application</h3>
<p>If you want to apply a theme to your entire web application, then you set the <tt>theme</tt> attribute of the <tt>&lt;pages&gt;</tt> tag in the <tt>web.config</tt> file as shown below:</p>
<pre>&lt;pages theme="Theme1"&gt;
</pre>
<p>You&#8217;ve seen the rudiments of custom themes, skin files, and cascading style sheets, including the subtle yet important difference between the <tt>@Page</tt> <tt>Theme</tt> and <tt>@Page</tt> <tt>StylesheetThem</tt><tt>e</tt> attributes. For some great ideas for defining custom themes, look at some of the pre-defined themes used for other sample projects and existing web sites. You can also check out DevExpress&#8217;s ASP.NET controls for good theme ideas. You can download trial versions at <a href="http://www.devexpress.com/" target="_blank">http://www.devexpress.com</a>.</p>
<h3>About the Author</h3>
<p>Paul Kimmel is the VB Today columnist for <a href="http://www.codeguru.com/" target="_blank">www.codeguru.com</a>. He has written several books on object-oriented programming and .NET. Check out his latest book <a href="http://books.internet.com/books/0470500832" target="_blank">Professional DevExpress ASP.NET Controls</a> (from Wiley), and watch for his upcoming book <em>Teach Yourself</em><em> </em><em>the ADO.NET Entity Framework in 24 Hours</em> (from Sams). Paul is also a Technical Evangelist for Developer Express, Inc. You can <a href="mailto:paulk@devexpress.com">ask him about Developer Express</a> or <a href="http://community.devexpress.com/blogs/paulk" target="_blank"> read his DX blog here</a>.</p>
<p>Ref: <a title="Implementing Skins and Themes for ASP.NET" href="http://www.developer.com/article.php/3838596"><span style="font-family:Verdana,Arial,Helvetica,sans-serif;">Implementing Skins and Themes for ASP.NET</span></a></p>
<p></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/itzsudheer.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/itzsudheer.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/itzsudheer.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/itzsudheer.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/itzsudheer.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/itzsudheer.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/itzsudheer.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/itzsudheer.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/itzsudheer.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/itzsudheer.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/itzsudheer.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/itzsudheer.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/itzsudheer.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/itzsudheer.wordpress.com/159/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=159&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://itzsudheer.wordpress.com/2009/09/30/implementing-skins-and-themes-for-asp-net/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47e058e0059ac4ee482dfd3c78222c13?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sudheer</media:title>
		</media:content>

		<media:content url="http://www.developer.com/img/2009/09/3838596_figure1.jpg" medium="image" />

		<media:content url="http://www.developer.com/img/2009/09/3838596_figure2.jpg" medium="image" />
	</item>
		<item>
		<title>Sending Email Both in HTML and Plain Text</title>
		<link>http://itzsudheer.wordpress.com/2009/07/09/sending-email-both-in-html-and-plain-text/</link>
		<comments>http://itzsudheer.wordpress.com/2009/07/09/sending-email-both-in-html-and-plain-text/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 09:37:26 +0000</pubDate>
		<dc:creator>Sudheer</dc:creator>
				<category><![CDATA[DotNet]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[MailMessage]]></category>
		<category><![CDATA[Plain Text]]></category>

		<guid isPermaLink="false">http://itzsudheer.wordpress.com/?p=156</guid>
		<description><![CDATA[In this article you will learn how to send email using ASP.NET. Yes, there are plenty of other articles that cover sending email via .NET, but after spending a day doing research, I was amazed at how many articles failed to provide either a correct solution or a real world example. I found that many [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=156&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this article you will learn how to send email using ASP.NET. Yes, there are plenty of other articles that cover sending email via .NET, but after spending a day doing research, I was amazed at how many articles failed to provide either a correct solution or a real world example. I found that many articles suggest you create your HTML email by using a string with the HTML markup in it. That&#8217;s crazy and not at all a real world solution, at least not for most situations. In this article we will look at a more realistic solution. One in which we use a regular HTML file as our template for the email. The template file will be a standard HTML file with the exception of some placeholders that we will use to populate our content and images right before we send the email. Think mail-merge in Microsoft Word. Finally, we will also learn how to send the email in such a way that if the email recipient&#8217;s mail-client can&#8217;t render HTML they will get an alternate plain text version.</p>
<p>Let&#8217;s start by looking at the code in its entirety; the people that just want to grab the code and use it can do so. I will then explain the code.</p>
<p><a href="http://www.search-this.com/2009/02/05/aspnet-sending-email-both-in-html-and-plain-text/">PLAIN TEXT</a></p>
<p>C#:</p>
<ol>
<li><em>// CREATE EMAIL</em></li>
<li><em>// first we create a plain text version and      set it to the AlternateView</em></li>
<li><em>// then we create the HTML version</em></li>
<li>MailMessage msg = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> MailMessage();</li>
<li></li>
<li>msg.From = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> MailAddress(TextBoxYourEmail.Text);</li>
<li>msg.Subject = &#8220;Event:      &#8221; + labelEventName.Text;</li>
<li>msg.To.Add(TextBoxEmail1.Text);</li>
<li></li>
<li><em>// create a string to hold all email      addresses</em></li>
<li>StringBuilder sbEmailTo = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> StringBuilder();</li>
<li>sbEmailTo.Append(TextBoxEmail1.Text);</li>
<li></li>
<li>if (!String.IsNullOrEmpty(TextBoxEmail2.Text)) { msg.To.Add(TextBoxEmail2.Text); sbEmailTo.Append(&#8220;, &#8221; + TextBoxEmail2.Text); }</li>
<li>if (!String.IsNullOrEmpty(TextBoxEmail3.Text)) { msg.To.Add(TextBoxEmail3.Text); sbEmailTo.Append(&#8220;, &#8221; + TextBoxEmail3.Text); }</li>
<li>if (!String.IsNullOrEmpty(TextBoxEmail4.Text)) { msg.To.Add(TextBoxEmail4.Text); sbEmailTo.Append(&#8220;, &#8221; + TextBoxEmail4.Text); }</li>
<li>if (!String.IsNullOrEmpty(TextBoxEmail5.Text)) { msg.To.Add(TextBoxEmail5.Text); sbEmailTo.Append(&#8220;, &#8221; + TextBoxEmail5.Text); }</li>
<li></li>
<li>String      plainEmail = TextBoxYourName.Text + &#8221; has invited you to an event! <strong>\r\n</strong> <strong>\r\n</strong>&#8221; +</li>
<li> &#8220;Event Name: &#8221; +      labelEventName.Text + &#8220;<strong>\n</strong>&#8221; +</li>
<li> &#8220;Event Date: &#8221; +      eventTextBox.Text + &#8220;<strong>\n</strong>&#8221; +</li>
<li> &#8220;Event Description: &#8221;      + labelEventDescription.Text + &#8220;<strong>\r\n</strong> <strong>\r\n</strong>&#8221; +</li>
<li> &#8220;Message: &#8221; +      TextBoxPersonalMessage.Text;</li>
<li></li>
<li><em>//first we create the Plain Text part</em></li>
<li>AlternateView plainView = AlternateView.CreateAlternateViewFromString(plainEmail,      null, &#8220;text/plain&#8221;);</li>
<li>msg.AlternateViews.Add(plainView);</li>
<li></li>
<li><em>//now create the HTML version</em></li>
<li>MailDefinition message = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> MailDefinition();</li>
<li>message.BodyFileName = &#8220;email.htm&#8221;;</li>
<li>message.IsBodyHtml = true;</li>
<li>message.From = TextBoxYourEmail.Text;</li>
<li>message.Subject = &#8220;Zoo Event: &#8221; + labelEventName.Text;</li>
<li></li>
<li><em>//embed images for the email</em></li>
<li>EmbeddedMailObject emo = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> EmbeddedMailObject();</li>
<li>emo.Path = @&#8221;~\Images\email\hdr_roar.gif&#8221;;</li>
<li>emo.Name = &#8220;hdr&#8221;;</li>
<li></li>
<li>EmbeddedMailObject emo2 = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> EmbeddedMailObject();</li>
<li>emo2.Path = @&#8221;~\Images\email\box_top.gif&#8221;;</li>
<li>emo2.Name = &#8220;box_top&#8221;;</li>
<li></li>
<li>message.EmbeddedObjects.Add(emo);</li>
<li>message.EmbeddedObjects.Add(emo2);</li>
<li></li>
<li><em>//Build replacement collection to replace      fields in email.htm file</em></li>
<li>ListDictionary replacements = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> ListDictionary();</li>
<li>replacements.Add(&#8220;&lt;%EVENTDATE%&gt;&#8221;, eventTextBox.Text);</li>
<li>replacements.Add(&#8220;&lt;%EVENTNAME%&gt;&#8221;, labelEventName.Text);</li>
<li>replacements.Add(&#8220;&lt;%FROMNAME%&gt;&#8221;, TextBoxYourName.Text);</li>
<li>replacements.Add(&#8220;&lt;%EVENTDESCRIPTION%&gt;&#8221;, labelEventDescription.Text);</li>
<li>replacements.Add(&#8220;&lt;%PERSONALMESSAGE%&gt;&#8221;, TextBoxPersonalMessage.Text);</li>
<li></li>
<li><em>//now create mail message using the mail      definition object</em></li>
<li><em>//the CreateMailMessage object takes a      source control object as the last parameter, </em></li>
<li><em>//if the object you are working with is      webcontrol then you can just pass &#8220;this&#8221;, </em></li>
<li><em>//otherwise create a dummy control as below.</em></li>
<li>MailMessage msgHtml = message.CreateMailMessage(sbEmailTo.ToString(), replacements, <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> LiteralControl());</li>
<li></li>
<li>AlternateView htmlView = AlternateView.CreateAlternateViewFromString(msgHtml.Body, null,      “text/html”);</li>
<li>msg.AlternateViews.Add(htmlView);</li>
<li></li>
<li><em>// send email now (check web.config)</em></li>
<li>SmtpClient smtp = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> SmtpClient();</li>
<li>smtp.Send(msg);</li>
</ol>
<p><strong>The Setup</strong></p>
<p>Add the <strong>System.Net.Mail</strong> namespace. The System.Net.Mail namespace contains everything we need to send email using a Simple Mail Transfer Protocol (SMTP) server for delivery.</p>
<p>Modify the <strong>Web.config</strong> file to include the below:</p>
<p><a href="http://www.search-this.com/2009/02/05/aspnet-sending-email-both-in-html-and-plain-text/">PLAIN TEXT</a></p>
<p>CODE:</p>
<ol>
<li>&lt;system.net&gt;</li>
<li> &lt;mailSettings&gt;</li>
<li> &lt;smtp from=&#8221;admin@company.com&#8221;&gt;</li>
<li> &lt;network host=&#8221;localhost&#8221; port=&#8221;25&#8243;  /&gt;</li>
<li> &lt;/smtp&gt;</li>
<li> &lt;/mailSettings&gt;</li>
<li> &lt;/system.net&gt;</li>
</ol>
<p>The kicker and not well documented part to note is the from=&#8221;admin@company.com&#8221; in the smtp tag. You can change the from address later, but the <strong>MailDefinition </strong>class needs this here.</p>
<p>That&#8217;s it for setup. Now let&#8217;s look at the first chunk of code.</p>
<p><strong>Create The Plain Text Version</strong></p>
<p><a href="http://www.search-this.com/2009/02/05/aspnet-sending-email-both-in-html-and-plain-text/">PLAIN TEXT</a></p>
<p>C#:</p>
<ol>
<li>MailMessage msg = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> MailMessage();</li>
</ol>
<p>The <strong>MailMessage </strong>class represents an email message that can be sent using the <strong>SmtpClient </strong>class.</p>
<p><a href="http://www.search-this.com/2009/02/05/aspnet-sending-email-both-in-html-and-plain-text/">PLAIN TEXT</a></p>
<p>C#:</p>
<ol>
<li>msg.From = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> MailAddress(TextBoxYourEmail.Text);</li>
<li>msg.Subject = &#8220;Event:      &#8221; + labelEventName.Text;</li>
<li>msg.To.Add(TextBoxEmail1.Text);</li>
</ol>
<p>Pretty straight-forward. This just assigns the <em>From</em>, <em>Subject </em>and <em>To </em>properties to our mail message.</p>
<p><a href="http://www.search-this.com/2009/02/05/aspnet-sending-email-both-in-html-and-plain-text/">PLAIN TEXT</a></p>
<p>C#:</p>
<ol>
<li><em>// create a string to hold all email      addresses</em></li>
<li>StringBuilder sbEmailTo = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> StringBuilder();</li>
<li>sbEmailTo.Append(TextBoxEmail1.Text);</li>
<li></li>
<li>if (!String.IsNullOrEmpty(TextBoxEmail2.Text)) { msg.To.Add(TextBoxEmail2.Text); sbEmailTo.Append(&#8220;, &#8221; + TextBoxEmail2.Text); }</li>
<li>if (!String.IsNullOrEmpty(TextBoxEmail3.Text)) { msg.To.Add(TextBoxEmail3.Text); sbEmailTo.Append(&#8220;, &#8221; + TextBoxEmail3.Text); }</li>
<li>if (!String.IsNullOrEmpty(TextBoxEmail4.Text)) { msg.To.Add(TextBoxEmail4.Text); sbEmailTo.Append(&#8220;, &#8221; + TextBoxEmail4.Text); }</li>
<li>if (!String.IsNullOrEmpty(TextBoxEmail5.Text)) { msg.To.Add(TextBoxEmail5.Text); sbEmailTo.Append(&#8220;, &#8221; + TextBoxEmail5.Text); }</li>
</ol>
<p>In this example they have the option of sending the email to more than one recipient. So we perform a check on the four optional text-boxes to see if they have email addresses and if they are not empty then we add them to our <strong>MailMessage </strong>instance. In addition, we append them to our <strong>StringBuilder </strong>instance which we will end up using later.</p>
<p><a href="http://www.search-this.com/2009/02/05/aspnet-sending-email-both-in-html-and-plain-text/">PLAIN TEXT</a></p>
<p>C#:</p>
<ol>
<li>String      plainEmail = TextBoxYourName.Text + &#8221; has invited you to an event! <strong>\r\n</strong> <strong>\r\n</strong>&#8221; +</li>
<li> &#8220;Event Name: &#8221; +      labelEventName.Text + &#8220;<strong>\n</strong>&#8221; +</li>
<li> &#8220;Event Date: &#8221; +      eventTextBox.Text + &#8220;<strong>\n</strong>&#8221; +</li>
<li> &#8220;Event Description: &#8221;      + labelEventDescription.Text + &#8220;<strong>\r\n</strong> <strong>\r\n</strong>&#8221; +</li>
<li> &#8220;Message: &#8221; +      TextBoxPersonalMessage.Text;</li>
<li></li>
<li><em>//first we create the Plain Text part</em></li>
<li>AlternateView plainView = AlternateView.CreateAlternateViewFromString(plainEmail,      null, &#8220;text/plain&#8221;);</li>
<li>msg.AlternateViews.Add(plainView);</li>
</ol>
<p>Here we simply create a string which we&#8217;ll use as our plain-text email message. But remember, we only want to use the plain-text version of the email if their mail client does not support HTML. Therefore we use the <strong>AlternateView </strong>class and add it to our <strong>MailMessage </strong>instance. We could have chosen not to use the alternate view and just made it the body of our <strong>MailMessage </strong>instance, but not this time.</p>
<p>That&#8217;s it for the plain-text version, now we will handle the HTML version.</p>
<p><strong>Create The HTML Version</strong></p>
<p><a href="http://www.search-this.com/2009/02/05/aspnet-sending-email-both-in-html-and-plain-text/">PLAIN TEXT</a></p>
<p>C#:</p>
<ol>
<li><em>//now create the HTML version</em></li>
<li>MailDefinition message = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> MailDefinition();</li>
<li>message.BodyFileName = &#8220;email.htm&#8221;;</li>
<li>message.IsBodyHtml = true;</li>
<li>message.From = TextBoxYourEmail.Text;</li>
<li>message.Subject = &#8220;Zoo Event: &#8221; + labelEventName.Text;</li>
</ol>
<p>Notice we use the <strong>MailDefinition </strong>class this time and not the <strong>MailMessage </strong>class as we did with the plain-text version. That&#8217;s because it&#8217;s the <strong>MailDefinition </strong>class that allows us to to create an email from an HTML file. Notice the <em>BodyFileName </em>property that we have set to our &#8220;email.htm&#8221; file. This is just a regular old HTML file. Lastly, we set the <em>IsBodyHtml </em>property to true.</p>
<p><a href="http://www.search-this.com/2009/02/05/aspnet-sending-email-both-in-html-and-plain-text/">PLAIN TEXT</a></p>
<p>C#:</p>
<ol>
<li><em>//embed images for the email</em></li>
<li>EmbeddedMailObject emo = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> EmbeddedMailObject();</li>
<li>emo.Path = @&#8221;~\Images\email\hdr_roar.gif&#8221;;</li>
<li>emo.Name = &#8220;hdr&#8221;;</li>
<li></li>
<li>EmbeddedMailObject emo2 = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> EmbeddedMailObject();</li>
<li>emo2.Path = @&#8221;~\Images\email\box_top.gif&#8221;;</li>
<li>emo2.Name = &#8220;box_top&#8221;;</li>
<li></li>
<li>message.EmbeddedObjects.Add(emo);</li>
<li>message.EmbeddedObjects.Add(emo2);</li>
</ol>
<p>The above code adds two images to the HTML file. The <strong>EmbeddedMailObject </strong>represents an item to embed in a mail message. Notice the <em>Name </em>property. This is important because in our HTML file (email.htm) we have this <strong>&lt;img src=&#8221;cid:hdr&#8221; alt=&#8221;" /&gt;</strong> code which is where it maps to the image. This way of adding images to our <strong>MailDefinition </strong>object will send the images with the email. If you don&#8217;t wish to send images with your email you may choose to simply add absolute paths to your images in your HTML file like normal. Just make sure the paths are absolute.</p>
<p><a href="http://www.search-this.com/2009/02/05/aspnet-sending-email-both-in-html-and-plain-text/">PLAIN TEXT</a></p>
<p>C#:</p>
<ol>
<li><em>//Build replacement collection to replace      fields in email.htm file</em></li>
<li>ListDictionary replacements = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> ListDictionary();</li>
<li>replacements.Add(&#8220;&lt;%EVENTDATE%&gt;&#8221;, eventTextBox.Text);</li>
<li>replacements.Add(&#8220;&lt;%EVENTNAME%&gt;&#8221;, labelEventName.Text);</li>
<li>replacements.Add(&#8220;&lt;%FROMNAME%&gt;&#8221;, TextBoxYourName.Text);</li>
<li>replacements.Add(&#8220;&lt;%EVENTDESCRIPTION%&gt;&#8221;, labelEventDescription.Text);</li>
<li>replacements.Add(&#8220;&lt;%PERSONALMESSAGE%&gt;&#8221;, TextBoxPersonalMessage.Text);</li>
</ol>
<p>This is an important part. This is where we pass in fields to our HTML template. Within our HTML file we find this <strong>&lt;%EVENTDATE%&gt; </strong>. This is a placeholder that we use to pass in content. Pretty cool eh? Almost like a mail-merge in Word. So all the above gets mapped into our HTML template. Now we see the power of this solution. It sure beats creating a huge string. We have a regular old HTML file with the placeholders that we pass in the content. Any future changes can be done right in the HTML file. Nice&#8230;</p>
<p>Now the last code section:</p>
<p><a href="http://www.search-this.com/2009/02/05/aspnet-sending-email-both-in-html-and-plain-text/">PLAIN TEXT</a></p>
<p>C#:</p>
<ol>
<li><em>//now create mail message using the mail      definition object</em></li>
<li><em>//the CreateMailMessage object takes a      source control object as the last parameter, </em></li>
<li><em>//if the object you are working with is      webcontrol then you can just pass &#8220;this&#8221;, </em></li>
<li><em>//otherwise create a dummy control as below.</em></li>
<li>MailMessage msgHtml = message.CreateMailMessage(sbEmailTo.ToString(), replacements, <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> LiteralControl());</li>
<li></li>
<li>AlternateView htmlView = AlternateView.CreateAlternateViewFromString(msgHtml.Body, null,      “text/html”);</li>
<li>msg.AlternateViews.Add(htmlView);</li>
<li></li>
<li><em>// send email now (check web.config)</em></li>
<li>SmtpClient smtp = <a href="http://www.google.com/search?q=new+msdn.microsoft.com">new</a> SmtpClient();</li>
<li>smtp.Send(msg);</li>
</ol>
<p>The <strong>CreateMailMessage </strong>method creates the email message and does the merging of our <em>replacement </em>list with the placeholders. We also pass in the string that we created earlier. Remember the string held all the email recipient addresses. The last parameter is looking for a control that owns the <strong>MailDefinition</strong>. We don&#8217;t have one so we just pass in a dummy control.</p>
<p>All that remains is to send the email message via the smtp protocol. If everything in your <strong>Web.config</strong> file is set up correctly your email should be on the way.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/itzsudheer.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/itzsudheer.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/itzsudheer.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/itzsudheer.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/itzsudheer.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/itzsudheer.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/itzsudheer.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/itzsudheer.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/itzsudheer.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/itzsudheer.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/itzsudheer.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/itzsudheer.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/itzsudheer.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/itzsudheer.wordpress.com/156/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=itzsudheer.wordpress.com&amp;blog=7715748&amp;post=156&amp;subd=itzsudheer&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://itzsudheer.wordpress.com/2009/07/09/sending-email-both-in-html-and-plain-text/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/47e058e0059ac4ee482dfd3c78222c13?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Sudheer</media:title>
		</media:content>
	</item>
	</channel>
</rss>
