<?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; Web development in general</title>
	<atom:link href="http://www.thebrightlines.com/category/web-development-in-general/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thebrightlines.com</link>
	<description>HTML, CSS, Javascript and more</description>
	<lastBuildDate>Tue, 17 Jan 2012 22:00:35 +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>Crucial stuff for your company&#8217;s internal projects</title>
		<link>http://www.thebrightlines.com/2012/01/17/1028/</link>
		<comments>http://www.thebrightlines.com/2012/01/17/1028/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 20:49:44 +0000</pubDate>
		<dc:creator>Wouter Bos</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Web development in general]]></category>

		<guid isPermaLink="false">http://www.thebrightlines.com/?p=1028</guid>
		<description><![CDATA[I was musing about what is crucial to make an internal project like Bootstrap from Twitter work.]]></description>
			<content:encoded><![CDATA[<p>Reading the <a href="http://www.alistapart.com/articles/building-twitter-bootstrap/">article on Twitter&#8217;s Bootstrap</a> on A List Apart definitely gave me positive vibe. Twitter and above all its team proved that you can create cool and useful tools if you think further ahead than just pondering how you&#8217;re going to write your 20th incarnation of a sitemap link list for some project.</p>
<p>Yes, it takes some time and discussions between the disciplines but you can win so much time in the future if done right. Doing stuff right depends on some crucial things:</p>
<ul>
<li><strong>Work interdisciplinary and as (almost) equals.</strong> It&#8217;s easy to say what you think out the whole plan yourself, but if you do that, others are not inclined to think with you. Each new idea becomes just another bump in the project instead of a good contribution to a discussion to get a better understanding of a problem. By putting your problem on the table and make team members <em>real</em> team members, you get a real discussion. And a better product in the end</li>
<li><strong>Make your work public.</strong> You also get a whole other situation if you know that other people (clients or the community) are keeping an eye on you. In the positive sense of the word, that is. You have to think (just like Twitter) what is really useful outside your little bubble. And you might get good feedback to make your code even better/stable/useful.<br />
By thinking hard how to make stuff usable for the outside world, you&#8217;re instantly making a very usable and learnable tool for anyone who&#8217;s going to work at your firm.<br />
Making open source software could also motivate people. They&#8217;re not just working hard for the company anymore, they&#8217;re also working on something that can also be useful outside of the company and the greater good. That can be the motivation to work a more on it outside work time.</li>
<li><strong>Results before deadlines or budget.</strong> Ok, projects with limitless budgets aren&#8217;t realistic. But making reusable code or applications without keeping an eye on its usability or not even testing isn&#8217;t realistic either. To get quality reusable code you do not only need to write it, you have to think it out, write it <em>and</em> rewrite it <em>and</em> rewrite it. If you&#8217;re not prepared to do that, just save yourself the trouble.</li>
<li><strong>Continuous testing.</strong> Don&#8217;t wait until the very end of the project to measure its quality. You cannot remove the concrete slabs below an ill-constructed house either. Everybody has to at least check the end result of the finished component before moving on to the next target.</li>
<li><strong>Reusability is epic.</strong> Don&#8217;t kid yourself: Most of the stuff you do now has been done in the past as well. Talk with designers, programmers and developers to aim for reusability while preventing that all websites start to look the same. Getting some framework that works for everybody is everybody&#8217;s priority.</li>
<li><strong>Keep it simple.</strong> Some projects need solid plans. Others don&#8217;t. Some stuff does not have to be written out in threefold as long as the basics are known and the outer borders have been drawn. Be wary if the 5th version of the plan is mailed in PDF form to all team members, project time already gets out of hand and no real work is done yet.</li>
</ul>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.thebrightlines.com/2012/01/17/1028/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Considerations on building a frontend codebase</title>
		<link>http://www.thebrightlines.com/2011/09/22/considerations-on-building-a-frontend-template-in-html-css-and-javascript/</link>
		<comments>http://www.thebrightlines.com/2011/09/22/considerations-on-building-a-frontend-template-in-html-css-and-javascript/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 20:46:34 +0000</pubDate>
		<dc:creator>Wouter Bos</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Web development in general]]></category>

		<guid isPermaLink="false">http://www.thebrightlines.com/?p=933</guid>
		<description><![CDATA[This article is about my thoughts on how to build a solid codebase for your (frontend) web development.]]></description>
			<content:encoded><![CDATA[<p>Every developer at one time stops looking for code from previous built websites and starts building his own standardized code to cut down on production time and repetative work. Call it a boiler plate, codebase, template, scaffolding, framework or whatever. The bottom line is that every developer needs one.</p>
<h2>Problems with my current codebase</h2>
<p>Well, I already have a codebase, but it has some problems. The important one is that it only covers the very basics. That&#8217;s because designs can be very diverse and as a developer I want to stay true to the design. So it&#8217;s hard to build a codebase with grids and blocks if all design differ from eachother.</p>
<p>Another problem major issue is something I have more control over: the codebase and the documentation is a bit scattered. The last problem I have is that I have no demo page of my standard CSS code, so there&#8217;s no easy way to check the template on browser compatibilities.</p>
<p>Now my <a href="/onopager/website/">jQuery plugin project</a> has reached version 1.1, I had the time to do some thinking about a new codebase that would be solid, extendable, easy to deploy and would replace all other codebases and documentation.</p>
<p>Let me make it clear: this article is about my considerations about building a solid framework for myself. It may not apply to you and my ideas not unique either. It still may be helpful for you to get an idea of what sort of codebase you need.</p>
<h2>Existing examples</h2>
<p>The most important thing about a codebase is to decide how to set it up and how to store it. I like the way open source grids like <a href="http://960.gs/">Grid960</a> and <a  href="http://developer.yahoo.com/yui/grids/">YUI</a> have organized their code into little reusable bits and have created a demo and test page for each and every component.</p>
<p>I must admit: I hardly ever used these grids. Most of those grids talk the language of the web developer, not of the designer. And the designers I know don&#8217;t have to limit themselves to a 24-column grid system. Not to mention the designers that are totally ignorant of such a system and whose task is to design a website and mail the Photoshop file to some other company that has to build it. Although I have my reservations towards grids, I like the way these codebases are organized. It can serve as a good <a href="http://www.blueprintcss.org/">Blueprint</a> for my own codebase.</p>
<p>I also get my inspiration from Nicole Sullivan&#8217;s talk on Object Oriented CSS (OOCSS). OOCSS basically means that you build your components in such a way that they become extendable objects. Just like in real object oriented programming. Just have a look at <a href="http://www.stubbornella.org/content/2009/03/23/object-oriented-css-video-on-ydn/">her talk about OOCSS on Yahoo! Developer Network</a>.</p>
<h2>Prefix classes</h2>
<p>By adding a (relatively) unique string before the name of the class you have created your own CSS namespace. It will minimize any interference of other CSS styling that is not part of your own code. Some real life examples can be found in the code that is generated by the CMS systems I have experience with: <a href="http://www.sitefinity.com">Sitefinity</a> and <a href="http://www.sitecore.com">Sitecore</a>. The CMS Sitefinity for example prefixes all CSS classes with &#8220;sf_&#8221;.</p>
<h2>Grids, blocks and text</h2>
<p>All CSS code will be split into different categories that work relatively independently of each other. Until now I can come up with 3 of them.</p>
<h3>Grids</h3>
<p>Grids are the frameworks of placeholders in which we put our content. You know: header, visual, column1, column2, column3 and footer. There are lots of grid templates around like <a href="http://960.gs/">Grid960</a> and <a href="http://www.blueprintcss.org/">Blueprint</a>. My view is that those templates only work if the designer agrees to work within the limits of that framework. My ambition is to write a framework that makes my work easier while still being flexible enough to keep the designers happy.</p>
<h3>Blocks</h3>
<p>There are as many block as the designer can come up with. I think it will be a real time saver to talk with the designer and write down all the types of blocks he thinks he&#8217;ll like to use often. Or even better: just open the last 20 or so web designs he/she made and destil the common blocks and its common features. like menus, news article lists, homepage spotlights, etc. Finally you create basic blocks of it in your template system.</p>
<p>Standarization is not always popular with designers but if it means that projects can be created cheaper there may eventually be budget left to build cool stuff. At least, I hope&#8230;</p>
<h3>Text</h3>
<p>Basic text styling is also a relatively independent component in CSS code. You always define a basic font color, family, size and line height that serves as a base styling for the whole websites. More specific text styling in blocks should be kept to a minimum and preferably relatively to the base text style. So if you have a base style of <code>font: 1em/1.5em normal Arial, sans-serif</code>, you ideally should style a header in a block like this: <code>font-size: 1.5em; line-height: 1.2em;</code>.</p>
<p>Although <code>font-weight</code> is not something you can set relative to a base style, it&#8217;s not likely that it will look ugly in combination with some design if you add <code>font-weight</code> styling to a block. Setting the <code>font-family</code> in the styling of blocks on the other hand will most likely interfere with design, since designs tend to depend heavily on a particular font.</p>
<h2>Create base templates and extend themes</h2>
<p>The code for each grid system and each block will be stored in a seperate base CSS file. Each grid or block can be extended with extra themes or styles. Each style extension will have its own CSS file and presumes that the base file is already loaded.</p>
<h2>Optimizing CSS</h2>
<p>Having all code seperated in small snippets is great for maintaining an overview. As long as you can see what a CSS file does by looking at its filename, its will be easy to add and extend styling to a website.</p>
<p>The template code is not optimized for speed, though. If we don&#8217;t do anything about the fragmentation, the server will have to load a bunch of little CSS files. It&#8217;s important to stress this: It&#8217;s not just the total filesize that matters, each http request costs time. Check out <a href="http://developer.yahoo.com/yslow/">YSlow</a> if you want to know more about this and if it affects your site.</p>
<h3>YUI</h3>
<p>That&#8217;s why all CSS in the website has to be exported, merged and its code minified to one single CSS file. Normally I use <a href="http://developer.yahoo.com/yui/compressor/">YUI compressor</a> for it.</p>
<h3>Less</h3>
<p>But you can do more than just minification. <a href="http://lesscss.org/">Less</a> is a system that extends the CSS syntax with stuff like variables, nested rules and mixins. Less was originally built in Ruby, but there&#8217;s also an <a href="http://www.dotlesscss.org/">ASP.NET port</a>. I hope it will help me create very flexible grids.</p>
<p>By exporting CSS into optimized code, you can focus on making the most readable CSS source file because all comments and spaces in the code will be removed in the end. This is also what I do with JavaScript code and certainly will continue to do.</p>


<p>Related posts:<ol><li><a href='http://www.thebrightlines.com/2009/12/24/too-advanced-css-selectors/' rel='bookmark' title='Permanent Link: Too advanced CSS selectors'>Too advanced CSS selectors</a></li>
<li><a href='http://www.thebrightlines.com/2011/09/08/the-last-resort-in-css-debugging/' rel='bookmark' title='Permanent Link: The last resort in CSS debugging'>The last resort in CSS debugging</a></li>
<li><a href='http://www.thebrightlines.com/2011/11/21/debugging-less-css/' rel='bookmark' title='Permanent Link: Tips for using and debugging of Less CSS code'>Tips for using and debugging of Less CSS code</a></li>
<li><a href='http://www.thebrightlines.com/2012/01/17/1028/' rel='bookmark' title='Permanent Link: Crucial stuff for your company&#8217;s internal projects'>Crucial stuff for your company&#8217;s internal projects</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.thebrightlines.com/2011/09/22/considerations-on-building-a-frontend-template-in-html-css-and-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The last resort in CSS debugging</title>
		<link>http://www.thebrightlines.com/2011/09/08/the-last-resort-in-css-debugging/</link>
		<comments>http://www.thebrightlines.com/2011/09/08/the-last-resort-in-css-debugging/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 10:32:52 +0000</pubDate>
		<dc:creator>Wouter Bos</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web development in general]]></category>

		<guid isPermaLink="false">http://www.thebrightlines.com/?p=910</guid>
		<description><![CDATA[CSS is in essence relatively simple: you point to one or more nodes in the DOM with a rule and apply some styles to it. That is the theory. In practice debugging CSS can be hard sometimes. Most of the time it's because either the code lacks the neccesary structure or you don't have arcane knowledge of browser bugs.]]></description>
			<content:encoded><![CDATA[<p>Even when you&#8217;re a structured CSS coder and know all the browser glitches (or <em>think</em> you do), it can happen you find yourself between a rock and a hard place. You know, when you stare at the screen, glancing over all the style properties in Firebug and still don&#8217;t have a clue about what&#8217;s going on.</p>
<h2>DEL is your friend</h2>
<p>Those cases happen rarely but when they do, I always resort to a tested and tried technique: isolate the problem by removing or commenting all unneeded markup. Isolating the problem may take some time but when you have a web page with a minimum of HTML while keeping the styling bug intact, you get in most cases the bug fixed in no time.</p>
<p>Why does isolating code work so well? Well, most of the time you can find styling bugs by experience, but when you&#8217;re stuck, every bit of styling on a tag becomes suspicious and that&#8217;s just too much to test. The bug becomes a needle in a hay stack.</p>
<h2>Removing the easy way</h2>
<p>The best way to remove blocks in a page is by just adding a <code>display: none</code> to its styling via a developer tool like Firefox&#8217;s Firebug, Opera&#8217;s Dragonfly, Webkits developer tools or IE&#8217;s Web Developer Toolbar. Just cut away big blocks and each time you remove something, you test if the bug still persists. You continue until you find the block that is triggering the bug. Most of the time you&#8217;ll have to continue the same technique of removing bits of code <em>within</em> that block until you can isolate the problem.</p>
<div class="wp-caption alignnone" style="width: 450px"><img title="Hiding block by adding a display: none" src="http://www.thebrightlines.com/article-data/images/debug1.png" alt="Hiding block by adding a display: none" width="440" height="221" /><p class="wp-caption-text">Hiding a block by adding a &#39;display: none&#39;</p></div>
<div class="wp-caption alignnone" style="width: 450px"><img title="Removing a block of HTML completely" src="http://www.thebrightlines.com/article-data/images/debug2.png" alt="Removing a block of HTML completely" width="440" height="221" /><p class="wp-caption-text">Removing a block of HTML completely</p></div>
<h2>Removing the source code</h2>
<p>Sometimes it&#8217;s better to have direct access to the source HTML than doing temporary changes in the developer tool. But if the HTML is (partly) created server side it&#8217;s hard to easily remove stuff. In those cases when I&#8217;m <em>really</em> desperate, I request the HTML source from the browser and save it in the directory the original web page resides. Then I can make dramatic changes to the code and test in multiple browsers without affecting the site itself.</p>
<p>Is this an efficient way of debugging? Definitely not, but sometimes you just need to do it. It happens to me once or twice a year or so and by debugging that way I always managed to find the root of the problem.</p>


<p>Related posts:<ol><li><a href='http://www.thebrightlines.com/2009/10/22/css-debugging/' rel='bookmark' title='Permanent Link: CSS debugging'>CSS debugging</a></li>
<li><a href='http://www.thebrightlines.com/2011/11/21/debugging-less-css/' rel='bookmark' title='Permanent Link: Tips for using and debugging of Less CSS code'>Tips for using and debugging of Less CSS code</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.thebrightlines.com/2011/09/08/the-last-resort-in-css-debugging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The grey areas of progressive enhancement</title>
		<link>http://www.thebrightlines.com/2011/09/03/the-grey-areas-of-progressive-enhancement/</link>
		<comments>http://www.thebrightlines.com/2011/09/03/the-grey-areas-of-progressive-enhancement/#comments</comments>
		<pubDate>Sat, 03 Sep 2011 05:42:12 +0000</pubDate>
		<dc:creator>Wouter Bos</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Web development in general]]></category>
		<category><![CDATA[Adaptive]]></category>
		<category><![CDATA[corporate identity]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Progressive enhancement]]></category>

		<guid isPermaLink="false">http://www.thebrightlines.com/?p=889</guid>
		<description><![CDATA[Stepping up for the designers here: progressive enhancement is not always in the best interest of your client.]]></description>
			<content:encoded><![CDATA[<p>Yesterday I found the <a href="http://boagworld.com/design/where-are-my-rounded-corners/">PDF of Paul Boag on why progressive enhancement is better</a> than making sure that a website looks the same in all browsers, even older browsers like IE7. It&#8217;s just a 5-minute read and it&#8217;s a good stuff. But I can&#8217;t help feeling that the document presents a bit too black and and white picture. And it&#8217;s a picture in favor of frontend web developers.</p>
<p>For example: progressive enhancement in practice means that if you want to implement rounded corners, you&#8217;d use the <code>border-radius</code> style instead of a stack of images of rounded corners. But what if rounded corners are one of the corner stones of the corporate design of the client? Loads of users on IE7 and IE8 would miss that recognizable feature of that corporate design.</p>
<p>The design choice of rounded corners are sometimes a matter of taste, but most clients care for their corporate identity. So if you are ready to slaughter someones design in IE7/IE8 with progressive enhancement as your alibi, make sure that the features that will be missed in those browsers are not an important part of their corporate identity.</p>


<p>Related posts:<ol><li><a href='http://www.thebrightlines.com/2010/01/07/do-you-create-your-design-in-photoshop-or-notepad/' rel='bookmark' title='Permanent Link: Do you create your design in Photoshop or Notepad?'>Do you create your design in Photoshop or Notepad?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.thebrightlines.com/2011/09/03/the-grey-areas-of-progressive-enhancement/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Estate Developer Tools</title>
		<link>http://www.thebrightlines.com/2010/12/16/estate-developer-tools/</link>
		<comments>http://www.thebrightlines.com/2010/12/16/estate-developer-tools/#comments</comments>
		<pubDate>Thu, 16 Dec 2010 18:18:15 +0000</pubDate>
		<dc:creator>Wouter Bos</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web development in general]]></category>
		<category><![CDATA[Estate]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.thebrightlines.com/?p=745</guid>
		<description><![CDATA[The Estate Developer Tool is a JavaScript library that helps front-end developers building websites. I wrote these tools in order to use them at Estate Internet and are now published as open source under the FreeBSD license.]]></description>
			<content:encoded><![CDATA[<p><a target="_blank" href="/article-data/demo/estate-developer-tools/example/index.html" class="button demo"><span> </span>View demo</a></p>
<div class='clear'></div>
<p><a class="button download" href="/article-data/downloads/EstateDeveloperTools.zip"><span> </span>Download Estate Developer Tools</a></p>
<div class='clear'></div>
<h2>Features</h2>
<ul>
<li><strong>Compare page with original design fast:</strong> You can compare the current page with an image of the original design within the browser.</li>
<li><strong>CSS reload:</strong> Reload the stylesheets without reloading the page. Extremely useful when designing websites with many Ajax calls.</li>
<li><strong>Console.log fallback:</strong> If you use <code>clog()</code>, debug messages will be routed to <code>console.log()</code> if available. If not (eg. you&#8217;re developing in IE), the message will be printed in a log box in the web page itself.</li>
<li><strong>Autofill and test forms:</strong> Auto fill forms with text that might cause errors like non-western characters, malformed HTML, JS injection and SQL injection. Autofill also works with the new HTML5 form fields.</li>
<li><strong>Timer:</strong> Do performance test by checking how long some operation takes.</li>
<li><strong>Works in:</strong> IE6+ and all recent versions of Firefox, Chrome, Safari and Opera. I did not check all possible browser versions, but it should work. let me know if you have problems with older browsers. The developer tools do <em>not</em> work in IE&#8217;s <a href="http://en.wikipedia.org/wiki/Quirks_mode">Quirks mode</a>, but that&#8217;s something you should avoid anyway.</li>
</ul>
<h2>Quick overview</h2>
<p>Sorry for the bad sound quality.<br />
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/PnuFfs0zOgk?fs=1&amp;hl=nl_NL"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/PnuFfs0zOgk?fs=1&amp;hl=nl_NL" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<h2>Installation</h2>
<p>Step one is to <a href="#TODO">download</a> the tool. If you unpack the zip, you&#8217;ll find example page in the (what else) &#8220;example&#8221; directory.</p>
<p>Open the file called &#8220;index.html&#8221;. The developer tools are loaded just before the closing body tag: <code>&lt;script type="text/javascript" src="devtools/javascript/estate-devtools.min.js">&lt;/script></code>.</p>
<p>If you want to change the library to your own needs, you can load the source code instead. It&#8217;s in 4 seperate files that are in the same directory: <code>Estate.js</code>, <code>Estate.Develop.js</code>, <code>Estate.Develop.FormTester.js</code> and <code>Estate.Develop.DesignTester.js</code>.</p>
<p>After the library has been loaded, you can add items to the top right menu like this:</p>
<pre name="code" class="js:nogutter">
	Estate.Events.AddEvent(window, Estate.Develop.ToggleVisibility.Init, "onload")
	Estate.Events.AddEvent(window, Estate.Develop.ReloadCSS.Init, "onload")
	Estate.Events.AddEvent(window, Estate.Develop.FormTester.Init, "onload")
	Estate.Events.AddEvent(
		window,
		function() {
			Estate.Develop.DesignTester.Init({
				designAnchor: document.getElementById('DesignTester'),
				xOffset: 10,
				yOffset: 5
			})
		},
		"onload"
	)
</pre>
<p>The example above will most likely be enough in most cases. The only thing you might have to configure is the Design Tester. That&#8217;s because the design image needs to be positioned relative to the main body of the page. Therefore you need to define an anchor by supplying a reference to an HTML element and define the optional offset.</p>
<p>You can also use jQuery to supply an HTML element like this: <code>designAnchor: jQuery('#DesignTester')[0]</code>. The Form Tester is also configurable. Please refer to the <a href="/article-data/demo/estate-developer-tools/documentation/index.html">object reference</a> for more information.</p>
<p>To install the Estate Developer Tools into your own website, you&#8217;ll have to copy the JavaScript code at the bottom of the page to your own and copy the <code>devtools</code> folder to the root of your own website.</p>
<p>After that you only need to create PNG files of the original design and save them in the folder<code>/devtools/design-images/</code>. If a page is loaded, the Design Tester looks for a PNG file which file name resembles the URL of the page. If that image cannot be found, the Design Tester will asks for that file either by printing a message in the console log or in its own fallback log box in the page. You just have to look up the right file and rename so that the Design Tester can pick it up.</p>
<h2>Helper functions</h2>
<p>Some functionality is not included in the menu</p>
<h3>console.log fallback</h3>
<p>After the library has been loaded, two global functions are available: <code>clog()</code> and <code>dlog()</code>. You use <code>clog()</code> to send a string to <code>console.log()</code> if available. If console.log is not available, the debug message will be printed in the log box in the website. If you can also choose to always use the log box of the Estate Developer Tools by calling <code>dlog()</code>.</p>
<h3>Timer</h3>
<p>If you you want to optimize, you can use the timer to see how much time JavaScript needs to complete an operation. You just create a new instance of the timer object, set an ID so you can distinguish multiple alert from an another, start the timer, run some function or lines of code and the stop the timer. By stopping the timer, you&#8217;ll get a message how much milliseconds the operation costs. Here below is an example:</p>
<pre name="code" class="js:nogutter">
var oTimer = new Estate.Develop.Timer()
oTimer.SetID('Your time to response')
oTimer.Start()
alert('Press "ok" to see how much time it took to respond')
oTimer.End()
</pre>
<h2>Reference</h2>
<p>All public objects and methods have been documented with JsDoc Toolkit. Read the <a href="http://www.thebrightlines.com/article-data/demo/estate-developer-tools/documentation/index.html">documentation</a>.</p>
<h2>Adding more tools</h2>
<p>It&#8217;s possible to integrate your own developer tools in the menu of the Estate Developer Tool. This code will create an extra menu item and runs some code when a user clicks on it:</p>
<pre name="code" class="js:nogutter">
/**
 * @namespace Creates extra menu
 */
Estate.Develop.ExtraMenuItem = ( function() {
	var menuButton

	function doSomething() {
		dlog('Menu item pressed')
	}

	/* START PUBLIC */
	return {
		/**
		 * Initializes extra menu button
		 *
		 * @example
		 * Estate.Develop.ExtraMenuItem.Init()
		 */
		Init: function() {
			menuButton = Estate.Develop.Menu.AddMenuItem('Extra item')

			menuButton.onclick = function() {
				doSomething()
			}
		}
	}
	/* END PUBLIC */
})();
</pre>
<p>It&#8217;s also possible to attach a keypress event to it</p>
<pre name="code" class="js:nogutter">
/**
 * @namespace Creates extra menu
 */
Estate.Develop.ExtraMenuItem = ( function() {
	var menuButton

	function doSomething() {
		dlog('Menu item pressed')
	}

	function pageKeyPress(KeyID){
		dlog('KeyID: '+ KeyID)
	}

	/* START PUBLIC */
	return {
		/**
		 * Initializes extra menu button
		 *
		 * @example
		 * Estate.Develop.ExtraMenuItem.Init()
		 */
		Init: function() {
			menuButton = Estate.Develop.Menu.AddMenuItem('Extra item', 'Press any key')

			menuButton.onclick = function() {
				doSomething()
			}

			// Handle global key events
			Estate.Events.AddEvent (
				document,
				function(e) {
					var KeyID = (window.event) ? event.keyCode : e.which;
					pageKeyPress(KeyID)
				},
				"onkeypress"
			)
		}
	}
	/* END PUBLIC */
})();
</pre>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.thebrightlines.com/2010/12/16/estate-developer-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netscape and accessibility</title>
		<link>http://www.thebrightlines.com/2010/06/22/netscape-and-accessibility/</link>
		<comments>http://www.thebrightlines.com/2010/06/22/netscape-and-accessibility/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 19:43:48 +0000</pubDate>
		<dc:creator>Wouter Bos</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[WCAG]]></category>
		<category><![CDATA[Web development in general]]></category>
		<category><![CDATA[Netscape]]></category>
		<category><![CDATA[support]]></category>

		<guid isPermaLink="false">http://www.thebrightlines.com/?p=626</guid>
		<description><![CDATA[Lets see if an ancient browser can still handle the current web and if it's possible to help a little with the rendering of a page.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" title="Splash screen Netscape 4.7" src="http://www.guidebookgallery.org/pics/splashes/netscape/4.7-communicator.png" alt="" width="396" height="267" />Although we all cheer loud for all signs that proves IE6&#8217;s decline, fact is that this browser will stay to be a pain in the ass for some time. And to be honest: this is not something new. There&#8217;s always some browser lagging behind and preventing web developers of using new cool techniques. Nothing new here. Supporting Netscape in time of its final decline was also hard.</p>
<p>Yeah, Netscape 4. Now <em>that</em> was a browser that just did not want to die. Netscape wasn&#8217;t updated after 1998 but in 2001 still about 5% of the internet users used Netscape. I got curious how the web would look like in a browser that is more than a decade old. So I downloaded Netscape 4.7 and loaded some major websites to see how they would look.</p>
<p>The level of accessibility of websites varies enormously. Let&#8217;s start with one of the worse:</p>
<h2>Amazon.com</h2>
<div class="wp-caption alignnone" style="width: 450px"><a href="/article-data/images/ns-amazon-ns.png"><img title="Welcome to our new and improved webshop ;)" src="/article-data/images/ns-amazon-ns-small.png" alt="Welcome to our new and improved webshop ;)" width="440" height="405" /></a><p class="wp-caption-text">Welcome to our new and improved web shop <img src='http://www.thebrightlines.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p></div>
<div class="wp-caption alignnone" style="width: 450px"><img title="How the Amazon website should look like" src="/article-data/images/ns-amazon-ff-small.png" alt="How the Amazon website should look like" width="440" height="336" /><p class="wp-caption-text">How the Amazon website should look like</p></div>
<p>As you can see: Netscape renders the page but context is virtually lost. And it clearly can&#8217;t handle the sprite image in the top left corner.</p>
<h2>Twitter</h2>
<div class="wp-caption alignnone" style="width: 450px"><a href="/article-data/images/ns-twitter-ns.jpg"><img title="Twitter in Netscape" src="/article-data/images/ns-twitter-ns-small.jpg" alt="Twitter in Netscape" width="440" height="406" /></a><p class="wp-caption-text">A Twitter page in Netscape</p></div>
<div class="wp-caption alignnone" style="width: 450px"><a href="http://twitter.com/lyricsbylenny"><img title="How this Twitter-account should look like" src="/article-data/images/ns-twitter-ff-small.jpg" alt="How this Twitter-account should look like" width="440" height="336" /></a><p class="wp-caption-text">How this Twitter-account should look like</p></div>
<p>The lack of solid white background color in combination with a  rich-contrast background image that does get loaded is a serious  problem. Not to mention all the hidden information that becomes visible. This website too is not very usable anymore.</p>
<h2>Yahoo</h2>
<div class="wp-caption alignnone" style="width: 450px"><a href="/article-data/images/ns-yahoo-ns.png"><img title="Yahoo throws in a big fat warning..." src="/article-data/images/yahoo-ns-small.png" alt="Yahoo throws in a big fat warning..." width="440" height="222" /></a><p class="wp-caption-text">Yahoo just blocks you</p></div>
<p>Yahoo has another approach: It just says that you&#8217;re browser is ancient and offers download links to newer browsers.</p>
<h2>Google</h2>
<div class="wp-caption alignnone" style="width: 450px"><a href="/article-data/images/ns-google-ns2.png"><img title="...while Google just does its thing" src="/article-data/images/ns-google-ns2-small.png" alt="...while Google just does its thing" width="440" height="302" /></a><p class="wp-caption-text">...while Google just does it&#39;s thing</p></div>
<p>Google doesn&#8217;t complain and shows a page that looks remarkably well in Netscape 4. The links in the search results will still send you to websites that look like jigsaw puzzles, though <img src='http://www.thebrightlines.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>So you can&#8217;t browse with an ancient browser. So what?</h2>
<p>Ok, this is indeed not a drama. But think of it this way: the web is a web of <em>content</em>. Content that becomes increasingly inaccessible if you don&#8217;t rebuild its content container, the website, every few years. Most organizations do that to be up to par with the latest browsers and designs but some just have to.</p>
<h2>Help browsers with a handicap</h2>
<p>Keeping content accessible is not just a hobby. It&#8217;s a major issue for websites of (semi)government organizations for example. They have to make sure content is open to anyone. Although they focus on handicapped internet users rather than handicapped browsers, one goal remains the same: a user should be able to use a website without the need of CSS, JavaScript or any other &#8216;fancy&#8217; technique. A <code>:hover</code> is no use to a blind user, neither will color and JavaScript animation. That&#8217;s why such a person uses a different browser without such capabilities. And that&#8217;s why we have guidelines like WCAG.</p>
<p>It&#8217;s not surprising that many websites that follow WCAG guidelines or something comparable  do reasonably well in Netscape 4. I&#8217;ll repeat it again: that&#8217;s a browser from 1998.</p>
<h2>www.section508.gov</h2>
<div class="wp-caption alignnone" style="width: 450px"><a href="/article-data/images/ns-section508-ns.png"><img title="Unique: this website looks almost identical in Firefox and Netscape" src="/article-data/images/ns-section508-ns-small.png" alt="Unique: this website looks almost identical in Firefox and Netscape" width="440" height="405" /></a><p class="wp-caption-text">Unique: this website looks almost identical in Firefox and Netscape</p></div>
<div class="wp-caption alignnone" style="width: 450px"><img title="www.section508.gov in Firefox" src="/article-data/images/ns-section508-ff.png" alt="www.section508.gov in Firefox" width="440" height="335" /><p class="wp-caption-text">www.section508.gov in Firefox</p></div>
<p>The web design of www.section508.gov just don&#8217;t look like it stems from the 1990s, it also uses ancient techniques from that era like tables for layout, image spacers and sparse use of CSS. All big no-no&#8217;s nowadays, but the website rendering is great.</p>
<h2>Dutch web guidelines</h2>
<div class="wp-caption alignnone" style="width: 450px"><a href="/article-data/images/ns-webrichtlijnen-ns.png"><img title="This website is in Netscape just in black and white, but very readable." src="/article-data/images/ns-webrichtlijnen-ns-small.png" alt="This website is in Netscape just in black and white, but very readable." width="440" height="405" /></a><p class="wp-caption-text">In black and white, but ordered and readable.</p></div>
<div class="wp-caption alignnone" style="width: 450px"><img title="The same website in Firefox" src="/article-data/images/ns-webrichtlijnen-ff.png" alt="The same website in Firefox" width="440" height="335" /><p class="wp-caption-text">The same website in Firefox</p></div>
<p>The difference in rendering between Netscape and Firefox is striking. Netscape is unable to read the CSS, but that&#8217;s a good thing here. Accessibility dictates that an HTML document should be structured. So when there&#8217;s no CSS to style the document, the document structure will remain.</p>
<p>But why does Netscape not load the CSS? It appears that the media attribute link markup is key here:</p>
<pre name="code" class="xhtml:nogutter">
Netscape won't load this CSS
&lt;link rel="stylesheet" type="text/css" href="/screen.css" media="screen, tty" /&gt;

Netscape *will* load this CSS
&lt;link rel="stylesheet" type="text/css" href="/screen.css" /&gt;
</pre>
<h2>Dutch semi-governmental website (www.groenendestad.nl)</h2>
<div class="wp-caption alignnone" style="width: 450px"><a href="/article-data/images/ns-groenendestad-ns.png"><img title="The website in Netscape" src="/article-data/images/ns-groenendestad-ns-small.png" alt="The website in Netscape" width="440" height="405" /></a><p class="wp-caption-text">The website in Netscape</p></div>
<div class="wp-caption alignnone" style="width: 450px"><img title="In Firefox" src="/article-data/images/ns-groenendestad-ff.png" alt="In Firefox" width="440" height="335" /><p class="wp-caption-text">In Firefox</p></div>
<p>The last site is a semi-governmental website developed at the company I work, Estate Internet. It&#8217;s a relative new site (2 years old) but still usable in both old an new browsers.</p>
<h2>Hurdles</h2>
<p>So it <em>is</em> possible to make websites that are still usable in ancient browsers. The main obstacle is that old browsers try to render stuff like CSS and JavaScript but choke on it halfway. In case of CSS it&#8217;s possible to block Netscape by adding the <code>media</code> attribute, but that&#8217;s still a hack. Old browsers should be protected from itself. One option is to just disable everything at the client side that could harm the rendering.</p>
<p>It would be nice if you could send unsupported browsers just the HTML, while others also receive CSS and JavaScript. But browser detection can be error prone. The only stable solution I know that is easy to implement is IE version detection through conditional comments. Consider this piece of code that only gives all non-IE browsers and all IE7+ browser the site&#8217;s stylesheet.</p>
<pre>&lt;![if !IE]&gt;
    &lt;link href="css/main.css" type="text/css" /&gt;
&lt;![endif]&gt;
&lt;![if gte IE 7]&gt;
    &lt;link href="css/main.css" type="text/css" /&gt;
&lt;![endif]&gt;</pre>
<p>Conditional Comments will help us giving a soon-to-be ancient browser like IE6 the treatment it deserves <img src='http://www.thebrightlines.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Now it&#8217;s time to close Netscape again and start waiting for the new Firefox that supports basic CSS animation.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.thebrightlines.com/2010/06/22/netscape-and-accessibility/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Taking back the control</title>
		<link>http://www.thebrightlines.com/2010/03/15/taking-back-the-control/</link>
		<comments>http://www.thebrightlines.com/2010/03/15/taking-back-the-control/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 20:04:41 +0000</pubDate>
		<dc:creator>Wouter Bos</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web development in general]]></category>
		<category><![CDATA[cooliris]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[greasemonkey]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[readability]]></category>
		<category><![CDATA[stylish]]></category>

		<guid isPermaLink="false">http://www.thebrightlines.com/?p=506</guid>
		<description><![CDATA[As a user, you have more control than you think over what your browser does with websites.]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 225px"><img title="The Bright Lines, seen through readability" src="/article-data/images/readability.png" alt="The Bright Lines, seen through readability" width="215" height="198" /><p class="wp-caption-text">The Bright Lines, as seen through &#39;readability&#39;</p></div>
<p>Lately I came across <a href="http://lab.arc90.com/experiments/readability/">Readability</a>. It&#8217;s a bookmarklet (works only in FF, Safari and Chrome) that alters any website into a more readable one. It does so by presenting it in a book form. At a first glance I thought it as a nice  tool, but I wasn&#8217;t sure I was going to use it. Then I thought that it was a real good example that you as a user have more to say than you think.</p>
<p>We always accept the usability of the websites for what it is. If it&#8217;&#8217;s good, it&#8217;s good. If it&#8217;s bad it&#8217;s bad. But the frontend of the website is built on <em>your</em> computer, in <em>your</em> browser. You have a certain level of control over the HTML, CSS and Javascript.</p>
<p>The most common way to make a website better is by using ad blockers. Yes, some people do live of advertising, but I don&#8217;t think that means you should be obliged to see them if you don&#8217;t want to. Especially when they distract. The best thing about ad blockers is that it doesn&#8217;t require any knowledge of web development at all.</p>
<p>Another example is <a href="https://addons.mozilla.org/en-US/firefox/addon/5579">CoolIris</a> that convert image pages of popular websites like Google Images or Flickr into a 3D wall of images.</p>
<p>A more techie Firefox plugin that I use is <a href="https://addons.mozilla.org/en-US/firefox/addon/2108">Stylish</a>. I use it to add my own CSS to websites I regularly visit. Most of the time I use it to remove section that I regard useless with a simple <code>display: none</code>. A more powerful variation of Stylish is the plugin <a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a>. With Greasemonkey you can alter the websites with Javascript. And just like Stylish, you can publish your customization of the website through the plugin.</p>
<p>So that&#8217;s a reminder for me to see that websites are not cast in stone. Popular websites will on the client side be hacked by a small minority of users to cater their own needs. And if a site is really in need of improvement, plugins that help non-technical users would spread like wildfire.</p>


<p>Related posts:<ol><li><a href='http://www.thebrightlines.com/2009/10/29/popups-dodging-popup-blockers/' rel='bookmark' title='Permanent Link: Popups dodging popup blockers'>Popups dodging popup blockers</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.thebrightlines.com/2010/03/15/taking-back-the-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog redesign</title>
		<link>http://www.thebrightlines.com/2010/01/03/blog-redesign/</link>
		<comments>http://www.thebrightlines.com/2010/01/03/blog-redesign/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 23:53:27 +0000</pubDate>
		<dc:creator>Wouter Bos</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Meta]]></category>
		<category><![CDATA[Web development in general]]></category>
		<category><![CDATA[Webfonts]]></category>
		<category><![CDATA[redesign]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.thebrightlines.com/?p=320</guid>
		<description><![CDATA[The Bright Lines has a new design. A short analysis of the new design.]]></description>
			<content:encoded><![CDATA[<p>The last few days I was busy redesigning the website. I was not happy with the original design.</p>
<ul>
<li>The menu on the top right was large and clunky. Because of that it didn&#8217;t leave much room for more links.</li>
<li>The &#8216;logo&#8217; on the top left did not feel like a real logo mainly because it was &#8230; well &#8230; just not designed well.</li>
<li>The shadow effect on the columns looked cool, but because it was made with PNG8 images instead of PNG24, it wasn&#8217;t possible to add an background image to the page.</li>
</ul>
<p>What I <em>did</em> like was the scalability of the website. you could as easily view the page on your (i)phone as it would be on your large, wide computer screen. I dropped support for mobile phones. There are lots of Wordpress plugins to cater the mobile devices. I have to dive into that some time. For now anyone with a mobile device can grab the <a href="http://www.thebrightlines.com/news-feeds/">RSS feeds</a>.</p>
<p>I still have to fix a few styling glitches but I thought the design was good enough to make the switch. Here are the most important aspects of the design:</p>
<ul>
<li>Use of <code>rgba</code> as background color. This makes it possible to set opacity for just the background instead of the whole box. <code>rgba</code> is not supported in IE, so you will have a solid white background then.</li>
<li>Using opacity in the columns makes it possible to use large backgrounds. That gives me a reason to pick up my photography.</li>
<li>The use of webfonts. This was something I was eager to use. This is something designers and web developers alike have been waiting for. The implementation isn&#8217;t perfect, but it looks well in Firefox and on the Apple. IE and Webkit on the PC still need some tweaking. I&#8217;ll go in to more detail in an upcoming article. For now I&#8217;ve been glad to be able to experiment with a real web site instead of running some tests with webfonts.</li>
<li>Less data: I removed irrelevant data where I could. It&#8217;s most apparent in the list of articles on the homepage where I removed information like categories, tags and dates.</li>
<li>Links become visible with an underline when a column is <code>hover</code>ed. This will make the website look less crowded. It&#8217;s a bit like the folder tree view in Vista&#8217;s Windows Explorer: you will only see the folding icons (the plus and minus icons next to the folders) when that section is active.</li>
</ul>
<p>There are some things I have to do:</p>
<ul>
<li>Make a logo that is suitable for creating a favicon</li>
<li>Tweaking the fonts for IE &amp; Webkit on PC.</li>
</ul>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.thebrightlines.com/2010/01/03/blog-redesign/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<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>
	</channel>
</rss>

