<?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>Everything In Between &#187; Web Standards</title>
	<atom:link href="http://maymay.net/blog/category/web-design/web-standards/feed/" rel="self" type="application/rss+xml" />
	<link>http://maymay.net/blog</link>
	<description>The brutally honest, first-person account of Meitar Moscovitz&#039;s life.</description>
	<lastBuildDate>Thu, 19 Jan 2012 08:54:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>My SVG is Bigger than Your Flash &#8211; Presentation Notes</title>
		<link>http://maymay.net/blog/2010/01/07/my-svg-is-bigger-than-your-flash-presentation-notes/</link>
		<comments>http://maymay.net/blog/2010/01/07/my-svg-is-bigger-than-your-flash-presentation-notes/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 22:57:19 +0000</pubDate>
		<dc:creator>Meitar</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[SVG]]></category>

		<guid isPermaLink="false">http://maymay.net/blog/?p=1063</guid>
		<description><![CDATA[A few weeks ago, right before the Christmas holidays, I gave a brief internal presentation about SVG, an XML-based web standard for interactive images, to my coworkers. Since I was told that the presentation was helpful, I thought I&#8217;d share my notes. Those notes follow: Introduction First, credit where credit is due. I learned almost [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago, right before the Christmas holidays, I gave a brief internal presentation about <acronym title="Scalable Vector Graphics">SVG</acronym>, an <acronym title="eXtensible Markup Language">XML</acronym>-based web standard for interactive images, to my coworkers. Since I was told that the presentation was helpful, I thought I&#8217;d share my notes. Those notes follow:</p>
<h2>Introduction</h2>
<p>First, credit where credit is due.</p>
<p>I learned almost everything I know about <acronym title="Scalable Vector Graphics">SVG</acronym> from an acquaintance I met in <a href="http://raphaeljs.com/australia.html">Australia</a> named <a href="http://dmitry.baranovskiy.com/">Dmitry Baranovskiy</a>. He is a superb client-side web developer who I helped add documentation for a brief time for one of his <acronym title="Scalable Vector Graphics">SVG</acronym>-related projects called <a href="http://raphaeljs.com/">RaphaëlJS</a>. I&#8217;ll show you that in a little bit.</p>
<p>Okay, so what is <acronym title="Scalable Vector Graphics">SVG</acronym>?</p>
<h2>What is <acronym title="Scalable Vector Graphics">SVG</acronym>?</h2>
<p>In a sentence, <a href="http://www.adobe.com/svg/">according to Adobe</a>, the originators of the technology:</p>
<blockquote cite="http://www.adobe.com/svg/"><p>Scalable Vector Graphics (<acronym title="Scalable Vector Graphics">SVG</acronym>) is a text-based graphics language that describes images with vector shapes, text, and embedded raster graphics.</p></blockquote>
<p>What does that mean?</p>
<ul>
<li>Scalable means that the technology is <a href="http://en.wikipedia.org/wiki/File:Bitmap_VS_SVG.svg"> natively resolution-independent</a>.</li>
<li>Vector means that image data is described using relative mathematical coordinates:
<ul>
<li><a href="http://maymay.net/blog/wp-content/uploads/2010/01/SVG_path_syntax_1.png"><img src="http://maymay.net/blog/wp-content/uploads/2010/01/SVG_path_syntax_1.png" alt="SVG Path Syntax example 1" title="SVG_path_syntax_1" width="517" height="383" class="size-full wp-image-1065" /></a></li>
<li><a href="http://maymay.net/blog/wp-content/uploads/2010/01/SVG_path_syntax_2.png"><img src="http://maymay.net/blog/wp-content/uploads/2010/01/SVG_path_syntax_2.png" alt="SVG Path Syntax example 2, with syntax highlighting." title="SVG_path_syntax_2" width="517" height="384" class="size-full wp-image-1066" /></a></li>
</ul>
</li>
<li>Graphics means that it&#8217;s used to create images, but also means <a href="http://raphaeljs.com/image-rotation.html">it natively supports bitmapped graphics</a>, and videos, using <code><a href="http://www.w3.org/TR/SVG/extend.html#ForeignObjectElement">&lt;foreignObject&gt;</a></code>.</li>
</ul>
<p>But wait, there&#8217;s &#8221;more&#8221;.</p>
<h2>Why use <acronym title="Scalable Vector Graphics">SVG</acronym>?</h2>
<ul>
<li><a href="http://raphaeljs.com/text-rotation.html">It&#8217;s text-based</a>, which means it&#8217;s highly searchable. Remember <acronym title="Search Engine Optimization">SEO</acronym> in the heyday of the &#8220;Flash website&#8221;? Now Flash has all kinds of meta attributes to provide extra <acronym title="Search Engine Optimization">SEO</acronym> oomph, but if we had just used <acronym title="Scalable Vector Graphics">SVG</acronym> in the first place, we wouldn&#8217;t have had this problem.
<ul>
<li>That means <a href="http://raphaeljs.com/fonts.html">we also get custom fonts</a>, for free.</li>
<li>Oh, and it&#8217;s super accessible, too.</li>
</ul>
</li>
<li>Mobile support: <acronym title="Scalable Vector Graphics">SVG</acronym> comes in a few flavors that are all interoperable with each other in order to define different levels of support. Whereas Flash is monolithic, <acronym title="Scalable Vector Graphics">SVG</acronym> comes in profiles that support low-end devices with reasonable quality while still providing high-fidelity content. Just like the Web was designed to do.
<ul>
<li>Don&#8217;t believe me? Watch this: <a href="http://vimeo.com/1987967">Raphaël Rotation on iPod touch</a></li>
</ul>
</li>
<li>Easy to learn: there isn&#8217;t much new here because it uses everything you already know about <acronym title="eXtensible Markup Language">XML</acronym>, <acronym title="Cascading Style Sheets">CSS</acronym>, and JavaScript to provide every feature it has. That&#8217;s right, you can <a href="http://raphaeljs.com/pie.html">use plain old <acronym title="HyperText Markup Language">HTML</acronym> for your page content</a>, add some <acronym title="Cascading Style Sheets">CSS</acronym> to style it <em>and</em> the <acronym title="Scalable Vector Graphics">SVG</acronym>, and then JavaScript to script it. &#8220;The trifecta&#8221; just added another dimension.</li>
<li>And, if you care about such things, <a href="http://www.w3.org/Graphics/SVG/"><acronym title="Scalable Vector Graphics">SVG</acronym> has been an open standard</a> well before Flash was.</li>
</ul>
<h2>Browser support</h2>
<ul>
<li>Opera has full support and has had some amount of support since Opera 8.</li>
<li>Gecko has had increasing support since 2005.</li>
<li>WebKit has had increasing support since 2006.</li>
<li>Internet Explorer (still) has no native support. We hate you, Internet Explorer. (That said, however, <a href="http://www.sitepoint.com/blogs/2010/01/07/internet-explorer-svg/">Microsoft has just recently joined the <acronym title="World Wide Web Consortium">W3C</acronym>&#8216;s <acronym title="Scalable Vector Graphics">SVG</acronym> Working group</a>, so there may yet be some hope.)</li>
</ul>
<h2>What can we do about <acronym title="Internet Explorer">IE</acronym> today?</h2>
<p>Here is the breakdown of options we have to deal with <acronym title="Internet Explorer">IE</acronym>&#8216;s frustrating lack of support.</p>
<ul>
<li>Rely on <acronym title="HyperText Transfer Protocol">HTTP</acronym> content negotiation to serve <acronym title="Scalable Vector Graphics">SVG</acronym> to supporting browsers, and raster images to Internet Explorer. Works great, except now we&#8217;re still using raster images, so basically it feels like 1995 again. It&#8217;s also <a href="http://en.wikipedia.org/wiki/Scalable_Vector_Graphics#Support_for_SVG_in_web_browsers">what Wikipedia does</a>.</li>
<li>Use plugins. Adobe has had one forever called the <a href="http://www.adobe.com/svg/viewer/install/"> Adobe <acronym title="Scalable Vector Graphics">SVG</acronym> Viewer</a>. It&#8217;s pretty good…but it&#8217;s a plugin. I&#8217;m not sure how Flash got away with also being a plugin, but whatever.</li>
<li>Relent and use Flash on the client-side, but revel in delicious <acronym title="Scalable Vector Graphics">SVG</acronym> pureness for our source files: <a href="http://flash-creations.com/notes/sample_svgtoflash.php">Using <acronym title="Scalable Vector Graphics">SVG</acronym> Path Data in Flash</a>.</li>
<li>Use a cross-browser <acronym title="Application Programming Interface">API</acronym>. Turns out, there are quite a few:
<ul>
<li><a href="http://www.dojotoolkit.org/topics/platforms/svg"><acronym title="Scalable Vector Graphics">SVG</acronym> in The Dojo Toolkit</a> &#8211; Early and solid, but it uses Dojo (and we don&#8217;t).</li>
<li><a href="http://code.google.com/p/svgweb/">svgweb</a> &#8211; Google&#8217;s experimental library. It&#8217;s got the biggest <a href="#Hype_it_up">hype</a>right now.</li>
<li><a href="http://raphaeljs.com/">RaphaëlJS</a>, written by my acquaintance Dmitry Baranovskiy and, of course, my favorite cross-browser <acronym title="Scalable Vector Graphics">SVG</acronym> toolkit. Since it&#8217;s stand-alone, you can actually mix-and-match with your favorite JavaScript framework. In other words, you take your pick of jQuery, YUI, Prototype, or whatever, and layer RaphaëlJS on top for all your <acronym title="Scalable Vector Graphics">SVG</acronym>-related work. Now that&#8217;s creamy.</li>
</ul>
</li>
</ul>
<h2>How do <acronym title="Scalable Vector Graphics">SVG</acronym>-writing JS frameworks work?</h2>
<ol>
<li>Provides a cross-browser JavaScript <acronym title="Application Programming Interface">API</acronym> (think jQuery) for writing <acronym title="Scalable Vector Graphics">SVG</acronym> commands.</li>
<li>Writes to the <acronym title="Document Object Model">DOM</acronym> based on your Raphaël commands:
<ul>
<li>Writes <acronym title="Scalable Vector Graphics">SVG</acronym> to supporting browsers.</li>
<li>Writes VML<sup><a href="http://maymay.net/blog/2010/01/07/my-svg-is-bigger-than-your-flash-presentation-notes/#footnote_0_1063" id="identifier_0_1063" class="footnote-link footnote-identifier-link" title="VML is Microsoft&amp;#8217;s proprietary, non-standard Vector Markup Language. It&amp;#8217;s basically the exact same thing as SVG, but only works in Internet Explorer. Because whereas Apple only thinks differently, Microsoft has to do it differently. We hate you, Microsoft.">1</a></sup> to Internet Explorer.</li>
</ul>
</li>
<li>Makes you coffee.</li>
</ol>
<h2 id="Hype_it_up">Hype it up</h2>
<div class="wp-caption alignright" style="width:425px;"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/XCk22AaRxiE&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/XCk22AaRxiE&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>1 Minute Intro to (Google&#8217;s) <acronym title="Scalable Vector Graphics">SVG</acronym> Web + Demos + rock and roll (because why not?)
</div>
<ul>
<li><a href="http://research.sun.com/projects/lively/">Sun Labs&#8217; Lively Kernel</a> &#8211; A full &#8220;web <acronym title="Operating System">OS</acronym>&#8221; implemented in native <acronym title="Scalable Vector Graphics">SVG</acronym> and JavaScript (no frameworks). Like SmallTalk, you can actually change the runtime environment yourself by editing JavaScript within the environment. Now <em>that&#8217;s</em> meta.
<li><a href="http://cristian.nexcess.net/ajax/svg_chart/">Ajax and <acronym title="PHP Hypertext Preprocessor; an HTML-embedded scripting language">PHP</acronym> <acronym title="Scalable Vector Graphics">SVG</acronym> Demo: Realtime Charting</a></li>
</ul>
<h2>Sources and additional resources</h2>
<ul>
<li><a href="http://www.sitepoint.com/blogs/2008/12/22/svg-is-the-future-of-application-development/"><acronym title="Scalable Vector Graphics">SVG</acronym> Is The Future Of Application Development</a> &#8211; Describes other awesome uses of <acronym title="Scalable Vector Graphics">SVG</acronym>.
<li><a href="http://www.webdirections.org/resources/dmitry-baranovskiy-start-using-web-vector-graphics-today/">Start Using Web Vector Graphics Today</a> &#8211; Web Directions South presentation by Dmitry Baranovskiy.
<li><a href="http://www.slideshare.net/Dmitry.Baranovskiy/svg"><acronym title="Scalable Vector Graphics">SVG</acronym></a> &#8211; a slideshow overview by Dmitry Baranovskiy.</li>
<li><a href="http://www.w3schools.com/svg/svg_intro.asp"><acronym title="Scalable Vector Graphics">SVG</acronym> Intro</a> on W3Schools.com. (Quick &#8216;n&#8217; dirty and not highly recommended, but an oft-cited reference so you might as well know it exists.)</li>
</ul>
<ol class="footnotes"><li id="footnote_0_1063" class="footnote">VML is Microsoft&#8217;s proprietary, non-standard Vector Markup Language. It&#8217;s basically the exact same thing as <acronym title="Scalable Vector Graphics">SVG</acronym>, but only works in Internet Explorer. Because whereas Apple only thinks differently, Microsoft has to do it differently. We hate you, Microsoft.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://maymay.net/blog/2010/01/07/my-svg-is-bigger-than-your-flash-presentation-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why CSS needs delegation capabilities and not &#8220;variables&#8221;</title>
		<link>http://maymay.net/blog/2008/12/14/why-css-needs-delegation-capabilities-and-not-variables/</link>
		<comments>http://maymay.net/blog/2008/12/14/why-css-needs-delegation-capabilities-and-not-variables/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 07:55:04 +0000</pubDate>
		<dc:creator>Meitar</dc:creator>
				<category><![CDATA[Crosspost]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech/Computing]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://maymay.net/blog/?p=815</guid>
		<description><![CDATA[It&#8217;s been too long since I joined the fun, if amazingly heated, debates over the direction that Web standards are moving in. Recently, given the &#8220;free&#8221; time to do so, I decided to dive head first into what is (sadly) an almost 14 year old debate. The result is this blog post, which is mostly [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been too long since I joined the fun, if amazingly heated, debates over the direction that Web standards are moving in. Recently, given the &#8220;free&#8221; time to do so, I decided to dive head first into what is (sadly) an almost 14 year old debate. The result is this blog post, which is mostly a response to Bert Bos&#8217;s essay <cite><a href="http://www.w3.org/People/Bos/CSS-variables">Why &#8220;variables&#8221; in <acronym title="Cascading Style Sheets">CSS</acronym> are harmful</a></cite> and Matt Wilcox&#8217;s opposing response to that essay, <cite><a href="http://mattwilcox.net/archive/entry/id/991/">Why <acronym title="Cascading Style Sheets">CSS</acronym> needs to borrow from programming languages</a></cite>. Their articles are each worthy of a read, possibly before this one.</p>
<p>Here&#8217;s <strong>the summary</strong> of my argument.</p>
<p class="summary">Adding many &#8220;programmatic&#8221; features to the <acronym title="Cascading Style Sheets">CSS</acronym> language such as variables, macros, or flow control <em>is</em> a mistake. However, <acronym title="Cascading Style Sheets">CSS</acronym>&#8216;s failure to simply encode visual <em>relationships</em> (instead of merely typographic properties)&mdash;a severe deficiency in the core language itself&mdash;requires the addition of delegation features. With the additional capability to reference an arbitrary element&#8217;s computed value regardless of its hierarchical context, <acronym title="Cascading Style Sheets">CSS</acronym> will be more accessible to both amateur and professional web designers, more capable, and will more forcefully promote the semantic Web and its ideals.</p>
<h3>In this corner: <acronym title="Cascading Style Sheets">CSS</acronym> variables are harmful</h3>
<p>Bert does a great job of summarizing the conclusion of his argument himself. In his essay, Bert says:</p>
<blockquote cite="http://www.w3.org/People/Bos/CSS-variables"><p>Adding any form of macros or additional scopes and indirections, including symbolic constants, is not just redundant, but changes <acronym title="Cascading Style Sheets">CSS</acronym> in ways that make it unsuitable for its intended audience. Given that there is currently no alternative to <acronym title="Cascading Style Sheets">CSS</acronym>, these things must not be added.</p></blockquote>
<p>As we all know, one of the wonderful things about <acronym title="Cascading Style Sheets">CSS</acronym> is that the core language itself is remarkably simple. (What&#8217;s <em>not</em> simple is the spectacular way browser manufacturers have destroyed everyone&#8217;s hope that implementing <acronym title="Cascading Style Sheets">CSS</acronym>-based designs in the real world will ever be easy, but that&#8217;s a whole different can of worms.) Fundamentally, <acronym title="Cascading Style Sheets">CSS</acronym>&#8216;s syntax can be explained with a mere three major components: property/value pairs, declaration blocks, and rule sets.</p>
<p>What this means is that <acronym title="Cascading Style Sheets">CSS</acronym> <em>as a language</em> is stupidly easy to learn. I think everyone would agree that it&#8217;s certainly easier to learn than, say, JavaScript or <a href="//en.wikipedia.org/wiki/Extensible_Stylesheet_Language"><acronym title="eXtensible Stylesheet Language">XSL</acronym></a>. Now, that&#8217;s important because, without putting too fine a point on it, Bert mentions multiple times that <acronym title="Cascading Style Sheets">CSS</acronym>&#8216;s &#8220;intended audience&#8221; are the diverse and likely relatively technically ignorant content authors that are responsible for the overwhelming majority of web pages on the public Internet today.</p>
<p>He makes the very good point that <q cite="http://www.w3.org/People/Bos/CSS-variables">The value of the semantic Web isn&#8217;t defined by how well structured the best documents are, but by how well structured the vast majority of documents</q> are. In other words, <acronym title="Cascading Style Sheets">CSS</acronym> needs to remain instantly useable <em>and reusable</em> to these untrained, amateur web content publishers for the benefits of self-describing documents (i.e., the semantic Web) to see mass adoption.</p>
<p>To wit:</p>
<blockquote cite="http://www.w3.org/People/Bos/CSS-variables"><p>reusing other people&#8217;s style sheets is more difficult if those style sheets contain user-defined names. Class names are an example. Their names may suggest why the author created them (assuming they are in a language you understand), but typically you will have to look at the document to see where they occur and why. Symbolic constants make that problem worse.</p></blockquote>
<p>And, later:</p>
<blockquote cite="http://www.w3.org/People/Bos/CSS-variables"><p>For many people, style sheets with constants will thus simply not be usable. It is too difficult to look in two places at once, the place where a value is used and the place where it is defined, if you don&#8217;t know why the rule is split in this way. Many people are confused by indirection anyway and adding an extra one, in addition to the element and class names, has the same effect as obfuscating the style sheet.</p></blockquote>
<p>Whether or not you believe Bert Bos is underestimating the average web designer, it&#8217;s pretty clear that these are really good points. Nobody wants <acronym title="Cascading Style Sheets">CSS</acronym> to be obfuscated, hard to learn, or hard to reuse. That&#8217;d just be crazy talk.</p>
<h3>In the other corner: <acronym title="Cascading Style Sheets">CSS</acronym> variables are a real-world requirement</h3>
<p>The more features you add to an application, a programming language, or indeed any software, the more difficult it becomes to grok it. As the Python people would say, the larger a language gets the more difficult it is to hold all of it in your head. Nevertheless, adding &#8220;features&#8221; is sometimes the only way to add <em>capabilities</em>, and I don&#8217;t think anyone in their right mind would argue that, once written, software should never change. (That&#8217;d just be crazy talk, too.)</p>
<p>In his opposing arguments, Matt Wilcox recognizes this when he says, <q cite="http://mattwilcox.net/archive/entry/id/991/">Yes, the syntax should be simple, but the capabilities of <acronym title="Cascading Style Sheets">CSS</acronym> should not.</q> What he&#8217;s alluding to without verbalizing it is the balance between adding necessary capabilities without unnecessarily growing the &#8220;size of the language.&#8221;</p>
<p>However, Matt says that modern web design <em>methodologies</em> (e.g., separation of concerns between structure, presentation, and behavior) dictate that <acronym title="Cascading Style Sheets">CSS</acronym> needs more capabilities than it currently has:</p>
<blockquote cite="http://mattwilcox.net/archive/entry/id/991/"><p><acronym title="Cascading Style Sheets">CSS</acronym> lacks capabilities to allow truly flexible design, requiring layer upon layer of ‘tricks’ to accomplish certain objectives, requiring content to be structured ‘just so’ to achieve a display objective, or in the case of some designs proving instead to be completely incapable.</p>
<p>[…]</p>
<p><acronym title="Cascading Style Sheets">CSS</acronym>’s positioning is a cludge. It’s a cludge because you can only position relative to the last positioned parent container. Well, that limitation in itself dictates that all positioning relies upon how the content is structured. And that means the presentation and the content are not truly separable.</p></blockquote>
<p>To align <acronym title="Cascading Style Sheets">CSS</acronym>&#8216;s capabilities with the requirements of real-world web design objectives, he says, <acronym title="Cascading Style Sheets">CSS</acronym> needs to be capable of describing relationships between semantically and structurally arbitrary but visually related elements.</p>
<blockquote cite="http://mattwilcox.net/archive/entry/id/991/"><p>Visual design is fundamentally about relationships between elements. For all of the artistic flourishes and creativity, it’s about relationships. ‘That yellow’ only grabs your attention because of its contrasting relationship with ‘that blue’. ‘This heading’ only works as a heading because of it’s exaggerated relationship to the size of the body text. […] <acronym title="Cascading Style Sheets">CSS</acronym> has no clue about relationships, period. And that’s why <acronym title="Cascading Style Sheets">CSS</acronym> as it stands right now, is not good enough. That’s why <acronym title="Cascading Style Sheets">CSS</acronym> without variables (true variables), without basic logic, without maths, can never be as flexible as we need it to be.</p></blockquote>
<p>This is what web designers have been complaining about for (what feels like hundreds of) years. The fact that <acronym title="Cascading Style Sheets">CSS</acronym> has no capability to describe <em>presentational relationships</em> between elements in addition to directly describing an individual element&#8217;s presentational properties is a gaping hole that sorely degrades its ability to be a media-agnostic styling language. Every single web designer I&#8217;ve worked with has gasped at this omission, and though at first I didn&#8217;t understand why, the more I understood the principles behind graphic design the more I came to realize how fundamentally problematic this omission really is.</p>
<h3>Adding delegation makes <acronym title="Cascading Style Sheets">CSS</acronym> <em>easier</em> for designers</h3>
<p>As Matt eloquently stated, design is all about relationships. Good web designers create designs by constructing visual elements that have strong, often exacting relationships with other visual elements. There are many names and examples for this: visual language, visual hierarchy, the golden ratio, the grid, visual balance, the typographer&#8217;s scale, and so on.</p>
<p>What happens when the designer tries to define <em>a relationship</em> between elements? &#8220;How do I say that the whitespace between element A and element B should always be the same? How do I define element A&#8217;s height as half of element B&#8217;s?&#8221; These definitions, which are natural and necessary to the way designers work in both their mind and their mediums, are impossible to encode in <acronym title="Cascading Style Sheets">CSS</acronym>.</p>
<p>The closest you can get is declaring the same values to each element&#8217;s properties, not describing the relationship itself. This suffices only so long as these values are known ahead of time and are the same as one another, which severely limits the design possibilities we are capable of (without resorting to what Matt calls &#8220;tricks&#8221;). <em>That&#8217;s</em> why achieving simple visual effects are actually very complex and so, sadly, <em>that&#8217;s</em> where you&#8217;ll find the majority of indirection and obfuscation in <acronym title="Cascading Style Sheets">CSS</acronym> today. (I&#8217;m looking at you, <a href="http://www.alistapart.com/articles/fauxcolumns/">faux columns</a>.)</p>
<h3>So who wins?</h3>
<p>Both Bert Bos and Matt Wilcox have made some great points. Bert rightfully wishes to keep <acronym title="Cascading Style Sheets">CSS</acronym> lean and simple, even at the expense of some arguably beneficial styling power. Matt, on the other hand, argues that our needs as web designers have evolved faster than the technology to the point where <acronym title="Cascading Style Sheets">CSS</acronym> is <em>too</em> limited, fundamentally so.</p>
<p>The truth is, they&#8217;re both right. And they&#8217;re both wrong. Or rather, they are each taking a position that is too extreme. Bert&#8217;s absolutely correct when says that many of these proposed extensions are redundant and harmful, and yet Matt&#8217;s also correct that <acronym title="Cascading Style Sheets">CSS</acronym> lacks some fundamental capabilities that designers <em>expect</em> to be present.</p>
<p>Bert says that the <acronym title="Cascading Style Sheets">CSS</acronym> capabilities everyone&#8217;s asking for can be implemented using techniques that don&#8217;t rely on <acronym title="Cascading Style Sheets">CSS</acronym> whatsoever. These techniques, he says, make things like true <acronym title="Cascading Style Sheets">CSS</acronym> variables &#8220;redundant.&#8221;</p>
<blockquote cite="http://www.w3.org/People/Bos/CSS-variables"><p>There are examples of <acronym title="Cascading Style Sheets">CSS</acronym> with constants to satisfy all styles of programming, e.g.: <a href="http://davidwalsh.name/css-variables-php-dynamic">David Walsh</a> (in <acronym title="PHP Hypertext Preprocessor; an HTML-embedded scripting language">PHP</acronym>), <a href="http://sperling.com/examples/pcss/">Tedd Sperling</a> (in <acronym title="PHP Hypertext Preprocessor; an HTML-embedded scripting language">PHP</acronym>), <a href="http://www.digital-web.com/articles/generating_dynamic_css_with_php/">Digital Web Magazine</a> (in <acronym title="PHP Hypertext Preprocessor; an HTML-embedded scripting language">PHP</acronym>), <a href="http://ecoconsulting.co.uk/training/css_includes.shtml">Eco Consulting</a> (in <acronym title="Server Side Include">SSI</acronym>), and <a href="http://icant.co.uk/articles/cssconstants/">Christian Heilmann</a> (<acronym title="Server Side Include">SSI</acronym> and <acronym title="PHP Hypertext Preprocessor; an HTML-embedded scripting language">PHP</acronym>).</p></blockquote>
<p>Quite simply, he&#8217;s correct in stating that programmatic features need not be added to <acronym title="Cascading Style Sheets">CSS</acronym> proper to achieve desired results, but he&#8217;s incorrect in his apparent thinking that designers will be able to use these other tools to leverage <acronym title="Cascading Style Sheets">CSS</acronym>. Take, for instance, the probably more familiar (though not linked above) notion of using JavaScript to manipulate <acronym title="Cascading Style Sheets">CSS</acronym> values.</p>
<pre><code class="javascript">var x = document.getElementById('SideBar'); // get #SideBar element
var y = document.getElementById('MainColumn'); // get #MainColumn
var z = document.defaultView.getComputedStyle(y, '').getPropertyValue('height'); // get computed height of #MainColumn
x.style.height = ( parseInt(z) / 2 ) + 'px'; // set #SideBar's height 1/2 of #MainColumn's</code></pre>
<p>This is an example of programmatic code that uses variables and expressions. It sets the element with the ID of <code>SideBar</code> to half the pixel height of the element with the ID of <code>MainColumn</code>. It does this by obtaining the <code>MainColumn</code>&#8216;s height (at the time this code runs) and saving it in a variable, then performs some trivial math to half the value and use the result as the pixel height of the <code>SideBar</code>.</p>
<p>Doing this is currently impossible with <acronym title="Cascading Style Sheets">CSS</acronym> alone, yet it&#8217;s something that clearly belongs with whatever other &#8220;presentational&#8221; code exists and not in &#8220;programmatic&#8221; scripts that would otherwise be charged with defining &#8220;functionality.&#8221; As Matt states, using JavaScript to &#8220;script&#8221; solutions to <acronym title="Cascading Style Sheets">CSS</acronym>&#8216;s shortcomings like this is not an acceptable answer.</p>
<blockquote cite="http://mattwilcox.net/archive/entry/id/991/"><p><acronym title="Cascading Style Sheets">CSS</acronym> doesn’t have [basic logic or maths]. Nor is it the job of JavaScript to make up for this lack of abilities. JavaScript is about interaction behaviour, and what we are talking about here is pure display logic. Not interaction logic.</p></blockquote>
<p>Moreover, the <em>place</em> designers expect to put code like this is, of course, into a <acronym title="Cascading Style Sheets">CSS</acronym> style sheet. The <em>way</em> designers expect to put code like this into <acronym title="Cascading Style Sheets">CSS</acronym> is by adding delegation features. Requiring designers to learn JavaScript (or any other programming language) to encode such design relationships is nothing short of ridiculous. In what world is that easier for untrained laymen to understand than <acronym title="Cascading Style Sheets">CSS</acronym>?</p>
<h3>Adding delegation to <acronym title="Cascading Style Sheets">CSS</acronym> is worth the effort</h3>
<p>One of Bert&#8217;s arguments against such additions to <acronym title="Cascading Style Sheets">CSS</acronym> is that implementations would become harder to create, and that we&#8217;ll (almost certainly) see more bugs.</p>
<blockquote cite="http://www.w3.org/People/Bos/CSS-variables"><p>extending <acronym title="Cascading Style Sheets">CSS</acronym> makes implementing more difficult and programs bigger, which leads to fewer implementations and more bugs. That has to be balanced against the usefulness of the extension.</p></blockquote>
<p>Although I do agree with his statement that an extension&#8217;s usefulness has to be balanced against its potential costs, I think something so fundamental to design methodology as delegation greatly overcompensates for the cost of such implementation efforts. Moreover, if I understand Bert correctly and as he also discusses, the majority of implementations that would need to implement such delegation already have relatively complex internal structures to make the implementation effort somewhat easier:</p>
<blockquote cite="http://www.w3.org/People/Bos/CSS-variables"><p>There is no scoping [in proposals that only define <em>global</em> constants]. That means that an implementation needs a symbol table, but no stack. A stack would require a little bit more memory, but mostly it would make implementations more complex. (Although every programmer has, one hopes, learnt to program a symbol table with lexical scope during his training.) Constants in <acronym title="Cascading Style Sheets">CSS</acronym> are thus easier than, e.g., <a href="http://www.w3.org/TR/xml-names/"><acronym title="eXtensible Markup Language">XML</acronym> Namespaces,</a> which <em>are</em> lexically scoped.</p>
<p>It is different for those <acronym title="Cascading Style Sheets">CSS</acronym> implementations that provide a <a href="http://www.w3.org/TR/DOM-Level-2-Style/"><acronym title="Cascading Style Sheets">CSS</acronym> Object Model</a> (an <acronym title="Application Programming Interface">API</acronym> for manipulating a style sheet in memory). Those implementations <em>do</em> need to keep track of scope in some way, because adding or removing a line of the style sheet can make a previously redundant definition become meaningful.</p></blockquote>
<p>In order to use JavaScript to solve many of the shortcomings of <acronym title="Cascading Style Sheets">CSS</acronym>, as <em>huge</em> numbers of professional web developers do routinely, we use the very <acronym title="Cascading Style Sheets">CSS</acronym> Object Model whose prior implementation already exists for us to build upon.</p>
<h3><acronym title="Cascading Style Sheets">CSS</acronym> delegation doesn&#8217;t grow the size of the language</h3>
<p>For the sake of argument, let&#8217;s simplify our requirement somewhat so that our somewhat contrived example of design intent is to <em>create a relationship</em> between the <code>MainColumn</code> and the <code>SideBar</code> elements such that they are of equal height. This is more informally known as &#8220;making columns.&#8221;</p>
<p>Here&#8217;s what a natural, hypothetical snippet of <acronym title="Cascading Style Sheets">CSS</acronym> would look like if the language supported delegation features such that it could encode visual relationships.</p>
<pre><code class="css">#SideBar { height: #MainColumn; }</code></pre>
<p>This code theoretically says almost the exact same thing as the JavaScript shown earlier (save for the division, of course); it takes the computed value of the <code>MainColumn</code> element&#8217;s height property and applies that value to the <code>SideBar</code> element&#8217;s height property. In other words, &#8220;The SideBar&#8217;s (element B&#8217;s) height is always the same as the MainColumn&#8217;s (element A&#8217;s).&#8221; (Of course, this is a parse error in reality today.)</p>
<p>This extremely trivial example has some remarkably far-reaching implications, and yet there is really nothing radical about its syntax. Making this a reality significantly expands the capabilities of <acronym title="Cascading Style Sheets">CSS</acronym> without dramatically increasing the size of the language. This capability would not only <a href="http://mattwilcox.net/archive/entry/id/1030/" title="Why you should not use display:table; for layout.">beat the pants off</a> &#8220;<a href="http://www.sitepoint.com/blogs/2008/10/22/everything-you-know-about-css-is-wrong/" title="SitePoint's featuring articles and books about browser support for this."><acronym title="Cascading Style Sheets">CSS</acronym> tables</a>,&#8221; it also potentially obsoletes the arguably <a href="http://ejohn.org/blog/css3-template-layout/" title="Just because John Resig likes it doesn't mean it's good.">misguided efforts of the <acronym title="Cascading Stlye Sheets level 3">CSS3</acronym> Advanced Layout</a> and Grid Positioning modules, too.</p>
<p>We&#8217;ve long since abandoned <code>table</code> layouts because they force us to use presentational markup. That&#8217;s still what &#8220;<acronym title="Cascading Style Sheets">CSS</acronym> tables&#8221; force us to do, too. In other words, with <code>display: table</code>, the <code>SideBar</code> needs to be a child of the <code>MainColumn</code> element or, maybe worse and more likely, a child of a semantically meaningless wrapper element.</p>
<p><acronym title="Cascading Style Sheets">CSS</acronym> positioning was introduced with the promise of freeing us from source-order-dependent styling, without which there is no hope of efficiently abstracting presentation away from structure. Moreover, <strong>abstracting presentation away from structure is the single most important prerequisite needed to improve document reusability and strengthen the semantic Web</strong>. Absolute positioning works, but limitations elsewhere in <acronym title="Cascading Style Sheets">CSS</acronym> mean its use is problematic for many designs, so in practice it doesn&#8217;t gain widespread adoption.</p>
<p>Here&#8217;s a theoretical solution to a two-column and a footer layout using <acronym title="Cascading Style Sheets">CSS</acronym> delegation with this semantic HTML:</p>
<pre><code class="html">&lt;body&gt;
    &lt;div id="MainColumn"&gt;I'm the main column.&lt;/div&gt;
    &lt;div id="SideBar"&gt;I'm the right-hand sidebar.&lt;/div&gt;
    &lt;div id="Legalese"&gt;No one will read me.&lt;/div&gt;
&lt;/body&gt;
</code></pre>
<p>The <acronym title="Cascading Style Sheets">CSS</acronym> would look extremely familiar, possibly like this:</p>
<pre><code class="css">#MainColumn { margin: 0 25% 1em 0; float: left; }
#SideBar { width: 25%; min-height: #MainColumn; }</code></pre>
<p>Using the same <acronym title="HyperText Markup Language">HTML</acronym>, the same solution using the <acronym title="Cascading Stlye Sheets level 3">CSS3</acronym> Advanced Layout module would look something more like this, although to be frank I&#8217;m not certain I fully understand this syntax even after staring at it for months:</p>
<pre><code class="css">body {
    display: "a  b"
             ".  ." /1em
             "c  c"
             75% 25%
}
#MainColumn { position: a; }
#SideBar { position: b; }
#Legalese { position: c; }
</code></pre>
<p>Not only does there seem to me to be far more indirection in this method than there would be using <acronym title="Cascading Style Sheets">CSS</acronym> delegation, there is also an enormous increase to the size of the <acronym title="Cascading Style Sheets">CSS</acronym> language: a new (ASCII-art?!) value to the display property whose syntax is clunky at best. A similar story can be <a href="http://ajaxian.com/archives/w3c-css-grid-positioning" title="Ajaxian reports on a rumor that Internet Explorer 8 will add support for Grid Positioning and shows what that might look like in code.">said of the <acronym title="Cascading Stlye Sheets level 3">CSS3</acronym> Grid Positioning module</a>, which does lots more than just add a new (already complex) <code>gr</code> <acronym title="Cascading Style Sheets">CSS</acronym> unit.</p>
<p>The upshot is that the Advanced Layout and the Grid Positioning modules are doing <em>some</em> of the right things in <em>many</em> of the wrong ways. Both those modules add unnecessary complexity to <acronym title="Cascading Style Sheets">CSS</acronym> without giving designers a natural way to say what they mean. They do more to introduce obfuscation and indirection than simple delegation would, and they aren&#8217;t as broadly capable. Both of them try to solve a specific problem instead of dealing with fundamental deficiencies in the <em>toolset</em> designer&#8217;s have to work with.</p>
<h3>Designers want relationships via delegation, not variables</h3>
<p>Adding delegation such as that I&#8217;ve just shown is a natural, necessary addition to <acronym title="Cascading Style Sheets">CSS</acronym> because it is how designers create visual components&mdash;such as grids&mdash;in their designs. Variables (and constants, and macros, etc.), which simply reuse and modify pre-defined statements aren&#8217;t what designers care about. Adding them <em>will</em> bloat <acronym title="Cascading Style Sheets">CSS</acronym> without adding useful functionality.</p>
<p>&#8220;Okay,&#8221; you may be saying to yourself, &#8220;but delegation is itself a kind of variable, isn&#8217;t it?&#8221; Technically yes, however adding delegation resolves the core deficiency in the <acronym title="Cascading Style Sheets">CSS</acronym> language that designers need to use every day. Yes, it&#8217;s technically a form of variable, but that&#8217;s not how designers think of it. To say that one element&#8217;s visual properties is like another makes a variable only by creating a logical and visually appropriate mapping from the first element&#8217;s property to the second independent of markup, thereby avoiding indirection in the form of a variable name or other unfamiliar symbol.</p>
<p>Delegation like this doesn&#8217;t require the addition of anything other than what already exists in <acronym title="Cascading Style Sheets">CSS</acronym>. Class names and ID values are identifiers whose indirection people <em>already</em> have to deal with. Using them for delegation (to reference another element&#8217;s <em>style</em>) doesn&#8217;t increase the cognitive load any more than using them to reference <em><acronym title="HyperText Markup Language">HTML</acronym> elements</em> does. Though untested, the cognitive load might actually be even less since the <acronym title="Cascading Style Sheets">CSS</acronym> delegation&#8217;s references could be in the same (style sheet) file.</p>
<p>Moreover, delegation will increase the likelihood of document reusability by enabling style sheets to be more self-describing, more self-referential, in a similar way as good markup is. It satisfies a very fundamental need that designers have to define graphical relationships between elements. At the same time, it does so in a way that is natural to both their way of thinking and beneficial to the separation of concerns principle on which the &#8220;web stack&#8221; (the trifecta of <acronym title="HyperText Markup Language">HTML</acronym>, <acronym title="Cascading Style Sheets">CSS</acronym>, and JavaScript) is based.</p>
]]></content:encoded>
			<wfw:commentRss>http://maymay.net/blog/2008/12/14/why-css-needs-delegation-capabilities-and-not-variables/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>WP-Oomph: Add the Oomph Microformat Overlay to your WordPress blog</title>
		<link>http://maymay.net/blog/2008/11/11/wp-oomph-add-the-oomph-microformat-overlay-to-your-wordpress-blog/</link>
		<comments>http://maymay.net/blog/2008/11/11/wp-oomph-add-the-oomph-microformat-overlay-to-your-wordpress-blog/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 12:44:02 +0000</pubDate>
		<dc:creator>Meitar</dc:creator>
				<category><![CDATA[Crosspost]]></category>
		<category><![CDATA[Tech/Computing]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[Writing and blogging]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://maymay.net/blog/?p=767</guid>
		<description><![CDATA[I&#8217;ve just developed a completely idiotic (by which I mean brain-dead simple) plugin for WordPress that will add the Oomph Microformat Toolkit to all WordPress-generated pages. If you use a WordPress template that encodes your data with valid microformats anywhere on your page, this means when you install the plugin your users will see the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just developed a completely idiotic (by which I mean brain-dead simple) plugin for WordPress that will add the <a href="http://visitmix.com/Lab/Oomph">Oomph Microformat Toolkit</a> to all <a href="//wordpress.org/">WordPress</a>-generated pages. If you use <a href="http://wordpress.org/extend/themes/tags/microformats" title="Check out the various WordPress themes that support microformats out of the box!">a WordPress template that encodes your data with valid microformats</a> anywhere on your page, this means when you install the plugin your users will see the Oomph microformat overlay and will be able to instantly export this encoded data.</p>
<p>This page is a live example, so if you&#8217;re using a JavaScript-enabled browser you should see a microformat icon on the top-left of the viewport that is pulling data from (at least) my &#8220;The bio&#8221; section in my sidebar. Go ahead, click it. I&#8217;ll wait.</p>
<p>Pretty nifty, isn&#8217;t it? Naturally, all of the credit for this functionality belongs to the Oomph team, not me. If you want to learn how to add <em>microformats</em> to your blog, I&#8217;d recommend <a href="http://www.ablognotlimited.com/articles/getting-semantic-with-microformats-part-1-rel/">Emily Lewis&#8217;s latest series of blog posts, <cite>Getting Semantic with Microformats</cite></a>. If you want to learn how to easily add the Oomph microformat overlay to your WordPress blog, read on.</p>
<h3>The backstory</h3>
<p>After <a href="http://arstechnica.com/news.ars/post/20081006-ask-com-rearms-with-semantics-rich-media-in-search-war.html">Ask.com&#8217;s announcement that they are adding semantic search capabilities to their search engine</a>, there&#8217;s little doubt in anyone&#8217;s mind that the semantic web is the future&#8217;s web. As far as I know, Google has yet to reveal similar initiatives but they are clearly in the know as well. Mark Birbeck, one of the smart folks who <a href="http://www.w3.org/TR/xhtml-rdfa-primer/">devised <acronym title="Resource Description Framework attributes">RDFa</acronym></a>, recently gave <a href="http://youtube.com/watch?v=mxE3FeOyS-E">a Google Tech Talk</a> that made the point that semantics are the next big thing in the Internet search engine game.</p>
<p>However, for semantic web <em>stuff</em> to really take hold, two things need to happen first. I think these things need to look like this:</p>
<ol>
<li>Developers must create tools, plugins, and other software that makes it possible for the wider community to create compelling, interoperable applications that support semantic encoding. Thankfully, we are already at this point, with toolkits like the <a href="http://visitmix.com/Lab/Oomph">Oomph Microformat toolkit coming out of MixLabs</a>.</li>
<li>Armed with these software tools, <acronym title="Content Management System">CMS</acronym> and other publishing platforms need to adopt semantics as first-class features of their platforms, and build interfaces that end-users can make immediate use of. This is where we still need to go, though some platforms like <a href="http://www.sitepoint.com/blogs/2008/03/05/drupal-7-a-living-breathing-semantic-web-citizen/">Drupal have begun to pave the way for this</a>.</li>
</ol>
<p>Drupal 7 will be fantastic, I&#8217;m sure, but we live in the here and now. I saw the Oomph microformat overlay on Emily Lewis&#8217;s blog and was more convinced than ever that if everyone—programmers and laymen alike—had easy access to these tools, they&#8217;d simply be pounding down the doors to use them. So that&#8217;s why I sat down and wrote a completely idiotic plugin for WordPress that makes it completely, utterly, brain-dead simple for anyone with <a href="http://wordpress.org/extend/themes/tags/microformats" title="Check out the various WordPress themes that support microformats out of the box!">a microformats-enabled WordPress theme</a> to add the overlay to their site.</p>
<h3 id="wp-oomph-download-the-plugin">WP-Oomph: Download the plugin</h3>
<p>My request to add the plugin to the <a href="//wordpress.org/extend/plugins/">WordPress.org Plugin Directory</a> has <del datetime="2008-11-12T14:45:28+00:00">not yet</del> been completed<del datetime="2008-11-12T14:45:28+00:00">, so in the mean time I&#8217;m hosting the plugin right here. (When/if it&#8217;s accepted it&#8217;ll end up being</del> <ins datetime="2008-11-12T14:45:28+00:00">The plugin is</ins> <a href="//wordpress.org/extend/plugins/wp-oomph/">hosted on that site permanently</a>.<del datetime="2008-11-12T14:45:28+00:00">)</del></p>
<p>The latest version is: <strong class="latest-version">0.1.1</strong>.</p>
<p>Download the <a href="http://wordpress.org/extend/plugins/wp-oomph/">latest version of the WP-Oomph plugin</a>.</p>
<p>Thanks to the Oomph team&#8217;s work, the plugin is a ridiculous 1-liner (for now) that uses <a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script">WordPress&#8217;s <code>wp_enqueue_script()</code> function</a> to call both its included <a href="//jquery.com/">jQuery</a> library and the Oomph library itself. And, well, that&#8217;s it. I told you it was idiotic, but at least now the whole process of microformat-enabling a WordPress blog is 100% point-and-click.</p>
<h3 id="wp-oomph-frequently-asked-questions">WP-Oomph: Frequently Asked Questions</h3>
<dl>
<dt>I installed and activated the plugin, but nothing is different. How come?</dt>
<dd>
<p>First, view the source of your WordPres-generated page and make sure you see a line similar to the following near the top:</p>
<pre class="html" style="white-space:normal;">&lt;script type='text/javascript' src='http://visitmix.com/labs/oomph/1.0/Client/oomph.min.js?ver=1.0'&gt;&lt;/script&gt;</pre>
<p>If you see that but there&#8217;s still nothing different about your page, then you probably don&#8217;t have any (valid) microformats. You might consider <a href="http://wordpress.org/extend/themes/tags/microformats" title="Check out the various WordPress themes that support microformats out of the box!">switching to a WordPress theme with built-in microformat support</a>, or modifying your theme&#8217;s code to add some of your own. You can <a href="http://microformats.org/wiki/wordpress">learn more about the support WordPress offers for microformats in the Microformat wiki</a>.</p>
</dd>
<dt>The plugin does let me do <var>X</var> thing that I want to do! Why not?</dt>
<dd>
<p>Most likely because I haven&#8217;t taken <var>X thing</var> into account. Sorry, I&#8217;m not a psychic (as much as I wish I were). However, you&#8217;re encouraged to leave a comment on this post or to contact me elsewhere to request that I add capabilities to the plugin. Better yet, if you&#8217;re comfortable doing so, send me a patch.</p>
</dd>
</dl>
]]></content:encoded>
			<wfw:commentRss>http://maymay.net/blog/2008/11/11/wp-oomph-add-the-oomph-microformat-overlay-to-your-wordpress-blog/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>How web designers can do their own HTML/CSS: Read Foundation Website Creation</title>
		<link>http://maymay.net/blog/2008/07/21/how-web-designers-can-do-their-own-htmlcss/</link>
		<comments>http://maymay.net/blog/2008/07/21/how-web-designers-can-do-their-own-htmlcss/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 14:22:19 +0000</pubDate>
		<dc:creator>Meitar</dc:creator>
				<category><![CDATA[Crosspost]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Hypertext Copywriting]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Maymay Media]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech/Computing]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Accessibility]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[Writing and blogging]]></category>

		<guid isPermaLink="false">http://maymay.net/blog/?p=476</guid>
		<description><![CDATA[Last month, 37signals published a short but sweet post about why web designers should do the HTML/CSS implementations for their own designs. The bottom line is, as we&#8217;ve all been saying for a long time now, that the Web is not the same kind of medium as other mediums like print. It is a fundamentally [...]]]></description>
			<content:encoded><![CDATA[<p>Last month, 37signals published a short but sweet post about why <a href="//www.37signals.com/svn/posts/1066-web-designers-should-do-their-own-htmlcss">web designers should do the <acronym title="HyperText Markup Language">HTML</acronym>/CSS implementations for their own designs</a>. The bottom line is, as we&#8217;ve all been saying for a long time now, that the Web is not the same kind of medium as other mediums like print. It is a fundamentally different kind of canvas than most web designers are used to using. As a result, if you as a web designer are not intimately familiar with it, you&#8217;re not going to do great work.</p>
<blockquote cite="//www.37signals.com/svn/posts/1066-web-designers-should-do-their-own-htmlcss"><p>designing for the web is a lot less about making something dazzle and a lot more about making it work. The design decisions that matter pertain directly to the constraints of the materials. What form elements to use. What font sizes. What composition. What flow. Those decisions are poorly made at an arm’s length.</p>
<p>I’ve worked with many web designers in the past who only did abstractions and then handed over pictures to be chopped and implemented by “<acronym title="HyperText Markup Language">HTML</acronym> monkeys”. It never really gelled well. The things that got strong attention were all the things that Photoshop did well. Imagery, curvy lines, and the frame. All the <em>around</em> stuff, never the <em>it</em> stuff.</p></blockquote>
<p>In other words, to do great web design you have to design <em>in</em> the Web, not in some other medium <em>for</em> the Web. I mean, serious magazine firm employs designers who don&#8217;t understand how to work with page layout programs like InDesign. Why, then, do so many web design agencies employ designers who don&#8217;t know how to work with web technologies, or even how to use programs like Dreamweaver? It doesn&#8217;t really make any sense, and it&#8217;s no wonder that the resulting implementation is rarely top-notch work.</p>
<p>But if you&#8217;re a graphic designer who doesn&#8217;t know much about Web technologies, what are you to do? Well, as a first step, I think you should pick up my new book, <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FFoundation-Website-Creation-XHTML-JavaScript%2Fdp%2F1430209917%2F&#038;tag=maymaydotnet-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Foundation Website Creation</a><img src="http://www.assoc-amazon.com/e/ir?t=maymaydotnet-20&amp;l=ur2&amp;o=1" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />. It&#8217;s available from all good booksellers (and probably some crappy ones) as of today. The book is targeted towards all manner of web professionals, including graphic designers and website producers, who want to learn more about what it takes to actually implement a site.</p>
<p>If I do say so myself, the chapters on <acronym title="eXtensible HyperText Markup Language; HTML reformulated as XML">XHTML</acronym> and <acronym title="Cascading Style Sheets">CSS</acronym> are exceptionally thorough. The book <em>doesn&#8217;t</em> try to turn you into an exceptional programmer. Instead, it will explain the foundational concepts you need to know to <em>understand how <acronym title="eXtensible HyperText Markup Language; HTML reformulated as XML">XHTML</acronym> and <acronym title="Cascading Style Sheets">CSS</acronym> actually work</em>, and in so doing will enable you to use the tools you already know to solve problems and get things done.</p>
<p>I think this book will be an excellent starting point for lots of designers and other web professionals. However, it is not going to take you from zero to hero—no book can. That&#8217;s why I recommend that, after you read <cite>Foundation Website Creation</cite> and have a solid grasp of what the technology can do for you and how it actually does it, you next take a look at these excellent books:</p>
<ul>
<li><a href="http://domscripting.com/book/"><acronym title="Document Object Model">DOM</acronym> Scripting by Jeremy Keith</a> — if you&#8217;re a designer that needs to add a behavioral layer with JavaScript and Ajax to your pages, you need to read this book next.</li>
<li><a href="http://www.amazon.com/Mastering-Dreamweaver-Voices-That-Matter/dp/0321508971">Mastering <acronym title="Cascading Style Sheets">CSS</acronym> with Dreamweaver CS3</a> &#8211; if you&#8217;re familiar with Dreamweaver and want to keep using it to create standards-based web sites, then I recommend you follow <cite>Foundation Website Creation</cite> with this book by <a href="//w3conversions.com/">Stephanie Sullivan</a> and Greg Rewis to take your Dreamweaver skills to the next level.</li>
</ul>
<p>As always, most of all, have fun. Because if you&#8217;re not having fun, you&#8217;re not going to make good web sites no matter what you know.</p>
<p><strong>Note:</strong> As of this writing, the book listing on Amazon still publishes the wrong author list, which is very frustrating but out of my hands. At least the image of our book&#8217;s front cover lists the correct authors.</p>
]]></content:encoded>
			<wfw:commentRss>http://maymay.net/blog/2008/07/21/how-web-designers-can-do-their-own-htmlcss/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>I&#8217;m getting a book published and it&#8217;s called Foundation Website Creation</title>
		<link>http://maymay.net/blog/2008/05/19/im-getting-a-book-published-and-its-called-foundation-web-standards/</link>
		<comments>http://maymay.net/blog/2008/05/19/im-getting-a-book-published-and-its-called-foundation-web-standards/#comments</comments>
		<pubDate>Mon, 19 May 2008 13:50:36 +0000</pubDate>
		<dc:creator>Meitar</dc:creator>
				<category><![CDATA[Crosspost]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Maybe Maimed]]></category>
		<category><![CDATA[Maymay Media]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tech/Computing]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Accessibility]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[Writing and blogging]]></category>

		<guid isPermaLink="false">http://maymay.net/blog/?p=436</guid>
		<description><![CDATA[For those who have been wondering what is keeping me so busy these days, the answer is that I&#8217;m working on the final stages of a book that is getting published as one of three co-authors. Not only am contributing three chapters (the technical chapters on (X)HTML and CSS, specifically), but I am also technically [...]]]></description>
			<content:encoded><![CDATA[<p>For those who have been wondering what is keeping me so busy these days, the answer is that I&#8217;m working on the final stages of a book that is getting published as one of three co-authors. Not only am contributing three chapters (the technical chapters on (X)<acronym title="HyperText Markup Language">HTML</acronym> and <acronym title="Cascading Style Sheets">CSS</acronym>, specifically), but I am also technically reviewing the entire book.</p>
<p>My co-authors on the book, called <a href="//www.friendsofed.com/book.html?isbn=9781430209911"><cite><del datetime="2008-06-15T10:43:08+00:00">Foundation Web Standards</del> <ins datetime="2008-06-15T10:43:08+00:00">Foundation Website Creation</ins></cite></a> (you can <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FFoundation-Website-Creation-XHTML-JavaScript%2Fdp%2F1430209917%2F&#038;tag=maymaydotnet-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325" title="Buy on Amazon.com.">pre-order now</a>) and published by <a href="//friendsofed.com/">Friends of ED</a>, an <a href="//apress.com/">Apress</a> company, are <a href="//industryinteractive.net/">Jonathan Lane of Industry Interactive, Inc.</a> and <a href="//www.sanbeiji.com/">Joe Lewis, who blogs at Sanbeiji.com</a>. I&#8217;m not going to say much more until after the book is released in late July.</p>
<p>For the eager, here&#8217;s the description of the book posted on the Friends of ED website:</p>
<blockquote cite="//www.friendsofed.com/book.html?isbn=9781430209911"><p>Foundation Website Creation explores the process of constructing a web site from start to finish. There is more to the process than just knowing <acronym title="HyperText Markup Language">HTML</acronym>! Designers and developers must follow a proper process to flush out goals and objectives and determine requirements both prior to, and during project development.</p>
<p>Large Web projects are rarely completed by a single person. Producers, project managers, designers, developers, writers, and editors all play critical parts in a project&#8217;s evolution. This book provides an overview of the entire process, and also shows project development from the perspective of these different roles. It introduces the key concepts and duties performed by every member of such a team, and gives you the skills necessary to tackle projects like a professional.</p></blockquote>
<p>It&#8217;s quite exciting getting a book out, and it&#8217;s quite a bit more work than I&#8217;d have ever originally thought. That being said, it&#8217;s extremely rewarding. There&#8217;s a lot more work I need to do on it between now and the time it gets released to publishing, so, well…back to work I go.</p>
<p>Now you all know where I&#8217;ve been spending my time writing.</p>
]]></content:encoded>
			<wfw:commentRss>http://maymay.net/blog/2008/05/19/im-getting-a-book-published-and-its-called-foundation-web-standards/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>New Amazon Guide: So You&#8217;d Like To Become a Front-End Web Design Guru</title>
		<link>http://maymay.net/blog/2005/12/23/amazon-guide-become-a-web-design-guru/</link>
		<comments>http://maymay.net/blog/2005/12/23/amazon-guide-become-a-web-design-guru/#comments</comments>
		<pubDate>Fri, 23 Dec 2005 16:13:34 +0000</pubDate>
		<dc:creator>Meitar</dc:creator>
				<category><![CDATA[Business & E-Commerce]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Accessibility]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://maymay.net/blog/?p=291</guid>
		<description><![CDATA[I've made what I think is a rather nice Amazon Guide. Laugh if you must, but I wanted to see what creating one would be like. Naturally, I decided to write a brief guide to becoming a front-end web design guru.]]></description>
			<content:encoded><![CDATA[<p>With a bit of free time over breakfast, I was fiddling with my personal site and looking over my bookshelf. I decided to make an Amazon guide to &ldquo;becoming a front-end web design guru&rdquo; based on many of the books in my ever-expanding collection. So without further ado, here it is, my guide to becoming a front-end web-design guru, featuring the most varied and useful set of 20 books I have ever read:</p>
<h3 style="clear:left;">The Grim Truth</h3>
<p>Let&#8217;s face it. These days, any Joe-shmo with Microsoft FrontPage can call himself a web developer or designer. But web surfers can tell the difference between a professionally designed site and a site designed by your dentist&#8217;s brother&#8217;s roommate&#8217;s best friend&#8217;s boyfriend. To be professional, you have to design with web standards in mind, focusing on usability and accessibility. And it has to look good &mdash; really good.</p>
<h3 style="clear:left;">The Tools You&#8217;ll Use</h3>
<p>First, you&#8217;re going to need to stock your toolbox. Start with the basics. Learn how to manipulate page layouts with (X)<acronym title="HyperText Markup Language">HTML</acronym> and <acronym title="Cascading Style Sheets">CSS</acronym> by reading <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=073571245X%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/073571245X%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">Eric Meyer on CSS: Mastering the Language of Web Design</a>. Occasionally, you&#8217;ll need a dash of <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0735711674%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0735711674%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">JavaScript Design</a>. Finally, learn what works best by <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=156205810X%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/156205810X%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">Designing Web Usability : The Practice of Simplicity</a>.</p>
<ul>
<li style="list-style:none;float:left;margin: .5em;padding:.5em;border:1px solid silver;"><a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=073571245X%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/073571245X%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon"><img src="http://images.amazon.com/images/P/073571245X.01._SCMZZZZZZZ_.jpg" alt="Eric Meyer on CSS: Mastering the Language of Web Design" /></a></li>
<li style="list-style:none;float:left;margin: .5em;padding:.5em;border:1px solid silver;"><a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=156205810X%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/156205810X%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon"><img src="http://images.amazon.com/images/P/156205810X.01.IN07._SCMZZZZZZZ_.jpg" alt="Designing Web Usability : The Practice of Simplicity" /></a></li>
</ul>
<h3 style="clear:left;">Building It Right</h3>
<p><a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0321303474%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0321303474%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">The Zen of <acronym title="Cascading Style Sheets">CSS</acronym> Design : Visual Enlightenment for the Web (Voices That Matter)</a> is possible for you! Building professional web sites means <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=073571150X%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/073571150X%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">Building Accessible Websites (With <acronym title="Compact Disc">CD</acronym>-<acronym title="Read Only Memory">ROM</acronym>)</a>. No matter how good your design may be, it won&#8217;t mean anything if it doesn&#8217;t load quickly, so don&#8217;t forget to always <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0735713243%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0735713243%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">Speed Up Your Site: Web Site Optimization</a>. Then put it all together to create <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0321346939%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0321346939%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">Bulletproof Web Design : Improving flexibility and protecting against worst-case scenarios with <acronym title="eXtensible HyperText Markup Language; HTML reformulated as XML">XHTML</acronym> and <acronym title="Cascading Style Sheets">CSS</acronym></a>. But you&#8217;re not done yet! Help people find your site by giving it <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0735712565%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0735712565%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">Search Engine Visibility</a>.</p>
<ul>
<li style="list-style:none;float:left;margin: .5em;padding:.5em;border:1px solid silver;"><a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=073571150X%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/073571150X%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon"><img src="http://images.amazon.com/images/P/073571150X.01._SCMZZZZZZZ_.jpg" alt="Building Accessible Websites (With CD-ROM)" /></a></li>
<li style="list-style:none;float:left;margin: .5em;padding:.5em;border:1px solid silver;"><a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0735713243%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0735713243%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon"><img src="http://images.amazon.com/images/P/0735713243.01._SCMZZZZZZZ_.jpg" alt="Speed Up Your Site: Web Site Optimization" /></a></li>
<li style="list-style:none;float:left;margin: .5em;padding:.5em;border:1px solid silver;"><a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0321303474%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0321303474%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon"><img src="http://images.amazon.com/images/P/0321303474.01._SCMZZZZZZZ_.jpg" alt="The Zen of CSS Design : Visual Enlightenment for the Web (Voices That Matter)" /></a></li>
</ul>
<h3 style="clear:left;">Really Good References</h3>
<p>While you&#8217;re doing all these things, don&#8217;t be afraid to let curiosity get the better of you. Expand upon the projects in the previous books by doing things differently, doing things your own way. As you tinker, you&#8217;ll come across situations in which you don&#8217;t know how to do something. For those situations, use the following must-have references to quickly look up information about a particular technology.</p>
<p>For (X)HTML: <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=059600382X%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/059600382X%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon"><acronym title="HyperText Markup Language">HTML</acronym> &#038; XHTML: The Definitive Guide, Fifth Edition</a><br />
For CSS: <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0596005253%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0596005253%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">Cascading Style Sheets: The Definitive Guide, 2nd Edition</a> and <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0596005768%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0596005768%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon"><acronym title="Cascading Style Sheets">CSS</acronym> Cookbook</a><br />
For JavaScript: <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=1565923928%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/1565923928%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">JavaScript Definitive Guide</a></p>
<ul>
<li style="list-style:none;float:left;margin: .5em;padding:.5em;border:1px solid silver;"><a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=059600382X%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/059600382X%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon"><img src="http://images.amazon.com/images/P/059600382X.01._SCMZZZZZZZ_.jpg" alt="HTML &#038; XHTML: The Definitive Guide, Fifth Edition" /></a></li>
<li style="list-style:none;float:left;margin: .5em;padding:.5em;border:1px solid silver;"><a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0596005253%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0596005253%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon"><img src="http://images.amazon.com/images/P/0596005253.01._SCMZZZZZZZ_.jpg" alt="Cascading Style Sheets: The Definitive Guide, 2nd Edition" /></a></li>
<li style="list-style:none;float:left;margin: .5em;padding:.5em;border:1px solid silver;"><a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0596005768%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0596005768%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon"><img src="http://images.amazon.com/images/P/0596005768.01._SCMZZZZZZZ_.jpg" alt="CSS Cookbook" /></a></li>
<li style="list-style:none;float:left;margin: .5em;padding:.5em;border:1px solid silver;"><a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=1565923928%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/1565923928%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon"><img src="http://images.amazon.com/images/P/1565923928.01._SCMZZZZZZZ_.jpg" alt="JavaScript Definitive Guide" /></a></li>
</ul>
<h3 style="clear:left;">Helpful Bonus Books</h3>
<p>Read <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0975240269%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0975240269%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">The JavaScript Anthology : 101 Essential Tips, Tricks &#038; Hacks</a> to learn even more about what you can do with JavaScript and how to solve real-world problems with DHTML. Get more usability insight from <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=073571102X%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/073571102X%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">Homepage Usability: 50 Websites Deconstructed</a> and <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0321344758%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0321344758%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">Don&#8217;t Make Me Think : A Common Sense Approach to Web Usability (2nd Edition)</a>. Arm yourself with an arsenal of <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=1590593812%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/1590593812%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">Web Standards Solutions: The Markup and Style Handbook (Pioneering Series)</a> to take on <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=1581153163%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/1581153163%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">The Real Business of Web Design</a>.</p>
<ul>
<li style="list-style:none;float:left;margin: .5em;padding:.5em;border:1px solid silver;"><a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=1590593812%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/1590593812%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon"><img src="http://ec1.images-amazon.com/images/P/1590593812.01._SCMZZZZZZZ_.jpg" alt="Web Standards Solutions: The Markup and Style Handbook (Pioneering Series)" /></a></li>
<li style="list-style:none;float:left;margin: .5em;padding:.5em;border:1px solid silver;"><a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0321344758%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0321344758%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon"><img src="http://images.amazon.com/images/P/0321344758.01._SCMZZZZZZZ_.jpg" alt="Don\'t Make Me Think : A Common Sense Approach to Web Usability (2nd Edition)" /></a></li>
</ul>
<p>Learn all the <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=1568303823%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/1568303823%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">Secrets of Successful Web Sites</a> if you&#8217;re involved with larger-scale project management, or if you&#8217;re of the entrepeneurial bent, find out <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0762727896%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0762727896%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">How to Start a Home-Based Web Design Business, 2nd (Home-Based Business Series)</a> or <a href="http://www.amazon.com/exec/obidos/redirect?tag=maymaydotnet-20%26link_code=xm2%26camp=2025%26creative=165953%26path=http://www.amazon.com/gp/redirect.html%253fASIN=0814471390%2526tag=maymaydotnet-20%2526lcode=xm2%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0814471390%25253FSubscriptionId=0EMV44A9A5YT1RVDGZ82" title="View product details at Amazon">How to Be a Successful Internet Consultant</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://maymay.net/blog/2005/12/23/amazon-guide-become-a-web-design-guru/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Browser Developer Insight and Nightmares</title>
		<link>http://maymay.net/blog/2005/01/10/browser-developer-insight/</link>
		<comments>http://maymay.net/blog/2005/01/10/browser-developer-insight/#comments</comments>
		<pubDate>Mon, 10 Jan 2005 12:02:10 +0000</pubDate>
		<dc:creator>Meitar</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">/?p=161</guid>
		<description><![CDATA[Dave Hyatt, a developer of Apple&#8217;s Safari web browser offered some amazingly enlightening insight into the nightmares of browser developers the other day. The only thing I can think to say is: Dave, thanks for trying. This is a great example of how IE&#8216;s inconsistent rendering behavior has long-lasting negative effects on the adoption of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://weblogs.mozillazine.org/hyatt/">Dave Hyatt</a>, a developer of <a href="http://apple.com/safari/">Apple&#8217;s Safari web browser</a> offered some amazingly enlightening insight into the <a href="http://weblogs.mozillazine.org/hyatt/archives/2005_01.html#007252">nightmares of browser developers</a> the other day. The only thing I can think to say is: Dave, thanks for trying.</p>
<p>This is a great example of how <acronym title="Internet Explorer">IE</acronym>&#8216;s inconsistent rendering behavior has long-lasting negative effects on the adoption of <acronym title="Cascading Style Sheets">CSS</acronym> not only by web page authors, but web <em>browser</em> authors. As Dave himself says,</p>
<blockquote cite="http://weblogs.mozillazine.org/hyatt/archives/2005_01.html#007252" title="Dave Hyatt remarks on Internet Explorer's buggy float rendering."><p>So now I really have no choice. This is an example of where the <acronym title="Cascading Style Sheets level 2">CSS2</acronym> standard simply can&#8217;t be followed because buggy layout engines have set a bad precedent that the rest of us have no choice but to follow.</p>
<p>It&#8217;s a shame that Gecko does not do the right thing in strict mode at least, but I suppose they had no choice in the matter either.</p>
</blockquote>
<p>This is reminiscent of back when Opera was beginning to look more and more like Internet Explorer, but at least it&#8217;s not a bug this time.</p>
]]></content:encoded>
			<wfw:commentRss>http://maymay.net/blog/2005/01/10/browser-developer-insight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Observations on the CSS3 Box-Sizing Property and How Designers Use Style Sheets</title>
		<link>http://maymay.net/blog/2004/10/28/observations-on-the-css3-box-sizing-property-and-how-designers-use-style-sheets/</link>
		<comments>http://maymay.net/blog/2004/10/28/observations-on-the-css3-box-sizing-property-and-how-designers-use-style-sheets/#comments</comments>
		<pubDate>Thu, 28 Oct 2004 19:16:49 +0000</pubDate>
		<dc:creator>Meitar</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">/?p=91</guid>
		<description><![CDATA[Recently, I became aware of CSS3&#8216;s box-sizing property. This property can have two values, content-box and border-box. The content-box value is what we&#8217;re all used to. It causes the selected box&#8217;s dimensions to be sized by setting the specified width of the box equal to the width of the content area of the box. Any [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I became aware of <acronym title="Cascading Stlye Sheets level 3">CSS3</acronym>&#8216;s <code>box-sizing</code> property. This property can have two values, <code>content-box</code> and <code>border-box</code>. The <code>content-box</code> value is what we&#8217;re all used to. It causes the selected box&#8217;s dimensions to be sized by setting the specified <code>width</code> of the box equal to the width of the content area of the box. Any horizontal borders or padding that the box has is then <em>added</em> to the content area&#8217;s width. The <code>border-box</code> value sets the selected box&#8217;s <code>width</code> equal to the content area <em>and</em> any horizontal borders and padding, effectively subtracting the width of the padding and border from the declared <code>width</code> in order to calculate the content area&#8217;s width.</p>
<p>In other words, the <code>border-box</code> value to the <code>box-sizing</code> property makes the selected box use Internet Explorer&#8217;s non-standard box model. At least, it was non-standard until it became part of the <acronym title="Cascading Stlye Sheets level 3">CSS3</acronym> spec. The spec even notes this itself, saying <cite>&ldquo;This is the behavior of width and height as commonly implemented by legacy <acronym title="HyperText Markup Language">HTML</acronym> user agents for replaced elements and input elements.&rdquo;</cite></p>
<p>This is somewhat annoying, because this means that rather than fix their &ldquo;Web browser,&rdquo; Microsoft can now say that their browser supports this property of <acronym title="Cascading Style Sheets">CSS</acronym>. In the end however, I do see the necessity of the property for compatibility reasons, as much as that necessity (caused by one browser vendor&#8217;s lack of support for Web standards) bothers me.</p>
<p>The most direct application of this technique comes in the form of making two child elements who have borders and/or padding fit precisely within one larger parent element whose width is flexible. For example, making floated, columnar layouts.</p>
<p>So while taking all this in I took some time to familiarize myself as best I could with Firefox&#8217;s implementation, the <code>-moz-box-sizing</code> property, and its effects. Some of my observations:</p>
<ol>
<li>
<p>Most interesting uses for <em>three</em> column liquid layouts (or more). Two column layouts can use a (more complicated) balancing of <code>float: left</code> and <code>float: right</code> to achieve a similar effect in a liquid layout, though a small, variable amount of space between columns is nearly unavoidable.</p>
<p>Also, experienced designers usually keep a certain degree of whitespace in their layouts, making such tightly fitted floats largely unnecessary and/or impractical implementations for certain designs. (I.e., positioning would be a more appropriate solution.)</p>
</li>
<li>
<p>Border-boxes offer no help for linking the height of a box to the height of its neighbor. Considering this is the biggest failing of <acronym title="Cascading Style Sheets">CSS</acronym>-based columnar layouts to date, I would stick with an accessible table where absolutely necessary, which <em>can be and often is sized just like a border-box</em>.</p>
</li>
<li>
<p>When confronted with left-floated boxes such as in the case of a columnar layout, <acronym title="Internet Explorer">IE</acronym>/Win versions that use the <code>border-box</code> method of calculating <code>width</code> and <code>height</code> will drop a tightly-fitted floated box below its neighbor on a window resize. This creates either a trippy experience or cause for frustration depending on your mood. Considering this property is at least partially intended to help <acronym title="Internet Explorer">IE</acronym>/Win, that&#8217;s quite an embarassing thing to have happen, methinks.</p>
</li>
<li>
<p>All in all, I&#8217;m still not convinced of the <em>necessity</em> of this property, except to support <acronym title="Internet Explorer">IE</acronym>. While it can certainly be a useful &ldquo;option&rdquo; when attempting to create (arguably simplistic) column layouts using strictly semantic markup and <acronym title="Cascading Style Sheets">CSS</acronym>, tables are still going to be necessary in some designs. In the situations where they are not, a combination of existing techniques can still be used to achieve any desired effect.</p>
</li>
</ol>
<p>Furthermore, this certainly doesn&#8217;t help make <acronym title="Cascading Style Sheets">CSS</acronym> a more approachable topic for Web designers who are new to the technology. The single largest obstacle to <acronym title="Cascading Style Sheets">CSS</acronym>&#8216;s widespread adoption are the many various and often extreme browser bugs and quirks present in the majority of browsers. When a <acronym title="Cascading Style Sheets">CSS</acronym> newbie begins writing some stylesheets, they are greeted with horrendous results thanks to these misbehaving browsers. I know of several Web design projects that have begun using stylehseets, only to abandon all but their most basic capability due to frustration on the designer&#8217;s part. Some <acronym title="Cascading Style Sheets">CSS</acronym> concepts are not easy to grasp for beginners, the box model being one of them, and I am not fond of the idea of presenting designers with yet more differences in the way their pages can be rendered.</p>
<p>Moreover, most <acronym title="Cascading Style Sheets">CSS</acronym> beginners I have encountered use a <acronym title="Graphical User Interface">GUI</acronym> such as Dreamweaver or GoLive to create their stylesheets. In this case, a question arises for the developers of these interfaces: how do I visually show which kind of box-sizing is being used for this particular box on the screen? Do I show a little icon in the corner of the box&#8217;s display? Do I hide it in a dialog box?</p>
<p>In my opinion, these interfaces are not very good for creating style sheets. There is currently no application whith which you can actually draw, with your mouse, a rectangle of padding onto an element. You have to type a number into the &ldquo;Padding&rdquo; input box and then select the unit you&#8217;d like to use from a drop down menu. Designers do not think this way. Coders and programmers do. But coders and programmers aren&#8217;t the ones who really need <acronym title="Cascading Style Sheets">CSS</acronym>. Designers do. And they need their tools and their web browsers to speak their own language to them.</p>
]]></content:encoded>
			<wfw:commentRss>http://maymay.net/blog/2004/10/28/observations-on-the-css3-box-sizing-property-and-how-designers-use-style-sheets/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fun with Character and Entity References and Why You Should Use Them</title>
		<link>http://maymay.net/blog/2004/09/17/fun-with-character-and-entity-references-and-why-you-should-use-them/</link>
		<comments>http://maymay.net/blog/2004/09/17/fun-with-character-and-entity-references-and-why-you-should-use-them/#comments</comments>
		<pubDate>Fri, 17 Sep 2004 10:16:33 +0000</pubDate>
		<dc:creator>Meitar</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">/?p=75</guid>
		<description><![CDATA[Character references? Entity references? Am I referencing some obscure geek joke? No, I&#8217;m actually talking about a often overlooked aspect of the push towards a more semantic Web. What are Character and Entity References? First, let me explain what character and entity references are actually referencing. Written languages the world over employ various symbols to [...]]]></description>
			<content:encoded><![CDATA[<p>Character references? Entity references? Am I referencing some obscure geek joke? No, I&#8217;m actually talking about a often overlooked aspect of the push towards a more semantic Web.</p>
<h3>What are Character and Entity References?</h3>
<p>First, let me explain what character and entity references are actually referencing.</p>
<p>Written languages the world over employ various symbols to denote different effects of verbal communication. In addition to these punctuation marks, various symbols are used to describe relationships between parts of a written phrase. One very common example of this is the dash to denote a range of numbers. For example, the dash between the years in the sentence &ldquo;George Orwell (1903&ndash;1950) was a British author,&rdquo; denotes a range of years in which George Orwell lived.</p>
<p>Many times, this is written with a simple dash. A dash looks like this, <code>-</code> and its purpose is to break apart long words at the end of a line in print or to connect two words to form a single one. The dash used in the above lifespan example is not a regular dash. It is called an n-dash, named for its length, about equal to the width of the lowercase letter N.</p>
<p>The other common dash seen in prose is the dash used to break the flow of a sentence. This is called an m-dash, which looks like this <code>&mdash;</code>, and is named for its width (approximately as wide as the lowercase letter M). I&#8217;ve often seen this written online as two dashes like this: <code>--</code>. You probably have, too.</p>
<p>Ordinarily, word processors like <a href="http://en.wikipedia.org/wiki/Microsoft_Word">Microsoft Word</a> take care of the formatting. If you type <kbd>--</kbd> and then hit the space-bar in word, the program automatically converts your dashes into an m-dash. But if you were to copy and paste the Word-formatted m-dash into an <acronym title="HyperText Markup Language">HTML</acronym> document, browsers would have difficulty reading the character and would be unable to display it appropriately. This is where character references come into play.</p>
<h3>Okay, so how do I use them?</h3>
<p><strong>Character references</strong> are specially-encoded characters referenced by number. For example, the character reference for writing an m-dash is <code>&amp;#8212;</code>, that is, an ampersand, the <a title="Some details on the history of the octothorpe." href="http://www.sigtel.com/tel_tech_octothorpe.html">octothorpe</a> (frequently misinterpreted as the number sign) symbol, the numeric characters 8, 2, 1, and 2, followed by a semicolon to mark the end of the reference. All character and entity references begin with an ampersand (<code>&amp;</code>) and end with a semicolon (<code>;</code>).</p>
<p><strong>Entity references</strong> are almost identical to character references, except they refer to specific characters by name rather than by number. For example, the entity reference to write an m-dash is <code>&amp;mdash;</code>. Entity references were created to make character references easier to remember.</p>
<p><strong>Word of Warning!</strong> Many <acronym title="HyperText Markup Language"><acronym title="HyperText Markup Language">HTML</acronym></acronym> entity references are not compatible with some other language formats (most notably <acronym title="Scalable Vector Graphics"><acronym title="Scalable Vector Graphics">SVG</acronym></acronym>). Always use the numeric character references in favor of entity references for maximum document portability. That said, I often use entity references simply because they&#8217;re easier to remember. If I want to port my document to some other format, though, I&#8217;ll need to replace the entity references with proper entity values. <a href="http://www.xml.com/pub/a/2004/05/12/svg.html?page=1">This <acronym title="eXtensible Markup Language">XML</acronym>.com article</a> is great if you&#8217;re looking for more information on typography in general or how it pertains to <acronym title="Scalable Vector Graphics">SVG</acronym> specifically.</p>
<h3>Why should I go through all this trouble?</h3>
<ol>
<li><strong>Professionalism.</strong> If you have a business Web site, then you should do it for no other reason than because it&#8217;s only professional to do so.</li>
<li><strong>Semantic accuracy.</strong> There is a big difference between three periods in a row and an ellipses. The former is simply bad English. (An ellipses, by the way, is <code>&amp;hellip;</code>, or <code>&amp;#8230;</code>.)</li>
<li><strong>For looks.</strong> Which line do <em>you</em> think looks better:
<ol>
<li>&quot;They used dumb quotes all over their site!&quot;</li>
<li>&ldquo;I was impressed; they used smart quotes on their site!&rdquo;</li>
</ol>
<p>Smart quotes, by the way, can be written with <code>&amp;ldquo;</code> for opening quotes, and <code>&amp;rdquo;</code> for closing quotes. This name is an abbreviation of &ldquo;left/right double quote&rdquo;. The character references are <code>&amp;#8220;</code> and <code>&amp;#8221;</code>, respectively.</li>
</ol>
<h3>Great! I love my newfound semantic correctness. Now can I have some fun?</h3>
<p>You bet! <a href="http://ctkeiser.blogspot.com/2004/09/computers-fight-back.html">A friend of mine blogged the other day</a> and had just the need for such entity references. In this case, she wanted to make a check mark appear. Here&#8217;s a table showing some fun symbols you can use to spice up the text on your page! Just be aware that some older browsers won&#8217;t render these properly, because they don&#8217;t understand them, and some symbols won&#8217;t work with certain encodings. For best results, encode your page as <acronym title="Universal Character Set (UCS) Transformation Format">UTF</acronym>-8.</p>
<table>
<thead>
<tr>
<th>Symbol</th>
<th>Meaning</th>
<th><acronym title="HyperText Markup Language"><acronym title="HyperText Markup Language">HTML</acronym></acronym> Entity Reference</th>
<th>Numeric Character Reference</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="4">Here is <a href="http://www.bigbaer.com/sidebars/entities/">a very comprehensive list of <acronym title="HyperText Markup Language">HTML</acronym> entity references.</a></td>
</tr>
</tfoot>
<tbody>
<tr>
<td>&#10003;</td>
<td>Check mark? Check!</td>
<td>None.</td>
<td>&amp;#10003;</td>
</tr>
<tr>
<td>&#9993;</td>
<td>Mail envelope.</td>
<td>None.</td>
<td>&amp;#9993;</td>
</tr>
<tr>
<td>&#9996;</td>
<td>Victory! w00t!</td>
<td>None.</td>
<td>&amp;#9996;</td>
</tr>
<tr>
<td>&#9836;</td>
<td>Musical double bar note.</td>
<td>None.</td>
<td>&amp;#9836;</td>
</tr>
<tr>
<td>&#9823;</td>
<td>Black pawn. Now you can use your friends for evil.</td>
<td>None.</td>
<td>&amp;#9823;</td>
</tr>
<tr>
<td>&#9803;</td>
<td>Cancer zodiac symbol. My sign.</td>
<td>None.</td>
<td>&amp;#9803;</td>
</tr>
<tr>
<td>&#9786;</td>
<td>Smiley. Just like your word processor!</td>
<td>None.</td>
<td>&amp;#9786;</td>
</tr>
<tr>
<td>&#9775;</td>
<td>Yin and yang. Gives you balance and inner peace.</td>
<td>None.</td>
<td>&amp;#9775;</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>&#10017;</td>
<td>Star of David. Jewish religious symbol.</td>
<td>None.</td>
<td>&amp;#10017;</td>
</tr>
<tr>
<td>&#9763;</td>
<td>Biohazard sign. Put this on your splash page to keep others out. Heh&hellip;.</td>
<td>None.</td>
<td>&amp;#9763;</td>
</tr>
<tr>
<td>&#9760;</td>
<td>Skull and bones. Yar.</td>
<td>None.</td>
<td>&amp;#9760;</td>
</tr>
<tr>
<td>&#9742;</td>
<td>Telephone.</td>
<td>None.</td>
<td>&amp;#9742;</td>
</tr>
<td>&#9733;</td>
<td>Solid star. Rate your friends.</td>
<td>None.</td>
<td>&amp;#9733</td>
<tr>
<td>&para;</td>
<td>Paragraph mark. Use it to annoy bad Microsoft Word authors who don&#8217;t turn on invisible characters. >:)</td>
<td>&amp;para;</td>
<td>&amp;#182;</td>
</tr>
<tr>
<td>&middot;</td>
<td>Middle dot. An interesting factoid is that this is used as a separator between foreign first and last names in Japanese.</td>
<td>&amp;middot;</td>
<td>&amp;#183;</td>
</tr>
<tr>
<td>&THORN;</td>
<td>Capitol THORN. Makes for a great smiley. :-&THORN;</td>
<td>&amp;THORN;</td>
<td>&amp;#222;</td>
</tr>
<tr>
<td>&dagger;</td>
<td>Dagger. Used for footnotes and the like. Also useful for stabbing.</td>
<td>&amp;dagger;</td>
<td>&amp;#8224;</td>
</tr>
<tr>
<td>&fnof;</td>
<td>Latin lower case F with hook. Sometimes used on <a href="http://en.wikipedia.org/wiki/Apple_Macintosh">Apple Macintosh</a> computers as a suffix for folder names.</td>
<td>&amp;fnof;</td>
<td>&amp;#402;</td>
</tr>
<tr>
<td>&weierp;</td>
<td>Cursive capital letter P, power set, and <a href="http://en.wikipedia.org/wiki/Karl_Weierstrass">Weierstraff</a> P.</td>
<td>&amp;weierp;</td>
<td>&amp;#8472;</td>
</tr>
<tr>
<td>&image;</td>
<td>Blackletter capital letter I, and <a href="http://en.wikipedia.org/wiki/Imaginary_number">mathematical imaginary part</a> symbol.</td>
<td>&amp;image;</td>
<td>&amp;#8465;</td>
</tr>
<tr>
<td>&real;</td>
<td>Blackletter capital letter R and mathematical real part symbol.</td>
<td>&amp;real;</td>
<td>&amp;#8476;</td>
</tr>
<tr>
<td>&alefsym;</td>
<td>Hebrew print letter Alef, and <a href="http://en.wikipedia.org/wiki/Cardinality">mathematical first transfinite cardinal</a>.</td>
<td>&amp;alefsym;</td>
<td>&amp;#8501;</td>
</tr>
<tr>
<td>&otimes;</td>
<td>mathematical vector product, or circled times.</td>
<td>&amp;otimes;</td>
<td>&amp;#8855;</td>
</tr>
<tr>
<td>&loz;</td>
<td>Lozenge, a geometric diamond. Also a great cough candy.</td>
<td>&amp;loz;</td>
<td>&amp;#9674;</td>
</tr>
<tr>
<td>&#8470;</td>
<td>Numero symbol. The real number sign.</td>
<td>None.</td>
<td>&amp;#8470;</td>
</tr>
</tbody>
</table>
<p>Hope you have fun with these. &#8216;Til next time, &#9774;-out!</p>
]]></content:encoded>
			<wfw:commentRss>http://maymay.net/blog/2004/09/17/fun-with-character-and-entity-references-and-why-you-should-use-them/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

