<?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/"
	>

<channel>
	<title>Xebia Blog &#187; Ganesh Gembali</title>
	<atom:link href="http://blog.xebia.com/author/ggembali/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.xebia.com</link>
	<description>Software development done right!</description>
	<lastBuildDate>Wed, 01 Feb 2012 00:30:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Tips &amp; Tricks For Cross Browser Compatible CSS Development</title>
		<link>http://blog.xebia.com/2008/04/10/tips-tricks-for-cross-browser-compatible-css-development/</link>
		<comments>http://blog.xebia.com/2008/04/10/tips-tricks-for-cross-browser-compatible-css-development/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 07:16:48 +0000</pubDate>
		<dc:creator>Ganesh Gembali</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Cross browser]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=502</guid>
		<description><![CDATA[In web development, Cascading Style Sheets (CSS) is a stylesheet language used to describe the presentation of a document written in a markup language. It has a simple syntax, and uses a number of English keywords to specify the names of various style properties. Its specifications were maintained by W3C. It still hasn&#8217;t became a [...]]]></description>
			<content:encoded><![CDATA[<p>In web development, Cascading Style Sheets (CSS) is a stylesheet language used to describe the presentation of a document written in a markup language. It has a simple syntax, and uses a number of English keywords to specify the names of various style properties. Its specifications were maintained by W3C. It still hasn&#8217;t became a standard over all browsers.</p>
<p>Here I want to share some of my experiences( pains I went through <img src='http://blog.xebia.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) while developing styles for my previous projects. One of the project is based on div structure and other is based on table and div structure.<span id="more-502"></span></p>
<p>Some CSS styling attributes differs from browser to browser. But when we are developing a website most of the clients want their site to be compatible for all browsers. By cross browser compatible CSS it doesn&#8217;t mean that website works in all browsers, it also should have same look n feel in all browsers.</p>
<p><strong>CSS validation</strong><br />
When ever you found some difference in the appearance of page in different browsers, validate the css file. Check for syntax errors in the file eg. missing, closing or extra braces while defining styles. Suppose I have defined a style for a div as follows</p>
<pre lang="html">
 div#wrongStyle{{
   color : red;
   font-size:19px;
 }
</pre>
<p>IE applies above styles to the div but not Firefox. IE can correct such small errors but Firefox wont do that.<br />
<strong>Separating styles</strong><br />
If you want to provide styling based on IE version you can use specify it in the following manner.</p>
<pre lang="html">
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="IE-stylesheet.css" />
<![endif]--></pre>
<pre><![if !IE]>
<link rel="stylesheet" type="text/css" href="default-stylesheet.css" />
<![endif]>
</pre>
<p><strong>Developing styles for DIV based structure</strong></p>
<p>In div based structure each element on the web page is placed inside a div and styles will be applied to it. To position those div elements you can use absolute positioning with fixed width or relative positioning.</p>
<p>Here the first thing we need to keep in mind is to separate positioning information from styling  information. So that common styles like font, colors can be specified in top elements. It helps to maintain the layout without disturbing the styles. While developing these styles ,its a good idea to go in <strong>agile manner</strong>. i.e after applying each element check the page in all target browsers. This eases fixing the cross browser issues. If you are using absolute positioning you can develop each element in separate html file. These separate files or absolutely positioned div elements can be merged easily to form a complete web page.</p>
<p><strong>CSS width, padding problem</strong></p>
<p>The box model hack is used to fix a rendering problem in pre-IE 6 browsers, where by the border and padding are included in the width of an element, as opposed to added on.<br />
For example, when specifying the dimensions of a container you might use the following CSS rule:</p>
<pre lang="html" >
 #box
 {
      width: 100px;
      border: 5px;
      padding: 20px;
  }
</pre>
<p>This CSS rule would be applied to:</p>
<pre lang="html">
<div id="box">
    This is some dummy division holding a dummy text
</div>
</pre>
<p>In normal browsers above rule is interpreted as 100px width + two 5px borders + two 20px paddings. So the final width of the element will be<br />
150px. But in pre-IE6 browsers the total width would be just 100px, with the padding and border widths being incorporated into this width. </p>
<p>A simple way to solve this is to have one more div inside and specify width for inner one and padding and margin to the outer. The code will look like&#8230;</p>
<pre lang="html">
#box
{
 width: 150px;
}
#boxInner
{
border: 5px;
padding: 20px;
}
</pre>
<p><span> And the new HTML would be:</span></p>
<pre lang="html">
<div id="box">
<div id="boxInner">
               This is some dummy division holding dummy text
     </div>
</div>
</pre>
<p>Using the above code will help to show the box width to 150px regardless of the browser.</p>
<p><strong>Selecting precise descendants</strong></p>
<p>Sometimes <a href="http://www.quirksmode.org/css/contents.html"> CSS selectors </a> also behaves differently in different browsers. To apply styles to a particular element in the page you can use child selector ( &#8221; parent > child > child&#8217;s child &#8221; ). In my case, I faced the following problem. I need to apply some style only to the first li under &#8220;parent&#8221; class ul element and I don&#8217;t have any control over the html code.</p>
<pre lang="html">
<div>
<ul class="parent">
<li> Item 1</li>
<ul>
<li> Sub Item 1 </li>
<li> Sub Item 1 </li>
</ul>
</li>
<li>Item 2 </li>
</ul>
</div>
</pre>
<p>Now, you can specify the styling in the following way using child selector <em>parent > li </em>{ style goes here}. There might be some other way for this. But I found it the above way useful as I can&#8217;t change the html code.</p>
<p><strong>Using Table structure for page</strong></p>
<p>The most important thing we need to keep in mind while developing styles for tables is, on the top level element (usually body) specify padding, margin and border to be 0px. After that you can specify these attributes individually by assigning the div id or class where ever required. Also specify &#8220;cellpadding&#8221;, &#8220;cellspacing&#8221; and &#8220;border&#8221; values in table tag explicitly, because the default values for these attributes differs from browser to browser.</p>
<p><strong>Conclusion</strong></p>
<p>You can find many other tips like this on net. Its always better to restructure our css and layout to make styling compatible with different browser rather than using some hacks. If you are using some hack it might work in the browser that you are testing and might not work on end user browser <img src='http://blog.xebia.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . These are the ones that I have found useful during part of my projects development You can also share your experiences ( or pains <img src='http://blog.xebia.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) here while using CSS.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2008/04/10/tips-tricks-for-cross-browser-compatible-css-development/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2008%2F04%2F10%2Ftips-tricks-for-cross-browser-compatible-css-development%2F&amp;title=Tips%20%26%23038%3B%20Tricks%20For%20Cross%20Browser%20Compatible%20CSS%20Development" id="wpa2a_2"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2008/04/10/tips-tricks-for-cross-browser-compatible-css-development/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Common mistakes made in Agile projects based on new technologies</title>
		<link>http://blog.xebia.com/2008/04/09/common-mistakes-made-in-agile-projects-based-on-new-technologies/</link>
		<comments>http://blog.xebia.com/2008/04/09/common-mistakes-made-in-agile-projects-based-on-new-technologies/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 04:09:09 +0000</pubDate>
		<dc:creator>Ganesh Gembali</dc:creator>
				<category><![CDATA[Agile]]></category>

	<!-- AutoMeta Start -->
	<category></category>
	<!-- AutoMeta End -->
	
		<guid isPermaLink="false">http://blog.xebia.com/?p=492</guid>
		<description><![CDATA[In recent times Agile methodology have proved its worth by successfully executing the projects. It minimizes the risk by developing software in short amounts of time. With this iterative model it also minimizes the cost of change in requirements, which makes it suitable for current dyanmic market. Two main practices that helps the developer to [...]]]></description>
			<content:encoded><![CDATA[<p>In recent times Agile methodology have proved its worth by successfully executing the projects. It minimizes the risk by developing software in short amounts of time. With this iterative model it also minimizes the cost of change in requirements, which makes it suitable for current dyanmic market. Two main practices that helps the developer to incorporate the change are refactoring and simple design. But when it comes to doing these two things with a completely new technology,  it might be hard to implement.
</p>
<p><span id="more-492"></span></p>
<p>In this article I am going to share some of my experiences with my first project. This is an agile project based on a technology which is new to the whole team. I spent around two weeks in understanding the technical features and strengths of the technology.Where as others in the team had never worked with it or similar technology. Here I will discuss about some mistakes that ( I feel <img src='http://blog.xebia.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )we did while executing the project.
</p>
<p>
Most of the things discussed here might even  apply to those projects ,where part of the team is new to the technologies selected for the project. The risk factor is lower in projects, that has atleast one team member who already knows the ins and outs of the technology selected for the project.The following things should be taken care of when whole or most part of the agile team are working on a completely new technology.</p>
<p>
First and most important step is to evaluate the technology for the given project requirements. Doing the evaluation  gives the team a motivation to learn if it&#8217;s really worth. Developer at some point may get a feeling that why should they use this technology instead some thing that he/she already know.<br />
This kind of feeling on the minds of developers affects their learning skills and inturn productivity. Although the technology chosen may not be the best, evaluating it definitely gives the developer a psychological boost to learn and appreciate the use of it for the project.Do this evaluation until the whole team feels that this chosen technology definitely provides some value for the project.Being agile we can give the team  room to change the technology in middle. But at that times we need to think about cost involved in chaging the technology of choice.
</p>
<p>
Once every one gets a good understanding about the technology, collect full documentation and any other training information for that particular technology and make it accessible for team members. Instead of directly starting with development work , first let the team to explore technology. They should get a overview of technology like what are the features it provides , playing with some sample codes. But there is no need to learn or master the technology at beginning itself. If it is a big project, its better to have a beginners-course for all to learn the new technology.
</p>
<p>
Once the team gets the overview ,team members can start with development. While working on different tasks people comes across different new features ,problems and solutions for them. So it is better share the knowledge among the team  during the standup or iteration planning. This makes others need not waste their time  on issues on which some one already explored. This knowledge transfer can be done easily in agile process by changing pairs frequently. It can also be done by having knowledge transfer meetings at regular periods, may be once or twice in a week. Some times when the problem is major it can be on-demand.
</p>
<p>Another most important thing is, we should be careful while choosing iteration backlog. When chosing the task,  expect the worst case. This is because team dont know the actual complexity of the task.If by mistake the task take more time than expected, it will give a bad impression to the client. Especially in agile projects where client satisfaction is very important , estimation of complexity points plays a crucial role here.
</p>
<p>
Dont believe in burndown chart. Burndown chart shows the progress of what has been done already. We cant make estimations based on current velocity as we dont know what type of path is ahead to us. So in both of the above situations , its better to do a risk analysis and adjust the time needed for tasks using risk factor calculated. Spike testing also can help in estimating the effort needed with more accuracy.
</p>
<p>
The most common problem in agile projects is lack of continuos feedback from stakeholders. This is can be too dangerous as in this case: at every instance whenever there is no stakeholders feedback, team takes its own decision and proceedes in that direction. By the time team gets the feedback they have to again spend the same or more amount of effort for fixing things. Some times it might be worst and gives a feeling to everyone that project is a failure.
</p>
<p>
Although there are problems with agile based projects based on new technologies, it may still suite such projects if proper care is taken. With agile we can fail early to judge the technology of choice. We can see the working software at the end of each iteration which gives confidence to developers and client about technology. The feedback mechanism in agile guides developers to go in right direction. If we can take into account the above discussed problems , agile can make these projects successful. I would be interested to hear your comments and experiences with such projects as well.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;"><g:plusone size="small" count="1" href="http://blog.xebia.com/2008/04/09/common-mistakes-made-in-agile-projects-based-on-new-technologies/"></g:plusone></div><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.xebia.com%2F2008%2F04%2F09%2Fcommon-mistakes-made-in-agile-projects-based-on-new-technologies%2F&amp;title=Common%20mistakes%20made%20in%20Agile%20projects%20based%20on%20new%20technologies" id="wpa2a_4"><img src="http://blog.xebia.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.xebia.com/2008/04/09/common-mistakes-made-in-agile-projects-based-on-new-technologies/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  blog.xebia.com/author/ggembali/feed/ ) in 1.12702 seconds, on Feb 9th, 2012 at 4:10 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on Feb 9th, 2012 at 5:10 pm UTC -->
