<?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>The Bright Lines &#187; Standards</title>
	<atom:link href="http://www.thebrightlines.com/tag/standards/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thebrightlines.com</link>
	<description>HTML, CSS, Javascript and more</description>
	<lastBuildDate>Thu, 29 Jul 2010 22:44:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Why do it yourself? Somebody else already did it for you!</title>
		<link>http://www.thebrightlines.com/2009/12/07/why-do-it-yourself-somebody-else-already-did-it-for-you/</link>
		<comments>http://www.thebrightlines.com/2009/12/07/why-do-it-yourself-somebody-else-already-did-it-for-you/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 20:29:15 +0000</pubDate>
		<dc:creator>Wouter Bos</dc:creator>
				<category><![CDATA[Web development in general]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://www.thebrightlines.com/?p=243</guid>
		<description><![CDATA[Web developers like to create their own solutions, but most of the time it's better to get to learn a real product and start to implement it]]></description>
			<content:encoded><![CDATA[<p>Sometimes the possibilities you have as developer seems endless. Do you or your company need a CMS? Lock yourself up for a few weeks and you have one. In need of an online video player? Look for a tutorial online and create your own.</p>
<p>Creating something from scratch can be empowering. It also gives a sense of control, because <em>you</em> can determine what the specifications should be of a product. Better: you don&#8217;t only know the specifications by heart, you also know just what strings you need to pull in <em>your</em> code. Getting to know a product that you didn&#8217;t code from scratch seem hard to master. And it can even harder to know it&#8217;s limitations. That&#8217;s not a situation that you want to be in, when talking to a customer. And so it seems better to stay in control and build an application of your own for your own needs.</p>
<h2>A CMS for everyone</h2>
<p>And so in-house coded CMS systems pop-up everywhere. But why? Are the ideas of those companies about Content Management Systems so different compared to what is already on the market? Most likely not. In many cases the euphoria of having your own CMS will turn to into a slowly simmering frustration because the time needed for bug fixes and feature request doesn&#8217;t match at all with the time that&#8217;s available.</p>
<p>We all know that creating a product needs time. But what we tend to forget is that keeping a product “healthy” and up-to-date also costs a lot of time in the long run. And so we have a plethora of CMS systems with loose ends and incomplete functionalities. Most of the time with an unfinished “help”-function.</p>
<p>For years I was accustomed to do as much as you can yourself. But now that the internet is getting bigger and bigger, you see companies specializing. Some companies are focusing on only one or a few products like a CMS, while the creators of websites ask themselves: “Am I better in building a CMS or in creating websites?” In most cases it&#8217;s the latter. And so it&#8217;s better to find a product that helps you to do the job fast instead of slowing you down.</p>
<h2>Example: a quick flash video player</h2>
<p>Now you may think that a CMS is an obvious thing you shouldn&#8217;t build yourself because the codebase is so large. Well, lets take something that needs less lines of code: a simple Flash video player. Many companies have developed their own Flash video player. Because it&#8217;s just relatively easy to do. But again: why? Most of the time such a in-house coded player has minimal documentation, if at all. And if you find documentation it&#8217;s likely out of date. What really bugs me if you&#8217;re asked to just “Fetch that player from our previous project”. Like that&#8217;s an acceptable codebase.</p>
<p>I recently decided to go with the open source <a href="http://flowplayer.org/">Flow player</a>. I fell for the various options to customize the player. Soon I discovered all kinds of advantages you wouldn&#8217;t have with your own code: <a href="http://flowplayer.org/forum/index.html">Forums</a>, <a href="http://flowplayer.org/documentation/skinning/controlbar.html?skin=default">wizards</a> and extensive documentation. I could send a designer a link to a wizard that enables him to skin the video player at a basic level. I also could pass the player to another team member without having to explain every step in the code. The documentation is online, help yourself. Let me continue with my work.</p>
<h2>Another example: Javascript libraries</h2>
<p>Libraries really can speed up your work. They do not only provide lots of canned functionality, but libraries like <a href="http://www.prototypejs.org/">Prototype</a>, <a href="http://mootools.net/">Mootools</a> and <a href="http://jquery.com/">jQuery</a> can also really speed up your own coding. jQuery really helped me to code faster, more stable and in less lines of code. It made coding in avascipt even more fun.</p>
<p>There are lots of resources out there. As a web developer you need not only to know your code languages, you also need to know when to use some existing code and know where to find it.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.thebrightlines.com/2009/12/07/why-do-it-yourself-somebody-else-already-did-it-for-you/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>What you can&#8217;t do in IE&#8217;s Quirks Mode</title>
		<link>http://www.thebrightlines.com/2009/11/27/filtering-ie6-and-ie7-in-quirks-mode/</link>
		<comments>http://www.thebrightlines.com/2009/11/27/filtering-ie6-and-ie7-in-quirks-mode/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 23:00:26 +0000</pubDate>
		<dc:creator>Wouter Bos</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://www.thebrightlines.com/?p=146</guid>
		<description><![CDATA[If you're accustomed to make websites by following the W3C guidelines, you'll be suprised what you can't do in IE when you have to work on a site that runs in IE's Quirks Mode (at least I was).]]></description>
			<content:encoded><![CDATA[<p>As most of you probably know IE can render websites in either Quirks Mode or Standards Compliant Mode. Standards Mode is the mode that is most compatible with other browsers like Firefox, while Quirks Mode exists for backwards compatibility purposes. IE automatically chooses one of these modes by looking at the first line of the HTML code. Check out <a href="http://www.quirksmode.org/css/quirksmode.html">Quirksmode.org</a> and <a href="http://en.wikipedia.org/wiki/Quirks_mode">Wikipedia</a> if you want to know more about both modes and how to trigger them. But in case you want the short summary: if you don&#8217;t start your document with a DTD like the example below, IE will render the website in Quirks Mode.</p>
<p><code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</code></p>
<p>I only build websites in Standards Mode, so Quirks Mode is an almost non-existent issue for me. This week, however, I had to restyle an old website. And while rewriting the CSS I remembered that the difference between the two modes goes farther than just a difference in <a href="http://en.wikipedia.org/wiki/Internet_Explorer_box_model_bug">box model</a>. Simple things you&#8217;ve learned to rely on in Standards Mode are gone in Quirks Mode.</p>
<h2>No <code>* html</code></h2>
<p>If I want a class to specifically target IE6 or IE7 I always prepend selectors with <code>* html</code> (IE6) or <code>*:first-child+html</code> (IE7) in case the rendering is a bit off with other browsers. But that simply doesn&#8217;t work in Quirks Mode. On Wikipedia there&#8217;s a <a href="http://en.wikipedia.org/wiki/CSS_filter">list of browser bugs you can exploit in CSS</a>. I chose to exploit the &rdquo;<code>!important</code> quirk&ldquo; since future browsers will just ignore the invalid CSS code that only runs in IE6 and IE7.</p>
<p>To use the &rdquo;<code>!important</code> quirk&ldquo; you misuse the <code>!important</code> keyword. Normally that keyword is used like this:</p>
<pre name="code" class="css:nogutter">
.classname {
    width: 100px !important;
}
</pre>
<p>The <code>!important</code> keyword ensures that the width of 100px cannot be overruled by other styles unless you use another <code>!important</code>. In IE6 and IE7 any keyword that starts with a <code>!</code> works like a <code>!important</code>, so you can write something like this:</p>
<pre name="code" class="css:nogutter">
.classname {
    width: 100px; /* works in all 'normal' browsers' */
    width: 150px !lteIE7; /* for IE 7 and lower */
}
</pre>
<h2>No fancy selectors</h2>
<p>What surprised me much more is that some advanced selectors like the attribute selectors are not possible in IE7 when running in Quirks Mode. So the CSS code below will only work in Standards Mode:</p>
<pre name="code" class="css:nogutter">
table[width='160'] { /* this selector will not run in IE7 Quirks Mode */
    width: 100px;
}
</pre>
<p>The same holds true for selectors like <code>:first-child</code>, the Adjacent Sibling (<code>+</code>) Combinator and the Child (<code>&gt;</code>) Combinator. Bummer.</p>
<h2>Why not use conditional comments?</h2>
<p>If you want to have some classes that are specifically targeted towards IE6 and IE7, Conditional Comments are the easiest and safest thing.</p>
<p><code>&lt;!--[if lt IE 6]&gt;<br />
&lt;link href='/css/IE6.css' rel='stylesheet' type='text/css' media='all' /&gt;<br />
&lt;![endif]--&gt;<br />
</code></p>
<p>But I prefer CSS filters above conditional comments. By using CSS filters I have all the styling of an element in one page and not scattered around in different CSS files. In most cases I only use conditional comments to hide CSS code that won&#8217;t validate.</p>
<p><a href="/conditional-comments/">More information about conditional comments</a></p>
<p><span style="font-size: 0.8em">Code for the sake of Technorati: 4252WKT38H9D</span></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.thebrightlines.com/2009/11/27/filtering-ie6-and-ie7-in-quirks-mode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
