<?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>Lakeville Web Design</title>
	<atom:link href="http://www.lakevillewebdesign.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lakevillewebdesign.com</link>
	<description></description>
	<lastBuildDate>Fri, 03 Sep 2010 14:36:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0-RC1</generator>
		<item>
		<title>How Long Should We Ban IPs?</title>
		<link>http://www.lakevillewebdesign.com/how-long-should-we-ban%c2%a0ips/</link>
		<comments>http://www.lakevillewebdesign.com/how-long-should-we-ban%c2%a0ips/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 14:36:51 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7309</guid>
		<description><![CDATA[<p>There are all kinds of reasons IPs get banned. A forums manager might ban an IP because the user at it is spamming. An admin of an email server might also ban IPs for spamming. A web service might ban an IP for using an API in an unapproved way.</p><p>On this site, we used to ban IP&#8217;s in the forums all the time (<a href="http://css-tricks.com/forums/">the new forum</a>s have been much better in spam prevention). I also sometimes ban&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>There are all kinds of reasons IPs get banned. A forums manager might ban an IP because the user at it is spamming. An admin of an email server might also ban IPs for spamming. A web service might ban an IP for using an API in an unapproved way.</p><p>On this site, we used to ban IP&#8217;s in the forums all the time (<a
href="http://css-tricks.com/forums/">the new forum</a>s have been much better in spam prevention). I also sometimes ban IPs from inside WordPress. There is a setting to &#8220;blacklist&#8221; IP&#8217;s in the admin area on the Settings > Discussion page. There are few in there from spammers, and a variety of people I thought just shouldn&#8217;t come &#8217;round here no more. In looking at this list now, some of these IP&#8217;s have been in here for years. Is that acceptable?</p><p>At the time of blockage, and IP address might belong to Danny Doucher, but after sometime, the IP address might be reassigned and now belong to Susie Supercool. I certainly wouldn&#8217;t want to punish Susie for Danny&#8217;s crimes.</p><p>So, how long should we ban IP&#8217;s for? Wikipedia, who certainly needs to deal with IP blocking on a regular basis, <a
href="http://en.wikipedia.org/wiki/Wikipedia:Blocking_IP_addresses">has a few choice words</a>:</p><blockquote><p>Most IP addresses should not be blocked more than a few hours, since the malicious user will probably move on by the time the block expires.</p></blockquote><blockquote><p>IP addresses should almost never be indefinitely blocked. Many IP addresses are dynamically assigned and change frequently from one person to the next, and even static IP addresses are periodically re-assigned or have different users. In cases of long-term vandalism from an IP address, consider blocks over a period of months or years instead. Long-term blocks should never be used for isolated incidents, regardless of the nature of their policy violation.</p></blockquote><p>I can get on board with that. IP blocks should only last a limited time, since all IPs eventually change. Most blocks should be short, but if you experience long-term bad activity, make the ban longer. In the case of this site and WordPress, the Discussion Settings also offer a Moderation list, so you don&#8217;t actually have straight blacklist IP&#8217;s at all if you don&#8217;t want, and even if you do, you can move them from the blacklist to the moderation list after a while and be fine.</p><p>Anyone else have any theories or research to share?</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/how-long-should-we-ban%c2%a0ips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BonBon Buttons</title>
		<link>http://www.lakevillewebdesign.com/bonbon%c2%a0buttons/</link>
		<comments>http://www.lakevillewebdesign.com/bonbon%c2%a0buttons/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 19:12:44 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7350</guid>
		<description><![CDATA[<p>These are way above and beyond the level of any other &#8220;CSS3 buttons&#8221; I&#8217;ve seen. Multiple backgrounds combining gradients and images, uneven border-radius, pseudo elements, HSL coloring, @font-face icons, transitions, box shadows, text shadows, hover and active states&#8230; the list goes on. Every trick in the book masterfully employed.</p><p>They make <a href="http://css-tricks.com/examples/ButtonMaker/">my button maker</a> look dull and flat.</p><p><a href="http://lab.simurai.com/css/buttons/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a href="http://css-tricks.com/bonbon-buttons/">Permalink</a></p>]]></description>
			<content:encoded><![CDATA[<p>These are way above and beyond the level of any other &#8220;CSS3 buttons&#8221; I&#8217;ve seen. Multiple backgrounds combining gradients and images, uneven border-radius, pseudo elements, HSL coloring, @font-face icons, transitions, box shadows, text shadows, hover and active states&#8230; the list goes on. Every trick in the book masterfully employed.</p><p>They make <a
href="http://css-tricks.com/examples/ButtonMaker/">my button maker</a> look dull and flat.</p><p><a
href="http://lab.simurai.com/css/buttons/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/bonbon-buttons/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/bonbon%c2%a0buttons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fluid Width YouTube Videos</title>
		<link>http://www.lakevillewebdesign.com/fluid-width-youtube%c2%a0videos/</link>
		<comments>http://www.lakevillewebdesign.com/fluid-width-youtube%c2%a0videos/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 15:05:33 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7066</guid>
		<description><![CDATA[<p>I saw that Andy Clarke had added a fluid width YouTube video to <a href="http://lookingforyogi.com/writing/about/no-smarter-than-the-average-bear/">a particular page</a> on one of his sites. His code relies upon a wrapping div and then images and video within this wrapper are set to the width of the wrapper:</p> .img img, .img object, img embed {
width: 100%;
}<p>I love the idea. It&#8217;s essentially the classic technique for dealing with images in fluid width designs. Andy&#8217;s code sets max-width to 100% here&#8230;</p>]]></description>
			<content:encoded><![CDATA[<div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/09/fluidwidthyoutube.jpg" alt="" title="fluidwidthyoutube" width="570" height="382" class="alignnone size-full wp-image-7347" /></div><p>I saw that Andy Clarke had added a fluid width YouTube video to <a
href="http://lookingforyogi.com/writing/about/no-smarter-than-the-average-bear/">a particular page</a> on one of his sites. His code relies upon a wrapping div and then images and video within this wrapper are set to the width of the wrapper:</p><pre><code class="css">.img img, .img object, img embed {
   width: 100%;
}</code></pre><p>I love the idea. It&#8217;s essentially the classic technique for dealing with images in fluid width designs. Andy&#8217;s code sets <code>max-width</code> to 100% here too, but since the width is already 100% that doesn&#8217;t matter. Max-width works best by itself. So it can scale down images which could be larger than the wrapper, but not scale them up if they are smaller. For video, scaling up is probably fine. I&#8217;d suggest this change:</p><pre><code class="css">.img img {
   max-width: 100%;
}
.img object, .img embed {
   width: 100%;
}</code></pre><p>That will scales images only down if needed, and videos up or down.</p><h3>Keeping Aspect Ratios</h3><p>With images, as long as there isn&#8217;t an inline &#8220;height&#8221; setting, the aspect radio will be maintained in a fluid width environment <strong>even when you only alter the width</strong>. With video (flash or otherwise) this is not the case. If we want to maintain aspect ratio while the video grows and shrinks in width, we&#8217;re going to need JavaScript.</p><p>Example YouTube Provided Code:</p><pre><code class="html">&lt;object width="640" height="385"&gt;
	&lt;param name="movie" value="http://www.youtube.com/v/EWsWFjO9MlE?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;
	&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;
	&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;

	&lt;embed src="http://www.youtube.com/v/EWsWFjO9MlE?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;
&lt;/object&gt;</code></pre><p>This is the plan:</p><ol><li>Find original aspect ratio by dividing original height by width</li><li>When window is resized&#8230;</li><li>Measure width of parent</li><li>Set width of video to width of parent</li><li>Set height of video to width multiplied by aspect ratio</li><li>Trigger a fake resize on pageload to ensure video fits right away</li></ol><p>Here, we&#8217;re using jQuery. Take note that we are target both the class name of .youtube and the embed within that class name. This is presupposing that we are adding a classname of .youtube to the object in the copy-and-paste code YouTube provides. Feel free to adjust the selectors as you wish. You may wish to target all objects themselves, or use a special wrapper. Here we&#8217;re using the #page-wrap of all the content to measure width.</p><pre><code class="javascript">&lt;script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js'&gt;&lt;/script&gt;
&lt;script&gt;
	var $origVideo = $(".youtube, .youtube embed");
	var aspectRatio = $origVideo.attr("height") / $origVideo.attr("width");

	$(window).resize(function() {
		var wrapWidth = $("#page-wrap").width();
		$origVideo
			.width(wrapWidth)
			.height(wrapWidth * aspectRatio);
	}).trigger("resize");
&lt;/script&gt;</code></pre><p>Also of note here is that we are targeting the <code>&lt;object&gt;</code>s and the <code>&lt;embed&gt;</code>s within them with this JavaScript. Targeting the objects alone will work in modern browsers. Including the embed is fine for modern browsers and makes it work with Internet Explorer as well.</p><h3>Bonus Trick</h3><p>You can get rounded corners on your YouTube videos! The only luck I&#8217;ve had so far is in Google Chrome (7.0.503.0 dev).</p><ol><li>Add this param to your embed (within the object) <code>&lt;embed wmode="opaque" ...</code></li><li>Then you can add border radius to the object<pre><code class="css">object {
	border-radius: 10px;
}</code></pre></li></ol><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/09/roundedyoutube.png" alt="" title="roundedyoutube" width="207" height="111" class="alignnone size-full wp-image-7340" /></p><p>Credit to <a
href="http://forrst.com/posts/CSS3_-webkit-border-radius_and_Flash_Great_for_Yo-y22">ubahnverleih on Forrst</a> for the idea.</p></div><h3>Demo &#038; Download</h3><p><a
href="http://css-tricks.com/examples/FluidWidthYouTube/" class="button">View Demo</a> &nbsp; <a
href="http://css-tricks.com/examples/FluidWidthYouTube.zip" class="button">Download Files</a></p><h3>UR DOIN IT WRG</h3><p>This worked in all browsers I tried, including Internet Explorer (tested 7 &#038; 8), but not Opera. The best I can tell is that Opera respects in the inline width and height attributes over those set via inline styling. If anyone knows of a way to fix that, or if you think my whole method here is stupid and you have something better, please let me know and I&#8217;ll update things here.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/fluid-width-youtube%c2%a0videos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML, CSS, and Javascript from the Ground Up</title>
		<link>http://www.lakevillewebdesign.com/html-css-and-javascript-from-the-ground%c2%a0up/</link>
		<comments>http://www.lakevillewebdesign.com/html-css-and-javascript-from-the-ground%c2%a0up/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 00:48:17 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7335</guid>
		<description><![CDATA[<p>I&#8217;ve done my own <a href="http://css-tricks.com/video-screencasts/58-html-css-the-very-basics/">The VERY Basics screencast</a>, but this full series from Google, targeted at <strong>just-starting-out beginners</strong>, would be a good place to go directly after my intro, to take things further along.</p><p><a href="http://code.google.com/edu/submissions/html-css-javascript/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a href="http://css-tricks.com/from-the-ground-up/">Permalink</a></p>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve done my own <a
href="http://css-tricks.com/video-screencasts/58-html-css-the-very-basics/">The VERY Basics screencast</a>, but this full series from Google, targeted at <strong>just-starting-out beginners</strong>, would be a good place to go directly after my intro, to take things further along.</p><p><a
href="http://code.google.com/edu/submissions/html-css-javascript/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/from-the-ground-up/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/html-css-and-javascript-from-the-ground%c2%a0up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Digging Into WordPress, The Book, Version 3</title>
		<link>http://www.lakevillewebdesign.com/digging-into-wordpress-the-book-version%c2%a03/</link>
		<comments>http://www.lakevillewebdesign.com/digging-into-wordpress-the-book-version%c2%a03/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 13:34:03 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7328</guid>
		<description><![CDATA[<p>When we first released the book <a href="http://digwp.com/book/">Digging Into WordPress</a>, we thought of some reasons why people might <strong>not</strong> want to buy it. A big reason is because tech books can go out of date quickly, especially when the subject is a fast-developing technology like WordPress. So, we fixed that. When you buy this book, you get PDF updates to it for life.</p><p>Today is just such an event. WordPress 3.0 has been out for a while now, and so&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>When we first released the book <a
href="http://digwp.com/book/">Digging Into WordPress</a>, we thought of some reasons why people might <strong>not</strong> want to buy it. A big reason is because tech books can go out of date quickly, especially when the subject is a fast-developing technology like WordPress. So, we fixed that. When you buy this book, you get PDF updates to it for life.</p><p>Today is just such an event. WordPress 3.0 has been out for a while now, and so it&#8217;s time for our second major update. This is the biggest one yet. We&#8217;ve combed through the entire book updating anything that was out of date or stale. We&#8217;ve also added a new Chapter 12, which is specific to the 3.0 update. The book is also sportin a brand new front and back cover!</p><p><a
href="http://digwp.com/book/"><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/digwp3cover.jpg" alt="" title="digwp3cover" width="570" height="456" class="alignnone size-full wp-image-7329" /><br
/> </a></p><p>If you already own our book in any form, this is old news, because we&#8217;ve already sent out an update email containing your new download. If you didn&#8217;t get it (spam filters happen), email <a
href="mailto:sales@digwp.com">sales@digwp.com</a> with your original receipt and we&#8217;ll make sure you get it.</p><p>If you are considering it, but want to know more, you should check out the <a
href="http://digwp.com/book-demo/Digging-Into-WP-DEMO.pdf">PDF sample of the book</a>.</p><p>Regarding print version of the book, <strong>yes</strong>, they are coming back! It&#8217;s going to take us about a month to have them ready. <del>If you&#8217;d rather not wait, you can buy the PDF now, and when the print version is ready forward us your receipt. We&#8217;ll send you a coupon code for exactly what you paid for the PDF to use in purchasing the print version.</del> I&#8217;m sorry I spoke to soon on this issue. We are <strong>NOT</strong> offering any discounts on the printed version.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/digging-into-wordpress-the-book-version%c2%a03/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Basic folder structure for new Magento module</title>
		<link>http://www.lakevillewebdesign.com/basic-folder-structure-for-new-magento-module/</link>
		<comments>http://www.lakevillewebdesign.com/basic-folder-structure-for-new-magento-module/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 06:35:37 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=5311</guid>
		<description><![CDATA[When I had first contact with Magento platform, I had to create a custom module for it. I thought to myself &#8211; how hard can it be? How wrong I was&#8230; I didn&#8217;t even know where to start&#8230; Anyway, as I already knew the principals of MVC (Model &#8211; View &#8211; Controller) architecture, and had [...]]]></description>
			<content:encoded><![CDATA[<p>When I had first contact with Magento platform, I had to create a custom module for it. I thought to myself &#8211; how hard can it be? How wrong I was&#8230; I didn&#8217;t even know where to start&#8230;<span id="more-5311"></span></p>
<p>Anyway, as I already knew the principals of MVC (Model &#8211; View &#8211; Controller) architecture, and had fairly good knowledge of object orientated PHP, all I needed was the basic file/folder structure for my custom module.</p>
<p>Just a small notice before I start: there are numerous tutorials / blog posts that explain the contents of those files, and therefore I won&#8217;t go into that.</p>
<p>So, without any complications, I give you just that <img src='http://inchoo.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  :</p>
<pre class="brush: php">

\app\code\local\MyNamespace

//If you&#039;re new to OOP, take a look here: http://www.php.net/manual/en/language.namespaces.rationale.php

\app\code\local\MyNamespace\Appname

//Name of new custom module - try to keep at least first letter capital, or there WILL BE truble with Magento&#039;s understanding

\app\code\local\MyNamespace\Appname\Block

//In classic MVC architecture, this represents View part of MVC

\app\code\local\MyNamespace\Appname\controllers

//This is fairly easy to understand, if not, have fun: http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller

\app\code\local\MyNamespace\Appname \etc

//Contains the most significant part in Magento&#039;s MVC architecture - the xml field that will connect all things together

\app\code\local\MyNamespace\Appname\Helper

//Intended for files that contain repeatable routines or simple procedural methods

\app\code\local\MyNamespace\Appname\Model

//Same thing as for controller, take a look at the link above

\app\code\local\MyNamespace\Appname\sql

//This was interesting thing to find out what&#039;s it for, it&#039;s to define custom database tables and process any upgrades to your extension.

\etc\modules

//Contains all Modules included in Magento - here&#039;s where it all really begins for our module
</pre>
<p>And I just wanted to give you an idea of how things get connected here.</p>
<ol>
<li>Magento takes all xml files from &#8220;etc/modules/&#8221; to know which modules are there, and where are they located</li>
<li>By that location (specified in xml file at &#8220;etc/modules/&#8221;) Magento includes xml file from &#8220;/app/code/local/MyNamespace/Appname/etc&#8221; so that it can connect all other things together</li>
<li>The IndexController.php is the next one that&#8217;s included, and from there, it&#8217;s basic MVC (with slight variations)</li>
</ol>
<p>I will provide 2 great tutorials that helped me a lot: <a href="http://activecodeline.com/writing-a-custom-module-in-magento-detailed-walktrough" >ActiveCodeline tutorial</a> and <a href="http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/custom_module_with_custom_database_table" >Magento Commerce tutorial</a></p>
<p>Well, I really hope this will help someone, because I know it would help me if I found it&#8230; <img src='http://inchoo.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/basic-folder-structure-for-new-magento-module/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Screencast: The WordPress Loop</title>
		<link>http://www.lakevillewebdesign.com/new-screencast-the-wordpress%c2%a0loop/</link>
		<comments>http://www.lakevillewebdesign.com/new-screencast-the-wordpress%c2%a0loop/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 07:10:55 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=5380</guid>
		<description><![CDATA[<blockquote><p>There is no shortage of documentation on WordPress’ famous content-spewing structure, but I still feel like there is more confusion and mystery surrounding “The Loop” than there should be. In this screencast I try and explain what it is, how it works, related parts, and then demonstrate some alterations and various tricks. Things like running multiple loops, writing your own custom queries, and handling pagination with your own custom loops.</p></blockquote><p><a href="http://css-tricks.com/video-screencasts/91-the-wordpress-loop/"><br /> View Screencast</a></p> ]]></description>
			<content:encoded><![CDATA[<blockquote><p>There is no shortage of documentation on WordPress’ famous content-spewing structure, but I still feel like there is more confusion and mystery surrounding “The Loop” than there should be. In this screencast I try and explain what it is, how it works, related parts, and then demonstrate some alterations and various tricks. Things like running multiple loops, writing your own custom queries, and handling pagination with your own custom loops.</p></blockquote><p><a
href="http://css-tricks.com/video-screencasts/91-the-wordpress-loop/"><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/screencast-91-thumb.png" alt="" title="" /><br
/> View Screencast</a></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/new-screencast-the-wordpress%c2%a0loop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Percentage Bugs in WebKit</title>
		<link>http://www.lakevillewebdesign.com/percentage-bugs-in%c2%a0webkit/</link>
		<comments>http://www.lakevillewebdesign.com/percentage-bugs-in%c2%a0webkit/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 12:52:16 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7288</guid>
		<description><![CDATA[<p>Using percentage values for certain things can have slightly unexpected results in WebKit based browsers. For instance, if you have a series of columns set in percentage widths with percentage padding, WebKit can calculate their sizing rather strangely.</p><p><span></span></p><p>The red lines indicate the column as rendered with WebKit. The background shades of gray are accurate placement of those columns in percentage widths.</p><p>It&#8217;s percentages in general that seem to be the issue. I haven&#8217;t been able to dig&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Using percentage values for certain things can have slightly unexpected results in WebKit based browsers. For instance, if you have a series of columns set in percentage widths with percentage padding, WebKit can calculate their sizing rather strangely.</p><p><span
id="more-7288"></span></p><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/bad-calc.png" alt="" title="bad-calc" width="570" height="188" class="alignnone size-full wp-image-7303" /></p><p>The red lines indicate the column as rendered with WebKit. The background shades of gray are accurate placement of those columns in percentage widths.</p></div><p>It&#8217;s percentages in general that seem to be the issue. I haven&#8217;t been able to dig up a ton of information on it, although I do seem to remember reading something about it quite a while ago. I think it&#8217;s related to how subpixel values are calculated. For example, if a container is 657px wide currently, and has four columns at 25% each, they would be 164.25px each wide, and WebKit doesn&#8217;t handle that well (rounding issues?) Other browsers handle the &#8220;subpixel&#8221; value OK.</p><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/fine.png" alt="" title="fine" width="570" height="226" class="alignnone size-full wp-image-7304" /></p><p>Firefox, IE, and Opera are fine.</p></div><p>Thanks to <a
href="http://nicolasgallagher.com/">Nicolas Gallagher</a> for pointing this out to me. If I&#8217;m way behind the times on this, feel free to yell at me, but throw me some links and information so I can update this post with the most accurate information I can. <a
href="https://lists.webkit.org/pipermail/webkit-unassigned/2006-January/002684.html">This link</a> seems to indicate the issue has been around a while.</p><p>Remember this is only really an issue if you are doing something like shown in these examples with solid color columns. If you didn&#8217;t have any visual separators, it might not be a big deal, just a slight cross browser difference very few people would ever notice.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/percentage-bugs-in%c2%a0webkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More on CSS Selector Performance</title>
		<link>http://www.lakevillewebdesign.com/more-on-css-selector%c2%a0performance/</link>
		<comments>http://www.lakevillewebdesign.com/more-on-css-selector%c2%a0performance/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 15:49:20 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7300</guid>
		<description><![CDATA[<p>This is a direct link to a PowerPoint file by Steve Souders (in April 2009). Of particular interest is pages 19-33 with all the information on CSS selectors. Evidence points to yes, there are efficiency differences in how you write selectors. But efficient CSS can sometimes come at the cost of larger CSS (bad) and that a &#8220;real world&#8221; levels even &#8220;costly&#8221; selectors aren&#8217;t that big of a deal.</p><p><a href="http://stevesouders.com/docs/web20expo-20090402.ppt" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a href="http://css-tricks.com/more-on-css-selector-performance/">Permalink</a></p>]]></description>
			<content:encoded><![CDATA[<p>This is a direct link to a PowerPoint file by Steve Souders (in April 2009). Of particular interest is pages 19-33 with all the information on CSS selectors. Evidence points to yes, there are efficiency differences in how you write selectors. But efficient CSS can sometimes come at the cost of larger CSS (bad) and that a &#8220;real world&#8221; levels even &#8220;costly&#8221; selectors aren&#8217;t that big of a deal.</p><p><a
href="http://stevesouders.com/docs/web20expo-20090402.ppt" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/more-on-css-selector-performance/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/more-on-css-selector%c2%a0performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS is to HTML as a CMS is to… HTML</title>
		<link>http://www.lakevillewebdesign.com/css-is-to-html-as-a-cms-is-to%e2%80%a6%c2%a0html/</link>
		<comments>http://www.lakevillewebdesign.com/css-is-to-html-as-a-cms-is-to%e2%80%a6%c2%a0html/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 03:15:06 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7248</guid>
		<description><![CDATA[<p><strong>From the desk of important beginner concepts:</strong></p><p>You have a website with 100 pages on it. All 100 pages use the same style.css file. You&#8217;d like to change the background color of every single page. You make one adjustment in the CSS file, and that background color adjustment will be reflected across all 100 pages. You don&#8217;t need to edit each of those pages individually. That&#8217;s the core benefit behind CSS: <strong>abstracting the design away from the markup.</strong></p><p>Now&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><strong>From the desk of important beginner concepts:</strong></p><p>You have a website with 100 pages on it. All 100 pages use the same style.css file. You&#8217;d like to change the background color of every single page. You make one adjustment in the CSS file, and that background color adjustment will be reflected across all 100 pages. You don&#8217;t need to edit each of those pages individually. That&#8217;s the core benefit behind CSS: <strong>abstracting the design away from the markup.</strong></p><p>Now you want to make another change to those 100 pages. You&#8217;d like to include the publication date underneath the title of each of the pages. That is something you&#8217;ll need to edit the HTML to do. If those 100 pages are based on a template, as they would be when using a CMS (Content Management System), you can make one adjustment to the template file and the date adjustment will be reflected across all 100 pages. That&#8217;s the core benefit behind a CMS: <strong>abstracting the content away from the markup.</strong></p><p>The point is that once a website is any more than one page, there are going to be shared resources and it&#8217;s time to use a CMS. Just as the <a
href="http://www.csszengarden.com/">zen garden</a> taught us that using CSS is vital to allow design freedom and make redesigns easier, the ultimate freedom comes from also using a CMS where we also aren&#8217;t locked to any specific HTML. HTML isn&#8217;t for content these days, it&#8217;s for <em>describing</em> content. Databases are for content.</p><p><a
href="http://cdn.css-tricks.com/wp-content/uploads/2010/08/this-is-how-its-done.jpg">I have made this scientific chart</a> to drive home the awesomeness of this all.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/css-is-to-html-as-a-cms-is-to%e2%80%a6%c2%a0html/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebKit HTML5 Search Inputs</title>
		<link>http://www.lakevillewebdesign.com/webkit-html5-search%c2%a0inputs/</link>
		<comments>http://www.lakevillewebdesign.com/webkit-html5-search%c2%a0inputs/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 03:45:16 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7261</guid>
		<description><![CDATA[<p>One of the new types of inputs in HTML5 is search.</p> &#060;input type=search name=s&#062;<p>It does absolutely nothing in most browsers. It just behaves like a text input. This isn&#8217;t a problem. The spec doesn&#8217;t require it to do anything special. WebKit browsers do treat it a bit differently though, primarily with styling.</p><p>A search input in WebKit by default has an inset border, rounded corners, and strict typographic control.</p><p><span></span></p> The Styling Limitations<p>WebKit has big time&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>One of the new types of inputs in HTML5 is <code>search</code>.</p><pre><code>&lt;input type=search name=s&gt;</code></pre><p>It does absolutely nothing in most browsers. It just behaves like a text input. This isn&#8217;t a problem. The spec doesn&#8217;t require it to do anything special. WebKit browsers do treat it a bit differently though, primarily with styling.</p><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/simplesearchinput.png" alt="" title="simplesearchinput" width="203" height="49" class="alignnone size-full wp-image-7262" /></p><p>A search input in WebKit by default has an inset border, rounded corners, and strict typographic control.</p></div><p><span
id="more-7261"></span></p><h3>The Styling Limitations</h3><p>WebKit has big time restrictions on what you can change on a search input. I would guess the idea is consistency. In Safari particularly, search fields look just like the search box in the upper right of the browser. The following CSS will be ignored in WebKit &#8220;no matter what&#8221;, as in, you can&#8217;t even fight against it with <code>!important</code> rules.</p><pre><code class="css">input[type=search] {
	padding: 30px;            /* Overridden by padding: 1px; */
	font-family: Georgia;     /* Overridden by font: -webkit-small-control; */
	border: 5px solid black;  /* Overridden by border: 2px inset; */
	background: red;          /* Overridden by background-color: white; */
	line-height: 3;           /* Irrelevant, I guess */
}</code></pre><p>In other words, <strong>be extremely cautious</strong> about using any of those CSS properties on a search input unless you are OK with the search input looking <strong>very</strong> different in other browsers.</p><h3>Allowed styling</h3><p>The following CSS works as expected. The last three, in my opinion, should probably locked in like the properties above as styling those properties almost always looks worse than if you didn&#8217;t.</p><pre><code class="css">input[type=search] {
	color: red;
	text-align: right;
	cursor: pointer;
	display: block;
	width: 100%;
	letter-spacing: 4px;
	text-shadow: 0 0 2px black;
	word-spacing: 20px;
}</code></pre><h3>Busted styling</h3><p>Be careful not to use <code>text-indent</code> on search inputs. The results are quite weird an inconsistent. Here is one example:</p><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/weirdtextindent.png" alt="" title="weirdtextindent" width="148" height="43" class="alignnone size-full wp-image-7267" /></p><p>Sometimes the text is below like this. Sometimes it&#8217;s not visible at all. It appears to be related to elements around it as well as how much indent it has (low values sometimes work fine).</p></div><h3>Show Previous Searches</h3><p>This isn&#8217;t documented anywhere that I know of nor is it in the spec, but you if you add a <code>results</code> parameter on the input, WebKit will apply a little magnifying glass with a dropdown arrow showing previous results. (Thanks to <a
href="http://miketaylr.com/">Mike Taylor</a>)</p><pre><code class="html">&lt;input type=search results=5 name=s&gt;</code></pre><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/RecentSearches.png" alt="" title="RecentSearches" width="247" height="161" class="alignnone size-full wp-image-7268" /></p><p>The integer value you give the <code>results</code> attribute is how many recent searches will appear in this dropdown, if there are that many.</p></div><p>I really like the little magnifying glass. It drive home the searchyness of the field, but I&#8217;m calling the functionality itself rather janky. On a page reload recent searches clears, so that dropdown will almost always say &#8220;No recent searches&#8221;, unless you have implemented some kind of Ajax search (and even that I haven&#8217;t really tested).</p><h3>Size Restrictions</h3><p>There are only three different &#8220;sizes&#8221; that WebKit search inputs can be, and it is determined by the font-size you declare on them.</p><table
class="sizetable"><tr><th>Resulting Size</th><th>CSS font-size</th></tr><tr><td>Small</td><td>&lt;= 10px</td></tr><tr><td>Medium</td><td>11px &#8211; 15px</td></tr><tr><td>Large</td><td>>= 16px</td></tr></table><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/allsizes.png" alt="" title="allsizes" width="226" height="274" class="alignnone size-full wp-image-7271" /></p><p>Small, Medium, and Large. That&#8217;s all you get!</p></div><p>This small, medium, and large business can be extremely frustrating, as even setting identical font values, at the minimum for a &#8220;bump&#8221;, you&#8217;ll see font size difference across browsers.</p><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/fontsizedifference.png" alt="" title="fontsizedifference" width="464" height="132" class="alignnone size-full wp-image-7272" /></p><p>Identical font sizings not idential.</p></div><p>Notice the (x) on the right hand side of the search inputs on the WebKit side. That is an additional feature of these search inputs in WebKit. If the input has any value (not a placeholder, a real value) the (x) will be present which is a functional UI control for clearing the input.</p><p>Speaking of placeholder text, search inputs are a great candiate for that.</p><pre><code class="html">&lt;input type=search results=5 placeholder=Search... name=s&gt;</code></pre><p>And in case light gray isn&#8217;t your cup of tea, you can style the placeholder text:</p><pre><code class="css">::-webkit-input-placeholder {
        color: orangered;
}</code></pre><p><a
href="http://css-tricks.com/examples/SearchInputs/" class="button">View Demo</a></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/webkit-html5-search%c2%a0inputs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stylebot</title>
		<link>http://www.lakevillewebdesign.com/stylebot/</link>
		<comments>http://www.lakevillewebdesign.com/stylebot/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 01:58:17 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7277</guid>
		<description><![CDATA[<p>Chrome users and CSS wranglers, check this out. It&#8217;s an extension which adds a &#8220;css&#8221; link on the right in your URL bar. Click it to open a CSS Edit-like pane on any website where you can click elements and adjust their CSS on the fly. The CSS that you edit will automatically be applied any time you visit that domain, allowing you to make persisting changes to the sites you visit.</p><p><a href="http://stylebot.me" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a href="http://css-tricks.com/stylebot/">Permalink</a></p>]]></description>
			<content:encoded><![CDATA[<p>Chrome users and CSS wranglers, check this out. It&#8217;s an extension which adds a &#8220;css&#8221; link on the right in your URL bar. Click it to open a CSS Edit-like pane on any website where you can click elements and adjust their CSS on the fly. The CSS that you edit will automatically be applied any time you visit that domain, allowing you to make persisting changes to the sites you visit.</p><p><a
href="http://stylebot.me" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/stylebot/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/stylebot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.net Magazine Awards</title>
		<link>http://www.lakevillewebdesign.com/net-magazine%c2%a0awards/</link>
		<comments>http://www.lakevillewebdesign.com/net-magazine%c2%a0awards/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 01:11:05 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7209</guid>
		<description><![CDATA[<p>The Oscars of web nerdery. I&#8217;m nominated for a flatteringly high number of categories! Web personality of the year? You know it.</p><p><a href="http://www.thenetawards.com/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a href="http://css-tricks.com/net-magazine-awards/">Permalink</a></p>]]></description>
			<content:encoded><![CDATA[<p>The Oscars of web nerdery. I&#8217;m nominated for a flatteringly high number of categories! Web personality of the year? You know it.</p><p><a
href="http://www.thenetawards.com/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/net-magazine-awards/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/net-magazine%c2%a0awards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Poll: Multiple JavaScript Libraries</title>
		<link>http://www.lakevillewebdesign.com/new-poll-multiple-javascript%c2%a0libraries/</link>
		<comments>http://www.lakevillewebdesign.com/new-poll-multiple-javascript%c2%a0libraries/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 13:57:11 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7254</guid>
		<description><![CDATA[<p>Have you ever tried to debug a site where a beginner web designer has loaded the page with scripts? There&#8217;s a couple copies of jQuery in various versions, maybe a little Prototype or MooTools thrown in. We can laugh a bit, but many of us went through that stage where we just didn&#8217;t really understand things well enough to know there was any problem with that. And is there? Aside from the bandwidth concerns, most libraries have steps you can&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Have you ever tried to debug a site where a beginner web designer has loaded the page with scripts? There&#8217;s a couple copies of jQuery in various versions, maybe a little Prototype or MooTools thrown in. We can laugh a bit, but many of us went through that stage where we just didn&#8217;t really understand things well enough to know there was any problem with that. And is there? Aside from the bandwidth concerns, most libraries have steps you can take to ensure they play well with other libraries if need be. So what&#8217;s the scoop? Do you ever use multiple libraries? Poll is in the sidebar.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/new-poll-multiple-javascript%c2%a0libraries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FireQuery</title>
		<link>http://www.lakevillewebdesign.com/firequery/</link>
		<comments>http://www.lakevillewebdesign.com/firequery/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 15:28:35 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7252</guid>
		<description><![CDATA[<p>This is a very cool extension for Firebug (add-on for an add-on?) that expands Firebug&#8217;s capabilities with jQuery. For instance, a built in jQueryify button, showing attached event handlers in the Content / DOM tree view, and highlighting all elements in a jQuery collection. I don&#8217;t think it&#8217;s new but I hadn&#8217;t seen it until I finally watched Remy Sharp&#8217;s <a href="http://jqueryfordesigners.com/debugging-tools/">debugging tools screencast</a> from last month.</p><p><a href="http://firequery.binaryage.com/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a href="http://css-tricks.com/firequery/">Permalink</a></p>]]></description>
			<content:encoded><![CDATA[<p>This is a very cool extension for Firebug (add-on for an add-on?) that expands Firebug&#8217;s capabilities with jQuery. For instance, a built in jQueryify button, showing attached event handlers in the Content / DOM tree view, and highlighting all elements in a jQuery collection. I don&#8217;t think it&#8217;s new but I hadn&#8217;t seen it until I finally watched Remy Sharp&#8217;s <a
href="http://jqueryfordesigners.com/debugging-tools/">debugging tools screencast</a> from last month.</p><p><a
href="http://firequery.binaryage.com/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/firequery/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/firequery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FireQuery</title>
		<link>http://www.lakevillewebdesign.com/firequery/</link>
		<comments>http://www.lakevillewebdesign.com/firequery/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 15:28:35 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7252</guid>
		<description><![CDATA[<p>This is a very cool extension for Firebug (add-on for an add-on?) that expands Firebug&#8217;s capabilities with jQuery. For instance, a built in jQueryify button, showing attached event handlers in the Content / DOM tree view, and highlighting all elements in a jQuery collection. I don&#8217;t think it&#8217;s new but I hadn&#8217;t seen it until I finally watched Remy Sharp&#8217;s <a href="http://jqueryfordesigners.com/debugging-tools/">debugging tools screencast</a> from last month.</p><p><a href="http://firequery.binaryage.com/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a href="http://css-tricks.com/firequery/">Permalink</a></p>]]></description>
			<content:encoded><![CDATA[<p>This is a very cool extension for Firebug (add-on for an add-on?) that expands Firebug&#8217;s capabilities with jQuery. For instance, a built in jQueryify button, showing attached event handlers in the Content / DOM tree view, and highlighting all elements in a jQuery collection. I don&#8217;t think it&#8217;s new but I hadn&#8217;t seen it until I finally watched Remy Sharp&#8217;s <a
href="http://jqueryfordesigners.com/debugging-tools/">debugging tools screencast</a> from last month.</p><p><a
href="http://firequery.binaryage.com/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/firequery/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/firequery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intentional Difficulty</title>
		<link>http://www.lakevillewebdesign.com/intentional%c2%a0difficulty/</link>
		<comments>http://www.lakevillewebdesign.com/intentional%c2%a0difficulty/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 14:40:24 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7250</guid>
		<description><![CDATA[<p>Here&#8217;s some food for thought.</p><p>When designing something that you are reasonably certain the user is willing (or forced) to invest time in learning to use proficiently, is it beneficial to intentionally make some tasks just slightly more difficult than they could be?</p><p>Not incredibly hard, not convoluted, not outright counter-intuitive. But perhaps making some information a little more buried, or placing an action in a slightly strange place. If the user is really looking, they&#8217;ll be able to&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s some food for thought.</p><p>When designing something that you are reasonably certain the user is willing (or forced) to invest time in learning to use proficiently, is it beneficial to intentionally make some tasks just slightly more difficult than they could be?</p><p>Not incredibly hard, not convoluted, not outright counter-intuitive. But perhaps making some information a little more buried, or placing an action in a slightly strange place. If the user is really looking, they&#8217;ll be able to find it.</p><p>Frustrating a user is never good, doubly so when you have competition a few clicks away. But forcing a user to do a little discovery and learn the specifics of this product/application/website might make them feel closer to it or more attached to it because they&#8217;ve already <em>learned</em> it.</p><p>I&#8217;m not <em>advocating</em> this, I&#8217;m just throwing it out there because I think it&#8217;s interesting. It&#8217;s certainly no excuse for bad design.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/intentional%c2%a0difficulty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Poll Results: Action Verb Clarity</title>
		<link>http://www.lakevillewebdesign.com/poll-results-action-verb%c2%a0clarity/</link>
		<comments>http://www.lakevillewebdesign.com/poll-results-action-verb%c2%a0clarity/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 15:06:08 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7083</guid>
		<description><![CDATA[<p>The latest poll was all about picking the best sentence to a user to perform a specific action on a website. The choices are listed below, sorted from most popular to least:</p><ul><li><strong>39%</strong> &#8211; Select a user and then click the Update button.</li><li><strong>37%</strong> &#8211; Select a user and then click Update.</li><li><strong>8%</strong> &#8211; Select a user and Update.</li><li><strong>7%</strong> &#8211; Select a user and then press the Update button.</li><li><strong>5%</strong> &#8211; Select a user and then press Update.</li></ul><p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>The latest poll was all about picking the best sentence to a user to perform a specific action on a website. The choices are listed below, sorted from most popular to least:</p><ul><li><strong>39%</strong> &#8211; Select a user and then click the Update button.</li><li><strong>37%</strong> &#8211; Select a user and then click Update.</li><li><strong>8%</strong> &#8211; Select a user and Update.</li><li><strong>7%</strong> &#8211; Select a user and then press the Update button.</li><li><strong>5%</strong> &#8211; Select a user and then press Update.</li><li><strong>3%</strong> &#8211; Select a user and then choose Update.</li><li><strong>1%</strong> &#8211; Select a user and then choose the Update button.</li></ul><p>Clearly, the action verb of &#8220;click&#8221; is the most popular. I don&#8217;t think that&#8217;s much of a surprise as that verb has been around and working for us for a long time. In the opening article, I suggested that &#8220;click&#8221; might be misleading since links and buttons can be used without having to use a mouse. Several people chimed in that, while that is true, those people still know what &#8220;click&#8221; means and can apply it to themselves. &#8220;Choose&#8221; was an device-agnostic alternative, but the least popular in this poll. &#8220;Press&#8221; only slightly more popular alternative. Surprisingly, the third most popular was to use the action verb from the button itself (since &#8220;Update&#8221; is already a verb).</p><p>New poll soon.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/poll-results-action-verb%c2%a0clarity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing Background “Bleed”</title>
		<link>http://www.lakevillewebdesign.com/fixing-background%c2%a0%e2%80%9cbleed%e2%80%9d/</link>
		<comments>http://www.lakevillewebdesign.com/fixing-background%c2%a0%e2%80%9cbleed%e2%80%9d/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 21:10:17 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7244</guid>
		<description><![CDATA[<p>Mike Harding with a desperately needed fix for when backgrounds &#8220;leak&#8221; out of elements with borders and border-radius.</p><p><a href="http://tumble.sneak.co.nz/post/928998513/fixing-the-background-bleed" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a href="http://css-tricks.com/fixing-background-bleed/">Permalink</a></p>]]></description>
			<content:encoded><![CDATA[<p>Mike Harding with a desperately needed fix for when backgrounds &#8220;leak&#8221; out of elements with borders and border-radius.</p><p><a
href="http://tumble.sneak.co.nz/post/928998513/fixing-the-background-bleed" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/fixing-background-bleed/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/fixing-background%c2%a0%e2%80%9cbleed%e2%80%9d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Forums Downtime</title>
		<link>http://www.lakevillewebdesign.com/forums%c2%a0downtime/</link>
		<comments>http://www.lakevillewebdesign.com/forums%c2%a0downtime/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 14:14:52 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7239</guid>
		<description><![CDATA[<p><del>Quick public service announcement: The CSS-Tricks forums will be unavailable starting now as the undergo awesomeness upgrades. I&#8217;ll update this post when they are back!</del></p><p><a href="http://css-tricks.com/forums/">And they are back!</a> Might be a bug here and there. Definitely let me know if you see one.</p> ]]></description>
			<content:encoded><![CDATA[<p><del>Quick public service announcement: The CSS-Tricks forums will be unavailable starting now as the undergo awesomeness upgrades. I&#8217;ll update this post when they are back!</del></p><p><a
href="http://css-tricks.com/forums/">And they are back!</a> Might be a bug here and there. Definitely let me know if you see one.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/forums%c2%a0downtime/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Browser Jumping</title>
		<link>http://www.lakevillewebdesign.com/browser%c2%a0jumping/</link>
		<comments>http://www.lakevillewebdesign.com/browser%c2%a0jumping/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 14:10:36 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7064</guid>
		<description><![CDATA[<p>If you asked me right now, <em>Hey Chris, what&#8217;s your favorite browser?</em> I wouldn&#8217;t know what to tell you! I&#8217;ve been a Firefox user primarily over the past few years, but over the last several months my allegiance is no longer to any one browser. I&#8217;m a browser jumper. I feel like it&#8217;s only fairly recently that the tools are finally there that I can do that without too much trouble.</p><p><span></span></p><p></p> Firefox, Chrome, &#038; Safari<p>When I&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>If you asked me right now, <em>Hey Chris, what&#8217;s your favorite browser?</em> I wouldn&#8217;t know what to tell you! I&#8217;ve been a Firefox user primarily over the past few years, but over the last several months my allegiance is no longer to any one browser. I&#8217;m a browser jumper. I feel like it&#8217;s only fairly recently that the tools are finally there that I can do that without too much trouble.</p><p><span
id="more-7064"></span></p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/three-browsers.jpg" alt="" title="three-browsers" width="570" height="274" class="alignnone size-full wp-image-7232" /></p><h3>Firefox, Chrome, &#038; Safari</h3><p>When I say I&#8217;m a browser jumper, I really only mean those three. I&#8217;d love for Opera to join the party. It&#8217;s nice and fast. Its Dragonfly developer tool is fully capable, but it doesn&#8217;t support two of my crutch tools: <a
href="http://www.xmarks.com/">XMarks</a> and <a
href="http://agilewebsolutions.com/products/1Password">1Password</a>. When that day comes, I&#8217;ll switch to it at least for a while. I feel like for obvious reasons I don&#8217;t use Internet Explorer. It&#8217;s just not as good of a browser and I&#8217;m not willing to use it other than for testing. Not to mention, I&#8217;m on a Mac. Although I do test on it, using <a
href="http://www.vmware.com/products/fusion/">VMWare Fusion</a> and a bunch of &#8220;Snapshots&#8221; where I keep Windows XP and Vista in different states of having native versions of IE 6/7/8/9.</p><h3>The Major Enablers</h3><p>My browser jumping is largely enabled by a couple of tools that keep the browser environments synced up for me.</p><h4>Xmarks</h4><p>If I had to export and import bookmarks every time, I&#8217;d probably never switch. I don&#8217;t use the bookmarks menu itself much, but I do like having my bookmarks bar consistent in all browsers (and across computers). I keep it pretty curated so if I make a switch, I want to see it in all my browsers across all my computers. <a
href="http://www.xmarks.com/">XMarks</a> makes that easy, for free.</p><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/xmarkssync2.jpg" alt="" title="xmarkssync" width="570" height="255" class="alignnone size-full wp-image-7218" /></p><p>Mmmm, consistency.</p></div><h4>1Password</h4><p>I was a little late to the game on <a
href="http://agilewebsolutions.com/products/1Password">1Password</a>, but I&#8217;m playing hard now. Why do you need a password tool? I used to think. My browser already remembers my passwords. Yes, most of them do, but not nearly as nicely as 1Password. 1Password keeps all your usernames/passwords in its database, and through browser extensions, allows you to submit them into sites. It makes having multiple logins for the same site much easier. It also deals with auto-filling forms. It also stores your credit cards in your &#8220;wallet&#8221; making online purchasing way easier. Not to mention other things like your Driver&#8217;s License. It&#8217;s very handy not to have to go around digging for that when the situation comes up you need to have that information.</p><p>The real advantage though, is that it keeps this information synced across browsers and across computers (using <a
href="http://dropbox.com">Dropbox</a> sync). Change a password in Firefox on your laptop, go home and use Safari on your desktop and you won&#8217;t have any problems.</p><h4>Delicious</h4><p>I like marking things on <a
href="http://www.delicious.com/chriscoyier">Delicious</a> for reading later, further reference, just to share, or whatever. It just bugs me when I&#8217;m in an environment where I can mark something I&#8217;m looking at in Delicious, so I always look for that ability.</p><table
class="standard-table"><tr><td> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/1passwordsafari.jpg" alt="" title="1passwordsafari" width="339" height="325" class="alignnone size-full wp-image-7212" /></td><td> 1Password is full powered in Safari, meaning it can fill and submit forms as well as access all your form prefilling data.</td></tr><tr><td> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/1passwordfirefox.jpg" alt="" title="1passwordfirefox" width="339" height="347" class="alignnone size-full wp-image-7213" /></td><td> 1Password is equally full powered in Firefox.</td></tr><tr><td> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/1passwordchrome.jpg" alt="" title="1passwordchrome" width="339" height="211" class="alignnone size-full wp-image-7214" /></td><td> 1Password is pretty crippled in Chrome (<a
href="http://help.agile.ws/1Password3/google_chrome_logins_bookmarklet.html">it&#8217;s only alpha</a>), allowing only the submission of logins. It&#8217;s better than nothing though, as I wouldn&#8217;t be able to use Chrome without it and I love me some Chrome.</td></tr></table><h4>Development Tools</h4><p>One of the things that kept me in Firefox for so long was <a
href="http://getfirebug.com/">Firebug</a>. OK, the only thing. Firebug is amazing and I believe is still the best developer tool out there. But now the Web Inspector that comes in both Safari and Chrome is nearly as awesome, functionally. It&#8217;s actually much prettier, but I debate a few of the UI decisions. Dragonfly in Opera is also very nice, but as I said, I don&#8217;t use Opera much. Now that all these browsers have great Developer Tools, it&#8217;s not a major determining factor on which I use.</p><div
class='image-wrap'> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/firebug.jpg" alt="" title="firebug" width="570" height="149" class="alignnone size-full wp-image-7219" /></p><p>The original king of dev tools, Firebug.</p></div><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/webinspector.jpg" alt="" title="webinspector" width="570" height="163" class="alignnone size-full wp-image-7220" /></p><p>The Web Inspector is much prettier than Firebug (especially in panels like the Resource  panel) and just as powerful as Firebug.</p></div><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/versus2.jpg" alt="" title="versus2" width="570" height="210" class="alignnone size-full wp-image-7222" /></p><p>My one big gripe with Web Inspector is the folding areas on the right. If you inspect properties a lot, the Metrics is always buried way down. The tabs of Firebug are much easier.</p></div><h3>Browser Notes</h3><h4>Firefox</h4><p>The URL bar handling in Firefox is my favorite of all browsers. When you start typing, it matches what you&#8217;ve typed so far by URL <strong>and</strong> by page titles, which typically yields really smart and useful results. If you type an incomplete web address, the bar will behave like the &#8220;<em>Feelin&#8217; lucky</em>&#8221; button in Google, where it will take you to the first result for that search term in Google. For example, typing &#8220;firebug&#8221; will get you to &#8220;http://getfirebug.com&#8221;. I use this to lazily get to destinations all the time.</p><div
class="image-wrap"> <a
href="http://cdn.css-tricks.com/wp-content/uploads/2010/08/FirefoxURLbar.png"><img
src="http://css-tricks.com/wp-content/uploads/2010/08/FirefoxURLbar.png" alt="" title="FirefoxURLbar" width="379" height="204" class="alignnone size-full wp-image-7224" /></a></p><p>The Firefox URL bar is the most helpful</p></div><p>Other quick notes on Firefox:</p><ul><li>Firebug is still the best dev tool in my opinion. Other people swear by it in combination with the Web Developer Toolbar. I just never got into the WDT thing.</li><li>The <a
href="https://addons.mozilla.org/en-US/firefox/addon/11097/">Open With</a> add-on is nice for browser jumpers. It provides a contextual menu for opening the page you are currently viewing in other browsers.<p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/Openwith.png" alt="" title="Openwith" width="561" height="97" class="alignnone size-full wp-image-7225" /></p><p>This would be a good time to mention <a
href="http://www.choosyosx.com/">Choosy</a> as well. Non-Firefox specific, but allows for browser choice in opening links.</li><li><a
href="http://davemartorana.com/multifirefox/">Multifirefox</a> is a great tool for having around multiple version of Firefox (for testing). Simply download old versions of Firefox and rename the Application file (like &#8220;Firefox 2.app&#8221;). Then launch this application to start any version of Firefox, and you&#8217;ll be able to pick a particular profile and particular version. That way you can keep multiple versions open simultaneously which you cannot otherwise.</li><li><a
href="https://addons.mozilla.org/en-US/firefox/addon/1146/">Screengrab</a> is a great extension for Firefox that can take a snap shot of the entire length of a webpage. I haven&#8217;t found an alternative (other than <a
href="http://derailer.org/paparazzi/">Paparazzi</a>, which is super old) in other browsers.</li><li>Firefox has an <a
href="https://addons.mozilla.org/en-US/firefox/addon/3615/">official Delicious add-on</a>.</li></ul><h3>Safari</h3><p>The URL bar handling in Safari is my least favorite of the three. It matches what you start typing by both URL and page title, but the dropdown results are more generic and less helpful than Firefox. Also remember how Firefox allows entering a keyword with the &#8220;Feelin Lucky&#8221; like results, if you try and put a generic search string in Safari you&#8217;ll likely just get an error page.</p><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/safarinothelpful.png" alt="" title="safarinothelpful" width="488" height="411" class="alignnone size-full wp-image-7226" /></p><p>I feel like Safari should step it up in this department. Although it&#8217;s likely just because I&#8217;m so used to Firefox.</p></div><p>Other notes about Safari:</p><ul><li>Safari has an annoying default where, when it is the default browser and another application tells it to open a link, it will default to opening in a new window. I doubt very many people prefer that behavior, preferring instead to have new links open in tabs. Thankfully there is <a
href="http://www.456bereastreet.com/archive/200812/make_safari_open_targeted_links_in_new_tabs_instead_of_new_windows/">a fix for that</a>.</li><li>Viewing source in Safari yields non-highlighted, non-linked, non-line-numbered, lifeless code. You can fix that with the <a
href="http://www.awarepixel.com/safari/bettersource/">BetterSource extension</a>.</li><li><a
href="http://delicioussafari.com/">This is what I use</a> for Delicious in Safari, but there is also <a
href="http://github.com/jeveaux/delicious-safari-extension/downloads">a native extension</a> now as well.</li><li>You can re-open a closed tab in Safari with Command-Z, but that re-opened tab does not retain it&#8217;s history, which is awful.</li></ul><h3>Chrome</h3><p>Noteable about Chrome is that it doesn&#8217;t have a separate URL bar and search bar, it is combined. This is clever as a space-saving UI feature, but takes a bit of getting used to. For example, in Firefox or Safari typing &#8220;getfirebug&#8221; will instantly get you to &#8220;http://getfirebug.com&#8221;, but Chrome, in seeing that as not a full URL, will do a Google search for it, and require you an additional click to get to where you want to get. I feel like if any browser should have &#8220;Feelin&#8217; Lucky&#8221; type behavior, it&#8217;s Chrome, but I can also understand that without a dedicated search field, this is impossible.</p><p>Other notes about Chrome:</p><ul><li>Chrome has very nice View Source</li><li>Chrome has a neat search feature where it shows you the scroll positions of the matches it finds.<br
/> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/searchpos.png" alt="" title="searchpos" width="328" height="121" class="alignnone size-full wp-image-7227" /></li><li>There is now <a
href="https://chrome.google.com/extensions/detail/gclkcflnjahgejhappicbhcpllkpakej">an official extension</a> for Delicious in Chrome.</li><li>Chrome shows page titles in the tab, but has no dedicated area at the top to show full page titles, which can feel weird.</li></ul><h3>Results</h3><p>Even after typing all that up, I couldn&#8217;t pick a winner. I quite like them all. Their little positives and negatives cancel each other out as far as I&#8217;m concerned. Noticed I didn&#8217;t mention speed. You can feel subtle speed difference between them on different sites but nothing to write home about. I also find that all three of them crash from time to time, and that none at any noticeably higher rate.</p><h3>Is this what they want?</h3><p>If we could attend secret strategy meetings for these browser vendors, would we discover that this easy interchangeability is what they were going for? Or would we hear planning for future strategies to differentiate themselves more firmly? We web workers are always fighting for the web to behave the same in all browsers, but do we want that fight to be brought to the browsers UI and functionality themselves?</p><p>I really don&#8217;t know. In some ways I appreciate how easy it has become to switch around, but at the same time have to wonder what is happening in competition and innovation if the final products have become so similar.</p><p>&nbsp;</p><p>I&#8217;m sure you all have favorite browsers, favorite tools, and favorite techniques for browser jumping. Feel free to share!</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/browser%c2%a0jumping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogging is Still Awesome &amp; Yours Can Kick-Ass</title>
		<link>http://www.lakevillewebdesign.com/blogging-is-still-awesome-yours-can%c2%a0kick-ass/</link>
		<comments>http://www.lakevillewebdesign.com/blogging-is-still-awesome-yours-can%c2%a0kick-ass/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 15:18:44 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7085</guid>
		<description><![CDATA[<p>That&#8217;s the title of my proposed talk for SXSW. I&#8217;m rather excited about it. I&#8217;m going to be talking a lot about this blog and how I&#8217;ve done things over the years and what has and hasn&#8217;t been successful for me (which I&#8217;ve never really talked about before). Then, how you can take these ideas and improve your own blog. I promise it&#8217;s not going to be a bunch of junk you&#8217;ve heard a million times about how content is&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>That&#8217;s the title of my proposed talk for SXSW. I&#8217;m rather excited about it. I&#8217;m going to be talking a lot about this blog and how I&#8217;ve done things over the years and what has and hasn&#8217;t been successful for me (which I&#8217;ve never really talked about before). Then, how you can take these ideas and improve your own blog. I promise it&#8217;s not going to be a bunch of junk you&#8217;ve heard a million times about how content is king.</p><p><a
href="http://panelpicker.sxsw.com/ideas/view/5801" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/sxsw-2010/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/blogging-is-still-awesome-yours-can%c2%a0kick-ass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Started with CakePHP: An Event Manager</title>
		<link>http://www.lakevillewebdesign.com/getting-started-with-cakephp-an-event%c2%a0manager/</link>
		<comments>http://www.lakevillewebdesign.com/getting-started-with-cakephp-an-event%c2%a0manager/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 13:35:41 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6982</guid>
		<description><![CDATA[<p>The following is a guest post by <a href="http://twitter.com/r0mk1n">r0mk1n</a>. I was able to easily follow along and have the demo app up and running on my machine in just a few minutes. It&#8217;s pretty cool how easy it has become to quickly build powerful web applications.</p><p><a href="http://cakephp.org/">CakePHP</a> is a free, open-source, rapid development framework for PHP. It’s a foundational structure for programmers to create web applications and enables you to work in a structured and rapid manner–without loss of&#8230;</p>]]></description>
			<content:encoded><![CDATA[<div
class="explanation"><p>The following is a guest post by <a
href="http://twitter.com/r0mk1n">r0mk1n</a>. I was able to easily follow along and have the demo app up and running on my machine in just a few minutes. It&#8217;s pretty cool how easy it has become to quickly build powerful web applications.</p></div><p><a
href="http://cakephp.org/">CakePHP</a> is a free, open-source, rapid development framework for PHP. It’s a foundational structure for programmers to create web applications and enables you to work in a structured and rapid manner–without loss of flexibility. In this tutorial we are going to be exploring the benefits of using CakePHP and provide an example project, an Event Manager style application, to help get you started.</p><p><span
id="more-6982"></span></p><p>CakePHP takes the monotony out of web development. We provide you with all the tools you need to get started coding what you really need to get done: the logic specific to your application. Instead of reinventing the wheel every time you sit down to a new project, check out a copy of CakePHP and get started with the real guts of your application. CakePHP has an active developer team and community, bringing great value to the project. In addition to keeping you from wheel-reinventing, using CakePHP means your application’s core is well tested and is being constantly improved.</p><p>Here’s a quick list of features you’ll enjoy when using CakePHP:</p><ul><li>Active, friendly community</li><li>Flexible licensing</li><li>Compatible with versions 4 and 5 of PHP</li><li>Integrated CRUD for database interaction</li><li>Application scaffolding</li><li>Code generation</li><li>MVC (Model, View, Controller) architecture</li><li>Request dispatcher with clean, custom URLs and routes</li><li>Built-in validation</li><li>Fast and flexible templating (PHP syntax, with helpers)</li><li>View Helpers for AJAX, JavaScript, HTML Forms and more</li><li>Email, Cookie, Security, Session, and Request Handling Components</li><li>Flexible ACL (Access Control List)</li><li>Data Sanitization</li><li>Flexible Caching</li><li>Localization</li><li>Works from any web site directory, with little to no Apache configuration involved</li></ul><h3>Idea</h3><p>The main idea of our tutorial is to create a simple Events Manager using CakePHP. Our project will:</p><ul><li>Create / Update / Deleting events with or without attached location (This is often called a CRUD style application)</li><li>Create /  Update / Delete locations</li><li>Show all events in a <strong>list</strong> view or <strong>calendar</strong> view</li><li>Provide an RSS feed for all events</li></ul><p>Our project also includes these advanced technical concepts:</p><ul><li>Using 3rd party components (Swift Mailer)</li><li>AJAX functionality (jQuery + CakePHP)</li><li>Custom helpers</li><li>Custom Users access control (based on user role)</li><li>Creating Backend</li></ul><p>There are the things you will need for this project to run:</p><ol><li>Apache web server with enabled mod_rewrite</li><li>PHP version 5 or higher</li><li>MySQL</li><li>SVN client</li></ol><h3>Project installation</h3><p>If you wish to work locally, using a tool like MAMP/LAMP/WAMP can be a great way to go. You can make a local development domain and work from there.</p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/mamp+cake.jpg" alt="" title="mamp+cake" width="570" height="400" class="alignnone size-full wp-image-7187" /></p><p>Where ever you choose to work, create a folder in your server&#8217;s root directory. You may be working locally with a tool like MAMP/WAMP/LAMP, or be working on online developent server. You may name it whatever you like. Navigate to this folder with your shell access and run this command:</p><pre><code class="shell">svn checkout http://cakephp-tricks.googlecode.com/svn/trunk/ cakephp-tricks-read-only</code></pre><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/svncheckout.png" alt="" title="svncheckout" width="574" height="250" class="alignnone size-full wp-image-7188" /></p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/apphome.png" alt="" title="apphome" width="530" height="304" class="alignnone size-full wp-image-7195" /></p><h3>Creating the Database and SQL Structure</h3><p>Now you need to create a new database in MySQL. Do that however your web host provides, or locally, you can use a tool like Sequel Pro.</p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/SequelPro.jpg" alt="" title="SequelPro" width="570" height="228" class="alignnone size-full wp-image-7189" /></p><p>You can name it whatever you like and give it whatever password you would like. Then you&#8217;ll need to run this SQL to set up the structure:</p><pre><code class="sql">CREATE DATABASE `tricks_cake`;

USE `tricks_cake`;

/* Table structure for table `events` */
DROP TABLE IF EXISTS `events`;
CREATE TABLE `events` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `user_id` int(10) unsigned default NULL,
  `location_id` int(10) unsigned default NULL,
  `exp_date` datetime default NULL,
  `title` varchar(255) default '',
  `description` text,
  `url` varchar(255) default '',
  `complete` enum('yes','no') default 'no',
  `created` datetime default NULL,
  `modified` datetime default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

/* Table structure for table `locations` */
DROP TABLE IF EXISTS `locations`;
CREATE TABLE `locations` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `user_id` int(10) unsigned default NULL,
  `title` varchar(255) default '',
  `city` varchar(50) default '',
  `state` varchar(2) default '',
  `zip` int(10) unsigned default NULL,
  `address1` varchar(255) default '',
  `address2` varchar(255) default '',
  `created` datetime default NULL,
  `modified` datetime default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

/* Table structure for table `users` */
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `email` varchar(50) default '',
  `pass` varchar(50) default '',
  `enabled` enum('yes','no') default 'yes',
  `activated` enum('yes','no') default 'no',
  `ac_code` varchar(32) default '',
  `role` enum('admin','user') default 'user',
  `created` datetime default NULL,
  `modified` datetime default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;</code></pre><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/createdb.jpg" alt="" title="createdb" width="570" height="275" class="alignnone size-full wp-image-7190" /></p><p>This SQL is also located in the project at /app/config/schema/structure.sql</p><h3>Setting up the Project Files</h3><p>Now that we have our CakePHP project installed and set up with our server environment, let&#8217;s take a look into the code. We&#8217;ll need to make some changes to the configuration files.</p><h4>core.php</h4><p>This is the main configuration file. You&#8217;ll need rename or copy the default configuration file (located at /app/config/core.php.default) with the name <strong>core.php</strong>, in same folder. Next, you need to change some custom settings.</p><p>The following lines are to be adjusted in the code already in that file, and help us to send email from the application (needed for sending new user confirmation emails)</p><pre><code class="php">// SMTP
    Configure::write( 'smtp_type', 'tls' );
    Configure::write( 'smtp_timeout', 60 );
    Configure::write( 'smtp_host', 'smtp.gmail.com' );
    Configure::write( 'smtp_port', 465 );
    Configure::write( 'smtp_user', 'tricks.cake@gmail.com' );
    Configure::write( 'smtp_password', '' );
    Configure::write( 'smtp_encryption', 'ENC_SSL' );
    Configure::write( 'smtp_mail_from_name', 'noreply' );
    Configure::write( 'smtp_mail_from_addr', 'tricks.cake@gmail.com' );</code></pre><p>The values above are for a test/junk GMail account we created just for this. If you planning to send emails from your own Google account, you need to change 3 variables: <code>smtp_user</code>, <code>smtp_password</code> and <code>smtp_mail_from_addr</code></p><p>Now change <code>site_name</code> of your project to the URL it resides on:</p><pre><code class="php">// globsl
    Configure::write( 'site_name', 'learning-cakephp.dev' );</code></pre><p>There are other values you may want to change while extending the project, but you don&#8217;t need to do this right now. You can read more about <a
href="http://book.cakephp.org/view/931/CakePHP-Core-Configuration-Variables">CakePHP core.php configuration variables here</a>.</p><h4>database.php</h4><p>This is the database configuration file. You&#8217;ll need to rename or copy this file (located at /app/config/database.php.default) to <strong>database.php</strong> in the same directory. Then fill out the $default connection array. A finished configuration should look something like this:</p><pre><code class="php">var $default = array('driver'      =&gt; 'mysql',
                    'persistent'  =&gt; false,
                    'host'        =&gt; 'localhost',
                    'login'       =&gt; 'cakephpuser',
                    'password'    =&gt; 'c4k3roxx!',
                    'database'    =&gt; 'my_cakephp_project',
                    'prefix'      =&gt; '');</code></pre><p>These are the database connection details from when you created your database for this project. More information about <a
href="http://book.cakephp.org/view/922/Database-Configuration">database configuration</a>.</p><h4>routes.php</h4><p>Routing is a feature that maps URLs to controller actions. It was added to CakePHP to make pretty URLs more configurable and flexible. Using Apache’s mod_rewrite is not required for using routes, but it will make your address bar look much more tidy. You don&#8217;t need to change this file at this time, but you can read about this file (for future use) <a
href="http://book.cakephp.org/view/945/Routes-Configuration">here</a>.</p><h4>app_controller.php</h4><p>This file (located at/app/app_controller.php) is parent class for all controllers in our project. If this file exists, all Controller classes will be inherited from our app_controller. If it doesn&#8217;t exist, they will be inherited from the libraries default file at /cake/libs/controller/app_controller.php. This is very useful if we need to extend all controllers. You can read more about the <a
href="http://book.cakephp.org/view/957/The-App-Controller">App Control here</a>.</p><h4>app_model.php</h4><p>This file (located at /app/app_model.php) is parent class for all models in the project. It works just like app_controller, but for all models. If you look into any model code (/app/models) you can see we using $validationSet property (instead of the original $validate property) for creating the list of validation schemes, this allows for more flexible validation data stored in the database. Also we are using app_model to write custom validation rules for use in all models.</p><h4>address.php</h4><p>This file (located at /app/views/helpers/address.php) demonstrates how to create a custom helper for your project. You can read <a
href="http://book.cakephp.org/view/1097/Creating-Helpers">more about helpers here</a>.</p><h3>3rd Party Libraries</h3><p>We using 3rd party library <a
href="http://swiftmailer.org/">SwiftMailer</a> for sending out email instead of built in EmailComponent to demonstrate how CakePHP works with 3rd party libraries. SwiftMailerComponent (located at /app/controllers/components/swift_mailer.php) is using for access to SwiftMailer library from our CakePHP project. You can read <a
href="http://book.cakephp.org/view/996/Creating-Components">more about components here</a>.</p><h3>Additional Structure</h3><p>And, finally, few words about code structure. CakePHP features Controller, Model, and View classes, but it also features some additional classes and objects that make development in MVC a little quicker and more enjoyable. Components, Behaviors, and Helpers are classes that provide extensibility and reusability to quickly add functionality to the base MVC classes in your applications. Right now we’ll stay at a higher level, so look for the details on how to use these tools later on. You can read more about <a
href="http://book.cakephp.org/view/893/CakePHP-Structure">classes here</a> and more about <a
href="http://book.cakephp.org/view/901/CakePHP-Conventions">CakePHP conventions here</a>.</p><h3>Onward!</h3><p>Now you are ready to start investigating our tutorial project! Visiting your development domain in your browser should bring up the app. You&#8217;ll be able to register for an account, activate it, then create/update/delete events and locations as well as view them in the two different views.</p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/cakephpapp.png" alt="" title="cakephpapp" width="570" height="350" class="alignnone size-full wp-image-7193" /></p><h4>Writeable error?</h4><p>If you get an error about cache files not being writeable, make sure the /app/tmp folder is writeable, and then apply those permissions to all subfolders.</p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/writeable.png" alt="" title="writeable" width="505" height="342" class="alignnone size-full wp-image-7194" /></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/getting-started-with-cakephp-an-event%c2%a0manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Touch “slide to unlock” in Mobile Safari</title>
		<link>http://www.lakevillewebdesign.com/touch-%e2%80%9cslide-to-unlock%e2%80%9d-in-mobile%c2%a0safari/</link>
		<comments>http://www.lakevillewebdesign.com/touch-%e2%80%9cslide-to-unlock%e2%80%9d-in-mobile%c2%a0safari/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 20:12:05 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7185</guid>
		<description><![CDATA[<p>Evan Black took my <a href="http://css-tricks.com/slide-to-unlock/">&#8220;slide to unlock&#8221; demo</a> and made the actual finger-slider work with Mobile Safari using JavaScript touch events. I updated the demo on this site as well, making it work both on desktop browsers and Mobile Safari simultaneously.</p><p><a href="http://www.evanblack.com/blog/touch-slide-to-unlock/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a href="http://css-tricks.com/slide-to-unlock-with-touch-events/">Permalink</a></p>]]></description>
			<content:encoded><![CDATA[<p>Evan Black took my <a
href="http://css-tricks.com/slide-to-unlock/">&#8220;slide to unlock&#8221; demo</a> and made the actual finger-slider work with Mobile Safari using JavaScript touch events. I updated the demo on this site as well, making it work both on desktop browsers and Mobile Safari simultaneously.</p><p><a
href="http://www.evanblack.com/blog/touch-slide-to-unlock/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/slide-to-unlock-with-touch-events/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/touch-%e2%80%9cslide-to-unlock%e2%80%9d-in-mobile%c2%a0safari/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Show Markup in CSS Comments</title>
		<link>http://www.lakevillewebdesign.com/show-markup-in-css%c2%a0comments/</link>
		<comments>http://www.lakevillewebdesign.com/show-markup-in-css%c2%a0comments/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 12:53:01 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7161</guid>
		<description><![CDATA[<p>Let&#8217;s say you are creating a CSS file for a modular bit of a webpage. Perhaps you are the type that separates your CSS files into bits like header.css, sidebar.css, footer.css, etc. I just ran across an idea I thought was rather clever where you include the basic markup you will be styling as a comment at the top of your CSS file. For example, a sidebar.css file might look like:</p><p><span></span></p> /*
&#060;aside&#062;
&#060;div class="widget"&#062;
&#060;h5 class="widget-title"&#062;
&#060;p&#062;&#060;/p&#062;
&#060;/div&#062;<p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s say you are creating a CSS file for a modular bit of a webpage. Perhaps you are the type that separates your CSS files into bits like header.css, sidebar.css, footer.css, etc. I just ran across an idea I thought was rather clever where you include the basic markup you will be styling as a comment at the top of your CSS file. For example, a sidebar.css file might look like:</p><p><span
id="more-7161"></span></p><pre><code class="css">/*
&lt;aside&gt;
   &lt;div class="widget"&gt;
       &lt;h5 class="widget-title"&gt;
       &lt;p&gt;&lt;/p&gt;
   &lt;/div&gt;
   &lt;!-- other widgets --&gt;
&lt;/aside&gt;
*/

aside { background-color: #ccc; }
aside .widget { background-color: white; padding: 10px; }
aside .widget h5 { border-bottom: 1px solid black; }
/* etc. */</code></pre><p>This could be useful for yourself as you would have to do less flipping back and forth between where you are viewing markup and this CSS file. This is even more useful when:</p><ol><li>The markup is generated by JavaScript and harder to see anywhere else or,</li><li>The CSS is specific to a plugin or third-party add-on</li></ol><p>I got this idea from the <a
href="http://css-tricks.com/mediaelements/mediaelementplayer.css">CSS file from mediaelements.js</a>, which I think is a perfect use case example.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/show-markup-in-css%c2%a0comments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Design v7</title>
		<link>http://www.lakevillewebdesign.com/design%c2%a0v7/</link>
		<comments>http://www.lakevillewebdesign.com/design%c2%a0v7/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 12:27:49 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7111</guid>
		<description><![CDATA[<p>I rolled out a new design this weekend! As usual it&#8217;s a bit of an aesthetic overhaul (blue!). I&#8217;m going to cover the <em>why</em>, the new aspects, and some of the new technology involved. RSS readers, you&#8217;ll have to make the jump and look around =).</p><p><strong>And now, a note about critiquing:</strong> I love critiques! If you want to rip this design to shreds, please do so. I have my bachelors in Art and part of that was getting torn&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>I rolled out a new design this weekend! As usual it&#8217;s a bit of an aesthetic overhaul (blue!). I&#8217;m going to cover the <em>why</em>, the new aspects, and some of the new technology involved. RSS readers, you&#8217;ll have to make the jump and look around =).</p><p><strong>And now, a note about critiquing:</strong> I love critiques! If you want to rip this design to shreds, please do so. I have my bachelors in Art and part of that was getting torn apart in critiques when deserved. It makes us better. I am accepting all criticism, and I am also open to changes if I see a trend in comments or something is said that resonates with me. That said, I&#8217;m not open to generically negative comments like &#8220;I liked the old design better.&#8221; I&#8217;ve even already heard nonsense from people who have &#8220;lost respect&#8221; for me. All that does is hurt my feelings and in turn, make me lose respect for them. Comments like these are often fear-induced who-moved-my-cheese reactions, not careful considerations. Like all comment threads on this site, this one will be moderated. I spend a lot of time with this site and this design reflects what I consider to be improvements across many aspects. Please take the time you need to let the design sink in and consider it, and comment below with your thoughts. Thanks =)</p><p><span
id="more-7111"></span></p><h3>Why?</h3><p>This isn&#8217;t the type of design that ends up in CSS galleries. It has ads on it. It&#8217;s very utilitarian. It just delivers the type of content that this site has in a (hopefully) very findable and easily digestible way. The font size of body text in articles in this new design is up to a fairly large 16px. My eyesight is fine and I I haven&#8217;t heard any big complaints about readability before, but lately I&#8217;ve been finding myself bumping up webpages a few notches because I find large type easier to read quickly with higher comprehension. Or maybe it&#8217;s in my head, I dunno.</p><p>I also felt the need to rejigger some of the advertising on the site. I dropped some of the zones I felt were awkwardly placed. I added a few new ones and adjusted others. There is about the same amount as there ever was, I just feel like it&#8217;s integrated nicer. If anyone is interested, there are <a
href="http://buysellads.com/buy/detail/1098/">zones still open</a> on BuySellAds.</p><p>Speed is also a factor. There are less images in this theme which helps speed things up a tad. I tried to <a
href="http://css-tricks.com/css-sprites/">sprite</a> things as much as I could of course. I&#8217;m rocking about a 2 second page load time on average, which isn&#8217;t amazing but I think is decent for a site with this much stuff on it. Some of the slowest stuff is external, so we&#8217;ll see what happens there&#8230;</p><h3>History</h3><p>For longevity&#8217;s sake, I&#8217;m keeping my archive of old embarrassing designs on a new <a
href="http://css-tricks.com/design-history/">Design History</a> page.</p><h4>New Stuff</h4><ul><li><a
href="http://css-tricks.com/linkage-returns/">Linkage has returned!</a></li><li>Site is running <a
href="http://wordpress.org/download/">WordPress 3.0.1</a></li><li>The site now <strong>fluid width</strong> for the first time ever. It fits into 1024px screens with no horizontal scroll and spreads up to 1200px. Not a huge spread. One of the things I like the least about fluid width designs is when all that changes is the line length of text. There are line length changes here, but they are fairly reigned in and there are subtle layout adjustments where needed.</li><li>There are the new <a
href="http://twitter.com/goodies/tweetbutton">official twitter buttons</a> on posts. I&#8217;ve always been a little sour on social media buttons. For example, if you are a Delicious user, you know the tools added to your browser are 10x better than a link on a website. However, 1) I kind of like how these buttons work 2) Twitter is my favorite social site and 3) I can now feel like I&#8217;m not throwing away potential traffic from some ideological stand.</li></ul><h4>Removed Stuff</h4><ul><li>The <strong>latest tweet</strong> bubble is gone. That was in the last two or three designs and I&#8217;m now over it. I feel like many times just seeing my latest tweet was weirdly out of place. More importantly, it was slow to load (I never did any caching). There are still social media links in the footer (including some new ones!)</li><li>A long time ago I used to allow people to &#8220;register&#8221; for the site through WordPress. It was short lived as it ended up having very little purpose. There were about 1,000 registered users, half or more of them spam. I have always wanted to get rid of those users to clean up the database. The problem is, deleting a user in WordPress means you need to attribute their comments to someone else or delete them. I didn&#8217;t want to delete potentially valuable comments. So&#8230; there is one generic user left called &#8220;Old Registered User&#8221; to which those comments are attributed. Kinda sucks, but it&#8217;s all stuff that is years old and there isn&#8217;t all that much of it.</li></ul><h3>Technology Notes</h3><p>What would a redesign be on a site like this without newfangled technology?</p><h4>CSS3</h4><ul><li>There are <a
href="http://css-tricks.com/snippets/css/css-triangle/">CSS Triangles</a> in use. The main navigation uses them to help indicate current location and the voting question bubble uses them as well. The voting bubble even uses two of them on top of each other to achieve a sort of triangle-with-border effect.<p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-triangle.png" alt="" title="example-triangle" width="384" height="104" class="alignnone size-full wp-image-7126" /></p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-triangle2.png" alt="" title="example-triangle2" width="384" height="104" class="alignnone size-full wp-image-7127" /></li><li>The VOTE section features a question bubble which uses a gradient background as well as rounded corners (as do many other elements).<p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-gradient+rounded.png" alt="" title="example-gradient+rounded" width="384" height="104" class="alignnone size-full wp-image-7131" /></li><li>The various list-of-links in the sidebar for helping explore this site and others have a link nudge effect done with CSS3.<p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-nudge.png" alt="" title="example-nudge" width="384" height="104" class="alignnone size-full wp-image-7132" /></li><li>The PROPS section features little cards which perform a 3D flipping effect in WebKit browsers.<p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-flip.png" alt="" title="example-flip" width="384" height="104" class="alignnone size-full wp-image-7133" /></li><li>The boxes in the right of the footer also have an animation effect where information about that subject will slide up from below when moused over.<p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-slideup.png" alt="" title="example-slideup" width="384" height="104" class="alignnone size-full wp-image-7134" /></p><p>If you don&#8217;t have access to a WebKit browser, you can <a
href="http://screenr.com/kLO">see a screencast</a>. Safari 5 users, are you seeing lots of &#8220;blinking&#8221; and awkward flashing when using some of the interactive things in the footer? Chrome is fine. Weird.</li><li>There is a small use of <a
href="http://css-tricks.com/css-media-queries/">CSS media queries</a> where the footer rearranges slightly if the design is at it&#8217;s widest.<p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-footer-narrow.png" alt="" title="example-footer-narrow" width="384" height="104" class="alignnone size-full wp-image-7135" /></p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-footer-wide.png" alt="" title="example-footer-wide" width="384" height="104" class="alignnone size-full wp-image-7136" /></p><p>The 125&#215;125 ads in the sidebar also do a bit of a shuffle via @media queries. When the design is at it&#8217;s widest they are arranged 3&#215;2 and any narrower, 2&#215;3.</li><li>Part of dealing with fluid width meant making multi-column designs utilize percentages. That means the images in those columns need to use <code>img { max-width: 100%; }</code> so they can shrink/grow with the column as needed.<p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-image-narrow.png" alt="" title="example-image-narrow" width="384" height="104" class="alignnone size-full wp-image-7137" /></p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-image-wide.png" alt="" title="example-image-wide" width="384" height="104" class="alignnone size-full wp-image-7138" /></li></ul><p>All of these effects I would consider progressive enhancement in that browsers that don&#8217;t support any particular feature fall back to a plainer but acceptable experience. For instance, the 3D flip cards just instantly show their &#8220;backs&#8221; upon rollover.</p><h4>HTML5</h4><ul><li>New DOCTYPE, use of new elements, etc. Basically it just feels good to be using the simplification that HTML5 offers and the more semantic elements. I probably didn&#8217;t do a totally perfect job on using all the new elements. This will likely evolve over time.</li><li>The video pages (<a
href="http://css-tricks.com/video-screencasts/90-simple-textmate-tips/">example</a>) now use HTML5 <code>&lt;video&gt;</code> tags to display video. They will play natively in WebKit browsers which support H.264. Browsers which don&#8217;t will fall back to Silverlight first, then to Flash using <a
href="http://mediaelementjs.com/">mediaelement.js</a>. The UI controls remain consistent no matter which technology is in use. I would have liked to go fluid width with the video but there were many problems with that (which I may post about). Particularly nice is the jump-forward abilities of these new players (without requiring preload) that the old player could never do.</li><li>The search form is now literally just a styled input, meaning there isn&#8217;t the weird line-height issues I had with the old designs image based background. HTML5 helps out in WebKit browsers with <code>&lt;input type=search results=5 placeholder=Search... name=s&gt;</code> allowing this look and functionality:<p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-search-1.png" alt="" title="example-search-1" width="384" height="104" class="alignnone size-full wp-image-7139" /></p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-search-3.png" alt="" title="example-search-3" width="384" height="104" class="alignnone size-full wp-image-7141" /></p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-search-2.png" alt="" title="example-search-2" width="384" height="104" class="alignnone size-full wp-image-7140" /></p><p>What&#8217;s with that awkward outline highlight? Might be a WebKit bug.</li><li>The comment form features additional HTML5 form features. The fields have placeholder values and also use the &#8220;required&#8221; attribute meaning modern browsers won&#8217;t even attempt to submit the comment without the required values (which can lead to an ugly WordPress error page).<p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-comment-2.png" alt="" title="example-comment-2" width="384" height="104" class="alignnone size-full wp-image-7142" /></p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-comment-1.png" alt="" title="example-comment-1" width="384" height="104" class="alignnone size-full wp-image-7152" /></li></ul><h4>jQuery</h4><ul><li>Anything that jQuery does that it used to do in the old design (<a
href="http://css-tricks.com/organic-tabs/">organic tabs</a>, toggling the search limiter, etc) it still does, but has been rewritten to be more efficient. For example the code now handles both organic tabs sections with one block of code instead of having it split up like it was before.</li><li>The homepage does &#8220;fadeouts&#8221; on the recent articles. I hoped it would help remove some repetitive page clutter while adding some visual interest. I had it working by using an :after pseudo element absolutely positioned to the bottom of each post, which would disappear on hover. I wanted the fading effect though, and CSS does not yet allow transitions/animations on pseudo elements. So I went with jQuery.<p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-fadeout.png" alt="" title="example-fadeout" width="384" height="104" class="alignnone size-full wp-image-7145" /></li><li>I&#8217;m having jQuery look for buttons on the page that contain the text &#8220;View Demo&#8221; or &#8220;Download Files&#8221; and do a little HTML manipulation and styling. Perhaps not an ideal method, but this makes it backwards compatible with my whole backlog of posts while keeping the button markup really simple.<p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/example-buttons.png" alt="" title="example-buttons" width="384" height="104" class="alignnone size-full wp-image-7146" /></li><li>Notice the sidebar has a background color to it that stretches from bottom to top of the white main content area. In early iterations of this design, I made the sidebar of a static width and used faux columns to fake the equal heights. But ultimately I decided that a fluid width sidebar would be cooler, which makes faux columns not possible. So to accomplish the equal heights, I have a simple resizing function which tests the height of the main content and if it&#8217;s larger than the height of the sidebar, grow the sidebar to match. It&#8217;s a bit janky&#8230; it has to run the resizer 2 seconds after the page load to account for third party content in the sidebar which may not be there on DOM ready or window load. It also runs it on window resize in case reflow affects the situation. It doesn&#8217;t work perfectly and it warrents a re-think at some point.</li></ul><h3>To Come</h3><p>I&#8217;m working through some ideas for the forums to make them more awesome than they already are, so watch for that in maybe the next few months.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/design%c2%a0v7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BetterSource for Safari 5</title>
		<link>http://www.lakevillewebdesign.com/bettersource-for-safari%c2%a05/</link>
		<comments>http://www.lakevillewebdesign.com/bettersource-for-safari%c2%a05/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 20:38:54 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7159</guid>
		<description><![CDATA[<p>One of the major bummers about Safari is that the &#8220;View Source&#8221; view is totally lackluster. No code highlighting, no live links, no line numbers, no refresh. Boooo. The BetterSource extension solves every one of those problems. <del>I do wish there was an option to show only one of the buttons or the other in the header bar though (one is for original source and one is for generated source) I don&#8217;t need both.</del> <strong>Update:</strong> You can just right click&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>One of the major bummers about Safari is that the &#8220;View Source&#8221; view is totally lackluster. No code highlighting, no live links, no line numbers, no refresh. Boooo. The BetterSource extension solves every one of those problems. <del>I do wish there was an option to show only one of the buttons or the other in the header bar though (one is for original source and one is for generated source) I don&#8217;t need both.</del> <strong>Update:</strong> You can just right click the header bar and drag the one out you don&#8217;t want.</p><p><a
href="http://www.awarepixel.com/safari/bettersource/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/bettersource-for-safari-5/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/bettersource-for-safari%c2%a05/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5 Templates</title>
		<link>http://www.lakevillewebdesign.com/html5%c2%a0templates/</link>
		<comments>http://www.lakevillewebdesign.com/html5%c2%a0templates/#comments</comments>
		<pubDate>Sat, 14 Aug 2010 17:39:39 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7049</guid>
		<description><![CDATA[<p>Papa bear: <a href="http://html5boilerplate.com/">HTML5 Boilerplate</a><br /> Mama bear: <a href="http://html5reset.org/">HTML5 Reset</a><br /> Baby bear: <a href="http://github.com/dcneiner/html5-site-template">HTML5 site template</a></p> ]]></description>
			<content:encoded><![CDATA[<p>Papa bear: <a
href="http://html5boilerplate.com/">HTML5 Boilerplate</a><br
/> Mama bear: <a
href="http://html5reset.org/">HTML5 Reset</a><br
/> Baby bear: <a
href="http://github.com/dcneiner/html5-site-template">HTML5 site template</a></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/html5%c2%a0templates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OK Auto – More than OK</title>
		<link>http://www.lakevillewebdesign.com/ok-auto-%e2%80%93-more-than-ok/</link>
		<comments>http://www.lakevillewebdesign.com/ok-auto-%e2%80%93-more-than-ok/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 14:21:19 +0000</pubDate>
		<dc:creator>Tomislav Bilic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=5231</guid>
		<description><![CDATA[Looks like we are becoming specialist for creation of off-road online stores. OK Auto had s strong online presence for years presenting themselves as a source for all of your automotive and off-road needs. It is always a challenge to decide to abandon existing website backend and move to a new platform, especially when you [...]]]></description>
			<content:encoded><![CDATA[<p>Looks like we are becoming specialist for creation of off-road online stores. <a href="http://ok4wd.com/" >OK Auto</a> had s strong online presence for years presenting themselves as a source for all of your automotive and off-road needs. It is always a challenge to decide to abandon existing website backend and move to a new platform, especially when you have a lot of content. OK Auto had this courage and moved to Magento &amp; WordPress integration using advantages of both platforms to the maximum.</p>
<p><span id="more-5231"></span>A little bit of OK Auto: Today, over 30 years later, OK Auto can be your main source for all of your automotive and off-road needs. With 22 employees who have worked here an average of 13 years, they have cumulative 267 years worth of industry experience! You can find them at the lovely place called <a href="13452585393600517&amp;q=2621+State+Route+57,+Stewartsville,+NJ+08886&amp;hl=en&amp;cd=1&amp;cad=src:ppiwlink&amp;ei=n-svS5DFNp-SNeHSuf4I">Stewartsville in New Jersey, USA</a>.</p>
<p>With standard features of an online store that fit into Magentos&#8217; in-the-box feature list, they wanted <a href="http://ok4wd.com/auto/category/news">News Article Manager</a>, <a href="http://ok4wd.com/auto/category/online-garage">Image Gallery</a>, <a href="http://ok4wd.com/auto/event-calendar">Event Calendar</a>, <a href="http://ok4wd.com/shop-by-wheels-and-tires/">Shop by Vehicle Fit</a> extension, and many more. After some consideration whether it is better to have everything in Magento or go worth WordPress integration, we decided to take the second route. Magento is getting better CMS features with every version, but it is still long way from WordPress. Check the website out at: <a title="OK Auto" href="http://ok4wd.com/" >http://ok4wd.com/</a></p>
<p><a href="http://inchoo.net/wp-content/uploads/2010/08/ok-auto-full.jpg" rel="lightbox[5231]"><img class="alignnone size-full wp-image-5238" title="Full Screenshot of OK Auto" src="http://inchoo.net/wp-content/uploads/2010/08/ok-auto-full.jpg" alt="Full Screenshot of OK Auto" width="620" height="715" /></a></p>
<blockquote><p><a href="http://inchoo.net/wp-content/uploads/2010/08/james-henry.jpg" rel="lightbox[5231]"><img class="alignright size-full wp-image-5235" title="James Henry" src="http://inchoo.net/wp-content/uploads/2010/08/james-henry.jpg" alt="James Henry" width="120" height="150" /></a>Let me be blunt: Magento development isn’t for the faint of heart. Magento development is extremely involved as its file structure and the way it functions is complex. Not to mention its extremely picky about the way things must be done. It’s very easy to be over your head in problems and confusion. The guys at Surgeworks/Inchoo not only knew what they were doing, but also helped keep the project moving when we dragged our feet. Everyone was professional, knowledgeable, and took great care in not only the website, but also our company as a whole. When we had crazy idea’s, they let us know if it were possible or if were about to build a sand castle in quick sand.</p>
<p>I cannot explain how grateful I am that we had such a group of knowledgeable developers working on our website. Over the past two years (I said we dragged our feet!), it seems like I can now fly out to Croatia, call my friends at Inchoo and grab a bite to eat. They are just that great as developers and as people. To be honest, I couldn’t see anyone else doing what they did. Looking back, we had some crazy request and features we wanted. They went beyond the call of duty as developers and as long as I’m in charge, no matter the company I work for at the time – these guys will be the first that I email.<br />
<strong>James Henry, Website Project Leader, OK Auto</strong></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/ok-auto-%e2%80%93-more-than-ok/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone “slide to unlock” Text in WebKit/CSS3</title>
		<link>http://www.lakevillewebdesign.com/iphone-%e2%80%9cslide-to-unlock%e2%80%9d-text-in%c2%a0webkitcss3/</link>
		<comments>http://www.lakevillewebdesign.com/iphone-%e2%80%9cslide-to-unlock%e2%80%9d-text-in%c2%a0webkitcss3/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 14:00:51 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7079</guid>
		<description><![CDATA[<p>There are a couple of WebKit specific properties that make <a href="http://css-tricks.com/snippets/css/gradient-text/">giving text a gradient background</a> possible:</p> -webkit-background-clip: text;
-webkit-text-fill-color: transparent;<p>Those will allow the background of the parent element to become the background of the text inside. I gots to thinkin&#8217;, if we made a made a horizontal gradient that faded in a gray-white-gray pattern, then animated it from left to right, we could make the iPhone/iPad&#8217;s &#8220;slide to unlock&#8221; screen with no images at all!</p><p></p><p>WebKit only&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>There are a couple of WebKit specific properties that make <a
href="http://css-tricks.com/snippets/css/gradient-text/">giving text a gradient background</a> possible:</p><pre><code class="css">-webkit-background-clip: text;
-webkit-text-fill-color: transparent;</code></pre><p>Those will allow the background of the parent element to become the background of the text inside. I gots to thinkin&#8217;, if we made a made a horizontal gradient that faded in a gray-white-gray pattern, then animated it from left to right, we could make the iPhone/iPad&#8217;s &#8220;slide to unlock&#8221; screen with no images at all!</p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/slidetounlock.png" alt="" title="slidetounlock" width="570" height="161" class="alignnone size-full wp-image-7096" /></p><p>WebKit only demo:</p><p><a
href="http://css-tricks.com/examples/SlideToUnlock/" class="button">View Demo</a> &nbsp; <a
href="http://css-tricks.com/examples/SlideToUnlock.zip" class="button">Download Files</a></p><p><span
id="more-7079"></span></p><h3>Gradient Structure</h3><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/structure.png" alt="" title="structure" width="570" height="200" class="alignnone size-full wp-image-7087" /></p><p>The text &#8220;slide to unlock&#8221; is an h2 tag. We&#8217;ll be giving it the gradient background, which is structured like this, with 5 &#8220;color-stops&#8221;:</p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/gradientstructure.png" alt="" title="gradientstructure" width="570" height="200" class="alignnone size-full wp-image-7088" /></p><pre><code class="css">background:
   -webkit-gradient(linear,left top,right top,
        color-stop(0, #4d4d4d),
        color-stop(0.4, #4d4d4d),
        color-stop(0.5, white),
        color-stop(0.6, #4d4d4d),
        color-stop(1, #4d4d4d)); </code></pre><p>With the two properties from the beginning of this article, the text gets a highlight like this:</p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/gradientknockout.png" alt="" title="gradientknockout" width="570" height="166" class="alignnone size-full wp-image-7089" /></p><p>Notice that the width of the background is twice as wide as area. This gives us some gray to work with on either side of the highlight, so the white highlight part can slide by and the text can stay gray before and after. If we were to animate the background further left or right than what is available, the text goes black (bad).</p><p>The next step is to animate the position of that background from left to right.</p><p><img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/animatedbackground.png" alt="" title="animatedbackground" width="570" height="200" class="alignnone size-full wp-image-7090" /></p><p>The h2 tag sits within a &#8220;well&#8221; which takes care of getting us the black background behind the text (since we&#8217;ve stolen the background from the h2 itself). This controls the width of the h2 as well, since it defaults to 100% wide as a block-level element. The well has a fixed width. Then the h2 is double that width (200%). So our animation can start at negative the width of the well and end at positive the width of the well.</p><pre><code class="css">#well {
   width: 720px;
}

h2 {
   width: 200%;
  -webkit-animation: slidetounlock 5s infinite;
}

@-webkit-keyframes slidetounlock {
  0% {
    background-position: -720px 0;
  }
  100%{
    background-position: 720px 0;
  }
}</code></pre><p>Yay! Animated highlight on the text! Here it all is together:</p><pre><code class="css">#well {
  padding: 14px 20px 20px 20px;
  -webkit-border-radius: 30px;
  background: -webkit-gradient(linear,left top,left bottom,color-stop(0, #010101),color-stop(1, #181818));
  border: 2px solid #454545;
  overflow: hidden;
}

h2 {
  font-size: 80px;
  background: -webkit-gradient(linear,left top,right top,color-stop(0, #4d4d4d),color-stop(0.4, #4d4d4d),color-stop(0.5, white),color-stop(0.6, #4d4d4d),color-stop(1, #4d4d4d));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  -webkit-animation: slidetounlock 5s infinite;
  font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
  font-weight: 300;
  padding: 0;
  width: 200%;
}

@-webkit-keyframes slidetounlock {
  0% {
    background-position: -720px 0;
  }
  100% {
    background-position: 720px 0;
  }
}</code></pre><h3>Bonus: The unlocky thing in jQuery</h3><p>To me, this was mostly about replicating the cool text effect without any images. Done and done. But hey we might as well tackle the sliding unlock part too eh? The little slider button with the arrow on it probably could be accomplished with pure CSS (<a
href="http://css-tricks.com/snippets/css/css-triangle/">using triangles</a>, among other things. But, let&#8217;s not go there today. The slider will remain an image, and go right inside the h2 itself.</p><pre><code class="html">&lt;h2&gt;&lt;img src="images/arrow.png" alt="slider" /&gt; slide to unlock&lt;/h2&gt;</code></pre><p>We&#8217;ll load up jQuery, jQuery UI, and our own custom script:</p><pre><code class="html">&lt;script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js'&gt;&lt;/script&gt;
&lt;script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js"&gt;&lt;/script&gt;
&lt;script src='js/slidetounlock.js'&gt;&lt;/script&gt;</code></pre><p>We&#8217;ll use the jQuery UI draggable function on the image. We&#8217;ll restrict it&#8217;s movement to the X-axis (horizontal). Like all good jQuery UI functions, this has callbacks. We&#8217;ll attach one to the drag event which fires repeatedly as the element is dragged. With that, we&#8217;ll test if it has made it far enough to be considered &#8220;unlocked.&#8221; If it has, we&#8217;ll fire off an action. In this case, fading out the well. For the &#8220;stop&#8221; callback, fired when the mouse button is released, we&#8217;ll test if the element is under the our completion distance and snap it back to the left if not.</p><pre><code class="javascript">$(function() {
	$("h2 img").draggable({
		axis: 'x',
		containment: 'parent',
		drag: function(event, ui) {
			if (ui.position.left &gt; 550) {
				$("#well").fadeOut();
			}
		},
		stop: function(event, ui) {
			if (ui.position.left &lt; 551) {
				$(this).animate({
					left: 0
				})
			}
		}
	});
});</code></pre><p>I tried to make the drag event also dim the opacity of the text as you slide it, like the iPhone/iPad, but it&#8217;s seeming to me like WebKit isn&#8217;t allowing partial opacity on text with background clip. Didn&#8217;t do a ton of research, but I do know that wrapping the text in a span and trying to adjust the opacity of that span just wouldn&#8217;t take (until it was zero).</p><h3>Notes</h3><ul><li>Marco Kuiper has <a
href="http://www.marcofolio.net/webdesign/the_iphone_unlock_screen_in_xhtml_css_and_jquery.html">tackled this before</a> as well, but with a different approach (animated GIF).</li><li>The code above is for desktop web browsers only, and won&#8217;t work on mobile browsers. Evan Black took this example and <a
href="http://www.evanblack.com/blog/touch-slide-to-unlock/">added JavaScript touch events to it</a>, making it work in Mobile Safari. I snagged his code and dropped in in the live example on this site, the only alternations being a little jQuerification</li><p>.</ul> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/iphone-%e2%80%9cslide-to-unlock%e2%80%9d-text-in%c2%a0webkitcss3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Sprites Workflow</title>
		<link>http://www.lakevillewebdesign.com/css-sprites%c2%a0workflow/</link>
		<comments>http://www.lakevillewebdesign.com/css-sprites%c2%a0workflow/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 15:42:54 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7059</guid>
		<description><![CDATA[<p>When you are coding up a brand new site, I think this is a pretty efficient workflow for how to handle <a href="http://css-tricks.com/css-sprites/">CSS Sprites</a>.</p><p><span></span></p><ol><li>Ignore sprites entirely. Make every background image its own separate image and reference them as such in the CSS.</li><li>When you are reasonably sure the design is &#8220;done,&#8221; use the <a href="http://spriteme.org/">SpriteMe</a> bookmarklet to create the sprite.</li><li>Comment out (not delete) the old background properties in the CSS and add in the new Sprites-based</li></ol><p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>When you are coding up a brand new site, I think this is a pretty efficient workflow for how to handle <a
href="http://css-tricks.com/css-sprites/">CSS Sprites</a>.</p><p><span
id="more-7059"></span></p><ol><li>Ignore sprites entirely. Make every background image its own separate image and reference them as such in the CSS.</li><li>When you are reasonably sure the design is &#8220;done,&#8221; use the <a
href="http://spriteme.org/">SpriteMe</a> bookmarklet to create the sprite.</li><li>Comment out (not delete) the old background properties in the CSS and add in the new Sprites-based version:<pre><code class="css">#logo {
  /* background: url(images/logo.png) no-repeat; */
  background: url(images/sprite.png) -10px -579px no-repeat;
}</code></pre></li><li>Don&#8217;t worry about the comments bloating your CSS, you should <a
href="http://www.csscompressor.com/">compress your CSS</a> before serving it on live sites anyway which will remove those.</li></ol><p>Now if you find yourself needing to update the images inside the sprite, the process can be:</p><ol><li>Update individual images.</li><li>Comment out Sprited CSS background images and uncomment regular background images</li><li>Remake sprite with SpriteMe, replace</li><li>Swap comments again</li></ol><p>One of the complaints of working with sprites is that it makes updating images harder. I think this process makes it much easier. I guess an even easier process would be to have a PSD of your sprite so you can update that directly without touching CSS. If you can pull that off, great. I personally feel more organized having individual graphics. SpriteMe also gives you CSS with the locations of all the sprites, so if you needed to change the size of images or add/delete them, you&#8217;ll get those new numbers automatically.</p><p>If you have your own workflow for working with sprites, please share!</p><p><strong>Related:</strong> <a
href="http://www.aaronbarker.net/2010/07/diagonal-sprites/">Setting up sprites diagonally</a> is rather clever. The idea is then you can use the sprite as a background image of a larger box without fear of other graphics in the sprite showing up. This is at the cost of a larger sprite file size because of the extra white space.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/css-sprites%c2%a0workflow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extending the Magento API</title>
		<link>http://www.lakevillewebdesign.com/extending-the-magento-api/</link>
		<comments>http://www.lakevillewebdesign.com/extending-the-magento-api/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 11:15:27 +0000</pubDate>
		<dc:creator>Branko Ajzele</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=5214</guid>
		<description><![CDATA[If you are in the business of developing a mobile application or external web/desktop or some other application/service that needs to communicate with Magento trough its API, then my friend you are out of luck. I am not going to say Magento API is a trash, I&#8217;ll simply say it massively lacks certain methods within [...]]]></description>
			<content:encoded><![CDATA[<p>If you are in the business of developing a mobile application or external web/desktop or some other application/service that needs to communicate with Magento trough its API, then my friend you are out of luck. I am not going to say Magento API is a trash, I&#8217;ll simply say it massively lacks certain methods within the existing exposed classes that will make your external application usable.<span id="more-5214"></span></p>
<p>Its all about simple things, right? Well, here is one bottom line simple thing I would like to do with my Magento API. I would like to get a list of all available websites, stores and store views. Can I do that with the latest (as of this writing, 1.4.1.1) Magento? No I cannot! Can I get a list of &#8230; etc. For any serious scenario you will most likely be out of luck. What&#8217;s interesting is that rarely even a combination of several method calls will give you what you might need. Trust me on this one, I am writing Android application for Magento and its killing me.</p>
<p>So, how do we improve Magento API? That&#8217;s easy, I say lets override it enabling the further use all existing method calls while adding new methods to the same classes plus we can throw in some new classes to the API.</p>
<p>We will do so in the form of new extension, lets say that the extension name is &#8220;Ajzele_Mapy&#8221;.</p>
<p>First we will place the Ajzele_Mapy.xml file under the app/etc/modules/Ajzele_Mapy.xml with the content like shown below.</p>
<pre class="brush: xml">
&lt; ?xml version=&quot;1.0&quot;?&gt;

&lt;config&gt;
&lt;modules&gt;
&lt;ajzele_mapy&gt;
&lt;active&gt;false&lt;/active&gt;
&lt;codepool&gt;community&lt;/codepool&gt;
&lt;depends&gt;
&lt;mage_api /&gt;
&lt;/depends&gt;
&lt;/ajzele_mapy&gt;
&lt;/modules&gt;
&lt;/config&gt;
</pre>
<p>Then we need to create appropriate file/directory structure inside the app/code/community/Ajzele/ folder.</p>
<p>First lets create the app/code/community/Ajzele/Mapy/etc/config.xml file with the content like shown below.</p>
<pre class="brush: xml">
&lt; ?xml version=&quot;1.0&quot;?&gt;

&lt;config&gt;
&lt;modules&gt;
&lt;ajzele_mapy&gt;
&lt;version&gt;1.0.0.0.0&lt;/version&gt;
&lt;/ajzele_mapy&gt;
&lt;/modules&gt;
&lt;global&gt;
&lt;models&gt;
&lt;customer&gt;
&lt;rewrite&gt;
&lt;customer_api&gt;Ajzele_Mapy_Model_Customer_Customer_Api
&lt;/customer_api&gt;
&lt;group_api&gt;Ajzele_Mapy_Model_Customer_Group_Api&lt;/group_api&gt;
&lt;address_api&gt;Ajzele_Mapy_Model_Customer_Address_Api&lt;/address_api&gt;
&lt;/rewrite&gt;
&lt;/customer&gt;
&lt;directory&gt;
&lt;rewrite&gt;
&lt;country_api&gt;Ajzele_Mapy_Model_Directory_Country_Api&lt;/country_api&gt;
&lt;region_api&gt;Ajzele_Mapy_Model_Directory_Region_Api&lt;/region_api&gt;
&lt;/rewrite&gt;
&lt;/directory&gt;
&lt;catalog&gt;
&lt;rewrite&gt;
&lt;category_api&gt;Ajzele_Mapy_Model_Catalog_Category_Api&lt;/category_api&gt;
&lt;product_api&gt;Ajzele_Mapy_Model_Catalog_Product_Api&lt;/product_api&gt;
&lt;product_attribute_api&gt;Ajzele_Mapy_Model_Catalog_Product_Attribute_Api
&lt;/product_attribute_api&gt;
&lt;product_attribute_media_api&gt;Ajzele_Mapy_Model_Catalog_Product_Attribute_Media_Api
&lt;/product_attribute_media_api&gt;
&lt;product_attribute_set_api&gt;Ajzele_Mapy_Model_Catalog_Product_Attribute_Set_Api
&lt;/product_attribute_set_api&gt;
&lt;product_attribute_tierprice_api&gt;Ajzele_Mapy_Model_Catalog_Product_Attribute_Tierprice_Api
&lt;/product_attribute_tierprice_api&gt;
&lt;product_link_api&gt;Ajzele_Mapy_Model_Catalog_Product_Link_Api
&lt;/product_link_api&gt;
&lt;product_type_api&gt;Ajzele_Mapy_Model_Catalog_Product_Type_Api
&lt;/product_type_api&gt;
&lt;/rewrite&gt;
&lt;/catalog&gt;
&lt;cataloginventory&gt;
&lt;rewrite&gt;
&lt;stock_item_api&gt;Ajzele_Mapy_Model_CatalogInventory_Stock_Item_Api
&lt;/stock_item_api&gt;
&lt;/rewrite&gt;
&lt;/cataloginventory&gt;
&lt;directory&gt;
&lt;rewrite&gt;
&lt;country_api&gt;Ajzele_Mapy_Model_Directory_Country_Api&lt;/country_api&gt;
&lt;region_api&gt;Ajzele_Mapy_Model_Directory_Region_Api&lt;/region_api&gt;
&lt;/rewrite&gt;
&lt;/directory&gt;
&lt;sales&gt;
&lt;rewrite&gt;
&lt;order_api&gt;Ajzele_Mapy_Model_Sales_Order_Api&lt;/order_api&gt;
&lt;order_invoice_api&gt;Ajzele_Mapy_Model_Sales_Order_Invoice_Api
&lt;/order_invoice_api&gt;
&lt;order_shipment_api&gt;Ajzele_Mapy_Model_Sales_Order_Shipment_Api
&lt;/order_shipment_api&gt;
&lt;/rewrite&gt;
&lt;/sales&gt;
&lt;/models&gt;
&lt;/global&gt;
&lt;/config&gt;
</pre>
<p>In the above app/code/community/Ajzele/Mapy/etc/config.xml file you will notice I overridden all (if I did not miss any) of the exposed Magento API classes. For example, definition Ajzele_Mapy_Model_Directory_Country_Api tells the Magento to use Ajzele_Mapy_Model_Directory_Country_Api each time it wishes to use the Mage_Directory_Model_Country_Api class which is exposed to the API.</p>
<p>My appropriate Ajzele_Mapy_Model_Directory_Country_Api class would then have a content like shown below.</p>
<pre class="brush: php">
&lt; ?php

class Ajzele_Mapy_Model_Directory_Country_Api extends Mage_Directory_Model_Country_Api
{

}
</pre>
<p>This example merely overrides the Mage_Directory_Model_Country_Api class, not doing anything more at the moment. Now if I would like to add new public method (one that does not exist in the Mage_Directory_Model_Country_Api), then I would (with one extra configuration entry shown below) call that method trough API like &#8220;directory_country.myNewMethod&#8221;.</p>
<p>In order to do so, I would need to add one more config info to another file called app/code/community/Ajzele/Mapy/etc/api.xml.</p>
<pre class="brush: xml">
&lt;?xml version=&quot;1.0&quot;?&gt;

&lt;config&gt;
&lt;api&gt;
&lt;resources&gt;
&lt;customer translate=&quot;title&quot; module=&quot;customer&quot;&gt;
&lt;model&gt;customer/customer_api&lt;/model&gt;
&lt;title&gt;Customer Api&lt;/title&gt;
&lt;acl&gt;customer&lt;/acl&gt;
&lt;methods&gt;
&lt;!-- Mapy methods here... --&gt;
&lt;/methods&gt;
&lt;/customer&gt;
&lt;customer_group&gt;
&lt;model&gt;customer/group_api&lt;/model&gt;
&lt;title&gt;Customer&#039;s Groups Api&lt;/title&gt;
&lt;acl&gt;customer&lt;/acl&gt;
&lt;methods&gt;
&lt;!-- Mapy methods here... --&gt;
&lt;/methods&gt;
&lt;/customer_group&gt;
&lt;customer_address&gt;
&lt;model&gt;customer/address_api&lt;/model&gt;
&lt;title&gt;Customer Address Api&lt;/title&gt;
&lt;acl&gt;customer/address&lt;/acl&gt;
&lt;methods&gt;
&lt;!-- Mapy methods here... --&gt;
&lt;/methods&gt;
&lt;/customer_address&gt;
&lt;directory_country translate=&quot;title&quot; module=&quot;directory&quot;&gt;
&lt;model&gt;directory/country_api&lt;/model&gt;
&lt;title&gt;Country Api&lt;/title&gt;
&lt;acl&gt;directory/country&lt;/acl&gt;
&lt;methods&gt;
&lt;!-- Mapy methods here... --&gt;
&lt;/methods&gt;
&lt;/directory_country&gt;
&lt;directory_region translate=&quot;title&quot; module=&quot;directory&quot;&gt;
&lt;model&gt;directory/region_api&lt;/model&gt;
&lt;title&gt;Region Api&lt;/title&gt;
&lt;acl&gt;directory/region&lt;/acl&gt;
&lt;methods&gt;
&lt;!-- Mapy methods here... --&gt;
&lt;/methods&gt;
&lt;/directory_region&gt;
&lt;catalog_category translate=&quot;title&quot; module=&quot;catalog&quot;&gt;
&lt;model&gt;catalog/category_api&lt;/model&gt;
&lt;title&gt;Category API&lt;/title&gt;
&lt;acl&gt;catalog/category&lt;/acl&gt;
&lt;methods&gt;&lt;/methods&gt;
&lt;/catalog_category&gt;

&lt;catalog_category_attribute translate=&quot;title&quot; module=&quot;catalog&quot;&gt;
&lt;title&gt;Category attributes API&lt;/title&gt;
&lt;model&gt;catalog/category_attribute_api&lt;/model&gt;
&lt;acl&gt;catalog/category&lt;/acl&gt;
&lt;methods&gt;&lt;/methods&gt;
&lt;/catalog_category_attribute&gt;

&lt;catalog_product translate=&quot;title&quot; module=&quot;catalog&quot;&gt;
&lt;title&gt;Product API&lt;/title&gt;
&lt;model&gt;catalog/product_api&lt;/model&gt;
&lt;acl&gt;catalog/product&lt;/acl&gt;
&lt;methods&gt;&lt;/methods&gt;
&lt;/catalog_product&gt;

&lt;catalog_product_attribute translate=&quot;title&quot; module=&quot;catalog&quot;&gt;
&lt;title&gt;Product attributes API&lt;/title&gt;
&lt;model&gt;catalog/product_attribute_api&lt;/model&gt;
&lt;acl&gt;catalog/product&lt;/acl&gt;
&lt;methods&gt;&lt;/methods&gt;
&lt;/catalog_product_attribute&gt;

&lt;catalog_product_attribute_set translate=&quot;title&quot; module=&quot;catalog&quot;&gt;
&lt;title&gt;Product attribute sets API&lt;/title&gt;
&lt;model&gt;catalog/product_attribute_set_api&lt;/model&gt;
&lt;acl&gt;catalog/product&lt;/acl&gt;
&lt;methods&gt;&lt;/methods&gt;
&lt;/catalog_product_attribute_set&gt;

&lt;catalog_product_type translate=&quot;title&quot; module=&quot;catalog&quot;&gt;
&lt;title&gt;Product types API&lt;/title&gt;
&lt;model&gt;catalog/product_type_api&lt;/model&gt;
&lt;acl&gt;catalog/product&lt;/acl&gt;
&lt;methods&gt;&lt;/methods&gt;
&lt;/catalog_product_type&gt;

&lt;catalog_product_attribute_media translate=&quot;title&quot; module=&quot;catalog&quot;&gt;
&lt;title&gt;Product Images API&lt;/title&gt;
&lt;model&gt;catalog/product_attribute_media_api&lt;/model&gt;
&lt;acl&gt;catalog/product/media&lt;/acl&gt;
&lt;methods&gt;&lt;/methods&gt;
&lt;/catalog_product_attribute_media&gt;

&lt;catalog_product_attribute_tier_price translate=&quot;title&quot; module=&quot;catalog&quot;&gt;
&lt;title&gt;Product Tier Price API&lt;/title&gt;
&lt;model&gt;catalog/product_attribute_tierprice_api&lt;/model&gt;
&lt;acl&gt;catalog/product&lt;/acl&gt;
&lt;methods&gt;&lt;/methods&gt;
&lt;/catalog_product_attribute_tier_price&gt;

&lt;catalog_product_link translate=&quot;title&quot; module=&quot;catalog&quot;&gt;
&lt;title&gt;Product links API (related, cross sells, up sells)&lt;/title&gt;
&lt;model&gt;catalog/product_link_api&lt;/model&gt;
&lt;acl&gt;catalog/product/link&lt;/acl&gt;
&lt;methods&gt;&lt;/methods&gt;
&lt;/catalog_product_link&gt;
&lt;/resources&gt;
&lt;acl&gt;
&lt;resources&gt;
&lt;customer translate=&quot;title&quot; module=&quot;customer&quot;&gt;
&lt;title&gt;Customers&lt;/title&gt;
&lt;sort_order&gt;3&lt;/sort_order&gt;

&lt;!-- Mapy method acl&#039;s here... --&gt;
&lt;/customer&gt;
&lt;directory translate=&quot;title&quot; module=&quot;directory&quot;&gt;
&lt;title&gt;Directory&lt;/title&gt;
&lt;sort_order&gt;5&lt;/sort_order&gt;

&lt;!-- Mapy method acl&#039;s here... --&gt;
&lt;/directory&gt;
&lt;catalog translate=&quot;title&quot; module=&quot;catalog&quot;&gt;
&lt;title&gt;Catalog&lt;/title&gt;
&lt;sort_order&gt;1&lt;/sort_order&gt;
&lt;/catalog&gt;
&lt;/resources&gt;
&lt;/acl&gt;
&lt;/api&gt;
&lt;/config&gt;
</pre>
<p>Careful study of the above file shows how Magento exposes its class and methods to the API. For example, is you open the app\code\core\Mage\Directory\etc\api.xml file you will see how it exposes methods for the Directory module.</p>

<a href='http://inchoo.net/ecommerce/magento/extending-the-magento-api/attachment/api-2/' title='api'><img width="300" height="48" src="http://inchoo.net/wp-content/uploads/2010/08/api-300x48.jpg" class="attachment-thumbnail" alt="api" title="api" /></a>
<a href='http://inchoo.net/ecommerce/magento/extending-the-magento-api/attachment/mapy1/' title='mapy1'><img width="177" height="300" src="http://inchoo.net/wp-content/uploads/2010/08/mapy1-177x300.png" class="attachment-thumbnail" alt="mapy1" title="mapy1" /></a>
<a href='http://inchoo.net/ecommerce/magento/extending-the-magento-api/attachment/mapy2/' title='mapy2'><img width="300" height="244" src="http://inchoo.net/wp-content/uploads/2010/08/mapy2-300x244.png" class="attachment-thumbnail" alt="mapy2" title="mapy2" /></a>

<p>So, in short, my module merely overrides all the available/exposed API classes enabling you to add new methods or overwrite existing ones in the API. Entire code provided above does not contain any custom methods or does it overwrite any. Its merely an &#8220;empty&#8221; and &#8220;ready&#8221; project for writing your own stuff.</p>
<p>I have taken this &#8220;extending the Magento API&#8221; concept very serious as I will most likely need it for my future Android &#8211; Magento apps. With that in mind I have created a repository on the <a href="http://github.com/ajzele/mapy">http://github.com/ajzele/mapy</a> (which is empty for now, planning on submitting my first code in a week or so). As you guessed it, the project name is <a href="http://activecodeline.com/projects/magento/mapy">Mapy</a>, short from Magento + API + y to spice up the things <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Hope this article was helpful for you.</p>
<p>Cheers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/extending-the-magento-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wufoo API Contest</title>
		<link>http://www.lakevillewebdesign.com/wufoo-api%c2%a0contest/</link>
		<comments>http://www.lakevillewebdesign.com/wufoo-api%c2%a0contest/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 00:21:16 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7055</guid>
		<description><![CDATA[<p>We&#8217;re giving away a friggin&#8217; Battle Axe (and $3,000) to the winner of the Wufoo API contest. Cash prizes and Wufoo accounts for life to the second and third place winners as well. Developers, you have until the end of this month! Check out the page for ideas and API wrappers.</p><p><a href="http://wufoo.com/apicontest/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a href="http://css-tricks.com/wufoo-api-contest/">Permalink</a></p>]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re giving away a friggin&#8217; Battle Axe (and $3,000) to the winner of the Wufoo API contest. Cash prizes and Wufoo accounts for life to the second and third place winners as well. Developers, you have until the end of this month! Check out the page for ideas and API wrappers.</p><p><a
href="http://wufoo.com/apicontest/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/wufoo-api-contest/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/wufoo-api%c2%a0contest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Double Click in CSS</title>
		<link>http://www.lakevillewebdesign.com/double-click-in%c2%a0css/</link>
		<comments>http://www.lakevillewebdesign.com/double-click-in%c2%a0css/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 13:05:03 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6995</guid>
		<description><![CDATA[<p>With the recent proliferation of touch devices, the web designers of the world are losing our beloved mouse pointer. There has been some <a href="http://trentwalton.com/2010/07/05/non-hover/">interesting talk</a> about how we essentially lose the :hover pseudo class in CSS as well as mouseenter, mouseleave, and mousemove in JavaScript. Then just earlier this week I did a post about how you can <a href="http://css-tricks.com/expanding-images-html5/">use the tabindex attribute to basically respond to a click</a> with pure CSS. It got me thinking, can we somehow&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>With the recent proliferation of touch devices, the web designers of the world are losing our beloved mouse pointer. There has been some <a
href="http://trentwalton.com/2010/07/05/non-hover/">interesting talk</a> about how we essentially lose the :hover pseudo class in CSS as well as mouseenter, mouseleave, and mousemove in JavaScript. Then just earlier this week I did a post about how you can <a
href="http://css-tricks.com/expanding-images-html5/">use the tabindex attribute to basically respond to a click</a> with pure CSS. It got me thinking, can we somehow pull off a double click with pure CSS too? This would by no means replace the hover event, but might be somewhat of an alternative to have the sequence be: tap &rarr; change state / activate link &rarr; tap again to visit link.</p><p><span
id="more-6995"></span></p><h3>Rabble rabble rabble!</h3><p>These newfangled touch devices all support JavaScript anyway! You can just use JavaScript to make double click events! Rabble rabble rabble!</p><p>Yes, you can. For anyone interested, &#8220;dblclick&#8221; is a native JavaScript event. If you wanted to, for example, force links to be double clicked instead of single clicked, you could bind a simple { return false; } function to the click event. Then also bind a function to dblclick that would change the window.location to the links href attribute.</p><p>This article isn&#8217;t about that, it&#8217;s about <strong>hardcore CSS nerdery</strong> and seeing if we can also do it without using JavaScript.</p><h3>The Results</h3><p>I really wanted to boil it down to one technique and declare it the best possible way to accomplish CSS double clicking. But as it turns out, there are just too many issues and considerations to do that. Instead, I made up a page showing all the most interesting techniques tried.</p><p>Most of the techniques involve some kind of covering element which is hidden, kicked off the page, or buried when the first click happens. That first click can come in the form of :active or :focus. :active is nice because it doesn&#8217;t require HTML5. :focus does, because it needs the element to have a tabindex or contenteditable attribute to be able get focus. One way around that was to use an input element to do the covering, but that has it&#8217;s own quirks.</p><p>All in all, it was a nerdy good time poking around with this idea. There are probably dozens more ideas, but for something this ultimately trivial I had to nip it in the bud and call it a wrap.</p><p><a
href="http://css-tricks.com/examples/CSSDoubleClick/" class="button">View Demo</a></p><h3>Credits</h3><p>There was probably more than twenty different things tried between me and others. Special thanks to <a
href="http://www.dandyid.org/id/darcybross">Darcy Bross</a> and <a
href="http://forrst.com/posts/CSS_Double_Click-uVP#comment-60398">this comment on Forrst</a> for the first lead into working examples and to <a
href="http://mattias.buelens.com/">Mattias Buelens</a> and <a
href="http://tophermade.com/">Topher Wilson</a> for playing with it and working on variations.</p><h3>More</h3><p>If you want to play around with the idea, I suggest tinking around on <a
href="http://jsbin.com/">JSBin</a> and saving your best examples. I&#8217;ll link em up here if you guys figure out some awesome ones. Here are some interesting ones that happened in playing with all this:</p><p><a
href="http://jsbin.com/uqana4/2/">http://jsbin.com/uqana4/2/</a><br
/> <a
href="http://jsbin.com/owuso/6/">http://jsbin.com/owuso/6/</a></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/double-click-in%c2%a0css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Performance of CSS Selectors</title>
		<link>http://www.lakevillewebdesign.com/performance-of-css%c2%a0selectors/</link>
		<comments>http://www.lakevillewebdesign.com/performance-of-css%c2%a0selectors/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 00:41:11 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7033</guid>
		<description><![CDATA[<p>The idea here was to compare different styles of writing CSS and see how they affect the page rendering. So using all ID&#8217;s, using all classes, using OOCSS techniques, etc. I gave some <a href="http://css-tricks.com/efficiently-rendering-css/">best practices advice</a> on this a little while ago, but had no tests to back anything up. So the most interesting part of it all to me was how the tests were being measured. The test idea came from a <a href="http://blog.archive.jpsykes.com/151/testing-css-performance/">Jon Sykes article</a> where he&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>The idea here was to compare different styles of writing CSS and see how they affect the page rendering. So using all ID&#8217;s, using all classes, using OOCSS techniques, etc. I gave some <a
href="http://css-tricks.com/efficiently-rendering-css/">best practices advice</a> on this a little while ago, but had no tests to back anything up. So the most interesting part of it all to me was how the tests were being measured. The test idea came from a <a
href="http://blog.archive.jpsykes.com/151/testing-css-performance/">Jon Sykes article</a> where he writes:</p><blockquote><p>At the very top of the a HTML I would use Javascript to create a timestamp, this is the starting timer for everything. I would then have a function on a setInterval so it loops, the function checks a dom element using getElementById, it checks to see if that node is there, if it is it checks to see if the node has the style applied to it, if it does it fires a new timestamp marks the difference between the start and the end and then writes that out.</p></blockquote><p>The results concluded that OOCSS is way fast compared to declaring each selector with property and values separately. Even to the point being noticeably slower. Also, Opera is the fastest and Firefox is the slowest (IE not tested). But is this the perfect test? Doesn&#8217;t having all the repetitive property and values increase the size of the CSS and maybe that&#8217;s why it&#8217;s slower? It&#8217;s hard to test <strong>only</strong> the speed of the selector, as far as I know.</p><p><a
href="http://screwlewse.com/2010/08/different-css-techniques-and-their-performance/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/performance-of-css-selectors/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/performance-of-css%c2%a0selectors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-Browser HTML5 Video and Audio</title>
		<link>http://www.lakevillewebdesign.com/cross-browser-html5-video-and%c2%a0audio/</link>
		<comments>http://www.lakevillewebdesign.com/cross-browser-html5-video-and%c2%a0audio/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 21:31:47 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7023</guid>
		<description><![CDATA[<p>MediaElement.js is a jQuery-based package for allowing us to:</p><ol><li>Use the HTML5 elements &#060;video&#62; and &#060;audio&#62; and have them work cross-browser (including mobile WebKit)</li><li>Deliver a consistent UI for controls</li><li>Using only a single format</li></ol><p>I&#8217;ll be using it in the redesign of this site. I was all prepared to just say I&#8217;m using HTML5 video and if your browser doesn&#8217;t support that then just download directly and use <a href="http://www.videolan.org/vlc/">VLC</a> or something. But then I realized I&#8217;d&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>MediaElement.js is a jQuery-based package for allowing us to:</p><ol><li>Use the HTML5 elements &lt;video> and &lt;audio> and have them work cross-browser (including mobile WebKit)</li><li>Deliver a consistent UI for controls</li><li>Using only a single format</li></ol><p>I&#8217;ll be using it in the redesign of this site. I was all prepared to just say I&#8217;m using HTML5 video and if your browser doesn&#8217;t support that then just download directly and use <a
href="http://www.videolan.org/vlc/">VLC</a> or something. But then I realized I&#8217;d have to re-encode to at least include OGG and that really didn&#8217;t appeal to me with 90 videos. Plus then I was messing with trying to make the video fluid width and that wasn&#8217;t going well (another story) so I scrapped it. Now that we have this, it&#8217;s a done deal! Firefox/Opera/IE<8 will fall back to a Silverlight player and WebKit browsers (and ultimately IE 9) will use native HTML5.</p><p>One issue I&#8217;ve heard is that even when visiting a site using this with Chrome/Safari (natively supporting HTML5 with H.264), you can be prompted to install or update Silverlight, which kinda sucks. Apparently I have the lastest version installed so could not confirm this.</p><p><a
href="http://mediaelementjs.com/" title="Direct link to featured article">Direct Link to Article</a> &#8212; <a
href="http://css-tricks.com/mediaelements-html5-video-player/">Permalink</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/cross-browser-html5-video-and%c2%a0audio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linkage Returns</title>
		<link>http://www.lakevillewebdesign.com/linkage%c2%a0returns/</link>
		<comments>http://www.lakevillewebdesign.com/linkage%c2%a0returns/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 21:27:24 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=7026</guid>
		<description><![CDATA[<p>Way back when I used to do &#8220;Links of Interest&#8221; style posts. I&#8217;m happy to announce now that 1) There is a new design of this site coming within the next few weeks and 2) Linkage is coming back. I&#8217;m going to do it like it&#8217;s done currently on <a href="http://digwp.com">Digging Into WordPress</a>, sort of Tumbr/Daring Fireball style. There will be no comments on this site for that style of post (comments should happen on the linked post). The title&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>Way back when I used to do &#8220;Links of Interest&#8221; style posts. I&#8217;m happy to announce now that 1) There is a new design of this site coming within the next few weeks and 2) Linkage is coming back. I&#8217;m going to do it like it&#8217;s done currently on <a
href="http://digwp.com">Digging Into WordPress</a>, sort of Tumbr/Daring Fireball style. There will be no comments on this site for that style of post (comments should happen on the linked post). The title of the post will link right to the article, including in the RSS feed. There will be permalinks available for the posts though, for longevity&#8217;s sake.</p><p>There <strong>will not</strong> be a fast barrage of links coming in this way. I&#8217;ll only be linking to things that I find particularly interesting and that I actually have something to say about. These will be rolling out before the redesign is here, so there is data there for the new design to use when it is here.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/linkage%c2%a0returns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expanding Images using HTML5′s contenteditable tabindex</title>
		<link>http://www.lakevillewebdesign.com/expanding-images-using-html5%e2%80%b2s-contenteditable%c2%a0tabindex/</link>
		<comments>http://www.lakevillewebdesign.com/expanding-images-using-html5%e2%80%b2s-contenteditable%c2%a0tabindex/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 11:49:42 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6997</guid>
		<description><![CDATA[<p>HTML5 has a new attribute, contenteditable, which can be applied to any element which allows it to be edited directly in the browser window. Think of text input with a predefined value, but it can literally be any element. Form elements like text inputs support the :focus pseudo class, which allow us to style those elements when they are clicked upon or otherwise navigated to. Giving an element the  contenteditable attribute means it also now supports the :focus pseudo class,&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>HTML5 has a new attribute, <tt>contenteditable</tt>, which can be applied to any element which allows it to be edited directly in the browser window. Think of text input with a predefined value, but it can literally be any element. Form elements like text inputs support the :focus pseudo class, which allow us to style those elements when they are clicked upon or otherwise navigated to. Giving an element the <tt>contenteditable</tt> attribute means it also now supports the :focus pseudo class, which opens up some interesting possibilities!</p><p>We&#8217;ll exploit this little trick to make an expanding image (like a lightbox without the overlay) right within some content.</p><div
class="explanation"><p>UPDATE: Even better, you can give attributes a <tt>tabindex</tt> attribute, like you would a form element, which allow allows :focus without the editability. This article has been updated to go that route instead.</p></div><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/expandedimages.jpg" alt="" title="expandedimages" width="570" height="646" class="alignnone size-full wp-image-6998" /></div><p><span
id="more-6997"></span></p><h3>HTML5 Markup</h3><p>HTML5 has nice elements for including captioned images.</p><pre><code class="html">&lt;section class="image-gallery"&gt;

   &lt;figure&gt;
      &lt;img src="images/img-1.jpg" alt="jump, matey" /&gt;
      &lt;figcaption"&gt;Jump!&lt;/figcaption&gt;
   &lt;/figure&gt;

&lt;/section&gt;</code></pre><p>We just give the figure element tabindex, so that it can be in focus.</p><pre><code class="html">&lt;figure tabindex=1&gt;</code></pre><p>Give each subsequent figure a <tt>tabindex</tt> value one higher and the images will be able to be tabbed through nicely from the keyboard!</p><h3>The Images</h3><p>The images will be &#8220;full size&#8221;.</p><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/img-1.jpg" alt="" title="img-1" width="500" height="500" class="alignnone size-full wp-image-6999" /></div><p>This means they will be scaled down for regular display on the page, and scaled up when we do our magical CSS expanding. Potentially a waste of bandwidth for the browsers that don&#8217;t support this. The tradeoff is your call.</p><h3>The CSS</h3><p>Normal display:</p><pre><code class="css">figure {
  width: 120px;
  float: left;
  margin: 0 20px 0 0;
  background: white;
  border: 10px solid white;
  -webkit-box-shadow: 0 3px 10px #ccc;
  -moz-box-shadow: 0 3px 10px #ccc;
  -webkit-transform: rotate(5deg);
  -moz-transform: rotate(5deg);
  -webkit-transition: all 0.7s ease;
  -moz-transition: all 1s ease;
  position: relative;
}

figcaption {
  text-align: center;
  display: block;
  font-size: 12px;
  font-style: italic;
}

figure img {
  width: 100%; /* Scale down */
}</code></pre><p>The :focus part of this isn&#8217;t CSS3, the but shadows, transforms, and transitions are. The hover state will rotate the image a bit, and the :focus style (when the image is clicked on), will expand it, rotate it again, and make sure it&#8217;s on top with z-index.</p><pre><code class="css">figure:hover {
  -webkit-transform: rotate(-1deg); -moz-transform: rotate(1deg);
  -webkit-box-shadow: 0 3px 10px #666; -moz-box-shadow: 0 3px 10px #666;
}

figure:focus {
  outline: none;
  -webkit-transform: rotate(-3deg) scale(2.5); -moz-transform: rotate(-3deg) scale(2.5);
   -webkit-box-shadow: 0 3px 10px #666; -moz-box-shadow: 0 3px 10px #666;
  z-index: 9999;
}</code></pre><h3>Browser Compatibility</h3><p>The HTML5 <tt>contenteditable</tt> attribute is supported in Firefox 3.6+, Safari 4+, Chrome, and Opera (10.6 only tested). Note that the attribute will cascade down to all child elements. In our demo, having the image and figure caption be editable doesn&#8217;t make much sense, so we can turn it off individually on them.</p><pre><code class="html">&lt;figure contenteditable="true"&gt;
  &lt;img src="images/img-1.jpg" alt="jump, matey" contenteditable="false" /&gt;
  &lt;figcaption contenteditable="false"&gt;Jump!&lt;/figcaption&gt;
&lt;/figure&gt;</code></pre><p>If you forget to turn off the editablity of the images, Firefox can look a bit funky giving you resize handles for images. <strong>Update:</strong> another reason to use <tt>tabindex</tt> instead.</p><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/firefoxresizing.jpg" alt="" title="firefoxresizing" width="570" height="316" class="alignnone size-full wp-image-7000" /></div><p>Opera respects the child elements not being editable, but still runs the spellchecker on them and will red-underline words it finds misspelled which can be a bit weird.</p><p>Our demo also relies upon transforms to &#8220;work&#8221; though, which are only supported in current WebKit browsers and Firefox 4+. Firefox 3.6 supports the transform but not the transition.</p><p>The fallback is that the images just don&#8217;t expand though, which is of course no big deal.</p><h3>Demo &#038; Download</h3><p><a
href="http://css-tricks.com/examples/ExpandingCaptionedImages/" class="button">View Demo</a> &nbsp; <a
href="http://css-tricks.com/examples/ExpandingCaptionedImages.zip" class="button">Download Files</a></p><h3>Related</h3><ul><li>If you are looking for a pure CSS lightbox, including the overlay, check out <a
href="http://www.cssplay.co.uk/menu/lightbox-hover.html#url">Stu Nicholls version</a>.</li><li>If you need your lightbox to be fully cross browser compatible, use JavaScript like the <a
href="http://colorpowered.com/colorbox/">Colorbox plugin</a> for jQuery.</li></ul><h3>Credits</h3><p>Big thanks to <a
href="http://adrusi.com/">Adrian Sinclair</a> who contacted me about this idea and helped with everything.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/expanding-images-using-html5%e2%80%b2s-contenteditable%c2%a0tabindex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fix Inserted HTML5 Content with HTML5 innerShiv</title>
		<link>http://www.lakevillewebdesign.com/fix-inserted-html5-content-with-html5%c2%a0innershiv/</link>
		<comments>http://www.lakevillewebdesign.com/fix-inserted-html5-content-with-html5%c2%a0innershiv/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 13:56:04 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6869</guid>
		<description><![CDATA[<p>When working with HTML5 today, many of you know that you&#8217;ll need to include the &#8220;HTML5 shiv&#8221; to ensure that CSS will recognize and be able to style those elements in browsers that aren&#8217;t yet hip to HTML5.</p> &#060;!--[if IE]&#062;<p>&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>When working with HTML5 today, many of you know that you&#8217;ll need to include the &#8220;HTML5 shiv&#8221; to ensure that CSS will recognize and be able to style those elements in browsers that aren&#8217;t yet hip to HTML5.</p><pre><code class="html">&lt;!--[if IE]&gt;
  &lt;script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"&gt;&lt;/script&gt;
&lt;![endif]--&gt;</code></pre><p>Credit for that to Remy Sharp, Jon Neal, John Resig and anybody else who contributed to that idea. Also for the benefit of those non-hip browsers, it&#8217;s best to reset many of the HTML5 elements to block-level as they should be:</p><pre><code class="css">article, aside, figure, footer, header, hgroup,
menu, nav, section { display: block; }</code></pre><p>Now we&#8217;re all set to use and style HTML5 elements. But wait! What happens if we dynamically add HTML5 to the page via JavaScript.</p><pre><code class="javascript">var s = document.createElement('div');
s.innerHTML = "&lt;section&gt;Hi!&lt;/section&gt;";
document.body.appendChild(s);</code></pre><p>Or in jQuery:</p><pre><code class="javascript">$("body").append("&lt;section&gt;Hi!&lt;/section&gt;");</code></pre><p>Hip browsers do fine, but Internet Explorer will once again not recognize the new element and not apply CSS to it.</p><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/html5issues.png" alt="" title="html5issues" width="467" height="150" class="alignnone size-full wp-image-6973" /></div><p><a
href="http://jdbartlett.github.com/">Joe Bartlett</a> has written a great work-around to the problem called <a
href="http://jdbartlett.github.com/innershiv/">HTML5 innerShiv</a> and I thought more people should be aware of it.</p><p><span
id="more-6869"></span></p><h3>Using it</h3><p>Please note that this script does not require jQuery. It&#8217;s just vanilla JavaScript and will work with any library or library at all.</p><h4>1. Download</h4><p><a
href="http://jdbartlett.github.com/innershiv/#download">Download the script</a> and insert it onto your page. Or copy and paste the script into other JavaScript you are already loading if you want to avoid an extra HTTP Request.</p><h4>2. Wrap all HTML content in innerShiv function before inserting</h4><p>Here is the same jQuery example as above, made to work using innerShiv:</p><pre><code class="javascript">$("body").append(innerShiv("&lt;section&gt;Hi!&lt;/section&gt;"));</code></pre><div
class="image-wrap"> <img
src="http://cdn.css-tricks.com/wp-content/uploads/2010/08/html5fixed.png" alt="" title="html5fixed" width="441" height="158" class="alignnone size-full wp-image-6974" /></div><p><a
href="http://css-tricks.com/examples/InsertingHTML5/">Quick demo.</a></p><p>Remember to check out <a
href="http://jdbartlett.github.com/innershiv/">Joe&#8217;s page</a>, which does a better job of explaining things.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/fix-inserted-html5-content-with-html5%c2%a0innershiv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inset Border Effect jQuery Plugin</title>
		<link>http://www.lakevillewebdesign.com/inset-border-effect-jquery%c2%a0plugin/</link>
		<comments>http://www.lakevillewebdesign.com/inset-border-effect-jquery%c2%a0plugin/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 21:53:43 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6942</guid>
		<description><![CDATA[This is a guest post by Robin Thrift who wrote to me with some demo code for creating this effect. Together we turned it into a jQuery plugin. Enjoy! I was browsing through a few Flash templates on ActiveDen when I came across an effect I see very often on Flash website galleries. It&#8217;s a [...]]]></description>
			<content:encoded><![CDATA[<div class="explanation">This is a guest post by Robin Thrift who wrote to me with some demo code for creating this effect. Together we turned it into a jQuery plugin. Enjoy!</div><p>I was browsing through a few Flash templates on <a href="http://activeden.net/">ActiveDen</a> when I came across an effect I see very often on Flash website galleries. It&#8217;s a very simple but neat effect. The images have a border, but unlike CSS borders, it covers up part of the image. I wanted to use this effect in one of my galleries so I went ahead and experimented a bit and came up with the following jQuery plugin. It basically wraps the images in a &lt;div> with the same dimension as the image and sets the overflow to hidden. Then it appends another &lt;div> after the image, which the actual border gets assigned to. All the border properties can be altered by the user. It will work with almost any lightbox (tested with <a href="http://colorpowered.com/colorbox/">colorbox</a>).</p><p><span id="more-6942"></span></p><p>By combining the effects, new effects can be achieved and I noticed, that when used with a higher “inset” value, it gives you a really nice effect on the iPhone&#8217;s web browser. Feel free to do whatever you like with this plugin.</p><p><a href="http://css-tricks.com/examples/InsetBorderEffect/" class="button">View Demo</a> &nbsp; <a href="http://css-tricks.com/examples/InsetBorderEffect.zip" class="button">Download Files</a></p><h3>How it works!</h3><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/Steps-for-border-inset.png" alt="" title="Steps-for-border-inset" width="570" height="923" class="alignnone size-full wp-image-6946" /></p><p>&nbsp;</p><p>A huge thanks to Chris for editing and optimizing the plug-in and especially for posting this article!</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/inset-border-effect-jquery%c2%a0plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guidelines for URI Design</title>
		<link>http://www.lakevillewebdesign.com/guidelines-for-uri%c2%a0design/</link>
		<comments>http://www.lakevillewebdesign.com/guidelines-for-uri%c2%a0design/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 12:42:35 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6949</guid>
		<description><![CDATA[This is a guest post by Jacob Gillespie who started an interesting thread on Forrst about this topic. I invited him to post it here, to which is graciously accepted. Over the past several years, I have taken an interest in usability and web design. One of the areas that seems to be often overlooked [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/urlbestpractices.jpg" alt="" title="urlbestpractices" width="570" height="143" class="alignnone size-full wp-image-6958" /></p><div class="explanation">This is a guest post by <a href="http://jacobwg.com/">Jacob Gillespie</a> who started an interesting <a href="http://forrst.com/posts/URL_Guidelines-m0F">thread on Forrst</a> about this topic. I invited him to post it here, to which is graciously accepted.</div><p>Over the past several years, I have taken an interest in usability and web design.  One of the areas that seems to be often overlooked when it comes to design of a site is the design of the <acronym title="Uniform Resource Identifier">URI</acronym>s on that site.  Modern <acronym title="Content Management System">CMS</acronym> systems allow for varying degrees of URI customization, but the defaults are often not as usable as they could be, and URIs are often placed last in the design process.</p><p>Clean URIs are one component of a clean website, and it is an important one.  The majority of end-user access to the Internet involves a URI, and whether or not the user actually enters the URI, they are working with one nonetheless.</p><p>First, I would like to talk about the guiding principles behind URI design, then talk about the practical implementation of the principles.</p><p><span id="more-6949"></span></p><p>Note: Originally, I wrote this article draft using the term “URL,” but since “URL” has been mostly deprecated by “URI,” I’ve updated to use the term URI. <a href="http://www.w3.org/TR/uri-clarification/">More information from W3C</a>.</p><h3>Principles</h3><p>First, let’s take a look at some of the general principles of URI design.</p><h4>A URI must represent an object, uniquely and permanently</h4><p>One of the most fundamental philosophies behind a URI is that it represents a data object on the Internet.  The URI must be unique so that it is a one-to-one match &#8211; one URI per one data object.</p><p>While this is always the goal, there are times at which it is very difficult or impossible to accomplish.  Canonical URL tags were invented to help reduce the amount of duplicate content seen by a search engine.  While not a final solution, canonical URLs are strongly recommended as large search engines like Google are now paying attention to them.  For more information about canonical URLs, check out <a href="http://www.seomoz.org/blog/canonical-url-tag-the-most-important-advancement-in-seo-practices-since-sitemaps">this article by SEOmoz</a>.</p><p>URIs should also be permanent (i.e. choose the URI once and leave it at that).  This speaks to good URI design before a site is launched, with the URIs being carefully planned.  There will come a time when you do want to make improvements to your choices or otherwise must change URI structure.  When this becomes a necessity, be sure to set up <a href="http://en.wikipedia.org/wiki/URL_redirection#HTTP_status_codes_3xx">HTTP 301 moved permanently</a> redirects on your server.  This tells browsers and search engines the new location of the content and will also preserve any <a href="http://en.wikipedia.org/wiki/Pagerank">PageRank</a> that the old URI has accumulated.</p><h4>Be as human-friendly as possible</h4><p>This is the most fundamental driving factor behind URI design (or it should be).  URIs should be designed with the end user in mind.  Search Engine Optimization (SEO) and ease of development should come second.</p><p>One way to keep a URI user-friendly is to keep it short and to the point.  This means using as few characters as possible while still maintaining usability.  So, <span class="urldemo">/about</span> is better than <span class="urldemo">/about-acme-corp-page</span>.  While striving to be as short as possible, it should not sacrifice that user-friendliness by using URIs like <span class="urldemo">/13d2</span> as this holds no meaning for the end users.</p><p>Conversely, using a <a href="http://en.wikipedia.org/wiki/URL_shortening">shortlink</a> whenever sharing a URI is encouraged.  This is great for tweeting links on Twitter, or otherwise sharing on social sites like Facebook or Google Buzz.  It is great if you can control your own URI shortener for SEO reasons, although a site like Bit.ly is good too.  I personally use <a href="http://prettylinkpro.com/">PrettyLink Pro</a> (a WordPress plugin) to create my short URIs. An alternative is the <a href="http://wordpress.org/extend/plugins/short-url-plugin/">Short URL plugin</a>.</p><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/wordpresshortlink.png" alt="" title="wordpresshortlink" width="517" height="95" class="alignnone size-full wp-image-6952" /></p><p>WordPress provides a button to get a shortlink to a post based on WordPress&#8217; own <span class="urldemo">/?p=XXX</span> format which is likely to be shorter than your chosen permalink structure. The advantage being that will work as long as your site is around. The disadvantage is the shortness of the link is dependent on the length of your domain name.</p></div><p>The URI should not rely on information that is not important to the content or the user.  A common example of this is using the database ID as the URI, as in <span class="urldemo">/products/23</span>.  The end user does not care that the product is database record number 23, so a URI like <span class="urldemo">/products/ballpoint-pen</span> is much better.  It can be tempting to resort to such poor URI structure as it is often easier on the backend to query the database with an ID rather than have to do a lookup on an alias to find the object.</p><p>One good test to see if a URI is a user-friendly URI is the &#8220;speech-friendly&#8221; test.  You should be able to mention a URI in a conversation with a friend, and it should make sense.  For example:</p><blockquote><p>My bio’s at domain dot com slash jim</p></blockquote><p>instead of</p><blockquote><p>My bio’s at domain dot com slash page slash g g 2 3</p></blockquote><h4>Consistency</h4><p>URIs across a site must be consistent in format.  Once you pick your URI structure, be consistent and follow it!  Having good URI structure for part of the site means that you still have poor structure overall.  In order for a user to trust that URIs work a certain way on a site, the format must be consistent.  If you must switch structure (maybe you’re updating a poorly-designed site), use 301 redirects as previously mentioned.</p><h4>&#8220;Hackable&#8221; URIs</h4><p>Related to consistency, URIs should be structured so that they are intelligibly &#8220;hackable&#8221; or changeable.  For example, if <span class="urldemo">/events/2010/01</span> shows a monthly calendar with events from January 2010, then:</p><ul><li><span class="urldemo">/events/2009/01</span> should show an events calendar for January 2009</li><li><span class="urldemo">/events/2010</span> should show events for the entire year of 2010</li><li><span class="urldemo">/events/2010/01/21</span> should show the events for January 21st, 2010</li></ul><h4>Keywords</h4><p>The URI should be composed of keywords that are important to the content of the page.  So, if the URI is for a blog post that has a long title, only the words important to the content of the page should be in the URI.  For example, if the blog post is “My Trip to Best Buy for Memory Cards,” then the URI might be <span class="urldemo">/posts/2010/07/02/trip-best-buy-memory-cards</span> or something similar.</p><p>As a side benefit, using important keywords in the URI will improve SEO.  My personal SEO philosophy is that, rather that optimize for search engines, optimize for good content.  Search engines have made it their goal to find the best content on the web, so doing everything possible to create an easy-to-use site with great content and opportunities for further information (links) will, in my opinion, yield the best long-term results for search engine visibility.</p><h3>Technical Details</h3><p>We have covered some of the guiding principles behind URI design.  Now, let’s look at some technical implementations of those guidelines.</p><h4>No evidence of the underlying technology</h4><p>The URI should not have .html, .htm, .aspx (a big annoyance), or anything else attached to it that is only designed to show the underlying technology.  No end user cares that your site was written in ASP.NET (.aspx), ColdFusion (.cfm), or uses Server Side Includes (.shtml) &#8211; or at least most end users don’t.  The extra info is just extra typing and extra room for error and frustration.</p><p>The one exception to this rule is appending a URI with a postfix like .atom, .rss, or .json to request that the certain format be returned.  Alternatively, the format could be requested with the Accept HTTP header.</p><h4>No WWW</h4><p>The www. should be dropped from the website URI, as it is unnecessary typing and violates the rules of being as human-friendly as possible and not including unnecessary information in the URI.</p><p>Many users, however, will still type in the www. prefix, so <span class="urldemo">www.domain.com</span> should 301 redirect to <span class="urldemo">domain.com</span>.  The same goes for 301 redirecting <span class="urldemo">www.subdomain.domain.com</span> to <span class="urldemo">subdomain.domain.com</span>.</p><h4>Format</h4><p>URIs should be in the format:</p><p><span class="urldemo">domain.com/[key information]/[name]/?[modifiers]</span></p><p>Key information is information that is not the object identifier (like the post title), but is still key to the object being accessed.  This may include:</p><ul><li>the type of thing (i.e. posts)</li><li>the overall parent category (i.e. technology)</li><li>key data members (i.e. the date posted)</li></ul><p>Modifiers modify the view, not the data model being represented, and thus they are part of the query string and not the URI itself.</p><p>The amount of &#8220;key information&#8221; should be kept to a minimum, as URIs should not be overly nested.  Each item placed in the key information section must really be key to addressing the page.</p><p>In the end, the URI should represent a descending hierarchy.  For example</p><ul><li>domain</li><li>type</li><li>category</li><li>title</li></ul><p>Example: <span class="urldemo">http://domain.com/posts/servers/nginx-ubuntu-10.04</span>.  In the case of items with dates, the format should follow the descending hierarchy:</p><ul><li>year</li><li>month</li><li>day</li></ul><p>Example: <span class="urldemo">http://domain.com/news/tech/2007/11/05/google-announces-android</span>.</p><p>Google News has some <a href="http://www.google.com/support/news_pub/bin/answer.py?hl=en&#038;answer=68323">interesting requirements</a> for webpages that want to be listed in the Google News results &#8211; Google requires at least a 3-digit unique number.  Due to the fact that they will ignore numbers that look like years, a 5 or more digit number is preferred.  Also recommended is a <a href="http://www.google.com/support/news_pub/bin/answer.py?answer=74288">Google News sitemap</a>.  This is one of those cases where if you absolutely must target Google News, you must conform to this inferior URI structure.  But, if you must, make sure that you are consistent and that it is still hackable (for example, use the format yyyymmdd like <span class="urldemo">20100701</span>).</p><h4>All lowercase</h4><p>All characters must be lowercase.  Attempting to describe a URI to someone when mixed case is involved is next to impossible.</p><p>If someone types the URI in mixed-case, they should be 301 redirected to the lowercase page.  That sounds really nice, but in practice, I’m not exactly sure if that is possible&#8230; using a CMS that rewrites all requests to a single file would be the easiest way to accomplish it as the script could issue the 301 to lowercase, but I’m not sure if there’s an easier way (.htaccess rules or something).</p><h4>Actions appended to the URI</h4><p>Actions may be appended to the URI, like show, delete, edit, etc.  Non-destructive actions (those that do not change the object) should be requested with a HTTP GET, while destructive actions should be POSTed to the URI.  Run a Google search for REST URI Design for more information.</p><h4>URI identifiers should be made URI friendly</h4><p>A URI might contain the title of a post, and that title might contain characters that are not URI-friendly.  That post title must therefore be made URI friendly.  For example</p><ul><li>All uppercase characters are made lowercase</li><li>Characters like é should be converted to e (etc.)</li><li>Spaces should be replaced with hyphens</li><li>Unknown characters (!, @, #, $, %, ^, &#038;, *, etc.) should be replaced with a hyphen</li><li>Double hyphens (&#8211;) should be replaces with a single hyphen</li><li>Probably more rules I’m forgetting</li></ul><p>Characters can be URI escaped (like %20 for the space character), but this is generally a bad idea for many of the above reasons (shows technology, unnecessary typing, etc.)</p><h4>Fun idea</h4><p>Use a sentence like structure:</p><p><span class="urldemo">chriscoyier.net/authored/digging-into-wordpress/</span><br /> <span class="urldemo">chriscoyier.net/has-worked-for/chatman-design/</span><br /> <span class="urldemo">chriscoyier.net/likes/trailer-park-boys</span></p><p><span class="urldemo">jacobwg.com/thinks/this-post/is/basically-done</span></p><p>If you know of any more URI guidelines that I missed or have any comments about those I did remember, I’d love to hear them!</p><h3>Credits</h3><p>Many thanks to the <a href="http://forrst.com/">Forrst</a> community who saw the initial (very) rough drafts of this post and contributed many insightful comments.  Special thanks to <a href="http://forrst.com/people/chriscoyier">@chriscoyier</a>, <a href="http://forrst.com/people/caludio">@caludio</a>, <a href="http://forrst.com/people/Steerpike">@steerpike</a>, and <a href="http://forrst.com/people/mattthehoople">@mattthehoople</a> for directly contributing to the guideline list and to all the other Forrst commenters for providing helpful discussion.</p><p>Thank you to my dad for proofreading and review! Thank you also to Chris for being kind enough to offer to post this on CSS Tricks!</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/guidelines-for-uri%c2%a0design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guest on jQuery Podcast</title>
		<link>http://www.lakevillewebdesign.com/guest-on-jquery%c2%a0podcast/</link>
		<comments>http://www.lakevillewebdesign.com/guest-on-jquery%c2%a0podcast/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 18:40:40 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6940</guid>
		<description><![CDATA[I had the honor of being on the jQuery Podcast #30 with Ralph Whitbeck and Doug Neiner. We talk about some of the different parts of CSS-Tricks, the jQuery conference, and the difference between designer and developers. We also talk about my new job at Wufoo and specifically the Wufoo API jQuery plugin and the [...]]]></description>
			<content:encoded><![CDATA[<p>I had the honor of being on the <a href="http://blog.jquery.com/2010/07/30/the-official-jquery-podcast-episode-30-chris-coyier/">jQuery Podcast #30</a> with <a href="http://ralphwhitbeck.com/">Ralph Whitbeck</a> and <a href="http://dougneiner.com/">Doug Neiner</a>. We talk about some of the different parts of CSS-Tricks, the jQuery conference, and the difference between designer and developers. We also talk about my new job at Wufoo and specifically the <a href="http://github.com/wufoo/Wufoo-API-Wrappers/tree/master/jquery/">Wufoo API jQuery plugin</a> and the interesting issues that came up with that.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/guest-on-jquery%c2%a0podcast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Run-in Display Value</title>
		<link>http://www.lakevillewebdesign.com/css-run-in-display%c2%a0value/</link>
		<comments>http://www.lakevillewebdesign.com/css-run-in-display%c2%a0value/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 12:52:03 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=596</guid>
		<description><![CDATA[CSS has a value for the display attribute called run-in. It&#8217;s like this: h3 { display: run-in; } The point is to allow a header to run into text below it, without sacrificing semantics or running into the problems you might run into trying to force it with other layout techniques. Let&#8217;s take a closer [...]]]></description>
			<content:encoded><![CDATA[<p>CSS has a value for the display attribute called <tt>run-in</tt>. It&#8217;s like this:</p><pre><code class="css">h3 {
  display: run-in;
}</code></pre><p>The point is to allow a header to run into text below it, without sacrificing semantics or running into the problems you might run into trying to force it with other layout techniques.</p><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/runinbrowser.png" alt="" title="runinbrowser" width="570" height="262" class="alignnone size-full wp-image-6926" /></p><p>Let&#8217;s take a closer look.</p><p><span id="more-596"></span></p><h3>But why not __________?</h3><p><strong>But why not float it to the left?</strong> Well headers are often of larger font-size than body type. So if you float the header to the left, you might catch more than one line.</p><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/runinfloatproblem.png" alt="" title="runinfloatproblem" width="570" height="262" class="alignnone size-full wp-image-6928" /></p><p><strong>But why not make it an inline element?</strong> Because the following text might be (actually, is likely to be) inside of a paragraph tag. Paragraph tags are block-level, and thus the will break to a new line if they follow an inline element and the effect will not be achieved. You could insert the &lt;h3> tag <em>within</em> the &lt;p> tag, but that has semantic concerns, and more importantly, long term maintenance concerns. What if this effect goes out of vogue?</p><p><strong>But why not use inline-block?</strong> Same problem as above. The effect will not be achieved unless you tuck the header into the following paragraph which is problematic.</p><h3>How does it work then?</h3><p>If a run-in element precedes a block level element, the run in element will behave structurally as if it has become the block level elements first inline child element.</p><h3>Browser Support</h3><p>Haven&#8217;t heard much about this? Well it might be because browser support is a bit weird.</p><p>Rumor has it that Mozilla <a href="http://twitter.com/Zirro/status/18875860411">isn&#8217;t happy</a> with <a href="http://www.w3.org/TR/css3-box/#run-in-boxes">the spec</a>. Firefox doesn&#8217;t support it at all, including the version 4 betas.</p><p>The WebKit family (Safari and Chrome) are supporting it, as well as Opera and IE 8. There are some differences in how these browsers handle things though. <a href="http://www.quirksmode.org/css/display.html">Reports have it</a> that older versions of WebKit and Konqueror allowed run-in elements to run into succeeding inline elements which is incorrect.</p><h3>Issues in the spec?</h3><p>In my own reading of the spec, I find it a bit unclear.</p><blockquote><p>If a sibling block box (that does not float and is not absolutely positioned) follows the run-in box, the run-in box becomes the first inline box of the block box.</p></blockquote><p>That makes sense and <em>appears</em> to be how it works, but does <em>&#8220;becomes the first inline box&#8221;</em> mean that the run-in box should become a descendant of the block box? In WebKit, the run-in element <a href="http://cl.ly/1mlP">retains its solidarity</a>.</p><blockquote><p>A run-in cannot run in to a block that already starts with a run-in or that itself is a run-in.</p></blockquote><p>Does that mean that there can&#8217;t be two headers, both run-ins, that run into a paragraph below? That&#8217;s how I would read it, but I think the WebKit implementation where they <a href="http://cl.ly/1n0E">both fall inside</a> makes more sense. Opera and IE 8 follow the spec in that the first run-in becomes block and the second goes inline.</p><p>Then it says:</p><blockquote><p>Otherwise, the run-in box becomes a block box.</p></blockquote><p><em>Otherwise</em> is a big word, but implementations have been pretty good here. Three run-in&#8217;s in a row inside a parent with no other siblings? They all go block. A run-in sandwiched between two inline elements? It goes block. Run-in > absolute-position > block, the run-in goes block. Mind-bending, I know, but current modern browsers are doing good here.</p><p>If the run-in element contains anything block-level, it becomes block-level. All browsers seem to agree on that one.</p><h3>Demos</h3><p>Here is my own <a href="http://css-tricks.com/examples/Runin/">simple demo page</a>. There is also a <a href="http://www.hixie.ch/tests/evil/mixed/display-runin.html">super hardcore demo</a> (which is over 10 years old).</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/css-run-in-display%c2%a0value/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to add custom renderer for a custom column in Magento grid</title>
		<link>http://www.lakevillewebdesign.com/how-to-add-custom-renderer-for-a-custom-column-in-magento-grid/</link>
		<comments>http://www.lakevillewebdesign.com/how-to-add-custom-renderer-for-a-custom-column-in-magento-grid/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 12:06:54 +0000</pubDate>
		<dc:creator>Tomas Novoselic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=5159</guid>
		<description><![CDATA[Every now or then we need new column on some grid listing in Magento. It is quite simple task, but you will probably want to format values way you want or whatever. This is where writing your own renderer would be usefull and simple. To pull this out, you would overide some grid,  add column  [...]]]></description>
			<content:encoded><![CDATA[<p>Every now or then we need new column on some grid listing in Magento. It is quite simple task, but you will probably want to format values way you want or whatever.<br />
This is where writing your own renderer would be usefull and simple.<span id="more-5159"></span></p>
<p>To pull this out, you would overide some grid,  add column  to it and write custom renderer.</p>
<p>How it works in real life situations.?!<br />
Let&#8217;s take a look at product listing admin grid.<br />
Overide block class called <strong>Mage_Adminhtml_Block_Catalog_Product_Grid </strong>located in <strong>/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php</strong> file.</p>
<p>We won&#8217;t rewrite this block in this post, but this post assumes you know how to do it yourself.<br />
Modify _prepareCollection() method with new data, for example let&#8217;s add short description of a product:</p>
<pre class="brush: php">

protected function _prepareCollection()
{
$store = $this-&gt;_getStore();
$collection = Mage::getModel(&#039;catalog/product&#039;)-&gt;getCollection()
-&gt;addAttributeToSelect(&#039;sku&#039;)
-&gt;addAttributeToSelect(&#039;name&#039;)
-&gt;addAttributeToSelect(&#039;short_description&#039;) // THIS IS WHAT WE HAVE ADDED
-&gt;addAttributeToSelect(&#039;attribute_set_id&#039;)
-&gt;addAttributeToSelect(&#039;type_id&#039;)
-&gt;joinField(&#039;qty&#039;,
&#039;cataloginventory/stock_item&#039;,
&#039;qty&#039;,
&#039;product_id=entity_id&#039;,
&#039;{{table}}.stock_id=1&#039;,
&#039;left&#039;);

if ($store-&gt;getId()) {
//$collection-&gt;setStoreId($store-&gt;getId());
$collection-&gt;addStoreFilter($store);
$collection-&gt;joinAttribute(&#039;custom_name&#039;, &#039;catalog_product/name&#039;, &#039;entity_id&#039;, null, &#039;inner&#039;, $store-&gt;getId());
$collection-&gt;joinAttribute(&#039;status&#039;, &#039;catalog_product/status&#039;, &#039;entity_id&#039;, null, &#039;inner&#039;, $store-&gt;getId());
$collection-&gt;joinAttribute(&#039;visibility&#039;, &#039;catalog_product/visibility&#039;, &#039;entity_id&#039;, null, &#039;inner&#039;, $store-&gt;getId());
$collection-&gt;joinAttribute(&#039;price&#039;, &#039;catalog_product/price&#039;, &#039;entity_id&#039;, null, &#039;left&#039;, $store-&gt;getId());
}
else {
$collection-&gt;addAttributeToSelect(&#039;price&#039;);
$collection-&gt;addAttributeToSelect(&#039;status&#039;);
$collection-&gt;addAttributeToSelect(&#039;visibility&#039;);
}

$this-&gt;setCollection($collection);

parent::_prepareCollection();
$this-&gt;getCollection()-&gt;addWebsiteNamesToResult();
return $this;
}
</pre>
<p>Now let&#8217;s add this to a new column:</p>
<pre class="brush: php">

/*You will find some more code inside this method, but for readability purposes, I&#039;ll just say you need to add code you find here at beginning of this method...*/

protected function _prepareColumns()
{
$this-&gt;addColumn(&#039;Short description&#039;,
array(
&#039;header&#039;=&gt; Mage::helper(&#039;catalog&#039;)-&gt;__(&#039;Short description&#039;),
&#039;index&#039; =&gt; &#039;short_description&#039;,
&#039;renderer&#039;  =&gt; &#039;Mage_Adminhtml_Block_Catalog_Product_Renderer_Red&#039;,// THIS IS WHAT THIS POST IS ALL ABOUT
));

}
</pre>
<p>Make directory called Renderer inside directory where your Grid.php is located and make file Red.php</p>
<p>Make class</p>
<p><strong>Mage_Adminhtml_Block_Catalog_Product_Renderer_Red extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract</strong></p>
<p>Notice <strong>&#8220;Mage_&#8221;</strong>, this is because I&#8217;m not rewriting anything in this post&#8230;</p>
<p>Here is code:</p>
<pre class="brush: php">

&lt; ?php
class Mage_Adminhtml_Block_Catalog_Product_Renderer_Red extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{

public function render(Varien_Object $row)
{
$value =  $row-&gt;getData($this-&gt;getColumn()-&gt;getIndex());
return &#039;&lt;span style=&quot;color:red;&quot;&gt;&#039;.$value.&#039;&lt;/span&gt;&#039;;

}

}
?&gt;
</pre>
<p>Now you should have one additional column at product grid containing short description writen in red.</p>
<p><img class="aligncenter size-full wp-image-5162" title="2_ac" src="http://inchoo.net/wp-content/uploads/2010/07/2_ac.jpg" alt="" width="579" height="248" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/how-to-add-custom-renderer-for-a-custom-column-in-magento-grid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interviewed on Unmatched Style Podcast</title>
		<link>http://www.lakevillewebdesign.com/interviewed-on-unmatched-style%c2%a0podcast/</link>
		<comments>http://www.lakevillewebdesign.com/interviewed-on-unmatched-style%c2%a0podcast/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 12:52:06 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6930</guid>
		<description><![CDATA[The crew from Unmatched Style are the folks that run ConvergeSE which I was lucky enough to attend this year. They are really great folks! While I was down there, I was interviewed by Gene for their podcast. Thanks to Gene for having me! I really recommend to everyone to check out Unmatched Style. A [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.unmatchedstyle.com/meet/">The crew</a> from <a href="http://www.unmatchedstyle.com/">Unmatched Style</a> are the folks that run <a href="http://convergese.com/">ConvergeSE</a> which I was lucky enough to attend this year. They are really great folks! While I was down there, I was interviewed by Gene for their podcast.</p><p><span id="more-6930"></span></p><p><object width="570" height="345"><param name="movie" value="http://www.youtube.com/v/FLqhKdCjH_E&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/FLqhKdCjH_E&amp;hl=en_US&amp;fs=1?color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="570" height="345"></embed></object></p><p>Thanks to Gene for having me! I really recommend to everyone to check out <a href="http://www.unmatchedstyle.com/">Unmatched Style</a>. A web design gallery is also part of what they do. I always tell people it&#8217;s my favorite web design gallery because they don&#8217;t just post a screenshot and call it a wrap, they write about why they like the design, and even parts they don&#8217;t like. Not to mention these are folks who build websites for a living, so there is nobody more qualified to critique and promote others work.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/interviewed-on-unmatched-style%c2%a0podcast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dude, you browse with JavaScript on?</title>
		<link>http://www.lakevillewebdesign.com/dude-you-browse-with-javascript%c2%a0on/</link>
		<comments>http://www.lakevillewebdesign.com/dude-you-browse-with-javascript%c2%a0on/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 13:24:38 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6910</guid>
		<description><![CDATA[Dude, you browse with JavaScript on? Uhm, yeah, why wouldn&#8217;t I? It&#8217;s totally insecure. Hackers could destroy your computer. Hackers? What is this 1995? And, no they can&#8217;t. They can definitely steal information about you without you knowing. Like what? Like you&#8217;re address book information or your browsing history, depending on your browser and settings. [...]]]></description>
			<content:encoded><![CDATA[<p>Dude, you browse with JavaScript on?</p><p>Uhm, yeah, why wouldn&#8217;t I?</p><p>It&#8217;s totally insecure. Hackers could destroy your computer.</p><p>Hackers? What is this 1995? And, no they can&#8217;t.</p><p>They can definitely <a href="http://jeremiahgrossman.blogspot.com/2010/07/i-know-who-your-name-where-you-work-and.html">steal information</a> about you without you knowing.</p><p>Like what?</p><p>Like you&#8217;re address book information or your browsing history, depending on your browser and settings.</p><p><span id="more-6910"></span></p><p>So if I were to visit some dark corner of the internet where people ran malicious scripts like this, people might be able to capture that my name is Bob and I live at 123 Maple Drive Mayberry, NC? And that sometimes I look at boobs at The Daily Niner?</p><p>Yes.</p><p>But I don&#8217;t use autofill on my forms at the browser level, they can&#8217;t. What about you? Isn&#8217;t like every single website you visit seemingly broken?</p><p>Well good websites are coded to work fine without JavaScript, and I can selectively enable sites I trust to allow it.</p><p>That sounds like a lot of work to maintain a whitelist manually. And it&#8217;s not like you do a security audit of each site before whitelisting it right? You just decide to trust it, basically because you want to look at and use that website right now and JavaScript is the only way.</p><p>Yes but I&#8217;m much more likely to enable it on a big businesses website than some random blog. Look, I&#8217;m not alone here, millions of people have downloaded the <a href="https://addons.mozilla.org/en-US/firefox/addon/722/">NoScript plugin for Firefox</a> alone.</p><p>I see that. Here&#8217;s some empirical evidence for you though. I&#8217;ve never once blocked JavaScript on any of the browsers I&#8217;ve used. I browse around all day with little regard to my trust level of the current website. In general my trust level is actually fairly low. I know a lot of sites I visit are hosted on shared hosting by folks like me who aren&#8217;t security gurus. I&#8217;ve had my websites hacked before on the server-level (nothing to do with JavaScript), which then inserted malicious JavaScript into my pages. I&#8217;m sure this has happened to many of those other sites I visit. Sometimes that JavaScript stores weird cookie data or redirects the website. Totally sucky and undesirable, but nothing that serious has ever happened to the point where I even consider just turning off JavaScript. I&#8217;ve never lost sensitive data or gotten spyware or anything like that.</p><p>Are you sure? Have you ever had weird charges on a credit card you&#8217;ve had to refute?</p><p>Well yeah.</p><p>Do you know exactly how that information was stolen from you?</p><p>No I don&#8217;t, but I doubt it was JavaScript.</p><p>Doubt&#8230; Trust&#8230; two sides of the same coin.</p><p>Here&#8217;s another reason I browse with JavaScript on. I like JavaScript. I write JavaScript. It does cool stuff and I like to see how other people use it. So I&#8217;m biased in that regard. As a web designer and developer, I don&#8217;t like hearing how many people browse with JavaScript off. I want that to go away. I don&#8217;t want to create gracefully degrading websites because it&#8217;s often twice the work and only for accommodating people with outdated concerns about this technology. And don&#8217;t tell me all about accessibility, I hear that most screen readers handle JavaScript just fine.</p><p>A site that works well without JavaScript also means it also likely has good architecture. It works great alone, and JavaScript adds to the user experience as needed.  Relying on JavaScript entirely is just lazy.</p><p>You see it as lazy I see it as the future. So what about Flash, do you block that too?</p><p>No, I love Flash.</p><p>I knew I didn&#8217;t like you. You&#8217;re probably a PC guy too huh?</p><p>Dude, we&#8217;re not going there.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/dude-you-browse-with-javascript%c2%a0on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to disable email sending when programatically creating an order in Magento</title>
		<link>http://www.lakevillewebdesign.com/how-to-disable-email-sending-when-programatically-creating-an-order-in-magento/</link>
		<comments>http://www.lakevillewebdesign.com/how-to-disable-email-sending-when-programatically-creating-an-order-in-magento/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 08:19:35 +0000</pubDate>
		<dc:creator>Vedran Subotic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=5140</guid>
		<description><![CDATA[Here is a little snippet of code that can come in handy if you are like me handling a task of programatically creating an order in Magento. My issue was that I had to disable emails beeing sent out to the customers, while at the same time leave the normal frontend process. Thus I could [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a little snippet of code that can come in handy if you are like me handling a task of programatically creating an order in Magento. <span id="more-5140"></span>My issue was that I had to disable emails beeing sent out to the customers, while at the same time leave the normal frontend process. Thus I could not just go under Magento admin System &gt; Congifuration and disable email sending from there.</p>
<p>Here is the sample line code you just need to place above final $order-&gt;save() or possibly $checkout-&gt;saveOrder():</p>
<pre class="brush: php">
Mage::app()-&gt;getStore()-&gt;setConfig(Mage_Sales_Model_Order::XML_PATH_EMAIL_ENABLED, &quot;0&quot;);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/how-to-disable-email-sending-when-programatically-creating-an-order-in-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Understanding border-image</title>
		<link>http://www.lakevillewebdesign.com/understanding%c2%a0border-image/</link>
		<comments>http://www.lakevillewebdesign.com/understanding%c2%a0border-image/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 13:40:53 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6883</guid>
		<description><![CDATA[The new CSS3 property border-image is a little tricky, but it can allow you to create flexible boxes with custom borders (or drop shadows, if that&#8217;s your thing) with a single div and a single image. In this article I explain how the border-image shorthand property works in today&#8217;s browsers. The basic idea The border-image [...]]]></description>
			<content:encoded><![CDATA[<p>The new CSS3 property border-image is a little tricky, but it can allow you to create flexible boxes with custom borders (or drop shadows, if that&#8217;s your thing) with a single div and a single image. In this article I explain how the <tt>border-image</tt> shorthand property works in today&#8217;s browsers.</p><p><span id="more-6883"></span></p><h3>The basic idea</h3><p>The border-image shorthand property has 3 parts:</p><pre><code class="css">border-image: url(border-image.png) 25% repeat;</code></pre><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/borderimagecss.png" alt="" title="borderimagecss" width="570" height="200" class="alignnone size-full wp-image-6899" /></p><p>Essentially, these allow you to specify:</p><ol><li>An image to use as the border</li><li>Where to slice that image, dividing the image into 9 sections</li><li>How the browser should apply those sections to the edges of your element</li></ol><h3>The pertinent details</h2><p>Let&#8217;s look at each part of the process in a little more detail. The first part is easy, and is familiar from the <tt>background-image</tt> property. For demonstration purposes I&#8217;ll use this image, which is 100px x 100px:</p><div class="image-wrap"> <img src="http://www.norabrowndesign.com/css-experiments/images/border-image.png" width="100" height="100" alt="A border-image" /></div><h3>Slicing your image</h3><p>The second part can have from one to four values, much like the <tt>border-width</tt> property, and they are specified in the same order: top, right, bottom, left. You can use percentages or pixels. Strangely, the percentages require the &#8220;%&#8221;, while pixels should be listed <em>without the &#8220;px&#8221;</em>:</p><pre><code class="css">border-image: url(my-image.gif) 25% 30% 10% 20% repeat;
border-image: url(my-image.gif) 25 30 10 20 repeat;</code></pre><p>In this case, since my image is 100px x 100px, the two rules above are equivalent &#8211; they slice the image in the same places. I&#8217;ve added some dimensions on my image to demonstrate:</p><div class="image-wrap"> <img src="http://www.norabrowndesign.com/css-experiments/images/border-image-marked.png" width="100" height="100" alt="A border-image" /></div><h3>Repeat, Round, Stretch</h3><p><tt>border-image</tt> will always place the corner sections of your image into the corresponding corners of your element box, but the third part of the shorthand rule tells the browser how to treat the middle sections of your image &#8212; the ones that will go along the edges of your element. <tt>Repeat</tt> (repeat, or tile, the image) and <tt>stretch</tt> (stretch, or scale, the image) are pretty self-explanatory. <tt>Round</tt> means tile the image but only so that a whole number of tiles fit, and otherwise scale the image. Right now, Safari and Chrome interpret <tt>round</tt> as <tt>repeat</tt>. There can be up to two values: one for the top and bottom edges of the element, and one for the left and right. Here&#8217;s an example with the top/bottom value set to <tt>repeat</tt>, and the left/right value set to <tt>stretch</tt>:</p><pre><code class="css">#example-one {
	border-width:25px 30px 10px 20px;
	-moz-border-image:url("border-image.png") 25 30 10 20 repeat stretch;
	-webkit-border-image:url("border-image.png") 25 30 10 20 repeat stretch;
	border-image:url("border-image.png") 25 30 10 20 repeat stretch;
}</code></pre><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/exampleoneimage.png" alt="" title="exampleoneimage" width="510" height="272" class="alignnone size-full wp-image-6895" /><br /> Screenshot for Example One</div><div id="example-one"><p><strong>LIVE DEMO, RSS READERS CLICK OVER TO SEE.</strong> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu arcu non dui consequat vestibulum non vitae eros. Donec imperdiet lorem at mi rhoncus lacinia. Phasellus porttitor ligula eu justo condimentum eget placerat arcu pharetra. Proin fringilla vulputate eros in accumsan. Sed mi nibh, pulvinar eu sollicitudin ut, feugiat non ipsum. In ornare, quam sit amet tempor suscipit, erat odio suscipit nisi, eu gravida nisl orci ut arcu. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p></div><h3>Border-width</h3><p><tt>border-image</tt> won&#8217;t do anything if you don&#8217;t specify a width for your border. For browsers that understand <tt>border-image</tt>, your image slices will be scaled to the specified width. If you use the <tt>border</tt> shorthand property, it provides a nice fallback for browsers that don&#8217;t:</p><pre><code class="css">#example-two {
	border:50px double orange;
	-moz-border-image:url("border-image.png") 25 30 10 20 repeat;
	-webkit-border-image:url("border-image.png") 25 30 10 20 repeat;
	border-image:url("border-image.png") 25 30 10 20 repeat;
}</code></pre><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/exampletwoimage.png" alt="" title="exampletwoimage" width="561" height="335" class="alignnone size-full wp-image-6894" /><br /> Screenshot of Example Two</div><div id="example-two" style="display: none;"><p><strong>LIVE DEMO, RSS READERS CLICK OVER TO SEE.</strong>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu arcu non dui consequat vestibulum non vitae eros. Donec imperdiet lorem at mi rhoncus lacinia. Phasellus porttitor ligula eu justo condimentum eget placerat arcu pharetra. Proin fringilla vulputate eros in accumsan. Sed mi nibh, pulvinar eu sollicitudin ut, feugiat non ipsum. In ornare, quam sit amet tempor suscipit, erat odio suscipit nisi, eu gravida nisl orci ut arcu. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p></div><p>Or you can specify each width individually (in this example I&#8217;ve specified widths such that the image slices aren&#8217;t scaled at all):</p><pre><code class="css">#example-three {
	border-color:orange;
	border-style:double;
	border-width:25px 30px 10px 20px;
	-moz-border-image:url("border-image.png") 25 30 10 20 repeat;
	-webkit-border-image:url("border-image.png") 25 30 10 20 repeat;
	border-image:url("border-image.png") 25 30 10 20 repeat;
}</code></pre><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/example-three-image.png" alt="" title="example-three-image" width="563" height="275" class="alignnone size-full wp-image-6893" /><br /> Screenshot of Example Three</div><div id="example-three" style="display: none;"><p><strong>LIVE DEMO, RSS READERS CLICK OVER TO SEE.</strong> dolor sit amet, consectetur adipiscing elit. Aenean eu arcu non dui consequat vestibulum non vitae eros. Donec imperdiet lorem at mi rhoncus lacinia. Phasellus porttitor ligula eu justo condimentum eget placerat arcu pharetra. Proin fringilla vulputate eros in accumsan. Sed mi nibh, pulvinar eu sollicitudin ut, feugiat non ipsum. In ornare, quam sit amet tempor suscipit, erat odio suscipit nisi, eu gravida nisl orci ut arcu. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p></div><p>Using a plain border at the same widths as your border-image won&#8217;t always be ideal, however, so you may want to use conditional stylesheets to give IE some different border styles altogether.</p><h3>Browser quirks</h3><p>Predictably, IE doesn&#8217;t understand anything of <tt>border-image</tt>. Browsers that <i>do</i> support border-image only support the shorthand property, not all the individual properties that are <a href="http://www.w3.org/TR/css3-background/#border-images">described in the spec</a>. Some potentially useful properties aren&#8217;t supported at all, especially <tt>border-image-outset</tt>, which would solve <a href="http://www.norabrowndesign.com/css-experiments/border-image-frame.html#one" title="Demonstration of border-image-outset issue">this problem.</a></p><p>Also, the default behavior is supposed to be to <i>discard</i> the center section of the image, and use the &#8216;fill&#8217; keyword on the <tt>border-image-slice</tt> property to preserve it:</p><blockquote><p>The ‘fill’ keyword, if present, causes the middle part of the border-image to be preserved. (By default it is discarded, i.e., treated as empty.) (<a href="http://www.w3.org/TR/css3-background/#border-image-slice">Read the spec</a>)</p></blockquote><p>But the current browser behavior is to preserve the middle, and there is no way to turn it off. Thus, if you don&#8217;t want your element&#8217;s content area to have a background, the center section of your image must be empty. However, you can use this filling behavior to your advantage, to create a <a href="http://www.norabrowndesign.com/css-experiments/border-image-frame.html#two" alt="Demonstration of CSS3 border-image fill behavior">box with a fancy border and background</a>, with only one image.</p><h3>Interactive demo</h3><p>I built a <a href="http://www.norabrowndesign.com/css-experiments/border-image-anim.html"><tt>border-image</tt> demo page</a> to help me get my head around this complicated new set of CSS3 properties. You can pick an image, specify repeat, round, or stretch, and adjust the border-width and slicing. Enjoy!</p><div class="image-wrap"> <a href="http://www.norabrowndesign.com/css-experiments/border-image-anim.html"><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/interactiveborderradiustool.jpg" alt="" title="interactiveborderradiustool" width="553" height="478" class="alignnone size-full wp-image-6898" /></a></div><h3>Examples in the wild</h3><ul><li><a href="http://www.blog.spoongraphics.co.uk/latest_news/whats-new-at-blogspoongraphics">Chris Spooner</a> uses it to nice effect to give his images a custom border.</li><li>On <a href="http://www.gopinkboots.com">the travel blog Go Pink Boots</a> I built recently, I used it to add a torn-paper background to images.</li><li>I use it on my site <a href="http://www.webdesignersreviewofbooks.com/reviews/html5-for-web-designers">The Web Designers&#8217; Review of Books</a> to highlight blockquotes.</li></ul><p>If you have other examples on live sites, I&#8217;d love to see them. Leave a link in the comments!</p><h3>About the Author</h3><p><a href="http://www.norabrowndesign.com">Nora Brown</a> is a freelance web and graphic designer based in Boston. Her pet project at the moment is the <a href="http://www.webdesignersreviewofbooks.com">Web Designers&#8217; Review of Books</a>, where she reviews books on everything from Blue Note album covers to HTML5. Have a look!</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/understanding%c2%a0border-image/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Local Previews of Images from File Inputs (fail)</title>
		<link>http://www.lakevillewebdesign.com/local-previews-of-images-from-file-inputs%c2%a0fail/</link>
		<comments>http://www.lakevillewebdesign.com/local-previews-of-images-from-file-inputs%c2%a0fail/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 13:12:43 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6788</guid>
		<description><![CDATA[A little while back there was a guest post about Ajax image previews. It&#8217;s a nice technique but it left myself and a few other commenters thinking: wouldn&#8217;t it be cool if you didn&#8217;t have to upload the image at all to preview it? After all, the image is on the persons computer already why [...]]]></description>
			<content:encoded><![CDATA[<p>A little while back there was a guest post about <a href="http://css-tricks.com/ajax-image-uploading/">Ajax image previews</a>. It&#8217;s a nice technique but it left myself and a few other commenters thinking: wouldn&#8217;t it be cool if you didn&#8217;t have to upload the image at all to preview it? After all, the image is on the persons computer already why can&#8217;t we just snag the local file path and use that as the <tt>src</tt> of an image.</p><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/inputwithpreview.png" alt="" title="inputwithpreview" width="237" height="274" class="alignnone size-full wp-image-6874" /></div><p>Well, it&#8217;s that snagging of the file path that is the problem. I did some research and testing in different browsers and I thought I&#8217;d document the results.</p><p><span id="more-6788"></span></p><h3>Genesis</h3><p>The idea comes from the fact that you can see see the file path in the file input after you select it.</p><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/filepathininput.png" alt="" title="filepathininput" width="226" height="43" class="alignnone size-full wp-image-6864" /><br /> Your eyeballs can see it, but JavaScript cannot.</div><h3>Security issue</h3><p>In all my naivety, I just though <em>&#8220;Hey we&#8217;ll just get the value of the input and use that as the <tt>src</tt> of an image element next to the input!&#8221;</em> As I quickly learned, there are some security concerns with allowing the browser to see a local file path like that. A malicious script could learn a good deal about your local file system if a file input was willing to cough up data like that.</p><h3>What browsers actually do</h3><h4>Internet Explorer &#038; Opera</h4><p>Both these browsers will return a value like this when trying to access the value of the file input:</p><pre><code class="html">C:\fakepath\image.png</code></pre><p><a href="http://acidmartin.wordpress.com/2009/06/09/the-mystery-of-cfakepath-unveiled/">This article</a> has a bit more information on the subject. Apparently if you add the site in question to the &#8220;Trusted sites&#8221; list in Internet Explorer it will return the file path. But of course you can&#8217;t expect users to do that.</p><h4>WebKit (Safari / Chrome)</h4><p>Return no value whatsoever for the file input value.</p><h4>Firefox</h4><p>Firefox is unique in that it returns only the filename for the file inputs value. While clearly that won&#8217;t work to get a local image preview working, <a href="http://stackoverflow.com/questions/81180/how-to-get-the-file-path-from-html-input-form-in-firefox-3">this thread on StackOverflow</a> lead to an interesting solution.</p><p>While it won&#8217;t give you the file path, Firefox will let you use a function called &#8216;getAsDataURL()&#8217; on the files attribute of the DOM on that input.</p><pre><code class="javascript">// Browser supports `files` as part of DOM
if (this.files) {

   //  This works in Firefox, #image-preview is an &lt;img src="" /&gt;
   $("#image-preview").attr("src", this.files[0].getAsDataURL());

}</code></pre><p><a href="http://css-tricks.com/examples/FileUploadLocal/" class="button">View Demo</a> (only Firefox does anything)</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/local-previews-of-images-from-file-inputs%c2%a0fail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Textarea Tricks</title>
		<link>http://www.lakevillewebdesign.com/textarea%c2%a0tricks/</link>
		<comments>http://www.lakevillewebdesign.com/textarea%c2%a0tricks/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 13:03:41 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6841</guid>
		<description><![CDATA[Oh, &#060;textarea&#062;&#8217;s. How many quirks you posses. Here is a collection of nine things you might want to do related to textareas. Enjoy. 1. Image as textarea background, disappears when text is entered. You can add a background-image to a textarea like you can any other element. In this case, the image is a friendly [...]]]></description>
			<content:encoded><![CDATA[<p>Oh, &lt;textarea&gt;&#8217;s. How many quirks you posses. Here is a collection of nine things you might want to do related to textareas. Enjoy.</p><p><span id="more-6841"></span></p><h3>1. Image as textarea background, disappears when text is entered.</h3><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/imagebehind.png" alt="" title="imagebehind" width="570" height="207" class="alignnone size-full wp-image-6842" /></p><p>You can add a background-image to a textarea like you can any other element. In this case, the image is a friendly reminder to be nice =). If you add a background image, for whatever reason, it can break the browser default styling of the textarea. The default 1px solid bolder is replaced with a thicker beveled border. To restore the browser default, you can just force the border back to normal.</p><pre><code class="css">textarea {
  background: url(images/benice.png) center center no-repeat; /* This ruins default border */
  border: 1px solid #888;
}</code></pre><p>That background image might interfere with the readability of the text once the text reaches that far. Here is some jQuery that will remove the background when the textarea is in focus, and put it back if the textarea is left without any text inside.</p><pre><code class="javascript">$('textarea')
  .focus(function() { $(this).css("background", "none") })
  .blur(function() { if ($(this)[0].value == '') { $(this).css("background", "url(images/benice.png) center center no-repeat") } });</code></pre><h3>2. HTML5 placeholder text</h3><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/html5placeholder.png" alt="" title="html5placeholder" width="443" height="108" class="alignnone size-full wp-image-6843" /></p><p>There is a new attribute as part of HTML5 forms called <tt>placeholder</tt>. It shows faded gray text in the textarea (also works for text-style inputs) which disappears when the textarea is in focus or has any value.</p><pre><code class="html">&lt;textarea placeholder="Remember, be nice!" cols="30" rows="5"&gt;&lt;/textarea&gt;</code></pre><p>HTML5 placeholder text works in Safari 5, Mobile Safari, Chrome 6, and the Firefox 4 alpha.</p><h3>3. Placeholder text, HTML5 with jQuery fallback</h3><p>We can easily test if a particular element supports a particular attribute by testing with JavaScript:</p><pre><code class="javascript">function elementSupportsAttribute(element, attribute) {
  var test = document.createElement(element);
  if (attribute in test) {
    return true;
  } else {
    return false;
  }
};</code></pre><p>Then we can write code so that if the browser does support the placeholder attribute, we&#8217;ll use that, if not, we&#8217;ll mimic the behavior with jQuery:</p><pre><code class="javascript">if (!elementSupportsAttribute('textarea', 'placeholder')) {
  // Fallback for browsers that don't support HTML5 placeholder attribute
  $("#example-three")
    .data("originalText", $("#example-three").text())
    .css("color", "#999")
    .focus(function() {
        var $el = $(this);
        if (this.value == $el.data("originalText")) {
          this.value = "";
        }
    })
    .blur(function() {
      if (this.value == "") {
          this.value = $(this).data("originalText");
      }
    });
} else {
  // Browser does support HTML5 placeholder attribute, so use it.
  $("#example-three")
    .attr("placeholder", $("#example-three").text())
    .text("");
}</code></pre><h3>4. Remove the blue glow</h3><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/blueglow.png" alt="" title="blueglow" width="570" height="130" class="alignnone size-full wp-image-6844" /></p><p>All WebKit browsers, Firefox 3.6, and Opera 10 all put a glowing blue border around textareas when they are in focus. You can remove it from the WebKit browsers like this:</p><pre><code class="css">textarea {
  outline: none;
}</code></pre><p>You could apply it to the :focus style as well, but it works either way. I have not yet found a way to remove it from either Firefox or Opera, but <tt>-moz-outline-style</tt> was about as far as I tested.</p><p><strong>REMINDER:</strong> The blue glow is becoming a strong standard and breaking that standard is typically a bad thing for your users. If you do it, you should have a darn compelling reason to as well as a similarly strong :focus style.</p><h3>5. Remove resize handle</h3><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/noresizer.png" alt="" title="noresizer" width="570" height="129" class="alignnone size-full wp-image-6845" /></p><p>WebKit browsers attached a little UI element to the bottom right of text areas that users can use to click-and-drag to resize a textarea. If for whatever reason you want to remove that, CSS is all it takes:</p><pre><code class="css">textarea {
  resize: none;
}</code></pre><h3>6. Add resize handle</h3><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/jqueryuiresizer.png" alt="" title="jqueryuiresizer" width="424" height="142" class="alignnone size-full wp-image-6846" /></p><p>jQuery UI has a <a href="http://jqueryui.com/demos/resizable/">resizeable interaction</a> that can be used on textareas. It works in all browsers and overrides the WebKit native version, because this version has all kinds of fancy stuff (like callbacks and animation).</p><p>To use it, load jQuery and jQuery UI on your page and at its most basic level you call it like this:</p><pre><code class="javascript">$("textarea").resizable();</code></pre><h3>7. Auto-resize to fit content</h3><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/autoresizetextarea.png" alt="" title="autoresizetextarea" width="570" height="352" class="alignnone size-full wp-image-6847" /></p><p>James Padolsey has a super nice jQuery script for <a href="http://james.padolsey.com/javascript/jquery-plugin-autoresize/">auto resizing textareas</a>. It works just how you likely hope it does. The textarea starts out a normal reasonable size. As you type more and more content, the textarea expands to include all of that text, rather than triggering a scrollbar as is the default.</p><p>The plugin has a variety of options, but at its simplest you just load jQuery, the plugin file, and call it like this:</p><pre><code class="javascript">$('textarea').autoResize();</code></pre><h3>8. Nowrap</h3><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/textnotwrapping.png" alt="" title="textnotwrapping" width="458" height="129" class="alignnone size-full wp-image-6848" /></p><p>To prevent text from wrapping normally in CSS, you use <tt>#whatever { white-space: nowrap; }</tt>. But for whatever reason, that doesn&#8217;t work with textareas. If you want to be able to type into textareas and would rather lines do not break until you press return/enter (a horizontal scrollbar is triggered instead), you&#8217;ll have to use the <tt>wrap="off"</tt> attribute.</p><pre><code class="html">&lt;textarea wrap="off" cols="30" rows="5"&gt;&lt;/textarea&gt;</code></pre><h3>9. Remove default scrollbars in Internet Explorer</h3><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/noscrollbarstextarea.png" alt="" title="noscrollbarstextarea" width="491" height="158" class="alignnone size-full wp-image-6849" /></p><p>IE puts a vertical scrollbar by default on all textareas. You can hid it with <tt>overflow: hidden</tt>, but then you don&#8217;t get any scrollbars at all when you expand. Thankfully auto overflow works to remove the scrollbar but still put them back when needed.</p><pre><code class="css">textarea {
  overflow: auto;
}</code></pre><p>&nbsp;</p><p>All the above examples <a href="http://css-tricks.com/examples/TextareaTricks/">can be seen here</a>.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/textarea%c2%a0tricks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tips for Web Design that Crosses Cultures</title>
		<link>http://www.lakevillewebdesign.com/tips-for-web-design-that-crosses%c2%a0cultures/</link>
		<comments>http://www.lakevillewebdesign.com/tips-for-web-design-that-crosses%c2%a0cultures/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 13:25:36 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6824</guid>
		<description><![CDATA[The internet has the potential to put a global audience at your fingertips, but there&#8217;s far more to reaching across cultural divides than simply putting your website out there and waiting for people to visit it. There are issues to do with language, design and SEO that all need to be addressed before your website [...]]]></description>
			<content:encoded><![CDATA[<p>The internet has the potential to put a global audience at your fingertips, but there&#8217;s far more to reaching across cultural divides than simply putting your website out there and waiting for people to visit it. There are issues to do with language, design and SEO that all need to be addressed before your website becomes truly accessible ‘world-wide’. Thankfully, though, there are a number of simple tricks you can apply that will make it all a less daunting process.</p><p><span id="more-6824"></span></p><h3>Translate your content</h3><p>This is perhaps the most obvious but also the most important tip. English is arguably the most commonly used language internationally, but it still serves as a native tongue for only about 20% of the world&#8217;s population. Clearly, an English-only website will be inaccessible to a huge percentage of your potential online audience of 1.8 billion people.</p><p>There are various ways to translate your content and the method you choose may reflect budget and time constraints. The easiest way is to add a translation widget such as <a href="http://translate.google.com/">Google Translate</a> or <a href="http://babelfish.yahoo.com/">Babelfish</a> to your site, allowing visitors to translate text to the language of their choice. Remember that any text embedded in Flash files won’t be translated – which is (yet another) a good argument against using too much Flash.</p><p>If you&#8217;re confident in using inline functions, you can build inline translation code into the site using Ajax, in connection with geolocation, to facilitate a smooth immersive translation process that directs the visitor to the correct language version, as determined by where their ISP is hosted.</p><p>If you do use machine translation, try to make your original content as simple and direct as possible and avoid specific cultural references, as these will invariably not translate well.</p><p>If budget allows, having your copy professionally translated is the optimum choice. Using a native speaker from the target market will ensure that meaning and nuances will carry over to your translated site and any linguistic or cultural mistakes can be avoided.</p><h3>Use horizontal navigation bars</h3><p>Not all languages read from left to right like English. Scripts such as Arabic and Hebrew read from right to left. While CSS makes it easy to flip a vertical navigation bar (which would normally be located on the left-hand side for a left-to-right language) and script direction from one side to the other, using a horizontal bar located across the top of the page will add a sense of continuity and cohesive design to localized versions of your site.</p><h3>Use Unicode UTF-8</h3><p>Unicode UTF-8 is the ideal character encoding tool. Compatible with over 90 different written languages or scripts, it&#8217;s also supported by all the major browsers. Even if you see no need for a localized site in Arabic or Simplified Chinese right now, using UTF-8 will give you the flexibility to create one in the future and it also incorporates all the additional characters from extended Latin alphabets (such as the German Ä, Ö, Ü and ß).</p><p>Bear in mind that some scripts and languages will take up more space than others to convey the same information and this may affect your page design.</p><h3>Use appropriate colours</h3><p>The use of colours can enhance a site&#8217;s visual appeal and help convey a theme or emotion, but some colours have different connotations in different cultures. White, for example, can signify marriage in the west but is associated with death and mourning in much of the east.</p><h3>Tailor your design to the market</h3><p>Some cultures (such as Japan and China) can be defined as &#8216;high context&#8217; cultures. These cultures have a tendency to draw information from context and situation. &#8216;Low context&#8217; cultures (including Germany, Scandinavia and North America) tend to look for explicitly worded and expressed information. In terms of website design, this means that sites with a more visual and immersive feel may be better received in high context cultures and sites with concise, clear layouts and text will appeal more to low context cultures. As an example, take a look at Nokia&#8217;s clearly structured and information-heavy <a href="http://www.nokia.de/">German site</a>, with prices and products listed on the front page, and compare it to the more visually oriented <a href="http://www.nokia.com.cn/">Chinese version</a>.</p><h4>Nokia&#8217;s Chinese site</h4><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/Nokia_China.jpg" alt="" title="Nokia_China" width="570" height="573" class="alignnone size-full wp-image-6832" /></p><h4>Nokia&#8217;s German site</h4><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/Nokia_Germany.jpg" alt="" title="Nokia_Germany" width="570" height="493" class="alignnone size-full wp-image-6833" /></p><h3>Localize your SEO</h3><p>There&#8217;s little point having a beautifully designed series of websites which are accessible to a range of different cultures if nobody can find them. SEO keywords can vary tremendously from location to location so don&#8217;t just translate your keywords directly. A little research may reveal that colloquialisms, alternative terms or even misspellings are more commonly used in your new target market. Research keywords not only on the local versions of search giants like Google but also on any major local competitors such as <a href="http://www.baidu.com/">Baidu</a> (the leading search engine in China).</p><div class="explanation"><h3>About the author</h3><p>Christian Arno is the founder and Managing Director of global translations company <a href="http://www.lingo24.com/">Lingo24</a>. Launched in 2001, Lingo24 employs some 4,000 professional freelance translators covering a hundred different language combinations. Follow Christian on Twitter: <a href="http://twitter.com/lingo24">@Lingo24</a>.</div><h3>Note from the editor</h3><p>Christian has written for a number of other blogs on this same subject, so if are very interested in this, check out his other articles:</p><ul><li><a href="http://www.instantshift.com/2010/06/22/design-for-the-world-cross-cultural-web-design/">Design for the World: Cross Cultural Web Design</a></li><li><a href="http://speckyboy.com/2010/06/30/tips-and-thoughts-on-cross-cultural-global-web-design/">Tips and Thoughts on Cross-Cultural Global Web Design</a></li><li><a href="http://www.onextrapixel.com/2010/06/22/building-a-cross-cultural-web-design-for-a-wider-audience/">Building A Cross-Cultural Web Design For A Wider Audience</a></li></ul> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/tips-for-web-design-that-crosses%c2%a0cultures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Maps Slider</title>
		<link>http://www.lakevillewebdesign.com/google-maps%c2%a0slider/</link>
		<comments>http://www.lakevillewebdesign.com/google-maps%c2%a0slider/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 21:30:54 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6815</guid>
		<description><![CDATA[Google Maps has a JavaScript API now in it&#8217;s third version. I remember playing with some version of the API back in v2 and thought it was kinda cool but a bit obtuse. For one thing, v3 no longer requires applying for an API key which is nice. I&#8217;m sure it&#8217;s partly me getting better [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.google.com/maps">Google Maps</a> has a <a href="http://code.google.com/apis/maps/documentation/javascript/">JavaScript API</a> now in it&#8217;s third version. I remember playing with some version of the API back in v2 and thought it was kinda cool but a bit obtuse. For one thing, v3 no longer requires applying for an API key which is nice.</p><p>I&#8217;m sure it&#8217;s partly me getting better at JavaScript, but I found the API quite well done and easy to work with. For one thing, it&#8217;s fully evented. That means you can attach event listeners to different thing, like the map itself or things inside the map. A simple example would be if a marker is clicked, you can change the zoom level of the map, change information shown elsewhere on the page, or really anything else you might want to do with JavaScript.</p><p>Not only is it evented for dealing with things inside the map, but the objects you used to create the map and stuff inside it are full of methods for controlling them. This makes it easy to control the map with events that happen elsewhere on your page.</p><p>I decided to play with it a little and try to build something.</p><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/mapsslider.jpg" alt="" title="mapsslider" width="570" height="237" class="alignnone size-full wp-image-6816" /></p><p><a href="http://css-tricks.com/examples/GoogleMapSlider/" class="button">View Demo</a> <a href="http://css-tricks.com/examples/GoogleMapSlider.zip" class="button">Download Files</a></p><p><span id="more-6815"></span></p><p>I used jQuery to help out, but that&#8217;s definitely not required.</p><p>I created a list of locations in an unordered list. Each list item had HTML5 data attributes containing the latitude and longitude of it. It also contained a title and long and short descriptions.</p><pre><code class="html">&lt;li data-geo-lat="41.9786" data-geo-long="-87.9047"&gt;
  &lt;h3&gt;O'Hare Airport&lt;/h3&gt;
  &lt;p&gt;Flights n' stuff&lt;/p&gt;
  &lt;p class="longdesc"&gt;&lt;strong&gt;About:&lt;/strong&gt; O'Hare International Airport has been voted the "Best Airport in North America" for 10 years by two separate sources: Readers of the U.S. Edition of Business Traveler Magazine (1998-2003) and Global Traveler Magazine (2004-2007). Travel and Leisure magazine's 2009 "America's Favorite Cities" ranked Chicago's Airport System (O'Hare and Midway) the second-worst for delays, New York City's airport system (JFK, Newark Liberty, and LaGuardia) being the first.&lt;/p&gt;
&lt;/li&gt;</code></pre><p>When one of these list items is hovered over, I apply a &#8220;hover&#8221; class to deal with styling, &#8220;pan&#8221; the map to the new coordinates, and fill out the right area with more information.</p><p>It&#8217;s all fairly straight forward and further commented to clarify. Adding/editing points is as simple as <a href="http://geocoder.us/">changing coordinates</a> and text right in the HTML part.</p><h4>Idea</h4><p>The idea came from <a href="http://hitotoki.org/places/japan/tokyo/">this website</a> which I found in a <a href="http://twitter.com/ilovetypography/status/17160669126">tweet by ilovetypography</a>.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/google-maps%c2%a0slider/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The difference between ‘return false;’ and ‘e.preventDefault();’</title>
		<link>http://www.lakevillewebdesign.com/the-difference-between-%e2%80%98return-false%e2%80%99-and%c2%a0%e2%80%98e-preventdefault%e2%80%99/</link>
		<comments>http://www.lakevillewebdesign.com/the-difference-between-%e2%80%98return-false%e2%80%99-and%c2%a0%e2%80%98e-preventdefault%e2%80%99/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 02:33:11 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6809</guid>
		<description><![CDATA[Have you ever seen those two things (in the title) being used in jQuery? Here is a simple example: $("a").click(function() { $("body").append($(this).attr("href")); return false; } That code would append the href attribute as text to the body every time a link was clicked but not actually go to that link. The return false; part of [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever seen those two things (in the title) being used in jQuery? Here is a simple example:</p><pre><code class="javascript">$("a").click(function() {
   $("body").append($(this).attr("href"));
   return false;
}</code></pre><p>That code would append the <tt>href</tt> attribute as text to the body every time a link was clicked but <strong>not</strong> actually go to that link. The <tt>return false;</tt> part of that code prevents the browser from performing the default action for that link. That exact thing could be written like this:</p><pre><code class="javascript">$("a").click(function(e) {
   $("body").append($(this).attr("href"));
   e.preventDefault();
}</code></pre><p>So what&#8217;s the difference?</p><p><span id="more-6809"></span></p><p>The difference is that <tt>return false;</tt> takes things a bit further in that it also prevents that event from propagating (or &#8220;bubbling up&#8221;) the DOM. The you-may-not-know-this bit is that whenever an event happens on an element, that event is triggered on every single parent element as well. So let&#8217;s say you have a box inside a box. Both boxes have click events on them. Click on the inner box, a click will trigger on the outer box too, unless you prevent propagation. Like this:</p><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/propegationdemo.png" alt="" title="propegationdemo" width="570" height="605" class="alignnone size-full wp-image-6810" /><br /> <a href="http://css-tricks.com/examples/ReturnFalse/">This demo.</a></div><p>So in other words:</p><pre><code class="javascript">function() {
  return false;
}

// IS EQUAL TO

function(e) {
  e.preventDefault();
  e.stopPropagation();
}</code></pre><p>It&#8217;s all probably a lot more complicated than this and articles <a href="http://www.quirksmode.org/js/events_order.html">like this</a> probably explain it all a lot better.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/the-difference-between-%e2%80%98return-false%e2%80%99-and%c2%a0%e2%80%98e-preventdefault%e2%80%99/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 useful magento extensions</title>
		<link>http://www.lakevillewebdesign.com/10-useful-magento-extensions/</link>
		<comments>http://www.lakevillewebdesign.com/10-useful-magento-extensions/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 18:19:51 +0000</pubDate>
		<dc:creator>Željko Prša</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=5015</guid>
		<description><![CDATA[Whether your web-shop is already generating revenue or it&#8217;s at it&#8217;s very beginning, it&#8217;s always good to enhance it where it&#8217;s needed especially if it&#8217;s for free. These 10 extensions for magento are here for their value and usefulness. Also, almost all of them exist for quite some time so they have been tested and [...]]]></description>
			<content:encoded><![CDATA[<p>Whether your web-shop is already generating revenue or it&#8217;s at it&#8217;s very beginning, it&#8217;s always good to enhance it where it&#8217;s needed especially if it&#8217;s for free.</p>
<p><span id="more-5015"></span><br />
These 10 extensions for magento are here for their value and usefulness. Also, almost all of them exist for quite some time so they have been tested and more importantly supported by their authors with the exception of the Easy Lightbox but it works with Magento 1.4.</p>
<p>One of them is our own product by <a href="http://inchoo.net/ecommerce/magento/featured-products-on-magento-frontpage/">Domagoj Potkoc</a>.</p>
<ul class="list-view">
<li><strong>1. Direct Resize</strong><img class="alignleft size-thumbnail wp-image-5024" title="direct-resize" src="http://inchoo.net/wp-content/uploads/2010/06/direct-resize-150x129.png" alt="" width="150" height="129" />Give the possibility to resize images without distorting them. You can specify a Width and a Height value as well as a ratio. Everyone dealing with images in Magento will appreciate this one for sure.<a href="http://www.magentocommerce.com/extension/153/direct-resize">http://www.magentocommerce.com/extension/153/direct-resize </a></li>
<li><strong>2. Magento Easy lightbox</strong><img class="alignleft size-thumbnail wp-image-5023" title="magento-easy-lightbox" src="http://inchoo.net/wp-content/uploads/2010/06/magento-easy-lightbox-103x150.png" alt="" width="103" height="150" />This small extension will help to install Lightbox widget. Installation and configuration will take approximately 5 minutes.<a href="http://www.magentocommerce.com/extension/1487/magento-easy-lightbox">http://www.magentocommerce.com/extension/1487/magento-easy-lightbox </a></li>
<li><strong>3. Exploded Menu</strong><img class="alignleft size-thumbnail wp-image-5022" title="exploded-menu" src="http://inchoo.net/wp-content/uploads/2010/06/exploded-menu-150x112.png" alt="" width="150" height="112" />Replaces the standard single column drop down with a multi-column dropdown featuring 2nd and 3rd level menu items.<a href="http://www.magentocommerce.com/magento-connect/Raptor+Commerce+%28toby%29/extension/1345/raptor_explodedmenu">http://www.magentocommerce.com/magento-connect/Raptor+Commerce+%28toby%29/extension/1345/raptor_explodedmenu</a></li>
<li><strong>4. Magento Easy Tabs</strong><img class="alignleft size-thumbnail wp-image-5021" title="magento-easy-tabs" src="http://inchoo.net/wp-content/uploads/2010/06/magento-easy-tabs-150x101.png" alt="" width="150" height="101" />This small extension will help to add informational tabs on product page.  No files are replaced and no codding experience needed to install.<a href="http://www.magentocommerce.com/magento-connect/TemplatesMaster/extension/1725/magento-easytabs">http://www.magentocommerce.com/magento-connect/TemplatesMaster/extension/1725/magento-easytabs</a></li>
<li><strong>5. Canonical URL</strong><img class="alignleft size-thumbnail wp-image-5020" title="canonical-url" src="http://inchoo.net/wp-content/uploads/2010/06/canonical-url-150x112.png" alt="" width="150" height="112" />This extension adds the new canonical links to the head of your Magento pages.<a href="http://www.magentocommerce.com/magento-connect/Yoast/extension/906/canonical-url-s-for-magento">http://www.magentocommerce.com/magento-connect/Yoast/extension/906/canonical-url-s-for-magento</a></li>
<li><strong>6. Fooman Google Analytics Plus</strong><img class="alignleft size-thumbnail wp-image-5020" title="canonical-url" src="http://inchoo.net/wp-content/uploads/2010/06/canonical-url-150x112.png" alt="" width="150" height="112" />Additional features for the default GoogleAnalytics module. Track every individual page &#8211; including sections retrieved via AJAX during one-page-checkout<br />
Enter DomainName to track via the Magento back-end / check here if you should use it. Track the actual typed in keywords for adwords instead of only the term you bid on (this might not yet work due to a bug in Magento itself). Optionally track Adwords conversions for purchases</p>
<p><a href="http://www.magentocommerce.com/magento-connect/FOOMAN/extension/171/fooman-google-analytics-plus">http://www.magentocommerce.com/magento-connect/FOOMAN/extension/171/fooman-google-analytics-plus</a></li>
<li><strong>7. Delete orders</strong><img class="alignleft size-thumbnail wp-image-5018" title="delete-orders" src="http://inchoo.net/wp-content/uploads/2010/06/delete-orders-141x150.png" alt="" width="141" height="150" />Allows you to delete testing orders from the drop-down menu in the Admin panel.<a href="http://www.magentocommerce.com/magento-connect/Boutik+Circus/extension/873/delete-orders">http://www.magentocommerce.com/magento-connect/Boutik+Circus/extension/873/delete-orders</a></li>
<li><strong>8. uGiftCert</strong><img class="alignleft size-thumbnail wp-image-5017" title="gift-certificate" src="http://inchoo.net/wp-content/uploads/2010/06/gift-certificate-150x138.png" alt="" width="150" height="138" />Allow your customers to purchase and use Gift Certificates. <a href="http://www.magentocommerce.com/magento-connect/Unirgy/extension/751/unirgy_giftcert">http://www.magentocommerce.com/magento-connect/Unirgy/extension/751/unirgy_giftcert</a></li>
<li><strong>9.Featured products</strong><img class="alignleft size-thumbnail wp-image-5025" title="inchoo-featured-products" src="http://inchoo.net/wp-content/uploads/2010/06/inchoo-featured-products-150x87.png" alt="" width="150" height="87" />This extension gives your Magento ability for easy management of featured products. Frontend features include separate interface for listing of all featured products and a block usage for easy placement to the interfaces of your choice.<a href="http://www.magentocommerce.com/magento-connect/Inchoo/extension/2513/featured-products">http://www.magentocommerce.com/magento-connect/Inchoo/extension/2513/featured-products</a></li>
<li><strong>10. Enhanced Admin Products Grid</strong><img class="alignleft size-thumbnail wp-image-5016" title="enhanced-admin-product-grid" src="http://inchoo.net/wp-content/uploads/2010/06/enhanced-admin-product-grid-150x86.png" alt="" width="150" height="86" />Adds some exciting customizable features to the products grid like: Full Product Search, Grid Row Highlighter,Catalog Grid Thumbnails/Images,Mass Product Refresh etc.<a href="http://www.magentocommerce.com/magento-connect/WDCA/extension/748/enhanced-product-grid">http://www.magentocommerce.com/magento-connect/WDCA/extension/748/enhanced-product-grid</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/10-useful-magento-extensions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 useful magento extensions</title>
		<link>http://www.lakevillewebdesign.com/10-useful-magento-extensions-2/</link>
		<comments>http://www.lakevillewebdesign.com/10-useful-magento-extensions-2/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 18:19:51 +0000</pubDate>
		<dc:creator>Željko Prša</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=5015</guid>
		<description><![CDATA[Whether your web-shop is already generating revenue or it&#8217;s at it&#8217;s very beginning, it&#8217;s always good to enhance it where it&#8217;s needed especially if it&#8217;s for free. These 10 extensions for magento are here for their value and usefulness. Also, almost all of them exist for quite some time so they have been tested and [...]]]></description>
			<content:encoded><![CDATA[<p>Whether your web-shop is already generating revenue or it&#8217;s at it&#8217;s very beginning, it&#8217;s always good to enhance it where it&#8217;s needed especially if it&#8217;s for free.</p>
<p><span id="more-5015"></span><br />
These 10 extensions for magento are here for their value and usefulness. Also, almost all of them exist for quite some time so they have been tested and more importantly supported by their authors with the exception of the Easy Lightbox but it works with Magento 1.4.</p>
<p>One of them is our own product by <a href="http://inchoo.net/ecommerce/magento/featured-products-on-magento-frontpage/">Domagoj Potkoc</a>.</p>
<ul class="list-view">
<li><strong>1. Direct Resize</strong><img class="alignleft size-thumbnail wp-image-5024" title="direct-resize" src="http://inchoo.net/wp-content/uploads/2010/06/direct-resize-150x129.png" alt="" width="150" height="129" />Give the possibility to resize images without distorting them. You can specify a Width and a Height value as well as a ratio. Everyone dealing with images in Magento will appreciate this one for sure.<a href="http://www.magentocommerce.com/extension/153/direct-resize">http://www.magentocommerce.com/extension/153/direct-resize </a></li>
<li><strong>2. Magento Easy lightbox</strong><img class="alignleft size-thumbnail wp-image-5023" title="magento-easy-lightbox" src="http://inchoo.net/wp-content/uploads/2010/06/magento-easy-lightbox-103x150.png" alt="" width="103" height="150" />This small extension will help to install Lightbox widget. Installation and configuration will take approximately 5 minutes.<a href="http://www.magentocommerce.com/extension/1487/magento-easy-lightbox">http://www.magentocommerce.com/extension/1487/magento-easy-lightbox </a></li>
<li><strong>3. Exploded Menu</strong><img class="alignleft size-thumbnail wp-image-5022" title="exploded-menu" src="http://inchoo.net/wp-content/uploads/2010/06/exploded-menu-150x112.png" alt="" width="150" height="112" />Replaces the standard single column drop down with a multi-column dropdown featuring 2nd and 3rd level menu items.<a href="http://www.magentocommerce.com/magento-connect/Raptor+Commerce+%28toby%29/extension/1345/raptor_explodedmenu">http://www.magentocommerce.com/magento-connect/Raptor+Commerce+%28toby%29/extension/1345/raptor_explodedmenu</a></li>
<li><strong>4. Magento Easy Tabs</strong><img class="alignleft size-thumbnail wp-image-5021" title="magento-easy-tabs" src="http://inchoo.net/wp-content/uploads/2010/06/magento-easy-tabs-150x101.png" alt="" width="150" height="101" />This small extension will help to add informational tabs on product page.  No files are replaced and no codding experience needed to install.<a href="http://www.magentocommerce.com/magento-connect/TemplatesMaster/extension/1725/magento-easytabs">http://www.magentocommerce.com/magento-connect/TemplatesMaster/extension/1725/magento-easytabs</a></li>
<li><strong>5. Canonical URL</strong><img class="alignleft size-thumbnail wp-image-5020" title="canonical-url" src="http://inchoo.net/wp-content/uploads/2010/06/canonical-url-150x112.png" alt="" width="150" height="112" />This extension adds the new canonical links to the head of your Magento pages.<a href="http://www.magentocommerce.com/magento-connect/Yoast/extension/906/canonical-url-s-for-magento">http://www.magentocommerce.com/magento-connect/Yoast/extension/906/canonical-url-s-for-magento</a></li>
<li><strong>6. Fooman Google Analytics Plus</strong><img class="alignleft size-thumbnail wp-image-5020" title="canonical-url" src="http://inchoo.net/wp-content/uploads/2010/06/canonical-url-150x112.png" alt="" width="150" height="112" />Additional features for the default GoogleAnalytics module. Track every individual page &#8211; including sections retrieved via AJAX during one-page-checkout<br />
Enter DomainName to track via the Magento back-end / check here if you should use it. Track the actual typed in keywords for adwords instead of only the term you bid on (this might not yet work due to a bug in Magento itself). Optionally track Adwords conversions for purchases</p>
<p><a href="http://www.magentocommerce.com/magento-connect/FOOMAN/extension/171/fooman-google-analytics-plus">http://www.magentocommerce.com/magento-connect/FOOMAN/extension/171/fooman-google-analytics-plus</a></li>
<li><strong>7. Delete orders</strong><img class="alignleft size-thumbnail wp-image-5018" title="delete-orders" src="http://inchoo.net/wp-content/uploads/2010/06/delete-orders-141x150.png" alt="" width="141" height="150" />Allows you to delete testing orders from the drop-down menu in the Admin panel.<a href="http://www.magentocommerce.com/magento-connect/Boutik+Circus/extension/873/delete-orders">http://www.magentocommerce.com/magento-connect/Boutik+Circus/extension/873/delete-orders</a></li>
<li><strong>8. uGiftCert</strong><img class="alignleft size-thumbnail wp-image-5017" title="gift-certificate" src="http://inchoo.net/wp-content/uploads/2010/06/gift-certificate-150x138.png" alt="" width="150" height="138" />Allow your customers to purchase and use Gift Certificates. <a href="http://www.magentocommerce.com/magento-connect/Unirgy/extension/751/unirgy_giftcert">http://www.magentocommerce.com/magento-connect/Unirgy/extension/751/unirgy_giftcert</a></li>
<li><strong>9.Featured products</strong><img class="alignleft size-thumbnail wp-image-5025" title="inchoo-featured-products" src="http://inchoo.net/wp-content/uploads/2010/06/inchoo-featured-products-150x87.png" alt="" width="150" height="87" />This extension gives your Magento ability for easy management of featured products. Frontend features include separate interface for listing of all featured products and a block usage for easy placement to the interfaces of your choice.<a href="http://www.magentocommerce.com/magento-connect/Inchoo/extension/2513/featured-products">http://www.magentocommerce.com/magento-connect/Inchoo/extension/2513/featured-products</a></li>
<li><strong>10. Enhanced Admin Products Grid</strong><img class="alignleft size-thumbnail wp-image-5016" title="enhanced-admin-product-grid" src="http://inchoo.net/wp-content/uploads/2010/06/enhanced-admin-product-grid-150x86.png" alt="" width="150" height="86" />Adds some exciting customizable features to the products grid like: Full Product Search, Grid Row Highlighter,Catalog Grid Thumbnails/Images,Mass Product Refresh etc.<a href="http://www.magentocommerce.com/magento-connect/WDCA/extension/748/enhanced-product-grid">http://www.magentocommerce.com/magento-connect/WDCA/extension/748/enhanced-product-grid</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/10-useful-magento-extensions-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inchoo becomes Magento Professional Partner</title>
		<link>http://www.lakevillewebdesign.com/inchoo-becomes-magento-professional-partner/</link>
		<comments>http://www.lakevillewebdesign.com/inchoo-becomes-magento-professional-partner/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 09:22:37 +0000</pubDate>
		<dc:creator>Aron Stanic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=5103</guid>
		<description><![CDATA[Inchoo has officially become a Magento Professional Partner. With this step, Inchoo joins an international roster of Magento Solution Partners as the first partner in Southeastern Europe. After two years of dedicating ourselves to a great ecommerce platform that is Magento, it was about time we formalized the relationship. For those of you who have [...]]]></description>
			<content:encoded><![CDATA[<p>Inchoo has officially become a Magento Professional Partner. With this step, Inchoo joins an international roster of Magento Solution Partners as the first partner in Southeastern Europe.</p>
<p><span id="more-5103"></span></p>
<p>After two years of dedicating ourselves to a great ecommerce platform that is Magento, it was about time we <a title="Inchoo - Magento Professional Partner" href="http://www.magentocommerce.com/partners/find/solution-partners/croatia/" >formalized the relationship</a>.</p>
<p>For those of you who have been following us, this shouldn&#8217;t come as a surprise – we&#8217;ve passionately worked with all the strengths and weaknesses of Magento from its very beginning, contributing to the community of developers and Magento itself by often sharing some tips and tricks, code snippets and free extensions adding some features to the Community Edition.</p>
<p>When Magento launched the <a title="Magento Professional Edition" href="http://www.magentocommerce.com/product/professional-edition" >Professional Edition</a> in May, we saw it as a great opportunity to expand our services to small business owners looking for a bespoke ecommerce solution.</p>
<p>The <strong>Professional Edition</strong> comes with some new features that are not included out of the box with the Community Edition:</p>
<ul>
<li>Gift Certificates/Cards (both virtual and physical)</li>
<li>Reward Points System</li>
<li>Customer Store Credits</li>
<li>Strong Data Encryption</li>
</ul>
<p>You can check the Professional Edition demo store <a title="Professional Edition - Demo Store" href="http://pro-demo.magentocommerce.com/" >here</a> or go behind the scenes in the <a title="Professional Edition - Demo Admin" href="http://pro-admin.magentocommerce.com/index.php/admin/" >admin section</a>.</p>
<p>We look forward to embarking on new adventures with Magento.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/inchoo-becomes-magento-professional-partner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Media Queries &amp; Using Available Space</title>
		<link>http://www.lakevillewebdesign.com/css-media-queries-using-available%c2%a0space/</link>
		<comments>http://www.lakevillewebdesign.com/css-media-queries-using-available%c2%a0space/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 12:26:30 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6731</guid>
		<description><![CDATA[We&#8217;ve covered using CSS media queries to assign different stylesheets depending on browser window size. In that example, we changed the layout of the entire page based on the space available. It isn&#8217;t required that we make such drastic changes with this technique though, so in this tutorial we&#8217;ll go over a design tweak with [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve covered using CSS media queries to assign <a href="http://css-tricks.com/resolution-specific-stylesheets/">different stylesheets depending on browser window size</a>. In that example, we changed the layout of the entire page based on the space available. It isn&#8217;t required that we make such drastic changes with this technique though, so in this tutorial we&#8217;ll go over a design tweak with a smaller scope. We&#8217;ll also cover the syntax for using media queries within a single stylesheet and more examples of that.</p><p><span id="more-6731"></span></p><p>The CSS media query syntax for calling an external stylesheet is like this:</p><pre><code class="html">&lt;link rel='stylesheet' media='screen and (min-width: 701px) and (max-width: 900px)' href='css/medium.css' /&gt;</code></pre><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/mediaquerylink.png" alt="" width="570" height="95" class="alignnone size-full wp-image-6733" /></p><p>You may be familiar with the media attribute, normally being &#8220;screen&#8221; or &#8220;print&#8221; or even a comma separated list, like &#8220;screen, projection&#8221;. The media attribute can be brought directly inside a CSS file, like this:</p><pre><code class="css">@media screen {
      body {
          width: 75%;
      }
}

@media print {
      body {
          width: 100%;
      }
}</code></pre><p>Likewise, you can use more advanced CSS media queries like:</p><pre><code class="css">@media all and (max-width: 699px) and (min-width: 520px), (min-width: 1151px) {
  body {
    background: #ccc;
  }
}</code></pre><p>You may use as many media queries as you would like in a CSS file. Note that you may use the <strong>and</strong> operator to require multiple queries to be true, but you have to use the comma (,) as the <strong>or</strong> operator to separate groups of multiple queries. The <strong>not</strong> keyword can be used to alter the logic as well.</p><h3>Example</h3><p>Let&#8217;s say we have a fluid width design where the sidebar is 35% of the width of the page. That means depending on the width of the browser window, that sidebar could be quite narrow or quite wide, that&#8217;s just the nature of fluid width designs. With CSS media queries, we can say &#8220;if the browser is really narrow, do this, if it&#8217;s wider, do this, if it&#8217;s really wide, do this.&#8221; Note that measuring width isn&#8217;t the only thing media queries can do, it&#8217;s just a particularly practical example.</p><p>In our example sidebar, we are going have a list of names of the Super Team which function as email links. The HTML is fairly simple:</p><pre><code class="html">&lt;ul id="nav"&gt;
   &lt;li&gt;&lt;a data-email="chriscoyier@gmail.com" href="mailto:chriscoyier@gmail.com"&gt;Chris Coyier&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a data-email="isuredo@likeher.com" href="mailto:isuredo@likeher.com"&gt;Elisabeth Moss&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a data-email="marry@me.com" href="mailto:marry@me.com"&gt;Amanda Righetti&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</code></pre><p>It&#8217;s just a list of links. The <tt>href</tt> attribute is a <tt>mailto:</tt> link. The only thing you might find unusual is the <tt>data-email</tt> attribute. In HTML5, you can <a href="http://dev.w3.org/html5/spec/Overview.html#custom-data-attribute">use attributes prefixed with <tt>data-</tt></a> to store information, and it&#8217;s perfectly valid. We are going to want to use that data later, but the <tt>href</tt> value isn&#8217;t quite what we need having that <tt>mailto:</tt> link, hence the data attribute.</p><p>The default styling for the list will be this:</p><pre><code class="css">#sidebar ul li a {
  color: #900;
  text-decoration: none;
  padding: 3px 0;
  display: block;
}</code></pre><div class="image-wrap"><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/mediaqueries-narrowest.png" alt="" title="mediaqueries-narrowest" width="297" height="193" class="alignnone size-full wp-image-6738" /><p>At narrow browser window widths, the default styling applies. Just a list of links.</p></div><p>When the browser gets a bit wider, in our example between 520 and 699px, we&#8217;re going to use that extra space that opens up in the sidebar to apply an email icon to each list item.</p><pre><code class="css">@media all and (max-width: 699px) and (min-width: 520px) {
  #sidebar ul li a {
    padding-left: 21px;
    background: url(../images/email.png) left center no-repeat;
  }
}</code></pre><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/mediaqueries-justicon.png" alt="" title="mediaqueries-justicon" width="330" height="190" class="alignnone size-full wp-image-6739" /><p>Icons are applied to the list items as we know that we have room for them now.</p></div><p>As we get wider, from 700 to 1000px, we&#8217;ll use the extra space again to preface the links with the text &#8220;Email: &#8221; (using <a href="http://css-tricks.com/css-content/">CSS Content</a>) instead of just the icon.</p><pre><code class="css">@media all and (max-width: 1000px) and (min-width: 700px) {
  #sidebar ul li a:before {
    content: "Email: ";
    font-style: italic;
    color: #666;
  }
}</code></pre><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/mediaqueries-emailpreface.png" alt="" title="mediaqueries-emailpreface" width="388" height="191" class="alignnone size-full wp-image-6740" /><p>Using CSS content / psuedo element, we can preface the link with descriptive text without altering the content in the HTML</p></div><p>Wider still, at browser window widths above 1001px, we&#8217;ll literally append the email address to the links. This is where that HTML5 data attribute comes in.</p><pre><code class="css">@media all and (min-width: 1001px) {
  #sidebar ul li a:after {
    content: " (" attr(data-email) ")";
    font-size: 11px;
    font-style: italic;
    color: #666;
  }
}</code></pre><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/mediaqueries-emailonly.png" alt="" title="mediaqueries-emailonly" width="447" height="200" class="alignnone size-full wp-image-6741" /><p>Again the content is adjusted, the email is added as a pseduo element purely with CSS.</p></div><p>At really wide widths, above 1151px, we will again add the icon as we used before. The cool part here is that we don&#8217;t have to write an additional media query segment, we can just append an additional media query to our already existing one using a comma (behaves like OR operator) on the medium-width one we already wrote.</p><pre><code class="css">@media all and (max-width: 699px) and (min-width: 520px), (min-width: 1151px) {
  #sidebar ul li a {
    padding-left: 21px;
    background: url(../images/email.png) left center no-repeat;
  }
}</code></pre><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/mediaqueries-widest.png" alt="" title="mediaqueries-widest" width="465" /><p>At the widest, we can use all the flair we have available.</p></div><h4>All together now</h4><pre><code class="css">#sidebar ul li a {
  color: #900;
  text-decoration: none;
  padding: 3px 0;
  display: block;
}

@media all and (min-width: 1001px) {
  #sidebar ul li a:after {
    content: " (" attr(data-email) ")";
    font-size: 11px;
    font-style: italic;
    color: #666;
  }
}

@media all and (max-width: 1000px) and (min-width: 700px) {
  #sidebar ul li a:before {
    content: "Email: ";
    font-style: italic;
    color: #666;
  }
}

@media all and (max-width: 699px) and (min-width: 520px), (min-width: 1151px) {
  #sidebar ul li a {
    padding-left: 21px;
    background: url(../images/email.png) left center no-repeat;
  }
}</code></pre><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/mediaqueries-alltogether.png" alt="" title="mediaqueries-alltogether" width="570" height="751" class="alignnone size-full wp-image-6744" /></p><h4>Video demo</h4><p><object width="570" height="164"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=13048400&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=13048400&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=ff9933&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="570" height="164"></embed></object></p><h4>Live demo / download</h4><p><a href="http://css-tricks.com/examples/MediaQueriesSidebar/" class="button">View Demo</a> &nbsp; <a href="http://css-tricks.com/examples/MediaQueriesSidebar.zip" class="button">Download Files</a></p><h3>Browser support</h3><p>The browser support for media queries is surprisingly decent. For the queries in this particular demo (utilizing min and max widths), current version of Firefox, Safari (including Mobile), Chrome, and Opera are all supporting it. Internet Explorer 9 will be supporting it, but 8 and below do not. If I wanted to deliver the best possible experience in IE 8 and below, I&#8217;d either fake it with JavaScript like I did in <a href="http://css-tricks.com/resolution-specific-stylesheets/">this article</a>, or use an <a href="http://css-tricks.com/how-to-create-an-ie-only-stylesheet/">IE specific stylesheet</a> and style it in the same style as the most common browser width according to analytics.</p><p>Note that milage may vary on individual types of queries. For example, the iPhone supports the width queries but <a href="http://www.quirksmode.org/blog/archives/2010/04/the_orientation.html">does not support</a> the orientation queries. The iPad supports both.</p><h3>More on media queries</h3><p>Measuring width is a nice practical example of media queries, but it isn&#8217;t the only thing available. Below are some more of them (not a comprehensive list). <a href="http://www.w3.org/TR/css3-mediaqueries/">The spec</a> lists lots more.</p><h4>Types</h4><p>HTML4 had these media types, which are all still valid: <tt>aural</tt>, <tt>braille</tt>, <tt>handheld</tt>, <tt>print</tt>, <tt>projection</tt>, <tt>screen</tt>, <tt>tty</tt>, and <tt>tv</tt>.  HTML5 may include more as it needs them. The spec includes ‘3d-glasses’, which is awesome. The <tt>all</tt> keyword will target all types.</p><pre><code class="css">@media screen, projection { ... }</code></pre><h4>Dimensions</h4><p>You get <tt>height</tt> and <tt>width</tt>, which query against the current browser window height and width. You could use them as-is, but that would probably be rare. Both of them accept min/max prefixes, so more commonly you&#8217;d used them as <tt>min-width</tt>, <tt>max-width</tt>, <tt>min-height</tt>, <tt>max-height</tt>.</p><p>There is also <tt>device-width</tt> and <tt>device-height</tt>, which also provide <tt>min-device-width</tt>, <tt>max-device-width</tt>, <tt>min-device-height</tt>, and <tt>max-device-height</tt>.</p><pre><code class="css">@media (min-device-width: 640px) { ... }</code></pre><h4>Orientation / Aspect Ratio</h4><p>You can query against the aspect ratio of the screen as well with <tt>device-aspect-ratio</tt>.</p><pre><code class="css">@media screen and (device-aspect-ratio: 16/9) { ... }</code></pre><p>Or if the screen is in portrait (height larger than width) or landscape (width larger than height) mode.</p><pre><code class="css">@media (orientation:portrait) { ... }</code></pre><h4>Color</h4><p>You can query on if the screen is in color or not and details about that.</p><pre><code class="css">@media (color) { /* Screen is in color */ }

@media (min-color-index: 256) { /* Screen has at least 256 colors */ }

@media (monochrome) { /* Screen is monochrome */ }</code></pre><h3>Elsewhere</h3><p>This has been a hot topic lately. You can hear some <a href="http://5by5.tv/bigwebshow/9">smart people talk about it</a> on The Big Web Show. Here are some other cool uses of it going around recently:</p><ul><li>Andy Clarke <a href="http://forabeautifulweb.com/blog/about/proportional_leading_with_css3_media_queries/">shows how</a> the the longer the line length the more readable text can be with taller line height.</li><li><a href="http://hicksdesign.co.uk/">Jon Hick&#8217;s site</a> rearranges itself to have double sidebars, single sidebar, or no sidebar according to available space. It even scales down to mobile sizes nicely.</li><li>Ethan Marcotte&#8217;s demo for A List Apart doesn&#8217;t use media queries, but shows other ways a design can be <a href="http://www.alistapart.com/d/responsive-web-design/ex/ex-site-flexible.html">effectively flexible</a>.</li><li><a href="http://colly.com/">Simon Collison&#8217;s site</a> rearranges it&#8217;s grid to fit different browser sizes.</li><li>Panic uses <a href="http://www.campaignmonitor.com/blog/post/3116/what-you-can-learn-from-panics-email-marketing/">@media in their HTML emails</a> to make them look awesome in desktop or mobile email clients.</li></ul> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/css-media-queries-using-available%c2%a0space/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to create Magento payment module</title>
		<link>http://www.lakevillewebdesign.com/how-to-create-magento-payment-module/</link>
		<comments>http://www.lakevillewebdesign.com/how-to-create-magento-payment-module/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 23:00:25 +0000</pubDate>
		<dc:creator>Domagoj Potkoc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4700</guid>
		<description><![CDATA[Here is small example which will explain how to create a simple Magento payment module. I hope that you know how to create magento module and I will skip this step. First of all, you have to create in etc folder config.xml file with next content: &#060; ?xml version=&#034;1.0&#034; encoding=&#034;UTF-8&#034;?&#062; &#060;config&#062; &#060;modules&#062; &#060;inchoo_mycheckout&#062; &#060;version&#062;1.0.0&#060;/version&#062; &#060;/inchoo_mycheckout&#062; [...]]]></description>
			<content:encoded><![CDATA[<p>Here is small example which will explain how to create a simple Magento payment module.</p>
<p><span id="more-4700"></span></p>
<p>I hope that you know how to create magento module and I will skip this step.<br />
<strong>First of all</strong>, you have to create in etc folder config.xml file with next content:</p>
<pre class="brush: xml">

&lt; ?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;config&gt;
&lt;modules&gt;
&lt;inchoo_mycheckout&gt;
&lt;version&gt;1.0.0&lt;/version&gt;
&lt;/inchoo_mycheckout&gt;
&lt;/modules&gt;

&lt;global&gt;
&lt;models&gt;
&lt;mycheckout&gt;
&lt;class&gt;Inchoo_Mycheckout_Model&lt;/class&gt;
&lt;/mycheckout&gt;
&lt;/models&gt;
&lt;helpers&gt;
&lt;mycheckout&gt;
&lt;class&gt;Inchoo_Mycheckout_Helper&lt;/class&gt;
&lt;/mycheckout&gt;

&lt;/helpers&gt;
&lt;blocks&gt;
&lt;mycheckout&gt;
&lt;class&gt;Inchoo_Mycheckout_Block&lt;/class&gt;
&lt;/mycheckout&gt;
&lt;/blocks&gt;
&lt;/global&gt;

&lt;default&gt;
&lt;payment&gt;
&lt;mycheckout&gt;
&lt;model&gt;mycheckout/standard&lt;/model&gt;// very important thing, here you select the model for your payment method
&lt;active&gt;1&lt;/active&gt;
&lt;order_status&gt;pending&lt;/order_status&gt;
&lt;title&gt;CUSTOM CARD&lt;/title&gt;
&lt;payment_action&gt;sale&lt;/payment_action&gt;
&lt;submit_url&gt;https://someurl.com&lt;/submit_url&gt;
&lt;merchant_id&gt;Insert merchant id&lt;/merchant_id&gt;
&lt;allowspecific&gt;0&lt;/allowspecific&gt;
&lt;sort_order&gt;1&lt;/sort_order&gt;
&lt;/mycheckout&gt;
&lt;/payment&gt;
&lt;/default&gt;

&lt;frontend&gt;
&lt;routers&gt;
&lt;mycheckout&gt;
&lt;use&gt;standard&lt;/use&gt;
&lt;args&gt;
&lt;module&gt;Inchoo_Mycheckout&lt;/module&gt;
&lt;frontname&gt;customcard&lt;/frontname&gt;
&lt;/args&gt;
&lt;/mycheckout&gt;
&lt;/routers&gt;
&lt;/frontend&gt;
&lt;/config&gt;
</pre>
<p><strong>Next step:</strong> you have to create system.xml file also in etc folder with next content:</p>
<pre class="brush: xml">
&lt; ?xml version=&quot;1.0&quot;?&gt;
&lt;config&gt;
&lt;sections&gt;
&lt;payment&gt;
&lt;groups&gt;
&lt;mycheckout translate=&quot;label comment&quot; module=&quot;paypal&quot;&gt;
&lt;label&gt;Custom CARD MyCheckOut&lt;/label&gt;
&lt;frontend_type&gt;text&lt;/frontend_type&gt;
&lt;sort_order&gt;0&lt;/sort_order&gt;
&lt;show_in_default&gt;1&lt;/show_in_default&gt;
&lt;show_in_website&gt;1&lt;/show_in_website&gt;
&lt;show_in_store&gt;1&lt;/show_in_store&gt;
&lt;fields&gt;
&lt;active translate=&quot;label&quot;&gt;
&lt;label&gt;Enabled&lt;/label&gt;
&lt;frontend_type&gt;select&lt;/frontend_type&gt;
&lt;source_model&gt;adminhtml/system_config_source_yesno&lt;/source_model&gt;
&lt;sort_order&gt;10&lt;/sort_order&gt;
&lt;show_in_default&gt;1&lt;/show_in_default&gt;
&lt;show_in_website&gt;1&lt;/show_in_website&gt;
&lt;show_in_store&gt;0&lt;/show_in_store&gt;
&lt;/active&gt;
&lt;title translate=&quot;label&quot;&gt;
&lt;label&gt;Title&lt;/label&gt;
&lt;frontend_type&gt;text&lt;/frontend_type&gt;
&lt;sort_order&gt;20&lt;/sort_order&gt;
&lt;show_in_default&gt;1&lt;/show_in_default&gt;
&lt;show_in_website&gt;1&lt;/show_in_website&gt;
&lt;show_in_store&gt;1&lt;/show_in_store&gt;

&lt;/title&gt;
&lt;order_status translate=&quot;label&quot;&gt;
&lt;label&gt;New Order Status&lt;/label&gt;
&lt;frontend_type&gt;select&lt;/frontend_type&gt;
&lt;source_model&gt;adminhtml/system_config_source_order_status&lt;/source_model&gt;
&lt;sort_order&gt;50&lt;/sort_order&gt;
&lt;show_in_default&gt;1&lt;/show_in_default&gt;
&lt;show_in_website&gt;1&lt;/show_in_website&gt;
&lt;show_in_store&gt;0&lt;/show_in_store&gt;
&lt;/order_status&gt;
&lt;submit_url&gt;
&lt;label&gt;Gateway URL&lt;/label&gt;
&lt;frontend_type&gt;text&lt;/frontend_type&gt;
&lt;sort_order&gt;58&lt;/sort_order&gt;
&lt;show_in_default&gt;1&lt;/show_in_default&gt;
&lt;show_in_website&gt;1&lt;/show_in_website&gt;
&lt;show_in_store&gt;0&lt;/show_in_store&gt;
&lt;/submit_url&gt;
&lt;merchant_id&gt;
&lt;label&gt;Merchant ID&lt;/label&gt;
&lt;frontend_type&gt;text&lt;/frontend_type&gt;
&lt;sort_order&gt;59&lt;/sort_order&gt;
&lt;show_in_default&gt;1&lt;/show_in_default&gt;
&lt;show_in_website&gt;1&lt;/show_in_website&gt;
&lt;show_in_store&gt;0&lt;/show_in_store&gt;
&lt;/merchant_id&gt;
&lt;allowspecific translate=&quot;label&quot;&gt;
&lt;label&gt;Payment Applicable From&lt;/label&gt;
&lt;frontend_type&gt;select&lt;/frontend_type&gt;
&lt;sort_order&gt;60&lt;/sort_order&gt;
&lt;source_model&gt;adminhtml/system_config_source_payment_allspecificcountries&lt;/source_model&gt;
&lt;show_in_default&gt;1&lt;/show_in_default&gt;
&lt;show_in_website&gt;1&lt;/show_in_website&gt;
&lt;show_in_store&gt;0&lt;/show_in_store&gt;
&lt;/allowspecific&gt;
&lt;specificcountry translate=&quot;label&quot;&gt;
&lt;label&gt;Countries Payment Applicable From&lt;/label&gt;
&lt;frontend_type&gt;multiselect&lt;/frontend_type&gt;
&lt;sort_order&gt;70&lt;/sort_order&gt;
&lt;source_model&gt;adminhtml/system_config_source_country&lt;/source_model&gt;
&lt;show_in_default&gt;1&lt;/show_in_default&gt;
&lt;show_in_website&gt;1&lt;/show_in_website&gt;
&lt;show_in_store&gt;0&lt;/show_in_store&gt;
&lt;depends&gt;&lt;allowspecific&gt;1&lt;/allowspecific&gt;&lt;/depends&gt;
&lt;/specificcountry&gt;
&lt;sort_order translate=&quot;label&quot;&gt;
&lt;label&gt;Sort Order&lt;/label&gt;
&lt;frontend_type&gt;text&lt;/frontend_type&gt;
&lt;/sort_order&gt;&lt;sort_order&gt;100&lt;/sort_order&gt;
&lt;show_in_default&gt;1&lt;/show_in_default&gt;
&lt;show_in_website&gt;1&lt;/show_in_website&gt;
&lt;show_in_store&gt;0&lt;/show_in_store&gt;

&lt;/fields&gt;
&lt;/mycheckout&gt;
&lt;/groups&gt;
&lt;/payment&gt;

&lt;/sections&gt;
&lt;/config&gt;
</pre>
<p>In this system.xml file we create options for this payment method. These options you will see in admin section under payment method, also if you need additional options you can add them.</p>
<p><strong>Last step: </strong>is creating model in folder model with file-name standard.php. This model is defined in config.xml file. Here is example:</p>
<pre class="brush: php">

&lt; ?php

class Inchoo_Mycheckout_Model_Standard extends Mage_Payment_Model_Method_Abstract
{

protected $_code = &#039;mycheckout&#039;;

protected $_isInitializeNeeded      = true;
protected $_canUseInternal          = false;
protected $_canUseForMultishipping  = false;

/**
* Return Order place redirect url
*
* @return string
*/
public function getOrderPlaceRedirectUrl()
{
//when you click on place order you will be redirected on this url, if you don&#039;t want this action remove this method
return Mage::getUrl(&#039;customcard/standard/redirect&#039;, array(&#039;_secure&#039; =&gt; true));
}

}
</pre>
<p>If your method redirect when customer click on checkout button <strong>place order</strong> you have to create (customcard/standard/redirect) <strong>standard</strong> controller with  method <strong>redirectAction</strong> and etc. This page will create html form which will send POST data to payment gateway.  All data which you need for creating this form you can get from Magento model <strong>$session = Mage::getSingleton(&#8216;checkout/session&#8217;);</strong> and etc.</p>
<p>When you finish everything you will get next option in admin section:</p>
<p><img class="alignnone size-full wp-image-5109" title="Custom Payment Interface in Administration" src="http://inchoo.net/wp-content/uploads/2010/07/custom-payment.png" alt="" width="620" height="589" /></p>
<p>I hope that will be helpful <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/how-to-create-magento-payment-module/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Content</title>
		<link>http://www.lakevillewebdesign.com/css%c2%a0content/</link>
		<comments>http://www.lakevillewebdesign.com/css%c2%a0content/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 16:46:41 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6555</guid>
		<description><![CDATA[CSS has a property called content. It can only be used with the pseudo elements :after and :before. It is written like a pseudo selector (with the colon), but it&#8217;s called a pseudo element because it&#8217;s not actually selecting anything that exists on the page but adding something new to the page. This is what [...]]]></description>
			<content:encoded><![CDATA[<p>CSS has a property called <tt>content</tt>. It can only be used with the pseudo elements <tt>:after</tt> and <tt>:before</tt>. It is written like a pseudo selector (with the colon), but it&#8217;s called a pseudo element because it&#8217;s not actually selecting anything that exists on the page but adding something new to the page. This is what it looks like:</p><pre><code class="css">.email-address:before {
   content: "Email address: ";
}</code></pre><p>With this CSS in place, we could have this HTML:</p><pre><code class="html">&lt;ul&gt;
   &lt;li class="email-address"&gt;chriscoyier@gmail.com&lt;/li&gt;
&lt;/ul&gt;</code></pre><p>And the output would be like:</p><p>&bull; Email address: chriscoyier@gmail.com</p><p>Maybe that example doesn&#8217;t get you drooling, but pseduo element content can be quite useful and do cool things. Let&#8217;s go through some ideas and considerations.</p><p><span id="more-6555"></span></p><h3>Hey! That&#8217;s content not design!</h3><p>The first concern might be that of a separation-between-content-and-design purist. You are literally adding text content to the page with CSS content, and that breaks that barrier. The spec is done and the idea implemented, but that doesn&#8217;t mean it&#8217;s not worth discussing. If you have an opinion about CSS content and its use, please share in the comments.</p><p>I think it&#8217;s awesome and perfectly suited for CSS. Consider the example above where we preface all elements with a class of <tt>email-address</tt> with the text &#8220;Email address: &#8220;. That is a design decision, where for the clarity of content, it was decided that having that text before email addresses made the content more clear. Perhaps in a redesign of the site, there was less room where those email addresses are being displayed and it was decided that instead of prefacing them with text, a small icon would be used instead. This fits with the idea of CSS, in that the HTML content doesn&#8217;t need to change at all, this change could be solely accomplished with CSS.</p><p>I&#8217;m going to publish an article tomorrow with this kind of idea.</p><h3>Using Special Characters</h3><p>If you need to use a special character in the CSS content, it&#8217;s kinda weird. How I do it is I figure out what the ASCII number is for the symbol. <a href="http://css-tricks.com/snippets/html/glyphs/">This chart of glyphs</a> is handy. So on that chart the copyright &copy; symbol is &amp;#169; &#8211; so the ASCII number is 169. Then I drop that number in <a href="http://www.evotech.net/articles/testjsentities.html">the Entity Conversion Calculator</a> which will convert it into what you need for CSS.</p><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/converstioncalc.png" alt="" title="converstioncalc" width="485" height="236" class="alignnone size-full wp-image-6757" /></p><p>Not pretty, but it works.</p></div><p>Here&#8217;s some random useful ones:</p><p>\2018 &#8211; Left Single Smart Quote<br /> \2019 &#8211; Right Single Smart Quote<br /> \00A9 &#8211; Copyright<br /> \2713 &#8211; Checkmark<br /> \2192 &#8211; Right arrow<br /> \2190 &#8211; Left arrow</p><h3>Example Trick: Checkmark visited links</h3><p>Mark your visited links with checkmarks:</p><pre><code class="css">#main-content a:visited:before {
   content:  "\2713 ";
}</code></pre><h3>Using Attributes</h3><p>You are able to insert attributes of the elements you are targeting as content. For example, an anchor link might have a title attribute:</p><pre><code class="html">&lt;a title="A web design community." href="http://css-tricks.com"&gt;CSS-Tricks&lt;/a&gt;</code></pre><p>You can access that title attribute from the content property like:</p><pre><code class="css">a:before {
   content: attr(title) ": ";
}</code></pre><p>Any attribute can be targeted as such, in the format <tt>attr(name-of-attribute)</tt>. If you&#8217;d like to insert something into the HTML to use for a CSS content purpose (but nothing else), you could use the <a href="http://dev.w3.org/html5/spec/Overview.html#custom-data-attribute">new <tt>data-</tt> attribute prefix in HTML5</a>.</p><h3>Example Trick: CSS3 tooltips</h3><p>Tooltips for links based on the <tt>title</tt> attribute:</p><pre><code class="css">a {
  color: #900;
  text-decoration: none;
}

a:hover {
  color: red;
  position: relative;
}

a[title]:hover:after {
  content: attr(title);
  padding: 4px 8px;
  color: #333;
  position: absolute;
  left: 0;
  top: 100%;
  white-space: nowrap;
  z-index: 20px;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  border-radius: 5px;
  -moz-box-shadow: 0px 0px 4px #222;
  -webkit-box-shadow: 0px 0px 4px #222;
  box-shadow: 0px 0px 4px #222;
  background-image: -moz-linear-gradient(top, #eeeeee, #cccccc);
  background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0, #eeeeee),color-stop(1, #cccccc));
}</code></pre><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/tooltip-good-sm.png" alt="" title="tooltip-good-sm" width="299" height="120" class="alignnone size-full wp-image-6768" /></div><p>Now this example uses the <tt>title</tt> attribute, and other examples like this that you find around the web also use the title attribute. It&#8217;s probably the correct one to use. However, do note that browsers have their own tooltip popups that they do. When that comes up, it will cover this, and look weird. I tried to take a screenshot of the issue but there it wasn&#8217;t letting me for some reason. There is no way to suppress this, other than just not using the <tt>title</tt> attribute. HTML5 <tt>data-</tt> attributes, again, could be useful here.</p><h3>Points to consider</h3><ul><li>Firebug can&#8217;t yet target pseduo elements yet. The web inspector in WebKit browsers can target them, but don&#8217;t show their property/values. I heard the IE dev tools could target them too, but not sure about the property/values.</li><li>In WebKit, they have to be block level to be rotated. Firefox can rotate inline elements/pseudo-elements.</li><li>In Firefox 3.0, pseudo elements can&#8217;t be absolutely positioned.</li><li>They cannot be transitioned or animated.</li></ul><h3>Example Trick: Fancy email link popouts</h3><p>I had an idea I wanted to try where you would have a vertical list of names, and as you moused over them, their email addresses would slide out from underneath them. To have the HTML be as clean as possible, I thought it would be cool to use the an <tt>:after</tt> pseudo element and a <tt>-webkit-transition</tt> to make it happen. But, alas, you cannot animate or transition a pseudo element.</p><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/slideoutemaillink.png" alt="" title="slideoutemaillink" width="414" height="228" class="alignnone size-full wp-image-6763" /></div><p>Using the :after/content method, I got an example working it just doesn&#8217;t slide out like I thought would be cool. Using <tt>&lt;span></tt>s I got the idea working, also in the demo page.</p><p><a href="http://css-tricks.com/examples/CSSContentLinks/" class="button">View Demo</a></p><h3>Example trick: display full links in print stylesheets</h3><pre><code class="css">@media print {
     #main-content a[href]:after { " (" attr(href) ") "; }
}</code></pre><h3>Browser support / Accessibility</h3><p>All the major browsers (Firefox 3+, Safari 3+, Chrome 3+, Opera 10+, and Internet Explorer 8+) support CSS content with the :after/:before pseudo elements and the spec is in it&#8217;s full candidate recommendation status.</p><p>Regarding accessibility, I&#8217;m just not 100% sure what the situation was. I was trying to use VoiceOver with Safari on my Mac with the <a href="http://css-tricks.com/examples/CSSContentLinks/">email popout links demo</a>. For best accessibility, I would think the goal would be to get it to read the whole text, including the CSS content being added. I had trouble getting it to do that, but I thought I did get it to do it once somehow. I was really bad at using VoiceOver and found it frustrating to get it to do what I was trying to do even at the most basic levels. If someone knows more about accessibility as it relates to CSS content, I&#8217;m sure we&#8217;d all love to know more.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/css%c2%a0content/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Fourth!</title>
		<link>http://www.lakevillewebdesign.com/happy%c2%a0fourth/</link>
		<comments>http://www.lakevillewebdesign.com/happy%c2%a0fourth/#comments</comments>
		<pubDate>Sun, 04 Jul 2010 13:57:41 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6751</guid>
		<description><![CDATA[Today is America&#8217;s birthday and also (more importantly) the birthday of CSS-Tricks, which turns 3 today. If it was a human being, that means it would be starting to string together sentences of five words or more, socializing well with others, and not wetting himself most nights. I guess it still has some work to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/exalthim/2641315716/" title="A little fireworks display by Mr.Thomas, on Flickr"><img src="http://farm4.static.flickr.com/3174/2641315716_949ed3b8ca.jpg" width="428" height="500" alt="A little fireworks display"></a></p><p>Today is America&#8217;s birthday and also (more importantly) the birthday of CSS-Tricks, which turns 3 today. If it was a human being, that means it would be starting to string together sentences of five words or more, socializing well with others, and not wetting himself most nights. I guess it still has some work to do.</p><p><span id="more-6751"></span></p><p>Last year I did a giveaway. Sorry to disappoint but this kinda sneaked up on me and I didn&#8217;t prepare anything. Besides, I think comment-to-win style giveaways are a little hokey. I have some things in the early stages of planning that will be far more interesting opportunities to win stuff.</p><p>I&#8217;d like to share some milestones with you. RSS feed subscribers are at a solid WTF.</p><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/07/feedburner.png" alt="" title="feedburner" width="504" height="133" class="alignnone size-full wp-image-6753" /></p><p>What?</p></div><p>I&#8217;m sure there are a lot though, so thanks to everyone for caring enough about this site to subscribe. The screencasts have been still trending downwards. I think I&#8217;m still going to try and make 100 though, just because that is a cool round number.</p><p>I&#8217;d share some other analytic data with you, but honestly, there isn&#8217;t all that much interesting to share. People come from all over the world. India is second behind the U.S. More than half the visitors use Firefox. Chrome is bigger than Safari. I serve about 2 million pageviews a month. I kinda don&#8217;t care that much about analytics. If you have a web app, you should care deeply about it. If you have a blog, you should close your Google Analytics tab and write.</p><p>I&#8217;m fairly happy with the page load speed (<a href="http://wordpress.org/extend/plugins/w3-total-cache/">caching</a> and the <a href="http://www.netdna.com/">CDN</a> help) but I gotta do something about the method I use to grab my latest Twitter update as that&#8217;s usually the slowest thing which is dumb for something so trivial.</p><p>We&#8217;re now in full swing of Summer, and I&#8217;m basically as busy as I&#8217;ve ever been. Fair warning, things might slow down a little around here for a little bit. Never fear though, this site is a part of me, and will be alive and kicking as long as I am. The current design of this site has lasted quite a while and I&#8217;m starting to get the re-align bug a little bit again. I wouldn&#8217;t mess with the design just to mess with it, I actually have some new ideas, so I wouldn&#8217;t be surprised if that dropped maybe in early Fall or so.</p><p>For this lovely long weekend some of us have, you should go see The Last Airbender despite the terrible reviews. My uncle <a href="http://chriscoyier.net/2009/04/11/lethal-lithics-the-last-airbender/">made the stone weaponry</a> for the film. Being a fan of the Nickelodean kid&#8217;s show really helped me like the movie I think, it might be confusing otherwise.</p><p>Lastly and most importantly, THANK YOU for being a part of this &#8220;web design community.&#8221;</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/happy%c2%a0fourth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Five Questions with Jeff Starr</title>
		<link>http://www.lakevillewebdesign.com/five-questions-with-jeff%c2%a0starr/</link>
		<comments>http://www.lakevillewebdesign.com/five-questions-with-jeff%c2%a0starr/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 13:11:31 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6720</guid>
		<description><![CDATA[I first knew of Jeff through his website Perishable Press, which has long been a fantastic web design resource blog focusing on CSS, WordPress, and a lot of hard-to-find-elsewhere .htaccess stuff along with a good amount of Jeff&#8217;s personality (which I consider to be a prerequisite of any good blog) . As you may know, [...]]]></description>
			<content:encoded><![CDATA[<p>I first knew of Jeff through his website <a href="http://perishablepress.com/">Perishable Press</a>, which has long been a fantastic web design resource blog focusing on CSS, WordPress, and a lot of hard-to-find-elsewhere .htaccess stuff along with a good amount of Jeff&#8217;s personality (which I consider to be a prerequisite of any good blog) . As you may know, Jeff and I co-author <a href="http://digwp.com">Digging Into WordPress</a> together, both the book and the blog. Jeff is really a get-things-done kinda guy and I&#8217;ve always admired that about him. I thought I&#8217;d get him to do an interview where I could ask him some things I&#8217;d never asked him before.</p><p><span id="more-6720"></span></p><h4><span>*</span><strong>Chris:</strong> Your writing style is extremely comprehensive. For example, you recently wrote an article about <a href="http://perishablepress.com/press/2010/02/22/css3-border-properties/">CSS border rules</a>. It&#8217;s not an overview or tutorial, but more of an encyclopedic approach documenting these properties. Is this a conscious choice? Or just &#8220;your style&#8221;?</h4><p><strong>Jeff:</strong> That particular post was one of my lazy &#8220;note-dumps&#8221; with a quick intro and closing slapped on. Typically, I will take a post from that point and continue to flesh it out with as much relevant information as possible. This usually results in longer articles that cover more ground and/or go into greater depth. It&#8217;s always a matter of addressing the target audience where they&#8217;re at, which is generally an educated guess. How much do you assume your readers already know? Do you begin with how to turn on the computer and work your way to the point, or just assume they&#8217;re exactly where you&#8217;re at and deliver the goods? I think a lot of my articles try too hard at catering to the least common denominator when they would probably be just as useful if I had cut directly to the point. I think finding the balance is key to writing good tutorials.</p><p>I do get obsessive about web-design stuff and writing about it. It&#8217;s a rush to see work come to fruition, and I like to make sure that I&#8217;m not missing anything along the way. All the details need to be accounted for. All the nuances need explained. I think maybe years in school have warped my writing style to sort of echo that academic textbook voice. I personally find that style easier to digest when dealing with lots of material, but for anything else it&#8217;s probably overkill. When I first got into writing web-design tutorials/articles five years ago, I was literally writing for myself, entirely for the sake of learning. The more information I could lookup and include in an article the better. These days, I enjoy this sort of &#8220;encyclopedic&#8221; approach when it&#8217;s useful, but continue to try to &#8220;tone it down&#8221; and &#8220;loosen up&#8221; as much as possible. I still associate the idea of &#8220;quality&#8221; with well-produced, well-researched content, but don&#8217;t worry as much about being so comprehensive with everything. There&#8217;s just not enough time to keep up when you&#8217;re working on that level.</p><h4><span>*</span><strong>Chris:</strong> The &#8220;target audience&#8221; issue I find interesting in our field of tech writing. It was a question we got asked a lot while writing our book: &#8220;what level audience level is it for?&#8221;, to which I typically responded, &#8220;well, uhm, sort of intermediate but there is value in it for all levels.&#8221; Then on this blog, I tend to waver around quite a bit in terms of what skill level any particular article is best suited to.</h4><h4>What is your approach on Perishable Press? Do you try and keep it targeted the same level reader all the time? And perhaps more interestingly, do you think tech publications in general would be more successful if they remained consistent in their skill level targeting?</h4><p><strong>Jeff:</strong> I think it depends on the topic. When I write about &#8220;blogging&#8221; or &#8220;social media&#8221; for example, I don&#8217;t mess around explaining and defining everything &ndash; I just jump right in. Writing about specific code examples or techniques is the same way &#8212; you just have to assume that, if someone is checking things out on that level, they&#8217;re probably savvy with the basics. On the other hand, when you&#8217;re exploring broader topics, such as how to secure a website, readers of all levels may be reading, so it&#8217;s more important to explain everything. Also important when writing is the idea of &#8220;breadth&#8221; vs &#8220;depth.&#8221; Stuff can be very broad in scope and deep in explanation and nobody will read it because it just looks scary, or it can be so pointed and shallow that people will dismiss it outright as spam. Personally I enjoy writing from the other two perspectives: &#8220;broad and shallow&#8221; or &#8220;focused and deep.&#8221; Either of these approaches tend to make for great articles. For example, I recently did a post that covers <a href="http://perishablepress.com/press/2009/12/01/stupid-wordpress-tricks/">76 WordPress techniques</a> that is extremely popular. Nothing too deep there, but it sure covers a <strong>lot</strong> of stuff. You see amazing content like this from <a href="http://www.smashingmagazine.com/">Smashing Magazine</a>, <a href="http://sixrevisions.com/">Six Revisions</a>, and <a href="http://net.tutsplus.com/">Nettuts</a> all the time. Likewise, there are posts that fall into the &#8220;focused and deep&#8221; category. For me, <em>that&#8217;s</em> where the quality is &#8212; a well-focused article that deeply explores its topic. That&#8217;s the kinda stuff that I like to read, so that&#8217;s the kinda stuff I try to write.</p><p>As for tech books, I love &#8216;em and think they&#8217;re useful, but they all seem to follow the same general format: boring intro, cover the basics, slog through some theory and then spit out some examples. And it&#8217;s always written in that stiff &#8220;academic-textbook&#8221; voice that puts so many readers to sleep. These books can be awesome learning tools, but there&#8217;s no reason they all need to be so plain, boring and predictable. I think this is one of the reasons why we chose to self-publish and go the DIY route for <a href="http://digwp.com/">Digging into WordPress</a>. If you look at the difference between what we&#8217;ve created and how it would&#8217;ve been with a major publisher, you totally get why we made that decision. Whether or not taking risks, being creative, and changing things is right for <em>other</em> tech books depends on too many factors to even think about.</p><h4><span>*</span><strong>Chris:</strong> Organization is another attribute I associate with you. For example there is a classic series on Perishable Press about obsessive CSS formatting. In one of them you claim to order your CSS rules by their line length, which I have to admit I find borderline insane, mostly from a maintenance perspective. Although I do also find it visually appealing. Do you still do it like that? Anything new? Where does that obsessive organization come from?</h4><p><strong>Jeff:</strong> Haha, yes compared to your single-line style of writing CSS, I can see how <a href="http://perishablepress.com/press/2008/04/07/obsessive-css-code-formatting-patterns-and-trends/" title="Obsessive CSS Code Formatting: Patterns and Trends">organizing by line-length</a> would seem tedious. But for me, writing my CSS that way makes it easier on the eye and easier to maintain. Everything is so neat and organized that if something &#8212; even the smallest little thing &#8212; is out of place, it really stands out. A quick scan through one of my stylesheets and you know immediately whether or not it&#8217;s complete or needs work in certain places. But not just for CSS, I get obsessive about <em>any</em> code that I&#8217;m working with, whether it&#8217;s HTML, PHP, JavaScript, or even HTAccess. I&#8217;m just an extremely organized person, both online and off. It isn&#8217;t always beneficial in the &#8220;real&#8221; world, but when it comes to working with code, pixels, and writing, strong organizational skills make it possible to get more done in less time. I think organization is fundamental to how the digital world operates. Essentially, the Web is nothing more than a complex organization of binary data. I think that the more organized you are, the closer you get to the true &#8220;essence&#8221; of the Web.</p><p>I have to admit though, working with you on the <a href="http://digwp.com/" title="Digging into WordPress">DiW site</a> has given me a new appreciation for writing out CSS declaration blocks in single line format. It does seem a little quicker when scrolling through longer files, and so I have been integrating single-line declarations into my own, line-length-organized stylesheets. Good examples for when a single-line declaration is going to work better than the separate-line approach include simply styled elements such as <tt>strong</tt>, <tt>em</tt>, <tt>code</tt>, <tt>a</tt> and so on. I think punctuating stylesheets with different coding styles improves readability and maintainability. Instead of just miles of similarly formatted code, you get these nice breaks that help to divide the document into readable/scannable sections.</p><h4><span>*</span><strong>Chris:</strong>So what&#8217;s the &#8220;day job&#8221;? I know you work in some kind of lab. Does that involve any web work or is that relegated to freelance and side projects? Any future plans?</h4><p><strong>Jeff:</strong> Ah yes, the &#8220;day job.&#8221; When I first jumped into web development around six years ago, I did it sort of &#8220;on the side&#8221; on a part-time basis. Back then, I needed a day job to pay the bills while I learned the ropes and got things up and running. Since then, I have established a small design company called <a href="http://monzilla.biz/">Monzilla Media</a>, where I do web development, graphic design, and other creative work. Fortunately, things are at the point now where I could probably <em>survive</em> without my day job, but I guess I&#8217;ve just been too lazy or paranoid to let it go. Having that regular, full-time job provides health insurance for my family and provides a little extra &#8220;cushion&#8221; each month. But when the time is right, I&#8217;m looking forward to moving on and focusing entirely on web design, writing, and other creative pursuits.</p><p>Future plans include anything and everything. For now, I am just going with the flow and working as much as possible. Eventually I would like to focus more on writing, and maybe even teach a few classes and try to help some folks here in the local community. But that&#8217;s far-future thinking. Until then, it&#8217;s all about doing my best online and enjoying life along the way.</p><h4><span>*</span><strong>Chris:</strong> As we both know, and most people in our community know, managing your time is no trivial skill. Responsibilities and commitments can pile up to the point of being overwhelming very quickly. You are juggling our book, your online business and blog, your day job, your family, and I&#8217;m sure much more. Do you just take it day by day and react as needed? Or do you have a master plan for keeping things in check?</h4><p><strong>Jeff:</strong> Great question. I Mostly just take it day by day, but I do some planning as well. With the dynamic nature of the Web and working online, most of what I do is either spontaneous or reactionary, depending on the situation. I just sort of know what to do intuitively without too much explicit planning. I know what I want to accomplish, and just sort of direct my daily activities toward my long-term goals. The book is a great example. I don&#8217;t recall sitting down and saying anything like, &#8220;okay, now let&#8217;s figure out a plan for getting this done.&#8221; Instead, the goal of completing a WordPress book was there, and everything else &#8212; writing, editing, design, printing, etc. &#8212; just got done during the course of things. If one of us had wanted to try to schedule and plan everything, much time would have been wasted. By keeping things fluid and flexible, we made a <em>better</em> book in <em>half</em> the time.</p><p>For me, the flexibility of flying on &#8220;auto-pilot&#8221; enables a much greater degree of multitasking and scheduling flexibility. I hate planners. I have never used any calendar or scheduling program. It would just take too much time to try and figure everything out and fit everything in. Rather, I get things done by keeping everything as wide open as possible. Along the way, if I have an appointment or deadline, I will add it to a sticky note and then work everything else around those static things that cannot be changed. This enables me to flow everything else on the fly, as needed, according to opportunity, and as desired. Beyond staying fluid and flexible with my time, I also like to take care of all the &#8220;little things&#8221; and miscellaneous tasks and errands <em>before</em> doing anything serious. I find that it is <em>much</em> easier to concentrate on design, writing and coding when I know that all the little stuff is taken care of. A good day is when I get up early, take care of all the daily tasks by 9:00am and then spend the rest of the day doing what I truly enjoy: well-focused web design and content creation.</p><p>I guess if you are doing what you love, you just do it. When I get to the point where I am constantly scheduling stuff and trying to figure out how to get everything done, it&#8217;s time to switch gears and pursue a different passion.</p><p>Thank you for the interview! :)</p><p><strong>Big thanks to Jeff for taking the time for the interview. He&#8217;s also on Twitter <a href="http://twitter.com/perishable">@perishable</a>.</strong></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/five-questions-with-jeff%c2%a0starr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento Developers Paradise featuring Inchoo</title>
		<link>http://www.lakevillewebdesign.com/magento-developers-paradise-featuring-inchoo/</link>
		<comments>http://www.lakevillewebdesign.com/magento-developers-paradise-featuring-inchoo/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 21:33:45 +0000</pubDate>
		<dc:creator>Aron Stanic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=5061</guid>
		<description><![CDATA[Branko Ajzele, our project manager and senior developer is scheduled to speak at Magento Developers Paradise conference in Mallorca (October 10-12). Clone Yourself: How to Effectively Share Magento Knowledge with New Developers will be the title of the session where he will share the tips and tricks on the best ways of training new developers [...]]]></description>
			<content:encoded><![CDATA[<p>Branko Ajzele, our project manager and senior developer is scheduled to speak at Magento Developers Paradise conference in Mallorca (October 10-12). <strong>Clone Yourself: How to Effectively Share Magento Knowledge with New Developers </strong>will be the title of the session where he will share the tips and tricks on the best ways of training new developers and preparing them for the adventure that is Magento.</p>
<p><span id="more-5061"></span></p>
<p><img src="http://inchoo.net/wp-content/uploads/2010/06/branko.png" alt="Branko Ajzele" title="Branko Ajzele" width="214" height="228" align="left" style="margin-right: 7px;" />Branko is the most experienced Magento developer on our team (the first one to join Tomislav after he founded Inchoo two years ago) and he has been involved in training and mentoring activities with most of the current team members. With Magento learning curve being somewhat steeper than with other platforms, he’s had his share of very interesting experiences while spreading his Magento skills and knowledge throughout the company.</p>
<p>When we were approached by Kara Heinrichs, GM for Education, training and certification at Magento, with the invitation to have a speaker at Magento Developers Paradise, Branko was the obvious choice. The fact the conference is taking place in Mallorca only helped him make the decision.</p>
<p><a title="Magento Developers Paradise" href="http://www.magentocommerce.com/magento-developers-paradise/" >Magento Developers Paradise</a> is an international conference for Magento developers that will be packed with keynotes, sessions, sneak peeks into the future development of the platform and, of course, fun in the sun.</p>
<p>Keynote speakers will include <strong>Yoav Kutner</strong>, CTO of Magento and <strong>John Lunn</strong>, Head Wizard of PayPal X. You can find out more about the confirmed speakers <a title="Who's gonna speak?" href="http://www.magentocommerce.com/magento-developers-paradise/speakers" >here</a>.</p>
<p><strong>Tomislav Bilic</strong>, our CEO, will also participate in the conference, so if you&#8217;re keen on finally meeting some <a title="The Inchooers" href="http://inchoo.net/tag/inchooers/" >Inchooers</a> in person (and in Mallorca, for that matter), check out the <a title="What will they speak about?" href="http://www.magentocommerce.com/magento-developers-paradise/schedule" >conference schedule</a> (still in the works) and register &#8211; we hope to see you there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/magento-developers-paradise-featuring-inchoo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Illustrators I Like</title>
		<link>http://www.lakevillewebdesign.com/illustrators-i%c2%a0like/</link>
		<comments>http://www.lakevillewebdesign.com/illustrators-i%c2%a0like/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 12:45:29 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6536</guid>
		<description><![CDATA[If there is one (non-superpower) skill I wish I could acquire without having to spend thousands of hours practicing, it&#8217;s illustration. I took a bunch of drawing in college but I was never that great and I&#8217;ve let myself go out of practice. I look at a lot of illustrators work today and it makes [...]]]></description>
			<content:encoded><![CDATA[<p>If there is one (non-superpower) skill I wish I could acquire without having to spend thousands of hours practicing, it&#8217;s illustration. I took a bunch of drawing in college but I was never that great and I&#8217;ve let myself go out of practice. I look at a lot of illustrators work today and it makes me jealous! Illustration can really kick up the awesomeness level of any project.</p><p>I also find that Illustrators tend to take good care of their websites. Perhaps it is because the web is just another canvas, and just as they wouldn&#8217;t allow ugly, out-of-place marks on their illustrations they don&#8217;t allow ugly out-of-place elements on their websites.</p><p>Here are just a few illustrators that I like, that I include here just because I follow them on Twitter and interact with them a bit.</p><p><span id="more-6536"></span></p><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/illustrator-neiner.jpg" alt="" title="illustrator-neiner" width="570" height="570" class="alignnone size-full wp-image-6707" /></p><p>Apparently the Niener family is made up of some seriously talented people. I&#8217;ve known <a href="http://dougneiner.com/">Doug</a> for a while and he consistently blows my mind with his coding and design skills. John does the same with his illustration. Interestingly, John doesn&#8217;t seem to have one particular style. The only common thread I see is <em>unbelievably good</em>. John will be heading up <a href="http://pixelgraphics.us/">Pixel Graphic Design Studio</a> refocused on print and illustration work. He is <a href="http://twitter.com/johnneiner">@johnneiner</a> on Twitter, <a href="http://dribbble.com/players/johnneiner">johnneiner</a> on Dribbble, and has an <a href="http://pixelgraphics.us/publications/">eBook on vector graphics</a>.</p><p>&nbsp;</p><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/illustrator-lifrieri.jpg" alt="" title="illustrator-lifrieri" width="570" height="570" class="alignnone size-full wp-image-6708" /></p><p>Good timing with this post, as Joe just <a href="http://hugsformonsters.com/">redesigned his website</a> and it&#8217;s kick ass. You get a great sense of his style, his humor, and plenty of examples of his work. Definitely spend some time there if you haven&#8217;t seen it yet. I knew I liked Joe after I read this part of <a href="http://sushiandrobots.com/journal/archives/2009/11/02/featured-artist-joe-lifrieri/">an interview</a>: <strong>What, or who are your influences for your illustration style?</strong> <em>“The band logos 15 year olds draw on their Biology notebook covers.”</em> Joe is on Twitter <a href="http://twitter.com/hugsformonsters">@hugsformonsters</a>.</p><p>&nbsp;</p><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/illustrator-latulippe.jpg" alt="" title="illustrator-latulippe" width="570" height="570" class="alignnone size-full wp-image-6709" /></p><p>Luc&#8217;s style reminds me a bit of the style of <a href="http://www.google.com/images?hl=en&#038;q=samurai+jack+artwork&#038;um=1&#038;ie=UTF-8&#038;source=univ&#038;ei=d1YpTLXqFoaonQfiq9WHAQ&#038;sa=X&#038;oi=image_result_group&#038;ct=title&#038;resnum=1&#038;ved=0CC8QsAQwAA">Samurai Jack</a> which is definitely one of my favorite cartoons of all time. His illustrations are typically people-based and are playful, energetic and just plain fun to look at.  Luc has <a href="http://www.luclatulippe.com/">a portfolio site</a>, is <a href="http://twitter.com/luclatulippe">@luclatulippe</a> on Twitter, and <a href="http://luclatulippe.tumblr.com/">Tumbles</a> (is that what we are calling it?)</p><p>&nbsp;</p><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/illustrator-wilcox.jpg" alt="" title="illustrator-wilcox" width="570" height="570" class="alignnone size-full wp-image-6710" /></p><p>Jonathan says <em>&#8220;I enjoy the puzzles of design and creating cool and engaging solutions to visual problems.&#8221;</em> I think that comes across strongly in his work, especially in the covers and posters which are always well put together, thought out concepts. Jonathan is <a href="http://twitter.com/jtwilcox">@jtwilcox</a> on Twitter, <a href="http://jtwilcox.tumblr.com/">tumbles</a>, and has <a href="http://jtwilcox.com/">a portfolio site</a>.</p><p>&nbsp;</p><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/illustrator-gimenes.jpg" alt="" title="illustrator-gimenes" width="570" height="570" class="alignnone size-full wp-image-6693" /></p><p>I love how prolific Ricardo is. You can see his work on his <a href="http://www.ricardogimenes.com/blog/">Behind the Websites</a> site as well <a href="http://www.smashingmagazine.com/the-smashing-cartoons/">Smashing Magazine</a>. I first heard of him as he did the custom illustratons for the <a href="http://frontenddesignconference.com/">Front End Design Conference</a> last year, as he did this year. His style is full of simple satire. Some of it works better than others, but hey, that&#8217;s life right? There is no mistaking a Ricardo illustration with anybody else and there is something to be said about owning a style like that.</p><p>&nbsp;</p><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/illustrator-johns2.jpg" alt="" title="illustrator-johns2" width="570" height="570" class="alignnone size-full wp-image-6714" /></p><p>Marc work is just as much about the writing as it is about the drawing. Think of what a drawing with the text &#8220;Three hairy legs belonging to aristocrats&#8221; looks like and you will <a href="http://www.flickr.com/photos/marcjohns/4138700211/">probably be right</a>. I think there is an addicting quality to his drawings where I just want to see more and more and more of them. That quality makes <a href="http://www.amazon.com/Serious-Drawings-Marc-Johns/dp/3832793143">the book</a> super great, amusingly named &#8220;Serious Drawings.&#8221; Marc has <a href="http://www.marcjohns.com/">a personal site</a>, is <a href="http://twitter.com/marcjohns">@marcjohns</a> on Twitter (sweet background), and keeps a log of his drawings on <a href="http://www.flickr.com/photos/marcjohns/">Flickr</a>. I really like how Marc stopped selling prints of work because he thinks people should <a href="http://shop.marcjohns.com/collections/original-artwork-available">own original artwork</a>.</p><p>&nbsp;</p><p>If you have some favorite illustrators of your own, please link them up!</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/illustrators-i%c2%a0like/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Poll: Action Verb Clarity</title>
		<link>http://www.lakevillewebdesign.com/new-poll-action-verb%c2%a0clarity/</link>
		<comments>http://www.lakevillewebdesign.com/new-poll-action-verb%c2%a0clarity/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 13:04:31 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6699</guid>
		<description><![CDATA[Let&#8217;s say you were writing some text-only documentation describing how to do something on a website. The idea was that you came to a point where someone was presented with a list of users and their job was to select one, then there was a button below that they needed to interact with in order [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s say you were writing some text-only documentation describing how to do something on a website. The idea was that you came to a point where someone was presented with a list of users and their job was to select one, then there was a button below that they needed to interact with in order to get the job done. You decided &#8220;Select a user&#8221; was clear enough because of good user interface. But what is the best way to word [clicking] that button. Here are some options:</p><ul><li>Select a user and then click the Update button.</li><li>Select a user and then press the Update button.</li><li>Select a user and then choose the Update button</li><li>Select a user and then click Update.</li><li>Select a user and then press Update.</li><li>Select a user and then choose Update.</li><li>Select a user and Update.</li></ul><p><span id="more-6699"></span></p><p>In my opinion, &#8220;click&#8221; is a ubiquitous enough term that most people would understand, but technically, keyboard navigation also works fine and doesn&#8217;t use &#8220;clicking.&#8221; The word &#8220;press&#8221; or &#8220;choose&#8221; might solve that, but also feel slightly strange to me.</p><p>The design is also an important consideration. We&#8217;ve already said this is a &#8220;button&#8221;. People know what buttons look like, so does it help to indicate that with text, or is simply the text inside the button good enough? Since our text is &#8220;Update&#8221;, which is an action verb already, do we even need to use click/press/choose? Perhaps just &#8220;Update&#8221; is good enough&#8230;which is also the shortest option.</p><p>The poll doesn&#8217;t include include this, but it is a worthy talking point, what about emphasis (e.g. bold/italic)? If you were going to emphasize a word (or words) in the choice that you pick, which would they be?</p><p>Thanks to <a href="http://www.btraut.com/">Brent Traut</a> for the idea.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/new-poll-action-verb%c2%a0clarity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Poll Results: How Many Websites Do You Launch Per Year?</title>
		<link>http://www.lakevillewebdesign.com/poll-results-how-many-websites-do-you-launch-per%c2%a0year/</link>
		<comments>http://www.lakevillewebdesign.com/poll-results-how-many-websites-do-you-launch-per%c2%a0year/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 12:49:41 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6466</guid>
		<description><![CDATA[20+ (14%) 10-20 (12%) 5-10 (24%) 2-4 (31%) 1 (13%) 0 (6%) I&#8217;m probably in the 2-4 camp myself, which is the winning choice. I don&#8217;t freelance, but I do do sites for family and friends once in a while. Even when I was at Chatman Design the vast majority of work we did was [...]]]></description>
			<content:encoded><![CDATA[<ul id="poll-graph"><li>20+ <small>(14%)</small><div class="pollbar" style="height: 14%;" title="20+ (14% | 665 Votes)"></div></li><li>10-20 <small>(12%)</small><div class="pollbar" style="height: 12%;" title="10-20 (12% | 580 Votes)"></div></li><li>5-10 <small>(24%)</small><div class="pollbar" style="height: 24%;" title="5-10 (24% | 1,157 Votes)"></div></li><li class="winner">2-4 <small>(31%)</small><div class="pollbar" style="height: 31%;" title="2-4 (31% | 1,499 Votes)"></div></li><li>1 <small>(13%)</small><div class="pollbar" style="height: 13%;" title="1 (13% | 616 Votes)"></div></li><li>0 <small>(6%)</small><div class="pollbar" style="height: 8%;" title="0 (6% | 391 Votes)"></div></li></ul><p>I&#8217;m probably in the 2-4 camp myself, which is the winning choice. I don&#8217;t freelance, but I do do sites for family and friends once in a while. Even when I was at Chatman Design the vast majority of work we did was on sites that already were launched. This data would be more interesting if it was cross referenced with what kind of job you have. I would theorize that freelancers launch a ton of sites where web workers that work for specific organizations launch far fewer.</p><p>Here is the fun part about this poll:</p><p><strong>How do you feel about your number? (Does it feel like too many or too few?)</strong></p><p><strong>What would happen if you worked on half as many websites per year?</strong></p><p><strong>What would happen if you worked on twice as many websites per year?</strong></p><p><strong>Did you just read those questions and scoff, like that would be impossible? Why?</strong></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/poll-results-how-many-websites-do-you-launch-per%c2%a0year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Varien is now Magento Inc.</title>
		<link>http://www.lakevillewebdesign.com/varien-is-now-magento-inc/</link>
		<comments>http://www.lakevillewebdesign.com/varien-is-now-magento-inc/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 23:14:24 +0000</pubDate>
		<dc:creator>Tomislav Bilic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=5008</guid>
		<description><![CDATA[While I was checking today some Linkedin profiles, I noticed the fact that some people abandoned Varien. For those of you who don&#8217;t know, this is a company that created Magento. I&#8217;ll be honest and say that I had a moment of fear since our business is closely tied to Magento success. My worries went [...]]]></description>
			<content:encoded><![CDATA[<p>While I was checking today some <a href="http://ua.linkedin.com/in/dmytrovasylenko">Linkedin profiles</a>, I noticed the fact that some people abandoned Varien. For those of you who don&#8217;t know, this is a company that created Magento. I&#8217;ll be honest and say that I had a moment of fear since our business is closely tied to Magento success. My worries went away the same second when I clicked on <a href="http://varien.com/">varien.com</a> link. The step is logical.<br />
<span id="more-5008"></span><br />
<img class="aligncenter size-full wp-image-5010" title="Magento About Page - Before and Now" src="http://inchoo.net/wp-content/uploads/2010/06/varien_magento_before_now.png" alt="" width="600" height="453" /></p>
<p>Since I&#8217;m working with key accounts recently, I was using part of sentence &#8220;Varien, company behind Magento&#8221; quite often. The fact that Magento is open source and yet, there is a company who developed it, was confusing for some people. Especially for those who came from the osCommerce world.</p>
<p>Uniting the name will definitely bring more clarity to the story and corporate branding will be smoother and effective for <strong><a title="Magento loves Inchoo" href="http://www.magento.com" >Magento Inc</a></strong>. Good luck guys, to you and your 115+ employees.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/varien-is-now-magento-inc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Boagworld</title>
		<link>http://www.lakevillewebdesign.com/on%c2%a0boagworld/</link>
		<comments>http://www.lakevillewebdesign.com/on%c2%a0boagworld/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 16:36:15 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6669</guid>
		<description><![CDATA[In more podcast news, I got to be on Boagworld as well! I was interviewed by Paul Boag himself in the final interview ever on Boagworld. Bittersweet, isn&#8217;t it? We talk about CSS-Tricks, CSS3, Flash, and you know, just some general back and forth about stuff.]]></description>
			<content:encoded><![CDATA[<p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/boagworld.png" alt="" title="boagworld" width="570" height="121" class="alignnone size-full wp-image-6670" /></p><p>In more podcast news, I got to be on Boagworld as well! <a href="http://boagworld.com/technology/chris-coyier">I was interviewed</a> by Paul Boag himself in the <em>final interview ever</em> on Boagworld. Bittersweet, isn&#8217;t it? We talk about CSS-Tricks, CSS3, Flash, and you know, just some general back and forth about stuff.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/on%c2%a0boagworld/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On WordPress Podcast</title>
		<link>http://www.lakevillewebdesign.com/on-wordpress%c2%a0podcast/</link>
		<comments>http://www.lakevillewebdesign.com/on-wordpress%c2%a0podcast/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 12:34:08 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6663</guid>
		<description><![CDATA[I got to be on the WordPress Podcast with Joost de Valk yesterday. It&#8217;s already out and you go to the blog post (with player and show notes), or snag it from iTunes. We had fun talking about Digging into WordPress, WordPress 3.0, CSS-Tricks, and more. My voice is a little booming and heavy on [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/wppodcast.png" alt="" title="wppodcast" width="197" style="float: right; margin: 0 0 2px 10px;" />I got to be on the WordPress Podcast with <a href="http://yoast.com/">Joost de Valk</a> yesterday. It&#8217;s already out and you go to the <a href="http://wp-community.org/2010/06/23/digging-css-trickery/">blog post</a> (with player and show notes), or snag it from <a href="http://itunes.apple.com/us/podcast/the-wordpress-podcastpodcast/id164651619">iTunes</a>.</p><p>We had fun talking about <a href="http://digwp.com/">Digging into WordPress</a>, WordPress 3.0, CSS-Tricks, and more. My voice is a little booming and heavy on bass (my bad) but I just turned the bass way down to listen to this track and it sounds fine.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/on-wordpress%c2%a0podcast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS for Blockin’ Stuff</title>
		<link>http://www.lakevillewebdesign.com/css-for-blockin%e2%80%99%c2%a0stuff/</link>
		<comments>http://www.lakevillewebdesign.com/css-for-blockin%e2%80%99%c2%a0stuff/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 12:20:36 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6529</guid>
		<description><![CDATA[I am not a big proponent of ad blockers. Besides than the fact that this site has ads on it, I generally just don&#8217;t mind it. I am a big proponent of you doing whatever you want to on your computer to control what is displayed to you on your screen. If you want to [...]]]></description>
			<content:encoded><![CDATA[<p>I am <strong>not</strong> a big proponent of ad blockers. Besides than the fact that this site has ads on it, I generally just don&#8217;t mind it. I <strong>am</strong> a big proponent of you doing whatever you want to on <em>your</em> computer to control what is displayed to you on <em>your</em> screen. If you want to use user stylesheets, ad blockers, flash blockers, or whatever else, more power to you. Here are some CSS projects intended for blockin&#8217; stuff.</p><p><span id="more-6529"></span></p><h3>Floppy Moose userContent.css</h3><p>This is some pretty old stuff here, but hey, CSS doesn&#8217;t move that fast. The idea is that some browsers allow you to add additional default CSS to all pages (Firefox and Safari). This is some CSS that will block a bunch of links, iframes, and miscellaneous elements based mostly on their src or href attribute, and some on class/ID.</p><p>To use it in Firefox, you put it in a special place:</p><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/usercontentinfirefox.jpg" alt="" title="usercontentinfirefox" width="536" /></div><p>To use it in Safari, it&#8217;s a preference:</p><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/safariadvancedsettings.jpg" alt="" title="safariadvancedsettings" width="570" /></p><p>Opera supports UserCSS as well, there are <a href="http://operawiki.info/OperaUserCSS">instructions here</a>.</p><p>The best I could find for Google Chrome was the <a href="https://chrome.google.com/extensions/detail/hiadkoalmmkgennhcldmdlndfgagkcim">Advanced Page Injector</a> extension, which should do the trick for applying your own CSS (or JS) or all viewed pages.</p><p><a href="http://www.floppymoose.com/userContent.css" class="button">View CSS</a></p><h3>Gozer.org Ad Blocking CSS</h3><p>This is similar in spirit to the Floppy Moose CSS, but looks as if it&#8217;s been updated more recently and is far more ambitious with the domains it covers and types of elements it looks for. Usage would be the same as above.</p><p><a href="http://www.gozer.org/mozilla/ad_blocking/css/ad_blocking.css" class='button'>View CSS</a></p><h3>Steven Frank&#8217;s shutup.css</h3><p>The idea here is to block the comment section on blogs. Sites like YouTube and Digg are notorious for having soul-crushingly bad comments, so perhaps for the thin-skinned amongst us, you&#8217;ll have an easier time getting through the day if you just don&#8217;t see them. The CSS has some specific ID&#8217;s/classnames it hides for specific sites, but also some very generic ones like #comments and .comments, which would block the comments area on most WordPress sites.</p><p>Installation again would be just like the screenshots above.</p><p><a href="http://stevenf.com/pages/shutup/shutup-1.5.css" class='button'>View CSS</a></p><h3>Using Multiple</h3><p>You&#8217;ll need to copy these CSS files locally to use them. That&#8217;s good anyway, as it means you can tweak things to your own preferences. It also means you could just copy one into the other to use both at the same time.</p><h3>Flash Blocking</h3><p>If it&#8217;s specifically flash that you want to prevent from seeing (or at least loading) there are browser extensions/add-ons you can use for that:</p><ul><li><strong>Firefox:</strong> <a href="https://addons.mozilla.org/en-US/firefox/addon/433/">Flashblock</a></li><li><strong>Safari</strong>: <a href="http://clicktoflash.com/">ClickToFlash</a></li><li><strong>Opera 10:</strong> Enter <tt>opera:config#UserPrefs|EnableOnDemandPlugin</tt></li><li><strong>IE 8</strong>: Tools > Manage add-ons > Flash player add-on > More information > Remove all sites (then when visiting a site with flash, you&#8217;ll get a notification where you can opt-in on a per-site basis)</li></ul><p>If you have any other ideas or favorite techniques for using the userContent.css idea, let&#8217;s have um!</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/css-for-blockin%e2%80%99%c2%a0stuff/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Feature Table Design</title>
		<link>http://www.lakevillewebdesign.com/feature-table%c2%a0design/</link>
		<comments>http://www.lakevillewebdesign.com/feature-table%c2%a0design/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 12:12:58 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6557</guid>
		<description><![CDATA[I ran into the feature table design from Shopify over on Pattern Tap and I was like DAMN SHOPIFY, that is one sexy table. I was inspired to try and replicate it. First in Photoshop, then in HTML/CSS. Recreating cool stuff you find on the web is definitely an excise I recommend (a few days [...]]]></description>
			<content:encoded><![CDATA[<p>I ran into the feature table design from <a href="https://www.shopify.com/services/signup">Shopify</a> over on <a href="http://patterntap.com/tap/pattern/20866170244aecc0c557b09">Pattern Tap</a> and I was like DAMN SHOPIFY, that is one sexy table. I was inspired to try and replicate it. First in Photoshop, then in HTML/CSS. Recreating cool stuff you find on the web is definitely an excise I recommend (a few days after, I read <a href="http://37signals.com/svn/posts/2412-how-do-you-turn-inspiration-into-skill">this</a> &#8211; couldn&#8217;t agree more). As these exercises typically do, it lead me down some interesting paths.</p><p>Here&#8217;s my knockoff:</p><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/featuretabledemo.jpg" alt="" title="featuretabledemo" width="570" /></p><p><a href="http://css-tricks.com/examples/FeatureTable/" class="button">View Demo</a> &nbsp; <a href="http://css-tricks.com/examples/FeatureTable.zip" class="button">Download Files</a></p><p><span id="more-6557"></span></p><h3>The Markup</h3><p>Here is the abreiveated HTML:</p><pre><code class="html">&lt;table id="feature-table"&gt;
  &lt;colgroup class="basic"&gt;&lt;/colgroup&gt;
  &lt;colgroup class="plus"&gt;&lt;/colgroup&gt;
  &lt;colgroup class="premium" id="featured"&gt;&lt;/colgroup&gt;
  &lt;colgroup class="pro"&gt;&lt;/colgroup&gt;
	&lt;thead&gt;
		&lt;tr&gt;
			&lt;th id="header-basic"&gt;&lt;span&gt;$15 Basic&lt;/span&gt; &lt;a class="button" href="#"&gt;Sign Up&lt;/a&gt;&lt;/th&gt;
			&lt;th id="header-plus"&gt;&lt;span&gt;$35 Plus&lt;/span&gt;&lt;a class="button" href="#"&gt;Sign Up&lt;/a&gt;&lt;/th&gt;
			&lt;th id="header-premium"&gt;&lt;span&gt;$99 Premium&lt;/span&gt;&lt;a class="button" href="#"&gt;Sign Up&lt;/a&gt;&lt;/th&gt;
			&lt;th id="header-pro"&gt;&lt;span&gt;$150 Pro&lt;/span&gt;&lt;a class="button" href="#"&gt;Sign Up&lt;/a&gt;&lt;/th&gt;
		&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;tr&gt;
			&lt;td&gt;50 pages&lt;/td&gt;
			&lt;td&gt;75 pages&lt;/td&gt;
			&lt;td&gt;Unlimited&lt;/td&gt;
			&lt;td&gt;Unlimited&lt;/td&gt;
		&lt;/tr&gt;
    &lt;!-- More rows here --&gt;
	&lt;/tbody&gt;
&lt;/table&gt;</code></pre><p>Pretty clean. The only thing that isn&#8217;t perfectly clean is the &lt;span> in the header. There is all that fancy gradient fancy font stuff going on. Theoretically, it could be done with a boatload of CSS3, but you know, sometimes an image is just fine dang nabbit, especially when it&#8217;s perfectly accessible <a href="http://css-tricks.com/css-image-replacement/">CSS image replacement</a>.</p><p>Of note is the &lt;colgroup> element which I feel is underutilized. Colgroups allow you to target an entire column of table cells and apply styling, even though those table cells aren&#8217;t actually descendants of the &lt;colgroup>. Kind of a weird concept, but it works, and it&#8217;s easier than applying a class name to every single table cell signifying what column it&#8217;s in.</p><p>If you need some quick markup, I have some you can copy and paste on <a href="http://html-ipsum.com/">HTML-Ipsum</a>.</p><h3>The CSS</h3><p>Each header cell (&lt;th>) has an ID. We&#8217;ll set a static height on those and set background images for them. Vertically aligning to the bottom with a bit of bottom padding allows us to place the link button evenly. The span in those headers is kicked off the page via absolute positioning (i.e. accessible hiding).</p><pre><code class="css">#feature-table th { height: 120px; padding-bottom: 14px; vertical-align: bottom; }
#header-basic { background: url(../images/header-15.png) no-repeat; }
#header-plus { background: url(../images/header-35.png) no-repeat; }
#header-premium { background: url(../images/header-99.png) no-repeat; }
#header-pro { background: url(../images/header-150.png) no-repeat; }
#feature-table th span { position: absolute; top: -9999px; left: -9999px; }</code></pre><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/featuretabledemoheader.jpg" alt="" title="featuretabledemoheader" width="570" /></p><p>Speaking of those buttons. I just used the <a href="http://css-tricks.com/examples/ButtonMaker/">CSS Button Maker</a> to quickly design a button I thought looked nice and fit with the color scheme, and copy and pasted the CSS into this demo.</p><p>To color the cells, I set a fallback hex code color and then an <a href="http://css-tricks.com/yay-for-hsla/">HSLa color value</a>. These class names are targeting the colgroup elements.</p><pre><code>.basic   { background-color: #d5e4bc; background-color: hsla(85,  30%, 80%, 1); }
.plus    { background-color: #c1dcb7; background-color: hsla(110, 30%, 80%, 1); }
.premium { background-color: #bad6c8; background-color: hsla(150, 30%, 80%, 1); }
.pro     { background-color: #bbd3dc; background-color: hsla(190, 30%, 80%, 1); }</code></pre><p><img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/columnscolored.jpg" alt="" title="columnscolored" width="570" height="124" class="alignnone size-full wp-image-6624" /></p><p>The final product is zebra striped and has that &#8220;featured column&#8221; thing going on. but we can approach that with JavaScript&#8230;</p><h3>The JavaScript</h3><p><a href="http://jquery.com">jQuery</a>, obviously.  We can apply the &#8220;odd&#8221; class to odd table rows, as well as a &#8220;final-row&#8221; class with jQuery super easily:</p><pre><code>$("tr:odd").addClass("odd");  // Zebra action
$("tr:last").addClass("final-row");  // For extra padding</code></pre><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/finalrowextrapadding.jpg" alt="" title="finalrowextrapadding" width="570" height="74" class="alignnone size-full wp-image-6632" /></p><p>The final row has extra padding</p></div><p>To handle the &#8220;featured&#8221; column, and keep things semantic, we just apply an ID to the colgroup:</p><pre><code>&lt;colgroup class="premium" id="featured"&gt;&lt;/colgroup&gt;</code></pre><p>Now the JavaScript needs to figure out which number column that is.</p><pre><code class="javascript">// Figure out which column # is featured.
var featuredCol;
$("colgroup").each(function(i) {
    if (this.id == "featured") featuredCol = i+1;
});</code></pre><p>Now we&#8217;re going to loop through all the table cells and figure out if the cell is in the column right before the featured column (if it is, apply a &#8220;leftOfFeatured&#8221; class) or in the column right after the featured column (if it is, apply a &#8220;rightOfFeatured&#8221; class).</p><p>While we are at it, we might as well apply class names to all table cells indicating their column. Colgroups were supposed to eliminate that need, but it turns out they have a fairly significant weakness. You can&#8217;t do something like:</p><pre><code class="css">.basic .odd {
   /*
      .basic is the colgroup, .odd is the row
      the row really isn't a descendant of the colgroup
      in other words, this doen't work
   */
}</code></pre><p>This design calls for different color alterations depending on the column. So while we are running that loop, we&#8217;ll just apply class names to the table cells and use those class names to do our bidding.</p><pre><code class="javascript">// Apply classes to each table cell indicating column
// Also applies classes if cell is right or left of featured column

var numCols = $("colgroup").length;

$("td, th").each(function(i) {
    $(this).addClass("table-col-" + ((i % numCols) + 1));
    if (((i%numCols)+1) == (featuredCol-1)) $(this).addClass("leftOfFeatured");
    if (((i%numCols)+1) == (featuredCol+1)) $(this).addClass("rightOfFeatured");
});</code></pre><p>The variable i in this function is the index. It basically tells us what iteration of the loop we are on. So the 50th table cell it finds, the index will be 49 (index is zero-indexed). So if we take the index modulus the number of columns (determined by testing the length of the jQuery set) and add one, we&#8217;ll have what number column the cell is in. Example: 4 columns, 10th cell found. <a href="http://www.google.com/search?hl=en&#038;q=9+%25+4">9 % 4 = 1</a>, plus 1 is 2, so the 10th cell is in the 2nd column. And thus, that cell gets the class &#8220;table-col-2&#8243;.</p><p>With the row .odd classes and the new table-col-x classes, we can now truly zebra stripe as the design demands:</p><pre><code class="css">.odd .table-col-1 { background-color: #edf3e2; background-color: hsla(85,  30%, 94%, 1); }
.odd .table-col-2 { background-color: #edf3e2; background-color: hsla(110, 30%, 94%, 1); }
.odd .table-col-3 { background-color: #edf3e2; background-color: hsla(150, 30%, 94%, 1); }
.odd .table-col-4 { background-color: #e2ecf0; background-color: hsla(190, 30%, 94%, 1); }</code></pre><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/zerbraaction.jpg" alt="" title="zerbraaction" width="570" height="156" class="alignnone size-full wp-image-6626" /></p><p>Zebra action complete.</p></div><p>Notice it&#8217;s hex code fallbacks and HSLa again. The fun of using HSLa here was that the values are exactly the same except for the third value (the &#8220;lightness&#8221;). We increase that value 14% and that is the noticeable difference in tone.</p><p>The &#8220;leftOfFeatured&#8221; and &#8220;rightOfFeatured&#8221; classes apply a background image, just an alpha-transparent PNG shadow aligned and repeating to the left or right respectively.</p><div class="image-wrap"> <img src="http://cdn.css-tricks.com/wp-content/uploads/2010/06/shadowsbehindcolumn.jpg" alt="" title="shadowsbehindcolumn" width="317" /></div><pre><code class="css">.leftOfFeatured  { background-image: url(../images/shadow-left.png);  background-repeat: repeat-y; background-position: right center; }
.rightOfFeatured { background-image: url(../images/shadow-right.png); background-repeat: repeat-y; background-position: left  center; }</code></pre><h3>Conclusion</h3><p>So that&#8217;s it folks. It was fun for me to try and recreate something I thought was awesome, but just in a &#8220;this is how I would do it&#8221; kinda way rather than peaking at any of their code. I highly recommend this kind of exercise, if your schedule allows.</p><p><a href="http://css-tricks.com/examples/FeatureTable/" class="button">View Demo</a> &nbsp; <a href="http://css-tricks.com/examples/FeatureTable.zip" class="button">Download Files</a></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/feature-table%c2%a0design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to sell vuvuzelas to aliens?</title>
		<link>http://www.lakevillewebdesign.com/how-to-sell-vuvuzelas-to-aliens/</link>
		<comments>http://www.lakevillewebdesign.com/how-to-sell-vuvuzelas-to-aliens/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 14:01:37 +0000</pubDate>
		<dc:creator>Aron Stanic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4954</guid>
		<description><![CDATA[How a typical day dealing with Magento inquiries went horribly well&#8230; Careful what you wish for&#8230; this is what you often hear, right? Well, thanks to our inbound marketing efforts, we are getting many inquiries daily with potential clients asking for some Magento work ranging from small fixes and modifications on their existing sites to [...]]]></description>
			<content:encoded><![CDATA[<p>How a typical day dealing with Magento inquiries went horribly well&#8230;</p>
<p><span id="more-4954"></span></p>
<p>Careful what you wish for&#8230; this is what you often hear, right? Well, thanks to our inbound marketing efforts, we are getting many inquiries daily with potential clients asking for some Magento work ranging from small fixes and modifications on their existing sites to full projects from scratch. To be very clear, we find ourselves in a situation where many of our fellow developers would like to be in. It is then the question of filtering out these inquiries, delving deeper into project requirements details and, hopefully, landing a project or two.</p>
<p>However, working with a large number of incoming inquiries can at times lead to reducing oneself to a typewriter, and getting a feeling like you&#8217;re stuck in an infinite loop, much like this one (anyone here still remembers the good ol&#8217; Basic?)</p>
<blockquote><p>10 PRINT: &#8220;Thank you for you inquiry. We can definitely help you with your project. Could you please share some more details together with your expected timeframe so we can prepare a more informed estimate for our work?&#8221;<br />
20 GOTO 10</p></blockquote>
<p>And while this is all part of the job, sometimes a thing happens like it did today when you simply have to stop for a while and enjoy the moment.</p>
<p>An inquiry came in saying: &#8220;<strong>I would like to build a Magento shop selling all Vuvuzelas from the 2010 World Cup to aliens so that those lovely sounds inspire their hearts for a while.</strong>&#8221; In case you don&#8217;t know what Vuvuzelas are, you&#8217;re probably not that big on football/soccer. If you want to learn more, <a title="What's with all the buzzing?" href="http://www.youtube.com/watch?v=lMxEycuSn0o" >just listen to this</a>&#8230;</p>
<p>Then all hell broke loose &#8211; the team members started brainstorming on the best ways of setting up intergalactic shipments, whether there&#8217;s an UPS API available that would easily handle the shipping rates for &#8220;lower 48&#8243; group of stars of the Ursa Major constellation, and how the payment gateway of the Ferengi bank on Uranus doesn&#8217;t support &#8220;authorize before capture&#8221; option. It was really a great way to finish off Friday on a high note.</p>
<p>So, if you&#8217;re looking to expand your business overstars, we&#8217;ve already started preparing&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/how-to-sell-vuvuzelas-to-aliens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysteries of Magento Encryption Key</title>
		<link>http://www.lakevillewebdesign.com/mysteries-of-magento-encryption-key/</link>
		<comments>http://www.lakevillewebdesign.com/mysteries-of-magento-encryption-key/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 13:01:32 +0000</pubDate>
		<dc:creator>Tomislav Bilic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4948</guid>
		<description><![CDATA[If you ever went through Magento installation process, you know that at some point you are asked for Magento Encryption key. Magento will automatically generate one for you if you do not enter anything in this field. For first installation, this is just fine. You will see a note that Magento uses this key to [...]]]></description>
			<content:encoded><![CDATA[<p>If you ever went through Magento installation process, you know that at some point you are asked for Magento Encryption key. Magento will automatically generate one for you if you do not enter anything in this field. For first installation, this is just fine. You will see a note that Magento uses this key to encrypt <strong>passwords</strong>, credit cards and more. Is this really the case?</p>
<p><span id="more-4948"></span></p>
<p>Once Magento installation is complete, you will find the code at /app/etc/local.xml folder.</p>
<pre class="brush: xml">
&lt;crypt&gt;
&lt;key&gt;&lt; ![CDATA[-encryption-key-]]&gt;&lt;/key&gt;
&lt;/crypt&gt;
</pre>
<p>You would have thought that it is important for some process when Magento saves customers or admin user password in the database and encrypts it. However, this is not the case. When you upgrade the site to a new Magento installation, you will be able to log in with the usernames and passwords that you used, even if the encryption key is different.</p>
<p>But, if you forgot to remember and resave encryption key from the old installation, you will encounter a problem where some payment or shipping gateways will not work. Access data will not work although you have them in the database. This is where <strong>Encryption Key</strong> is in the story. PayPal, Authorize.net and similar transaction keys and passwords are additionally secured with this key via <a href="http://en.wikipedia.org/wiki/Salt_(cryptography)">hash &#038; salt</a> method. With this in mind, if you <strong>forgot</strong> old transaction key, there is no other way to solve this issue than <strong>re-saving </strong>those <strong>access data</strong> from Magento administration interfaces.</p>
<p>So, golden rule is: <strong>When upgrading the site to new installation, be sure to use the same Encryption Key</strong>.</p>
<p>Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/mysteries-of-magento-encryption-key/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Should you use a template?</title>
		<link>http://www.lakevillewebdesign.com/should-you-use-a%c2%a0template/</link>
		<comments>http://www.lakevillewebdesign.com/should-you-use-a%c2%a0template/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 12:28:34 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6543</guid>
		<description><![CDATA[I absolutely think that beginner web designers should use templates. And by templates, I mean something that you might buy off ThemeForest or other template selling service. Here are a few reasons why: Tweaking = learning. Templates need to be changed/altered/tweaked. That&#8217;s the whole idea of a template. When a beginner designer does those things, [...]]]></description>
			<content:encoded><![CDATA[<p>I absolutely think that beginner web designers should use templates. And by templates, I mean something that you might buy off <a href="http://themeforest.net/">ThemeForest</a> or other template selling service. Here are a few reasons why:</p><ul><li><strong>Tweaking = learning.</strong> Templates need to be changed/altered/tweaked. That&#8217;s the whole idea of a template. When a beginner designer does those things, they are learning how code works. Tweaking WordPress themes is exactly how I got into web design.</li><li><strong>Quality.</strong> When the site is &#8220;done&#8221;, a beginner will have something they are likely very proud of. Probably more proud than if they started from absolute scratch and ended up with something very basic (or downright ugly). That will provide good momentum for sticking with it.</li><li><strong>&#8220;Real world.&#8221;</strong> Assuming the template is well-coded, the beginner will be looking at a good amount of quality markup and well organized efficient CSS. That is nice head-first dive into real world front end design, as opposed to starting with the kind of markup an intro to HTML book might start you off with.</li></ul><p>But what if you aren&#8217;t a beginner?</p><p><span id="more-6543"></span></p><p>If you are a professional designer (as in, a client came to you with web needs and you are going to build a custom site for them, and you are going to charge them more than a few hundred dollars) then using a template is, pardon me, bullshit.</p><p>The job of a designer is to carefully consider the needs of the client and the constraints at hand and create a solution. In my opinion, that includes every pixel on that site. If some of those pixels were recycled from somewhere else, then they weren&#8217;t created with the intention of solving that clients needs. I&#8217;m not saying you can&#8217;t use find/reuse/recycle things you find elsewhere, I&#8217;m saying that when you do, you ought to be manipulating them and heavily considering how they integrate into the vision for the site.</p><p>What do you think? Am I full of crap?</p><p>For you developers out there, do you feel similarly? I think the opposite might be true for developers, where recycling code that has the exact same functionality is probably the right way to go.</p><p>&nbsp;</p><hr /><p>&nbsp;</p><p>In recent related news, I have placed an item on the newly released CodeCanyon CSS category: <a href="http://codecanyon.net/item/css3-tabs/109055">CSS3 Tabs</a>.  I&#8217;ve had some interesting conversations with folks recently about the idea of selling code and designs. The interesting part is how the sale of design templates is largely given the thumbs up while selling code is largely given the thumbs down. I can totally relate to those feelings, but I&#8217;ve decided that if it&#8217;s cool for designers to get paid to sell their craft, then it should be cool for developers to get paid to sell theirs (licensing issues notwithstanding).</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/should-you-use-a%c2%a0template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Photography and CSS</title>
		<link>http://www.lakevillewebdesign.com/photography-and%c2%a0css/</link>
		<comments>http://www.lakevillewebdesign.com/photography-and%c2%a0css/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 11:23:25 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6540</guid>
		<description><![CDATA[It sure seems like a heck of a lot of web designers are also photographers, doesn&#8217;t it? And by &#8220;photographer&#8221;, I mean they own a DSLR and heavily consider aesthetics when taking a picture. Why the overlap of interests? Well clearly web design often incorporates photographs. Maybe we like to have the equipment we need [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://css-tricks.com/wp-content/csstricks-uploads/cameracss.jpg" width="570" height="300" alt="" title="" /></p><p>It sure seems like a heck of a lot of web designers are also photographers, doesn&#8217;t it? And by &#8220;photographer&#8221;, I mean they own a DSLR and heavily consider aesthetics when taking a picture. Why the overlap of interests? Well clearly web design often incorporates photographs. Maybe we like to have the equipment we need to take decent pictures for websites and it grows from there. Maybe it&#8217;s because photography is a lot like design. You have a canvas of sorts and you need to take into account the principals of design: color, balance, line, shape, contrast&#8230; the gestalt.</p><p>I think maybe the connection runs a little deeper though, in that it appeals to our inner nerd in the same type of way.</p><p><span id="more-6540"></span></p><p>CSS isn&#8217;t a particularly difficult language to understand. You select things, and change the values of different properties. There is no logic, no math, no object oriented concepts, no security concerns&#8230;  It largely reads like plain English. Yet, understanding it and being really good at it are pretty far apart. The old adage applies nicely:</p><blockquote><p>It takes a day to learn and a lifetime to master.</p></blockquote><p>CSS might seem a little mystifying at first, until you dig in a little and then you might think <em>&#8220;this is all there is?&#8221;</em> I found photography to be similar. At first, a DSLR can seem like a maze of settings and details to know about. It seems like learning how to change everything according to the circumstances and your desired outcome is going to be incredibly complicated. Then the further you dig in, you realize it basically boils down to your ISO, shutter speed, and aperture. Then it happens again, <em>&#8220;this is all there is?&#8221;</em></p><p>It goes deeper in both directions. Yes, CSS can get more complicated with stuff like CSS3 transitions, cross-browser quirks, and trying to style form elements to look decent. Yes, photography can get more complicated with things like different lenses, dealing with white balance, and processing RAW. But those things are somewhat minor compared to the core concepts. Master those fundamentals, and the rest comes along with it over time.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/photography-and%c2%a0css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yay for HSLa</title>
		<link>http://www.lakevillewebdesign.com/yay-for%c2%a0hsla/</link>
		<comments>http://www.lakevillewebdesign.com/yay-for%c2%a0hsla/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 13:09:20 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6565</guid>
		<description><![CDATA[Huge sogging longbottoms? High strength low alloy steel? NOPE, we&#8217;re talking Hue Saturation Lightness (and alpha) and it&#8217;s a way of declaring color in CSS. It looks like this: #some-element { background-color: hsla(170, 50%, 45%, 1); } It is similar to RGBa in that you declare three values determining the color and then a fourth [...]]]></description>
			<content:encoded><![CDATA[<p>Huge sogging longbottoms? High strength low alloy steel? NOPE, we&#8217;re talking Hue Saturation Lightness (and alpha) and it&#8217;s a way of declaring color in CSS. It looks like this:</p><pre><code class="css">#some-element {
   background-color: hsla(170, 50%, 45%, 1);
}</code></pre><p>It is similar to RGBa in that you declare three values determining the color and then a fourth value for its transparency level. You can read more about browser support below, but it&#8217;s basically any browser that supports rgba supports hsla too.</p><p><span id="more-6565"></span></p><ul><li><strong>Hue</strong> &#8211; Think of a color wheel. Around 0<sup>o</sup> and 360<sup>o</sup> are reds 120<sup>o</sup> are greens, 240<sup>o</sup> are blues. Use anything in between 0-360. Values above and below will be modulus 360.</li><li><strong>Saturation</strong> &#8211; 0% is completely denatured (grayscale). 100% is fully saturated (full color).</li><li><strong>Lightness</strong> &#8211; 0% is completely dark (black). 100% is completely light (white). 50% is average lightness.</li><li><strong>alpha</strong> &#8211; Opacity/Transparency value. 0 is fully transparent. 1 is fully opaque. 0.5 is 50% transparent.</li></ul><p>Let&#8217;s dig in.</p><h3>Why is it cool?</h3><p>The real appeal of HSLa is that it makes more intuitive sense what changing the values will do to the color. Increasing the second value will increase the saturation of that color. Decreasing the third value will decrease the lightness of that color. That makes creating your own color variations on the fly <em>way easier</em>. I would wager that most of us can&#8217;t create nice and consistent color variations like this using the RGBa model.</p><p>The HSLa model also makes changing color values programatically much easier. Check out the <a href="http://css-tricks.com/examples/HSLaExplorer/">demo tool</a> emphasizing that.</p><h3>Why is it less utilized?</h3><p>This is me making a big assumption, but from what I can tell, HSLa is <strong>much</strong> less utilized in the wild than RGBa is. If you have any ideas of why that is, please share in the comments. My theory is that HSL values are harder to get your hands on, as far as sampling from the screen or a Photoshop document.</p><p><img src="http://css-tricks.com/wp-content/csstricks-uploads/photoshopcolorpickerhsla2.jpg" width="570" height="408" alt="" title="" /></p><p>I guess Photoshop uses Hue/Saturation/Brightness model instead. I honestly don&#8217;t quite understand the difference, but when I was first attempting this, <a href="http://skitch.com/chriscoyier/d85xp/color-picker-foreground-color">this is the situation I got in</a>.</p><h3>Getting HSLa values</h3><p>There is a little app for Mac called <a href="http://mattpatenaude.com/">Colors</a> from Matt Patenaude.</p><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/colorsapp.jpg" width="224" height="242" alt="" title="" /></div><p>You just click the magnifying glass and then anywhere on the screen. It will fill in the color in the box. Then you can select the hsla option and copy it to your clipboard. There are preferences for tweaking the formatting just how you want it to. Works pretty well. My one gripe being that if you close the little floating window, it won&#8217;t reopen unless you quit and restart the app. Might be a Snow Leopard thing and the app hasn&#8217;t been updated in a while? I dunno.</p><p>If anyone has a favorite Windows or Linux tool for capturing color that has HSLa as a feature, let me know in the comments and I&#8217;ll update it here.</p><h3>Browser Support</h3><p>Firefox 3.0+, Safari 3+, Chrome 6+ (maybe older too?), Opera 10+ (maybe older too?)</p><p>As usual IE is left out of the party. Even version 8. I have a feeling version 9 will be supporting it but don&#8217;t have any proof yet. Anyone have it installed and can test? For IE, you can just declare a fallback color. IE 8 doesn&#8217;t support RGBa either, so just using a hex code is the best bet.</p><pre><code class="css">#some-element {
    background-color: #e2ecf0; /* Fallback */
    background-color: hsla(190, 30%, 94%, 1);
}</code></pre><h3>Tool</h3><p><a href="http://css-tricks.com/examples/HSLaExplorer/"><img src="http://css-tricks.com/wp-content/csstricks-uploads/hslagrid.jpg" width="570" height="242" alt="" title="" /></a></p><p>As a demo of how easy it is to create color variations programatically, I created the <a href="http://css-tricks.com/examples/HSLaExplorer/">HSLa Explorer</a>. There are two slides on the page. The top one controls the hue value and the second one controls the opacity level. It takes those values and builds a grid of 100 color variations, where the saturation and lightness are varied in a matrix.</p><p>IE doesn&#8217;t like something in JavaScript (in the demo) for some reason, but no matter, IE doesn&#8217;t like HSLa anyway. Thanks to  Matthieu Sieben for helping improve the demo.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/yay-for%c2%a0hsla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Last things first</title>
		<link>http://www.lakevillewebdesign.com/last-things-first/</link>
		<comments>http://www.lakevillewebdesign.com/last-things-first/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 08:12:42 +0000</pubDate>
		<dc:creator>Željko Prša</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4805</guid>
		<description><![CDATA[The items on this list are essential for any store owner to go through before launching their online store. We&#8217;ve covered some of these topics before and this post is to serve as a must-be checklist in order to ensure flawless user experience. Note: This post is dedicated to the store owners in general, mainly [...]]]></description>
			<content:encoded><![CDATA[<p>The items on this list are essential for any store owner to go through <strong>before </strong>launching their online store. We&#8217;ve covered some of these topics before and this post is to serve as a must-be checklist in order to ensure flawless user experience.</p>
<p><span id="more-4805"></span></p>
<p><strong>Note</strong>:<em> This post is dedicated to the store owners in general, mainly without any technical knowledge in terms of web development. Thanks. </em></p>
<p><strong>1. 404 &#8211; page</strong></p>
<p>Magento has a 404 page that looks like this:</p>
<p><img class="alignnone size-full wp-image-4806" title="Picture 2" src="http://inchoo.net/wp-content/uploads/2010/06/Picture-2.png" alt="" width="626" height="519" /></p>
<p>It&#8217;s a nice start but if you don&#8217;t change it it will look like every other Magento 404 page and secondly you loose the opportunity to turn that awkward moment into a win/win situation. I won&#8217;t even mention that those demo banners need to go too <img src='http://inchoo.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><em>Tip 1</em>: Go to the Admin panel to the CMS &#8211; &gt; Pages and from the list of the pages click on the 404 page. Change the text to better suit your needs and yes please remove the dog and the shirt images or replace them with your own special banners.</p>
<p><em>Tip 2</em>: While you&#8217;re there you could really help the visitor and yourself by adding some relevant choices. For example:</p>
<p>Show a particular catalog listing:</p>
<pre class="brush: php">
{{block type=&quot;catalog/product_list&quot; category_id=&quot;10&quot; name=&quot;product_listing&quot; template=&quot;catalog/product/list.phtml}}
</pre>
<p><strong>2. Replacing or removing the sidebar callouts</strong></p>
<p>This one is a classic for everyone involved with the Magento store since it can slip thru unnoticed even days after the site is launched. These topics are as old as Magento so there is a nice thread on their forum explaining how to remove all of those unwanted features easily. <a href="(http://www.magentocommerce.com/boards/viewthread/2755/)">(http://www.magentocommerce.com/boards/viewthread/2755/)</a></p>
<p>Here&#8217;s the rundown:</p>
<p>Removing callout blocks &#8211; Go to the Manage pages -&gt; Choose the landing page you want to have it removed from and add the following code in the custom design:</p>
<pre class="brush: php">&lt;reference  name=&quot;left&quot;&gt;

&lt;action  method=&quot;unsetChild&quot;&gt;&lt;name&gt;left.permanent.callout&lt;/name&gt;&lt;/action&gt;

&lt;/reference&gt;</pre>
<p>for the left callout and</p>
<pre class="brush: php">

&lt;reference  name=&quot;right&quot;&gt;

&lt;action  method=&quot;unsetChild&quot;&gt;&lt;name&gt;right.permanent.callout&lt;/name&gt;&lt;/action&gt;

&lt;/reference&gt;
</pre>
<p>for the right callout. You&#8217;re done. BTW you can to all of these steps directly from the page.xml file but this is I believe easier for everyone to understand.</p>
<p>If you don&#8217;t need the poll simply disable it from the Admin panel:</p>
<p>System -&gt; Advanced -&gt; Modules output -&gt; Mage_Poll</p>
<p><em>Tip:</em> While you&#8217;re there you can disable any of the functionalities you won&#8217;t be using. It will definitely keep things simpler and the house clean.</p>
<p><strong>3. Store&#8217;s favicon </strong></p>
<p>Having Magento&#8217;s favicon for your store is not an option when you&#8217;re keeping up with your brand&#8217;s image so replace favicon.ico with your store&#8217;s favicon at path/to/magento/favicon.ico and</p>
<p>path/to/magento/skin/frontend/default/[theme name]/favicon.ico</p>
<p><em>Tip:</em> Here&#8217;s a nice service for creating the store&#8217;s favicon in no time</p>
<p>Check it out:  <a href="http://tools.dynamicdrive.com/favicon/">http://tools.dynamicdrive.com/favicon/</a></p>
<p><strong>4. Transactional e-mails setup </strong></p>
<p>This one is so important that it has it&#8217;s own post on how to set those emails properly. We&#8217;ve explained in detail how to set them up and how to apply them to different stores and store-views.</p>
<p>Check it out:  <a href="http://inchoo.net/ecommerce/magento/custom-transactional-emails/">http://inchoo.net/ecommerce/magento/custom-transactional-emails/</a></p>
<p><strong>5. Setting up the newsletter </strong></p>
<p>If you&#8217;re gonna be contacting your customers via the Magento&#8217;s biult-in newsletter system be sure to check Toni&#8217;s post on setting it up.</p>
<p>Check it out:  <a href="http://inchoo.net/ecommerce/magento/magento-newsletter/">http://inchoo.net/ecommerce/magento/magento-newsletter/</a></p>
<p><strong>6. SEO &#8211; Default title and keywords </strong></p>
<p>Oh boy, this one definitely falls in the category of major oversights when launching the store or, ehm, even after the store is launched.</p>
<p>Tomislav wrote very informative article about it including other three popular oversights like the store favicon and the infamous missing &#8220;Google Analytics&#8221;.</p>
<p>Check it out:  <a href="http://inchoo.net/ecommerce/magento/most-popular-magento-oversights/">http://inchoo.net/ecommerce/magento/most-popular-magento-oversights/</a></p>
<p><strong>7. Store logos and e-mail addresses</strong></p>
<p>Store email address definitely deserve your attention since you&#8217;ll need to change the default @EXAMPLE.COM addresses from the Magento admin. This reflects the sales emails as well so this one is a must have before any sales take place.</p>
<p><em>Tip:</em> Go to System -&gt; Store Email addresses and change both the names and emails to start selling.</p>
<p>Oh, don&#8217; forget the PDF print-outs under the Invoice and &#8220;Packing Slip Design&#8221; section since you&#8217;ll need a logo image with at least a 150 dpi resolution to print out nicely on those invoices <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><em>Tip:</em> Go to the System -&gt; Sales -&gt; Invoice and Packing Slip Design</p>
<p>and upload your logo (200&#215;50) for print and print view (for HTML documents only)</p>
<p><strong>8. Privacy policy and Terms of use</strong></p>
<p>These to pages mean a lot to your new customers in terms of establishing a relationship of trust since you&#8217;ll be providing the answers that deserve to be answered before any shopping is done.</p>
<p><strong>9. Payment and Shipping options</strong></p>
<p>Clearly stating which payment options are available before the customer is already at the checkout is of great importance since it will save time for you and your customer. one example is when the customers reaches the payment part in the checkout and realizes that he/she can&#8217;t pay &#8217;cause none of the options suit them. Having  a footer banner with accepted payments logos will remedy that situation and provide a win/win situation for all.</p>
<p>The same applies to shipping options and one thing to do about it would be to make a separate CMS page where you&#8217;ll be stating the payment options and/or shipping options.</p>
<p><em>Tip:</em> Payment methods: Payment Methods -&gt; Saved CC &#8211; Change the &#8220;Enabled&#8221; option to no if you want to avoid the liability of storing credit card numbers even if they are encrypted. It&#8217;s optional but for obvious reasons strongly recommended.</p>
<p>That&#8217;s it. No, of course not. With store owning and maintaing a reputable business there is always one more thing that you can do for you and your customers. It&#8217;s often those little things that make a difference so don&#8217;t put them aside. Do those last things first. Cheers!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/last-things-first/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>To Wufoo</title>
		<link>http://www.lakevillewebdesign.com/to%c2%a0wufoo/</link>
		<comments>http://www.lakevillewebdesign.com/to%c2%a0wufoo/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 12:11:27 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6545</guid>
		<description><![CDATA[When I decided to leave my last job, I decided I was going to leave at the beginning of the Summer. I was going to bum around the Summer not doing much, maybe even extend that for a whole year. It sounded pretty appealing. There was very little that could have strayed me from my [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wufoo.com"><img src="http://css-tricks.com/wp-content/csstricks-uploads/wufoo-icon-250.png" alt="Wufoo Logo" style="float: right; margin: 0 0 1px 10px;" /></a></p><p>When I decided to leave my last job, I decided I was going to leave at the beginning of the Summer. I was going to bum around the Summer not doing much, maybe even extend that for a whole year. It sounded pretty appealing. There was very little that could have strayed me from my awesome plan. I even got to turn down some pretty swell job offers.</p><p>Then one thing came along that turned that whole idea around. Something I&#8217;d way rather do than some hippie summer. I am now working for <a href="http://wufoo.com">Wufoo</a>!</p><p><span id="more-6545"></span></p><p>I bet a lot of you know that I&#8217;ve been a big fan of Wufoo. Wufoo is a form building web service. It&#8217;s a big part of my belief in <a href="http://css-tricks.com/instant-productivity/">instant productivity</a>. Designing forms and giving them a high degree of functionality is <em>a ton</em> of work. Wufoo makes that job so trivially easy, it is actually fun.</p><p>I am going to be doing a variety of things with them, including design work (yay!) and blogging (yay!) and more. In fact you can already see my first blog post on the Wufoo blog: a tutorial on <a href="http://wufoo.com/2010/06/10/survey-with-public-results/">creating a poll with instant public results</a>. Check it out and let me know what you think.</p><p>If you do the social media thing, I&#8217;d encourage you to <a href="http://twitter.com/wufoo">follow Wufoo on Twitter</a> / <a href="http://www.facebook.com/formbuilder">fan Wufoo on Facebook</a>. We intend to keep people updated on new Wufoo stuff (there is lots of cool stuff in the pipeline) but just as importantly, share interesting resources and research through those outlets. Most importantly, if you&#8217;ve never tried Wufoo, you ought to <a href="http://wufoo.com/signup/">sign up</a> and give it a whirl. I&#8217;m not just towing the company line here, it&#8217;ll change how you feel about building forms.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/to%c2%a0wufoo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento 1.4.1.0 – Mini review and a “Thank you for the PayPal cleanup”</title>
		<link>http://www.lakevillewebdesign.com/magento-1-4-1-0-%e2%80%93-mini-review-and-a-%e2%80%9cthank-you-for-the-paypal-cleanup%e2%80%9d/</link>
		<comments>http://www.lakevillewebdesign.com/magento-1-4-1-0-%e2%80%93-mini-review-and-a-%e2%80%9cthank-you-for-the-paypal-cleanup%e2%80%9d/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 11:18:53 +0000</pubDate>
		<dc:creator>Branko Ajzele</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4758</guid>
		<description><![CDATA[Finally Magento 1.4.1.0 has been released. Its been &#8220;forever&#8221; since we got stuck with Magento 1.4.0.1. Anyhow, its always nice to have updated, bug fixed, and a bit improved version of your software. Especially if it brings money to your table. Hope all of you site owners will enjoy this new release. However, keep in [...]]]></description>
			<content:encoded><![CDATA[<p>Finally Magento 1.4.1.0 has been released. Its been &#8220;forever&#8221; since we got stuck with Magento 1.4.0.1. Anyhow, its always nice to have updated, bug fixed, and a bit improved version of your software. Especially if it brings money to your table. Hope all of you site owners will enjoy this new release.<span id="more-4758"></span></p>
<p>However, keep in mind that upgrade will not be painless. On contrary, I expect lot of issues with lot of custom extensions coded around the &#8220;Sales&#8221; functionality. Reason for this is the &#8220;Sales module database structure changed from EAV into flat tables&#8221;. Hopefully you, the site owner, can spare several hundred of dollars for the upgrade. So please, as I developer all I can say is be gentle on us if your site snaps during the upgrade process <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Besides the obvious (read usual) bug fixes, there were several other under the hood changes and improvements such as updated version of TinyMCE, ability to exclude a category from navigation menu, ability to use static URLs for media in WYSIWYG or image browser and other neat stuff.</p>
<p>My favorite change is the one related to the PayPal section. Seems like finally someone decided to organize this stuff under one menu item, you know the one under System > Configuration > Sales > PayPal. Not much but it makes people like me happy.</p>
<p>My apologize if I left a bit sarcastic impression. Thats just me <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , and my sincere need to express my self from time to time. Besides, speed aside is there any serious shop alternative when it comes to features for Magento? </p>
<p>Anyhow, thats about it. Please read the official <a href="http://www.magentocommerce.com/download/release_notes#Release%20Notes%20-%20Magento%201.4.1.0%20stable%20(June%2010,%202010)">Rlease Notes &#8211; Magento 1.4.1.0 stable (June 10, 2010)</a> for full info.</p>
<p>And happy upgrade to all you trying to stay up to date <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/magento-1-4-1-0-%e2%80%93-mini-review-and-a-%e2%80%9cthank-you-for-the-paypal-cleanup%e2%80%9d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ajax Image Uploading (With Less Suck)</title>
		<link>http://www.lakevillewebdesign.com/ajax-image-uploading-with-less%c2%a0suck/</link>
		<comments>http://www.lakevillewebdesign.com/ajax-image-uploading-with-less%c2%a0suck/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 12:20:05 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6522</guid>
		<description><![CDATA[This technology demo is courtesy of ZURB and the post was co-authored by ZURB and Chris. How do you upload images now? You select a file and click upload. Simple right? Except once you select your image you can no longer see what was selected. The name of the file is at the end of the input, [...]]]></description>
			<content:encoded><![CDATA[<div class="explanation">This technology demo is courtesy of <a href="http://www.zurb.com/">ZURB</a> and the post was co-authored by ZURB and Chris.</div><p><strong>How do you upload images now?</strong></p><p>You select a file and click upload. Simple right? Except once you select your image you can no longer see what was selected. The name of the file is at the end of the input, and if the input is short, or the file path is deep, you&#8217;re not going to see anything useful. You forget what you selected and have not idea what you&#8217;re about to upload. <em>&#8220;Wait, did I upload a picture of my face or something less professional?&#8221;</em></p><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/oldandbusted.png" width="407" height="175" alt="" title="" /></div><p>Let&#8217;s make it better.</p><p><span id="more-6522"></span></p><p>The key is having an image preview that gets shown before the user needs to commit to saving it.  So we ditch the upload button in favor of a save button. Now when a file is selected via the file section input, some AJAX kicks in. The image is processed server side and a thumbnail is loaded onto the existing page.</p><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/newbetterimageupload.png" width="418" height="195" alt="" title="" /></div><p>Doesn&#8217;t that feel so much better? We now have a visual representation (imagine that) of the image we selected.</p><p>This is particularly useful in larger forms when many fields will be submitted with a single action. It allows the user to review the form before pressing save and see what image (or images) they selected.</p><h3>How it&#8217;s done</h3><p>Curious how this is done? Here&#8217;s the code.</p><p>We can use a standard HTML form. We&#8217;ll include that as well as an image preview area.</p><pre><code class="javascript">&lt;div id="upload-area"&gt;
	&lt;div id="preview"&gt;
		&lt;img width="100px" height="100px" src="/images/icons/128px/zurb.png" id="thumb"&gt;
	&lt;/div&gt;

	&lt;form action="/playground/ajax_upload" id="newHotnessForm"&gt;
		&lt;label&gt;Upload a Picture of Yourself&lt;/label&gt;
		&lt;input type="file" size="20" id="imageUpload" class=" "&gt;
		&lt;button class="button" type="submit"&gt;Save&lt;/button&gt;
	&lt;/form&gt;
&lt;/div&gt;</code></pre><p>The action of the form should point somewhere the process the uploading of the image, regardless of the presence of JavaScript. You may also want to consider only appending the preview markup via JavaScript, as that won&#8217;t work without JS.</p><p>You&#8217;re going to need <a href="http://jquery.com">jQuery</a> and the <a href="http://valums.com/ajax-upload/">AJAX Upload jQuery plugin</a> by Andrew Valums. Link them up, making sure jQuery is loaded first. Note that the AJAX Upload plugin does require some configuration and server side stuff to work. Check out that link for details.</p><pre><code class="html">&lt;script src="/js/jquery.min.js" type="text/javascript"&gt;&lt;/script&gt;
&lt;script src="/js/ajaxupload.js" type="text/javascript"&gt;&lt;/script&gt;</code></pre><p>Here is the JavaScript we&#8217;re going to add in its entirety.</p><pre><code class="javascript">$(document).ready(function(){

	var thumb = $('#thumb');	

	new AjaxUpload('imageUpload', {
		action: $('#newHotnessForm').attr('action'),
		name: 'image',
		onSubmit: function(file, extension) {
			$('#preview).addClass('loading');
		},
		onComplete: function(file, response) {
			thumb.load(function(){
				$('#preview').removeClass('loading');
				thumb.unbind();
			});
			thumb.attr('src', response);
		}
	});
});</code></pre><p>Here&#8217;s that in plain English:</p><ol><li>Attach plugin behavior to the file input</li><li>Specify the action URL, appropriately pulling it from the action URL in the markup</li><li>When a file is selected, immediately add a class of &#8220;loading&#8221; to the preview area. This class name, through CSS, hides the image (e.g. <tt>.loading img { display: none; }</tt> and applies a background image (<a href="http://ajaxload.info/">a spinner</a>)</li><li>Upon AJAX success, remove the <tt>loading</tt> class and set the <tt>src</tt> of the image to the response URL that the plugin returns.</li></ol><h3>Preview Only</h3><p>Note that the above code deals with the preview functionality only. The file section input still contains the proper file path. So when the user clicks the &#8220;Save&#8221; button, the form will still need to be processed and handled by whatever server side technology you have ready for that. So yes, you will be essentially uploading the image once (for the preview) and then uploading it again (to save it in a more permanent way).</p><p>When you are setting up/configuring the plugin, you&#8217;ll set up a directory for a server side script to save uploaded images to. You might want to have that live at somewhere like <tt>/images/temp/</tt>. That way you know that anything uploaded to that directory is transient and can be cleaned out temporarily to keep the server clean. A empty-that-directory CRON job might be a good idea.</p><h3>Demo</h3><p>A working demo is available on ZURB&#8217;s site, which also includes more written information. Because of the server side stuff needing to happen, a download unfortunately isn&#8217;t practical.</p><p><a class="button" href="http://www.zurb.com/playground/ajax_upload">View Demo</a></p><p>&nbsp;</p><div class="explanation"><p>Wondering about other awesome techniques with CSS3 and JavaScript? Check out the <a href="http://www.zurb.com/playground/">ZURB Playground</a>.</p><p>ZURB is a close-knit team of interaction designers and strategists that help companies design better products &#038; services. Since 1998 ZURB has helped over 75+ clients including: Facebook, eBay, NYSE, Yahoo, Zazzle, Playlist, Britney Spears, among others.</p></div><p><a href="http://www.shophtml.com/order_now.php?coupon_code=cst91"><img src="http://css-tricks.com/images/CSSTrickAd_31-may-10.png" alt="PSD to XHTML, WordPress, Joomla | Design to XHTML" /></a></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/ajax-image-uploading-with-less%c2%a0suck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instant Productivity</title>
		<link>http://www.lakevillewebdesign.com/instant%c2%a0productivity/</link>
		<comments>http://www.lakevillewebdesign.com/instant%c2%a0productivity/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 12:04:07 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6499</guid>
		<description><![CDATA[All jobs are a series of tasks needing to be completed. Let&#8217;s look at a construction worker. Today she needs to bust up a bunch of cement. Here is one path of action: Put hardhat on Start jackhammer Bust up a bunch of cement Here is another way she could have gone about it: Scout out area Determine weather conditions Make labor [...]]]></description>
			<content:encoded><![CDATA[<p>All jobs are a series of tasks needing to be completed. Let&#8217;s look at a construction worker. Today she needs to bust up a bunch of cement. Here is one path of action:</p><blockquote><p>Put hardhat on<br /> Start jackhammer<br /> Bust up a bunch of cement</p></blockquote><p>Here is another way she could have gone about it:</p><blockquote><p>Scout out area<br /> Determine weather conditions<br /> Make labor assessment<br /> Evaluate different jackhammer models<br /> Stretching and breathing exercises<br /> Get third party opinion<br /> Coffee break<br /> Put hardhat on<br /> Start jackhammer<br /> Bust up a bunch of cement</p></blockquote><p>Which way is more efficient? The go-getters amongst you might say the former &mdash; just get after it! The more management types among you might argue the latter &mdash; having a full evaluation of the task means the job will be done with more efficiency once it&#8217;s started.</p><p>The answer, in my opinion, as most things in life, is somewhere in between. But a lot more former than latter, especially when it comes to web work.</p><p><span id="more-6499"></span></p><p>Let&#8217;s bring it back to the web. Now the job at hand is designing a specialized landing page for a product. Here is one way she could do it:</p><blockquote><p>Open up Photoshop<br /> Start playing around with ideas<br /> Land on something decent, or go back to the top</p></blockquote><p>Here is another way:</p><blockquote><p>Conduct interviews with potential customers<br /> Analyze past analytic data of website<br /> Browse web design galleries<br /> Go on urban walking tour for color inspiration<br /> Evaluate latest web technologies for animation<br /> Poll twitter followers for opinions<br /> Attempt to use Fireworks instead of Photoshop<br /> Coffee break<br /> Catch up on email and RSS feeds<br /> Open up Photoshop<br /> Start playing around with ideas<br /> Land on something decent, or go back to the top</p></blockquote><p>Clearly there is value in the latter group. That group is filled with activities that will help us grow as designers and dig into our current task at a deeper and perhaps more insightful level. It is also filled with glorified thumb twiddling.</p><h3>Choice of Tools</h3><p>I use WordPress. It just so happened that back as a fledgling wanna-be web designer I came across it, installed it, and starting using it to make sites. Years later, I&#8217;m still using it to make sites because I know it really well and I don&#8217;t feel limited in its abilities. I don&#8217;t feel particularly compelled to even try Joomla, because with WordPress I can be <em>instantly productive</em>, rather than enter a new learning curve. Call me crazy.</p><p>I&#8217;m also aware that that is dangerous territory. The web moves fast and it&#8217;s easy to get left behind. I&#8217;m sure we all know some old curmudgeons that are convinced some crazily outdated technology is superior. We might laugh and point. We might be right. Or they might be right. Maybe they are the ones being instantly productive.</p><p><a href="http://www.bobstaake.com/pixfix/films.shtml">Bob Staake uses Photoshop 3.0</a> and nobody is calling him unproductive.</p><h3>So what?</h3><p>My point is that if you have a job to do, <strong>just get after it</strong>. Roll up your sleeves, get the tools ready that you already know you can be productive with, and start dishing out some <em>instant productivity</em>.</p><p>Then maybe after you get some work done you can read you feeds and do some scholarly thumb twiddling =)</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/instant%c2%a0productivity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Consuming the Magento’s XMLRPC web service through Android</title>
		<link>http://www.lakevillewebdesign.com/consuming-the-magento%e2%80%99s-xmlrpc-web-service-through-android/</link>
		<comments>http://www.lakevillewebdesign.com/consuming-the-magento%e2%80%99s-xmlrpc-web-service-through-android/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 09:56:47 +0000</pubDate>
		<dc:creator>Branko Ajzele</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4736</guid>
		<description><![CDATA[Recently I became proud owner of HTC Desire mobile device powered by Android platform. This is something I got my boss Tomislav Bilic to thank to. Even before (several weeks before) getting my real Android powered phone, I started poking around Android platform. Behind this interest was my desire is was/is to do mobile eCommerce [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I became proud owner of HTC Desire mobile device powered by Android platform. This is something I got my boss Tomislav Bilic to thank to. Even before (several weeks before) getting my real Android powered phone, I started poking around Android platform. Behind this interest was my desire is was/is to do mobile eCommerce apps. As I have been involved in everyday Magento development for the last two years now, it was only logical for my first steps to do  something Magento-Android related.<span id="more-4736"></span></p>
<p>So, what was on the plate? In order to do anything mobile with Magento you need to connect to its API, whether it is SOAP or XMLRPC API interface.</p>
<p>Personally I am a bigger fan of XMLRPC (can&#8217;t say why actually). In regards to that, my first task was to connect my Android to Magento XMLRPC API. Surprisingly, Android framework (SDK) does not have feature rich and ready classes for doin XMLRPC calls like lets say Zend Framework has.</p>
<p>Luckily for me, there was already someone who had to deal with this issue before me. If you open the <a href="http://code.google.com/p/android-xmlrpc/">Android-XMLRPC</a> page you will find a nice little library for handling the XMLRPC in Android. This was all I needed to get me started. Here is an example of how to connect to Magento trough this library.</p>
<pre class="brush: java">

// ...

String sessionId = &quot;&quot;;

//HashMap&lt;string , String&gt; params = new HashMap&lt;/string&gt;&lt;string , String&gt;();
//params.put(&quot;apiUser&quot;, &quot;developer&quot;);
//params.put(&quot;apiKey&quot;, &quot;magento123&quot;);

XMLRPCClient client = new XMLRPCClient(&quot;http://some-site.com/index.php/api/xmlrpc/&quot;);

try {
	/*
		sessionId = (String)client.callEx(&quot;login&quot;, new Object[]{params});
		will cause
		DEBUG/MY_XMLRPCException_MSG(196): XMLRPC Fault: Calling parameters do not match signature [code 623]
	*/
	sessionId = (String)client.call(&quot;login&quot;, &quot;developer&quot;, &quot;magento123&quot;);

	Log.d(&quot;MY_XMLRPC_SUCCESS_SESSION_ID&quot;, sessionId);
}
catch (XMLRPCException e) {

	Log.d(&quot;MY_XMLRPCException_MSG&quot;, e.getMessage());
}

// ...
</pre>
<p>By executing above you will most likely trigger the exception and get the following error.</p>
<pre class="brush: java">
/*
06-09 09:33:53.313: DEBUG/MY_XMLRPCException_MSG(226): java.net.SocketException: Permission denied (maybe missing INTERNET permission).
*/
</pre>
<p>As you can see, error is pretty self-descriptive. You need to open your AndroidManifest.xml file and add the following inside the "manifest" attribute.</p>
<pre class="brush: xml">
/*
&lt;uses -permission android:name=&quot;android.permission.INTERNET&quot;&gt;&lt;/uses&gt;
*/
</pre>
<p>After successfully executed XMLRPC request, you should see the log message like shown below.</p>
<pre class="brush: java">
/*
06-09 09:49:27.163: DEBUG/MY_XMLRPC_SUCCESS_SESSION_ID(223): 9273ad9a5a52a959fec32439944bc84b
*/
</pre>
<p>Meaning you now have session id and can do the rest of the Magento XMLRPC method calls by passing this session id.</p>
<p>Also, you can see in the code, that I commented some stuff. For those ambitions this is a little tip on how to do more complex API calls to the rest of the Magento XMLRPC API methods exposed. This one you need to figure on your own.</p>
<p>Hope it comes in handy to the Magento-Android newcomers.</p>
<p>From Croatia with love, cheers.</string></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/consuming-the-magento%e2%80%99s-xmlrpc-web-service-through-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NetNewsWire Theme: Fixed</title>
		<link>http://www.lakevillewebdesign.com/netnewswire-theme%c2%a0fixed/</link>
		<comments>http://www.lakevillewebdesign.com/netnewswire-theme%c2%a0fixed/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 13:20:33 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6505</guid>
		<description><![CDATA[I love me some Google Reader. I got all my feeds up in there and it&#8217;s like having the longest most interesting newspaper ever. It brings me great pleasure to know that when people build all these RSS reading applications, they are essentially just different user interfaces for Google Reader. That way we can play [...]]]></description>
			<content:encoded><![CDATA[<p>I love me some <a href="http://www.google.com/reader/">Google Reader</a>. I got all my feeds up in there and it&#8217;s like having the longest most interesting newspaper ever. It brings me great pleasure to know that when people build all these RSS reading applications, they are essentially just different user interfaces for Google Reader. That way we can play with lots of different ones but still maintain a unified home for our feeds.</p><p>The web interface for Google Reader is pretty good. They have mobile web versions as well that also aren&#8217;t bad. But there is one little thing that kills me about the web version of Google Reader. <span id="more-6505"></span> Let&#8217;s say you come down to an article you want to read&#8230;</p><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/readingnormalarticle.jpg" width="518" height="304" alt="" title="" /><br /> <strong>Step 1:</strong> Keypress: J-J-J-J, Oh cool, this article looks interesting, I think I&#8217;ll read it.</div><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/articlepusheddown.jpg" width="523" height="315" alt="" title="" /><br /> <strong>Step 2:</strong> Oh crap, where did the article go all the sudden? OH YEAH IT WAS PUSHED DOWN OUT OF SITE BECAUSE AN IN AN ARTICLE I ALREADY SKIPPED HAS NOW LOADED ABOVE IT.</div><p>Yeah, there are ways around it. I could switch to collapsed view. But it&#8217;s the principal of the thing. I specifically skipped the article above and gave a new article focus. Focus should not be ripped away from me for any reason at that point. It happened to me so many times I just had to give up on the web Google Reader.</p><p>On the iPhone I use dedicated apps for RSS reading (I like both <a href="http://phantomfish.com/byline.html">Byline</a> and <a href="http://reederapp.com/2/">Reeder</a>). I figure why not use a dedicated app on the desktop too. I have <a href="http://accidentalninja.net/">a friend</a> who swears by <a href="http://www.newsgator.com/individuals/netnewswire/">NetNewsWire</a>, so I&#8217;ve been using that. It&#8217;s pretty great. It has a really simple and easy interface. Not much to get in your way, but just about everything that you need. My favorite part is how it has a built in web browser, so switching over to read the article on the site is really quick and painless. It uses WebKit internally to do that.</p><p>NetNewsWire also supports <strong>themes</strong>. Here is one that ships with it:</p><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/autumntheme.jpg" width="552" height="279" alt="" title="" /><br /> C&#8217;mon, really?</div><p>The themes that come with the app aren&#8217;t particularly impressive. For one thing, they are literally all fluid width. One of my biggest gripes about fluid width on digital screens is how typically the only thing that happens when a screen is adjusted in the line length of text changes. Ironic, in that in my opinion the only thing that shouldn&#8217;t change in a fluid width layout is line length.</p><p>If you open up the applications package, you can drill down and find where the themes are kept. They are files with the <tt>.nnwstyle</tt> extension. If you then show the package contents of those, you can see the how they are built. They are literally just HTML and CSS files. Awesome.</p><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/newnewswirepackage.png" width="376" height="304" alt="" title="" /><br /> Right click > Show Package Contents</div><h3>Fixed</h3><p>So I set about trying to build my own theme. I probably went through 5 different ideas and I&#8217;m still not entirely satisfied with this, but I&#8217;m just gonna stop fiddling with it for a while and let it sink in. I&#8217;m also going to share it here in case anybody else is a NetNewsWire user and wants to try it, or have a base to play with their own.</p><p>I&#8217;m calling it &#8220;Fixed&#8221; because:</p><ul><li>It&#8217;s fixed width.</li><li>It has a fixed header.</li><li>It fixes a bunch of stuff I found annoying about feeds.</li></ul><p>It looks like this:</p><p><img src="http://css-tricks.com/wp-content/csstricks-uploads/fixedtheme.png" width="570" height="495" alt="" title="" /></p><p>Hey, it ain&#8217;t much, but that&#8217;s kind of the point. The idea is to get out of the way and just make articles as readable and cruft-free as possible.</p><h4>Features</h4><ul><li>Title is big and fixed so you can&#8217;t forget what you are reading and are always close to a link to it&#8217;s real URL on the web.</li><li>Source and other meta information are fixed above the title for similar reasons.</li><li>jQuery is loaded into the theme, which is utilized a number of ways.</li><li>Line length is fixed at a comfortable length.</li><li>Images are forced to be block level and spaced out (some sites leave images inline with text and it causes weird layout issues over RSS)</li><p>Widows in post titles are prevented by inserting a non-breaking space between the last two words <a href="http://css-tricks.com/preventing-widows-in-post-titles/">like this</a>.</p><li>Embedded videos (or any embedded content from any source) is forced to be the same width as the line length.</li><li>iframes are removed. Google ads in feeds come across in iframes, so those are gone. I can&#8217;t think of any real legitimate use for an iframe being in RSS.</li><li>Tweetmeme/ReTweet buttons are removed.</li><li>Any images that are really small (under 30px in both height and width) or specifically related to FeedBurner are removed. This removed a lot of junk from the end of a lot of feeds, including seeing a zillion &#8220;sharing&#8221; buttons or FeedBurner cruft.</li></ul><p><a href="http://css-tricks.com/examples/Fixed.nnwstyle.zip" class="button">Download Files</a></p><p>I think you can just double-click it from the desktop, and assuming you have NetNewsWire installed it will install it as a theme.</p><p>Only gripe about NetNewsWire: it says &#8220;flagged&#8221; instead of &#8220;starred&#8221;, can&#8217;t we just use &#8220;starred&#8221; and keep it consistent? But worse, you can&#8217;t &#8220;share&#8221; things, which I l<a href="http://www.google.com/reader/shared/chriscoyier">ike to do</a>. It does have <a href="http://delicious.com/chriscoyier">Delicious</a> and <a href="http://www.instapaper.com/">Instapaper</a> support though, which rocks.<p><a href="http://www.shophtml.com/order_now.php?coupon_code=cst91"><img src="http://css-tricks.com/images/CSSTrickAd_31-may-10.png" alt="PSD to XHTML, WordPress, Joomla | Design to XHTML" /></a></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/netnewswire-theme%c2%a0fixed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Transparency in Web Design</title>
		<link>http://www.lakevillewebdesign.com/transparency-in-web%c2%a0design/</link>
		<comments>http://www.lakevillewebdesign.com/transparency-in-web%c2%a0design/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 02:50:00 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=5473</guid>
		<description><![CDATA[How is it done? Let&#8217;s take a gander at four different ways. Each of them handling the illusion in a different way, and each completely appropriate depending on the situation at hand.Totally Friggin Fake ItFrom the Spectrum Theme websiteThe end result of any web design is basically an illusion anyway. You can always create your [...]]]></description>
			<content:encoded><![CDATA[<p>How is it done? Let&#8217;s take a gander at four different ways. Each of them handling the illusion in a different way, and each completely appropriate depending on the situation at hand.</p><p><span id="more-5473"></span></p><h3>Totally Friggin Fake It</h3><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/spectrum.jpg" width="454" height="184" alt="" title="" /><br /> From the <a href="http://spectrum-theme.com/">Spectrum Theme</a> website</div><p>The end result of any web design is basically an illusion anyway. You can always create your transparent effects in Photoshop or whatever other graphics editor and export flat graphics. In Photoshop, transparent effects can be created by changing a layers opacity level, fill level, or blending mode, just to name a few.</p><h3>Opacity</h3><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/opacitybutton.jpg" width="367" height="95" alt="" title="" /><br /> This entire button has opacity applied to it, to emphasize that it is currently &#8220;disabled&#8221;.</div><p>You can make any element transparent by using the <tt>opacity</tt> parameter of CSS.</p><pre><code class="css">#anything {
  opacity: 0.5;  /* 50% transparent */
}</code></pre><p>If you need to support older browsers, <a href="http://css-tricks.com/css-transparency-settings-for-all-broswers/">see here</a>.</p><p>Do note that all descendants of the element with opacity also become transparent. There is no way to &#8220;force&#8221; any descendant to be come any less transparent as the parent is.</p><h3>RGBa / HSLa</h3><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/rgbaarchitects.jpg" width="296" height="322" alt="" title="" /><br /> From the <a href="http://likearchitects.com/">Like Architects</a> site</div><p>Using RGBa for a color value in CSS, you can set a transparency level on any color. This has the distinct advantage over opacity in that it doesn&#8217;t have any affect on descendants. It is also nice in that creating faded out variations of a color is as easy as changing the final alpha value. Speaking of color variations, that is even easier to do with HSLa, and is still able to handle transparency.</p><pre><code class="css">#anything {
  background: rgba(0,0,0,0.5);  /* 50% transparent */
}</code></pre><pre><code class="css">#anything {
  background: hsla(0,0,0,0.5);  /* 50% transparent */
}</code></pre><h3>PNG</h3><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/shadowtranparency.png" width="400" height="300" alt="" title="" /><br /> From a <a href="http://dribbble.com/shots/22050-Shadow-Features">Dribbble</a></div><p>When &#8220;Saving for web&#8221; from Photoshop, you have two choices for PNG&#8217;s: PNG-8 and PNG-24. PNG-8 is like a GIF in that you can have transparency in pixels, but a pixel is either fully transparent or fully opaque, no in-between. PNG-24&#8217;s, while far bigger in file size, support full alpha-transparency.</p><p>In the example above, the shadows from the content areas are from PNG-24s so that the texture in the background can change and the shadows will still be the same.<p><a href="http://www.shophtml.com/order_now.php?coupon_code=cst91"><img src="http://css-tricks.com/images/CSSTrickAd_31-may-10.png" alt="PSD to XHTML, WordPress, Joomla | Design to XHTML" /></a></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/transparency-in-web%c2%a0design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GoNab!t – Shopping Social in Middle East</title>
		<link>http://www.lakevillewebdesign.com/gonabt-%e2%80%93-shopping-social-in-middle-east/</link>
		<comments>http://www.lakevillewebdesign.com/gonabt-%e2%80%93-shopping-social-in-middle-east/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 19:53:23 +0000</pubDate>
		<dc:creator>Tomislav Bilic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4658</guid>
		<description><![CDATA[&#8220;We just sold another one!&#8221;, cried Dan Stuart after 25 people ordered &#8220;AED 50 for AED 100 Worth of Authentic Lebanese Cuisine at Mashawi&#8221; deal. Only few hours later the deal is sold 66 times. GoNabit.com is a new Shopping Social site that offers users the chance to get money off a different service or [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;We just sold another one!&#8221;, cried Dan Stuart after 25 people ordered &#8220;<a href="http://www.gonabit.com/dubai/100-aed-of-authentic-lebanese-cuisine-at-mashawi-dubai.html">AED 50 for AED 100 Worth of Authentic Lebanese Cuisine at Mashawi</a>&#8221; deal. Only few hours later the deal is sold 66 times. GoNabit.com is a new Shopping Social site that offers users the chance to get money off a different service or product each day if enough people across that city sign up. This is the first group-buying platform in the Middle East, launched in Dubai last week and will be available in Abu Dhabi shortly afterwards. Those of you tech-geeks readers are probably guessing it right. It is powered by Magento!<br />
<span id="more-4658"></span><br />
When <a href="http://www.danstuart.me/">Dan Stuart</a> approached us and presented the vision of the project, we knew it will be a challenge to build it in Magento. This is not a classic eCommerce store. There are no ordinary categories and products you are used to in Magento. Instead, we have a tailored shopping social platform with many custom features. </p>
<p>We had a pleasure to work with two great individuals Dan Stuart and his co-founder Sohrab Jahanbani. They already have 22 deals scheduled over the next month, with daily e-mails going out to more than 2,500 people in Dubai and to a significant following on Facebook and Twitter.</p>
<p>Every day GoNabit features one or two huge deals. Once there is a  minimum number of buyers, deal ‘tips’ and the credit card gets charged. At this time GoNabit sends voucher to the buyer. Buyer can then print his voucher and take it to the local merchant for redemption. If the minimum number of purchases is not reached before the deal ends, no one gets charged and no one gets the deal. This is how social component and the community work together on boosting sales. </p>
<p>GoNabit became a popular topic in Dubai where people are chit-chatting about current deals on their coffee-breaks.</p>
<p>View the site at: <a href="http://www.gonabit.com">www.gonabit.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/gonabt-%e2%80%93-shopping-social-in-middle-east/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It’s Fresh! It’s Purple! Check it out!</title>
		<link>http://www.lakevillewebdesign.com/it%e2%80%99s-fresh-it%e2%80%99s-purple-check-it-out/</link>
		<comments>http://www.lakevillewebdesign.com/it%e2%80%99s-fresh-it%e2%80%99s-purple-check-it-out/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 08:14:45 +0000</pubDate>
		<dc:creator>Aron Stanic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4585</guid>
		<description><![CDATA[Whether you know them as jewellery or jewelry, these shiny pieces of joy can really light up your and your loved one&#8217;s day. When you can also get them online and have fun in the process, what more could you ask for? Ok, maybe a discount code or two, but that can also be arranged&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>Whether you know them as jewellery or jewelry, these shiny pieces of joy  can really light up your and your loved one&#8217;s day. When you can also  get them online and have fun in the process, what more could you ask for?  Ok, maybe a discount code or two, but that can also be arranged&#8230; <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
<span id="more-4585"></span><br />
<strong><a title="Get Fresh! Get Purple!" href="http://freshpurple.com" >Fresh  Purple</a></strong> is a London based online jewellery store that combines the  richness and luxury of tradition of the color purple with a  contemporary, fresh elegance to bring some truly stunning products to  their customers. In addition to selling beautiful items, they strive to  educate their customers on all things jewellery. On their website you  can find some great information on various types of gemstones, learn how  to tell fake silver/gold from the real deal, easily determine your ring  size and get some good tips on how to take proper care of your shiny  friends.</p>
<p>We&#8217;ve recently worked with <strong>Michael Yoong</strong> and <strong>Monica Zhu</strong> to help them freshen up their Magento online storefront. They have  prepared the new design files, and our developers <strong>Branko Ajzele</strong> and  <strong>Filip Svetlicic </strong>did a great job guiding the clients in the process and  implementing their ideas in line with the best Magento practice. Much of  the credit for successful implementation of this project is due to our  clients as well who were well prepared, had clear set of requirements, new  exactly what they wanted to achieve, and were very receptive to our  developers&#8217; advice.</p>
<p>Working with Fresh Purple was a great  experience and we can wholeheartedly recommend doing business with them  to anyone. Make sure to check the new site at <a title="Fresh Purple Jewellery" href="http://freshpurple.com" >http://freshpurple.com</a></p>
<blockquote><p>&#8220;Having  set up a basic Magento store with a local developer in order to get a  feel for the system, we were looking for someone to help us produce a  professional redesign of our website. We were very impressed by the  wealth of Magento knowledge and expertise that Surgeworks/Inchoo had  published on their blog and so contacted them for a quote. From then on,  it was smooth sailing all the way.</p>
<p>Communication with the developers  was great and they were a real pleasure to work with, implementing  everything from our design without complaints or any seeming difficulty.  They were ready with advice to improve our initial design and very  helpful with providing suggestions, tips and tricks to make running the  store as smooth and trouble-free as possible after their work was done.</p>
<p>We  couldn’t have found a better group of Magento professionals to work  with and we will certainly use them again for any further work we need. &#8221;</p>
<p><strong>Michael  Yoong, Director, Fresh Purple Jewellery</strong></p></blockquote>
<p><strong><a title="Click here for some jewellery!" href="http://freshpurple.com" ><img class="alignnone size-full wp-image-4595" title="fresh-purple-large" src="http://inchoo.net/wp-content/uploads/2010/06/fresh-purple-large.jpg" alt="" width="620" height="443" /></a><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/it%e2%80%99s-fresh-it%e2%80%99s-purple-check-it-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3 Button Maker</title>
		<link>http://www.lakevillewebdesign.com/css3-button%c2%a0maker/</link>
		<comments>http://www.lakevillewebdesign.com/css3-button%c2%a0maker/#comments</comments>
		<pubDate>Sun, 30 May 2010 13:00:02 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6478</guid>
		<description><![CDATA[Drag things, pick colors, make a nice class for your buttons&#8230; introducing the Button Maker.Boy, that&#8217;s a nice button right there.I&#8217;m saying &#8220;CSS3&#8243;, because these make use of gradients, shadows, and rounded corners which contribute greatly to their button-ness. In older browers that don&#8217;t support these properties, the fallback is solid-color background, no shadows, and [...]]]></description>
			<content:encoded><![CDATA[<p>Drag things, pick colors, make a nice class for your buttons&#8230; introducing the <a href="http://css-tricks.com/examples/ButtonMaker/">Button Maker</a>.</p><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/buttonmakerexample.jpg" width="392" height="233" alt="" title="" /><br /> Boy, that&#8217;s a nice button right there.</div><p><span id="more-6478"></span></p><p>I&#8217;m saying &#8220;CSS3&#8243;, because these make use of gradients, shadows, and rounded corners which contribute greatly to their button-ness. In older browers that don&#8217;t support these properties, the fallback is solid-color background, no shadows, and square corners. Not a big deal.</p><p>I hope this is painfully obvious, but to use this Button Maker thing, you just adjust the settings until you have a nice looking button, then press the button and it will give you the CSS. Copy and paste at your leisure. Now you can use the class name &#8220;button&#8221; on HTML elements to make them look like buttons. The CSS isn&#8217;t formatted real pretty. If someone has an idea on how to make that better, please do let me know.</p><h3>The super-awesome empowering concept&#8230;</h3><p>&#8230;in regards to how the Button Maker preview works.</p><p>It&#8217;s easy to change the CSS of an element on-the-fly with JavaScript. But how can we change the :hover state? The answer is that we can&#8217;t really, at least not really easily. We could attach a mouseenter event that would apply some new CSS that would override the old, and a mouseleave event that would put it back. That&#8217;s a lot of overhead for something so relatively small. It gets even more complicated if we wanted to control the :active state as well.</p><p>This Button Maker shows you a live working version of the button you create, complete with :hover and :active states. It is done without attaching any JavaScript events to the button itself. So how is it done? I did it with a technique I ripped off from <a href="http://dougneiner.com">Doug Neiner</a> who presented it (as small part of a totally different application) at <a href="http://events.jquery.org/2010/sf-bay-area/">jQConf</a>.</p><p>OK OK I&#8217;ll get on with it. The idea is to append a <tt>&lt;style></tt> element into the <tt>&lt;head></tt> which overrides the existing CSS (in-document CSS automatically overrides linked CSS for selectors with the same specificity value). Then when something changes, you literally rip the whole style tag out, and replace it.</p><p>Appending a new style:</p><pre><code class="javascript">$("head").append("&lt;style type='text/css'&gt;&lt;/style&gt;");</code></pre><p>Text variable where the CSS will be kept. Keep this text up to date when options change.</p><pre><code class="javascript">var cssText = "";</code></pre><p>Use the replaceWith() function to rip out existing style element and apply a new one:</p><pre><code class="javascript">$("style").replaceWith("&lt;style type='text/css'&gt;" + cssText + "&lt;/style&gt;");</code></pre><p>The ripping-out part is important. Originally I tried putting an ID on the style element and replacing the content within it on the fly. It <strong>did</strong> replace the content, but those changes were not reflected on the page. Apparently in order to force the browser to re-render with the new CSS, you have to literally remove it and put it back.</p><h3>Take it, shake it</h3><p>I&#8217;ll provide the source for the thing in case you want to run it locally for whatever reason. Or even better, because you want to make it cooler. If you do, please share.</p><p><a href="http://css-tricks.com/examples/ButtonMaker/" class="button">View Demo</a> &nbsp; <a href="http://css-tricks.com/examples/ButtonMaker.zip" class="button">Download Files</a></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/css3-button%c2%a0maker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Poll: How many websites do you launch per year?</title>
		<link>http://www.lakevillewebdesign.com/new-poll-how-many-websites-do-you-launch-per%c2%a0year/</link>
		<comments>http://www.lakevillewebdesign.com/new-poll-how-many-websites-do-you-launch-per%c2%a0year/#comments</comments>
		<pubDate>Thu, 27 May 2010 14:25:44 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6462</guid>
		<description><![CDATA[There is a new poll in the sidebar. RSS readers, you&#8217;ll have to make the jump. The question is: How many websites do you launch per year? The idea is to gauge how many different projects you all are involved with that actually launch in a year. I&#8217;m sure some of you work on sites that we [...]]]></description>
			<content:encoded><![CDATA[<p>There is a new poll in the sidebar. RSS readers, you&#8217;ll have to make the jump. The question is:</p><blockquote><p>How many websites do you launch per year?</p></blockquote><p>The idea is to gauge how many different projects you all are involved with that actually launch in a year. I&#8217;m sure some of you work on sites that we launched long ago and you just work on maintaining and growing them. So if that&#8217;s the only web work you did this year, your answer would be zero. I&#8217;m sure also some of you work at churn-and-burn design agencies that are spitting out sites very quickly for clients.</p><p><span id="more-6462"></span></p><p>Include sites that you worked on in any significant capacity. If you did a some backend coding for the site, that counts. If you just did the markup part for a good chunk of it, that counts. If you designed the header, that counts. If you spent one hour consulting on the project, that <em>doesn&#8217;t</em> count. Just count the sites that you played a vital and significant part in its construction.</p><p>Feel free to vote based on an average or quick appraisal, but if you want exact dates, let&#8217;s say June 1 2009 to June 10 2010.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/new-poll-how-many-websites-do-you-launch-per%c2%a0year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Poll Results: Server side language of choice?</title>
		<link>http://www.lakevillewebdesign.com/poll-results-server-side-language-of%c2%a0choice/</link>
		<comments>http://www.lakevillewebdesign.com/poll-results-server-side-language-of%c2%a0choice/#comments</comments>
		<pubDate>Wed, 26 May 2010 12:32:41 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6453</guid>
		<description><![CDATA[Over 18,500 people voted on this last poll, making it the most voted-upon poll in this site&#8217;s history, when I asked: What is your server-side language of choice? Now I&#8217;m definitely a front end guy writing about mostly front end stuff. Because of that I kind of a assume most of you folks are too. That [...]]]></description>
			<content:encoded><![CDATA[<p>Over 18,500 people voted on this last poll, making it the most voted-upon poll in this site&#8217;s history, when I asked:</p><blockquote><p>What is your server-side language of choice?</p></blockquote><p>Now I&#8217;m definitely a front end guy writing about mostly front end stuff. Because of that I kind of a assume most of you folks are too. That doesn&#8217;t mean we don&#8217;t care about or have an opinion on server side languages too, just know that these poll results are probably indicative more of designers than developers. I essentially got started hacking up WordPress themes and I haven&#8217;t moved to far from that, developmentally. So my affinity is for PHP. My favorite part is how it kinda &#8220;just works&#8221; on just about any server out there out of the box. I also like how at the basic levels I use it at, the app doesn&#8217;t really need to be &#8220;running,&#8221; it just is a series of scripts that do their thing when they are hit with a request. But anyway, on with the results:</p><p><img src="http://css-tricks.com/wp-content/csstricks-uploads/serversideresults.jpg" width="570" height="300" alt="" title="" /></p><p><span id="more-6453"></span></p><p>Looking at these results it looks like PHP&#8217;s domination of the server side language market is just about as complete as jQuery&#8217;s over the JavaScript library market =)</p><p>I&#8217;ve moved this over to the <a href="http://css-tricks.com/polls/">polls archive</a>. Any last words, leave them here! New poll in a few days.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/poll-results-server-side-language-of%c2%a0choice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parallax Background of Stars (plus CSS3 keyframe animation)</title>
		<link>http://www.lakevillewebdesign.com/parallax-background-of-stars-plus-css3-keyframe%c2%a0animation/</link>
		<comments>http://www.lakevillewebdesign.com/parallax-background-of-stars-plus-css3-keyframe%c2%a0animation/#comments</comments>
		<pubDate>Tue, 25 May 2010 15:08:21 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6443</guid>
		<description><![CDATA[This idea was originally published on 3/12/2008, where you had to resize the browser window to see the parallax. I updated it on 4/6/2009 to utilize jQuery to move the stars automatically. I&#8217;m now updating it again to use CSS3 to animate the stars. There is some debate if these fancy transitions and animations that CSS3 [...]]]></description>
			<content:encoded><![CDATA[<div class="explanation"><a href="http://css-tricks.com/3d-parralax-background-effect/">This idea</a> was originally published on 3/12/2008, where you had to resize the browser window to see the parallax. I <a href="http://css-tricks.com/auto-moving-parallax-background/">updated it</a> on 4/6/2009 to utilize jQuery to move the stars automatically. I&#8217;m now updating it again to use CSS3 to animate the stars.</div><p>There is some debate if these fancy transitions and animations that CSS3 bring us belong in CSS. It might be argued that things moving around like that is &#8220;behavior&#8221; and not &#8220;design&#8221; and thus belong in JavaScript. I disagree with that sentiment, and that animations are definitely &#8220;design&#8221; and if we can keep that stuff in CSS, we should. Thus, I&#8217;m updating this idea (see original links above) to utilize CSS3 keyframe animations.</p><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/css3starsmoving.jpg" width="570" height="204" alt="" title="" /><br /> The stars fly by WebKit browsers. In all others, resizing the browser window still yield a cool parallax effect.</div><p><a href="http://css-tricks.com/examples/StarryNightCSS3/" class="button">View Demo</a> &nbsp; <a href="http://css-tricks.com/examples/StarryNightCSS3.zip" class="button">Download Files</a></p><p><span id="more-6443"></span></p><h3>Declaring keyframe Animation</h3><p>This is how you declare a keyframe animation. We&#8217;ll name our &#8220;STAR-MOVE&#8221;:</p><pre><code class="css"><del>@-webkit-keyframes STAR-MOVE {
	from {
		left: 0;
		top: 0;
	}
	to {
		left: -10000px;
		top: -2000px;
	}
}</del></code></pre><p>UPDATE: This is about twice as efficient (from my rough CPU monitoring test). Because here were are just shifting position whereas the old way we were expanding the size of the area the browser needed to render/keep track of.</p><pre><code class="css">@-webkit-keyframes STAR-MOVE {
	from {
		background-position: 5% 5%
	}
	to {
		background-position: 1300% 600%
	}
}</code></pre><p>You aren&#8217;t limited to &#8220;from&#8221; and &#8220;to&#8221;, You can stick more of them in there, based on percentages. Like <tt>40% {  }</tt> which will animate to those properties/values when the animation is 40% complete.</p><p>Our animation is very simple, we will animate position of the background-image, basically pulling the elements toward the upper left. Not every single property is able to be animated, but generally anything with a numeric value (including colors) can be. But you can&#8217;t, for example, animate a font from Helvetica to Georgia.</p><p>These properties will override any previous settings for the properties specified. So for example, since IE doesn&#8217;t support these, you might want to set the properties with regular CSS in a way that makes sense if there is no animation. Then know that those properties will be overridden with the from/0% properties of the animation.</p><h3>Using the keyframe animation</h3><p>We have three &#8220;layers&#8221; of stars, each that cover the entire screen with a repeating alpha-transparent layer of background graphic stars. We can call the same animation on all three divs, only with different durations.</p><pre><code class="css">#background {
	background: black url(../images/background.png) repeat 5% 5%;
	position: absolute;
	top: 0; left: 0; right: 0; bottom: 0;
	z-index: 100;

	-webkit-animation-name: STAR-MOVE;
	-webkit-animation-duration: 200s;
	-webkit-animation-timing-function: linear;
	-webkit-animation-iteration-count: infinite;
}

#midground {
	background: url(../images/midground.png) repeat 20% 20%;
	position: absolute;
	top: 0; left: 0; right: 0; bottom: 0;
	z-index: 200;

	-webkit-animation-name: STAR-MOVE;
	-webkit-animation-duration: 150s;
	-webkit-animation-timing-function: linear;
	-webkit-animation-iteration-count: infinite;
}

#foreground {
	background: url(../images/foreground.png) repeat 35% 35%;
	position: absolute;
	top: 0; left: 0; right: 0; bottom: 0;
	z-index: 300;

	-webkit-animation-name: STAR-MOVE;
	-webkit-animation-duration: 100s;
	-webkit-animation-timing-function: linear;
	-webkit-animation-iteration-count: infinite;
}</code></pre><p>The larger stars move faster (they are &#8220;closer&#8221; in the illusion and thus should go by faster). They appear to move faster because the duration of the animation is shorter, and thus they need to move a further distance in a shorter amount of time.</p><p>Animations use &#8220;easing&#8221; functions. That is, a mathematical formula is applied to control how quickly the animation &#8220;gets up to speed&#8221; and back down. Without easing, animations could look jerky and awkward. The default in webkit is &#8220;ease&#8221;, which slowly brings an animation up to speed then slowly back down. In this particular example, that didn&#8217;t make sense, because at the end of the 100s the largest stars use, the animation speed is so slow the stars behind it go faster (weird). So notice in the above code we reset the easing to &#8220;linear&#8221;. For a complete list, <a href="http://css-infos.net/property/-webkit-animation-timing-function">see here</a>.</p><h3>Browser Support</h3><p>WebKit browsers only (Safari, Mobile Safari, Chrome) at the moment. I know Firefox 3.7 is going to have support for transitions but I&#8217;m unclear on if it will have it&#8217;s on prefix for keyframe animations or not. If you know, let me know.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/parallax-background-of-stars-plus-css3-keyframe%c2%a0animation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Efficiently Rendering CSS</title>
		<link>http://www.lakevillewebdesign.com/efficiently-rendering%c2%a0css/</link>
		<comments>http://www.lakevillewebdesign.com/efficiently-rendering%c2%a0css/#comments</comments>
		<pubDate>Mon, 24 May 2010 13:13:10 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6386</guid>
		<description><![CDATA[I admittedly don&#8217;t think about this idea very often&#8230; how efficient is the CSS that we write, in terms of how quickly the browser can render it? This is definitely something that browser vendors care about (the faster pages load the happier people are using their products). Mozilla has an article about best practices. Google [...]]]></description>
			<content:encoded><![CDATA[<p>I admittedly don&#8217;t think about this idea very often&#8230; <strong>how efficient is the CSS that we write, in terms of how quickly the browser can render it? </strong></p><p>This is definitely something that browser vendors care about (the faster pages load the happier people are using their products). Mozilla has an article <a href="https://developer.mozilla.org/en/Writing_Efficient_CSS">about best practices</a>. Google is also always on a crusade to make the web faster. They also have an <a href="http://code.google.com/speed/page-speed/docs/rendering.html">article about it</a>.</p><p>Let&#8217;s cover some of the big ideas they present, and then discuss the practicalities of it all.</p><p><span id="more-6386"></span></p><h3>Right to Left</h3><p>One of the important things to understand about how browsers read your CSS selectors, is that they read them from <strong>right to left</strong>. That means that in the selector <tt>ul > li a[title="home"]</tt> the first thing thing interpreted is <tt>a[title="home"]</tt>. This first part is also referred to as the &#8220;key selector&#8221; in that ultimately, it is the element being selected.</p><h3>ID&#8217;s are the most efficient, Universal are the least</h3><p>There are four kinds of key selectors: ID, class, tag, and universal. It is that same order in how efficient they are.</p><pre><code class="css">#main-navigation {   }      /* ID (Fastest) */
body.home #page-wrap {   }  /* ID */
.main-navigation {   }      /* Class */
ul li a.current {   }       /* Class *
ul {   }                    /* Tag */
ul li a {  }                /* Tag */
* {   }                     /* Universal (Slowest) */
#content [title='home']     /* Universal */</code></pre><p>When we combine this right-to-left idea, and the key selector idea, we can see that this selector isn&#8217;t very efficient:</p><pre><code class="css">#main-nav &gt; li {   }  /* Slower than it might seem */</code></pre><p>Even though that feels weirdly counter-intuitive&#8230; Since ID&#8217;s are so efficient we would think the browser could just find that ID quickly and then find the li children quickly. But in reality, the relatively slow li tag selector is run first.</p><h3>Don&#8217;t tag-qualify</h3><p>Never do this:</p><pre><code class="css">ul#main-navigation {  }</code></pre><p>ID&#8217;s are unique, so they don&#8217;t need a tag name to go along with it. Doing so makes the selector less efficient.</p><p>Don&#8217;t do it with class names either, if you can avoid it. Classes aren&#8217;t unique, so theoretically you could have a class name do something that could be useful on multiple different elements. And if you wanted to have that styling be different depending on the element, you might need to tag-qualify (e.g. <tt>li.first</tt>), but that&#8217;s pretty rare, so in general, don&#8217;t.</p><h3>Descendant selectors are the worst</h3><p>David Hyatt:</p><blockquote><p>The descendant selector is the most expensive selector in CSS. It is dreadfully expensive &mdash; especially if the selector is in the Tag or Universal Category.</p></blockquote><p>In other words, a selector like this is an efficiency disaster:</p><pre><code class="css">html body ul li a {  }</code></pre><h3>A selector that fails is more efficient than that same selector matching</h3><p>I&#8217;m not sure if there is much we can learn from this, because if you have a bunch of selectors in your CSS that don&#8217;t match anything, that&#8217;s, uhm, pretty weird. But it&#8217;s interesting to note, that in the right-to-left interpretation of a selector, as soon as it fails a match, it stops trying, and thus expends less energy than if it needed to keep interpreting.</p><h3>Consider why you are writing the selector</h3><p>Consider this:</p><pre><code class="css">#main-navigation li a { font-family: Georgia, Serif; }</code></pre><p><tt>Font-family</tt> cascades, so you may not need a selector that is that specific to begin with (if all you are doing is changing the font). This may be just as effective, and far more efficient:</p><pre><code class="css">#main-navigation { font-family: Georgia, Serif; }</code></pre><h3>CSS3 and Efficiency</h3><p>Kind of sad news from David Hyatt:</p><blockquote><p>The sad truth about CSS3 selectors is that they really shouldn’t be used at all if you care about page performance.</p></blockquote><p>The <a href="http://www.shauninman.com/archive/2008/05/05/css_qualified_selectors#comment_3942">whole comment</a> is worth reading.</p><p>CSS3 selectors (e.g. :nth-child) are incredibly awesome in helping us target the elements we want while keeping our markup clean and semantic. But the fact is these fancy selectors are more browser resource intensive to use.</p><p>So what&#8217;s the deal, should we actually not use them? Let&#8217;s think about practicalities a bit&#8230;</p><h3>Practicalities</h3><p>That Mozilla article I linked to at the top? Literally 10 years old. Fact: computers were way slower 10 years ago. I have a feeling this stuff was more important back then. Ten years ago I was about to turn 21 and I don&#8217;t think I even knew what CSS was, so I&#8217;m not going to get all old school on you&#8230; but I have a feeling we don&#8217;t talk about this rendering efficiency stuff very much is because it&#8217;s not that big of a problem anymore.</p><p>This is how I&#8217;m feeling about it: the best practices we covered above make sense no matter what. You might as well follow them, because they don&#8217;t limit your abilities with CSS anyway. But you don&#8217;t have to be all dogmatic about it. If you happen to be in the position where you need to eek out every last drop of performance out of a site and you have never considered this stuff before, it may be worth revisiting your stylesheets to see where you can do better. If you aren&#8217;t seeing much rendering slowness in your site, then don&#8217;t worry about it, just be aware for the future.</p><h4>Super-speed, Zero-practicality</h4><p>So we know that ID&#8217;s are the most efficient selectors. If you wanted to make the most efficiently rendering page possible, you would literally give every single element on the page a unique ID, then apply styling with single ID selectors. That would be super fast, and also super ridiculous. It would probably be extremely non-semantic and extremely difficult to maintain. You don&#8217;t see this approach even on hardcore performance based sites. <strong>I think the lesson here is not to sacrifice semantics or maintainability for efficient CSS.</strong></p><p>&nbsp;</p><p>Thanks to <a href="http://ColdFireDesigns.com">Jason Beaudoin</a> for emailing me about the idea.  If anyone knows more about this stuff, or if you have additional tips that you use in this same vein, let&#8217;s hear it!</p><p>Just as a quick note, I&#8217;d also like to mention that since CSS style selectors are also used in many JavaScript libraries, these same concepts also apply. ID selectors are going to be the fastest while complicated qualified descendant selectors and such will be slower.<p><a href="http://www.shophtml.com/order_now.php?coupon_code=cst91"><img src="http://css-tricks.com/images/CSSTrickAd_31-may-10.png" alt="PSD to XHTML, WordPress, Joomla | Design to XHTML" /></a></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/efficiently-rendering%c2%a0css/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento Darwin Awards contest</title>
		<link>http://www.lakevillewebdesign.com/magento-darwin-awards-contest/</link>
		<comments>http://www.lakevillewebdesign.com/magento-darwin-awards-contest/#comments</comments>
		<pubDate>Fri, 21 May 2010 13:57:24 +0000</pubDate>
		<dc:creator>Toni Anicic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4562</guid>
		<description><![CDATA[This is a guest post, originally published by Philippe Humeau which he was kind enough to translate to English and allow us to publish it here. I found this post awesome and really wanted it to be shared with much broader audience in English language. NBS System is a managed hosting company working mainly on [...]]]></description>
			<content:encoded><![CDATA[<p>This is a guest post, originally published by Philippe Humeau which he was kind enough to translate to English and allow us to publish it here. I found this post awesome and really wanted it to be shared with much broader audience in English language.</p>
<p><a href="http://www.nbs-system.com/hebergement-infogerance/e-commerce/hebergement-magento/">NBS System</a> is a managed hosting company working mainly on Magento so they have a lot of Magento hosted to put it short (~200 sites). They also maintain a blog regarding Magento optimization and this is a translated post from it (<a href="http://www.wikigento.com/">Wikigento</a>)<span id="more-4562"></span>:</p>
<p>Here is a small contribution of the support and commercial best phones call, along with other « real life » experiences. The worst questions, the silliest ideas, the best wills hybridized with the worst technical solutions, just see by yourselves.</p>
<p>PS : We always laugh with no bad intentions. Every jobs has it stakes, constraints and problems, one’s difficulty is not to be laughed at but our day-to-day life can be rejoiced by some juicy results ! We also make mistakes, who don’t <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Here are the best contribution to the “Magento Darwin Awards contest”:</h3>
<p><strong>Oscar of the most brilliant idea : The S.O.D (&#8220;The Slider O’ Death&#8221;)</strong></p>
<p>Brillant, simple and efficient concept. Just imagine a homepage of a fashion brand website.<br />
At the bottom of it, 5 cursors you can move in order to position them on the product, size, color, type you want. IE : shoes, blue, suede model,  8”5, adult male, etc.<br />
Okay, now just imagine, 15 product types, 6 sizes, 6 product model on average, 12 colors, 6 types (Adult M/F – Kids M/F – Teenager M/F) : 38 800 possibilities… You move one cursor, this cause 38 800  SQL requests… Actually a bit less because you can move only one category at a time.</p>
<p>In order to make it a *real* server killer, the developer had a good intention: Ajaxify all of this to make the Database server die in background silently while trying to send back the results. You move the size slider from left to right, 6 positions, you take the 38 800 SQL requests. Of course, one could have put a temporization or a cache system to make the thing a bit lighter but, guess what…</p>
<p>Now just image 100 people connected at the same time playing with the awesome feature. Or just Kevin, 12 years old, taking daddy’s mouse and moving a cursor quickly from left to right…</p>
<p><strong>Back office talks:</strong> Oops, the database server died, any idea of what happened ? Logs shows he died after trying to answer 1 million requests per second…? Are we hosting Amazon and nobody told me ???</p>
<p><strong>You liked S.O.D concept ? Okay, here is a real player : The O.M.O.D (&#8220;On Mouse O’ Death &#8220;)</strong></p>
<p>They only rank second since someone had the original concept first but they deserved to have a place in the pantheon since this method is far more efficient to create a D.O.S situation. No more need to clic !!!</p>
<p>Take the same concept almost but with a On Mouse Over to send the SQL requests… You move around a bloc of products with your mouse and “dynamically” (or is it “dramatically”), this loads the products in the category to populate the main page space…</p>
<p>10 categories, 200 products per cat. Make a full move, this loads 2000 products from the database, now move quite fast. YESSSS ! this works, no cache mechanism, we can D.O.S it without any clics !</p>
<p><strong>Back office talks:</strong> Did anyone understand why the database server, usually asleep with Magento, is trying to suicide itself !? I told you guy before, never breed a database server with +1/4 spin electrons, this make them sick !</p>
<p><strong>The Big Bad Cron : 2 Go should be enough for everybody, almost…</strong></p>
<p>Crons, our friends, our worst nightmares. The only word is enough to make a Level 1 support guy to pull the plug.<br />
Usually, they make automatic imports of flat CSV files or batch processing of any needed files. Theses scripts are consuming more and more RAM and CPU until exhaustion because they never meet an efficient exit condition or just loop insanely on the same lines.</p>
<p>One or two Gigs later, the servers launch an automated alarm saying something like :</p>
<p>“Dear Admin,<br />
please, can you disable this stupid bunch of code before I trigger<br />
some  friendly self defense mechanism like kill -9 ?<br />
Truly your, the server.”</p>
<p>Of course, later on, you proposed to limit the memory a PHP process can consume to a far more reasonable value because this limit is set to all PHP process and this can get very very dirty. As the developer feels it is a unnecessary precaution, he code the killer cron another way, including some tricky optimization that consume CPU instead of RAM…</p>
<p>RAM to CPU to Trade Off. I mean when you see the function name, you already feel this is going to be fun… Well the server was about to reach a load of 80 (100% load = 8 on this 8 core server).</p>
<p><strong>Back office talks:</strong> Guyz, I’m trying to get a shell to the server but he doesn’t answer… Any ideas ? Is he gone for lunch ?</p>
<p><strong>We also make mistakes!</strong></p>
<p>As we are not more perfect than the others, we sometimes do mistakes.<br />
We decided to use some self defense mechanism against those « Killer crons ». Sysfence was chosen to watch the resources consumption and if a process is going to kill a server by consuming too much, he tries to stop it, if not possible the process gets a “friendly” kill and if it tries to stay, a quite virile “kill -9” (far less friendly).<br />
The catch was, when the swap space becomes to be filled, the Sysfence consider it like a problem (which is the case) and tried to restart apache. Actually, Apache understood that resistance is futile (and sanctioned by a kill -9) and restarted. But the Swap doesn’t instantly free the allocated space and Sysfence saw the result was not good and… Restarted apache again… and again… and again… …</p>
<p><strong>Back office talk:</strong> Is it normal the website of our customer is… blinking? I’m there, oops, I’m there, oops…<br />
(of course, the fix is to let a bit of time, like 10 seconds, before starting the process again)</p>
<p><strong>My Java is beautiful</strong></p>
<p>This is not directly related to Magento but one of our customer uses a very user friendly catalog presentation. You know the kind of “like if you had a real paper catalog in your hand” thing. This beautiful piece of software is provided with a lot of “must_have” features like the possibility to make a 3° counter clockwise rotation. So handy…<br />
The neat feature is that the catalog is able to “auto scale” to the browser heigh &amp; width, providing an always perfectly scaled catalog. Once again, intention was good, implementation was, how to say, not that clever.</p>
<p>Each time someone come with their parameters (my browser isn’t full screen, so my usual resolution is 1211*940, which is not yours I bet), the server had to calculate all the images displayed to make them fit the browser. Just had to this a beautiful Java bug which never trigger the garbage collector, put 10 000 people per day looking at the “paper like catalog” and you have a server allocating ~200 Mo per minutes…</p>
<p>Theses servers are a braves one and have only died after 80 Go of swap were allocated, after 6 hours and a half… No solutions here, product editor has disappeared (which is not really a surprise up to Darwin laws) and we still have to kill the JVM on an hourly basis.</p>
<p><strong>I’m the supervisor!</strong></p>
<p>This is the story of a programmer who’s regular process (don’t say the name Cron please) are consuming too much resources. Sounds familiar no ? Well this one is a bit different. As we don’t want to raise the php_memory_limit, even at night, above a reasonable value (and yes reasonable is not the same value to programmers and to sysadmin), the guy found a way.</p>
<p>He tests the server load with a PHP daemon (yes this starts to be fun), on a regular basis, and when the load is getting low, he launch its batch processing. If the processing gets too resources angry, he stops it, nicely.</p>
<p>When we say regular basis, we wouldn’t have thought he was planning on testing the load every 35 ms… So every 35 ms, this process awakes and launch a dramatically “not optimized” free resource check, consuming a lot of CPU and RAM, like 10 times what is needed by a C process to do the same. As the PHP daemon needs more than 35 ms to fully process the task…</p>
<p>This way of proceeding, with this frequency is quite CPU intensive itself to say the least.</p>
<p><strong>Back office talk:</strong> WHAT IS THAT ®#¤! “batch_supervisor” which is triggering … oops. Connection reset by peer. 100% packet loss.</p>
<p><strong>My slave is beautiful</strong></p>
<p><span style="color: #008000;">Hello. I Mme Doe from (a major) company.</span><br />
Hello, I’m Philippe, what can I do for you ?<br />
<span style="color: #008000;"> [...] I’d like when you can come to our office to setup our servers? [...]</span><br />
Oh, I’m very sorry, we don’t do that kind of things. We only optimize our customers architectures, not the one of your actual managed hosting company, which is a competitor of us. (this would be like shooting a nuke in our foot no?)<br />
<span style="color: #008000;"> But wait, you will be paid for it. *450 € per day !* (emphasis). But you have to be there tomorow and for the next 5 days in a row.</span><br />
Oh, my mistake, I think I didn’t made it clear. We don’t do this kind of work madam.<br />
Even if we did, (and we don’t), a Magento Expert, no matter if he is a developer of Admin, will never charge such a price. More, you can’t call anyone one day and ask them to be there on the next morning, we’re an expert companies, people have schedules.<br />
<span style="color: #008000;"> Listen, I can see you make no efforts, haven’t listened to our generous proposal and I think we won’t work together!</span><br />
<em> Damn, I’ll get fired to have refused such amazing offer…</em></p>
<p><strong>May I post you my site ?</strong></p>
<p>This is the story of a guy willing to put its customer site online. After trying for 4 hours unsuccessfully, he calls the L1 support and announce:<br />
<span style="color: #008000;"> You system is buggy, it stops the transfert after only 5 Mo and I just can’t put this site online.</span><br />
Okay, can you please provide some detail, like what kind of protocol have you tried to put this site online ? FTP, SFTP, SCP ou SVN ?<br />
<span style="color: #008000;"> Listen, I just tell you this stops transferring avec 5 Mo, this is not a about the protocol.</span><br />
Sorry, this could help us to find where the problem is, would you just please tell me the used protocol ? I swear after I won’t bother you anymore with this question.<br />
<span style="color: #008000;"> I’m using OTRS.</span><br />
Our Level 1 ticket submission tools ???<br />
<span style="color: #008000;"> Yes.</span><br />
But it’s not made to publish a website. The upload field is made to optionally send us a screenshot of the problems but you have to use the provided credentials along with a protocol dedicated to file transfer like SFTP or SVN.<br />
<span style="color: #008000;"> You swear about the protocol!</span><br />
<strong> </strong></p>
<p><strong>Grand Jury special price of the tricky-to-find-glitch : I SVN, you SVN, I killed the servers.</strong></p>
<p>This time we talk about a quite famous brand doing a special incentive and mailing campaign. 20 days before the campaign, the project leader call the web agency and say: “Can you please prepare a special home and make 2 or 3 modifications ?”. “No problem madam”.<br />
Special sales starts :</p>
<ul>
<li>500 connected people, good but slow to load&#8230; ?</li>
<li>1 000 connected, oops, load is rising fast on all 3 servers</li>
<li>1 500 mayday mayday, server down, I repeat server down !</li>
</ul>
<p>We look for the problem, « have you changed anything today or recently ?”. “No, nothing, all is nominal”.<br />
2 hours after, we found the problem. The Web Agency had overwritten a file named /var/www/eu/app/etc/use_cache.ser with its own local version. Guess what, this file is controlling the cache behavior and guess what, developers usually cut them to instantly see the changes when the modify a site (which definitely make sense). But when you upload this file to the server and disable all Magento cache mechanism, this is a very bad situation for the servers…</p>
<p><strong>Back office talk:</strong> chmod 500 /var/www/eu/app/etc/use_cache.ser. Won’t happen again, believe me.</p>
<p><strong>My home is slow&#8230;</strong></p>
<p>« <em>In the developer mind </em>» : Okay, I take my 6 000 products, I make a loop, for each product on my home, I launch my amazing loop to find among the 6000 the one I have to load and I fill the 200 slots on my home.</p>
<p>Damn, it’s slow, am I hosted on a Pentium 3 ???</p>
<p><strong>Back office talk:</strong> Multiplication is quite tricky concept. I’ll make it slow for you. 6000*200*[nb of users] means that …………</p>
<p>Published by Inchoo with the authorization of Wikigento, NBS system and the author.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/magento-darwin-awards-contest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Better Maintenance Mode in Magento?</title>
		<link>http://www.lakevillewebdesign.com/a-better-maintenance-mode-in-magento/</link>
		<comments>http://www.lakevillewebdesign.com/a-better-maintenance-mode-in-magento/#comments</comments>
		<pubDate>Fri, 21 May 2010 12:17:07 +0000</pubDate>
		<dc:creator>Alan Cole</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4558</guid>
		<description><![CDATA[Magento 1.4+ includes a nice feature that allowed you to throw the store into &#8220;maintenance mode&#8221; if you need to do/work or make changes. Which is great, freeze people out of the store while you work or make changes. The only problem with this, is it also freezes YOU out of the store so you [...]]]></description>
			<content:encoded><![CDATA[<p>Magento 1.4+ includes a nice feature that allowed you to throw the store into &#8220;maintenance mode&#8221; if you need to do/work or make changes. Which is great, freeze people out of the store while you work or make changes. The only problem with this, is it also freezes YOU out of the store so you can&#8217;t make the changes you need to. So here is a little bit of code, that allows you and other you set to work on the site while everyone else sees its maintenance mode.<br />
<span id="more-4558"></span></p>
<p>All we need to do it edit 3 lines.</p>
<p>Open: index.php in root and above line 57 add (remembering to edit the &#8216;allowed&#8217; array to contain the IP&#8217;s you want to be able to access the site);</p>
<p><code>$ip = $_SERVER['REMOTE_ADDR'];<br />
$allowed = array('1.1.1.1','2.2.2.2'); // these are the IP's that are allowed to view the site.<br />
</code><br />
then change the line<br />
<code>if (file_exists($maintenanceFile)) {</code><br />
to<br />
<code> if (file_exists($maintenanceFile) &amp;&amp; !in_array($ip, $allowed)) { </code></p>
<p>Simple. Now you can access the site, while others see its maintenance mode.</p>
<p>This is my guest article at Inchoo website. My name is Alan Cole. Feel free to meet me at <a href="http://www.kalelmedia.com/" >my website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/a-better-maintenance-mode-in-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Font API &amp; Interview</title>
		<link>http://www.lakevillewebdesign.com/google-font-api-%c2%a0interview/</link>
		<comments>http://www.lakevillewebdesign.com/google-font-api-%c2%a0interview/#comments</comments>
		<pubDate>Thu, 20 May 2010 11:34:57 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6417</guid>
		<description><![CDATA[Google announced their new Font API yesterday, including a font directory and preview tool. They teamed up with TypeKit, to build and open source the WebFont Loader. I quite like how they have done it. You just hotlink the CSS right from Google and then reference the font names in the CSS. It&#8217;s really easy [...]]]></description>
			<content:encoded><![CDATA[<div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/googlefonts.jpg" width="298" height="73" alt="" title="" /></div><p><a href="http://googlecode.blogspot.com/2010/05/introducing-google-font-api-google-font.html">Google announced</a> their new <a href="http://code.google.com/apis/webfonts/">Font API</a> yesterday, including a <a href="http://code.google.com/webfonts">font directory</a> and <a href="http://code.google.com/webfonts/preview">preview tool</a>. They teamed up with <a href="http://typekit.com">TypeKit</a>, to build and <a href="http://googlecode.blogspot.com/2010/05/introducing-webfont-loader-in.html">open source</a> the WebFont Loader.</p><p> I quite like how they have done it. You just <a href="http://fonts.googleapis.com/css?family=Lobster">hotlink the CSS</a> right from Google and then reference the font names in the CSS. It&#8217;s really easy &mdash; view source on <a href="http://css-tricks.com/examples/GoogleFonts/">this demo</a>.</p><p>Why do this? Isn&#8217;t this just @font-face? Yep it is just @font-face, which you can do yourself without Google&#8217;s help. But there are advantages:</p><ol><li>Bandwidth savings (weight is on Google)</li><li>Caching speed (same font used on multiple sites, browser cache kicks in)</li><li>Speed in general (Google&#8217;s CDN is faster than your site)</li></ol><p><span id="more-6417"></span></p><p>Loading the extra CSS file is an extra HTTP Request though, but you could <a href="http://themes.googleusercontent.com/font?kit=X-CahsKZZcJfSyZ_tX4ptg">hotlink the font file</a> instead. You may also want to download the font and create your own SVG version, because the Google stylesheets aren&#8217;t serving that up, and hence <a href="http://twitter.com/FontSquirrel/status/14312358613">no support for iPhone/iPad.</a></p><p>So what is this WebFont Loader then? It&#8217;s a bit of JavaScript which handles the loading of fonts. It&#8217;s use is totally optional, but offers some advantages. For example, Firefox will display a font further down the font stack until an @font-face font is loaded, and then flip to the @font-face font when it is ready, causing reflow and general weirdness. It&#8217;s called <a href="http://paulirish.com/2009/fighting-the-font-face-fout/">FOUT</a> (Flash of unstyled text). The WebFont Loader can help fight this &mdash; see <a href="http://paulirish.com/2010/details-on-the-new-google-webfont-api/">Paul&#8217;s article</a> on it.</p><p>Raph Levien is a type designer, and creator of the <a href="http://www.levien.com/type/myfonts/inconsolata.html">Inconsolata</a> font. Raph also works on the Google Font API team. I caught up with him to ask him a few questions about all this&#8230;</p><h4><span>*</span><strong>Chris:</strong> Google does a lot of cool stuff for people building websites, including some seriously bandwidth intensive things. For example, we can <a href="http://scriptsrc.net/">hotlink</a> to JavaScript libraries hosted on Google&#8217;s CDN. The last thing I want to do is look a gift horse in the mouth, but I know it makes people wonder sometimes, what is in this for Google? Guaranteed this is going to make web fonts faster, so is it as simple as a faster web is good for Google? Or is there going to be analytic data captured that is useful to Google?</h4><p><strong>Raph:</strong> It&#8217;s all about making the web faster and richer for everybody. We&#8217;re not collecting any personal information for web font requests, and only aggregating the logs at a coarse level so we can keep track of performance and overall popularity of fonts.</p><p>One of the great things about this service, just like the AJAX libraries (such as our WebFont Loader), is that many different sites can link the fonts, and they&#8217;ll all share the browser cache &#8211; it&#8217;ll only trigger a network download for the first one.</p><h4><span>*</span><strong>Chris:</strong> Should the worst happen, and the font API were to have a bit of downtime, what happens to sites using these fonts? Will the browser follow the font stack down and pick a fallback, or does something else happen?</h4><p><strong>Raph:</strong> Yes, it&#8217;ll use fallback fonts. It&#8217;s just CSS, so the designer gets full control over the font  stack, and if you want more fine-grained control, you can use the WebFont Loader library as well &#8211; for example, you can trigger JavaScript code to make CSS changes when the font fails to load. We&#8217;re also going to be collaborating with all major browser vendors to improve the web font experience for users.</p><h4><span>*</span><strong>Chris:</strong> It is pretty interesting to see a collaboration between your team and TypeKit. How that that come about?</h4><p><strong>Raph:</strong> TypeKit has been been blazing the trail to make web fonts available to a wide audience. We&#8217;ve known the team for a while (Jeff Veen used to work at Google, in fact), so it was natural to talk to them about what we&#8217;re doing. We think our collection of open source fonts is pretty good, but for a broader range of professionally designed fonts, we want to make it easy for people to upgrade. We&#8217;ve also been working with other major font  vendors, including Ascender.</p><h4><span>*</span><strong>Chris:</strong> A lot of free / open source fonts serve their creators as an advertisement for a more robust set of fonts that isn&#8217;t free. Do you see that as a hurdle for the Google Font  Directory, in that could become a repository of intentionally limited fonts? Or will that kind of thing be curated out?</h4><p><strong>Raph:</strong> We&#8217;ve been getting a great response so far. People have all kinds of reasons for contributing open source fonts, and one is definitely to create more visibility and traffic for selling proprietary fonts. A lot of people just love creating fonts. Whatever the reasons, I&#8217;m confident we&#8217;ll see a nice, steady stream of high quality fonts. But there&#8217;ll always be more choice of top-quality fonts from professional foundries.</p><p>&nbsp;</p><p>Thanks to Raph for the quick interview! Let me know what ya&#8217;ll think of this. I&#8217;m thinking it&#8217;s a pretty big win for web fonts, although I think (and hope, really) that all the best fonts will remain on paid services like TypeKit. Web fonts still have a way to come. Clearly there are still some <a href="http://typophile.com/node/70557#comment-412118">problems on Windows</a>, and <a href="http://css-tricks.com/font-hinting-is-just-the-start/">if it&#8217;s not one thing, it&#8217;s another</a>.<p><a href="http://www.shophtml.com/order_now.php?coupon_code=cst91"><img src="http://css-tricks.com/images/CSSTrickAd_31-may-10.png" alt="PSD to XHTML, WordPress, Joomla | Design to XHTML" /></a></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/google-font-api-%c2%a0interview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RGBa Browser Support</title>
		<link>http://www.lakevillewebdesign.com/rgba-browser%c2%a0support/</link>
		<comments>http://www.lakevillewebdesign.com/rgba-browser%c2%a0support/#comments</comments>
		<pubDate>Wed, 19 May 2010 07:01:10 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=2151</guid>
		<description><![CDATA[This article was originally published on February 2, 2009 and is now being updated to clarify the concept and update the information for modern browsers. RGBa is a way to declare a color in CSS that includes alpha transparency support. It looks like this: div { background: rgba(200, 54, 54, 0.5); } This allows us to fill [...]]]></description>
			<content:encoded><![CDATA[<div class="explanation">This article was originally published on February 2, 2009 and is now being updated to clarify the concept and update the information for modern browsers.</div><p>RGBa is a way to declare a color in CSS that includes alpha transparency support. It looks like this:</p><pre><code>div {
   background: rgba(200, 54, 54, 0.5);
}</code></pre><p>This allows us to fill areas with transparent color; the first thee numbers representing the color in RGB values and the fourth representing a transparency value between 0 and 1 (zero being fully transparent and one being fully opaque).  We have long had the <tt>opacity</tt> property, which is similar, but <tt>opacity</tt> forces all decendant elements to also become transparent and there is no way to fight it (except <a href="http://css-tricks.com/non-transparent-elements-inside-transparent-elements/">weird positional hacks</a>) <a href="http://css-tricks.com/css-transparency-settings-for-all-broswers/">Cross-browser opacity</a> is also a bit sloppy.</p><p>With RGBa, we can make a box transparent and leave its descendants alone:</p><p><img src="http://css-tricks.com/wp-content/csstricks-uploads/rgbaexample.jpg" width="500" height="314" alt="" title="" /></p><p><span id="more-2151"></span></p><h3>Declaring a fallback color</h3><p>Not all browsers support RGBa, so if the design permits, you should declare a &#8220;fallback&#8221; color. This color will be most likely be <strong>solid</strong> (fully opaque). Not declaring a fallback means no color will be applied in browsers that don&#8217;t support it. This fallback does fail in some <em>really</em> old browsers.</p><pre><code>div {
   background: rgb(200, 54, 54); /* The Fallback */
   background: rgba(200, 54, 54, 0.5);
}</code></pre><p>Do be aware of <a href="http://css-tricks.com/ie-background-rgb-bug/">this bug</a> though, related to not using shorthand in IE 6 and 7.</p><h3>Browser Support for RGBa</h3><p><strong>Last updated:</strong> 05/14/2010</p><table style="width: 100%; border-collapse: collapse;"><tr><th style="padding: 4px 8px; font-weight: bold;">Browser, Version, Platform</th><th style="padding: 4px 8px; font-weight: bold;">Outcome</th><th style="padding: 4px 8px; font-weight: bold;">Fallback</th></tr><tr class="works"><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">Mozilla Firefox 3.x (and up)</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">Works</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;"> &#8212;</td></tr><tr class="not"><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Mozilla Firefox 2.x (and down)</td><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Doesn&#8217;t Work</td><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Solid Color</td></tr><tr class="works"><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">Google Chrome (any version)</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">Works</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;"> &#8212;</td></tr><tr class="works"><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">WebKit &#8211; Safari 3.x (and up)</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">Works</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;"> &#8212;</td></tr><tr class="not"><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">WebKit &#8211; Safari 2.x (and down)</td><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Doesn&#8217;t Work</td><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;"> &#8212;</td></tr><tr class="works"><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">Mobile Safari (iPhone / iPod Touch / iPad)</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">Works</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;"> &#8212;</td></tr><tr class="works"><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">Opera 10.x (and up)</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">Works</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;"> &#8212;</td></tr><tr class="not"><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Opera 9.x (and down)</td><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Doesn&#8217;t Work</td><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Solid Color</td></tr><tr class="works"><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">Internet Explorer 9 Preview</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">Works</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;"> &#8212;</td></tr><tr class="not"><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Internet Explorer 8 (down to 6)</td><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Doesn&#8217;t Work</td><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Solid Color</td></tr><tr class="not"><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Internet Explorer 5.5 (and down)</td><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Doesn&#8217;t Work</td><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">No Color</td></tr><tr class="not"><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Netscape (any version)</td><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Doesn&#8217;t Work</td><td style="background: #f8c7c7; padding: 4px; border-bottom: 3px solid white;">Solid Color</td></tr><tr class="works"><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">BlackBerry Storm Browser</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;">Works</td><td style="background: #caf8c7; padding: 4px; border-bottom: 3px solid white;"> &#8212;</td></tr></table><p>Data gathered from <a href="http://css-tricks.com/examples/RGBaSupport/">this demo</a>, which includes more complete browser compatibility list.</p><h3>A better fallback for IE</h3><p>Since IE supports <a href="http://css-tricks.com/how-to-create-an-ie-only-stylesheet/">conditional stylesheets</a>, we can bust out those and a proprietary Microsoft CSS filter to accomplish the same result:</p><pre><code  class="html">&lt;!--[if IE]&gt;

   &lt;style type="text/css"&gt;

   .color-block {
       background:transparent;
       filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000050,endColorstr=#99000050);
       zoom: 1;
    } 

    &lt;/style&gt;

&lt;![endif]--&gt;</code></pre><h3>More Information</h3><ul><li>Hedger Wang: <a href="http://www.hedgerwow.com/360/dhtml/rgba/demo.php">Implement RGBa colors for Modern Web Browsers</a>. The IE hack from this article is directly credited to Hedger. This article also contains a technique for using &lt;canvas&gt; to support Opera.</li><li>Hedger also has a <a href="http://www.hedgerwow.com/360/dhtml/rgba/demo.html">new technique</a> implementing Kevin Linsey&#8217;s <a href="http://www.kevlindev.com/blog/?p=32">JavaScript PNG Generator</a>.</li><li>Tim Kadlec: <a href="http://www.timkadlec.com/post.asp?q=61">Not As Clear As It Seems: CSS3 Opacity and RGBA</a></li><li>Andy Clarke: <a href="http://forabeautifulweb.com/blog/about/is_css3_rgba_ready_to_rock/">Is CSS3 RGBa Ready To Rock?</a></li></ul><h3>Other Examples</h3><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/wilcoxrgba.jpg" width="523" height="428" alt="" title="" /><br /> Background image visible through dark content areas</div><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/faceboxrgba.jpg" width="419" height="196" alt="" title="" /><br /> Border of the facebox plugin uses RGBa borders</div><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/24waysrgba.jpg" width="530" height="350" alt="" title="" /><br /> RGBa galore on 24 ways</div><h4>Color variations</h4><p>Instead of having to remember or look up a bunch of different hex values for shades of gray, you can just use RGBa to adjust pure black to a shade that works e.g. <tt>rgba(0,0,0,0.3);</tt> That is, assuming transparency is cool for whatever the application is (great for shadows, not great for text). Don&#8217;t have to be black either obviously, you could make a whole monochromatic color scheme with any color this way.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/rgba-browser%c2%a0support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We Love LOST</title>
		<link>http://www.lakevillewebdesign.com/we-love%c2%a0lost/</link>
		<comments>http://www.lakevillewebdesign.com/we-love%c2%a0lost/#comments</comments>
		<pubDate>Tue, 18 May 2010 12:42:44 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6398</guid>
		<description><![CDATA[Tonight is the next-to-last episode ever of LOST. I&#8217;ve been a fan since the start, watching the released seasons several times with different friends over the years. Even powering through the Season 3 slump =). Just for fun, Richard and I chucked together a little one page app we&#8217;ve called We Love LOST.Tech Richard wrote [...]]]></description>
			<content:encoded><![CDATA[<p>Tonight is the next-to-last episode ever of LOST. I&#8217;ve been a fan since the start, watching the released seasons several times with different friends over the years. Even powering through the Season 3 slump =). Just for fun, <a href="http://twitter.com/rfelix">Richard</a> and I chucked together a little one page app we&#8217;ve called <a href="http://welovelost.com/">We Love LOST</a>.</p><p><a href="http://welovelost.com/"><img src="http://css-tricks.com/wp-content/csstricks-uploads/welovelost2.jpg" width="570" height="481" alt="" title="" /></a></p><p><span id="more-6398"></span></p><h3>Tech</h3><p>Richard wrote the backend in Ruby on Rails. Every few minutes it uses Twitter&#8217;s search API looking for the text &#8220;welovelost&#8221;. Any new tweets it finds are saved to a database. This is an gross simplification of course. There is a <a href="http://blog.madewithsense.com/2010/05/15/we-love-lost-is-open-source/">blog post about the Rails stuff</a> on the Made with Sense blog. <a href="http://madewithsense.com/">Made with Sense</a> is Richard&#8217;s new venture and the makers of <a href="http://getdispatch.com/">Dispatch</a>.</p><p>The Rails app also has a JSON API. Basically, a URL you can hit which serves up a random tweet record from the database. That gave me all I needed to write some jQuery that will pull from that URL and drop a new tweet onto the page. WebKit animations make the tweet fly around a bit before the jQuery removes it from the page.</p><h3>Download</h3><p>The entire project is downloadable from <a href="http://blog.madewithsense.com/2010/05/15/we-love-lost-is-open-source/">this post</a>. If you are interested in how anything from the back end or the front end works, it&#8217;s all there for your perusal.</p><h3>Contest</h3><p>One random person will be chosen to win the complete series DVD set when it comes out. Just tweet with #welovelost to enter. I know&#8230; I kinda hate &#8220;tweet to win&#8221; contests too, but this isn&#8217;t some blatant promotional thing. The whole point is sharing the love of LOST and sharing this cool little tweet aggregation app.<p><a href="http://www.shophtml.com/order_now.php?coupon_code=cst91"><img src="http://css-tricks.com/images/CSSTrickAd_31-may-10.png" alt="PSD to XHTML, WordPress, Joomla | Design to XHTML" /></a></p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/we-love%c2%a0lost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>There has been an error processing your request.</title>
		<link>http://www.lakevillewebdesign.com/there-has-been-an-error-processing-your-request/</link>
		<comments>http://www.lakevillewebdesign.com/there-has-been-an-error-processing-your-request/#comments</comments>
		<pubDate>Tue, 18 May 2010 10:06:29 +0000</pubDate>
		<dc:creator>Vedran Subotic</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4531</guid>
		<description><![CDATA[Are you sick and tired of scrolling you browser when you get Magento error, trying to read and trace it? Here is a post of my colleague Ivan Weiler which describes how to enable error information in latest Magento. This is a screenshot of my browser when I get Magento error: I don&#8217;t need to [...]]]></description>
			<content:encoded><![CDATA[<p>Are you sick and tired of scrolling you browser when you get Magento error, trying to read and trace it?<br />
<span id="more-4531"></span><br />
Here is a post of my colleague Ivan Weiler which describes <a href="http://inchoo.net/ecommerce/magento/new-maintenance-and-error-features/">how to enable error information in latest Magento</a>.</p>
<p>This is a screenshot of my browser when I get Magento error:<br />
<a href="http://inchoo.net/wp-content/uploads/2010/05/there_has_been_an_error_processing_your_request2.png" rel="lightbox[4531]"><img src="http://inchoo.net/wp-content/uploads/2010/05/there_has_been_an_error_processing_your_request2-637x197.png" alt="" title="there_has_been_an_error_processing_your_request2" width="637" height="197" class="aligncenter size-medium wp-image-4539" /></a></p>
<p>I don&#8217;t need to search for report file and open it in a text editor.<br />
It&#8217;s clear and readable.</p>
<p>All you need to do is to little modify error reporting file which is in your:<br />
&#8220;/report/skin/default/index.phtml&#8221; file.<br />
And you can style it as you wish.</p>
<p>Here is how my &#8220;/report/skin/default/index.phtml&#8221; file looks like:</p>
<pre class="brush: php">
&lt; !DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;
&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
&lt;head&gt;
    &lt;title&gt;Error Submission Form&lt;/title&gt;
    &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;/&gt;
&lt;/head&gt;

&lt;body class=&quot; customer-account-create&quot;&gt;
    &lt;div class=&quot;middle-container&quot;&gt;
        &lt;div class=&quot;middle col-1-layout&quot;&gt;
            &lt;div id=&quot;main&quot; class=&quot;col-main&quot;&gt;
                &lt;div class=&quot;page-head&quot;&gt;
                    &lt;h3&gt;There has been an error processing your request.&lt;/h3&gt;
                &lt;/div&gt;
                &lt; ?php if ($action == &#039;print&#039;): ?&gt;
                &lt;div style=&quot;padding:10px; border:1px solid #666; background:#EFEFEF;&quot;&gt;
                &lt;div style=&quot;width:100%; overflow:auto;&quot;&gt;
                &lt;pre&gt;
&lt; ?php echo $reportData[0] ?&gt;

&lt;b&gt;Trace:&lt;/b&gt;
&lt; ?php echo $reportData[1] ?&gt;
                &lt;/pre&gt;
                &lt;/div&gt;
                &lt;/div&gt;
                &lt; ?php endif; ?&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>That&#8217;s it.<br />
Enjoy tracing and handling Magento errors.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/there-has-been-an-error-processing-your-request/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pointer Events &amp; Disabling Current Page Links</title>
		<link>http://www.lakevillewebdesign.com/pointer-events-disabling-current-page%c2%a0links/</link>
		<comments>http://www.lakevillewebdesign.com/pointer-events-disabling-current-page%c2%a0links/#comments</comments>
		<pubDate>Mon, 17 May 2010 12:19:30 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6379</guid>
		<description><![CDATA[It is a long-standing web design standard that the logo in the header area links to the homepage of the site. Another standard is that when displaying the navigation of a site, to highlight in some way the &#8220;current&#8221; page, if it is present in the navigation. I think those are great standards. The logo-link [...]]]></description>
			<content:encoded><![CDATA[<p>It is a long-standing web design standard that the logo in the header area links to the homepage of the site. Another standard is that when displaying the navigation of a site, to highlight in some way the &#8220;current&#8221; page, if it is present in the navigation. I think those are great standards. The logo-link thing is so ubiquitous that your users will likely automatically try it if you&#8217;ve coded it that way or not. The current navigation thing is just good ol&#8217; horse-sense for grounding a users and making them feel good about their current location in a websites hierarchy.</p><p>But here is another good design standard: <strong>don&#8217;t have links to the same page you are on, on that page.</strong></p><p>The idea here is twofold:</p><ol><li>When you see a link, it looks like a link, it behaves like a link, that says &#8220;click this and be taken elsewhere.&#8221; If the link takes you back to the same page you are on, that&#8217;s kinda weird.</li><li>It is a waste of server resources to reload a page for no reason.</li></ol><p>How can you accomplish this without a bunch of development work and changing markup? CSS of course!</p><p><span id="more-6379"></span></p><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/disablednav.png" width="520" height="161" alt="" title="" /><br /> &#8220;Disabled&#8221; navigation from a <a href="http://css-tricks.com/examples/PreventCurrentPageLinks/">quick demo</a>.</div><p>The big idea here is that you can tell a link not to behave like a link (do nothing when clicked) using the pointer-events CSS property.</p><p>Body has a unique ID at the homepage:</p><pre><code class="html">&lt;body id="home"&gt;</code></pre><p>Navigation has a matching class name:</p><pre><code class="html">&lt;nav&gt;
    &lt;ul&gt;
       &lt;li class="home"&gt;&lt;a href="#"&gt;Home&lt;/a&gt;&lt;/li&gt;
       &lt;li class="about"&gt;&lt;a href="#"&gt;About&lt;/a&gt;&lt;/li&gt;
       &lt;li class="clients"&gt;&lt;a href="#"&gt;Clients&lt;/a&gt;&lt;/li&gt;
       &lt;li class="contact"&gt;&lt;a href="#"&gt;Contact Us&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
&lt;/nav&gt;</code></pre><p>Navigation for home is deactivated only on homepage:</p><pre><code class="css">#home nav .home &gt; a {
       pointer-events: none;
       cursor: default;
}</code></pre><p>Wow that was easy, eh? This works in Firefox 3.6+, Safari 3+, and the latest Chrome versions (v5+?). Nothing from Opera or IE yet. But hey, that&#8217;s pretty sweet for such a little development investment.</p><p>Part of the trick to getting this to work is getting an ID or a class on the body you can work with. If that is a new idea to you, check out <a href="http://css-tricks.com/id-your-body-for-greater-css-control-and-specificity/">this article</a> and <a href="http://css-tricks.com/video-screencasts/36-current-nav-highlighting-using-php-to-set-the-body-id/">this screencast</a> for the basic idea. Also know that a CMS like WordPress has a <tt>body_class();</tt> function which does a great job of providing all the class names you could ever want on the body.</p><p>Thanks to <a href="http://www.free-lance.ru/users/izvarinskij">Ant Gray</a> for the idea!</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/pointer-events-disabling-current-page%c2%a0links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sick of Magento XML layouts?</title>
		<link>http://www.lakevillewebdesign.com/sick-of-magento-xml-layouts/</link>
		<comments>http://www.lakevillewebdesign.com/sick-of-magento-xml-layouts/#comments</comments>
		<pubDate>Fri, 14 May 2010 11:10:56 +0000</pubDate>
		<dc:creator>Branko Ajzele</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://inchoo.net/?p=4526</guid>
		<description><![CDATA[Haven&#8217;t wrote an article for a while, so here is a short one. Are you sick of Magento XML layouts? If so, then do it all via the code, from the controller . Here is how. public function mycoolAction() { /* ... Some code ...*/ $update = $this-&#062;getLayout()-&#062;getUpdate(); /* ... Some code ...*/ $this-&#062;addActionLayoutHandles(); /* [...]]]></description>
			<content:encoded><![CDATA[<p>Haven&#8217;t wrote an article for a while, so here is a short one. </p>
<p>Are you sick of Magento XML layouts? If so, then do it all via the code, from the controller <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .<span id="more-4526"></span></p>
<p>Here is how.</p>
<pre class="brush: php">
public function mycoolAction()
{

	/* ... Some code ...*/

	$update = $this-&gt;getLayout()-&gt;getUpdate();

	/* ... Some code ...*/

	$this-&gt;addActionLayoutHandles();

	/* ... Some code ...*/

	$this-&gt;loadLayoutUpdates();

	/* ... Some code ...*/

	/* My stuff, add pure XML like you do from XML layout files <img src='http://inchoo.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  */
	$update-&gt;addUpdate(&#039;
		&lt;reference name=&quot;head&quot;&gt;
			&lt;action method=&quot;addJs&quot;&gt;&lt;script&gt;varien/product.js&lt;/script&gt;&lt;/action&gt;
			&lt;action method=&quot;addItem&quot;&gt;&lt;type&gt;js_css&lt;/type&gt;&lt;name&gt;calendar/calendar-win2k-1.css&lt;/name&gt;&lt;params /&gt;&lt;!--&lt;if/&gt;&lt;condition&gt;can_load_calendar_js&lt;/condition&gt;--&gt;&lt;/action&gt;
			&lt;action method=&quot;addItem&quot;&gt;&lt;type&gt;js&lt;/type&gt;&lt;name&gt;calendar/calendar.js&lt;/name&gt;&lt;!--&lt;params/&gt;&lt;if /&gt;&lt;condition&gt;can_load_calendar_js&lt;/condition&gt;--&gt;&lt;/action&gt;
			&lt;action method=&quot;addItem&quot;&gt;&lt;type&gt;js&lt;/type&gt;&lt;name&gt;calendar/calendar-setup.js&lt;/name&gt;&lt;!--&lt;params/&gt;&lt;if /&gt;&lt;condition&gt;can_load_calendar_js&lt;/condition&gt;--&gt;&lt;/action&gt;
			&lt;action method=&quot;addItem&quot;&gt;&lt;type&gt;skin_js&lt;/type&gt;&lt;name&gt;js/bundle.js&lt;/name&gt;&lt;/action&gt;
		&lt;/reference&gt;
	&#039;);

	/* ... Some code ...*/

	$this-&gt;generateLayoutXml()-&gt;generateLayoutBlocks();

	/* ... Some code ...*/

	$this-&gt;renderLayout();

}
</pre>
<p>Why this in place of the &#8220;proper way&#8221; trough XML layout files? If you are to lazy to create layout file or you wish to reduce the number of your module files (possibly to keep all your module files in one directory).</p>
<p>Cheers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/sick-of-magento-xml-layouts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Circulate</title>
		<link>http://www.lakevillewebdesign.com/circulate/</link>
		<comments>http://www.lakevillewebdesign.com/circulate/#comments</comments>
		<pubDate>Wed, 12 May 2010 13:16:17 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Article]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6360</guid>
		<description><![CDATA[I had the occasion come up recently where I needed to animate something in a circle. It never occurred to me until then that there wasn&#8217;t an obvious solution to this already with jQuery. So I figured out a way, and made a plugin out of it.This unicorn can fly friggin backwards with this plugin.View [...]]]></description>
			<content:encoded><![CDATA[<p>I had the occasion come up recently where I needed to animate something in a circle. It never occurred to me until then that there wasn&#8217;t an obvious solution to this already with jQuery. So I figured out a way, and made a plugin out of it.</p><div class="image-wrap"> <img src="http://css-tricks.com/wp-content/csstricks-uploads/unicornsbackwards.png" width="489" height="164" alt="" title="" /><br /> This unicorn can fly friggin backwards with this plugin.</div><div style="padding: 5px 0; text-align: center;"> <a href="http://css-tricks.com/examples/Circulate/" class="button">View Demo</a> &nbsp; <a href="http://css-tricks.com/examples/Circulate.zip" class="button">Download Files</a></div><p>&nbsp;</p><p><span id="more-6360"></span></p><h3>The Empowering Concepts</h3><p>This is a jQuery plugin, so obviously it relies upon the <a href="http://jquery.com">jQuery</a> library. Specifically, jQuery 1.4 or later, because we are using the .animate() functions new ability to have <a href="http://james.padolsey.com/javascript/easing-in-jquery-1-4a2/">per property easing</a>. This means we can animate the &#8220;top&#8221; value with one easing function while animating the &#8220;left&#8221; value with a different easing function. All this talk of easing&#8230; I should say that not only does this require jQuery 1.4+, it also requires the <a href="http://plugins.jquery.com/files/jquery.easing.1.2.js.txt">easing plugin</a>. Here is the idea:</p><p><img src="http://css-tricks.com/wp-content/csstricks-uploads/anarc.png" width="570" height="407" alt="" title="" /></p><p>So if we do that four different times, flipping around the easing functions and adding/subtracting as necessary, we can get a circle. And not just a circle really, but any ellipse defined by height and width.</p><h3>Features</h3><p>You can declare speed, height, and width. Those are pretty obvious / standard / expected parameters for a plugin like this. There are three others though:</p><ul><li><strong>sizeAdjustment</strong>: a percentage adjustment. Default is 100 (stays the same). Lower than 100 = shrinks to that percentage at the half-way point and then back up. Higher than 100 = grows to that percentage at the half-way point and then back down.</li><li><strong>loop</strong>: Default is false. True means the loop will run recursively. You can stop a current loop by calling the plugin on that element with just a single string parameter: $(&#8220;#thing&#8221;).circulate(&#8220;stop&#8221;);</li><li><strong>zIndexValue</strong>: accepts an array of four numeric values. These values set the z-index CSS property at each of the four points of the animation.</li></ul><p>Here is the full set:</p><pre><code class="javascript">$("#anything).circulate({

    speed: 400,                  // Speed of each quarter segment of animation, 1000 = 1 second
    height: 200,                 // Distance vertically to travel
    width: 200,                  // Distance horizontally to travel
    sizeAdjustment: 100,         // Percentage to grow or shrink
    loop: false,                 // Circulate continuously
    zIndexValues: [1, 1, 1, 1],  // Sets z-index value at each stop of animation

});</code></pre><h3>BETA</h3><p>As-is, I&#8217;m going to call this a Beta release. Mostly because it doesn&#8217;t work very well in Opera. If anyone is a big Opera fan and cares to figure out what is wrong with it, I&#8217;m all ears.</p><p>It&#8217;s also Beta because I haven&#8217;t gotten a ton of feedback on it, so I&#8217;d like to react to any of that that comes in and make changes as necessary. For example I&#8217;m thinking a callback function parameter might be a good idea. Also, I&#8217;m sure there are some parts that could be written a bit more efficiently.</p><div style="padding: 5px 0; text-align: center;"> <a href="http://css-tricks.com/examples/Circulate/" class="button">View Demo</a> &nbsp; <a href="http://css-tricks.com/examples/Circulate.zip" class="button">Download Files</a></div> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/circulate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reduced Test Cases</title>
		<link>http://www.lakevillewebdesign.com/reduced-test%c2%a0cases/</link>
		<comments>http://www.lakevillewebdesign.com/reduced-test%c2%a0cases/#comments</comments>
		<pubDate>Tue, 11 May 2010 13:05:08 +0000</pubDate>
		<dc:creator>Chris Coyier</dc:creator>
				<category><![CDATA[Article]]></category>

		<guid isPermaLink="false">http://css-tricks.com/?p=6263</guid>
		<description><![CDATA[If you are having trouble with something while building a webpage, the most helpful thing you can possibly do is start building a reduced test case. &#8220;Trouble&#8221; could be anything: the CSS isn&#8217;t doing what you think it should, the JavaScript isn&#8217;t behaving right, there are cross-browser issues, etc. In the process of creating a [...]]]></description>
			<content:encoded><![CDATA[<p>If you are having trouble with something while building a webpage, the most helpful thing you can possibly do is start building a reduced test case. &#8220;Trouble&#8221; could be anything: the CSS isn&#8217;t doing what you think it should, the JavaScript isn&#8217;t behaving right, there are cross-browser issues, etc. In the process of creating a reduced test case, you will either:</p><ul><li>Find out it was a mistake you made, help you isolate it, and fix it (or have a great test page for <a href="http://css-tricks.com/forums/">asking for help</a>)</li><li>Discover a true bug, and arm you with the perfect demo to present to the people responsible.</li></ul><p><strong>So what is a reduced test case, anyway?</strong> A reduced test case is a demo/example page you create which reproduces the problem you are having with the least amount of code possible. <strong>Only</strong> the HTML needed to show the problem content. <strong>Only</strong> CSS that is related to that reduced HTML. <strong>Only</strong> the JavaScript related to the problem functionality at hand.</p><p><strong>Reduced test cases are the absolute, no doubt about it, number one way to troubleshoot bugs.</strong> In fact, some people contribute to open source projects simply by turning bug reports into reduced test cases for more experienced developers to explore. Here is how you might get started creating one from your problems&#8230;</p><p><span id="more-6263"></span></p><h4>1. Make it static</h4><p>If it&#8217;s a front-end issue, make the page static instead of dynamically built from the server (like if you are using a CMS of some kind). That is, view the source on the problem page, copy and paste it into a new document, and start there with your reduced test case. Put that document into a new directory just for your test case.</p><h4>2. Make it isolated</h4><p>Then take all the resource files that HTML needs (CSS, images, JavaScript, etc) and put them in that directory too. Now you have a contained little environment just for this purpose. Now you can edit these resource files and markup without worrying about affecting anything live. This also makes your test case portable should you need to hand it off to someone.</p><h4>3. Reduce, reduce, reduce!</h4><p>Now start stripping stuff away, periodically testing to make sure your problem is still present. Start by removing HTML so what is visible on the page is reduced down to as little as needed. Then remove any CSS that is now un-needed. Then remove any JavaScript that isn&#8217;t related to the problem. If it&#8217;s not a JavaScript problem, remove all of it (unless you think it may be JavaScript interfering with whatever the problem really is).</p><h4>4. Document it</h4><p>If there are bits in the code that you <em>suspect</em> may be the problem, put comments in the code there. Every single web language has some way to insert comments that don&#8217;t affect the code.</p><h4>5. Put it online</h4><p>If you are working locally, put up your reduced test case online somewhere. I&#8217;ve seen people use the free <a href="https://www.dropbox.com/">Dropbox</a> to host a quick example. This will make it easier for you to share the problem with others who may be able to help out.</p><h4>But I don&#8217;t know what the problem is! They need to see everything!</h4><p>You <em>do</em> know what the problem is. It is whatever the problem is. Showing someone &#8220;everything&#8221; is often overwhelming to them and makes it harder for them to get their heads around. That&#8217;s how I feel, anyway. If someone is asking for help and they paste 1000 lines of CSS code in the forums, my eyes usually glaze over and I just skip it. A reduced test case however, is often intriguing and begs to be looked at.</p><h3>Other Resources</h3><p><a href="http://webkit.org/quality/reduction.html">WebKit on Test Case Reduction</a><br /> Know of any other good discussions on this topic? Let me know I&#8217;ll link them up.</p> ]]></content:encoded>
			<wfw:commentRss>http://www.lakevillewebdesign.com/reduced-test%c2%a0cases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
