<?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; Design</title>
	<atom:link href="http://www.thebrightlines.com/category/design/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>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>Do you create your design in Photoshop or Notepad?</title>
		<link>http://www.thebrightlines.com/2010/01/07/do-you-create-your-design-in-photoshop-or-notepad/</link>
		<comments>http://www.thebrightlines.com/2010/01/07/do-you-create-your-design-in-photoshop-or-notepad/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 23:22:14 +0000</pubDate>
		<dc:creator>Wouter Bos</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Photoshop]]></category>

		<guid isPermaLink="false">http://www.thebrightlines.com/?p=349</guid>
		<description><![CDATA[Do you show your client static pictures of the web design or do you code the mockup in HTML?]]></description>
			<content:encoded><![CDATA[<p>Recently Meagan Fisher published an <a href="http://24ways.org/2009/make-your-mockup-in-markup">article in which she discusses an alternative way to present a web design</a> to a client: Don&#8217;t emulate it in Photoshop, but build it in HTML and CSS. There are some advantages to it. A client can see more than just the design. He/she can also see:</p>
<ul>
<li>Behaviour of the fluid design</li>
<li>Interaction like hovers</li>
<li>How the website looks in different browsers</li>
</ul>
<p>On top of it, she also mentions some disadvantages of using Photoshop:</p>
<ul>
<li>It crashes, leaving you with hours of work lost.</li>
<li>Font rendering sucks</li>
</ul>
<h2>Photoshop is still king</h2>
<p>Although creating a website directly in HTML has it advantages, I think designing in Photoshop is better in most cases.</p>
<h3>Photoshop is faster</h3>
<p>Yes, a simple design could well be created directly in HTML. But not all designs are simple. Changing a background color is easy in CSS, but dragging columns around, changing or altering visuals and all kind of other alterations are quicker in Photoshop. Designs can change dramatically before it is finally approved by the client. Those changes are quicker done in Photoshop.</p>
<h3>Photoshop is static</h3>
<p>Being static isn&#8217;t not just a disadvantage. A static design is in fact helpful because it helps you focus on how a website should look like and not be bogged down by browser incompatibilities. This too gives you extra speed in designing.</p>
<h3>Photoshop is versatile</h3>
<p>Just because CSS can do stuff like round corners and text shadows in some browsers, doesn&#8217;t mean it has become a designing tool. Photoshop can do more than just that.  When designing in HTML I start to think too much in the constraints that both HTML and CSS have. In Photoshop I have much more design choices. Because of that I&#8217;m able to think more out of the box.</p>
<h2>Crashes and font rendering</h2>
<p>I was suprised that Photoshop crashes are mentioned as a major problem. I consider Photoshop as a very reliable product. The only problem is that saving can take a while, so not everyone saves regularly. If you don&#8217;t save regularly you&#8217;re asking for trouble. Even with stable products.</p>
<p>The issue with font rendering is indeed a problem, but that&#8217;s more an issue for designers. Clients don&#8217;t even know it&#8217;s an issue. They&#8217;ll only notice differences when they&#8217;re dramatic like with webfonts. Just compare this weblog between Apple Safari and IE on the PC: it&#8217;s hard <em>not</em> to see the difference.</p>
<h2>My preference</h2>
<p>Since I&#8217;m a web developer I ought to be tempted to skip Photoshop and start coding right away. But that&#8217;s not the case. I designed my blog twice last year. In both cases I chose to do the basic design in Photoshop. Only when I was happy with that basic design, I started developing and added extra elements on the fly. The current design of my blog could just as easy be built in HTML/CSS from the start, but I&#8217;m convinced it&#8217;s better to work in Photoshop first.</p>


<p>Related posts:<ol><li><a href='http://www.thebrightlines.com/2009/12/26/differences-between-photoshop-web-design-and-html-part-1-line-height/' rel='bookmark' title='Permanent Link: Differences between Photoshop web design and HTML. Part 1: line height'>Differences between Photoshop web design and HTML. Part 1: line height</a></li>
<li><a href='http://www.thebrightlines.com/2009/11/05/3-tips-for-making-css-sprites-in-photoshop/' rel='bookmark' title='Permanent Link: 3 Tips for making CSS sprites in Photoshop'>3 Tips for making CSS sprites in Photoshop</a></li>
<li><a href='http://www.thebrightlines.com/2011/09/03/the-grey-areas-of-progressive-enhancement/' rel='bookmark' title='Permanent Link: The grey areas of progressive enhancement'>The grey areas of progressive enhancement</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.thebrightlines.com/2010/01/07/do-you-create-your-design-in-photoshop-or-notepad/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

