<?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>Atlantic BT &#187; Mark Caron</title>
	<atom:link href="http://www.atlanticbt.com/blog/author/markc/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.atlanticbt.com/blog</link>
	<description>Internet Marketing and Web Development in Raleigh</description>
	<lastBuildDate>Wed, 08 Feb 2012 02:40:13 +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>WordPress 3.3 Shortcode Issue</title>
		<link>http://www.atlanticbt.com/blog/wordpress-3-3-shortcode-issue/</link>
		<comments>http://www.atlanticbt.com/blog/wordpress-3-3-shortcode-issue/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 20:04:19 +0000</pubDate>
		<dc:creator>Mark Caron</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Programming]]></category>
		<category><![CDATA[3.3]]></category>
		<category><![CDATA[add_action]]></category>
		<category><![CDATA[add_shortcode]]></category>
		<category><![CDATA[do_shortcode]]></category>
		<category><![CDATA[init]]></category>
		<category><![CDATA[shortcode]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.atlanticbt.com/blog/?p=4401</guid>
		<description><![CDATA[If you find yourself scratching your head over why your shortcodes have stopped working in WordPress 3.3, we&#8217;ve discovered a funny quirk. Granted, this fix may actually be the right way to call all shortcodes, but previously we&#8217;ve been able to lazily call it directly from our functions.php file and no one cared. But, now [...]]]></description>
			<content:encoded><![CDATA[<p>If you find yourself scratching your head over why your shortcodes have stopped working in WordPress 3.3, we&#8217;ve discovered a funny quirk. Granted, this fix may actually be the right way to call all shortcodes, but previously we&#8217;ve been able to lazily call it directly from our <code>functions.php</code> file and no one cared. But, now it seems, with the upgrade, that WordPress 3.3 does care. It requires your <em>add_shortcode()</em> function to be called within their <em>init()</em> hook. Calling it directly after your newly declared shortcode function won&#8217;t work anymore.</p>
<p>The lazy method we got away with before:</p>
<pre class="brush: php; title: ; notranslate">
function abtcore_shortcode_button( $atts, $content = null ) {
	extract( shortcode_atts( array(
		'color' =&gt; 'blue'
	), $atts ) );
	return '&lt;p&gt;' . $content . '&lt;/p&gt;';
}

add_shortcode( 'button', 'abtcore_shortcode_button' );
</pre>
<p>The better way that is now required by WordPress 3.3:</p>
<pre class="brush: php; highlight: [7]; title: ; notranslate">
function abtcore_shortcode_button( $atts, $content = null ) {
	extract( shortcode_atts( array(
		'color' =&gt; 'blue'
	), $atts ) );
	return '&lt;p&gt;' . $content . '&lt;/p&gt;';
}
add_action('init', 'abtcore_register_my_shortcodes', 100);
function abtcore_register_my_shortcodes() {
	add_shortcode( 'button', 'abtcore_shortcode_button' );
}
</pre>
<p>Notice the <em>add_action()</em> call on the &#8216;init&#8217; on line 7. This will properly register your shortcode function when WordPress initiates.</p>
<p>I hope this helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.atlanticbt.com/blog/wordpress-3-3-shortcode-issue/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Brewing Up a Website: How Making Beer is Like Designing a Website</title>
		<link>http://www.atlanticbt.com/blog/brewing-up-a-website-how-making-beer-is-like-designing-a-website/</link>
		<comments>http://www.atlanticbt.com/blog/brewing-up-a-website-how-making-beer-is-like-designing-a-website/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 23:05:37 +0000</pubDate>
		<dc:creator>Mark Caron</dc:creator>
				<category><![CDATA[Off Topic]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[beer]]></category>
		<category><![CDATA[brewing]]></category>
		<category><![CDATA[homebrew]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[UX]]></category>

		<guid isPermaLink="false">http://www.atlanticbt.com/blog/?p=3867</guid>
		<description><![CDATA[You&#8217;re thinking one of two things: &#8220;How on Earth can you compare brewing beer to building a website?&#8221; Or, &#8220;oh no, not another analogy!&#8221; Either way, stay with me here. Comparing brewing beer to making a website may not be as far-fetched as one might assume. It&#8217;s no secret, I love beer. When I&#8217;m not [...]]]></description>
			<content:encoded><![CDATA[<p>You&#8217;re thinking one of two things: &#8220;How on Earth can you compare brewing beer to building a website?&#8221; Or, &#8220;oh no, not another analogy!&#8221; Either way, stay with me here. Comparing brewing beer to making a website may not be as far-fetched as one might assume.</p>
<p>It&#8217;s no secret, I love beer. When I&#8217;m not talking about web design, I&#8217;m talking about beer and my homebrewing hobby. So naturally, this is where my &#8220;water cooler discussions&#8221; usually end up. What I&#8217;ve found from these conversations is that I have a lot of co-workers that love beer too. If you weren&#8217;t aware, we have 3 homebrewers, 1 ex-commercial-brewer, and about 25 or more avid beer fans in our office.</p>
<p>Fanboys aside, designing a beer and the process of brewing is similar to the planning and developing of a website. Both industries have a handful of key ingredients and important factors:</p>
<ol>
<li>The concept or idea</li>
<li>The purpose and end-goals</li>
<li>The foundation</li>
<li>The experience</li>
<li>The consumers and keeping them coming back</li>
</ol>
<p>When these factors come together in harmony, we&#8217;re left with a  product  that makes both the brewer (or web designer and client) and the consumer  equally  happy. And, on the other end, if these factors don&#8217;t jive, we&#8217;re left with a sad product that doesn&#8217;t sell.</p>
<div id="attachment_3915" class="wp-caption alignright" style="width: 310px"><a href="http://www.flickr.com/photos/walker_ep/4628326592/sizes/m/in/photostream/"><img class="size-medium wp-image-3915   " title="4628326592_7606369ca4" src="http://d1rvlzmuzboe2s.cloudfront.net/blog/wp-content/uploads/2011/11/4628326592_7606369ca4-300x200.jpg" alt="" width="300" height="200" /></a><p class="wp-caption-text">Photo by e_walk on Flickr</p></div>
<h2>The Concept or Idea</h2>
<p>In order to craft a great beer, you first need a solid idea. What kind of beer are people drinking? How saturated is the market? What kind of beer do I want to make? These are just some of the questions any product design phase. They&#8217;re necessary because they help you focus on your concept. Going too broad too soon could result in failure. So, we focus on what will work for now. Once we build up a following, then we can begin to introduce all those other ideas or recipes floating around in our head.</p>
<p>So, I&#8217;ve done my research and I&#8217;ve found that most people in Raleigh seem to like pale ales. There&#8217;s already a few local breweries that make this style. But, there&#8217;s room for competition since the demand is so high. Now that we have a style chosen for our flagship, it&#8217;s time to plan and test the recipe. We find some friends, invite them over, and have them taste our latest batch of beer. We might even submit our idea to a panel of experts looking for feedback. In the homebrew world, this panel of experts are judges at a local competition. Regardless, every person along the way helps us formalize our concept&#8211;making it stronger.</p>
<p>Then, we need a catchy name. The name needs to say it all. And, most of the time, it needs to not have been used before. We&#8217;ll call our pale ale &#8220;Crabtree Pale Ale.&#8221; This name not only suggests the hoppy and dry finish we&#8217;re going for, but it means something to my local market too. I can already picture the label.</p>
<h2>The Planning and End-Goals</h2>
<p>Fully understanding the purpose of your concept can help you derive your end-goals. And, properly planning this execution is vital to success. This would be like understanding and formulating your recipe to suit a particular beer category. What flavor, aroma, and texture components are necessary to the style? What ingredients are used to achieve this complexity? And, most importantly, what can we do to keep this product on or under budget without sacrificing quality?</p>
<p>We&#8217;re making a <a title="BJCP 2008 Guidelines" href="http://www.bjcp.org/2008styles/style10.php#1a" target="_blank">pale ale</a>, so we need a final beer that is relatively clean, moderately hoppy or bitter, and maybe a touch citrusy. The final product should also be pale and clear. There&#8217;s a few malts that we can choose from to create the flavors we want, as well as, a whole-host of American hops that will fit the profile.</p>
<p>It&#8217;s no coincidence that planning and end-goals are so closely related to the concept. What you&#8217;ll find is that there&#8217;s a lot of reliance on, or blending of, each of these steps. This is necessary to achieve the best product possible. This is also why it&#8217;s important to have all the moving parts under one roof.</p>
<h2>The Foundation</h2>
<p>Arguably, the most important ingredient in beer is water. In fact, beer is comprised mostly of water. Therefore, water quality naturally plays the biggest part. Many brewers treat their water to achieve the profile appropriate for the beer style. Whether we want hard or soft water, it is much like choosing the right code base, e.g., .Net or PHP. Each has it&#8217;s own advantages and disadvantages. Water can accentuate hop flavor or malt flavors. It can affect the efficiency of our <a href="http://en.wikipedia.org/wiki/Mashing" target="_blank">mash</a> (similar to making tea with grain). And, if you&#8217;re like me, this complicated chemistry gives you a headache, much like the programming languages and networking/hosting required for making a website.</p>
<p>The quality and balance of your code and HTML is much like water in brewing. Bad code can really ruin a website, and chlorine can ruin a beer. Gross.</p>
<h2>The Experience</h2>
<p>The overall experience, or taste of the beer, is crafted in part by the water quality, as well as, the ingredients and techniques used during the brewing process. In web design, this crafting is done by our User Experience (UX) Designers. They&#8217;re major players throughout the entire life-cycle of the project. Everything that is done passes through their UX filter. Their chief concern is always how the end-user will experience and use the website. For beer, if a flavor component is off, the consumer will reject it because it doesn&#8217;t taste right or it is too hard to drink.</p>
<p>This &#8220;experience layer&#8221; in brewing has many moving parts. There&#8217;s the malt, the hops, the pH balance of the water, and the temperature control (at each step). And, if the style requests, a spice or adjunct may be in the mix.</p>
<p>Malt brings sweetness and potential alcohol. Hops brings bitterness or balance (it also preserves the beer). Chemicals in the water accentuate each of these flavors as well as improve the efficiency of the process. But, temperature control can easily become the biggest player in the result of the final product. I can add the right amount of hops, but if I mash too cool, then I won&#8217;t have enough residual sweetness to balance the beer. I&#8217;ll be left with a harsh, thin, liquid. Been there before.</p>
<p>This is much like adding lots of eye-candy, frills, and information to your site, only to find that you didn&#8217;t pay attention to what the users (not you) are looking for from your website. If the frills don&#8217;t help the experience, then don&#8217;t add them. And, like-wise, if all the moving parts parts (designers, developers, marketing, and UX) don&#8217;t come together in perfect harmony, something might break.</p>
<p>The experience is a double-edged sword. It&#8217;s all about balancing the frills and ingredients to achieve the perfect experience.</p>
<h2>The Consumer and Keeping Them Coming Back</h2>
<p>You may have noticed that I left one key ingredient out of my beer analogy so far. That is yeast. Yeast is our consumer. And, so is the actual consumer. But, to be fair, yeast is the first organism consuming our beer.</p>
<p>During the entire process, you&#8217;re attempting to make a sugary water extract, called <a href="http://en.wikipedia.org/wiki/Wort" target="_blank">wort</a>, that will be like a <a href="http://en.wikipedia.org/wiki/Candy_Land" target="_blank">Candy Land</a> for these tiny single-celled creatures. Unfortunately, though, it&#8217;s not as simple as that. If you mash the malt too high, you&#8217;ll be left with an un-fermentable extract. Essentially, you&#8217;ve made a beer with too much sweetness. Or, a website with too many frills and not enough digestible substance. This could be too much content or, conversely, too much JavaScript fanciness hiding the lack of precision. We want those yeast cells to consume and multiply. We want them to have families that consume the beer too.</p>
<p>Another potential problem is not adding the right amount of yeast. This would be comparable to hitting the market without proper marketing. What happens? The fermentation happens too slow resulting in off-flavors. And, possibly, you end up with a stuck fermentation. In the product world, this is slow growing and painful return on investment. Or worse, no growth at all.</p>
<p>There&#8217;s lots of ways to keep the fermentation going, or entice the consumer. We could control the temperature, making sure it&#8217;s appropriate for growth. We could use the appropriate yeast and pitch the perfect amount of it. This is similar to choosing the right target audience and controlling the amount of marketing. During the products life, how much marketing are you investing into your product?</p>
<p>Or, if the style allows, stick the beer in the corner and allow it to open ferment at what ever temperature it gets in the room during the day. This would be like viral marketing&#8211;letting the consumer run with it! But, then again, it all comes back to the initial concept: what style or what am I selling? And, how do you market the product appropriately?</p>
<h2>Final Product</h2>
<p>Once the yeast has done it&#8217;s thing, you&#8217;ve got a <a title="Tasty Beverage" href="http://tastybeverageco.com/" target="_blank">tasty beverage</a> waiting for you in the icebox. So, sit back, relax, and enjoy the product you&#8217;ve created. And, if you venture beyond the hobby, maybe it&#8217;ll make you lots of money one day. Cheers!</p>
<p><em>By the way, what&#8217;s your favorite beer?</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.atlanticbt.com/blog/brewing-up-a-website-how-making-beer-is-like-designing-a-website/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Getting the Current Index Position of an Element in jQuery</title>
		<link>http://www.atlanticbt.com/blog/current-index-position-element-in-jquery/</link>
		<comments>http://www.atlanticbt.com/blog/current-index-position-element-in-jquery/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 13:45:14 +0000</pubDate>
		<dc:creator>Mark Caron</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Programming]]></category>
		<category><![CDATA[eq]]></category>
		<category><![CDATA[index position]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tabs]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.atlanticbt.com/blog/?p=985</guid>
		<description><![CDATA[jQuery has quickly become one of the defacto JavaScript libraries for web developers. Its popularity has increased for many reasons including its ease of use, its built-in methods that aid in basic tasks, and its multitude of plug-ins that can be found to enhance its capabilities. However, when I was writing a function the other [...]]]></description>
			<content:encoded><![CDATA[<p>jQuery has quickly become <em>one</em> of the defacto JavaScript libraries for web developers. Its popularity has increased for many reasons including its ease of use, its built-in methods that aid in basic tasks, and its multitude of plug-ins that can be found to enhance its capabilities.</p>
<p>However, when I was writing a function the other day, I came across a minor stumbling block in jQuery. I was trying to create universal “continue” buttons throughout some user-interface tabs and I realized I needed a specific method that isn’t part of the jQuery library; some way to determine the current index of the element I was on.</p>
<p>Having been to<a href="http://docs.jquery.com/"> jQuery Docs</a> several times, I didn’t recall ever seeing what I needed, but I was hoping I’d be lucky. Unfortunately, after a visit to the documentation, I found that I was right. There was no such method. Of course, the <code>eq()</code> method does exist, but that’s the direct opposite of what I was looking for—to move to a specific index position of the matched elements. Moreover, in using the <code>eq()</code> method you’d need to know which index you’d like to select!</p>
<p>The <code>eq()</code> selection concept is much like the built-in “select” parameter that you can pass through the <acronym title="User Interface">UI</acronym> Tabs method I was hoping to use. For instance:</p>
<pre>	$tabs.tabs(‘select’, 1);</pre>
<p>This will select the first tab in the set. So, if I had a continue button at the bottom of each tab panel how would I know how to select the very next tab? I could, of course, make a special case for every instance of a panel’s continue button, but that poses a problem with extensibility. What if we added more tabs? Plus, it&#8217;s just ugly code. The fault here is that you&#8217;d have to know what each tab is named and how they relate to one another—creating a problem if the tabs were ever re-organized.</p>
<p>Instead I’d need something a little more universal. I&#8217;d need a single function that would encompass all of the continue buttons and switch to the next tab based on its current index. But, as I discovered in the documentation, you can’t locate the current index with a simple method like <code>eq()</code>.</p>
<p>With all of my struggles aside, the good news is that the round-about way of getting the current index position is really not all that difficult. After a few minutes of thought and some idea bouncing (off of the smarter programmers here in the office) we came to the conclusion that I could simply count how many elements there are before the tab I’m on using the <code>prevAll()</code> and <code>length</code> methods built-in to jQuery. Thus, if there were 2 previous elements, I must be at the third item. The selection looks something like:</p>
<pre>	var $tabs = $(‘#tabs-area ul.ui-tabs-nav’).tabs({ fx: { opacity: ‘toggle’ } });

	$(‘#tabs-area a.tab-link’).click(function () {
    		currentIndex = $(this).parent().prevAll().length;
    		alert(currentIndex);
    		return false;
	});</pre>
<p>Here I’m selecting the anchor elements with classes of “tab-link” which is what I called each “continue” button. When they’re clicked, I store the number of “ui-tabs-panels” before the current tab. Please note, that the <code>parent()</code> method is being used to traverse backwards to these “ui-tabs-panels.” <em>You&#8217;re path may vary depending on your HTML markup.</em></p>
<p>Using “currentIndex” I can check if it is larger than the length of the tabs array (meaning I’m not on the last tab yet) to prevent any possible tab selection errors by trying to move past the last tab. Then I can use currentIndex to select the next tab. This would make our little function look like this now:</p>
<pre>	var $tabs = $(‘#tabs-area ul.ui-tabs-nav’).tabs({ fx: { opacity: ‘toggle’ } });

	$(‘#tabs-area a.tab-link’).click(function () {
    		currentIndex = $(this).parent().prevAll().length;
    		if (currentIndex &lt; $tabs.tabs(‘length’)) {
       			$tabs.tabs(‘select’, currentIndex);
    		}
    		return false;
	});</pre>
<p>I also must mention that in this function I’m selecting currentIndex in the statement <code>$tabs.tabs(‘select’, currentIndex);</code>. This may be confusing since the way the array indices and the “select” parameter work are based on a zero beginning index. But, when length is calculated it starts with 1. So, there’s a bit of an “off-by-one-bug.” I can, of course, trim the length by 1 and adjust the if statement to be <code>&lt;=</code>, but that would be equally confusing. Either way, rest assured that the currentIndex in the “select” statement will select the very next tab.</p>
<p>In closing, it is quite easy to determine the current index position of an element in jQuery without using any built-in methods. All you need to do is count:</p>
<pre>	currentIndex = $(this).parent().prevAll().length;</pre>
<p>This assignment is very easy to build upon (or adjust the index by subtracting 1—if you’re picky).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.atlanticbt.com/blog/current-index-position-element-in-jquery/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Beyond HTML 5 and CSS 3: Sample of Suggestions</title>
		<link>http://www.atlanticbt.com/blog/beyond-html-5-and-css-3-sample-of-suggestions/</link>
		<comments>http://www.atlanticbt.com/blog/beyond-html-5-and-css-3-sample-of-suggestions/#comments</comments>
		<pubDate>Tue, 12 May 2009 17:03:15 +0000</pubDate>
		<dc:creator>Mark Caron</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS 3]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML 5]]></category>
		<category><![CDATA[microformats]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://74.84.218.58/blog/?p=205</guid>
		<description><![CDATA[Since HTML 5 and CSS 3 are still in the working drafts, I thought I would propose a few ideas I&#8217;ve been cooking up that would make my life easier and perhaps add an edge to the constantly evolving standards. Although, I hope these ideas never become a piece of proprietary junk that Internet Explorer [...]]]></description>
			<content:encoded><![CDATA[<p>Since <acronym title="HyperText Mark-up Language">HTML</acronym> 5 and <a href="http://www.w3.org/TR/css3-roadmap/"><acronym title="Cascading Style Sheets">CSS</acronym> 3</a> are still in the working drafts, I thought I would propose a few ideas I&#8217;ve been cooking up that would make my life easier and perhaps add an edge to the constantly evolving standards. Although, I hope these ideas never become a piece of proprietary junk that Internet Explorer or Mozilla latches onto on their own. I would hate to aid non-standards.</p>
<p>I realize some of my ideas may go beyond the so-called &#8220;scope&#8221; of the original intentions of CSS and HTML/<abbr title="Extensible Hypertext Markup Language">XHTML</abbr>. But my hope, like all &#8220;<dfn title="A web developer who is actively involved in the creation, adoption, and/or promotion of web standards." (Source: Wikipedia - slang term)">standardistas</dfn>,&#8221; is to get a focused set of standards for all browsers to comply with (does such a Utopia exist?) and for these standards to give more power to semantic markup and provide more advantages to CSS.</p>
<p>I&#8217;ll begin with HTML first, since semantic markup is the most important:</p>
<h4>1. Custom Elements</h4>
<p>I&#8217;ve read some of the <a href="http://www.w3.org/TR/html5/">working draft for HTML 5</a> and I must say that I&#8217;m impressed with some of the ideas that have been added. It&#8217;s going to give more meaning to HTML code, which is precisely what web developers need! However, I did cringe at the proposed &#8220;header&#8221; and &#8220;footer&#8221; elements. I understand their purpose, but aren&#8217;t the words header and footer presentational? For instance, what if at first I designed the footer to be at the bottom of the document. In the markup, perhaps it is. But later (for some odd reason) the client decides he/she wants that info to be moved to the top? Would this still be considered the &#8220;footer?&#8221; I&#8217;m sure there are several sides to the argument, but I&#8217;ve also read accounts where people like Andy Clarke have <a href="http://forabeautifulweb.com/blog/about/more_on_developing_naming_conventions_microformats_and_html5/">proposed the same</a>. Footers should be &#8220;siteinfo&#8221; and headers should be &#8220;branding&#8221; or &#8220;masthead.&#8221; In contrast, Dan Cederholm and Andy Budd still use &#8220;header&#8221; and &#8220;footer&#8221; on their personal sites. But regardless of who uses what, I still feel these names are presentational and HTML is for content not for its appearance or layout.</p>
<p>I really like most of the other elements like &#8220;menu,&#8221; &#8220;section,&#8221; &#8220;dialog,&#8221; &#8220;aside,&#8221; &#8220;datagrid,&#8221; etc. They really give more meaning to the markup in place of the generic div&#8217;s with id&#8217;s. This will definitely give more power to CSS and more meaning to the document at the same time. Specifically it allows you to separate your styles with semantic element names and giving them unique rules with really low specificity instead of making them arbitrary div&#8217;s. Simply put, this will give you more control with id&#8217;s when they&#8217;re needed.</p>
<p>But what I&#8217;m proposing is that instead of giving set element names that will always be debated on their semantic merit, why not give that power over to the developer? If a developer could declare his/her own elements in the head of the document, he/she could have more control. I envision it working something like this:</p>
<pre><code>
		&lt;head&gt;
			&lt;elements type="elements/text"&gt;
				section : div;
				dialog : div;
				menu : ul;
				masthead : div;
				<em>newelementname : baseelementbehavior;</em>
			&lt;/elements&gt;
		&lt;/head&gt;

				</code></pre>
<p>In this element named &#8220;elements&#8221; the code would be handled by the browser. It would read each line, separated by a semi-colon, and take note of the custom elements being declared and determine their base behavior off of the base element listed after the colon. For instance, the first custom item &#8220;section&#8221; would behave like a &#8220;div.&#8221; This would give ultimate control to the developer to make his/her document follow its purpose semantically. This will also open up the possibilities for more <a href="http://www.microformats.org">microformats</a>! A developer could utilize this to create &lt;tel&gt; elements, &lt;adr&gt; elements, &lt;product&gt; elements, and more, replacing the annoying &lt;div class=&#8221;product&#8221;&gt; and more nested, loosely based &#8220;classitis.&#8221;</p>
<h4>2. Definition List Item</h4>
<p><del>I can&#8217;t recall where I saw the &lt;di&gt; element once, but I&#8217;ve been unable to relocate it through my web searches.</del><ins><a href="http://www.w3.org/TR/xhtml2/mod-list.html#edef_list_di">XHTML 2&#8242;s working draft describes a definition list item</a>,</ins> but I wonder why this element is still not supported well, if at all. And I didn&#8217;t see any proposed plans for it in the HTML 5 working drafts. I feel that this would be a good addition because it provides one more &#8220;hook&#8221; for styling and more meaning as well. The definition item would separate definition terms and their descriptions from others. If I was creating a list of definitions, each term and its description or descriptions should be separated logically from its siblings. Thus the &lt;di&gt; element would encase and separate each item.</p>
<h4>3. CSS Snap Declaration</h4>
<p>My third proposal is for a CSS 3 style declaration called &#8220;snap.&#8221; This can replace the need to use javascript to snap elements to non-parental elements. This &#8220;snapping&#8221; has been done via javascript on many old versions of dropdown menus. Now with CSS and better standards, the snap is no longer needed for menus. But the need for snap in other presentational ways is still warranted. What if I wanted to &#8220;snap&#8221; one element in the lower portion of the document to another element that was completely unrelated? I could simply add it to the style rule:</p>
<pre><code>
		#snapping-element {
			display: block;
			width: 300px;
			<strong>snap: #host-element;</strong>
			left: 0; top: 10px;
			…
		}
				</code></pre>
<p>In this example, the element with the id &#8220;snapping-element&#8221; will be snapped to the element with the id of &#8220;host-element.&#8221; Host-element, however, probably should be positioned relative; and the snapping-element&#8217;s position will be based off host-element&#8217;s relative state. Much like how absolute works, except that absolute is limited to basing itself off of ancestral elements.</p>
<h4>4. Column Hovers</h4>
<p>Placing a hover on a table row is a cinch. But what if I wanted to create a triangulation effect for the rows and columns with a different hover state color? I can&#8217;t! I&#8217;ve seen others mention it in posts, but I haven&#8217;t seen any plans to integrate this into CSS. Why not? This would provide another layer of accessibility/legibility to users with a simple col:hover rule. Of course the colgroup elements must all be declared in order for this to work.</p>
<h4>5. Javascript-type Psuedo-classes</h4>
<p>My last proposal to CSS 3 is probably the most CSS-scope-defying of them all. What if there were more pseudo-classes available other than just visited, hover, active, focus, etc? Why not onclick? I realize focus is currently a bit of a Mozilla proprietary state, but it&#8217;s a really good one! If javascript already handles onmouseover (hover) and onblur and onfocus (focus), why not onclick?! Man would this be powerful! All javascript toggling could be handled in CSS! But this event catching is a bit more daring for CSS&#8217;s scope of just styling. But why not, eh?</p>
<h4>Conclusion</h4>
<p>Perhaps some of this has been mentioned before me. I&#8217;m not sure. If not, then I&#8217;m glad to be able to provide some recommendations. If so, I apologize for assuming credit, that&#8217;s not my intention. I do however feel that these would provide a lot more meaning to HTML 5 and more power and control for the visual and presentational experience to CSS 3.</p>
<p>Any comments, suggestions, critiques are happily welcomed. Just some food for thought.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.atlanticbt.com/blog/beyond-html-5-and-css-3-sample-of-suggestions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSS 2.1 Selector Specificity</title>
		<link>http://www.atlanticbt.com/blog/css-21-selector-specificity/</link>
		<comments>http://www.atlanticbt.com/blog/css-21-selector-specificity/#comments</comments>
		<pubDate>Fri, 08 May 2009 12:46:40 +0000</pubDate>
		<dc:creator>Mark Caron</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[specificity]]></category>

		<guid isPermaLink="false">http://74.84.218.58/blog/?p=202</guid>
		<description><![CDATA[I&#8217;m probably the 100th person to write about CSS 2.1&#8242;s selector specificity, but I&#8217;m going to take a stab at it anyway since it seems to be such a stumbling block for so many people. I&#8217;m not writing this to take away from the brilliant explanations of Andy Clarke, Patrick Griffiths, Eric Meyer, or Molly [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m probably the 100th person to write about CSS 2.1&#8242;s selector specificity, but I&#8217;m going to take a stab at it anyway since it seems to be such a stumbling block for so many people.</p>
<div id="attachment_246" class="wp-caption alignright" style="width: 310px"><a href="http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html"><img class="size-medium wp-image-246" title="specificitywars-04" src="http://74.84.218.58/blog/wp-content/uploads/2009/04/specificitywars-04-300x300.jpg" alt="Specificity Wars by Andy Clarke" width="300" height="300" /></a><p class="wp-caption-text">Specificity Wars by Andy Clarke</p></div>
<p>I&#8217;m not writing this to take away from the brilliant explanations of <a href="http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html">Andy Clarke</a>, <a href="http://www.htmldog.com/guides/cssadvanced/specificity/">Patrick Griffiths</a>, <a href="http://meyerweb.com/eric/css/link-specificity.html">Eric Meyer</a>, or <a href="http://www.molly.com/2005/10/06/css2-and-css21-specificity-clarified/">Molly E. Holzschlag</a>, but to merely supplement their posts with, perhaps, another angle. Many people feel the need to re-explain this topic in layman&#8217;s terms rather than enduring <a href="http://www.w3.org/TR/CSS21/cascade.html#specificity">W3C&#8217;s overly technical explanation about specificity</a>.</p>
<h3>What is specificity?</h3>
<p>To be brief, it&#8217;s the applied calculation of the priorities of CSS selectors and how they cascade through a stylesheet. Simply put, selectors with a higher specificity will overrule other selectors in the <a href="http://www.w3.org/TR/REC-CSS2/cascade.html#cascading-order">cascading order</a>.</p>
<h3>How it works</h3>
<p>There are two ways to determine specificity — the &#8220;right&#8221; way and the &#8220;quick and dirty&#8221; way. According to W3C, the specificity is officially calculated using four numbers concatenated, like: <code>a</code>, <code>b</code>, <code>c</code>, <code>d</code> . The &#8220;quick and dirty&#8221; technique is to assign values to each type of selector and add the values up. For example, general elements have a value of 1, classes have a value of 10, ID&#8217;s have a value of 100, and inline styles have a value of 1000. However, this value-based &#8220;quick addition&#8221; technique is a bit misleading because it presumes that 10 of any value will override the next highest selector. Following that logic if you have 10 ID&#8217;s in a style declaration those will override an inline style, because 10 ID&#8217;s are worth 100 x 10 which equals 1000 — inline styles being worth 1000. <strong>This statement is far from true.</strong> However, it can still be used as an easy way to get an idea of the specificity of a particular selector in a declaration; but it should never be fully relied upon.</p>
<p>The <a href="http://www.w3.org/TR/CSS21/cascade.html#specificity"><cite id="w3c">W3C</cite></a> states that <q cite="w3c">Concatenating the four numbers a-b-c-d (in a number system with a large base) gives the specificity.</q> <strong>This is the correct method to rely on</strong>. The reason is because it separates the values into 4 categories: <code>a</code>, <code>b</code>, <code>c</code>, &amp; <code>d</code>. The variable <code>a</code> is reserved for the number of inline styles and has the highest priority. While <code>b</code> is for the number of ID&#8217;s, <code>c</code> is for the number of other attributes (including class, but not ID&#8217;s) and pseudo-classes, and <code>d</code> is the number of elements. This is the correct order of specificity and pseudo-elements are to be ignored.</p>
<p>Let&#8217;s focus on <code>b</code> and <code>c</code> since these are the subjects of confusion. ID selectors (<code>b</code>)  are the most valuable asset to CSS, so they are given the second highest priority, next to inline styles (<code>a</code>). ID selectors are written with a # in front of the name given to the ID. So, <code>#content</code> is referencing <code>&lt;div id="content"&gt; which</code> has a value of 100 using the &#8220;quick and dirty&#8221; method. These selectors, like all selectors, can be used in combination with any other selectors. For instance, <code>#main-area #content</code> would add up to 200.</p>
<p>Class selectors and other attribute selectors are assigned the variable <code>c</code>. These are each given a value of 10 using the &#8220;quick and dirty&#8221; method. Class selectors are denoted with a dot (.) before the name of the class, like <code>.box</code>. Attribute selectors are declared with the attribute name inside a set of brackets — <code>a[rel="friend"]</code>. It is not necessary to include the value of the attribute. Additionally, the <code>=</code> can be replaced with <code>~=</code>, <code>*=</code>, <code>^=</code>, or <code>$=</code> depending on how you&#8217;re equating the value. A better concept of these equations can be found on <a href="http://www.456bereastreet.com/archive/200601/css_3_selectors_explained/">456 Berea St&#8217;s CSS 3 selectors explained</a> post.</p>
<p><em>Note: Attribute selectors of CSS 2.1 are supported by most modern browsers, and when I say modern browsers I do not mean Internet Explorer 6. </em></p>
<p>Initially what confused me about attribute selectors and their specificity was whether or not  using <code>class=</code> or <code>id=</code> in the attribute selector made it behave like the <code>#</code> (ID) or <code>.</code> (class) of its CSS 2 predecessors. After doing some testing and reading, I found that the attribute selector has the exact same specificity as the class selector (.), regardless of whether it says <code>id=</code> within its little brackets. It will always have a value of 10. Thus, <code>div[id="content"]</code> is less specific than <code>div#content</code>.</p>
<p>Here&#8217;s an easy way to visualize all of this (in a poorly misunderstood table element):</p>
<table border="0" summary="This table illustrates the specificity of the examples">
<thead>
<tr>
<th id="th-example">example</th>
<th id="th-style">inline <code>style</code></th>
<th id="th-id-select">ID selectors</th>
<th id="th-class-select">class/attribute selectors</th>
<th id="th-element-select">element/type selectors</th>
<th id="th-quick-add">&#8220;quick and dirty&#8221; value</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>style=""</code></td>
<td>1,</td>
<td>0,</td>
<td>0,</td>
<td>0</td>
<td>1000</td>
</tr>
<tr>
<td><code>p</code></td>
<td>0,</td>
<td>0,</td>
<td>0,</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td><code>p em<br />
</code></td>
<td>0,</td>
<td>0,</td>
<td>0,</td>
<td>2</td>
<td>2</td>
</tr>
<tr>
<td><code>p.whatever</code></td>
<td>0,</td>
<td>0,</td>
<td>1,</td>
<td>1</td>
<td>11</td>
</tr>
<tr>
<td><code>p[id="whatever"]</code></td>
<td>0,</td>
<td>0,</td>
<td>1,</td>
<td>1</td>
<td>11</td>
</tr>
<tr>
<td><code>p[href="whatever"]</code></td>
<td>0,</td>
<td>0,</td>
<td>1,</td>
<td>1</td>
<td>11</td>
</tr>
<tr>
<td><code>#whatever p</code></td>
<td>0,</td>
<td>1,</td>
<td>0,</td>
<td>1</td>
<td>101</td>
</tr>
<tr>
<td><code>#whatever p.whatever</code></td>
<td>0,</td>
<td>1,</td>
<td>1,</td>
<td>1</td>
<td>111</td>
</tr>
<tr>
<td><code>#whatever1 #whatever2 p.whatever</code></td>
<td>0,</td>
<td>2,</td>
<td>1,</td>
<td>1</td>
<td>211</td>
</tr>
</tbody>
</table>
<p>If you haven&#8217;t seen any specificity charts before I hope my interpretation helped explain it further. Be sure to check out the other explanations too, because <a href="http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html">Andy Clarke</a> has an awesome example using siths from Star Wars. Maybe I&#8217;ll make a diagram of my own someday.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.atlanticbt.com/blog/css-21-selector-specificity/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Website Usability: Simple is Better</title>
		<link>http://www.atlanticbt.com/blog/website-usability-simple-is-better/</link>
		<comments>http://www.atlanticbt.com/blog/website-usability-simple-is-better/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 15:15:33 +0000</pubDate>
		<dc:creator>Mark Caron</dc:creator>
				<category><![CDATA[Business & Internet]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[simple]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://74.84.218.58/blog/?p=212</guid>
		<description><![CDATA[What is the purpose of web usability? Simply put, it’s to make websites easier to use. Good usability makes the site more intuitive to the end user. This should be at the core of any website design. Apple understands usability better than most companies. If you review Apple’s product catalog you will find one thread [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-213 wp-img-left" style="border: 0pt none;" title="usability-ipod" src="http://74.84.218.58/blog/wp-content/uploads/2009/04/usability-ipod.jpg" alt="Apple iPod" width="200" height="245" />What is the purpose of web usability? Simply put, it’s to make websites easier to use. Good usability makes the site more intuitive to the end user. This should be at the core of any website design.</p>
<p>Apple understands usability better than most companies. If you review Apple’s product catalog you will find one thread of consistency – simplicity. Take a look at Apple’s iPod, their core colors are black and white, no obtrusive buttons or screws. One would wonder how it was even manufactured, seems as though the iPod was born that way. You are left with a colorful lcd screen and compass-style navigation wheel which you can control with one hand. Apple’s method to their madness is not to charge for what you don’t have but give you what you paid for – a simple way to navigate and listen to your music collection.</p>
<blockquote style="clear:both;"><p>&#8220;Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.&#8221; — Antoine de Saint-Exupery</p></blockquote>
<p>The main challenge between designer and client when the topic of usability comes up is education. There is a lot to consider when the melding of minds between design and client occurs – project requirements, likes and dislikes, site goals, conversions, call to actions, etc. All this must be accomplished while still maintaining the integrity of good design and ease of use. This is the real challenge, it’s not like trying to fit a square peg into a round hole, but it’s pretty darn close. Here is how designers are separated from the pack. Give them what they want while still keeping people coming back.</p>
<p>Eric Burke, stuffthathappens.com, created a <a href="http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png">satiric image</a> that I feel really illustrates this concept of “less is more” approach.</p>
<p>Consider the model that Apple and Google have taken. Create simple products so you don’t overwhelm your target audience. Or do as most sites do, add options and features that no one looks at so the only percentage that goes up is your bounce rate.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.atlanticbt.com/blog/website-usability-simple-is-better/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching using disk: basic
Object Caching 472/573 objects using disk: basic
Content Delivery Network via d1rvlzmuzboe2s.cloudfront.net

Served from: www.atlanticbt.com @ 2012-02-08 05:44:24 -->
