<?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>Coffee on the Keyboard &#187; Design</title>
	<atom:link href="http://coffeeonthekeyboard.com/tag/design/feed/" rel="self" type="application/rss+xml" />
	<link>http://coffeeonthekeyboard.com</link>
	<description>by James Socol</description>
	<lastBuildDate>Fri, 20 Apr 2012 22:17:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/>		<item>
		<title>The Problem with TodaysMeet</title>
		<link>http://coffeeonthekeyboard.com/the-problem-with-todaysmeet-550/</link>
		<comments>http://coffeeonthekeyboard.com/the-problem-with-todaysmeet-550/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 16:35:42 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[todaysmeet]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=550</guid>
		<description><![CDATA[TodaysMeet is a project I started in 2008 to help my father solve a problem in one of his classes. The fact that it&#8217;s as popular as it is—mostly in education—never ceases to amaze me. Unfortunately, I don&#8217;t give TodaysMeet the attention it, and more importantly its users, deserve. This is because TodaysMeet has two [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://todaysmeet.com/">TodaysMeet</a> is a project I started in 2008 to help <a href="http://speedchange.blogspot.com">my father</a> solve a problem in one of his classes. The fact that it&#8217;s as popular as it is—mostly in education—never ceases to amaze me.</p>
<p>Unfortunately, I don&#8217;t give TodaysMeet the attention it, and more importantly its users, deserve. This is because TodaysMeet has two fatal flaws that, if they haven&#8217;t crippled it yet, will someday.</p>
<ul>
<li>The UI is based on proof-of-concept JavaScript.</li>
<li>The back-end is based on <a href="http://svn.jamessocol.com/maveric">my own framework</a>.</li>
</ul>
<p>What follows is the sad history of TodaysMeet development.</p>
<h3>Origin Story</h3>
<p>TodaysMeet came out of a conversation between my father and I, but it&#8217;s origins are slightly older. In some downtime in late 2007 I was trying to familiarize myself with various JavaScript frameworks by writing a UI for the same back-end in each of them. It was a pretty basic Ajax comment system. I believe it polled the server every minute. If I remember correctly, I got busy and abandoned it after creating <a href="http://www.prototypejs.org/">Prototype</a> and <a href="http://jquery.com/">jQuery</a> versions.</p>
<p>Around the same time I was enamored of <a href="http://rubyonrails.org/">Rails</a>, and trying to round out <a href="http://svn.jamessocol.com/maveric">Maveric</a> into a decent Rails-inspired PHP framework.</p>
<p>So when my father said he wanted something like Twitter for a single classroom, that he could project on a wall, and wouldn&#8217;t require signing up, I put these things together in my head. TodaysMeet is basically the proof-of-concept Prototype JS running on top of an old version of Maveric.</p>
<h3>The Situation Now</h3>
<p><a href="http://www.brandonsavage.net/why-every-developer-should-write-their-own-framework/">Every developer should write a framework</a>, I think it&#8217;s a fantastic learning experience. But they should never build a production website out of it.</p>
<p>Even though Maveric got a little better after I created TodaysMeet, it&#8217;s still based on an untested, unsupported framework with no support for basic things like storage back-ends or caching.</p>
<p>The UI is still based on Prototype, which I haven&#8217;t used in years, and the fundamental client-server interactions are still that original &#8220;learning the library&#8221; code.</p>
<p>Essentially, TodaysMeet is a prototype masquerading as a production-ready product.</p>
<p>The result is that working on it is slow, difficult, and frankly unpleasant. Adding features—like the long-promised password protected rooms—is painful and, with no test suite, dangerous. The one real feature I added, Twitter integration, barely works when it works at all.</p>
<p>But users don&#8217;t care about any of that. They see that it works, mostly. They might see that it doesn&#8217;t get much attention and the UI feels three years old (because it is, of course).</p>
<h3>Where Do We Go From Here?</h3>
<p>TodaysMeet <em>could</em> be awesome, but it needs to go all the way down to the basic stack and get rebuilt. TodaysMeet is an absolutely perfect candidate for all sorts of new, exciting tools and techniques. To use any of them means starting over.</p>
<p>This is the first of a two-part post. In the next part, I&#8217;m going to outline the architecture I <em>want</em>, instead of the architecture I <em>have</em>.</p>
<p>Hopefully, some social aspect of talking about this will lead to me actually doing something about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/the-problem-with-todaysmeet-550/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Stop Supporting IE6</title>
		<link>http://coffeeonthekeyboard.com/stop-supporting-ie6-163/</link>
		<comments>http://coffeeonthekeyboard.com/stop-supporting-ie6-163/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 18:04:35 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[enabling]]></category>
		<category><![CDATA[flaw]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[out-of-date]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=163</guid>
		<description><![CDATA[As a community, as a whole, web designers and developers need to stop supporting Internet Explorer 6. Now. Completely. I&#8217;ve been thinking a lot about browser compatibility as I&#8217;ve been working on Today&#8217;s Meet. My CSS is valid, but it doesn&#8217;t work quite right in IE6. The interface is completely JavaScript-based, and will only become [...]]]></description>
			<content:encoded><![CDATA[<p>As a community, as a whole, web designers and developers need to <strong>stop supporting Internet Explorer 6</strong>. Now. Completely.</p>
<p>I&#8217;ve been thinking a lot about browser compatibility as I&#8217;ve been working on <a href="http://todaysmeet.com/">Today&#8217;s Meet</a>. My CSS is valid, but it doesn&#8217;t work quite right in IE6. The interface is completely JavaScript-based, and will only become moreso in the future. How much time should I put into making it all work with IE6?</p>
<p><strong>None.<span id="more-163"></span><br />
</strong></p>
<p>I know lots of people, usually in government offices or schools, who are stuck with IE6. For some reason, their IT departments have neglected to update their systems for <em>over two years</em>.</p>
<p>(Sure, some of these systems are running <a href="http://www.betanews.com/article/Microsoft_No_IE7_for_Windows_2000/1117464807">Windows 2000</a>. This is a real minority at this point, though, and the rest have no excuse. If you&#8217;re running Windows 2000, and absolutely cannot afford to get new systems, get Firefox.)</p>
<p>I used to think I needed to support IE6 because this group is frighteningly large. But now I&#8217;ve come to realize—especially in the wake of <a href="http://voices.washingtonpost.com/securityfix/2008/12/microfot_emergency_patch_for_i.html?nav=rss_blog">this week&#8217;s news</a>—that by supporting IE6, all I&#8217;m really doing is enabling these lazy IT departments to keep running dangerously out-of-date software.</p>
<p>IE6 is the Vicodin to lazy IT&#8217;s <a href="http://en.wikipedia.org/wiki/Dr._Gregory_House#Character_biography">Dr. House</a>. As developers we&#8217;re Drs. <a href="http://en.wikipedia.org/wiki/James_Wilson_(House)">Wilson</a> and <a href="http://en.wikipedia.org/wiki/Lisa_Cuddy">Cuddy</a>. Just keep handing it out.</p>
<p>How up-to-date is the rest of the software on a system that (apparently) hasn&#8217;t run Windows Update in 2 years? What other major <a href="http://www.microsoft.com/security/malwareremove/default.mspx">security holes</a>, <a href="http://www.microsoft.com/enable/products/ie7/">accessibility issues</a>, and <a href="http://blogs.zdnet.com/web2explorer/?p=260">compatibility problems</a> would be solved by updating?</p>
<p>Not only is supporting IE6 annoying, it enables people to run software that is out-of-date and easily exploited. Are we really helping users, or are we just helping them get hacked?</p>
<p>So from now on, no more.</p>
<p>My personal projects will no longer support IE6. I won&#8217;t test in IE6.</p>
<p>IE7, Firefox 3, Safari 3, provisionally Opera (really, if it works in the first 3, it should work in Opera).  Keep your software up-to-date.</p>
<p>If you&#8217;re still using IE6, <a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx">go get 7</a>. (Then don&#8217;t use it until after the Windows Update patch.)</p>
<p>If you can&#8217;t run updates, but can install software, <a href="http://www.mozilla.com/en-US/">go get Firefox</a>.</p>
<p>If you can&#8217;t do any of that, tell your IT department that running software 2 <em>years</em> out of date is unacceptable. Tell your boss to tell them. It&#8217;s a performance/security/accessibility/compatibility/etc issue.</p>
<p>And if you&#8217;re a developer, stop and think. Are you actually doing your visitors any good by supporting IE6? Or should you take all the time and effort you put into backwards compatibility and put it someplace more valuable?</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/stop-supporting-ie6-163/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WP Plugin: Better Search Widget</title>
		<link>http://coffeeonthekeyboard.com/wp-plugin-better-search-widget-113/</link>
		<comments>http://coffeeonthekeyboard.com/wp-plugin-better-search-widget-113/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 18:30:23 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Back-end]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[widget]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/?p=113</guid>
		<description><![CDATA[Today I upgraded from WordPress 2.3.3 to 2.6.1. I&#8217;m such a late adopter sometimes. I had to go through and repeat a few hacks. For example, 2.3.x didn&#8217;t allow you to do get_sidebar($name), so I&#8217;d hacked the &#8220;get_sidebar()&#8221; function. And I replaced the still-broken Atom feed reading widget with James Wilson&#8217;s Google Reader Widget. Then [...]]]></description>
			<content:encoded><![CDATA[<p>Today I upgraded from WordPress 2.3.3 to 2.6.1. I&#8217;m such a late adopter sometimes.</p>
<p>I had to go through and repeat a few hacks. For example, 2.3.x didn&#8217;t allow you to do <code>get_sidebar($name)</code>, so I&#8217;d hacked the &#8220;get_sidebar()&#8221; function. And I replaced the still-broken Atom feed reading widget with James Wilson&#8217;s <a href="wordpress.org/extend/plugins/google-reader-widget/">Google Reader Widget</a>.</p>
<p>Then I finally got fed up with the default &#8220;Search&#8221; widget, which doesn&#8217;t look like the other widgets at all (no title), so I started hacking into that one. Then I realized &#8220;why hack, when I can extend?&#8221;</p>
<p>So, here it is, <a href="http://jamessocol.com/projects/better-search-widget.php">Better Search Widget</a>.</p>
<p>All it does is add a search widget with a customizable title, submit button, and field size. Quick-and-useful. You can see the results in the sidebar.</p>
<p>If you decide to use it, leave a comment and I&#8217;ll check out your blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/wp-plugin-better-search-widget-113/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>User Interface: Be Nice!</title>
		<link>http://coffeeonthekeyboard.com/user-interface-be-nice-107/</link>
		<comments>http://coffeeonthekeyboard.com/user-interface-be-nice-107/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 15:31:28 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[messages]]></category>
		<category><![CDATA[spore]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/user-interface-be-nice-107/</guid>
		<description><![CDATA[A short post for a busy week. I just downloaded the Spore Creature Creator, and this file showed up on my desktop: 792248d6ad421d577132c2b648bbed45_scc_trial_na.exe. Why not &#8220;Spore Creature Creator Trial Install.exe&#8221;, or, if spaces aren&#8217;t your thing, &#8220;SporeCreatureCreatorTrialInstall.exe&#8221;? Either would be infinitely more meaningful than an MD5 hash followed by an acronym and a region code. [...]]]></description>
			<content:encoded><![CDATA[<p class="note">A short post for a busy week.</p>
<p>I just downloaded the <a href="http://www.spore.com/trial">Spore Creature Creator</a>, and this file showed up on my desktop: <strong>792248d6ad421d577132c2b648bbed45_scc_trial_na.exe</strong>.</p>
<p>Why not &#8220;Spore Creature Creator Trial Install.exe&#8221;, or, if spaces aren&#8217;t your thing, &#8220;SporeCreatureCreatorTrialInstall.exe&#8221;? Either would be infinitely more meaningful than an MD5 hash followed by an acronym and a region code.</p>
<p>While the developers <em>may</em> have had a reason (though I can&#8217;t imagine it&#8217;s a good enough reason) to use this file name, the web team has no excuse.</p>
<p>There&#8217;s a lesson here: be nice to users. Whether it&#8217;s just a file name or <a href="http://www.codinghorror.com/blog/archives/001120.html">helpful error messages</a> or designing a user interface/experience, don&#8217;t treat your users like machines that parse your (bizarre) internal formats.</p>
<p>And Will Wright, if you&#8217;re listening, ask someone to rename that file.</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/user-interface-be-nice-107/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Organizing CSS</title>
		<link>http://coffeeonthekeyboard.com/organizing-css-105/</link>
		<comments>http://coffeeonthekeyboard.com/organizing-css-105/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 13:22:16 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[organization]]></category>
		<category><![CDATA[readability]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/organizing-css-105/</guid>
		<description><![CDATA[Looking at WordPress themes usually makes me cringe. It&#8217;s as if there was a memo on semantic markup and the community of WP developers didn&#8217;t get it. Some themes waste kilobytes of HTML source on something that could be achieved with 75% less markup. Some use blatantly non-compliant code. Almost none use semantic names. But [...]]]></description>
			<content:encoded><![CDATA[<p>Looking at WordPress themes usually makes me cringe. It&#8217;s as if there was a memo on semantic markup and the community of WP developers didn&#8217;t get it.</p>
<p><a href="http://themes.wordpress.net/columns/2-columns/2991/autumn-concept-10/">Some themes</a> waste kilobytes of HTML source on something that could be achieved with 75% less markup. Some use blatantly non-compliant code. Almost none use <a href="http://coffeeonthekeyboard.com/use-semantics-to-guide-design-53/" title="semantic names">semantic names</a>.</p>
<p>But what really irks me—I&#8217;ll cop to using meaningless code to make it look good—is the style of CSS that seems to be spreading: breaking up definitions into a half-dozen chunks, no line breaks, lack of organization. I think their heart is in the right place (a section for colors, so don&#8217;t have to worry about layout; a section for typography, so the precious padding is protected) but the result is a horrid mess.</p>
<p>I <a href="http://coffeeonthekeyboard.com/the-new-blog-89/" title="blame Michael Heilemann">blame Michael Heilemann</a>, the designer behind the bland and semantic-free default WordPress theme. I imagine theme developers, many just starting with HTML and CSS, started by looking at his code, and thought that was the way to do it. Then it spread like a virus.</p>
<p>Here&#8217;s an example from &#8220;Autumn Concept 1.0&#8243;:</p>
<pre>#topbar {background-color: #4b7c44;}
#footer {background-color: #4b7c44;}
#mainpicinner {height: 250px; background: «
  url(images/mainpic01.jpg) top left «
  no-repeat #fff; border: 1px solid #fff;}
/* typography */
#logo a {color: #3a4032;}
.textbkg {border-left: 4px solid #ebf0cf;}</pre>
<p class="note">(« is an inserted linebreak.)</p>
<p>Wow. Line breaks? Readability? Was this passed through a bad version of <a href="http://www.crockford.com/javascript/jsmin.html">JSMin</a>?</p>
<p>This is from the &#8220;Color Scheme&#8221; section, but the first directive for <code>#mainpicinner</code> is <code>height</code>. It also has a <code>border</code>, not just <code>border-color</code> but the whole thing. What&#8217;s the point of having sections if you proceed to ignore them immediately?</p>
<p>The rest is filled with classes like <code>cols01</code> and <code>box01</code> (while there are other <code>cols##</code>, there is no <code>box02</code>).</p>
<p>But that isn&#8217;t my real problem. My real problem is about 20 lines further down:</p>
<pre>body {position: relative; background: #1f1f1f; «
  font: 70% Verdana, Arial, Helvetica, «
  sans-serif; text-align: center; letter-spacing: 0;}
#container {float: left; display: block; width: 100%;}
#topbar {float: left; display: block; width: «
  100%; background-image: url(images/topbar.png); «
  background-position: top; background-repeat: «
  repeat-x; text-align: left; padding: 13px 0 6px 0;}
#topbar div {padding-bottom: 0;}</pre>
<p>#container is back. (As are backgrounds. Pick a spot, already!)</p>
<p>This kind of CSS is hard to read, hard to maintain, and hard to customize. Even if the initial version is perfect—which doesn&#8217;t exist—things will start to break as soon as someone opens the file. Even in this published style sheet, the <em>author</em> couldn&#8217;t decide if background images and borders belonged in &#8220;Color Scheme&#8221; or &#8220;General Styles.&#8221; What chance does a maintainer have?</p>
<p>I am, admittedly, obsessively strict with <a href="http://coffeeonthekeyboard.com/wp-content/themes/default/style.css">my style sheets</a>. I like to make very sure that every style affects only what I intend it to affect. But I never let the styles for one element single get broken into two places. Instead, what I try to do is keep similar styles in a similar order inside those blocks:</p>
<pre>blockquote.dropquote {
  float: right;  font-family: Arial, «
    Helvetica, sans-serif;
  font-size: 130%;

color: #662020;
  background-color: #ddd;
}

div.login {
  position: absolute;
  top: 0;
  left: 0;

  font-size: 80%;

  color: #fff;
}</pre>
<p>Get the idea? Within each selector, I try to keep things in the same order. I almost always keep positioning styles first and then do either typography or color. To me, this is much more readable and maintainable. If my header div is 3 pixels too wide, I don&#8217;t have to comb through all the <code>#header</code> sections. I go to <em>one</em> place and fix it.</p>
<p>I like to <a href="http://coffeeonthekeyboard.com/work-pattern-designing-web-sites-93/" title="extract the CSS order from the document order">extract the CSS order from the document order</a>. This doesn&#8217;t necessarily stay complete or strict, especially when you have classes that can be used anywhere or you&#8217;re controlling tags directly. The header styles do come <em>before</em> the content styles, though, which come <em>before</em> the footer styles. That just makes <em>sense</em>.</p>
<p>Am I the only one who can&#8217;t stand this &#8220;style&#8221; of CSS? Do you use it? Why?</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/organizing-css-105/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do You &#8220;Designed By&#8221;?</title>
		<link>http://coffeeonthekeyboard.com/do-you-designed-by-96/</link>
		<comments>http://coffeeonthekeyboard.com/do-you-designed-by-96/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 15:04:39 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[brand]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/do-you-designed-by-96/</guid>
		<description><![CDATA[A debate has cropped up over &#8220;designed by&#8221; links, those (hopefully) little links a designer puts on a page to take credit and get themselves some traffic and customers. On the one side, Pat Dryburgh argues word-of-mouth is superior to self-advertising: &#8220;If the design is good enough, they will ask my clients, and if they [...]]]></description>
			<content:encoded><![CDATA[<p>A debate has cropped up over &#8220;designed by&#8221; links, those (hopefully) little links a designer puts on a page to take credit and get themselves some traffic and customers.</p>
<p>On the one side, <a href="http://www.atrickdesign.com/blog/you-will-never-see-designed-by-atrick-design/">Pat Dryburgh argues</a> word-of-mouth is superior to self-advertising: <strong>&#8220;If the design is good enough, they will ask my clients, and if they like me enough, then they will tell people about me.&#8221;</strong></p>
<p>In rebuttal, <a href="http://wisdump.com/design/a-website-designed-by-link-is-like-a-louis-vuitton-monogram/">Sophia Lucero at wisdump.com claims</a> your &#8220;designed by&#8221; link should be like a Louis Vuitton logo: <strong>&#8220;Your brand should never hurt your creations, it should enhance them&#8221;</strong>.</p>
<p>To me, there is an issue of &#8220;ownership&#8221; to consider. If I put my name on something, I take responsibility for it as much as credit. My name means &#8220;I did this, I&#8217;m proud of it, and I want to be associated with it.&#8221; I think we&#8217;ve all done work we&#8217;ve left our names off, because we were rushed or a client demanded changes in spite of our best advice or&#8230; well, you get the idea: we weren&#8217;t proud of it.</p>
<p>So what do you do? Are you a &#8220;designed by&#8221; designer? Do you stick to code comments? What if you&#8217;re a back-end developer?</p>
<p><strong>Edit:</strong> I should link <a href="http://www.chrisbrogan.com/develop-a-strong-personal-brand-online-1/">Chris Brogan&#8217;s series</a> <a href="http://www.chrisbrogan.com/develop-a-strong-personal-brand-online-2/">on personal</a> <a href="http://www.chrisbrogan.com/the-real-power-of-personal-branding/">branding</a>. It definitely applies to this question.</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/do-you-designed-by-96/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Work Pattern: Designing Web Sites</title>
		<link>http://coffeeonthekeyboard.com/work-pattern-designing-web-sites-93/</link>
		<comments>http://coffeeonthekeyboard.com/work-pattern-designing-web-sites-93/#comments</comments>
		<pubDate>Mon, 26 May 2008 15:40:02 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[work pattern]]></category>
		<category><![CDATA[workflow]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/work-pattern-designing-web-sites-93/</guid>
		<description><![CDATA[The premise of Design Patterns is that similar problems have similar solutions. In the same vein, I propose this Work Pattern a set of common steps I use when I create a web site, and maybe you can use, too. Elements and Outline My first step is usually to create an un-styled outline of a [...]]]></description>
			<content:encoded><![CDATA[<p>The premise of <a href="http://en.wikipedia.org/wiki/Design_pattern_(computer_science)">Design Patterns</a> is that similar problems have similar solutions. In the same vein, I propose this <strong>Work Pattern</strong> a set of common steps I use when I create a web site, and maybe you can use, too.</p>
<h4>Elements and Outline</h4>
<p>My first step is usually to create an un-styled outline of a &#8220;typical&#8221; page. I fire up my editor, fill in the basic <abbr title="eXtensible HyperText Markup Language">XHTML</abbr>, and then go to work inside the <code>&lt;body&gt;</code> tag.</p>
<p>Most sites have this fairly common structure: header, content, footer. And just for fun, let&#8217;s throw in navigation between the header and the content. It&#8217;s pretty easy to represent this in XHTML:</p>
<pre>&lt;div id="header"&gt;
&lt;/div&gt;

&lt;div id="navigation"&gt;
&lt;/div&gt;

&lt;div id="content"&gt;
&lt;/div&gt;

&lt;div id="footer"&gt;
&lt;/div&gt;</pre>
<p>This is my first skeleton for &gt;90% of the sites I design. It&#8217;s a very standard document. Sometimes navigation will be inside the header, but most often it goes like this.</p>
<p>Now you have to start thinking about what elements will be on the page. On this site, a blog, I used &#8220;articles&#8221; instead of &#8220;content&#8221; for the main div. I also added two side bars, and I knew that inside the articles div I&#8217;d want, well, articles.</p>
<pre>&lt;div id="header"&gt;
  &lt;h1&gt;Page Title&lt;/h1&gt;
&lt;/div&gt;

&lt;div id="navigation"&gt;
  &lt;ul&gt;
    &lt;li&gt;Link 1&lt;/li&gt;
    &lt;li&gt;Link 2&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div id="articles"&gt;
  &lt;h2&gt;Recent Articles&lt;/h2&gt;
  &lt;div class="article"&gt;
    &lt;h3&gt;Article Title&lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div id="theblog"&gt;
  &lt;h2&gt;Sidebar heading&lt;/h2&gt;
  &lt;p&gt;Sidebar paragraph&lt;/p&gt;
&lt;/div&gt;

&lt;div id="theworld"&gt;
  &lt;h2&gt;Sidebar heading&lt;/h2&gt;
  &lt;ul&gt;
    &lt;li&gt;Sidebar&lt;/li&gt;
    &lt;li&gt;list&lt;/li&gt;
  &lt;/ul&gt;
&lt;/div&gt;

&lt;div id="footer"&gt;
&lt;/div&gt;</pre>
<p class="image right"><img src="http://coffeeonthekeyboard.com/wp-content/uploads/2008/05/skeleton.png" alt="An Un-Styled Skeleton" /></p>
<p>I won&#8217;t bore you with more code examples; I think you get the idea. I <a href="http://coffeeonthekeyboard.com/building-accessible-sites-part-three-in-a-trilogy-69/" title="make an outline">make an outline</a>. I know at this point that my source is nice and valid, and that it will make sense when I <a href="http://coffeeonthekeyboard.com/assessing-accessibility-part-two-in-a-trilogy-67/" title="turn off the stylesheet">turn off the stylesheet</a>. I use <a href="http://coffeeonthekeyboard.com/use-semantics-to-guide-design-53/" title="semantic names">semantic names</a> for everything.</p>
<p>It&#8217;s not very pretty, but I now have a workable XHTML document, with a properly-nested outline, and most of the important elements. Good for me, because now I can start to style them.</p>
<h4>Layout and Style</h4>
<p>Now, I know what visual elements will need to go on the page. I know what page elements I need to style. Now I&#8217;ll start creating a style sheet.</p>
<p>My first style sheet will contain a few basic <abbr>HTML tags and the elements of my document. I could probably write an XML</abbr>-to-<abbr title="Cascading Style Sheets">CSS</abbr> generator with how strict I am with this step.</p>
<p>Ok, one more code example:</p>
<pre>body {}

h1,
h2,
h3,
h4,
h5,
h6 {}

a:link {}
a:visited {}
a:hover {}

#header {}
#header h1 {}

#navigation {}
#navigation ul {}
#navigation ul li {}

#articles {}
#articles h2 {}
#articles div.article {}
#articles div.article h2 {}

#theblog {}
#theblog h2 {}

#theworld {}
#theworld h2 {}
#theworld ul {}
#theworld ul li {}

#footer {}</pre>
<p>One of my favorite things about this is it&#8217;s almost impossible for a mistake in one section to mess up anything else.</p>
<p>But obviously there&#8217;s a lot in there I can combine, can shorten. Almost anything that&#8217;s true for <code>#theblog</code> will also be true for <code>#theworld</code> in this case, so <abbr title="Don't Repeat Yourself">DRY</abbr>, and keep things together as much as you can. But, when you&#8217;re just starting the style sheet, this is a good place to start.</p>
<p>As I&#8217;m going, I add a lot to the style sheet. I also add a lot to the XHTML template. Pixels get tweaked left and right and I swear at <abbr title="Internet Explorer 6">IE6</abbr>, of course.</p>
<h4>Building Templates</h4>
<p>Once I have a complete, or near-complete, <a href="http://coffeeonthekeyboard.com/wp-content/themes/mock.htm">mock up</a>,  it&#8217;s time to start building templates for your <abbr title="Content Management System">CMS</abbr> of choice. This is mostly copy-and-paste work at this point. Your <code>#header</code> and <code>#navigation</code> go into the header template. <code>#footer</code> goes into footer. <code>#content</code> goes in the content template.</p>
<p>See how easy that is?</p>
<p>Then you get to go through and actually add the template mark up. Whether it&#8217;s Smarty or PHP or ASP doesn&#8217;t really matter, you just replace your dummy text with the right tags.</p>
<h4>Starting Out</h4>
<p>I love this process, but there is one thing you really need for it to go smoothly:</p>
<p>You need to know what kind of content you&#8217;ll have. When you&#8217;re redesigning your blog, or building an in-house site, it&#8217;s pretty easy to know. When you&#8217;re working for a client, you may need to twist some arms to get this information. (I love <a href="http://www.alistapart.com/articles/designbymetaphor">this A List Apart article</a> for advice on communicating with clients.)</p>
<p>One final thought: use comments. Any time I create a div, I wrap it in comments like this:</p>
<pre>&lt;!--begin #articles --&gt;
&lt;div id="articles"&gt;
&lt;/div&gt;
&lt;!-- end #articles --&gt;</pre>
<p>I usually use the CSS selector because it&#8217;s specific, so <code>#articles</code>, <code>.article</code>, and so on. These comments—which I left out here to save space—have saved me so much time and effort compared to relying on indentation that I can&#8217;t imagine working without them.</p>
<p>I didn&#8217;t set out this process as a way to streamline my work, but rather, as I started noticing patterns that worked well, I started thinking about the process. Much like <a href="http://rubyonrails.org/">Rails</a>, which was already running <a href="http://www.basecamphq.com/">Basecamp</a> before it was a framework, I&#8217;ve been using more-and-more-polished versions of this work flow for months.</p>
<p>Maybe you&#8217;ll find it helpful, maybe not. Maybe you already have a &#8220;system&#8221; in place. If you do, what is it?</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/work-pattern-designing-web-sites-93/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The W3C Sucks</title>
		<link>http://coffeeonthekeyboard.com/the-w3c-sucks-92/</link>
		<comments>http://coffeeonthekeyboard.com/the-w3c-sucks-92/#comments</comments>
		<pubDate>Thu, 22 May 2008 22:54:53 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[mathml]]></category>
		<category><![CDATA[things that suck]]></category>
		<category><![CDATA[w3c]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/the-w3c-sucks-92/</guid>
		<description><![CDATA[&#8220;If you wish to be a success in the world, promise everything, deliver nothing.&#8221; If you want to remain the standard-setting body for the web, promise new recommendations, never deliver. A decade ago, the W3C was actively working to improve the standards we designers and developers use every day. Sure there were some controversial things [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;If you wish to be a success in the world, promise everything, deliver nothing.&#8221;</p>
<p>If you want to remain the standard-setting body for the web, promise new recommendations, never deliver.<span id="more-92"></span></p>
<div class="image left"><img src="http://coffeeonthekeyboard.com/wp-content/uploads/2008/05/css.png" alt="CSS 2.1 is not even a published recommendation. Off with their (the W3C) heads." style="float: left" /></div>
<p>A decade ago, the <abbr title="World Wide Web Consortium">W3C</abbr> was actively working to improve the standards we designers and developers use every day. Sure there were some controversial things (<abbr title="HyperText Markup Language">HTML</abbr> 3.0, <abbr title="eXtensible Markup Language">XML</abbr> 1.1) that never caught on, but at least there was discussion, thought, and sometimes even action.</p>
<p>The W3C started work on the <abbr title="Cascading Style Sheets">CSS</abbr>3 specification the same year they published CSS2—1998. Ten years later, CSS2.1 is still not technically a published recommendation.</p>
<p>Between 1995, when the W3C was founded, and 1999, HTML went from version 2, an <abbr title="Request For Comments">RFC</abbr>, to version 4.01. Where is 5? In January of <em>this year</em> it became a Working Draft.</p>
<p>When was <abbr title="eXtensible HyperText Markup Language">XHTML</abbr> last updated? 2001. The <abbr title="Document Object Model">DOM</abbr>? 2004. <abbr title="Math Markup Language">MathML</abbr>? 2003.</p>
<p>What happened?</p>
<p>When did &#8220;do nothing group&#8221; replace &#8220;working group&#8221; over there? (Probably around 2004.)</p>
<p>I realize that implementing new standards is not trivial. I also realize that standards are crucial to the continued growth of the web—this site is valid XHTML and uses valid CSS.</p>
<p>However, without updates, these &#8220;standards&#8221; will get old and die. Something else, or someone else, will replace them. We&#8217;ve already used CSS2 for a decade. Will we use it for another? (I want my drop shadows! I want my opacity! I want my rounded corners!)</p>
<p>I lead with a quote from Napoleon, so I&#8217;ll finish with the French Revolution: Off with their heads. The W3C needs a change in leadership or a vigorous shakedown to get off their asses and do something.</p>
<p>If they&#8217;re not willing to put forth the effort, then let them eat cake while someone else does.</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/the-w3c-sucks-92/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The New Blog</title>
		<link>http://coffeeonthekeyboard.com/the-new-blog-89/</link>
		<comments>http://coffeeonthekeyboard.com/the-new-blog-89/#comments</comments>
		<pubDate>Mon, 19 May 2008 00:03:06 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Standards]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[My Site]]></category>
		<category><![CDATA[theft]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/the-new-blog-89/</guid>
		<description><![CDATA[I made myself sit down today and finish work on the blog design. I am very happy with how it came out. This design is a hybrid, pulling elements from some of better-looking sites and blogs. The three-column layout was inspired by Felicia Day&#8217;s &#8220;Flog&#8221; and Problogger, the thin header comes from a post on [...]]]></description>
			<content:encoded><![CDATA[<p>I made myself sit down today and finish work on the blog design. I am very happy with how it came out.<span id="more-89"></span></p>
<p>This design is a hybrid, pulling elements from some of better-looking sites and blogs. The three-column layout was inspired by Felicia Day&#8217;s &#8220;<a href="http://feliciaday.net/blog/">Flog</a>&#8221; and <a href="http://www.problogger.net/">Problogger</a>, the thin header comes from <a href="http://www.chrisbrogan.com/make-your-blog-design-work-for-you/">a post on Chris Brogan&#8217;s blog</a>, the heading style is cribbed from <a href="http://www.guardian.co.uk/">The Guardian</a>.</p>
<p>There are two things I learned here that I want to pass along.</p>
<p><strong>T</strong><strong>heft is not wrong</strong>. Just because a design element exists on another site does not mean you can&#8217;t use it. I don&#8217;t mean you should steal the entire layout, images and all, or steal code (unless it&#8217;s under a free license, then steal away). But if you like the way your favorite blog does headings, there&#8217;s no shame in modeling your headings the same way.</p>
<p><strong>Unfinished <em>is</em> wrong.</strong> I regret leaving the blog unfinished for so long. I would have been better served by using the Kubrick theme until I was really ready to switch. If you&#8217;re starting a blog and want to get to writing right away, go ahead and use some free templates. It&#8217;s much better than starting a theme and leaving it unfinished.</p>
<p>A corollary to that is &#8220;while incremental changes are fine in testing, only big, <em>complete</em> changes are OK in production.&#8221; In other words, don&#8217;t edit your live site, except small tweaks and bug fixes. When you upload new templates they should be tested and ready to deploy.</p>
<p>That being said, there are a few small things that aren&#8217;t quite finished. I need to write a short paragraph about myself and decide if I want to add a Problogger-/Chris Brogan-style link to the feed right at the top.</p>
<p>Well, what do you think?</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/the-new-blog-89/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Skinning(/Leatherworking)</title>
		<link>http://coffeeonthekeyboard.com/skinningleatherworking-76/</link>
		<comments>http://coffeeonthekeyboard.com/skinningleatherworking-76/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 16:06:01 +0000</pubDate>
		<dc:creator>James</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[My Site]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://coffeeonthekeyboard.com/skinningleatherworking-76/</guid>
		<description><![CDATA[I&#8217;m (finally) working on the new theme. It&#8217;s obviously a work-in-progress, so just appreciate the effort for now. I&#8217;m starting with the default WordPress theme by Michael Heilemann. I&#8217;m not going to lie: I really dislike this particular theme. The look, though bland, is fine. What bothers me is how disorganized and really horrid some [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m (finally) working on the new theme. It&#8217;s obviously a work-in-progress, so just appreciate the effort for now.</p>
<p>I&#8217;m starting with the default WordPress theme by Michael Heilemann.  I&#8217;m not going to lie: I really dislike this particular theme.<span id="more-76"></span></p>
<p>The look, though bland, is fine. What bothers me is how disorganized and really horrid some of the code is, in particular the CSS. The text is realigned several times (center, no left, no center! Ah, you said center! But I meant left. Well&#8230; very well, we are Church of&#8230; Sorry, off to see Izzard in a few weeks). Everything is done in pixels, except randomly things are in <em>em</em>s or percents. Many things are changed from defaults only to be changed back later.</p>
<p>In general, the idea of <em>cascading</em> seems to have been missed.</p>
<p>I wonder, how much of this is one person (Mr. Heilemann) and how much is hacks by committee. There is a definite feeling of &#8220;too many chefs&#8221; here.</p>
<p>And yet, here I am, using it anyway. As I work through my changes I&#8217;m doing a bit of Spring Cleaning, aptly enough in Spring, but it slows down the process.</p>
<p>Mad props to <a href="http://www.getfirebug.com/" title="Best Firefox Developer Addon EVAR!">Firebug</a>, and its brilliant style inspector which shows you not only computed styles, but the whole CSS ancestry of any element.</p>
]]></content:encoded>
			<wfw:commentRss>http://coffeeonthekeyboard.com/skinningleatherworking-76/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

