<?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>Tiffany B. Brown &#187; CSS</title>
	<atom:link href="http://tiffanybbrown.com/category/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://tiffanybbrown.com</link>
	<description>A web log about web development and internet culture with frequent detours into other stuff.</description>
	<lastBuildDate>Fri, 10 Feb 2012 23:35:51 +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>input type=&quot;range&quot; and Android&#8217;s stock browser.</title>
		<link>http://tiffanybbrown.com/2012/02/07/input-typerange-and-androids-stock-browser/</link>
		<comments>http://tiffanybbrown.com/2012/02/07/input-typerange-and-androids-stock-browser/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 04:04:56 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[(x)HTML]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[WebKit]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[html5 forms]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=6629</guid>
		<description><![CDATA[Android&#8217;s stock browser supports the range input type, but in versions 3.x4.x and below (not sure about Android 4.x), it doesn&#8217;t actually display the UI. It does, however, support parts of the Shadow DOM. That means we can style this element, and give our users a visible control. The image below shows a rather garish [...]]]></description>
			<content:encoded><![CDATA[<p>Android&#8217;s stock browser supports the <code>range</code> input type, but in versions <del datetime="2012-02-09T14:40:47+00:00">3.x</del><ins datetime="2012-02-09T14:40:47+00:00">4.x</ins> and below <del datetime="2012-02-09T14:40:47+00:00"> (not sure about Android 4.x)</del>, it doesn&#8217;t actually display the UI.</p>
<p>It does, however, support parts of the <a href="http://glazkov.com/2011/01/14/what-the-heck-is-shadow-dom/">Shadow DOM</a>. That means we can style this element, and give our users a visible control.</p>
<p>The image below shows a rather garish green-and-orange version of the range user interface widget. This is after adding some styling, as it appears in the stock Android browser.</p>
<div class="image500"><img src="http://webinista.s3.amazonaws.com/images/uploads/2012/02/rangeui.png" alt="" title="safarirange" width="499" height="52" class="aligncenter size-full wp-image-6632"></div>
<p>And below is the CSS that gives us the above image.</p>
<pre><code>
input[type='range']{
    background: #0c0;
    height:10px;
}

input[type='range']::-webkit-slider-thumb{
    background:#f60;
    height:30px;
    width:30px;
    border-radius: 30px;
}
</code></pre>
<p>To date, this does <em>not</em> affect Chrome or Safari for the Desktop. <code>::-webkit-slider-thumb</code> does partially affect iOS Safari. I&#8217;ve included an image of what it looks like below (not to scale). Notice that the thumb color changes, but the slider background does not.</p>
<div class="image500"><img src="http://webinista.s3.amazonaws.com/images/uploads/2012/02/safarirange.png" alt="" title="safarirange" width="500" height="134" class="aligncenter size-full wp-image-6632"></div>
<p>This <em>may</em> also affect other browsers that use <a href="http://www.webkit.org/">Webkit</a> such as the Web Browser for S60 Nokia and Samsung&#8217;s Dolfin. I haven&#8217;t tested it yet, but if you have, please let us know in the comments.</p>
<p>Also keep in mind that this element has a pretty poor user interaction in Android browser. It&#8217;s not very responsive, and doesn&#8217;t operate all that intuitively. This is true of most mobile browsers, but in my opinion (and based on limited experience), Android is worst of all.</p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2012/02/07/input-typerange-and-androids-stock-browser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing HTML5 for AS3 Developers</title>
		<link>http://tiffanybbrown.com/2011/10/03/introducing-html5-for-as3-developers/</link>
		<comments>http://tiffanybbrown.com/2011/10/03/introducing-html5-for-as3-developers/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 09:00:39 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[ActionScript, Flash & Flex]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[JavaScript/ECMAScript]]></category>
		<category><![CDATA[html5foras3devs]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=6089</guid>
		<description><![CDATA[During my three years at Armchair, I worked on a few ActionScript 3.0 projects. I knew some ActionScript 2.0 when I started, but ActionScript 3.0 was new for me. It is object-oriented and requires event-driven thinking &#8212; two skills frankly, that I am still developing. They&#8217;re also two skills you should be developing, as they&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>During my three years at <a href="http://armchairmedia.com/">Armchair</a>, I worked on a few <a href="http://www.adobe.com/devnet/actionscript.html">ActionScript 3.0</a> projects. I knew some ActionScript 2.0 when I started, but ActionScript 3.0 was new for me. It is object-oriented and requires event-driven thinking &#8212; two skills frankly, that I am still developing. They&#8217;re also two skills <em>you</em> should be developing, as they&#8217;re the present and future of web development.</p>
<p>Now I work almost exclusively with JavaScript, HTML5, CSS, and occasionally SVG. I haven&#8217;t touched ActionScript in any serious way for close to a year. But working on those projects was &#8220;training&#8221; of sorts. And it served me well.</p>
<p>It&#8217;s an open secret that HTML5<a href="#n20111003">*</a> evolved to kill Flash. Many of the features of HTML5 and technologies such as <a href="http://www.w3.org/TR/XMLHttpRequest2/">XMLHttpRequest, Level 2</a> and <a href="http://www.w3.org/TR/cors/">Cross-origin Resource Sharing</a> have parallels in ActionScript 3.0. The front-end stack, in other words, is gunning for Flash. And it will happen sooner rather than later.</p>
<p>ActionScript developers may cringe at that news, but I don&#8217;t think they should. I <strong>strongly</strong> believe that AS3.0 developers are better positioned than the rest of us to be leaders in front-end stack development. Problems that most JavaScript developers are learning how to think about &#8212; reading and manipulating bitmap data, doing object hit testing, making cross-domain requests, &#8212; ActionScript developers have been doing <em>for years</em>. </p>
<p>Of course, this is all provided ActionScript developers are willing to make the switch. </p>
<p>To that end, I&#8217;m starting an ongoing (but occasional &#8230; perhaps <em>very</em> occasional) series of blog posts detailing some of the commonalities and differences between ActionScript 3.0 and the HTML5 Stack. I am calling it <q>HTML5 for ActionScript 3.0 Devs,</q> even though it isn&#8217;t <em>just</em> about HTML5.</p>
<p>Sometimes they&#8217;ll be deep dives. Other times they&#8217;ll be shallow ones. It is quite possible that I will misunderstand aspects of both (that&#8217;s what comments are for). My goal here is less to be comprehensive than it is to encourage developers to learn more about these topics.</p>
<p class="footnote" id="n20111003">*Of course, I am using &#8220;HTML5&#8221; as a short hand for HTML5, CSS3, JavaScript, the Document Object Model, Scalable Vector Graphics, and several other web technologies and specifications.</p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2011/10/03/introducing-html5-for-as3-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Broken or Jumpy CSS Transitions? Use the same unit of length</title>
		<link>http://tiffanybbrown.com/2011/09/28/broken-or-jumpy-css-transitions-use-the-same-unit-of-length/</link>
		<comments>http://tiffanybbrown.com/2011/09/28/broken-or-jumpy-css-transitions-use-the-same-unit-of-length/#comments</comments>
		<pubDate>Thu, 29 Sep 2011 00:01:35 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[css transitions]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=6287</guid>
		<description><![CDATA[I came across an issue recently while trying to transition from left: 30px to left: 50%. The transition appeared to work, but it wasn&#8217;t smooth and transition-like. It was jumpy. Worse yet, another item I applied a transition to in the same document worked perfectly. It&#8217;s starting left value? 0px. Confusing, right? Not really. Browsers [...]]]></description>
			<content:encoded><![CDATA[<p>I came across an issue recently while trying to transition from <code>left: 30px</code> to <code>left: 50%</code>. The transition appeared to work, but it wasn&#8217;t smooth and transition-like. It was jumpy. Worse yet, another item I applied a transition to in the same document worked perfectly. It&#8217;s starting <code>left</code> value? <code>0px</code>. Confusing, right?</p>
<p>Not really. Browsers ignore the unit type when the value is 0. That&#8217;s why <code>margin: 0</code> is the same as <code>margin: 0em</code> and <code>margin: 0px</code>. If it&#8217;s zero, after all, what does the unit matter? That explains why the second item&#8217;s transition worked well. </p>
<p>But when there is a mis-match between the type of unit, most browsers &#8212; Firefox is the exception to date &#8212; won&#8217;t transition between the two values. The result? It jumps. The fix: make sure that you are transitioning between two values of the same unit (or transitioning from a 0 start value). </p>
<p>Since this is better shown than written about, this demo <a href="http://tiffanybbrown.com/code/2011/transitionunits/">illustrates what I mean</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2011/09/28/broken-or-jumpy-css-transitions-use-the-same-unit-of-length/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Toggle &#8216;blind&#8217; effect with CSS3 transitions</title>
		<link>http://tiffanybbrown.com/2011/09/26/toggle-blind-effect-with-css3-transitions/</link>
		<comments>http://tiffanybbrown.com/2011/09/26/toggle-blind-effect-with-css3-transitions/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 15:00:09 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[classlist]]></category>
		<category><![CDATA[css transitions]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[domtokenlist]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=6208</guid>
		<description><![CDATA[Transitioning between an &#8216;open&#8217; state and a &#8216;closed&#8217; state when the height of your content is variable (making a transition of the height property inadequate). What makes the magic? Using height: auto, and transitioning the min-height and max-height properties instead. View the demo, or study / steal the code. This example makes use of CSS3 [...]]]></description>
			<content:encoded><![CDATA[<p>Transitioning between an &#8216;open&#8217; state and a &#8216;closed&#8217; state when the height of your content is variable (making a transition of the <code>height</code> property inadequate). </p>
<p>What makes the magic? Using <code>height: auto</code>, and transitioning the <code>min-height</code> and <code>max-height</code> properties instead.</p>
<p><a href="http://tiffanybbrown.com/code/2011/cssblinds/" target="_blank">View the demo</a>, or study / steal the code.</p>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/webinista/sTfTb/7/embedded/"></iframe></p>
<p>This example makes use of CSS3 transitions, and <a href="http://tiffanybbrown.com/2011/08/15/class-manipulation-with-classlist/">DOMTokenList / <code>classList</code></a>. There&#8217;s also a fallback that uses <code>className</code> and some regular expression-ism in browsers that don&#8217;t yet support <code>classList</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2011/09/26/toggle-blind-effect-with-css3-transitions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Class manipulation with classList</title>
		<link>http://tiffanybbrown.com/2011/08/15/class-manipulation-with-classlist/</link>
		<comments>http://tiffanybbrown.com/2011/08/15/class-manipulation-with-classlist/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 13:00:47 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[JavaScript/ECMAScript]]></category>
		<category><![CDATA[classlist]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=6157</guid>
		<description><![CDATA[Many features of JavaScript/DOM frameworks are being incorporated into the browser natively. In my last post, I talked about the Selectors API. In this one, we&#8217;ll look at classList. classList makes it much easier to work with elements and class names. With it, you can: Add, remove, and toggle classes; Retrieve the class name at [...]]]></description>
			<content:encoded><![CDATA[<p>Many features of JavaScript/<abbr title="Document Object Model">DOM</abbr> frameworks are being incorporated into the browser natively. In my last post, I talked about <a href="http://tiffanybbrown.com/2011/08/12/meet-the-selectors-api/">the Selectors <abbr title="Application Programming Interface">API</abbr></a>. In this one, we&#8217;ll look at <code>classList</code>.</p>
<p><code>classList</code> makes it much easier to work with elements and class names. With it, you can:</p>
<ul>
<li>Add, remove, and toggle classes; </li>
<li>Retrieve the class name at a specified index; or </li>
<li>Check whether an element contains a particular class.</li>
</ul>
<p><code>classList</code> returns a <a href="https://developer.mozilla.org/en/DOM/DOMTokenList">DOMTokenList</a> &#8212; a space-separated list of tokens &#8212; containing the class names currently applied to the element.</p>
<p>Its syntax is simple: <code>elementNode.classList.methodname(arg)</code> where <code>methodname</code> is either <span style="white-space:nowrap;text-wrap:none;"><code>add()</code>,</span> <code style="white-space:nowrap;text-wrap:none;">remove()</code>, <code style="white-space:nowrap;text-wrap:none;">toggle()</code>, <code style="white-space:nowrap;text-wrap:none;">contains()</code>, or <code style="white-space:nowrap;text-wrap:none;">item()</code> and <code>arg</code> is either a numeric index (in the case of <code style="white-space:nowrap;text-wrap:none;">item()</code> ), or a class name. <code>classList</code> also has a <code>length</code> property, which tells you how many class names have been applied to the element.</p>
<p>Let&#8217;s look at some examples.</p>
<h2>LetsPretendWeAreBuildingANewsSite.net</h2>
<p>Pretend we&#8217;re building the home page of a news web site. This means we have lots of lists of stories, each styled slightly differently based on their section and prominence. We&#8217;re also going to allow users to hide some lists of headlines. Which ones can be hidden is determined by a class name.</p>
<p>One of our home page lists, then, has three class names: <code>hardnews</code> (as opposed to say, celebrity gossip), <code>business</code>, and <code>removable</code>. The markup looks like this:</p>
<pre>&lt;ul id="bizheadlines" class="hardnews business removable"&gt;
	&lt;li&gt;Coca-Cola posts a Q3 profit&lt;/li&gt;
	&lt;li&gt;Justin Timberlake invests in MySpace&lt;/li&gt;
	&lt;li&gt;Google tries to get social (again) with Google+&lt;/li&gt;
	&lt;li&gt;Southwest and AirTran airlines to merge&lt;/li&gt;
	&lt;li&gt;Stocks can't decide whether they're up or down&lt;/li&gt;
&lt;/ul&gt;</pre>
<h3>Retrieving all classes on an element</h3>
<p>If we wanted to retrieve all class names on our list, that&#8217;s an easy enough task:</p>
<pre>var biz = document.getElementById('bizheadlines'); // could also use document.querySelector('#bizheadlines');
var bizclasses = biz.classList;
console.log(bizclasses)</pre>
<p>The code above would write <code>hardnews business removable</code> to the JavaScript console.</p>
<p>Retrieving all class names on an element is only somewhat useful. You would typically use this to test whether the element has a class at all, or whether <code>classList</code> is supported by the browser. If <code>document.body.classList == undefined</code>, for example, you know that it is unsupported in that browser.</p>
<h3>Retrieving a class name by index</h3>
<p>Instead, let&#8217;s try retrieving the third class name in the list. Here we&#8217;d use <code>item(n)</code>, where <em>n</em> is an integer between 0 and the number of classes minus 1 (<code>element.classList.length - 1</code>).</p>
<pre>var biz = document.getElementById('bizheadlines');
var bizclasses = biz.classList;
console.log( bizclasses.item(2) )</pre>
<p>Executing the above writes <code>removable</code> to the console. If a class name does not exist at that index, the value of <code>bizclasses.item(2)</code> would be <code>null</code> instead.</p>
<h3>Adding a class name</h3>
<p>Now, the real fun of <code>classList</code> is the ability to add, remove and toggle the class names of an element. So let&#8217;s say one of our users wants to hide our list. They can do that because we&#8217;ve specified that it is removable with the <code>removable</code> class. But removable only says that it <em>can</em> be removed. We need to add another class (hide) in order to remove the list from view. Meet the <code>add()</code> method.</p>
<pre>var biz = document.getElementById('bizheadlines');
biz.classList.add('hide');</pre>
<p>In order for this to work, of course, <code>.hide</code> must be defined in our CSS: <code>.hide{display:none;}</code>.</p>
<p>Note that <b>you can&#8217;t add a list of space-separated values to <code>classList</code></b>. For example, <code>document.body.classList.add('sports sectionfront')</code> won&#8217;t work. You must instead add them one at a time, or use <code>className</code>.</p>
<h3>Removing a class name</h3>
<p>To remove a class name (maybe our user wants to restore that list of headlines) use the <code>remove()</code> method. It, like <code>add()</code>, accepts a class name as a parameter.</p>
<pre>var biz = document.getElementById('bizheadlines');
biz.classList.remove('hide');</pre>
<p>Here too, you need to remove classes one by one, or use <code>className</code>.</p>
<h3>Toggling classes</h3>
<p>Of course, since we&#8217;re just adding and removing a class name, we could just toggle it. As you&#8217;d expect, this is where we&#8217;d use the <code>toggle()</code> method.</p>
<pre>var biz = document.getElementById('bizheadlines');
biz.classList.toggle('hide');</pre>
<p>If the element does not contain the <code>hide</code> class, <code>toggle()</code> will add it. If it does, invoking <code>toggle()</code> will remove it.</p>
<h3>Checking whether a particular class exists</h3>
<p>What if you wanted to show a message only when the user tries to close a hard news headline list? Then you would want to check whether the element in question has a <code>hardnews</code> class. This is where the <code>contains()</code> method comes in handy.</p>
<pre>// Get all removable lists of headlines
var removable = document.querySelectorAll('.removable');

var clickhandler = function(e){
	// if the current target has a 'hardnews' class
	if( e.target.classList.contains('hardnews') ){
		var cont = confirm("Hiding this will make you a less informed citizen. Are you sure?");

		if(cont){
			e.target.classList.add('hide');
		} else{}
	}
}

// apply the click handler
for( var i=0; i < removable.length; i++){
	removable[i].onclick = clickhandler;
}</pre>
<p>In the above example, we have applied a click handler to all removable lists. If a user tries to remove a hard news section, we ask for confirmation. If they confirm, we will hide it. Otherwise, we won't.</p>
<h3>See <code style="text-transform:none;">classList</code> in action</h3>
<p>Though decidedly not a news web site home page, you can get a sense of how these methods can be used together in this <a href="http://tiffanybbrown.com/code/2011/classlist/">classList demo</a>.</p>
<h3>Browser support</h3>
<p>Here's the caveat: <code>classList</code> is <a href="http://caniuse.com/classlist">not yet supported</a> in iOS Safari, or Internet Explorer 9 (it's unclear whether support will be available in IE10). In those cases, you will still need to use <code style="white-space:nowrap;text-wrap:none;">className</code> or <code style="white-space:nowrap;text-wrap:none;">getAttribute('class')</code> and manipulate it using JavaScript string methods and regular expressions.</pre>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2011/08/15/class-manipulation-with-classlist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meet the Selectors API</title>
		<link>http://tiffanybbrown.com/2011/08/12/meet-the-selectors-api/</link>
		<comments>http://tiffanybbrown.com/2011/08/12/meet-the-selectors-api/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 12:00:44 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[JavaScript/ECMAScript]]></category>
		<category><![CDATA[selectors API]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=6125</guid>
		<description><![CDATA[DOM Scripting is sometimes clunky. Consider the retrieval of elements with a particular class name. The code might look like this: var p = document.getElementsByTagName('p'); var newsitems = []; var i; for(i = 0; i < p.length; i++){ if( p[i].className == 'newsitem' ){ newsitems.push( p[i] ); } } In the example above, we&#8217;ve retrieved all [...]]]></description>
			<content:encoded><![CDATA[<p>DOM Scripting is sometimes clunky. Consider the retrieval of elements with a particular class name. The code might look like this:</p>
<pre>var p = document.getElementsByTagName('p');
var newsitems = [];
var i;
for(i = 0; i < p.length; i++){
  if( p[i].className == 'newsitem' ){
     newsitems.push( p[i] );
  }
}</pre>
<p>In the example above, we&#8217;ve retrieved all elements in the document using <code>document.getElementsByTagName()</code>. Then we&#8217;ve iterated over them, checking for the presence of the desired class name.  </p>
<p>It&#8217;s ugly, right? That&#8127;s even more true when you look at the elegant, CSS-style selectors of libraries like <a href="http://jquery.com/">jQuery</a> and <a href="http://mootools.net/">MooTools</a>.</p>
<p>Code like that above is why the W3C developed a <a href="http://www.w3.org/TR/selectors-api/">Selectors API</a>. It consists of two methods on the document object: <code>querySelector()</code> and <code>querySelectorAll()</code>.</p>
<p><code>querySelector()</code> and <code>querySelectorAll()</code> both accept any CSS selector that the browser supports. All <a href="http://caniuse.com/#search=queryselectorall">recent browser releases</a> support both methods, though Internet Explorer 8 is limited to CSS2 selectors.</p>
<p><code>querySelectorAll()</code>, as its name suggests, returns a node list of elements matching the given selector. <code>querySelector()</code> only returns the <em>first</em> matching element. You can pass any CSS selector as an argument, including ones like the adjacent sibling combinator and <code>nth-child()</code> if the browser supports it.</p>
<p>Let's re-write the above code using <code>querySelectorAll()</code>. </p>
</pre>
<pre>
var newsitems = document.querySelectorAll('.newsitem');
</pre>
<p>That&#8217;s <em>much</em> more concise. The <code>newsitems</code> variable contains only those elements with the <code>newsitem</code> class. Using the Selectors API greatly simplifies the code we need to use when interacting with the DOM.</p>
<h3>Learn more</h3>
<ul>
<li><a href="http://www.w3.org/TR/selectors-api/">Selectors API Level 1 Specification</a></li>
<li><a href="http://www.w3.org/TR/selectors-api2/">Selectors API Level 2 Specification</a></li>
<li><a href="http://www.w3.org/TR/css3-selectors/">CSS Selectors Level 3 Specification</a></li>
<li><a href="http://www.w3.org/TR/CSS2/">CSS Cascading Style Sheets Level 2 Revision 1 Specification</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2011/08/12/meet-the-selectors-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make CSS3 Buttons Like A Bawse</title>
		<link>http://tiffanybbrown.com/2011/05/17/make-css3-buttons-like-a-bawse/</link>
		<comments>http://tiffanybbrown.com/2011/05/17/make-css3-buttons-like-a-bawse/#comments</comments>
		<pubDate>Tue, 17 May 2011 21:59:20 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Opera]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=5946</guid>
		<description><![CDATA[Shout out to Rick Ross for his pronunciation because &#8220;bawse&#8221; > &#8220;boss.&#8221; What Mazzola&#8217;s CSS3 buttons look like in Opera 11.10. In January, Chad Mazzola posted a Thoughtbot article titled Make CSS3 buttons like a boss (via nico604). It is a great read for designers, but it does have one glaring omission: no Opera support.* [...]]]></description>
			<content:encoded><![CDATA[<p class="editors-note">Shout out to Rick Ross for his pronunciation because &#8220;bawse&#8221; > &#8220;boss.&#8221;</p>
<div class="image640"><a href="http://webinista.s3.amazonaws.com/images/uploads/2011/05/bawsebuttons.png"><img src="http://webinista.s3.amazonaws.com/images/uploads/2011/05/bawsebuttons.png" alt="" title="bawsebuttons" width="610" height="100" class="alignnone size-full wp-image-5949" /></a>What Mazzola&#8217;s CSS3 buttons look like in Opera 11.10.</div>
<p>In January, Chad Mazzola posted a Thoughtbot article titled <a href="http://robots.thoughtbot.com/post/2718077289/make-css3-buttons-like-a-boss">Make CSS3 buttons like a boss</a> (via <a href="https://twitter.com/#!/nico604/status/70553848170823680">nico604</a>). It is a great read for designers, but it does have one glaring omission: no Opera support.<a href="#n20110517a">*</a> (I know right? <em>Who does that?</em>)</p>
<p>So let&#8217;s improve Mazzola&#8217;s code to add Opera support and use standard, prefix-less properties where we can.</p>
<h2>Opera and Linear gradients</h2>
<p>As Mazzola points out, the light source for these buttons is coming from overhead, giving highlights at the top edge, but darkness and shadows at the bottom. He starts with linear gradients for Firefox and Safari/Chrome.</p>
<pre>
button {
  background: #3b88d8;
  background: -moz-linear-gradient(0% 100% 90deg, #377ad0, #52a8e8);
  background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#52a8e8), to(#377ad0));
}
</pre>
<p>We will add a linear gradient style for Opera.</p>
<pre>
button {
  background: #3b88d8;
  background: -moz-linear-gradient(0% 100% 90deg, #377ad0, #52a8e8);
  background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#52a8e8), to(#377ad0));
  background: -o-linear-gradient(90deg, #377ad0 0%, #52a8e8 100%);
}
</pre>
<p>Note that Opera&#8217;s syntax is different from that of WebKit&#8217;s or Firefox&#8216;s implementation. It&#8217;s closer to the current version of the <a href="http://www.w3.org/TR/css3-images/#linear-gradients">specification</a>. Since this is a  simple gradient, we could also use a simpler syntax for Opera: <code>-o-linear-gradient(#377ad0, #52a8e8)</code>. Read more about <a href="http://dev.opera.com/articles/view/css3-linear-gradients">linear gradients in Opera</a>.</p>
<p>The syntax for borders is the same in Opera as it is in Firefox, Internet Explorer, Safari and Chrome. We can skip that section. But we can adjust Mazzola&#8217;s <code>box-shadow</code> styles to reflect current browser support.</p>
<p>Browsers have pretty much standardized their implementations of <code>box-shadow</code>. The appearance varies slightly, but the syntax is the same. That means this code:</p>
<pre>
button {
  -moz-box-shadow: inset 0 1px 0 0 #72b9eb, 0 1px 2px 0 #b3b3b3;
  -webkit-box-shadow: inset 0 1px 0 0 #72b9eb, 0 1px 2px 0 #b3b3b3;
}
</pre>
<p>can become:</p>
<pre>
button {
  box-shadow: inset 0 1px 0 0 #72b9eb, 0 1px 2px 0 #b3b3b3;
}
</pre>
<p>The above works in the latest versions of all major browsers, including Internet Explorer 9. If you&#8217;d like, you can retain the <code>-moz-</code> and <code>-webkit-</code> prefixes for older versions of those browsers.</p>
<p>Now let&#8217;s look at the styles for the <code>:hover</code> state. Here, Mazzola has applied a linear gradient and a box shadow. Again we will add a gradient for Opera and change the prefixed <code>box-shadow</code> properties to use the unprefixed ones. For future-compatibility, let&#8217;s also add an unprefixed, spec-compliant <code>linear-gradient</code> (which we can also do above).</p>
<pre>
button:hover {
  background: #2a81d7;
  background: -moz-linear-gradient(0% 100% 90deg, #206bcb, #3e9ee5);
  background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#3e9ee5), to(#206bcb));
  background: -o-linear-gradient(#206bcb, #3e9ee5); /* using the simpler syntax */
  background: linear-gradient(#206bcb, #3e9ee5);
  border-top: 1px solid #2a73a6;
  border-right: 1px solid #165899;
  border-bottom: 1px solid #07428f;
  border-left: 1px solid #165899;
  box-shadow: inset 0 1px 0 0 #62b1e9;
  cursor: pointer;
  text-shadow: 0 -1px 1px #1d62ab;
}
</pre>
<p>Repeat these replacements for the <code>button[disabled]</code> state.</p>
<p>Though Internet Explorer 9 doesn&#8217;t support CSS gradients, you could use an <a href="http://www.w3.org/TR/2003/REC-SVG11-20030114/pservers.html"><abbr title="scalable vector graphics">SVG</abbr> gradient</a> as a background image. You can also use a bitmap image file for older versions of all browsers.</p>
<p>And <em>that&#8217;s</em> how to make CSS3 buttons like a boss.</p>
<p id="n20110517a" class="footnote">*To be fair: Opera didn&#8217;t support linear gradients at the time. Support was added in Opera 11.10, released in March 2011. But Opera did support for prefix-less versions of <code>box-shadow</code> and <code>background-clip</code>. You do not, however, need to use <code>background-clip</code> to make these buttons work in Opera.</p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2011/05/17/make-css3-buttons-like-a-bawse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts on practices for CSS Gradients</title>
		<link>http://tiffanybbrown.com/2011/04/06/thoughts-on-practices-for-css-gradients/</link>
		<comments>http://tiffanybbrown.com/2011/04/06/thoughts-on-practices-for-css-gradients/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 23:35:48 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[SVG]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[WebKit]]></category>
		<category><![CDATA[gradients]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=5838</guid>
		<description><![CDATA[Examples of CSS gradients are cropping up in the wild, and with good reason. CSS gradients: don&#8217;t require the additional HTTP request of an image file. are easier to modify than image files. &#8220;weigh less&#8221; than most image files. That&#8217;s the ideal, at least. In their current state, gradients are actually a hot mess. The [...]]]></description>
			<content:encoded><![CDATA[<p>Examples of CSS gradients are cropping up in the wild, and with good reason. CSS gradients:</p>
<ul>
<li>don&#8217;t require the additional HTTP request of an image file.</li>
<li>are easier to modify than image files.</li>
<li>&#8220;weigh less&#8221; than most image files.</li>
</ul>
<p>That&#8217;s the ideal, at least. In their current state, gradients are actually a hot mess. The reality?</p>
<ul>
<li>The <a href="http://dev.w3.org/csswg/css3-images/#gradients">specification</a> is still in flux.</li>
<li>Full gradient support is not available in all modern browsers. (For now, Opera 11 only supports linear gradients.)</li>
<li>Many older, though relatively recent versions of browsers (Internet Explorer 8 &amp; 9, Opera 10 Desktop, Opera Mobile, and Opera Mini, for example) don&#8217;t suport CSS gradients at all.</li>
</ul>
<p>So, how can developers take advantage of gradients and still support older browsers? Let&#8217;s look at some approaches.</p>
<h2>Set a background color</h2>
<p>Take a look at the following CSS:</p>
<pre>
#linear{
    width:400px;
    height:300px;
    background-image: -moz-linear-gradient(top left, #f60 0%, #c09 50%, #fc0 100%);
    background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, from(#f60), to(#fc0), color-stop(0.5,#c09) );
    background-image: -o-linear-gradient(top left, #f60 0%, #c09 50%, #fc0 100%);
}
</pre>
<p>This is a fairly common scenario. The developer (*cough*me*cough*) covered most of her bases, but forgot one: browsers that don&#8217;t support gradients at all. You can see what this looks like in Internet Explorer 9 (see <a href="#fig1_20110405">Figure 1</a>).</p>
<div class="img560" id="fig1_20110405"><img src="http://webinista.s3.amazonaws.com/images/uploads/2011/04/nogradientsupport.png" alt="What a gradient looks like in Internet Explorer 9"/>
<p>Figure 1. Internet Explorer 9 doesn&#8217;t yet support CSS gradients. This is what it looks like if you don&#8217;t supply a background color.</p>
</div>
<p>Now look at the following CSS:</p>
<pre>
#linear{
    width:400px;
    height:300px;
    background-color: #333;
    background-image: -moz-linear-gradient(top left, #f60 0%, #c09 50%, #fc0 100%);
    background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, from(#f60), to(#fc0), color-stop(0.5,#c09) );
    background-image: -o-linear-gradient(top left, #f60 0%, #c09 50%, #fc0 100%);
}
</pre>
<p>Here we&#8217;ve set a background image, but we&#8217;ve also set a background color. Browsers that don&#8217;t support CSS gradients will ignore the last three lines. (Note: each browser also ignores the other browsers&#8217; vendor-specific prefixes.)</p>
<p>Setting a background color is the easiest fall back for older / less modern browsers.</p>
<h2>Set a background image using an external file</h2>
<p>Consider the following CSS.</p>
<pre>
#linear{
    width:400px;
    height:300px;
    background-image: url(migas.jpg);
    background-image: -moz-linear-gradient(top left, #f60 0%, #c09 50%, #fc0 100%);
    background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, from(#f60), to(#fc0), color-stop(0.5,#c09) );
    background-image: -o-linear-gradient(top left, #f60 0%, #c09 50%, #fc0 100%);
}
</pre>
<p>In this example, we&#8217;re taking advantage of how browsers apply the cascade. As it turns out, Opera 11, Chrome whatever-the-heck-version-it&#8217;s-up-to, and Firefox 4 will not make the HTTP request for the external file. Safari, however, does (see <a href="#fig2_20110405">Figure 2</a>). Internet Explorer 9 (and less-modern browsers) will only load the external file. Depending on your audience, this may be an acceptable alternative.</p>
<div class="img560" id="fig2_20110405"><a href="http://webinista.s3.amazonaws.com/images/uploads/2011/04/safari-dowloads-migas.png"><img src="http://webinista.s3.amazonaws.com/images/uploads/2011/04/safari-dowloads-migas640.png" alt="Safari web inspector"/></a>
<p>Figure 2. Safari downloads all images. Click to embiggen.</p>
</div>
<p>Note: I have just barely tested this in mobile browsers. (Opera Mobile 11 doesn&#8217;t support gradients. Users will see the external image).</p>
<h2>Use SVG gradients to create a background image</h2>
<p>Internet Explorer 9 and Opera 10 (including Mobile) do not support CSS gradients. They do, however, both support the use of <abbr title="Scalable Vector Graphics">SVG</abbr> images as background images. Another alternative to using external images, then, is to use an SVG file.</p>
<pre>
#linear{
    width:400px;
    height:300px;
    background-image: url(gradient.gif);
    background-image: url(gradient.svg);
}
</pre>
<p>This example works in all current desktop browsers, and most mobile browsers. Safari 5, again, will download both images. Most others will download the latter SVG image. The advantages here are clarity and (arguably) ease of maintenance. Want a different gradient? Change the images. </p>
<p>You should be aware, though, that some recent(-ish) versions of mobile WebKit &#8212; such as the T-Mobile myTouch 4G browser &#8212; don&#8217;t support SVG backgrounds.  You&#8217;ll still need to add a linear gradient for those browsers, or set a background color.</p>
<h2>Or keep doing what we&#8217;ve been doing</h2>
<p>Of course, the growth of SVG and CSS gradients support doesn&#8217;t preclude using GIF, PNG or JPG gradients. The biggest point in favor of using bitmap images is that they still work in older browsers <em>and</em> current ones. </p>
<p>As with any aspect of web development, the right approach should balance concerns of maintainability, file size, and the browser distribution of your audience.</p>
<h2>You left out <code style="text-transform:lowercase;">linear-gradient</code>!</h2>
<p>I left it out of the examples above for two reasons: (1) simplicity; and (2) the syntax could change (though if I had to predict, it won&#8217;t change by much). Be forward-thinking! There are very few reasons not to include the proposed linear-gradient syntax in your code.</p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2011/04/06/thoughts-on-practices-for-css-gradients/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>border-radius support and the CSS 3 Backgrounds and Borders module</title>
		<link>http://tiffanybbrown.com/2011/02/12/border-radius-support-and-the-css-3-backgrounds-and-borders-module/</link>
		<comments>http://tiffanybbrown.com/2011/02/12/border-radius-support-and-the-css-3-backgrounds-and-borders-module/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 03:47:15 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[css3]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=5626</guid>
		<description><![CDATA[Last week, the CSS 3 Backgrounds and Borders module became a Candidate Recommendation. That means the specification is stable. Browser vendors can implement these features without a vendor prefix if they haven&#8217;t already. border-radius support Preceding to this move from Working Draft to Candidate Recommendation: support for border-radius (and border-top-right-radius, etc.) in Opera 10.5+ (current [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, the <a href="http://www.w3.org/TR/css3-background/">CSS 3 Backgrounds and Borders</a> module became a <a href="http://lists.w3.org/Archives/Public/www-style/2011Feb/0357.html">Candidate Recommendation</a>. </p>
<p>That means the specification is stable. Browser vendors can implement these features <em>without a vendor prefix</em> if they haven&#8217;t already.</p>
<h2><code>border-radius</code> support</h2>
<p>Preceding to this move from Working Draft to Candidate Recommendation: support for <code>border-radius</code> (and <code>border-top-right-radius</code>, etc.) in <strong>Opera 10.5+</strong> (current version is 11.01), <strong>Safari 5+</strong> and <strong>Chrome 5+</strong> (current version &#8212; as of February 12, 2011 &#8212; is 9.0.597.102 beta).</p>
<p>That means this*: </p>
<pre>
div{
	-moz-border-radius: 10px;
	-webkit-border-radius: 10px;
}
</pre>
<p>Can safely become:</p>
<pre>
div{
	-moz-border-radius: 10px;
	border-radius: 10px;
}
</pre>
<p>Yep. You can drop <code>-webkit-</code> from your <code>border-radius</code> properties long as you don&#8217;t mind your sexy rounded corners not appearing in older versions of WebKit-based browsers (and you&#8217;ve been able to do so since June 7, 2010).</p>
<p>Versions of Opera prior to 10.5 didn&#8217;t support <code>border-radius</code>, even with a vendor prefix. Ditto Internet Explorer 7 and 8.</p>
<p>Internet Explorer 9 and Firefox 4 will both support <code>border-radius</code>. <abbr title="Internet Explorer">IE9</abbr> pushed its Release Candidate February 11, 2011. Firefox 4 released its <a href="http://www.mozilla.com/en-US/firefox/beta/">11th beta</a> February 8, 2011.</p>
<p class="footnote">* But the cool, forward-thinking kids were already including <code>border-radius</code>, even before Opera 10.5 supported it.</p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2011/02/12/border-radius-support-and-the-css-3-backgrounds-and-borders-module/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>@font-face and WOFF round up</title>
		<link>http://tiffanybbrown.com/2009/11/02/font-face-and-woff/</link>
		<comments>http://tiffanybbrown.com/2009/11/02/font-face-and-woff/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 17:44:44 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[font-face]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[typography]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=2318</guid>
		<description><![CDATA[Web fonts took a big step closer to reality last month with a few announcements regarding the Web Open Font Format or WOFF. A big hurdle to the implementation @font-face and font linking has been a two-fold issue of licensing: Not all fonts are licensed for embedding and linking on the web. Major browser developers [...]]]></description>
			<content:encoded><![CDATA[<p>Web fonts took a big step closer to reality last month with a few announcements regarding the <a href="http://people.mozilla.com/~jkew/woff/woff-spec-latest.html" class="ext">Web Open Font Format</a> or WOFF. A big hurdle to the implementation <code>@font-face</code> and font linking has been a two-fold issue of licensing:</p>
<ol>
<li>Not all fonts are licensed for embedding and linking on the web.</li>
<li>Major browser developers have differing philosophies about <em>where</em> the responsibility for license compliance should fall.</li>
</ol>
<p>Microsoft, for example, has not implemented <code>@font-face</code>, in part, because it believes in protecting type foundries from the potential intellectual property violations of embedded fonts.<sup><a href="#n20091102a">*</a></sup> Opera, Safari / WebKit, and Mozilla leave compliance to the developer and support <code>@font-face</code> property. </p>
<p>In late May, a <a href="http://blog.typekit.com/2009/05/27/introducing-typekit/">Typekit</a> private beta launch brought the issue of embedded fonts and licensing back to the forefront. Typekit is a hosted font service that allows developers to select from a library of type chosen and hosted by Typekit and licensed for the web. </p>
<p>Ars Technica speculated about the future of web typography in its July article, <a href="http://arstechnica.com/web/news/2009/07/font-face-typekit-and-font-licensing-the-state-of-web-type.ars" class="blogpost title">The hazy future of Web typography</a>.</p>
<p>Late last month (October, 2009), type foundry <a href="http://www.houseind.com/showandtell/2009/10/20/FontsontheWeb">House Industries</a> announced its support for <abbr title="Web Open Font Format">WOFF</abbr>, stating that the format <q>satisfies the needs and concerns of browser makers, web designers, and type foundries, [and] offers compression to speed page load times, freedom from thorny legacy issues, and inclusiveness (font outlines can be Postscript or TrueType).</q></p>
<p>That same day, Mozilla <a href="http://hacks.mozilla.org/2009/10/woff/">announced</a> that <abbr title="Web Open Font Format">WOFF</abbr> support would be available in Firefox 3.6.</p>
<p>Today (November 2, 2009) Ars Technica features an article with <a href="http://arstechnica.com/web/news/2009/11/web-open-font-format-backed-by-mozilla-type-foundries.ars">more background</a> on last month&#8217;s announcements.</p>
<h3>More about embedded web fonts</h3>
<ul>
<li><a href="https://developer.mozilla.org/devnews/index.php/2009/10/30/firefox-3-6-beta-1-is-now-available-for-download/">Firefox 3.6 Beta 1 is now available for download</a></li>
<li><a href="http://www.zeldman.com/2009/10/31/house-party/">House Party</a> (Zeldman&#8217;s round up)</li>
<li><a href="http://hacks.mozilla.org/2009/10/font-control-for-designers/">after Firefox 3.6 – new font control features for designers</a></li>
<li><a href="http://blog.mozilla.com/blog/2009/10/20/mozilla-supports-web-open-font-format/">Mozilla Supports Web Open Font Format</a></li>
<li><a href="http://www.edenspiekermann.com/woff/">Typographic diversity for the web</a></li>
<li><a href="http://dev.opera.com/articles/view/seven-web-fonts-showcases/">Seven Web Fonts showcases</a></li>
<li><a href="http://www.alistapart.com/articles/cssatten">CSS @ Ten: The Next Big Thing</a></li>
<li><a href="http://arstechnica.com/open-source/news/2008/10/embedded-web-fonts.ars">An introduction to W3C Web Fonts</a></li>
</ul>
<p class="footnote" id="n20091102a">* <a href="http://cwilso.com/">Chris Wilson</a> and <a href="http://adactio.com/" class="ext">Jeremy Keith</a> had a rather heated debate about this subject at 2009&#8242;s South by Southwest &#8220;Browser Wars&#8221; panel. Chris Wilson, who was a part of the Internet Explorer development team at the time, made essentially this argument. Microsoft does, however, have its <a href="http://www.microsoft.com/typography/web/embedding/">own format</a> for embedding fonts on the web</p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2009/11/02/font-face-and-woff/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notes on Google Chrome</title>
		<link>http://tiffanybbrown.com/2008/09/02/notes-on-google-chrome/</link>
		<comments>http://tiffanybbrown.com/2008/09/02/notes-on-google-chrome/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 20:13:25 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[(x)HTML]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Other browsers]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google chrome]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/?p=1429</guid>
		<description><![CDATA[Update 2: Google explains its Windows-only release of Chrome in Platforms and Priorities When it comes to Mac and Linux versions, this means that our goal is not to just &#8220;port&#8221; a Windows application to these other platforms&#8211;rather, our goal is to deliver Chromium&#8217;s innovative, Google-style user interface without rough edges on any of them. [...]]]></description>
			<content:encoded><![CDATA[<div class="editors-note"><b>Update 2:</b> Google explains its Windows-only release of Chrome in <a class="blogpost title" href="http://googlemac.blogspot.com/2008/09/platforms-and-priorities.html">Platforms and Priorities</a></p>
<blockquote cite="http://googlemac.blogspot.com/2008/09/platforms-and-priorities.html"><p>When it comes to Mac and Linux versions, this means that our goal is not to just &#8220;port&#8221; a Windows application to these other platforms&#8211;rather, our goal is to deliver Chromium&#8217;s innovative, Google-style user interface without rough edges on any of them. Chromium&#8217;s overall design has been multi-platform from the start, but we are also committed to getting the details right for users on each platform. For an application that most of us &#8220;live in&#8221; most of the day, rough edges in the user experience or operating system integration are like having a stone in your shoe no matter how well the rest of the product works.</p></blockquote>
</div>
<p><ins datetime="2008-09-03T08:16:39+00:00" class="editors-note"><b>Update:</b> I updated this post with more about Chrome&#8217;s features and some related links.</ins></p>
<p>I may craft this into a better post later, but for now, I wanted to share some initial thoughts and observations about <a href="http://gears.google.com/chrome/">Google&#8217;s Chrome</a> browser, which was released earlier today. </p>
<p><del datetime="2008-09-03T03:55:40+00:00">Keep in mind that I&#8217;m rolling in true nerd style here: blogging at LAX on my T-Mobile HotSpot </del><del datetime="2008-09-03T03:54:06+00:00">collection</del> <del datetime="2008-09-03T03:55:40+00:00"><ins datetime="2008-09-03T03:54:06+00:00">connection</ins> waiting to board my flight to Atlanta. Expect typos, incomplete thoughts and possible profanity because I&#8217;m in that kind of mood.</del></p>
<p><ins datetime="2008-09-03T03:55:40+00:00">I have only spent a few short hours with the browser, but I can safely say that it may be a game changer. Chrome, which is based on <a href="http://webkit.org/">WebKit</a>,  has super speedy load times and <a href="http://twitter.com/paul_irish/statuses/907205182">man-handles JavaScript</a>. I don&#8217;t think Google Chrome is using <a href="http://webkit.org/blog/189/announcing-squirrelfish/">SquirrelFish</a> just yet. But I fully expect that a final release (or at least a later beta) will. </ins></p>
<div><img src="http://tiffanybbrown.com/images/uploads/2008/09/chrome.jpg" alt="" title="Google Chrome" width="500" height="337" /></div>
<h2>What I&#8217;m digging</h2>
<ul>
<li><b>Slim, trim interface.</b> Google got the interface right. It&#8217;s streamlined and simplified with only what you <em>need</em> to see at any given time. Other options (like your bookmarks bar) can be turned on and off as desired.</li>
<li><b>Speed.</b> I&#8217;m running this on a Windows XP Parallels virtual machine. <a href="http://twitter.com/paul_irish/statuses/907205182">Still fast</a>. As f*ck.</li>
<li><b>Dead-simple plug-in installs.</b> Chrome realized that I needed to install Flash. One click and a few minutes later, the player was downloaded, installed, and ready to use.</li>
<li><b>Most visited sites:</b> Similar to <a href="http://www.opera.com/">Opera</a>&#8216;s Speed Dial feature, but automated. Chrome automatically saves and organizes the sites you visit most and loads them as your home page when you start the browser (above photo).</li>
<li><ins datetime="2008-09-03T05:05:52+00:00"><b>Combined search address bar.</b> Consider it a lesson learned from Firefox, which despite having separate boxes for the URL and web search, will actually search the web if you type a keyword in the address bar. Google Chrome dispenses with the separate boxes. You want to search the web? Type in the address / search bar and hit enter.</ins></li>
<li><b><a href="http://www.google.com/support/chrome/bin/answer.py?answer=95464&#038;hl=en-US">Incognito surfing</a>.</b> It&#8217;s similar to Safari&#8217;s private browsing feature. Incognito lets you fire up a separate browsing window that gets rid of cookies and your surfing history when you close it.</li>
<li><b>Application shortcuts</b> Think of it as a site-specific browser, along the lines of <a href="http://fluidapp.com/">Fluid</a> or Mozilla&#8217;s <a href="http://labs.mozilla.com/2007/10/prism/">Prism</a> extension. Application shortcuts load separately from the Chrome browser window, and and offers a focused environment for web applications such as GMail or Zoho Writer.</li>
<li><b>The nerdiest of nerdy sh*t.</b> Yeah, Chrome lets you tweak your security settings and such. And yes, it has developer tools that don&#8217;t require extensions, or special configuration commands. But it&#8217;s killer nerd feature is <b>Task Manager</b>. Yes, <strong>Google Chrome lets you see which of your tabs and/or plug-ins is sucking up your CPU usage</strong>. <a href="http://tiffanybbrown.com/images/uploads/2008/09/picture-1.png" ><img src="http://tiffanybbrown.com/images/uploads/2008/09/picture-1-300x200.png" alt="" title="Google Chrome&#039;s task manager" width="300" height="200" id="wp-image-1453" style="display:block;" /></a> </li>
<li> <b>Crash protection.</b> Flash might crash, but it won&#8217;t take your browser down with it. <a href="http://tiffanybbrown.com/images/uploads/2008/09/chrome2.jpg"><img src="http://tiffanybbrown.com/images/uploads/2008/09/chrome2-300x113.jpg" alt="" title="Crash protection in Chrome" width="300" height="113" style="display:block;" /></a>
</li>
</ul>
<h3>What I&#8217;m not digging</h3>
<ul>
<li><ins datetime="2008-09-03T05:05:52+00:00"><b>Combined search address bar.</b> Firefox&#8217; keyword search is basically a Google &#8220;I&#8217;m feeling lucky&#8221; search. I like that Firefox removes the Google page middle man. Chrome, conversely, takes you to a Google search results page.</ins></li>
<li>No really. That&#8217;s the only thing I don&#8217;t like so far.</li>
</ul>
<p><ins datetime="2008-09-03T05:05:52+00:00">Now when looked at individually, there&#8217;s not much about Chrome that hasn&#8217;t been done before. Unified search bar? Firefox (sort of).  Single-site browsing (or site-specific browsing)? Firefox + Prism. Frequently visited pages? Opera Speed Dial. </p>
<p>The innovation, however, comes in the aggregate. <strong>No browser available today has an interface that is more thoughtfully-designed than Chrome</strong>. Period. Google rounded-up the best browser trends and innovations of the last few years, sprinkled them with G-Dust, and released them as one hell of a browser. </p>
<p>I am surprised, however, that Google&#8217;s Chrome is only available for Windows, considering it&#8217;s based on the <a href="http://webkit.org/">WebKit</a> project &#8212; the same software that powers <a href="http://www.apple.com/safari/">Apple&#8217;s Safari browser</a>. I&#8217;m also curious why they chose a WebKit core over a <a href="http://www.mozilla.org/">Mozilla</a> core, considering the history of collaboration and sharing between Google and the Mozilla Corporation.</p>
<p>For what it&#8217;s worth, Google says, that Mac OS X and Linux versions are coming soon. And I hope by &#8220;coming soon&#8221; they mean &#8220;next week.&#8221; In the meantime, Windows users can <a href="http://www.google.com/chrome">download Chrome</a> and put it through its paces.</ins></p>
<h3>Related</h3>
<ul>
<li><a href="http://tiffanybbrown.com/2008/07/24/the-pencil-project-prism-and-the-browser-as-platform/">The Pencil Project, Prism and the browser as platform</a></li>
<li><a href="http://tiffanybbrown.com/2008/08/24/javascript-in-firefox-31-will-be-wicked-fast/">JavaScript in Firefox 3.1 will be wicked fast</a></li>
<li><a href="http://tiffanybbrown.com/2006/07/13/essential-firefox-plug-ins/">Essential Firefox Extensions</a></li>
<li><a href="http://tiffanybbrown.com/2007/08/09/firefox-extensions/">My new favorite Firefox extensions</a></li>
<li><a href="http://www.google.com/chrome/intl/en/webmasters-faq.html">Google chrome&#8217;s FAQ for web developers</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2008/09/02/notes-on-google-chrome/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Web Standards Project releases Acid3</title>
		<link>http://tiffanybbrown.com/2008/03/03/web-standards-project-releases-acid3/</link>
		<comments>http://tiffanybbrown.com/2008/03/03/web-standards-project-releases-acid3/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 15:47:29 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[(x)HTML]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[Web standards]]></category>
		<category><![CDATA[acid]]></category>
		<category><![CDATA[acid2]]></category>
		<category><![CDATA[acid3]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/2008/03/03/web-standards-project-releases-acid3/</guid>
		<description><![CDATA[Three years after the Acid2 test was released, the WaSP has developed Acid3. What&#8217;s Acid? It&#8217;s a reference test designed to help browser developers determine whether they are complying with W3C specifications, and how well they handle invalid code. Acid1 and Acid2 tested for compliance with CSS 1 and CSS 2 specifications. Acid3 also tests [...]]]></description>
			<content:encoded><![CDATA[<p>Three years after the <a href="http://acid2.acidtest.org/">Acid2</a> test was released, the WaSP has developed <a href="http://www.webstandards.org/2008/03/03/acid3-putting-browser-makers-on-notice-again/">Acid3</a>. What&#8217;s <a href="http://www.acidtests.org/">Acid</a>? It&#8217;s a <a href="http://www.webstandards.org/action/acid2/">reference test</a> designed to help browser developers determine whether they are complying with <a href="http://www.w3.org/">W3C</a> specifications, and how well they handle invalid code.</p>
<p>Acid1 and Acid2 tested for compliance with <abbr title="Cascading Style Sheets">CSS</abbr> 1 and <abbr title="Cascading Style Sheets">CSS</abbr> 2 specifications. Acid3 also tests for support of <a href="http://www.w3.org/DOM/"><abbr title="Document Object Model">DOM</abbr></a> Scripting / <a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMAScript</a>, <a href="http://www.w3.org/Graphics/SVG/"><abbr title="scalable vector graphics">SVG</abbr></a> and <a href="http://www.w3.org/TR/css3-webfonts/">webfonts</a>.</p>
<p>Safari 3 and Opera 9 pass the <a href="http://acid2.acidtests.org/">Acid2</a> test, as does the beta version of Firefox 3. <a href="http://tiffanybbrown.com/2007/12/19/ie8-will-pass-the-acid-test/">Version 8</a> of Internet Explorer will also pass the Acid2 test. </p>
<p>Here&#8217;s how today&#8217;s leading browsers handle Acid3 (check out the <a href="http://acid3.acidtests.org/reference.html">reference image</a>). Each image links to a larger screenshot.</p>
<h3>Firefox 2</h3>
<p><a href='http://tiffanybbrown.com/images/uploads/2008/03/firefox2acid3.jpg' title='Firefox 2 Acid 3'><img src='http://tiffanybbrown.com/images/uploads/2008/03/firefox2acid3-400.jpg' alt='Firefox 2 Acid 3' /></a></p>
<h3>Opera 9.26</h3>
<p><a href='http://tiffanybbrown.com/images/uploads/2008/03/opera926acid3.jpg' title='Opera 9.26 Acid 3 results'><img src='http://tiffanybbrown.com/images/uploads/2008/03/opera926acid3-400.jpg' alt='Opera 9.26 Acid 3 results' /></a></p>
<h3>Internet Explorer 6</h3>
<p><a href='http://tiffanybbrown.com/images/uploads/2008/03/ie6acid3.jpg' title='ie6acid3.jpg'><img src='http://tiffanybbrown.com/images/uploads/2008/03/ie6acid3400.jpg' alt='ie6acid3.jpg' /></a></p>
<h3>Internet Explorer 7</h3>
<p><a href='http://tiffanybbrown.com/images/uploads/2008/03/ie7acid3.jpg' title='Internet Explorer 7 Acid3'><img src='http://tiffanybbrown.com/images/uploads/2008/03/ie7acid3-400.jpg' alt='Internet Explorer 7 Acid3' /></a></p>
<h3>Safari 3</h3>
<p><a href='http://tiffanybbrown.com/images/uploads/2008/03/safari3acid3.jpg' title='Safari 3 Acid 3'><img src='http://tiffanybbrown.com/images/uploads/2008/03/safari3acid3-400.jpg' alt='Safari 3 Acid 3' /></a></p>
<h3>Firefox 3 Beta</h3>
<p><a href='http://tiffanybbrown.com/images/uploads/2008/03/firefoxbeta3acid.jpg' title='firefoxbeta3acid.jpg'><img src='http://tiffanybbrown.com/images/uploads/2008/03/firefoxbeta3acid-400.jpg' alt='Firefox 3 Beta Acid 3' /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2008/03/03/web-standards-project-releases-acid3/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>On IE8: Pragmatic and practical, but I still don&#8217;t like it</title>
		<link>http://tiffanybbrown.com/2008/01/25/internet-explorer-8-version-targeting-meta-tag/</link>
		<comments>http://tiffanybbrown.com/2008/01/25/internet-explorer-8-version-targeting-meta-tag/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 16:38:26 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[(x)HTML]]></category>
		<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Web Development & Programming]]></category>
		<category><![CDATA[Web standards]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[webdevelopment]]></category>
		<category><![CDATA[webstandards]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/2008/01/25/internet-explorer-8-version-targeting-meta-tag/</guid>
		<description><![CDATA[For some background on this post, please start by reading Aaron Gustafson&#8217;s Beyond DOCTYPE: Web Standards, Forward Compatibility, and IE8 on this week&#8217;s edition of A List Apart, or any of the links from my Internet Explorer 8 round-up post. This post is an extended version of my comment there. About 6 years ago, I [...]]]></description>
			<content:encoded><![CDATA[<p class="editors-note">For some background on this post, please start by reading Aaron Gustafson&#8217;s <a href="http://alistapart.com/articles/beyonddoctype">Beyond DOCTYPE: Web Standards, Forward Compatibility, and IE8</a> on this week&#8217;s edition of <span class="website title">A List Apart</span>, or any of the links from my <a href="http://tiffanybbrown.com/2008/01/22/internet-explorer-8-round-up/">Internet Explorer 8 round-up</a> post. This post is an extended version of my <a href="http://tiffanybbrown.com/2008/01/22/internet-explorer-8-round-up/#comment-90568">comment</a> there.</p>
<p>About 6 years ago, I remember taking part in a conversation about preferred browsers on the <a href="http://janemag.com/" class="magazine title">Jane</a> magazine message boards. IE 5.x was still king of the PC world. IE 6 was coming on strong. Netscape 4 was still widely used by universities. Netscape 6 was on its way. </p>
<p>Most of the respondents said they preferred Internet Explorer. Why? Because sites just &#8220;look right&#8221; and &#8220;work better&#8221; in Internet Explorer. My response at the time was simple: if a site doesn&#8217;t work in Netscape, <em>it&#8217;s because the web developer didn&#8217;t know what (s)he was doing</em>.  </p>
<p>Of course, they didn&#8217;t care. They were far more into Sephora than HTML code quality. As far as they were concerned, Netscape was the problem. They didn&#8217;t blame crap code, or Microsoft for developing a browser that stomped harder than a Catalonian flamenco dancer all over the W3C specs and allowed ugly code to thrive. <strong>They blamed Netscape</strong>.</p>
<p>I was reminded of that conversation when I first read Microsoft&#8217;s recent announcement about Internet Explorer 8. After my initial  <q class="i">D*MNF*CKINGBLOODYHELL!JUSTBREAKTHF*CKINGWEBALREADYMICROSOFT!WHATTHEF*CK? IAMTIREDOFYOURAGGEDYBASTARDSMAKINGMYDAYJOB1000TIMESHARDERTHANITNEEDSTOBEBECAUSEYOUCAN&#8217;T DEVELOPABROWSERTHATFOLLOWSAF*CKING10YEAROLDSPEC!!!</q> reaction passed, I came to the following conclusion: <strong>this is the best approach to a bad situation</strong>.</p>
<p>Microsoft does not want to be where Netscape was. It&#8217;s a sad but true fact is that if a site breaks, the average web user &#8212; and, dare I say, average web developer &#8212; will <strong>blame the browser</strong>. Microsoft is too entrenched in corporate intranets and applications to let that happen. Doing so would cause a sh*tstorm of massive proportions for the company. From a business perspective, I understand. </p>
<p>And while I am also not happy about the default implementation (as <cite>Jeremy Keith</cite> explained <q cite="http://adactio.com/journal/1402">Unless you explicitly declare that you want IE8 to behave as IE8, it will behave as IE7.</q>), <strong>opting-in to web standards eliminates the need to revise existing code</strong>. </p>
<p>Yes, it&#8217;s potentially a nail in the coffin for <a href="http://en.wikipedia.org/wiki/Progressive_enhancement">progressive enhancement</a> techniques. Yes, we&#8217;ll still have to do something special to cater to Microsoft browsers. <ins datetime="2008-01-25T16:48:14+00:00">Yes, this could freeze web development at the IE7 level for years to come.</ins> But I believe &#8212; and it pains me to say it given the hate-hate more relationship I have with Microsoft browsers &#8212; that <strong>Microsoft, given its position, had no other choice</strong>.</p>
<p>But putting pragmatic approaches and practical considerations aside, I think <a href="http://weblog.200ok.com.au/2008/01/opt-out-version-targeting-is-spam.html"><cite>Ben Buchanan</cite></a> said it best: </p>
<blockquote cite="http://weblog.200ok.com.au/2008/01/opt-out-version-targeting-is-spam.html"><p>
If they&#8217;ve included a <code>DOCTYPE</code>, they&#8217;ve declared they want to render to standards. If they did that in ignorance, it&#8217;s time they started earning their money instead of letting <span class="software">Dreamweaver<span> do their jobs.<br />
</span></span></p></blockquote>
<p><b>Related:</b> <a href="http://tiffanybbrown.com/2008/01/22/internet-explorer-8-round-up/">Internet Explorer 8 Round Up</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2008/01/25/internet-explorer-8-version-targeting-meta-tag/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>&#8216;Namespace&#8217; your &lt;body&gt; tags</title>
		<link>http://tiffanybbrown.com/2007/12/18/namespace-your-body-tags/</link>
		<comments>http://tiffanybbrown.com/2007/12/18/namespace-your-body-tags/#comments</comments>
		<pubDate>Tue, 18 Dec 2007 09:00:11 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web Development & Programming]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/2007/12/18/namespace-your-body-tags/</guid>
		<description><![CDATA[Lately, I&#8217;ve been using specificity, inheritance and &#8216;The Cascade&#8217; to my advantage by adding an id to the &#60;body&#62; tag of every page. This id acts as a namespace of sorts, allowing you to assign page or section-specific style sheets. It&#8217;s a technique I&#8217;ve employed on smaller, static sites. But it would work at least [...]]]></description>
			<content:encoded><![CDATA[<p>Lately, I&#8217;ve been using specificity, inheritance and &#8216;The Cascade&#8217; to my advantage by adding an <code>id</code> to the <code>&lt;body&gt;</code> tag of every page. This id acts as a <a href="http://en.wikipedia.org/wiki/Namespace">namespace</a> of sorts, allowing you to assign page or section-specific style sheets.</p>
<p>It&#8217;s a technique I&#8217;ve employed on smaller, static sites. But it would work at least as well on complex sites with differing content layouts, or with content management and templating systems that generate category identifiers.</p>
<p>I start by defining global styles common to all pages on the site. For example:</p>
<pre>
body{
     background: #fff;
     color: #606;
     font: 75% / 1.5 arial, helvetica, sans-serif;
}
h1{
     color: #c09;
     font-family: Georgia;
}
</pre>
<p>Then I use what I&#8217;ll call compound selectors to set page- or section-level styles. For example:</p>
<pre>
body#aboutUs h1{
     font-family: 'Lucida Grande';
}
</pre>
<p>I find that by using this technique my CSS becomes far more organized, and my HTML requires far fewer class and id names. I can group page and section specific styles together making them easier to find and read at a glance. </p>
<p>An added benefit is that you have another &#8216;hook&#8217; in your document for CSS or DOM scripting.</p>
<p><strong>Related:</strong> </p>
<ul>
<li><a href="http://tiffanybbrown.com/sxsw06/">Understanding CSS and Methods for Hack Management</a></li>
<li><a href="http://tiffanybbrown.com/blogher06/">Blog customization: DIY or Hire and What to Expect</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2007/12/18/namespace-your-body-tags/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Dallas, TX: Webmaster Jam Session</title>
		<link>http://tiffanybbrown.com/2007/08/07/dallas-tx-webmaster-jam-session/</link>
		<comments>http://tiffanybbrown.com/2007/08/07/dallas-tx-webmaster-jam-session/#comments</comments>
		<pubDate>Tue, 07 Aug 2007 19:03:02 +0000</pubDate>
		<dc:creator>tiffany</dc:creator>
				<category><![CDATA[(x)HTML]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Tech Events]]></category>
		<category><![CDATA[Web Development & Programming]]></category>
		<category><![CDATA[Web standards]]></category>

		<guid isPermaLink="false">http://tiffanybbrown.com/2007/08/07/dallas-tx-webmaster-jam-session/</guid>
		<description><![CDATA[Get up to speed on web standards and design techniques with some of the industry&#8217;s top names. Just based on the speaker list, this could be the web conference to attend if you can&#8217;t make it to South by Southwest next March. Speakers include Molly Holzschlag, Garrett Dimon, Stephanie Sullivan, and Jared Spool. It&#8217;s really [...]]]></description>
			<content:encoded><![CDATA[<p>Get up to speed on web standards and design techniques with some of the industry&#8217;s top names. Just based on the <a href="http://2007.webjamsession.com/speakers/">speaker list</a>, this could be the web conference to attend if you can&#8217;t make it to South by Southwest next March.</p>
<p>Speakers include <a href="http://www.molly.com/">Molly Holzschlag</a>, <a href="http://garrettdimon.com/">Garrett Dimon</a>, <a href="http://www.w3conversions.com/">Stephanie Sullivan</a>, and <a href="http://www.uie.com/about/consultants/">Jared Spool</a>. It&#8217;s really a top-notch list.</p>
<div class="event-details">
<h3>Event details</h3>
<ul>
<li>Where: Adam&#8217;s Mark Hotel and Resort, 400 North Olive Street, Dallas, TX 75201 (<a href="http://maps.google.com/maps?f=q&#038;hl=en&#038;geocode=&#038;q=adam's+mark+dallas,+tx&#038;ie=UTF8&#038;ll=32.778038,-96.795731&#038;spn=0.424902,0.755997&#038;z=11&#038;iwloc=A&#038;om=1">map</a>)</li>
<li>When: September 20th and 21st, 2007</li>
<li>How much: $199 for an attendee badge; $399 for a platinum badge with access to special sessions</li>
</ul>
</div>
<div class="related-posts">
<h3>Other upcoming conferences</h3>
<ul>
<li><a href="http://tiffanybbrown.com/2007/05/16/burlingame-ca-zend-php-conference-2007/">Burlingame, CA: Zend / PHP Conference 2007</a></li>
<li><a href="http://tiffanybbrown.com/2007/05/23/boston-ma-flashforward-2007/">Boston, MA: Flashforward 2007</a></li>
<li><a href="http://tiffanybbrown.com/2007/06/28/future-of-web-design-new-york/">New York City: Future of Web Design</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://tiffanybbrown.com/2007/08/07/dallas-tx-webmaster-jam-session/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

