(1277,1762,'Who Says the Web is Just for Squares?',NULL,'<p>I had some fun building a crazy diamond responsive grid for a project at work. <a href=\"http://viget.com/inspire/who-says-the-web-is-just-for-squares\">This article</a> explains how I did it.</p>','http://viget.com/inspire/who-says-the-web-is-just-for-squares',0,NULL,'2019-10-09 16:41:07','2019-10-09 16:41:07','963d4b31-fa65-44d3-8db0-e4fef95656a4',1,NULL,NULL,NULL,NULL),(1278,1763,'JavaScript Execution Patterns for Non-Web Apps',NULL,'<p>I finally got back to blogging and wrote an article about <a href=\"http://viget.com/extend/javascript-execution-patterns-for-non-web-apps\">JavaScript execution patterns</a>, a topic which I recently presented on at the <a href=\"https://speakerdeck.com/trevor_davis/javascript-for-non-web-apps\">DC jQuery Meetup</a>.</p>','http://viget.com/extend/javascript-execution-patterns-for-non-web-apps',0,NULL,'2019-10-09 16:41:07','2019-10-09 16:41:07','7887e71c-a3db-44b8-9483-232f1beb5694',1,NULL,NULL,NULL,NULL),(1279,1764,'Sass & Compass:  Never Write  Regular CSS Again',NULL,'<p>I gave a presentation last week at <a href=\"http://refresh-dc.org/\">Refresh DC</a> about <a href=\"http://sass-lang.com/\">Sass</a> &amp; <a href=\"http://compass-style.org/\">Compass</a>. After being introduced to Sass &amp; Compass about six months ago, I can’t imagine writing regular CSS ever again. I was a little hesitant at first, but now I can’t live without it. I posted my <a href=\"https://speakerdeck.com/u/trevor_davis/p/sass-and-compass-never-write-regular-css-again\">slides online</a>, and <a href=\"https://github.com/davist11/refresh-dc-compass-sass-presentation\">here is the git repo</a> with all of the code samples.</p>',NULL,2017,NULL,'2019-10-09 16:41:07','2019-10-09 16:41:08','1f5e83df-9f58-485d-891d-53a9b14789ca',1,NULL,NULL,NULL,NULL),(1280,1765,'How to Preload Images When You Can’t Use CSS Sprites',NULL,'<p>I have already shown <a href=\"http://trevordavis.net/blog/tutorial/the-6-most-important-css-techniques-you-need-to-know/#cssSprites\">how to use css sprites</a>, but there are times when you just cannot use them. Sometimes you still want the benefit of preloading the image, so you have to get creative.</p>\n<h2>An Example</h2><p class=\"leftSide pullLeft col1\">\n<a href=\"http://trevordavis.net/play/css-sprites/\"><img src=\"http://trevordavis.net/images/content/2008/11/sprite-vert.gif\" alt=\"CSS Sprite\" class=\"imageRight frame\" height=\"40\" width=\"21\" /></a></p><p>I have created a <a href=\"http://trevordavis.net/play/css-sprites/\">demo of a CSS sprite in action</a>. The sprite has the two images sitting on top of each other, and each link is using the image as a background image and then shifting the position of it when hovering.</p><p class=\"codeblock\"><code>\na.spriteVert { &lt;br /&gt; background: url(http://trevordavis.net/images/content/2008/11/sprite-vert.gif) no-repeat top left;&lt;br /&gt; padding-left: 30px;&lt;br /&gt;}&lt;br /&gt;a.spriteVert:hover { background-position: bottom left; } </code></p><p>It works great in the first example, but <strong>what happens if the user resizes their text?</strong> The sprite starts to break. When I am building a site, I am always thinking with the <a href=\"http://simplebits.com/publications/bulletproof/\">bulletproof mentality of Dan Cederholm</a>, so this is just not an acceptable solution.</p><p>Now, we obviously couldn’t position the images next to each other because we would still have a problem when shifting the image around.</p><h2>The Solution</h2><p>Typically when you are using CSS sprites, there is another element containing the anchor. Whether it’s a list item, paragraph, div, etc; <strong>this solution will work unless you have a background image on that element as well</strong>.</p><h3>Example</h3><p class=\"leftSide pullLeft col1\"><a href=\"http://trevordavis.net/play/css-sprites/preload-image/\"><img src=\"http://trevordavis.net/images/content/2008/11/sprite-hover.gif\" alt=\"Background image for hover state\" class=\"leftSide frame\" height=\"20\" width=\"21\" /></a><a href=\"http://trevordavis.net/play/css-sprites/preload-image/\"><img src=\"http://trevordavis.net/images/content/2008/11/sprite-off.gif\" alt=\"Background image for unactive state\" class=\"leftSide frame\" height=\"20\" width=\"21\" /></a></p><p>I have created a second <a href=\"http://trevordavis.net/play/css-sprites/preload-image/\">demo that “fixes” the first example</a>. The idea behind it is that instead of combining the images into 1 image, you split it into 2. Then you <strong>place the image that is being shown on hover as the background image on another element</strong> (preferably a containing element), just positioned off the screen.</p><p>Then when you hover, you switch the background image, which has already been preloaded, so you don’t get that “white flicker”. That may be a little hard to understand, so I’ll give an example.</p><h4>The Markup</h4><p class=\"codeblock\"><code>\n&lt;p class=\"spriteContainer\"&gt;&lt;a href=\"#\" class=\"spriteVert\"&gt;Hover Over Me&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=\"spriteContainer\"&gt;&lt;a href=\"#\" class=\"spriteVert spriteVert2\"&gt;Hover Over Me&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=\"spriteContainer\"&gt;&lt;a href=\"#\" class=\"spriteVert spriteVert3\"&gt;Hover Over Me&lt;/a&gt;&lt;/p&gt; </code></p><p><em>Note: The extra classes of spriteVert2 and spriteVert3 are just used to change the font size.</em></p><h4>The CSS</h4><p class=\"codeblock\"><code>\np.spriteContainer { &lt;br /&gt; background: url(http://trevordavis.net/images/content/2008/11/sprite-hover.gif) no-repeat -9999px -9999px;&lt;br /&gt;}&lt;br /&gt;a.spriteVert {&lt;br /&gt; background: url(http://trevordavis.net/images/content/2008/11/sprite-off.gif) no-repeat top left;&lt;br /&gt; padding-left: 30px;&lt;br /&gt;}&lt;br /&gt;a.spriteVert:hover { &lt;br /&gt; background-image: url(http://trevordavis.net/images/content/2008/11/sprite-hover.gif);&lt;br /&gt;} </code></p><h4>More Explanation</h4><p>So looking at the previous example, I am adding the background image that I want to appear on hover as the <strong>background image on the paragraph with a class of spriteContainer</strong>, and I am positioning it way off the screen.</p><p>Then when I hover over an anchor with a class of spriteVert, <strong>I change the background image to be the one from the paragraph</strong> with a class of spriteContainer.</p><h2>Conclusion</h2><p>While this is not as ideal as using CSS sprites because you increase the number of hits to your server, it can help to eliminate the white flicker that you get if the image is not preloaded.</p>',NULL,1835,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','4dc02f4b-ee3f-4ba5-8bb6-d0705cc9bfa6',1,NULL,NULL,NULL,NULL),(1281,1766,'WordPress & jQuery Contact Form without a Plugin',NULL,'<p>There are <a href=\"http://wordpress.org/extend/plugins/search.php?q=contact\">lots of WordPress plugins for contact forms</a>, but wouldn’t it be nice to have more control over the markup? In this tutorial, I am going to show how to use a custom page template to create a contact form in WordPress without a plugin.</p>\n<p>Some people may want to skip the post and get to the demo and source files:</p><p class=\"clearfix\"><a href=\"http://wp.trevordavis.net/contact-form/\" class=\"leftSide more-link\">View Demo</a> <a href=\"http://trevordavis.net/images/content/2009/02/contact-form.zip\" class=\"leftSide more-link\">Download Source Files</a></p><h2>So, why not use a plugin?</h2><p>Well, I think that a contact form is so simple that a WordPress plugin that doesn’t provide exactly what I want is pretty lame. Plus, I don’t need all those fancy interfaces for building the form; I just need the code.</p><h2>The Plan</h2><p>Our plan is to create a custom <a href=\"http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates\">WordPress Page Template</a>, then create a page that uses that template. Finally, we will add in a little <strong>jQuery</strong> to improve the form. Let’s write a little pseudo code to help determine how our page template will be structured.</p><h3>Pseudo Code</h3>\n<pre>&lt;code&gt;If form was submitted validate it\n If the form was submitted successfully\n  Send email(s)\n Else\n  Set variables to show errors\n\nIf the form was submitted successfully\n Show thank you message\nElse\n Show form (with errors if there are any)</pre>\n<h3>Creating the WordPress Page Template</h3><p>Alright, so first, we are going to start with some basic stuff: define the template name, include the header/sidebar/footer, and setup the basic structure of our pseudo code.</p><pre>&lt;code&gt;&lt;?php\n/*\nTemplate Name: Contact Form\n*/\n?&gt;\n\n&lt;?php \n//If the form is submitted\nif(isset($_POST[\'submitted\'])) {\n //If there is no error, send the email\n if(!isset($hasError)) {\n\n }\n} ?&gt;\n\n&lt;?php get_header(); ?&gt;\n\n&lt;?php \n//If the email was sent, show a thank you message\n//Otherwise show form\nif(isset($emailSent) &amp;&amp; $emailSent == true) {\n?&gt;\n\n&lt;?php } else { ?&gt;\n\n&lt;?php } ?&gt;\n\n&lt;?php get_sidebar(); ?&gt;\n\n&lt;?php get_footer(); ?&gt;</pre>\n<h3>The Form</h3><p>Next, let’s code the actual form. I also want to provide the ability for the user to enter some text to go above the form, so we are going to use the regular loop:</p>\n<pre>&lt;code&gt;&lt;?php if(isset($emailSent) &amp;&amp; $emailSent == true) { ?&gt;\n\n &lt;div class=\"thanks\"&gt;\n  &lt;h1&gt;Thanks, &lt;?=$name;?&gt;&lt;/h1&gt;\n  &lt;p&gt;Your email was successfully sent. I will be in touch soon.&lt;/p&gt;\n &lt;/div&gt;\n\n&lt;?php } else { ?&gt;\n\n &lt;?php if (have_posts()) : ?&gt;\n \n  &lt;?php while (have_posts()) : the_post(); ?&gt;\n   &lt;h1&gt;&lt;?php the_title(); ?&gt;&lt;/h1&gt;\n   &lt;?php the_content(); ?&gt;\n  \n   &lt;?php if(isset($hasError) || isset($captchaError)) { ?&gt;\n    &lt;p class=\"error\"&gt;\n     There was an error submitting the form.\n    &lt;p&gt;\n   &lt;?php } ?&gt;\n \n   &lt;form action=\"&lt;?php the_permalink(); ?&gt;\" id=\"contactForm\" method=\"post\"&gt;\n \n   &lt;/form&gt;\n \n  &lt;?php endwhile; ?&gt;\n &lt;?php endif; ?&gt;\n&lt; } ?&gt;</pre>\n<p>If the <strong>emailSent</strong> variable is set to true, we display the thank you message. Otherwise, we show the form. So we are outputting the title of the page, and any content that was entered. Then, we are checking to see if there was an error. Finally, we display the form:</p><pre>&lt;code&gt;&lt;ol class=\"forms\"&gt;\n &lt;li&gt;\n  &lt;label for=\"contactName\"&gt;Name&lt;/label&gt;\n  &lt;input type=\"text\" name=\"contactName\" id=\"contactName\" value=\"\n  &lt;?php if(isset($_POST[\'contactName\'])) echo $_POST[\'contactName\'];?&gt;\"\n   class=\"requiredField\" /&gt;\n  &lt;?php if($nameError != \'\') { ?&gt;\n   &lt;span class=\"error\"&gt;&lt;?=$nameError;?&gt;&lt;/span&gt; \n  &lt;?php } ?&gt;\n &lt;/li&gt;\n \n &lt;li&gt;\n  &lt;label for=\"email\"&gt;Email&lt;/label&gt;\n  &lt;input type=\"text\" name=\"email\" id=\"email\" value=\"\n  &lt;?php if(isset($_POST[\'email\']))  echo $_POST[\'email\'];?&gt;\"\n  class=\"requiredField email\" /&gt;\n  &lt;?php if($emailError != \'\') { ?&gt;\n   &lt;span class=\"error\"&gt;&lt;?=$emailError;?&gt;&lt;/span&gt;\n  &lt;?php } ?&gt;\n &lt;/li&gt;\n \n &lt;li class=\"textarea\"&gt;\n  &lt;label for=\"commentsText\"&gt;Comments&lt;/label&gt;\n  &lt;textarea name=\"comments\" id=\"commentsText\" rows=\"20\" cols=\"30\" class=\"requiredField\"&gt;\n  &lt;?php if(isset($_POST[\'comments\'])) { \n   if(function_exists(\'stripslashes\')) { \n    echo stripslashes($_POST[\'comments\']); \n   } else { \n    echo $_POST[\'comments\']; \n   }\n   } ?&gt;&lt;/textarea&gt;\n  &lt;?php if($commentError != \'\') { ?&gt;\n   &lt;span class=\"error\"&gt;&lt;?=$commentError;?&gt;&lt;/span&gt; \n  &lt;?php } ?&gt;\n &lt;/li&gt;\n &lt;li class=\"inline\"&gt;\n  &lt;input type=\"checkbox\" name=\"sendCopy\" id=\"sendCopy\" value=\"true\"\n  &lt;?php if(isset($_POST[\'sendCopy\']) &amp;&amp; $_POST[\'sendCopy\'] == true) \n   echo \' checked=\"checked\"\'; ?&gt; \n  /&gt;\n  &lt;label for=\"sendCopy\"&gt;Send a copy of this email to yourself&lt;/label&gt;\n &lt;/li&gt;\n &lt;li class=\"screenReader\"&gt;\n  &lt;label for=\"checking\" class=\"screenReader\"&gt;If you want to submit this form, do not enter anything in this field&lt;/label&gt;\n  &lt;input type=\"text\" name=\"checking\" id=\"checking\" class=\"screenReader\" value=\"\n  &lt;?php if(isset($_POST[\'checking\']))  echo $_POST[\'checking\'];?&gt;\"\n  /&gt;\n &lt;/li&gt;\n &lt;li class=\"buttons\"&gt;\n  &lt;input type=\"hidden\" name=\"submitted\" id=\"submitted\" value=\"true\" /&gt;\n  &lt;button type=\"submit\"&gt;Email me »&lt;/button&gt;\n &lt;/li&gt;\n&lt;/ol&gt;</pre>\n<p class=\"note\"><em>Note: Line wrapping added for readability.</em></p><p>Ok, wow, that may seem like a lot. So let’s break down the name field to see what this code is actually doing:</p><pre>&lt;code&gt;&lt;li&gt;&lt;label for=\"contactName\"&gt;Name&lt;/label&gt;\n &lt;input type=\"text\" name=\"contactName\" id=\"contactName\" value=\"&lt;?php if(isset($_POST[\'contactName\'])) echo $_POST[\'contactName\'];?&gt;\" class=\"requiredField\" /&gt;\n &lt;?php if($nameError != \'\') { ?&gt;\n  &lt;span class=\"error\"&gt;&lt;?=$nameError;?&gt;&lt;/span&gt; \n &lt;?php } ?&gt;\n&lt;/li&gt;</pre>\n<p>We are displaying each form field in a list item, displaying the label, input field, and then showing an error message if there is one. We are also displaying the value in the form field if it was already submitted.</p><p>So in essence, we are just doing that for each field of the form. You could easily go into the code to add more fields.</p><p>We are also using honeypot captcha to see if a bot was trying to submit the form:</p><pre>&lt;code&gt;&lt;li class=\"screenReader\"&gt;\n &lt;label for=\"checking\" class=\"screenReader\"&gt;If you want to submit this form, do not enter anything in this field&lt;/label&gt;\n &lt;input type=\"text\" name=\"checking\" id=\"checking\" class=\"screenReader\" value=\"&lt;?php if(isset($_POST[\'checking\']))  echo $_POST[\'checking\'];?&gt;\" /&gt;\n&lt;/li&gt;</pre>\n<p>That list item is pushed off the page with CSS, and if there is a value in that field, we can assume that it is not a human trying to submit the form:</p><pre>&lt;code&gt;.screenReader { \n left: -9999px; \n position: absolute; \n top: -9999px;\n}</pre>\n<h3>The Validation</h3><p>Next, we are going to have a conditional statement to determine if the form was submitted or not:</p><pre>&lt;code&gt;&lt;?php \n//If the form is submitted\nif(isset($_POST[\'submitted\'])) {\n\n} ?&gt;</pre>\n<p>Within that conditional, is where we are going to do all of our validation of the required fields. First, let’s check to see if our honeypot captcha form field is filled in. If it is, then we will display an error and not check anymore of the form:</p><pre>&lt;code&gt;//Check to see if the honeypot captcha field was filled in\nif(trim($_POST[\'checking\']) !== \'\') {\n $captchaError = true;\n} else {\n\n}</pre>\n<p>So if the captcha field was left blank, we will continue to validate the required fields:</p><pre>&lt;code&gt;//Check to make sure that the name field is not empty\nif(trim($_POST[\'contactName\']) === \'\') {\n $nameError = \'You forgot to enter your name.\';\n $hasError = true;\n} else {\n $name = trim($_POST[\'contactName\']);\n}\n\n//Check to make sure sure that a valid email address is submitted\nif(trim($_POST[\'email\']) === \'\')  {\n $emailError = \'You forgot to enter your email address.\';\n $hasError = true;\n} else if (!eregi(\"^[A-Z0-9._%-]+@[A-Z0-9._%-]+.[A-Z]{2,4}$\", trim($_POST[\'email\']))) {\n $emailError = \'You entered an invalid email address.\';\n $hasError = true;\n} else {\n $email = trim($_POST[\'email\']);\n}\n \n//Check to make sure comments were entered \nif(trim($_POST[\'comments\']) === \'\') {\n $commentError = \'You forgot to enter your comments.\';\n $hasError = true;\n} else {\n if(function_exists(\'stripslashes\')) {\n  $comments = stripslashes(trim($_POST[\'comments\']));\n } else {\n  $comments = trim($_POST[\'comments\']);\n }\n}</pre>\n<p>Again, that may seem like a little much, so let’s just take a look at the validation on the name field:</p><pre>&lt;code&gt;if(trim($_POST[\'contactName\']) === \'\') {\n $nameError = \'You forgot to enter your name.\';\n $hasError = true;\n} else {\n $name = trim($_POST[\'contactName\']);\n}</pre>\n<p>If the name field if empty, set a variable that will display the name error and set a flag saying that there was an error on the form. Otherwise, set a variable that will contain the name value from the form.</p><h3>Sending the Email</h3><p>Now, we want to send the email if there are no errors:</p>\n<pre>&lt;code&gt;//If there is no error, send the email\nif(!isset($hasError)) {\n\n $emailTo = \'&lt;strong&gt;me@somedomain.com&lt;/strong&gt;\';\n $subject = \'Contact Form Submission from \'.$name;\n $sendCopy = trim($_POST[\'sendCopy\']);\n $body = \"Name: $name nnEmail: $email nnComments: $comments\";\n $headers = \'From: My Site &lt;\'.$emailTo.\'&gt;\' . \"rn\" . \'Reply-To: \' . $email;\n \n mail($emailTo, $subject, $body, $headers);\n\n if($sendCopy == true) {\n  $subject = \'You emailed &lt;strong&gt;Your Name&lt;/strong&gt;\';\n  $headers = \'From: &lt;strong&gt;Your Name&lt;/strong&gt; &lt;&lt;strong&gt;noreply@somedomain.com&lt;/strong&gt;&gt;\';\n  mail($email, $subject, $body, $headers);\n }\n\n $emailSent = true;\n\n}</pre>\n<p class=\"note\"><em>Note: Items bolded are values that you will want to change before implementing.</em></p><p>I personally like to have the contact form submission come from myself. That way, I just setup a filter in Gmail, and I can guarantee that it won’t get caught in my spam filter. The second email is only sent if the user checks the checkbox to send a copy to themselves.</p><p><a href=\"http://trevordavis.net/images/content/2009/02/contact-form.txt\" class=\"more-link\">View Entire Custom Page Template</a></p><h3>Creating the Page in WordPress</h3><p>First, you want to upload the <a href=\"http://trevordavis.net/images/content/2009/02/contact-form.zip\">contact-form.php</a> page template to your themes folder. Next, you will create the page in WordPress and select <strong>Contact Form</strong> as the page template.</p><p class=\"pullLeft\"><img src=\"http://trevordavis.net/images/content/2009/02/wordpress-page-template.png\" alt=\"Adding WordPress page template\" class=\"frame\" height=\"341\" width=\"570\" /></p><p>Then, just publish your page and you will have your contact form. Well, the form will be usable, but we are going to add in some CSS and jQuery to finish it off.</p><h3>Styling the Form</h3><p>I recently wrote <a href=\"http://trevordavis.net/blog/tutorial/flexible-and-semantic-forms-with-a-little-jquery/\">an article about styling forms</a>, so we are just going to stick with some basic styles:</p><pre>&lt;code&gt;.screenReader { left: -9999px; position: absolute; top: -9999px; }\n.thanks { background: #F2F3F6; border: 1px solid #7E8AA2; padding: 10px; }\n\n/*****Forms*****/\nol.forms { float: left; list-style: none; margin: 0; width: 100%; }\nol.forms li { \n clear: both; \n float: left; \n margin-bottom: 18px; \n position: relative;\n width: 100%;\n}\nol.forms label {\n cursor: pointer;\n display: block;\n float: left;\n font-weight: bold;\n padding-right: 20px;\n width: 100px;\n}\nol.forms input, ol.forms textarea {\n border: 1px solid #7E8AA2;\n border-radius: 3px;\n font: inherit;\n -moz-border-radius: 3px;\n padding: 2px;\n -webkit-border-radius: 3px;\n width: 214px;\n}\nol.forms textarea { height: 300px; width: 334px; }\nol.forms input:focus, ol.forms textarea:focus { background-color: #f2f3f6; border-color: #ff9800; }\n.error { color: #f00; }\nol.forms li .error { font-size: 12px; margin-left: 20px; }\nol.forms li.textarea .error {\n display: block;\n position: absolute;\n right: 0;\n top: 0;\n width: 100px;\n}\nol.forms li.screenReader { margin-bottom: 0; }\nol.forms li.buttons button {\n background: #ff9800;\n border: none;\n color: #000;\n cursor: pointer;\n font: 16px/16px \"Avenir LT Std\", Helvetica, Arial, sans-serif;\n overflow: hidden;\n padding: 6px 3px 3px 3px;\n text-transform: uppercase;\n width: auto;\n}\nol.forms li.buttons button:hover { color: #222; }\nol.forms li.buttons button:active { left: -1px; position: relative; top: -1px; }\nol.forms li.buttons, ol.forms li.inline { float: right; width: 460px; }\nol.forms li.inline input { width: auto; }\nol.forms li.inline label { display: inline; float: none; width: auto; }</pre>\n<p>So drop that CSS in your theme stylesheet and you will see the form start to look much better.</p><h3>Enhancing the form with some jQuery</h3><p>I have also already written about creating <a href=\"http://trevordavis.net/blog/ajax-forms-with-jquery/\">AJAX forms with jQuery</a>, but I thought I would specifically talk about an AJAX script for a contact form.</p><p>First, we want to execute our jQuery when the document is ready and the form was submitted:</p><pre>&lt;code&gt;$(document).ready(function() {\n $(\'form#contactForm\').submit(function() {\n  \n  return false;\n });\n});</pre>\n<p>Next, we want to hide any error messages if there are any and validate any required fields which are denoted with a class of <strong>requiredField</strong>:</p><pre>&lt;code&gt;$(\'form#contactForm .error\').remove();\nvar hasError = false;\n$(\'.requiredField\').each(function() {\n   \n});</pre>\n<p>After that, we want to validate that the field is not empty and append an error message if it is:</p><pre>&lt;code&gt;if(jQuery.trim($(this).val()) == \'\') {\n var labelText = $(this).prev(\'label\').text();\n $(this).parent().append(\'&lt;span class=\"error\"&gt;You forgot to enter your \'+labelText+\'.&lt;/span&gt;\');\n hasError = true;\n}</pre>\n<p>If the field is not empty and also has a class of <strong>email</strong>, we want to validate that the email address is valid:</p><pre>&lt;code&gt; else if($(this).hasClass(\'email\')) {\n var emailReg = /^([w-.]+@([w-]+.)+[w-]{2,4})?$/;\n if(!emailReg.test(jQuery.trim($(this).val()))) {\n  var labelText = $(this).prev(\'label\').text();\n  $(this).parent().append(\'&lt;span class=\"error\"&gt;You entered an invalid \'+labelText+\'.&lt;/span&gt;\');\n  hasError = true;\n }\n}</pre>\n<p>If there are no errors, then we want to replace the submit button with a loading image:</p><pre>&lt;code&gt;if(!hasError) {\n$(\'form#contactForm li.buttons button\').fadeOut(\'normal\', function() {\n $(this).parent().append(\'&lt;img src=\"/wp-content/themes/td-v3/images/template/loading.gif\" alt=\"Loading…\" height=\"31\" width=\"31\" /&gt;\');\n});</pre>\n<p class=\"note\"><em>Note: You will need to update the source of the image to wherever you upload it in your theme.</em></p><p>Finally, let’s submit the form via an AJAX request, slide the form up, and show a thank you message:</p><pre>&lt;code&gt;var formInput = $(this).serialize();\n$.post($(this).attr(\'action\'),formInput, function(data){\n $(\'form#contactForm\').slideUp(\"fast\", function() {       \n  $(this).before(\'&lt;p class=\"thanks\"&gt;&lt;strong&gt;Thanks!&lt;/strong&gt; Your email was successfully sent. I check my email all the time, so I should be in touch soon.&lt;/p&gt;\');\n });\n});</pre>\n<p>Take a look at the entire script:</p><pre>&lt;code&gt;$(document).ready(function() {\n $(\'form#contactForm\').submit(function() {\n  $(\'form#contactForm .error\').remove();\n  var hasError = false;\n  $(\'.requiredField\').each(function() {\n   if(jQuery.trim($(this).val()) == \'\') {\n    var labelText = $(this).prev(\'label\').text();\n    $(this).parent().append(\'&lt;span class=\"error\"&gt;You forgot to enter your \'+labelText+\'.&lt;/span&gt;\');\n    hasError = true;\n   } else if($(this).hasClass(\'email\')) {\n    var emailReg = /^([w-.]+@([w-]+.)+[w-]{2,4})?$/;\n    if(!emailReg.test(jQuery.trim($(this).val()))) {\n     var labelText = $(this).prev(\'label\').text();\n     $(this).parent().append(\'&lt;span class=\"error\"&gt;You entered an invalid \'+labelText+\'.&lt;/span&gt;\');\n     hasError = true;\n    }\n   }\n  });\n  if(!hasError) {\n   $(\'form#contactForm li.buttons button\').fadeOut(\'normal\', function() {\n    $(this).parent().append(\'&lt;img src=\"/wp-content/themes/td-v3/images/template/loading.gif\" alt=\"Loading…\" height=\"31\" width=\"31\" /&gt;\');\n   });\n   var formInput = $(this).serialize();\n   $.post($(this).attr(\'action\'),formInput, function(data){\n    $(\'form#contactForm\').slideUp(\"fast\", function() {       \n     $(this).before(\'&lt;p class=\"thanks\"&gt;&lt;strong&gt;Thanks!&lt;/strong&gt; Your email was successfully sent. I check my email all the time, so I should be in touch soon.&lt;/p&gt;\');\n    });\n   });\n  }\n  \n  return false;\n  \n });\n});</pre>\n<p>Just include it in the head of your document after jQuery, and you are good to go:</p><pre>&lt;code&gt;&lt;script type=\"text/javascript\" src=\"&lt;?php bloginfo(\'template_directory\'); ?&gt;/scripts/jquery.js\"&gt;&lt;/script&gt;\n&lt;script type=\"text/javascript\" src=\"&lt;?php bloginfo(\'template_directory\'); ?&gt;/scripts/contact-form.js\"&gt;&lt;/script&gt;</pre>\n<p class=\"note\"><em>Note: You may need to change the source depending upon where you upload the files in your theme.</em></p><h2>Conclusion</h2><p class=\"clearfix\"><a href=\"http://wp.trevordavis.net/contact-form/\" class=\"leftSide more-link\">View Demo</a> <a href=\"http://trevordavis.net/images/content/2009/02/contact-form.zip\" class=\"leftSide more-link\">Download Source Files</a></p><p>That’s it! Just upload the files and you’ve got your form. Since you’ve got the code right in front of you, it should be very easy to tweak and add on to. Enjoy!</p><p class=\"ad\">\nCenturyLink Deals: <a href=\"http://www.centurylinkquote.com/bundles.html\">Internet, Phone, &amp; TV Bundles</a></p>',NULL,1900,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','d267f729-e3dd-42d9-b5d4-9b030929f485',1,NULL,NULL,NULL,NULL),(1282,1767,'There’s always time to launch your dream',NULL,'<p>I agree completely, <a href=\"http://www.37signals.com/svn/posts/1619-theres-always-time-to-launch-your-dream\">stop with the excuses</a>. I don’t think I tried that hard in school either. Definitely the quote of the article: “Never let your schooling interfere with your education”.</p>',NULL,1901,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','0d12a6c4-5ff1-4a8b-95be-64fafc32fb1d',1,NULL,NULL,NULL,NULL),(1283,1768,'Background-clip, Text-shadow, & Gradients; Oh My!',NULL,'<p>I have been able to play around with <a href=\"http://www.viget.com/inspire/background-clip-text-shadow-gradients/\">background-clip, text-shadow, and gradients</a> on a few recent projects, and I wrote up some tricks that I have come across.</p>','http://www.viget.com/inspire/background-clip-text-shadow-gradients/',0,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','0bf56d73-f2ae-4122-ba14-628ab8effeb9',1,NULL,NULL,NULL,NULL),(1284,1769,'CSS Forms',NULL,'<p>Everyone hates forms.</p>\n\n<p>They are hard to style so that they work with your site design. They are hard to make them accessible. Yeah, yeah we have heard it all. But in reality, they are not that hard to do.</p>\n\n<p>Since every other web developer/designer has their own method, I thought I would share my two cents.</p>\n\n<p>When thinking through all of the HTML elements to find something that makes sense for forms, there are many options.</p>\n\n<ul><li>Unordered List</li>\n<li>Ordered List</li>\n<li>DIVs</li>\n<li>Paragraphs</li>\n<li>Tables (Yes some people still use tables for forms)</li>\n</ul><p>There are probably others. But I like to use a more uncommon element: a Definition List. It is perfect for the job. You have got the definition term, which is essentially like the label. Then you have got the definition description, which is basically the actual form element.</p>\n\n<p>Let\'s start with some un-styled markup:</p>\n\n<div class=\"codeblock\"><code>\n&lt;form action=\"#\" method=\"post\" name=\"sendToFriendForm\" id=\"sendToFriendForm\"&gt;<br /> &lt;dl class=\"forms\"&gt;<br />  &lt;dt&gt;&lt;label for=\"name\"&gt;Your Name:&lt;/label&gt;&lt;/dt&gt;<br />  &lt;dd&gt;&lt;input name=\"name\" id=\"name\" type=\"text\" /&gt;&lt;/dd&gt;<br /><br />  &lt;dt&gt;&lt;label for=\"senderEmail\"&gt;Your Email Address: &lt;span class=\"required\"&gt;*&lt;/span&gt;&lt;/label&gt;&lt;/dt&gt;<br />  &lt;dd&gt;&lt;input name=\"senderEmail\" id=\"senderEmail\" type=\"text\" /&gt;&lt;/dd&gt;<br /><br />  &lt;dt&gt;&lt;label for=\"recipientEmail\"&gt;Friend\'s Email Address: &lt;span class=\"required\"&gt;*&lt;/span&gt;&lt;/label&gt;&lt;/dt&gt;<br />  &lt;dd&gt;&lt;input name=\"recipientEmail\" id=\"recipientEmail\" type=\"text\" /&gt;&lt;/dd&gt;<br />  &lt;dd class=\"help\"&gt;Use commas to separate multiple email addresses.&lt;/dd&gt;<br /><br />  &lt;dt&gt;&lt;label for=\"sex\"&gt;Sex&lt;/label&gt;&lt;/dt&gt;<br />  &lt;dd class=\"radio\"&gt;&lt;input name=\"sex\" id=\"male\" type=\"radio\" /&gt; &lt;label for=\"male\"&gt;Male&lt;/label&gt; &lt;input name=\"sex\" id=\"female\" type=\"radio\" /&gt; &lt;label for=\"female\"&gt;Female&lt;/label&gt;&lt;/dd&gt;<br />  &lt;dt&gt;&lt;label for=\"message\"&gt;Message:&lt;/label&gt;&lt;/dt&gt;<br />  &lt;dd&gt;&lt;textarea name=\"message\" id=\"message\"&gt;&lt;/textarea&gt;&lt;/dd&gt;<br /> &lt;/dl&gt;<br /> &lt;button type=\"submit\"&gt;Submit &amp;raquo;&lt;/button&gt;<br />&lt;/form&gt; \n\n</code></div>\n\n<p>I have created the page so you can see <a href=\"//assets.trevor-davis.com/play/cssForms/\">the output</a>. Even un-styled, this form doesn\'t even look bad. But lets add some style:</p>\n\n<div class=\"codeblock\"><code>\nform {<br />  margin: 0;<br />  padding: 0;<br /> }<br /><br /> dl.forms {<br />  float: left;<br />  width: 100%;<br /> }<br /><br /> dl.forms dt {<br />  margin: 0;<br />  padding: 10px 0 0 0;<br />  clear: left;<br />  float: left;<br />  width: 175px;<br /> }<br /><br /> dl.forms label { font-weight: bold; }<br /><br /> dl.forms dd {<br />  margin: 0;<br />  padding: 10px 0 0 0;<br /> }<br /><br /> dl.forms dd.help {<br />  clear: left;<br />  padding-top: 2px;<br />  font-size: 90%;<br />  color: #999;<br /> }<br /><br /> dl.forms input, dl.forms textarea { width: 300px; }<br /><br /> dl.forms dd.radio input { width: auto; }<br /><br /> dl.forms textarea { height: 150px; }<br /><br /> .required {<br />  color: #FF0000;<br />  font-weight: bold;<br /> } \n\n</code></div>\n\n<p>I don\'t think I need to go step by step through that because it is pretty simple styling. I have <a href=\"//assets.trevor-davis.com/play/cssforms/final/\">created the styled page</a> for you to see.</p>\n\n<p>I personally like forms that have the label and the input element on the same line, but that\'s just me. It is pretty flexible, try resizing the font two times. Still very readable. You could easily do the widths in ems or percentages; I just chose to use pixels since I don\'t have any parent element containing it.</p>\n\n<p>Should be pretty good in all browsers, especially since we didn\'t do any crazy CSS. I know it looks good in FF, IE6 and IE7. I believe it works fine in Safari and Opera.</p>\n\n<p>Obviously this isn\'t the be all and end all to styling forms with CSS. But it is something to start with. So, go out and make it better. But be sure to share what you have created.</p>',NULL,1714,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','aa494d96-0228-426d-9f45-6302b535f95c',1,NULL,NULL,NULL,NULL),(1285,1770,'Web Standards. What don’t they get?',NULL,'<p>I still don\'t understand why people refuse to embrace web standards.</p>\n\n<p>Is there an advantage to using tables for layout? Yeah that bloated code and horribly inaccessible code sure sounds great to me too.</p>\n\n<p>You know what sounds better to me? Some nice lean code with a stylesheet to control the style on the site.</p>\n\n<p>There are two sites that I know of that have paid a lot of money to have their sites redesigned:</p>\n\n<ol><li>My high school, <a href=\"http://www.gprep.org/\">Georgetown Prep</a></li>\n<li>A site that I provided maintenance for a few weeks, <a href=\"http://orangebowl.org/\">The Orange Bowl</a></li>\n</ol><p>Try viewing the source of those sites. </p>\n\n<p>Yuck.</p>\n\n<p>It hurts me to look at that. They paid good money for that? How can we educate the companies who built these sites to actually embrace web standards?</p>\n\n<p><a href=\"http://webstandards.org/\">The Web Standards Project</a> is a great start. Hopefully they can help to educate others. But they can\'t do it alone. All web developers who embrace standards need to educate when they have the opportunity. We also need to help fight against Microsoft and their terrible product: Internet Explorer. Sure IE 7 is a huge improvement, but it still stinks. Or how about the fact that Outlook 2007\'s HTML rendering engine will use Words engine instead of IE\'s. That sets HTML emails back a good ten years or so.</p>\n\n<p>Embrace web standards!</p>\n\n<p>Keep on fighting the good fight.</p>',NULL,1715,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','954181ca-4f25-489b-a8c4-22df8b07d07b',1,NULL,NULL,NULL,NULL),(1286,1771,'Web Design / Development Process',NULL,'<p>What are the steps that you go through when making a web site?</p>\n\n<p>Are you adding a lot of extra <code>&lt;div&gt;</code> and <code>&lt;span&gt;</code> tags? Do you have way too many classes?</p>\n\n<p>Maybe you should reconsider your process.</p>\n\n<p>The process that I have found effective, is exactly what I am doing with this site:</p>\n\n<ol><li>Create the markup for everything.</li>\n<li>Add divs that make sense, i.e. header, content, footer.</li>\n<li>Go in and implement the design adding the necessary divs and classes.</li>\n</ol><p>Your markup will become much less bloated, and you will have less non-semantic elements. Sure you may have to add a couple of extra <code>&lt;div&gt;</code> tags to add those rounded corners, but its better to add those after you have the structure in place.</p>\n\n<p>While I could easily come up with a design for this site, I really am not as creative as my sister is. That is why I have tasked her with coming up with a logo and a design for my site. Then when it is time for her to build her online portfolio, I will help her to implement the site.</p>\n\n<p>How can you improve your design / development process? Can you improve mine?</p>\n\n<p>Share your methods.</p>',NULL,1716,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','ac691de4-3fa8-45b1-8cda-f1c6e2a53acc',1,NULL,NULL,NULL,NULL),(1287,1772,'Learning from Mistakes',NULL,'<p>You really do get better through experience. The best experience is learning from your mistakes. I learned a great deal from one experience in particular.</p>\n\n<p>About 2 months ago, I did some work for the a pretty high profile client. Their regular webmaster was going to be out of town during the busiest time of the year for them, and I had agreed to help them update the site for the next 2 weeks. Over the phone, I had been in contact with a representative, and we had agreed on a set price for the 2 weeks. We had guesstimated that I would do approximately 2 hours of work a night.</p>\n\n<p>That was mistake number 1.</p>\n\n<p>I should have gotten something in writing. At least an email to confirm how much we had agreed on would have worked. <a href=\"http://www.digital-web.com/about/staff/nick_gould/\"> Nick Gould</a> wrote an excellent article entitled <a href=\"http://www.digital-web.com/articles/web_design_contracts/\">Web Design Contracts: Why Bother</a>. Nick says:</p>\n\n<blockquote>\nA written contract won\'t always avoid this outcome — I\'ve had clients tell me with a straight face that they didn\'t realize we were billing for each hour of work despite a clear statement in our contract to that effect. But in that case, I could at least point back to the contract language (humbly, mumbling apologies as I did so) as evidence of his misunderstanding.\n</blockquote>\n\n<p>This is exactly what I would have been able to do if I had what we had agreed on in writing.</p>\n\n<p>For the future, I plan on doing the following before starting any work:</p>\n\n<ol><li>Write detailed contracts that clearly explain the pricing, the deliverables, the process, and the payment.</li>\n <li>Discuss any questions about the contract with the client.</li>\n <li>Wait for an initial payment from the client.</li>\n</ol><p>I would recommend that anyone doing freelance work do the same. Take some time to review Nick\'s article, and take the time to write these contracts. In the end, it is only going to help you.</p>\n\n<p>To top it all off, the guy offered me some gear to make up for the money that he refused to pay me. No thanks, a t-shirt does not make up for the fact that you cheated me.</p>\n\n<p>On a side note, the site was a disaster to work on. It was poorly organized, still used tables for layout, and did not use includes effectively. It is so sad to see a site that has such high visibility be so poor. Apparently, they just launched a redesign, and guess what? It still uses tables for layout! Hopefully, they will at least utilize stylesheets and includes.</p>\n\n<p>Just for fun, if you don\'t have it already, download the <a href=\"https://addons.mozilla.org/firefox/60/\">Web Developer Toolbar</a>. Go to some big name sites and go to Outline » Table Cells. See how many big organizations are still so far behind in their adherence to web standards. When are these companies going to realize that the web is such a valuable tool for their marketing campaign? I guess that is a topic for another conversation.</p>',NULL,1717,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','ce5093f7-99c1-43d9-9344-92dc0ea6302b',1,NULL,NULL,NULL,NULL),(1288,1773,'The Rise of Flash Again',NULL,'<p>This week, there was an A List Apart article called <a href=\"http://alistapart.com/articles/semanticflash\">Semantic Flash: Slippery When Wet</a>. When I first started learning about Web Standards, I hated flash. I thought that it was really all just bells and whistles and nothing useful. As time has passed, I have realized that there are some situations where flash can be useful.</p>\n\n<p>First, there was the <a href=\"http://www.mikeindustries.com/sifr/\">sIFR: Scalable Inman Flash Replacement</a>. Earlier this week, there was the introduction of <a href=\"http://www.swfir.com/\">swfir: swf Image Replacement</a>. I think this technique seems really cool, and there are definitely situations where I would be interested in using it. Just adding a simple drop shadow and rotating the image a few degrees really add a nice effect to the image.</p>\n\n<p>My only problem is that I think it may be overused. I hope that people don\'t get so flash-happy that they use it for all images on their site. The same goes for the sIFR technique. I hope that people only utilize these techniques in moderation, and we don\'t see it all over the place. I have a feeling that we are going to start seeing more and more flash out there, and I really hope that we don\'t see it used the way it used to be. I still cannot understand how a person can build an all flash site and feel good about themselves. Does it make them happy that people with screen readers would have problems using their site? I guess it must make someone happy, since people are still doing it.</p>\n\n<p>As a side note, I have played around with the swfir script, and it was very very easy to implement.</p>',NULL,1718,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','f9cd96ca-7eac-4614-b27a-1b65512317bd',1,NULL,NULL,NULL,NULL),(1289,1774,'Problems with Commenting',NULL,'<p>So in the quest to abolish the www from my URL, I seemed to have broken Movable Type comments.</p>\n\n<p>I added the following to my .htaccess file:</p>\n\n<div class=\"codeblock\"><code>\nRewriteEngine on<br />RewriteCond %{HTTP_HOST} ^www.trevor-davis.com$ [NC]<br />RewriteRule ^(.*)$ //trevor-davis.com/$1 [R=301,L] \n\n</code></div>\n\n<p>That means whenever anyone tried to go to <a href=\"/\">www.trevor-davis.com</a>, they were redirected to <a href=\"/\">trevor-davis.com</a>.</p>\n\n<p>My co-worker, Adrian, told me today that when he was trying to add a comment to one of my entries, he got an error that said \"No entry_id\". After much googling, I finally determined it was because of the URL rewriting. I could not really find a solution, but I finally went into the mt-config.cgi file and found out that when I had setup the site, I set it up with <a href=\"/\">www.trevor-davis.com</a>. For some reason, this broke the comments. I changed it to <a href=\"/\">trevor-davis.com</a>, and my quest to abolish the www continues.</p>',NULL,1719,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','6305ead5-6893-4bb5-b21f-e00a860de009',1,NULL,NULL,NULL,NULL),(1290,1775,'An Event Apart Boston',NULL,'<p>So my company is paying for two other webmasters and myself to go to <a href=\"http://www.aneventapart.com/events/boston07/\">An Event Apart Boston</a>. It is not too often that you can get this many amazing names in the field of web development together in one place.</p>\n\n<p>I think I am really looking forward to the more design-centered events like:</p>\n\n<ul><li>Redesigning Your Way Out of a Paper Bag by Jason Santa Maria</li>\n<li>Good vs. Great Design by Cameron Moll</li>\n<li>Selling Design by Jeffrey Zeldman</li>\n</ul><p>While I can\'t wait to go to all of the events, these are the ones I really can\'t wait to go to. I feel like I have a amazing grasp of the technical side of web development (i.e. CSS, XTHML, etc), but I wish I could become better at the design side. That is what I hope to get better at in the next few months.</p>\n\n<p>I will post an update after the show and give a rundown of the speakers.</p>',NULL,1720,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','960bcef5-f4e2-4394-a54c-da55b5a3e999',1,NULL,NULL,NULL,NULL),(1291,1776,'An Event Apart Boston Summary',NULL,'<p>So I am finally getting around to writing up a summary of my time at <a href=\"http://aneventapart.com/events/boston07/\">An Event Apart Boston</a>. I can’t even express how much that I learned. It was amazing to see so many respectable names in the web design/development community all speak. Thank god for my company, <a href=\"http://matrixgroup.net\">Matrix Group International</a> for paying for myself and two co-workers to go to the event. So I thought I would give a quick run-down of all of the events.</p>\n\n<h2>Eric Meyer — Secrets of a CSS Jedi</h2>\n\n<p><a href=\"http://meyerweb.com\">Eric Meyer</a> started off the event with an wonderful talk showing the amazing things that are possible with CSS. The first thing that he mentioned was that in order to get consistency between browser, you should zero out the margins and paddings for every element (except form elements). People have been doing this by using the universal selector (*), but by removing the margins and padddings for every element, you can sometimes get weird results with form elements. I mean conceptually, what should happen when you add more padding to a radio button? Should the space between the circle and outline increase? The other thing is that the universal selector takes more time to process than just having a large group selector.</p>\n\n<p>His next point was that we need to realize that CSS doesn’t care what element is doing what, an element is an element. Which is when he turned a regular HTML table into a bar graph, both vertical and horizontal. Basically, he had a few classes, and he was positioning the cells absolutely. I am still not sure if it would have worked in <abbr title=\"Internet Explorer\">IE</abbr> 6, since it is so fussy at times. He said he would post his HTML files at some point, so I would be interested in testing in IE 6. It was just awesome to see the power of CSS, and what we have to look forward to in the future as browsers get more and more powerful.</p>\n\n<h2>Jeffrey Zeldman — Writing the User Interface</h2>\n\n<p><a href=\"http://zeldman.com/\">Jeffrey Zeldman</a> next spoke about writing content for the web. When we look at the highest traffic sites on Alexa, it is not a coincidence that content heavy sites are at the top. Content is what drives traffic. Fresh copy is what counts more than looks. People do not bookmark pages because of the images that are on it (except for photographic sites); they are bookmarking because of the content.</p>\n\n<p>Every instance of copy on a site is a brand opportunity, and copy is often the easiest and cheapest part of a site to fix. Guide copy should be clear, brief, audience appropriate, and brand appropriate. Web users are most often in find mode, and they scan. While monitors get better and better, reading on the screen is much more fatiguing than reading print.</p>\n\n<p>The keys to writing for the web is:</p>\n<ul><li>Use frequent subheads.</li>\n <li>Chunk text.</li>\n <li>Use 8th grade vocabulary, short declarative sentences</li>\n</ul><p>I tell you, Zeldman really speaks well. When he speaks, you just get enthralled in what he is saying. That is why I think working with him would be awesome. It is too bad that the <a href=\"http://zeldman.com/2007/03/22/happy-cog-philadelphia-is-hiring/\">Happy Cog Front End Developer</a> position requires you to be in Philly. I can’t even imagine working with all of those awesome people at <a href=\"http://happycog.com/\">Happy Cog</a>.</p>\n\n<h2>Jason Santa Maria — How to Redesign Your Way Out of a Paper Bag</h2>\n\n<p>Since I am not always the most creative person, I was really interested in hearing this speech. The first thing <a href=\"http://jasonsantamaria.com/\">Jason Santa Maria</a> talked about was looking around you for inspiration.</p>\n\n<ul><li>Keep a sketchbook.</li>\n <li>Keep morgue files (whenever you see something in print that is cool, put it into a file folder).</li>\n <li>Surround yourself in a creative environment.</li>\n</ul><p>But the best solution for seeking inspiration is to do research. When Happy Cog was redesigning the <a href=\"http://comhaltas.ie/\">Comhaltas</a> website, they went and heard these people play the music, and they hung out with them. This gave them some insight into the music and gave them inspiration to create the design.</p>\n\n<p>We also need to remember that design is iterative. First, you start with grey box comps, which is where you focus on the idea and not minute details. Once satisfied with those, you get into the specifics of each element. When designing, you need to consider things that will not look dated in a year.</p>\n\n<p>Another topic that I have recently read about in <a href=\"http://transcendingcss.com\">Transcending CSS</a> is about grid design. This is not a new technique; it is just something that people do not know how to do. But basically by setting up a grid and designing by it, you keep things in line and can create really clean and nicely defined lines. This way you can plan for the placement of things, even if you aren’t the one updating it. Jason said to embrace the whitespace, which I think is something that is definitely being done in this whole “Web 2.0” thing.</p>\n\n<p>The way to design is left to right, top to bottom, big to small; just like how we read. Make sure there is enough contrast on elements, and things do not have to be over-styled.</p>\n\n<p>On a side note, Jason had a little rant about how \" is not the same thing as “ (<code>&amp;ldquo;</code>) and \' is not the same thing as ’ (<code>&amp;rsquo;</code>). \" and \' are used for feet and inches, while “ and ‘ are used for quotation marks and apostrophes.</p>\n\n<p>Jason’s speech really inspired me, and I have since given up on my sister, who was going to design my site for me. I am just going to go for it.</p>\n\n<h2>Steve Krug — The Web Usability Diet</h2>\n\n<p>I had heard <a href=\"http://sensible.com/\">Steve Krug</a> give a similar speech at another conference, but his points are still so valid. He first begin by pointing out that even the best thought out products have usability flaws. You can put it all the research and time creating the product, but without testing it, it can easily fail.</p>\n\n<p>Web user testing is easy to do:</p>\n\n<ol><li>Round up a few volunteers.</li>\n <li>Have them follow a script where they will be asked to complete some tasks.</li>\n <li>Record it using software like <a href=\"http://www.techsmith.com/camtasia.asp\">Camtasia</a>.</li>\n <li>Then review with your team and see how much you screwed up.</li>\n <li>Oh yeah, and pay your volunteers.</li>\n</ol><p>He made the point that you need to focus on the most serious ones, until they are right. It really does not take too much time and effort to realize that you have the problems; the harder part is fixing them all. The example that he used was to order a subscription of The New Yorker magazine on <a href=\"http://www.magazines.com/\">Magazines.com</a> without using the search function. We found that it was not very easy. Time yourself. Only a handful of people did it in the alloted amount of time (approximately 3 minutes). He has used this example time and time again, and Magazines.com still has not corrected the problem.</p>\n\n<p>While usability testing is relatively easy, sometimes it is hard to convince your clients of the value of it. But honestly, if money is involved, there needs to be testing.</p>\n\n<h2>Andrew Kirkpatrick - Beyon Basic Access</h2>\n\n<p>I must say, <a href=\"http://blogs.adobe.com/accessibility/\">Andrew Kirkpatrick</a> did not have the most enthralling speech, but it was an extremely hard topic to make interesting. He spoke about how accessibility is more than just alt attributes, <code>&lt;label&gt;</code>s, <code>&lt;th&gt;</code>s, or retaining information when JavaScript is disabled. There are many different kinds of disabilities that users of the web have, and we need to embrace all of them, not just a few.</p>\n\n<p>The whole gist of his speech was that we need to provide the name, role, and state of objects that users are interacting with. For instance, if you have a set of tabs, these need to be named so that they make sense. Their role needs to be defined, i.e. Tabs, and the current state of each tab needs to be readily accessible. Providing keyboard access to arrow over between tabs is a huge step forward. <a href=\"http://yahoo.com\">Yahoo!</a> and <a href=\"http://dojotoolkit.org/\">Dojo</a> are making great strides in this domain, and their scripts are readily available.</p>\n\n<h2>Dan Cederholm — Interface Design Juggling</h2>\n\n<p><a href=\"http://simplebits.com\">Dan Cederholm</a> may have given the best talk of the entire two days. He was witty, and his insight was great. Not to mention he is currently one of my favorite designers.</p>\n\n<p>He first spoke about choosing color. By starting with a small color palette and reusing variations of that set throughout the design, you get a much more cohesive design. A few ways to choose these palettes are:</p>\n\n<ul><li>Grab a nature photo you like, and use the color picker.</li>\n <li>Apply the Mosaic filter in photoshop to any image, and see the color combinations that are possible.</li>\n</ul><p>Even such a simple thing as link color can carry great weight, since links are the most important item of the web, choosing a color that will stand out is important.</p>\n\n<p>In Dan’s definition, great typography is invisible. Since there are not many universal fonts, we just need to learn how to work with what we got. One thing that Dan does beautifully on his <a href=\"http://simplebits.com\">site</a>, is by styling his &amp;’s beautifully. It is such a small thing, but just by adding one class, it really adds that extra beauty to the page.</p>\n\n<p>Another interesting point that Dan brought up was the importance of Favicons. These can be used when people link to your site, they are used for bookmarks, and we are seeing them more and more on mobile devices. So essentially it is the first brand opportunity for your site.</p>\n\n<p>Dan also talked about adding small simple details without adding complexity. By adding a simple 3px drop shadow on the bottom of a box, it adds a lot of detail to the box without any extra markup.</p>\n\n<p>Finally, Dan talked about <a href=\"http://microformats.org\">Microformats</a>. I must say I was a little unclear about the benefits at first, but after hearing his speech, I totally understand them. I thought it was all very confusing, but essentially all that you are doing is adding a few universally accepted classes to elements. As Dan said, we are really desiging for the future. Allowing people to do all sort of cool things with these universal classes.</p>\n\n<p>Oh, and of course Dan talked about being bulletproof:</p>\n\n<ul><li>Check out what your site looks like with images disabled.</li>\n <li>Check it out with CSS disabled.</li>\n <li>Finally, bump up the text two sizes.</li>\n</ul><h2>Opening Night Party — Restaurant 33</h2>\n\n<p>Definitely the coolest bar I have ever been to. <a href=\"http://33restaurant.com/\">Restaurant 33</a> had these cool lighting effects all over the place, and it was really entrancing. Not to mention the free food, free drinks, and people were cool too.</p>\n\n<h2>Cameron Moll — Good vs. Great Design</h2>\n\n<p><a href=\"http://cameronmoll.com/\">Cameron Moll</a> is another wonderful designer, and his talk seemed more conceptual than technical, but it was still very interesting. He first started taking about how there are some things that are just mapped naturally and that can help up determine how something works. Design is essentially communication, but great design yields meaningful communication. Sure there may be some really creative people out there, but if they don’t know how to design for specific audiences, then there talent is wasted. Cameron talked about how seeing things in greyscale can help to see the importance of specific elements in design.</p>\n\n<p>He then went on to talk about how influence is almost cheap, it can be found anywhere and copied anywhere. While it can also be found anywhere, inspiration is a much deeper thing.</p>\n\n<p>Finally, Cameron discussed the difference between redesigning (just updating the look of the site) and realigning (adapting to your users’ changed needs). He finished with the concept of fixing vs. preventing. By putting in more time up front to prevent things, you will be saving time in the long run from fixing.</p>\n\n<h2>Ethan Marcotte — Web Standards Stole My Truck</h2>\n\n<p><a href=\"http://sidesh0w.com/\">Ethn Marcotte’s</a> talk was a little boring to me, because he didn’t really discuss many new things to me. He did make a few interesting points though.</p>\n\n<ul><li>While embracing standards may seen hard (to non-standardistas), the benefits are huge\n  <ul><li>Lighter page weight</li>\n   <li>Better accessibility</li>\n   <li>Better <abbr title=\"Search Engine Optimization\">SEO</abbr></li>\n   <li>One single document that can control the style of an entire site</li>\n  </ul></li>\n <li>You can use the developer tools (like <a href=\"http://getfirebug.com\">Firebug</a>, <a href=\"https://addons.mozilla.org/en-US/firefox/addon/60\">Web Developer Toolbar</a>) out there, you can decrease debugging time.</li>\n <li>Use borders and backgrounds to debug layout problems.</li>\n <li>Validate your code.</li>\n <li>When all else fails, just delete properties and start from scratch.</li>\n</ul><p>The most profound statement he made was that building a site with standards is easy, but keeping it standards compliant is hard.</p>\n\n<h2>Molly Holzschlag — Building Better Browsers</h2>\n\n<p>As many people heard, <a href=\"http://molly.com/\">Molly Holzschlag</a> is going to do some work for Microsoft to whip their browser into shape. While at first I did not think Molly’s speech was going to be very interesting, it turned out to be pretty good.</p>\n\n<p>She first pointed out that browsers are software too, they ALL have bugs. Also, the browser history is not that long, they are relatively young in software age. Since there are so many different interpretations to things, it is easy to have many different approaches to implementation. Don’t worry, I still hate IE. But after hearing her talk, and thinking back to my programming days in college, I have more respect for IE.</p>\n\n<p>Molly’s browser pathways to success were:</p>\n\n<ol><li>Create common baselines.</li>\n <li>Clarify ambiguous specifications.</li>\n <li>Use transparent development cycles.</li>\n <li>Keep an open dialog with the community.</li>\n <li>Foster events and networking (Microsoft was a sponsor of An Event Apart).</li>\n <li>Compete of <abbr title=\"User Experience\">UE</abbr> and features.</li>\n</ol><h2>Eric Meyer — State of CSS in IE 7 World</h2>\n\n<p>Ok everyone, let’s admit it. IE 7 is a huge step forward. It can basically be considered on the same standards-compliant level as Firefox, Safari, and Opera. The browser advanced so much in a standards sense. I am not going to bore you with all of the things that are now possible in IE 7 that weren’t in IE 6, but I will point out one cool thing.</p>\n\n<h3>Attribute Selectors</h3>\n\n<p><a href=\"//trevor-davis.com/blog/tutorial/css-attribute-selectors-explained.php\">Attribute selectors</a> are awesome. That’s it. Maybe one of the coolest things in CSS. By adding something like <code>a[href$=\".pdf\"]</code> to your CSS file, you can add a pdf icon to all links to pdfs. By adding something like <code>a[href^=\"http://]</code>, you can target all external links an add an icon for that. That’s the long and short of it. It’s awesome.</p>\n\n<p>Eric also encouraged everyone to make IE 6 more like IE 7 with <a href=\"//trevor-davis.com/blog/tutorial/using-dean-edwards-ie7-script.php\">Dean Edwards’ IE7 scripts</a>. Via JavaScript, you can make IE 6 act must like IE 7. I have played around with it a little, and it is really cool. Use it. Spread the word.</p>\n\n<h2>Jeffrey Zeldman — Selling Design</h2>\n\n<p>Jeffrey wrapped it up with an interesting discussion on choosing clients. I have read a few articles recently about choosing clients, and this just reinforced the point. You do not need great clients; you need great relationships. You still need to choose your clients carefully and make sure not to choose indecisive clients, or the work will never get done successfully. The way to a good relationship is to involve the decision makers who are high up in the organization. This makes them feel special. Everyone wants and needs to feel special sometimes.</p>\n\n<p>Our job is to sell ideas, not pixels. Solve a problem with your design. Don’t just create a design. When responding to criticism, figure out what they mean by it. Why don’t they like that color? They also need to realize that the site is not about the stakeholders; it is about the users.</p>\n\n<p>When all else fails:</p>\n\n<ol><li>Push back.</li>\n <li>Look into it.</li>\n <li>Agree with them. Surprise!</li>\n</ol><h2>That’s It!</h2>\n<p>I must say; it was awesome. I can’t wait to find some time to actually do my site design. If ever you have the change, go to An Event Apart event. Everything was very well organized, and I learned a lot. Thanks to everyone at An Event Apart, Happy Cog, and the speakers.</p>',NULL,1721,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','9499a24f-66c9-4223-a7da-d15a14cf72e6',1,NULL,NULL,NULL,NULL),(1292,1777,'CSS Attribute Selectors Explained',NULL,'<p>So, I had played around with CSS attribute selectors a little bit before I went to <a href=\"http://aneventapart.com/events/boston07/\">An Event Apart Boston</a>, but I have a much better grasp of them now. I gave a brief overview in my <a href=\"//trevor-davis.com/blog/web/an-event-apart-boston-summary.php\">An Event Apart Boston Summary</a>.</p>\n\n<p>Currently, you really have to do some digging to figure out exactly how to use them, but I hope this article explains them all better.</p>\n\n<h2 class=\"replaceHeadline\">General Information</h2>\n\n<p>Basically, attribute selectors allow you to target elements based on their attributes (i.e. alt, href, title, etc.). In the table below, you can see all the different options for attribute selectors.</p>\n\n<dl><dt>[attr]</dt>\n <dd>Whenever the attribute is set. Ex: input[type]</dd>\n\n <dt>[attr=\"val\"]</dt>\n <dd>Whenever the attribute equals the specific value. Ex: input[type=\"radio\"]</dd>\n\n <dt>[attr~=\"val\"]</dt>\n <dd>Whenever the attribute equals one of the space separated list of values. Ex: input[type~=\"radio checkbox\"]</dd>\n\n <dt>[attr|=\"val\"]</dt>\n <dd>Whenever the attribute equals a hyphen-separated list of words, beginning with the value. (This one is supposed to be unreliable, and I am a little confused by the specifications, so I am not really sure of how to explain an example.)</dd>\n\n <dt>[attr*=\"val\"]</dt>\n <dd>Whenever the attribute contains the value. Ex: a[href*=\".com\"]</dd>\n\n <dt>[attr^=\"val\"]</dt>\n <dd>Whenever the attribute starts with the value. Ex: a[href^=\"http\"]</dd>\n\n <dt>[attr$=\"val\"]</dt>\n <dd>Whenever the attribute ends with the value. Ex: a[href$=\".pdf\"]</dd>\n</dl><p>Ok, so hopefully the general information makes them a little clearer, and I hope the following examples make them very easy to use.</p>\n\n\n<h2 class=\"replaceHeadline\">Examples</h2>\n<p>Below, I will give an example of each attribute selector and how it can be used.</p>\n\n<h3 class=\"replaceHeadline\">[attr]</h3>\n\n<p>Ok, so say maybe you want to style anchors that have the href attribute set to something. This may help differentiate JavaScript anchors.</p>\n\n<p>The CSS you want to add is like so:</p>\n\n<div class=\"codeblock\"><code>\na { text-decoration: underline; }<br /><br />a[href] {<br /> border-bottom: 1px dotted #999;<br /> text-decoration: none;<br />} \n\n</code></div>\n\n<p>That will remove the underline, and add a grey bottom border to anything that has the href attribute set.</p>\n\n<h3 class=\"replaceHeadline\">[attr=\"val\"]</h3>\n\n<p>Ok, so maybe you have added a green border to all input elements, but then you don’t want them on radio buttons. So you add the following CSS:</p>\n\n<div class=\"codeblock\"><code>\ninput { border: 1px solid green; }<br /><br />input[type=\"radio\"] { border: none; } \n\n</code></div>\n\n<p>That will add a green border to all input elements except for radio buttons.</p>\n\n<h3 class=\"replaceHeadline\">[attr~=\"val\"]</h3>\n\n<p>Use the same example that you want to add a green border to all input elements except for radio buttons, checkboxes, and submit buttons. The CSS you need is:</p>\n\n<div class=\"codeblock\"><code>\ninput { border: 1px solid green; }<br /><br />input[type~=\"radio checkbox submit\"] { border: none; } \n\n</code></div>\n\n<p>So you get a green border on all input elements except radio buttons, checkboxes, and submit buttons.</p>\n\n<h3 class=\"replaceHeadline\">[attr*=\"val\"]</h3>\n\n<p>Ok, so maybe you want to add a <a href=\"http://google.com\">Google</a> favicon to every link to Google. Add the following (pretending you have a Google favicon):</p>\n\n<div class=\"codeblock\"><code>\na[href*=\"google\"] {<br /> background: url(/images/googleIcon.gif) no-repeat 100% 50%;<br /> padding-right: 25px;<br />} \n\n</code></div>\n\n<p>So now any link to Google, http://google.com/analytics, http://google.com/sitemaps, etc. will have the Google favicon.</p>\n\n<h3 class=\"replaceHeadline\">[attr^=\"val\"]</h3>\n\n<p>Let’s add an external link to all links that start with http</p>\n\n<div class=\"codeblock\"><code>\na[href^=\"http\"] {<br /> background: url(/images/external.gif) no-repeat 100% 50%;<br /> padding-right: 25px;<br />} \n\n</code></div>\n\n<p>Now every link that starts with http will have an external link icon.</p>\n\n<h3 class=\"replaceHeadline\">[attr$=\"val\"]</h3>\n<p>Ok, now we should display an icon for any file types that we are linking to: pdf, doc, xls.</p>\n\n<div class=\"codeblock\"><code>\na[href$=\".pdf\"], a[href$=\".doc\"], a[href$=\".xls\"] {<br /> background-position: 100% 50%;<br /> background-repeat: no-repeat;<br /> padding-right: 19px;<br />}<br /><br />a[href$=\".pdf\"] { background-image: url(/images/pdf.gif); }<br />a[href$=\".doc\"] { background-image: url(/images/doc.gif); }<br />a[href$=\".xls\"] { background-image: url(/images/xls.gif); } \n\n</code></div>\n\n<p>This is one of the coolest things for me. No more adding extraneous markup in order to add an icon that shows the file type when linking to a file.</p>\n\n<h3 class=\"replaceHeadline\">That’s it!</h3>\n\n<p>I must say, that this works in all browsers, except IE 6 of course. But if you use the <a href=\"http://dean.edwards.name/ie7/\">Dean Edwards IE7 Script</a> and include the CSS 3 selectors, it will work. I will eventually give a rundown of how to use that script, because I find the documentation a little hard to read. So I hope everyone enjoys attribute selectors as much as I do.</p>',NULL,1722,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','065ff92e-67de-492c-8ff0-c07bc6f87319',1,NULL,NULL,NULL,NULL),(1293,1778,'I Took The Web Design Survey, 2007',NULL,'<p>I hope all you web people took the <a href=\"http://alistapart.com/articles/webdesignsurvey\">A List Apart 2007 Web Design Survey</a>. All it can do is get some wonderful statistics for us web nerds. Plus, you get this sweet button.</p>\n\n<p><a href=\"http://alistapart.com/articles/webdesignsurvey\"><img src=\"\" alt=\"I Took The 2007 Survey\" /></a></p>\n\n<p>So I urge everyone who has anything to do with the web to fill out the <a href=\"http://alistapart.com/articles/webdesignsurvey\">survey</a>.</p>\n\n<p>I did struggled with one question about what my specific job title is, because there has been some recent debate about what exactly it is.</p>\n\n<p>At my job, my position is called webmaster. Recently, we posted a new job, <a href=\"http://matrixgroup.net/careers/index.cfm?fa=show_job&amp;id=53\">CSS Jedi / Front-End Developer</a>. This is my job title basically. I helped to write the description for this job, and this is what we decided that the actual job entails.</p>\n\n<p>When we thought about webmaster, we thought about a single person who is in charge of making minute updates to a single website. But this is really not what I do. Sure, I make small updates to my team\'s client sites, but I also slice new designs as well. I am also prototyping stuff all the time and do implementations.</p>\n\n<p>So, front-end developer is suitable for me.</p>',NULL,1723,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','ef9012da-6371-4ce2-9561-0518907d7bd6',1,NULL,NULL,NULL,NULL),(1294,1779,'Improved JavaScript Striping',NULL,'<p>I am sure everyone has seen the <a href=\"http://24ways.org/2005/splintered-striper\">JavaScript Splintered Striper</a>, which was shown during the 2005 <a href=\"http://24ways.org\">24 Ways to Impress Your Friends</a>, or at least some variation of it. A <a href=\"http://www.google.com/search?source=ig&amp;hl=en&amp;q=javascript+%2B+striper&amp;btnG=Google+Search\">quick Google for javascript striper</a> came up with a ton of results.</p>\n\n<p>Well, I ran into a little problem with the splintered striper, and I have a solution to the problem.</p>\n\n<p>The problem occurred if you had multiple class names on the element you are trying to stripe. That may not make much sense, so I guess an example will suffice.</p>\n\n<h2>Striping Example with Problem</h2>\n\n<p>Say we start with the following markup:</p>\n\n<div class=\"codeblock\"><code>\n&lt;ul class=\"stripe something\"&gt;<br /> &lt;li&gt;This is an odd row.&lt;/li&gt;<br /> &lt;li&gt;This is an even row.&lt;/li&gt;<br /> &lt;li&gt;This is an odd row.&lt;/li&gt;<br /> &lt;li&gt;This is an even row.&lt;/li&gt;<br /> &lt;li&gt;This is an odd row.&lt;/li&gt;<br /> &lt;li&gt;This is an even row.&lt;/li&gt;<br />&lt;/ul&gt; \n\n</code></div>\n\n<p>We are going to pretend that the class name <code>something</code> actually does something useful. Then using a JavaScript <a href=\"http://simonwillison.net/2004/May/26/addLoadEvent/\">addLoadEvent function</a>, we will add the striping event to run on page load:</p>\n\n<div class=\"codeblock\"><code>\naddLoadEvent(function() {<br />  striper(\'ul\',\'stripe\',\'li\',\'odd,even\');<br />}); \n\n</code></div>\n\n<p>Essentially, we have told the striper function to stripe all list elements (<code>li</code>s) that are descendants of unordered lists (<code>ul</code>s) with the class name of stripe. Then we want to apply the classes odd and even to the alternating list items.</p>\n\n<p>Here is where the problem lies. Since there are two classes on the unordered list, the striper function does not recognize that it has a class name of stripe. Here is the problem in the code:</p>\n\n<div class=\"codeblock\"><code>\nif ((parentElementClass == null)||(currentParent.className == parentElementClass)) { \n\n</code></div>\n\n<p>Since we are just seeing if the class name of the current element is equal to the class name of stripe, this is not true.</p>\n\n<p>I have created a <a href=\"//assets.trevor-davis.com/play/striper/indexBad.html\">simple demo page</a> with an unordered list, table, and paragraphs that are supposed to be striped.</p>\n\n<h2>Fixing the Striper</h2>\n\n<p>Really all you have to do to the JavaScript is to remove the line from above and replace with the lines below:</p>\n\n<div class=\"codeblock\"><code>\nvar pattern = new RegExp(\"(^| )\" + parentElementClass + \"( |$)\");<br />if ((parentElementClass == null)||(currentParent.className.match(pattern))) { \n\n</code></div>\n\n<p>That takes the class name and splits is with a regular expression. So now you could have fifty class names on the element, and it will still work</p>\n\n<p>Here is a <a href=\"//assets.trevor-davis.com/play/striper/\">little demo of the improved splintered striper</a>.</p>\n\n<p>I’m sure there is another way to do that easier, so feel free to let me know if there is.</p>',NULL,1724,NULL,'2019-10-09 16:41:08','2019-10-09 16:41:08','c2fdb9a3-e957-4d80-b560-e7baf99fb7d2',1,NULL,NULL,NULL,NULL),(1295,1780,'Improved Navigation Image Replacement',NULL,'<p>So my co-worker at work today was slicing a design, and the designer said that the navigation had to be images. Being the good little accessibility people that we were, we were trying to figure out a way to use images, but have text also show up when images are disabled.</p>\n\n<p>So my co-worker went with the quick fix (for now), a JavaScript onmouseover solution, and I told him that it was lame. I told him there had to be a way to use CSS to do it. I didn\'t have time to do it at work, so I played with it, and I have found a solution.</p>\n\n<h2 class=\"replaceHeadline\">The Markup</h2>\n\n<p>Ok, so everyone knows to mark-up navigation in an unordered list:</p>\n\n<div class=\"codeblock\"><code>\n&lt;ul id=\"nav\"&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Text to Cover Here&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Text to Cover Here&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Text to Cover Here&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Text to Cover Here&lt;/a&gt;&lt;/li&gt;<br />&lt;/ul&gt; \n\n</code></div>\n\n<p>Now, instead of placing an image in the anchor tag and then using JavaScript to change the hover state, I thought, why not just add an extra <code>span</code> at the end of the anchor tag. I chose the end, but it also works with it at the beginning. I think it makes more sense to have it at the end though, so that the text within the anchor tag is read first by screen readers and bots. So this is what our markup looks like now:</p>\n\n<div class=\"codeblock\"><code>\n&lt;ul id=\"nav\"&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Text to Cover Here&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Text to Cover Here&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Text to Cover Here&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Text to Cover Here&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;<br />&lt;/ul&gt; \n\n</code></div>\n\n<h2 class=\"replaceHeadline\">Let’s Style It</h2>\n\n<p>So I started off with just some normal styles that you would apply to a navigation: zeroing out margins and paddings, floating it, removing the list-styling, and giving it a width.</p>\n\n<p>Next, I floated the list items so that they would be in a line horizontally. This is where it finally gets interesting, I promise. I styled the anchor tag like so:</p>\n\n<div class=\"codeblock\"><code>\nul#nav li a {<br /> background: #FFFF99;<br /> display: block;<br /> height: 30px;<br /> padding: 0 5px;<br /> width: 115px;<br />} \n\n</code></div>\n\n<p>Since this is just an example, I put a random background color on (to make sure it didn’t show through in the final example), and I gave them all the same width. Not a likely situation, but I didn’t feel like giving each list item an id. That should be self explanatory enough.</p>\n\n<p>Now, when I think back to the talk that <a href=\"http://meyerweb.com\">Eric Meyer</a> at <a href=\"http://aneventapart.com/events/boston07/\">An Event Apart Boston</a>, he kept stressing that to a browser, an element is just an element, and you can do anything to it. So, my plan was to just set the anchor tag to be relatively positioned so that it would contain the <code>span</code>.</p>\n\n<p>The next step is to add the background image to the <code>span</code>. Now one thing that needs to be realized is that you cannot use a transparent image. But I don’t think that really causes much of a problem in most cases.</p>\n\n<div class=\"codeblock\"><code>\nul#nav li a span {<br /> background: url(/images/content/2008/01/nav.gif) no-repeat 0 -30px;<br /> cursor: pointer;<br /> display: block;<br /> height: 30px;<br /> left: 0;<br /> position: absolute;<br /> top: 0;<br /> width: 125px;<br />} \n\n</code></div>\n\n<p>The only things to note from that is that I combined the normal and hover states into one awesome image (I wasn’t worried about how pretty it looked). I also had to add the cursor property for our best friend, IE6.</p>\n\n<p>Ok, cool. We are on our way. Now we just need to shift the background image on the hover state:</p>\n\n<div class=\"codeblock\"><code>\nul#nav li a:hover span { background: url(/images/content/2008/01/nav.gif) no-repeat 0 0; } \n\n</code></div>\n\n<p><strong>Voilà!</strong> It works like a charm. <a href=\"//assets.trevor-davis.com/play/imagereplacement/\">Check out the example</a>.</p>\n\n<h3 class=\"replaceHeadline\">But…</h3>\n\n<p>Did you check it in IE6? When I checked it in Firefox and IE7, everything worked beautifully. You can turn off the images and you get the text underneath.</p>\n\n<p>When you do check it in IE6, you will notice that the hover states stay on. It’s very odd.</p>\n\n<p>After a lot of tinkering, I finally found something that worked. If you add the following to the anchor when it is in its hovered state, it for some reason fixes it:</p>\n\n<div class=\"codeblock\"><code>\nul#nav li a:hover { background: 0 0; } \n\n</code></div>\n\n<p>I have no explanation, but it does not seem to have any adverse affects on other browsers.</p>\n\n<h3 class=\"replaceHeadline\">Let’s Bulletproof It</h3>\n<p>We can add a simple property to the anchor tag so that when someone resizes their text, it does not poke out from under the image:</p>\n\n<div class=\"codeblock\"><code>\nul#nav li a {<br /> background: #FFFF99;<br /> display: block;<br /> height: 30px;<br /> overflow: hidden; /*Added for bulletproofing*/<br /> padding: 0 5px;<br /> position: relative;<br /> width: 115px;<br />} \n\n</code></div>\n\n<p><a href=\"//assets.trevor-davis.com/play/imagereplacement/final/\">Check out the final example.</a></p>\n\n<h3 class=\"replaceHeadline\">More Bulletproofing</h3>\n\n<p>If you wanted the text to resize gracefully when images are disabled, I suppose you could set your height in ems. Then you would just need to build some extra blank space into your image, so that it would work when images are enabled.</p>\n\n<p>So hopefully that helps out my co-worker. I think it potentially solves a pretty big problem with CSS image navigation with images disabled.</p>',NULL,1725,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','6774c5bd-c428-49b2-838f-353d9b86bac6',1,NULL,NULL,NULL,NULL),(1296,1781,'Spider-Man 3',NULL,'<p>I was ordered by my fellow “Front-End Developer”, <a href=\"http://monadology.net\">Nate</a>, to write up a little blurb about what I thought about Spider-Man 3.</p>\n\n<p>So I caught the 10:45 showing, and the theater was packed. I am going to go ahead and predict that it is going to break the record for weekend gross.</p>\n\n<p>But yeah about the movie, I would definitely say I enjoyed it.</p>\n\n<p>While it is no movie that is going to win any award, it is the typical Spider-Man movie filled with action, love, and gratuitous humor.</p>\n\n<p>I will say that were was about a 15 minute span where it almost feels like you are watching another movie. It was just a bizarre sequence of events for the movie, and I think they could have accomplished it in a different way.</p>\n\n<p>If you liked the first 2, you will like this one. This movie is a roller coaster of emotions for Spiderman, and it was well worth the price of admission.</p>',NULL,1726,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','130df11e-d1cd-4b8d-9233-767eed4e7d47',1,NULL,NULL,NULL,NULL),(1297,1782,'Using Dean Edwards’ IE7 Script',NULL,'<div class=\"update\">\n<h2 class=\"replaceHeadline\">Update</h2>\n<p>Dean Edwards has updated his scripts. I have written a <a href=\"//trevor-davis.com/blog/tutorial/updated-dean-edwards-ie7-scripts/\">new entry describing the updated IE7 scripts</a>.</p>\n</div>\n\n<p>At An Event Apart Boston, <a href=\"http://meyerweb.com\">Eric Meyer</a> discussed how IE7 is quickly being adopted. Since this is the case, we can treat IE6 as more of a secondary browser now.</p>\n\n<p>We should all start to use the <a href=\"http://dean.edwards.name/ie7/\">Dean Edwards IE7 script</a> to bring IE6 up to par with standards compliant browsers.</p>\n\n<p>The history behind the Dean Edwards script is that he wrote it when Microsoft had said that they were not going to produce any more versions of Internet Explorer. He wanted to provide a JavaScript solution to add more compliance to the browser.</p>\n\n<h2 class=\"replaceHeadline\">Using the Script</h2>\n\n<p>First, <a href=\"http://dean.edwards.name/download/\">download the Dean Edwards script</a>. Next, extract the files to the root of your webserver in a folder called <strong>ie7</strong>. It needs to be in this folder, because some of the scripts have a dependency on the folder.</p>\n\n<p>Finally, just include the script in the head of your document using conditional comments:</p>\n\n<div class=\"codeblock\"><code>\n&lt;!--[if lt IE 7]&gt;<br />&lt;script src=\"/ie7/ie7-standard-p.js\" type=\"text/javascript\"&gt;&lt;/script&gt;<br />&lt;![endif]--&gt; \n\n</code></div>\n\n<p>On <a href=\"http://dean.edwards.name/IE7/usage/configure.html\">the configuration page</a>, Dean shows you which scripts do what. By including the <code>ie7-standard-p.js</code>, you get the support of the following scripts:</p>\n\n<ul><li>ie7-core.js</li>\n <li>ie7-html4.js</li>\n <li>ie7-layout.js</li>\n <li>ie7-css2-selectors.js</li>\n <li>ie7-graphics.js</li>\n <li>ie7-fixed.js</li>\n</ul><p>The only other script that I have included as well is the <code>ie7-css3-selectors.js</code> to include support for CSS3 selectors. Think of all those wonderful <a href=\"//trevor-davis.com/blog/tutorial/css-attribute-selectors-explained.php\">attribute selectors</a> you can start to use in your project. It makes me all warm and tingly inside to think about where CSS can go when the browsers are up to the task.</p>\n\n<h3 class=\"replaceHeadline\">Enjoy!</h3>\n\n<p>This really should be one of the first steps you take in a project. By doing this simple task, you will save yourself from a lot of IE6 headaches.</p>\n\n<p>Sure, this only works for IE6 users who have JavaScript enabled. But honestly, is there anyone who is using IE6 who actually turns off JavaScript? If they do turn off JavaScript, it may just break some presentation layer things, but the site should still be perfectly usable.</p>',NULL,1727,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','03fa58ae-218d-44de-9f81-70d0d1939248',1,NULL,NULL,NULL,NULL),(1298,1783,'How Do You Start Web Development?',NULL,'<p>While reading forums, blogs, and other web development related resources, I keep coming across people asking how to get started in CSS. They may have be table-converts or they may be new to the field, but the question keeps coming up.</p>\n\n<p>In my opinion, a lot of people are going about it the wrong way. Sure they may be able to get a nice design that works across browsers and platforms and their code may validate. But look under the hood of a lot of those sites. The code can sometimes be just as bad as using a table.</p>\n\n<h2>Where to Start</h2>\n\n<p>I think that the key to succeeding in the field, is to begin by learning semantic HTML. Sure, you may have been using HTML for years while doing table layouts, but you are also the same people who were using nested blockquotes to increase your margins.</p>\n\n<h3>What is Semantic HTML?</h3>\n\n<p>Well let’s first define semantics:</p>\n\n<blockquote><p>Of or relating to meaning, especially meaning in language.</p></blockquote>\n\n<p>Now if we apply that to HTML, it is the idea that every element has a meaning. Yes, there is a reason that when you want emphasize something you wrap it in an em tag. Instead of simply choosing elements because of how they are styled, you should be choosing elements because of their meaning.</p>\n\n<p>Once you have the semantics down, then you get to use CSS to hook into all those wonderfully semantic elements that you have used.</p>\n\n<h3>Just My Thoughts</h3>\n\n<p>That is not necessarily how I learned, but I think that will be the most beneficial way to learn in the long run.</p>\n\n<h4>Some Resources</h4>\n<p>These are some sites that I read regularly, mainly focusing on the basic stuff.</p>\n\n<ul><li><a href=\"http://456bereastreet.com/\">456 Berea Street</a></li>\n <li><a href=\"http://alistapart.com/\">A List Apart</a></li>\n <li><a href=\"http://cssbeauty.com/\">CSS Beauty</a></li>\n <li><a href=\"http://cssglobe.com/\">CSS Globe</a></li>\n <li><a href=\"http://digital-web.com/\">Digital Web Magazine</a></li>\n <li><a href=\"http://fadtastic.net/\">Fadtastic</a></li>\n <li><a href=\"http://thinkvitamin.com/\">Vitamin</a></li>\n</ul>',NULL,1728,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','6bd61595-1e46-4914-8d25-6b51b17d7e27',1,NULL,NULL,NULL,NULL),(1299,1784,'Sure, Let’s Destroy Accessibility',NULL,'<p>So, while I was doing my normal reading of RSS feeds, when I saw a link to <a href=\"http://www.solidstategroup.com/page/1592\">white paper from Solid State Group</a>. The person who linked to it, said how great number 4 is.</p>\n\n<p>Are we not going to think about accessibility anymore? What about people who cannot use their mouse to point and click? They use the keyboard. Meaning that they TAB between the links to figure out what they want to use. By Firefox adding that outline, it helps to show which link they are currently focused on.</p>\n\n<p>Sure, I think there are some instances where it’s OK to remove the outline, but not for EVERY link.</p>\n\n<p>This white paper really did not show much, and in my opinion I have already discussed much better methods for Transparent PNG’s in IE6 and Min-width using <a href=\"//trevor-davis.com/blog/tutorial/using-dean-edwards-ie7-script.php\">Dean Edwards’ IE7 Script</a> and a more accessible <a href=\"//trevor-davis.com/blog/tutorial/improved-navigation-image-replacement.php\">Image replacement technique</a>.</p>\n\n<p>I love all these tutorials on the web, but we need to warn people about the risks when doing such things.</p>\n\n<p>&lt;/rant&gt;</p>',NULL,1729,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','ba942b13-dafe-4da2-895e-cc708e39352d',1,NULL,NULL,NULL,NULL),(1300,1785,'My Web Wish List',NULL,'<p>My birthday is coming up on Thursday, so I thought I would make up a list of 5 things I wish to happen with the web in the next year. I know that most of these will not happen in that time frame, but I can at least wish right?</p>\n\n<h2>The List</h2>\n\n<p>In no particular order, this is what I want:</p>\n\n<ol><li>For everyone running IE6 to be upgraded by automatic updates</li>\n<li>For the term “Web 2.0” to never be heard again</li>\n<li>For all standards compliant browsers to support attaching multiple background images using CSS</li>\n<li>For the ability to render <strong>all</strong> fonts on the web</li>\n<li>For all standards compliant browsers to support the nth-child selector</li>\n</ol><h3>For everyone running IE6 to be upgraded by automatic updates</h3>\n\n<p>As all web developers have experienced, <strong>IE6 sucks</strong>. But there is good news; IE7 is a huge step forward. Sure it still has some of the same problems that IE6 had, but it is basically on par with other standards compliant browsers.</p>\n\n<p>Thankfully, Microsoft is pushing out IE7 in their automatic updates, and the number of people upgrading is rising quickly. Before we know it, IE6 will no longer be the most popular browser any more.</p>\n\n<h3> For the term “Web 2.0” to never be heard again</h3>\n\n<p>I’m sick of it. The term is used everywhere, even job descriptions. There was a good article on Fadtastic, <a href=\"http://fadtastic.net/2007/05/17/weekly-thought-why-good-designers-should-stop-saying-web-20/\"> Weekly Thought: Why Good Designers Should Stop Saying “Web 2.0”</a>.</p>\n\n<p>“Web 2.0” is meaningless, and it needs to be vanished from everyone’s vocabulary.</p>\n\n<h3>For all standards compliant browsers to support attaching multiple background images using CSS</h3>\n\n<p>Safari already does, why don’t other standards compliant browsers? Just take a moment and think about how wonderfully simple the markup would be for rounded corners. Ahh maybe some day.</p>\n\n<h3> For the ability to render all fonts on the web</h3>\n\n<p>Why can’t we upload fonts to our servers and have the browsers download them when needed? It can’t be the technology. It seems like a simple task. Can you image the possibilities if designers were not restricted to web-safe fonts? While, <a href=\"http://www.mikeindustries.com/sifr/\">sIFR</a> is awesome, there are so many limits to it. This needs to happen, <strong>now</strong>.</p>\n\n<h3>For all standards compliant browsers to support the nth-child selector</h3>\n\n<p>No more JavaScript striping. No more using odd and even classes.</p>\n\n<p>When browsers support <a href=\"http://www.w3.org/TR/css3-selectors/#structural-pseudos\">Structural Pseudo-Classes</a>, or more specifically, the n-th child selector, it’s going to be great. We can handle all of the alternating styles that we want using only CSS.</p>\n\n<h4>What else?</h4>\n\n<p>So what are you getting me? What else would you ask for?</p>',NULL,1730,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','a1a0557b-7cb5-44a1-b7d0-2838c8dfc6b5',1,NULL,NULL,NULL,NULL),(1301,1786,'Book Review — Designing Interactions',NULL,'<p>Designing Interactions is quite a book. If you are interested in technology, it’s definitely a must read. While it’s over 700 pages, there are tons of pictures so you can fly right through it.</p>\n\n<p>The book tracks back to the creation of the first mouse and the iterations of prototypes it went through. While creating physical technology is vastly different from creating websites, I feel as though you can learn a lot from the book.</p>\n\n<h2>Summary</h2>\n<p>The book has interviews with “42 designers who shaped our interactions with technology”. Think about the first computer. Think about the first laptop. Think about the first Palm Pilot and the OS running on it.</p>\n\n<p>Hearing the history behind the technology that we use everyday is fascinating. You really get a lot of detail into how these people worked and their thought process.</p>\n\n<p>I think the thing I found most interesting was learning that there is a similar process to prototype creation and usability testing between physical design and web development.</p>\n\n<p>I don’t think there is really any one type of person who should read this, everyone would find something interesting in it. So <a href=\"http://www.amazon.com/Designing-Interactions-Bill-Moggridge/dp/0262134748/ref=pd_bbs_sr_1/105-2130815-1796438?ie=UTF8&amp;s=books&amp;qid=1181530736&amp;sr=1-1\">get it already</a>.</p>',NULL,1731,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','f00ae5db-c7e9-45fa-9cf4-9d2b98eb60af',1,NULL,NULL,NULL,NULL),(1302,1787,'HTML Emails. Who needs them?',NULL,'<p>There has been a lot of talk going on recently about HTML emails, and I thought I would weigh in and give my two cents. Outlook, the most popular email platform, <a href=\"http://www.campaignmonitor.com/blog/archives/2007/01/microsoft_takes_email_design_b.html\">announced that they were switching their rendering engine</a>. The decided to switch to using the Word engine! Excuse me, but I think Word is word processing software and in no way should it be used to render HTML. I think we have all seen the output when you convert a Microsoft document to a web page. It’s scary.</p>\n\n<p>So in the wake of Microsoft taking a step backwards, the real question is: does it even matter?</p>\n\n<p>In my opinion, it shouldn’t.</p>\n\n<h2>What do the experts say?</h2>\n\n<p>As Zeldman states:</p>\n\n<blockquote>\n<p>E-mail was invented so people could quickly exchange text messages over fast or slow or really slow connections, using simple, non-processor-intensive applications on any computing platform, or using phones, or hand-held devices, or almost anything else that can display text and permits typing.</p>\n\n<p><a href=\"http://www.zeldman.com/2007/06/08/e-mail-is-not-a-platform-for-design/\"><cite>Jeffrey Zeldman - E-mail is not a platform for design</cite></a></p>\n</blockquote>\n\n<p>Emails seem similar to RSS feeds. We are getting the content without all the other crap. We need to ask ourselves, do we want to see RSS feeds completely designed? Nope, because then we might as well visit the site.</p>\n\n<p>Remember how we thought getting cross-browser consistency was hard, how about cross-client HTML emails. It’s a nightmare. Some support CSS. Some strip it all out. Some support inline CSS. It’s awful. My favorite quote from the article, when he is discussing CSS support:</p>\n\n<blockquote>\n<p>… but only if you author in nonsemantic table layouts and bandwidth-wasting inline CSS. Which is like using a broken refrigerator to store food at room temperature.</p>\n\n<p><a href=\"http://www.zeldman.com/2007/06/08/e-mail-is-not-a-platform-for-design/\"><cite>Jeffrey Zeldman - E-mail is not a platform for design</cite></a></p>\n</blockquote>\n\n<p>In Zeldman’s follow-up article <a href=\"http://www.zeldman.com/2007/06/12/eight-points-for-better-e-mail-relationships/\">Eight points for better e-mail relationships</a>, he steps back a little from his previous stance, and he notes a few points about HTML email.</p>\n\n<p>I think that after he cleared his head a little, this article is very on-point. HTML email should be something that people specifically sign up for. It should not be the selected option; they should have to choose it.</p>\n\n<p>Simple is better. Zeldman <a href=\"http://www.zeldman.com/2007/06/14/when-is-e-mail-like-a-bad-website/\">posted an email that his friend received from Nokia</a> a few days later. This is pure comedy.</p>\n\n<p>Roger Johansson also had <a href=\"http://www.456bereastreet.com/archive/200706/keep_html_and_css_out_of_my_inbox_please/\">an opinion on the subject</a>, and it’s very similar to mine.</p>\n\n<h3>So what do we do?</h3>\n<p>I think we need to discuss the problems with full HTML emails with the marketing people who are pushing them. Is this really what’s ideal? Is this going to receive the most positive feedback? I think not. I would be perfectly content receiving a simple mostly text email with limited branding (a logo). Not to mention how much easier this would be to create.</p>\n\n<p>Now that, I don’t have a problem with.</p>',NULL,1732,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','7fb8b891-0120-4776-9916-46f38a812c1f',1,NULL,NULL,NULL,NULL),(1303,1788,'Dynamic Bread Crumbs',NULL,'<p>For a redesign project at work, the new design called for bread crumbs. In my opinion, bread crumbs are a great thing to add to a site, and <a href=\"http://www.useit.com/alertbox/breadcrumbs.html\">others agree</a>. I didn’t want to have to specify anything on each page for the bread crumbs to work, so I wanted to do it all dynamically.</p>\n\n<p>For the project at work, I did it in ColdFusion; but on my own, I did it in PHP. I figured the way that I would have to do it would be to parse the URL to see which folders I was in.</p>\n\n<h2 class=\"replaceHeadline\">The Code</h2>\n\n<p>File: breadcrumbs.php</p>\n\n<div class=\"codeblock\"><code>\n&lt;?php require(\'buildbreadcrumbs.php\'); ?&gt;<br /><br />&lt;ol id=\"breadCrumbs\"&gt;<br /> &lt;li class=\"first\"&gt;&lt;a href=\"/\"&gt;Home&lt;/a&gt;&lt;/li&gt;<br />&lt;?php<br /> $breadCrumbs = $_SERVER[\'REQUEST_URI\'];<br /> if($breadCrumbs != \'\') {<br />  $crumbUrl = \'/\';<br />  $toks = split(\'/\', $breadCrumbs);<br />  for($i = 1; $i &lt; count($toks) - 1; $i++) {<br />   $crumbUrl .= $toks[$i] . \'/\';<br />   if($breadCrumbMapping[$toks[$i]] != NULL) {<br />    echo \'&lt;li&gt;&lt;a href=\"\'.$crumbUrl.\'\"&gt;\'.$breadCrumbMapping[$toks[$i]].\'&lt;/a&gt;&lt;/li&gt;\';<br />   } else {<br />    echo \'&lt;li&gt;&lt;a href=\"\'.$crumbUrl.\'\"&gt;\'.$toks[$i].\'&lt;/a&gt;&lt;/li&gt;\';<br />   }<br />  }<br />  echo \'&lt;li class=\"last\"&gt;\'.$pageTitle.\'&lt;/li&gt;\';<br /> }<br />?&gt;<br />&lt;/ol&gt; \n\n</code></div>\n\n<h3 class=\"replaceHeadline\">The Explanation</h3>\n\n<p>The first thing that I do, is include the file buildbreadcrumbs.php (I’ll get to that later). Then the idea is that we will determine what folders we are in, based on the URL. We split the URL based on the slashes and step through them to make links.</p>\n\n<p>Now, back to the File: buildbreadcrumbs.php</p>\n\n<div class=\"codeblock\"><code>\n&lt;?php<br />$breadCrumbMapping = Array();<br /><br />/*Folders to be mapped*/<br />$breadCrumbMapping[\'f1\'] = \"Folder 1\";<br />$breadCrumbMapping[\'f2\'] = \"Folder 2\";<br />$breadCrumbMapping[\'f3\'] = \"Folder 3\";<br />?&gt; \n\n</code></div>\n\n<p>This file is building as associative array to display different text than the folder name. There are some situations where the folders are not too pretty, so basically you just add the folder name (f1, f2, f3) to the associative array and assign it a “pretty” name (Folder 1, Folder 2, Folder 3). If you don’t assign a pretty name to a folder, it will just display the folder name instead.</p>\n\n<p>I made <a href=\"//assets.trevor-davis.com/play/breadCrumbs/f1/f2/f3/\">an example page</a> to see the bread crumbs in action.</p>\n\n<p>You can download the scripts here:</p>\n\n<ul><li><a href=\"//assets.trevor-davis.com/uploads/images/content/2008/01/breadcrumbs.phps\">breadcrumbs.php</a></li>\n<li><a href=\"//assets.trevor-davis.com/uploads/images/content/2008/01/buildbreadcrumbs.phps\">buildbreadcrumbs.php</a></li>\n</ul>',NULL,1733,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','89ab5d12-883b-48a4-b5a0-3b9125bacc61',1,NULL,NULL,NULL,NULL),(1304,1789,'Switched to Wordpress',NULL,'<p>I have been using Movable Type for a little while now, but I just wasn’t that happy with it. I didn’t really have any problems, but it just wasn’t for me. So I installed Wordpress in a separate folder to try it out.</p>\n\n<p>I loved it. I decide to make the switch. Even though some things are broken right now, I should be able to fix them this weekend.</p>\n\n<p>I think the main thing that got me to switch was the fact that Wordpress is written in PHP, which I can code; and Movable Type is written in Perl, which I have no clue how to code in. Just having the ability to go in and change code was reason enough for me to switch.</p>\n\n<p>So don’t worry about the broken stuff, it will be fixed soon enough.</p>',NULL,1734,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','0f668dcc-2f39-4a1b-8386-c11465fadadd',1,NULL,NULL,NULL,NULL),(1305,1790,'Centering Absolutely Positioned Items',NULL,'<p>At work the other day, I was working on the homepage of a small save the date site. We had so many beautiful images to use, so our designer decided to limit the text that is on the homepage. So the container is absolutely positioned with a height of 100% in order to fill the viewport.</p>\n\n<p>The client wrote back right before we were ready to launch and said that they noticed a large white margin on the right hand side. We had to explain to them that since the design was left aligned and the picture can’t go on forever, there has to be an end to the design. We decided to center the design in order to make it look better.</p>\n\n<p>So I went in and added <code>margin: 0 auto</code> like I normally would to center anything, but then I realized since it is absolutely positioned, it would’t work like that.</p>\n\n\n\n<h2>How to Center the Absolute Positioned Item</h2>\n\n<p>After doing some thinking, I thought about positioning the item from the left edge a certain percent. So I thought if I moved it over 50% and then shifted it back to the right, then it should work.</p>\n\n<h3>Example</h3>\n\n<p>Here is the CSS that I started with:</p>\n\n<div class=\"codeblock\"><code>\ndiv#centered {<br /> height: 300px;<br /> left: 50%;<br /> position: absolute;<br /> top: 20px;<br /> width: 500px;<br />} \n\n</code></div>\n\n<p>Ok, so now we’ve got it shifted over 50% from the left hand side, and in order to get it back to the center, you need to take half of the width of the item, in this case <strong>250px</strong>.</p>\n\n<p>So if we set a negative left margin of <strong>-250px</strong>, we end up with the following CSS:</p>\n\n<div class=\"codeblock\"><code>\ndiv#centered {<br /> height: 300px;<br /> left: 50%;<br /> margin-left: -250px;<br /> position: absolute;<br /> top: 20px;<br /> width: 500px;<br />} \n\n</code></div>\n\n\n<p>You can see that <a href=\"//assets.trevor-davis.com/play/absolutePositionCenter/\">the absolutely positioned item is now centered</a>.</p>\n\n<h2>In Case You Didn’t Notice…</h2>\n\n<p>I alphabetize my CSS properties. It makes everything so much easier to maintain. Once you actually start to think about it, it pretty much comes naturally too. Give it a shot.</p>',NULL,1735,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','6fef4b7d-85bd-416c-b660-a01997fc5b12',1,NULL,NULL,NULL,NULL),(1306,1791,'Creating a Dynamic Google Sitemap',NULL,'<p>My site has a <a href=\"//trevor-davis.com/blog/news/switched-to-wordpress.php\">Wordpress blog on it</a>, but it does not power the whole site, just the blog. If my entire site were powered by Wordpress, then I could generate a <a href=\"http://www.google.com/webmasters/sitemaps/\">sitemap for Google</a> using Wordpress functions.</p>\n\n<p>I did not want to have Wordpress control everything; I wanted to have more control. By doing some quick queries, you can generate a sitemap for Google that has all of your blog entries in it.</p>\n\n\n\n<h2>Setting it Up</h2>\n\n<p>First, you will need to send the correct headers, create the opening xml tag, and connect to your database.</p>\n\n<div class=\"codeblock\"><code>\n&lt;?php<br />header(\"Content-Type: text/xml;charset=iso-8859-1\");<br />echo \'&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;<br />&lt;urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"&gt;\';<br />require_once(\'DB CONNECTION GOES HERE\'); //This is where I would require my DB connection file \n\n</code></div>\n\n<p>If you are not sure how to connect to your database, you will need to contact your host to get that information, and then do a <a href=\"http://www.google.com/search?source=ig&amp;hl=en&amp;q=php+mysql+connection&amp;btnG=Google+Search\">search for php MySQL connection</a>. If you can’t figure it out still, <a href=\"/contact/\">let me know, and I can help</a>.</p>\n\n<h2>Get the Categories</h2>\n\n<p>Next, we want to query the database to get the categories used in Wordpress:</p>\n\n<div class=\"codeblock\"><code>\n$query = \"SELECT cat_ID, category_nicename<br />  FROM wp_categories<br />  ORDER BY category_nicename\";<br />$result = @mysql_query($query); \n\n</code></div>\n\n<p>Then, we need to loop through the categories and display a url entry for each category:</p>\n\n<div class=\"codeblock\"><code>\nwhile($row = mysql_fetch_array($result, MYSQL_ASSOC)) {<br /> echo \'&lt;url&gt;<br />  &lt;loc&gt;//trevor-davis.com/blog/\' . $row[\'category_nicename\'] . \'/&lt;/loc&gt;<br />  &lt;changefreq&gt;weekly&lt;/changefreq&gt;<br />      &lt;/url&gt;\'; \n\n</code></div>\n\n<h2>Get the Entries</h2>\n\n<p>Next, we need to create a query to return all of the entries for each category:</p>\n\n<div class=\"codeblock\"><code>\n$artQuery = \"SELECT p.post_name, DATE_FORMAT(p.post_date, \'%Y-%m-%d\') AS createdOn<br />  FROM wp_posts AS p, wp_categories AS cat, wp_post2cat AS pc<br />  WHERE p.ID = pc.post_id AND pc.category_id = \" . $row[\'cat_ID\'] . \"<br />  GROUP BY p.ID<br />  ORDER BY p.ID DESC\";<br />$artResult = @mysql_query($artQuery); \n\n</code></div>\n\n<p>Finally, we want to create a url entry for each blog entry:</p>\n\n<div class=\"codeblock\"><code>\nwhile($artRow = mysql_fetch_array($artResult, MYSQL_ASSOC)) {<br /> echo \'&lt;url&gt;<br />  &lt;loc&gt;//trevor-davis.com/blog/\' . $row[\'category_nicename\'] . \'/\'. $artRow[\'post_name\'] . \'.php&lt;/loc&gt;<br />  &lt;lastmod&gt;\'.$artRow[\'createdOn\'].\'&lt;/lastmod&gt;<br />  &lt;changefreq&gt;weekly&lt;/changefreq&gt;<br />      &lt;/url&gt;\';<br />} \n\n</code></div>\n\n<p>To finish it off, we just close everything up:</p>\n\n<div class=\"codeblock\"><code>\n}<br />echo\'&lt;/urlset&gt;\';?&gt; \n\n</code></div>\n\n<h3>The Whole Script</h3>\n\n<p>Here is the finished script:</p>\n\n<div class=\"codeblock\"><code>\n&lt;?php<br />header(\"Content-Type: text/xml;charset=iso-8859-1\");<br />echo \'&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;<br />&lt;urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"&gt;\';<br />require_once(\'DB CONNECTION GOES HERE\'); //This is where I would require my DB connection file<br /><br />$query = \"SELECT cat_ID, category_nicename<br />  FROM wp_categories<br />  ORDER BY category_nicename\";<br />$result = @mysql_query($query);<br /><br /><br />while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {<br /><br /> echo \'&lt;url&gt;<br />  &lt;loc&gt;//trevor-davis.com/blog/\' . $row[\'category_nicename\'] . \'/&lt;/loc&gt;<br />  &lt;changefreq&gt;weekly&lt;/changefreq&gt;<br />      &lt;/url&gt;\';<br /><br /> $artQuery = \"SELECT p.post_name, DATE_FORMAT(p.post_date, \'%Y-%m-%d\') AS createdOn<br />   FROM wp_posts AS p, wp_categories AS cat, wp_post2cat AS pc<br />   WHERE p.ID = pc.post_id AND pc.category_id = \" . $row[\'cat_ID\'] . \"<br />   GROUP BY p.ID<br />   ORDER BY p.ID DESC\";<br /><br /> $artResult = @mysql_query($artQuery);<br /><br /> while($artRow = mysql_fetch_array($artResult, MYSQL_ASSOC)) {<br /><br />  echo \'&lt;url&gt;<br />   &lt;loc&gt;//trevor-davis.com/blog/\' . $row[\'category_nicename\'] . \'/\'. $artRow[\'post_name\'] . \'.php&lt;/loc&gt;<br />   &lt;lastmod&gt;\'.$artRow[\'createdOn\'].\'&lt;/lastmod&gt;<br />   &lt;changefreq&gt;weekly&lt;/changefreq&gt;<br />        &lt;/url&gt;\';<br /> }<br />}<br />echo\'&lt;/urlset&gt;\';<br />?&gt; \n\n</code></div>\n\n<h3>Modifying the .htaccess file</h3>\n\n<p>We also want to rewrite the url for this file so that it is available at <a href=\"//trevor-davis.com/sitemap.xml\">//trevor-davis.com/sitemap.xml</a>. Open up your .htaccess file, or create one if you don’t have one. Then add the following:</p>\n\n<div class=\"codeblock\"><code>\nRewriteEngine on<br />RewriteRule sitemap.xml googleSitemap.php \n\n</code></div>\n\n<p>Upload this file along with the googleSitemap.php script to your site root, and you are set. You can also add the rest of your site’s file structure to the sitemap as well. You can see how I did this in <a href=\"//trevor-davis.com/sitemap.xml\">my google sitemap</a>.</p>\n\n<h3>Sitemaps Protocal</h3>\n\n<p>You can <a href=\"http://sitemaps.org/protocol.php\">read more about the sitemaps protocal</a> to see what other attributes you can apply to each url entry.</p>\n\n<h3>By the Way…</h3>\n<p>Let me know if you can think of any way to improve this.</p>',NULL,1736,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','f5b727e4-89ac-4538-9aba-66d8d4f25932',1,NULL,NULL,NULL,NULL),(1307,1792,'Calculating Font Sizes',NULL,'<p>There are a lot of articles out there about typography on the web. I wanted to explain my method of controlling font sizes and margins in CSS.</p>\n\n<p>I love <a href=\"http://www.danielmall.com/archives/2007/04/20/soft_serve.php\">Dan Mall’s Soft Serve Technique</a>, but then you have to make a special case for IE6. (Hopefully it won’t be too much longer that we have to worry about IE6).</p>\n\n\n\n<h2 class=\"replaceHeadline\">Getting a Usable Base Font Size</h2>\n\n<p>Ok, so to start, I like setting the font size of the body to <em>62.5%</em>. I used to take Dan Cederholm’s approach of setting the font size to <em>small</em>, but I finally realized that it did not give me a nice base font size to play with.</p>\n\n<p>So by setting the font size of the body to <em>62.5%</em>, we get a base font size of 10px. This gives us a nice round number to work with. Thus, 1em now equals 10px. 10px is way too small to be the font size of the content though. Thus, I just set the font size of the outter-most container to <em>1.2em</em>. Since we had a base size of 10px, our font size in the container becomes 12px.</p>\n\n<h2 class=\"replaceHeadline\">Heading Font Sizes</h2>\n\n<p>The next thing I like to do is to set the font sizes of all of the headings, h1-h6. A good set of values for headings is:</p>\n\n<ul><li>h1: 22px</li>\n <li>h2: 20px</li>\n <li>h3: 18px</li>\n <li>h4: 16px</li>\n <li>h5: 14px</li>\n <li>h6: 12px</li>\n</ul><p>Again, these are just values that I am suggesting, you could definitely choose whatever you want.</p>\n\n<p>To get these font sizes, we just need to do some simple math.</p>\n\n<h3 class=\"replaceHeadline\">Example</h3>\n\n<p>Let’s use an h3 as an example. We take the size that we want the heading to be, 18px, and divide it by the container font size, 12px. So, 18/12 = 1.5. Then, we set the font size to either 1.5em or 150%. I personally like working with ems, although I used to prefer percentages.</p>\n\n<p>So again, font size we want to achieve / font size of the container. Use this to compute the rest of your heading font sizes, and then you will have nice pixel values to work with.</p>\n\n<h2 class=\"replaceHeadline\">Attacking the Margins</h2>\n\n<p>So obviously you want to avoid letting the browser control how your elements will be spaced, so let’s work on setting the margins on these elements too.</p>\n\n<h3 class=\"replaceHeadline\">Remove the Default Margins</h3>\n\n<p>The first thing I do in a stylesheet is zero out the margins and paddings:</p>\n\n<div class=\"codeblock\"><code>\nhtml, body, div, h1, h2, h3, h4, h5, h6, ul, ol, dl, li, dt, dd, p, blockquote, pre, form, th, td {<br /> margin: 0;<br /> padding: 0;<br />} \n\n</code></div>\n\n<p>Next, I set a bottom margin of 1em on p, ul, ol, dl, blockquote:</p>\n\n<div class=\"codeblock\"><code>\np, ul, ol, dl, blockquote { margin-bottom: 1em; } \n\n</code></div>\n\n<p>Then, to get an equal amount of margin on the bottom of the headings, we just need to do more simple math. We can’t just set the bottom margin to 1em because our font size on these elements are bigger than the rest of the content.</p>\n\n<h4 class=\"replaceHeadline\">Example</h4>\n\n<p>So let’s use the h3 as an example again. This time, we take the font size of the container, 12px, and diving it by the size of the heading, 18px. 12/18 = 0.667. So then, our h3 would look like this:</p>\n\n<div class=\"codeblock\"><code>\nh3 {<br /> font-size: 1.5em;<br /> margin-bottom: 0.667em;<br />} \n\n</code></div>\n\n<p>So again, font size of the container / font size of the element. If you do this for all elements, you will have an equal margin between all elements. I made a <a href=\"//assets.trevor-davis.com/play/fontSize/\">page showing elements with equal margins</a>.</p>\n\n<p>I used to think this was best, but I have since realized that I like having the headings closer to the text that is following. So I divide the bottom margin on the headings by 4. Thus, we get a quarter of the margin above the heading, below it.</p>\n\n<p>In my opinion, <a href=\"//assets.trevor-davis.com/play/fontsize/example-2/\">the example page with custom margins</a> looks much better.</p>\n\n<p>Anyone else have other methods?</p>',NULL,1737,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','ce14f982-a329-4a77-b6eb-b17ecda437f2',1,NULL,NULL,NULL,NULL),(1308,1793,'Stop Using Helvetica',NULL,'<p>Ok, so that’s a little extreme. I’m going to preface this post a little bit. I love Helvetica as a font. It’s a gorgeous font, and it has <a href=\"http://www.helveticafilm.com/\">stood the test of time</a>. So now that everyone understands my opinion on the font, I’ll go back to my original post…</p>\n\n\n\n<p>Why do designers decide to use Helvetica for their site’s body copy? It looks <strong>AWFUL</strong> at small sizes.</p>\n\n<p>The sizes that I think have the most problems are 12px and lower. Unfortunately, I have seen sites that use body copy as small as 10px. It’s pretty sad that when I get to a site that uses a small size of Helvetica as the body copy, I change the body <code>font-family</code> to Verdana using <a href=\"http://getfirebug.com/\">Firebug</a>.</p>\n\n<p>I made an <a href=\"//assets.trevor-davis.com/play/helvetica/\">example page to show the various Helvetica sizes from 10px – 20px</a>.</p>\n\n<h2 class=\"replaceHeadline\">Helvetica on Windows</h2>\n<a href=\"//assets.trevor-davis.com/uploads/images/content/2008/01/screenshot-windows.gif\" title=\"Helvetica on Windows Screenshot\"><img src=\"//assets.trevor-davis.com/uploads/images/content/2008/01/screenshot-windows_thumb.gif\" alt=\"Windows Screenshot\" class=\"thumbnail\" height=\"125\" width=\"468\" /></a>\n\n<h2 class=\"replaceHeadline\">Helvetica on the Mac</h2>\n\n<a href=\"//assets.trevor-davis.com/uploads/images/content/2008/01/screenshot-mac.gif\" title=\"Helvetica on Mac Screenshot\"><img src=\"//assets.trevor-davis.com/uploads/images/content/2008/01/screenshot-mac_thumb.gif\" alt=\"Windows Screenshot\" class=\"thumbnail\" height=\"112\" width=\"468\" /></a>\n\n<h3 class=\"replaceHeadline\">In Conclusion</h3>\n<p>So I guess this is more of a call to action than a post. So web designers, <strong>Stop Using Helvetica</strong> at such small sizes!</p>',NULL,1738,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','e694c313-769b-4e43-a978-8057d11b696b',1,NULL,NULL,NULL,NULL),(1309,1794,'It’s Still a Stinking WYSIWYG',NULL,'<p>Just the other day, <a href=\"http://meyerweb.com/eric/thoughts/2007/08/23/css-sculptor-released/\">Eric Meyer announced</a> that he has been working with WebAssist to create <a href=\"http://www.webassist.com/go/css/emeyer\">Eric Meyer’s CSS Sculptor</a>. It’s a Dreamweaver Extension that assists users in creating clean markup and CSS. While this seems like a vast improvement over previous <acronym title=\"What You See Is What You Get\">WYSIWYG</acronym>s, it still feels like one.</p>\n\n\n\n<h2 class=\"replaceHeadline\">Why Do I Feel This Way?</h2>\n\n<p>While it’s great that this would mean that there is less crap code out there, people are still basically using forms to generate the markup and CSS needed. They <strong>still are not</strong> learning anything about web development.</p>\n\n<p>One thing I saw in the plans for future releases was:</p>\n\n<blockquote><p>There are some things I expect will be improved in future releases, like shorthand value minimization—the simplest example of that being a condensation of 0 0 0 0 down to just plain 0.”</p></blockquote>\n\n<p>Wow, if that’s not going to confuse the hell out of people who don’t know CSS, I don’t know what will. Imagine trying to add a margin in, so you add <code>margin: 10px 0 10px 0;</code>, then it gets condensed to <code>margin: 10px 0;</code>. It kind of seems like you would be confused as to why it wouldn’t accept the values that you were adding. Unless they give some sort of alert telling the user that this is what is happening, they will definitely be confused.</p>\n\n<p>They won’t know the different between margin and padding.</p>\n\n<p>They still may use blockquotes to indent their text.</p>\n\n<p>It just seems like crap.</p>\n\n<p>Users are still going to be choosing from a template. Do we really want the web to be built on templates?</p>\n\n<h2 class=\"replaceHeadline\">What are the Ramifications</h2>\n\n<p>As I was thinking about this writing this, I was reading a post at <a href=\"http://fadtastic.net\"> entitled “</a><a href=\"http://fadtastic.net/2007/08/24/will-software-ever-make-us-redundant/\">Will Software Ever Make Us Redundant?</a>”.</p>\n\n<p>I think this post really got me thinking about how even though the WYSIWYGs are getting better, I don’t ever think that humans will become redundant in Web Design/Development. The human mind is just too creative and amazing for a piece of software to ever be able to accomplish the same thing. Think about all of those wacky IE6 bugs.</p>\n\n<p>I don’t know Mr. Meyer, with all due respect, it kinda feels like you sold out on us.</p>',NULL,1739,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','6643daaf-599a-49b0-afa5-9cee5e215915',1,NULL,NULL,NULL,NULL),(1310,1795,'Ajax Forms with jQuery',NULL,'<p>There are so many different javascript frameworks out there, but I have recently started to use <a href=\"http://jquery.com\">jQuery</a>, and I love it. Not only is the library much smaller than others, but it is so simple to use. I wanted to show how easy it is to turn a regular form into a AJAX form.</p>\n\n\n\n<h2 class=\"replaceHeadline\">Start with a Regular Form</h2>\n\n<p>First, I am going to build a <a href=\"//assets.trevor-davis.com/play/jqueryajaxform/\">regular form</a>. The form is just going to be a basic email form. You enter an email address to send to, an email address to send from, a subject, and a message. All fields are required. So the process of the form is:</p>\n\n<ol><li>User fills out the form.</li>\n <li>User submits the form to the server.</li>\n <li>Server side script makes sure that there are no blank fields and that the email addresses are valid.</li>\n <li>If there are errors, show the form again with the error messages.</li>\n <li>If there are no errors, send the email.</li>\n</ol><p>Ok, so this form is pretty simple, and doesn’t take much time to submit since it’s so short, but let’s see how much better we can make it with a little jQuery.</p>\n\n<h2 class=\"replaceHeadline\">Add in JavaScript</h2>\n\n<p>OK, so next, I am going to make an <a href=\"//assets.trevor-davis.com/play/jqueryajaxform/ajaxed/\">AJAX version, which is a duplicate of the first form</a>. The only other things I am going to include on the page are the jquery library (<a href=\"http://docs.jquery.com/Downloading_jQuery\">which you can download here</a>) and my JavaScript to process this form.</p>\n\n\n<h3 class=\"replaceHeadline\">Firing My Script When the Document is Ready</h3>\n<p>jQuery has a nice little function to have you script start when the document is ready:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> //Script goes here<br />}); \n\n</code></div>\n\n<p>OK, easy enough. Now, let’s make something happen when the button to submit the form is clicked. I was smart enough to add an id of <strong>submit</strong> to my button, so it makes it really easy to reference:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\"#submit\").click(function(){<br />  return false;<br /> });<br />}); \n\n</code></div>\n\n<p>First things first, I’m going to hide anything with the class of error if it’s showing (which nothing will be unless the form is unsuccessfully submitted twice). I also create a variable that I am going to use later to see if the form has an error and a variable to store the email regular expression:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\"#submit\").click(function(){<br />  $(\".error\").hide();<br />  var hasError = false;<br />  var emailReg = /^([w-.]+@([w-]+.)+[w-]{2,4})?$/;<br /><br />  return false;<br /> });<br />}); \n\n</code></div>\n\n\n<h3 class=\"replaceHeadline\">Error Checking</h3>\n\n<p>Now that we’ve got the beginning of the script setup, we need to do the error checking. So first, let’s check to make sure that the email to address is not empty or invalid:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\"#submit\").click(function(){<br />  $(\".error\").hide();<br />  var hasError = false;<br />  var emailReg = /^([w-.]+@([w-]+.)+[w-]{2,4})?$/;<br /><br />  var emailToVal = $(\"#emailTo\").val();<br />  if(emailToVal == \'\') {<br />   $(\"#emailTo\").after(\'&lt;span class=\"error\"&gt;You forgot to enter the email address to send to&lt;/span&gt;\');<br />   hasError = true;<br />  } else if(!emailReg.test(emailToVal)) {<br />   $(\"#emailTo\").after(\'&lt;span class=\"error\"&gt;Enter a valid email address to send to.&lt;/span&gt;\');<br />   hasError = true;<br />  }<br /><br />  return false;<br /> });<br />}); \n\n</code></div>\n\n<p>Remember, the email address to send to input has an id of <strong>emailTo</strong>. What that code is saying is:</p>\n\n<ul><li>Get the value of the email to address input.</li>\n <li>If it is empty, add an error message after the input</li>\n <li>If it has an invalid email address, add an error message after the input.</li>\n</ul><p>Now, we just need to repeat the error checking for the other form fields:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\"#submit\").click(function(){<br />  $(\".error\").hide();<br />  var hasError = false;<br />  var emailReg = /^([w-.]+@([w-]+.)+[w-]{2,4})?$/;<br /><br />  var emailToVal = $(\"#emailTo\").val();<br />  if(emailToVal == \'\') {<br />   $(\"#emailTo\").after(\'&lt;span class=\"error\"&gt;You forgot to enter the email address to send to.&lt;/span&gt;\');<br />   hasError = true;<br />  } else if(!emailReg.test(emailToVal)) {<br />   $(\"#emailTo\").after(\'&lt;span class=\"error\"&gt;Enter a valid email address to send to.&lt;/span&gt;\');<br />   hasError = true;<br />  }<br /><br />  var emailFromVal = $(\"#emailFrom\").val();<br />  if(emailFromVal == \'\') {<br />   $(\"#emailFrom\").after(\'&lt;span class=\"error\"&gt;You forgot to enter the email address to send from.&lt;/span&gt;\');<br />   hasError = true;<br />  } else if(!emailReg.test(emailFromVal)) {<br />   $(\"#emailFrom\").after(\'&lt;span class=\"error\"&gt;Enter a valid email address to send from.&lt;/span&gt;\');<br />   hasError = true;<br />  }<br /><br />  var subjectVal = $(\"#subject\").val();<br />  if(subjectVal == \'\') {<br />   $(\"#subject\").after(\'&lt;span class=\"error\"&gt;You forgot to enter the subject.&lt;/span&gt;\');<br />   hasError = true;<br />  }<br /><br />  var messageVal = $(\"#message\").val();<br />  if(messageVal == \'\') {<br />   $(\"#message\").after(\'&lt;span class=\"error\"&gt;You forgot to enter the message.&lt;/span&gt;\');<br />   hasError = true;<br />  }<br /><br />  return false;<br /> });<br />}); \n\n</code></div>\n\n<p>Ok, error checking is done. If there are no errors, we need to send the email via an AJAX request. I’m not going to include the whole script here, just because it’s getting long, but you can <a href=\"//assets.trevor-davis.com/uploads/images/content/2008/01/submitform.js\">see the whole script</a>.</p>\n\n<p>So, there are no errors. Let’s remove the button from the form, and add in a loading graphic:</p>\n\n<div class=\"codeblock\"><code>\nif(hasError == false) {<br /> $(this).hide();<br /> $(\"#sendEmail li.buttons\").append(\'&lt;img src=\"/images/template/loading.gif\" alt=\"Loading\" id=\"loading\" /&gt;\');<br />} \n\n</code></div>\n\n<h3 class=\"replaceHeadline\">Submit the POST Request</h3>\n<p>Ok, now let’s send the values via an AJAX POST request to our send email script that just sends the email. Once the request is completed, let’s hide the form and display a success message:</p>\n\n<div class=\"codeblock\"><code>\n$.post(\"/play/jqueryajaxform/sendEmail.php\",<br />   { emailTo: emailToVal, emailFrom: emailFromVal, subject: subjectVal, message: messageVal },<br />    function(data){<br />  $(\"#sendEmail\").slideUp(\"normal\", function() {<br /><br />   $(\"#sendEmail\").before(\'&lt;h1&gt;Success&lt;/h1&gt;&lt;p&gt;Your email was sent.&lt;/p&gt;\');<br />  });<br /> }<br />); \n\n</code></div>\n\n<p>Pretty nice huh? So now, you have a perfectly accessible form. It works fine without JavaScript. But it works even better with JavaScript. I highly recommend checking out the <a href=\"http://docs.jquery.com/Main_Page\">jQuery Documentation</a>. So go ahead, send yourself some emails to see for yourself.</p>\n\n<h3 class=\"replaceHeadline\">Update…</h3>\n<p>I was asked in the comments if I could include the PHP script. So as requested, here are the files that are used:</p>\n<ul><li><a href=\"//assets.trevor-davis.com/uploads/images/content/2008/01/index.phps\">index.php</a></li>\n<li><a href=\"//assets.trevor-davis.com/uploads/images/content/2008/01/verify.phps\">verify.php</a></li>\n<li><a href=\"//assets.trevor-davis.com/uploads/images/content/2008/01/sendemail.phps\">sendEmail.php</a></li>\n<li><a href=\"//assets.trevor-davis.com/uploads/images/content/2008/01/thanks.phps\">thanks.php</a></li>\n</ul>',NULL,1740,NULL,'2019-10-09 16:41:09','2019-10-09 16:41:09','cea8d203-0976-4f50-a361-ba8839376aee',1,NULL,NULL,NULL,NULL),(1311,1796,'Save Friday Night Lights',NULL,'<p>This is not a typical topic for me to write about, but it is important enough that I need to write a little something. Most people probably don’ know it, but the best show on TV right now is <a href=\"http://www.nbc.com/Friday_Night_Lights/\">Friday Night Lights</a>.</p>\n\n<p>While I know most people are probably pretty skeptical about that statement, it is absolutely true.  After a wonderful debut season, we are getting geared up for another one. Although, NBC is trying to kill it by putting it on Fridays at 9pm.</p>\n\n\n<p>It is hard to put into words how amazing the show is. I’m sure there are a lot of people who are thinking that it is just another football show; they are vastly mistaken. Most episodes have about 15 minutes of football or less. The show is about the people, not about football. The whole town of Dillon revolves around their high school football team; it’s crazy.</p>\n\n<p>Have you read the <a href=\"http://www.amazon.com/Friday-Night-Lights-Town-Dream/dp/B000P2XNL6/ref=pd_bbs_2/105-0787161-9936451?ie=UTF8&amp;s=books&amp;qid=1190487005&amp;sr=1-2\">book</a>? Seen the <a href=\"http://www.amazon.com/Friday-Night-Lights-Widescreen-Thornton/dp/B00005JNEW/ref=pd_bbs_sr_3/105-0787161-9936451?ie=UTF8&amp;s=dvd&amp;qid=1190486988&amp;sr=8-3\">movie</a>? In my opinion, the TV show is just as good as the book. Which is saying a lot since the book is fantastic.</p>\n\n<p>Bill Simmons, the Sports Guy, just had a great article entitled <a href=\"http://sports.espn.go.com/espn/page2/story?page=simmons/070919\">Please, help me keep the ‘Lights’ on</a>. I think he sums it up perfectly:</p>\n\n<blockquote>\n<p>“Don’t you owe it to yourself to rent Season 1, Disc 1, and try the first four episodes? Look, if FNL doesn’t make it, we’re just going to get more Grey’s Anatomy spin-offs, a CSI for every city and 20 Deal or No Deal clones. Hollywood doesn’t like to take chances, and it doesn’t like to fail; it figures out what works, bleeds it to death, then flips the corpse and bleeds it some more.”</p>\n</blockquote>\n\n<p>Isn’t there enough trash on TV? Why not take a chance on something so highly recommended. I have never met anyone who has watched the show and didn’t enjoy it.</p>\n\n<p>Forget renting the first season, <a href=\"http://www.amazon.com/Friday-Night-Lights-First-Season/dp/B000RF1QE2/ref=pd_bbs_sr_1/105-0787161-9936451?ie=UTF8&amp;s=dvd&amp;qid=1190486988&amp;sr=8-1\">buy it for $20</a>. You can’t buy many TV shows for that low of a price. If that doesn’t convince you, <a href=\"http://www.fnlguarantee.com/\">there is a full money-back guarantee</a>.</p>\n\n<p>So everyone, if that didn’t convince you, tune in to NBC on October 5<sup>th</sup> at 9pm and watch the Season 2 premiere. I promise you won’t be disappointed.</p>',NULL,1741,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','55c45f67-5478-4867-851d-6491df26ab2a',1,NULL,NULL,NULL,NULL),(1312,1797,'I’ve Gone Pink',NULL,'<p>In support of Breast Care Awareness Month, <a href=\"http://pinkforoctober.org/\">I’ve gone pink for the month</a>. While it is not that much, it is in hopes of spreading the word. On the technical side, I decided not to change any of the markup, but to just change the CSS and images.</p>\n\n<p>As with just about anyone you talk to, I was directly effected by breast cancer. My mother died when I was 3. While I wish I could do more to help the cause, I donate and show support when I can.</p>\n\n<p>Show your support, <a href=\"http://cms.komen.org/komen/Donations/index.htm\">Donate to Breast Cancer Research</a>.</p>',NULL,1742,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','26cceaf6-765b-4e1d-be7c-31caa3c8a30c',1,NULL,NULL,NULL,NULL),(1313,1798,'Weekly Link Round-Up',NULL,'<p>So my plan is to eventually get some sort of consistency and post a weekly round-up of good links. I haven’t decided exactly which day I will publish it, but I am thinking about trying to do it on Friday’s. I guess I am a little late, but there are a few links that really stood out to me last week.</p>\n\n<ul><li><a href=\"http://www.brandspankingnew.net/archive/2005/08/adding_an_os_x.html\">OS X style searchbox</a>\n  <p>I noticed that when <a href=\"http://apple.com\">Apple</a> redesigned their site, the search box looked like the OS X search box. Then I noticed that they used JavaScript to do it (I guess so that it actually worked in Safari).</p>\n </li>\n\n <li><a href=\"http://www.stuffandnonsense.co.uk/malarkey/more/csseleven/\">CSS Eleven</a>\n  <p>CSS Eleven is an international group of visual web designers and developers who are committed to helping the W3C\'s CSS Working Group to better deliver the tools that are needed to design tomorrow\'s web. I’m so jealous. This is quite a star-studded line-up:</p>\n  <ul><li>Cameron Adams</li>\n   <li>Jina Bolton</li>\n   <li>Mark Boulton</li>\n   <li>Dan Cederholm</li>\n   <li>Andy Clarke</li>\n   <li>Jeff Croft</li>\n   <li>Aaron Gustafson</li>\n   <li>Jon Hicks</li>\n   <li>Roger Johansson</li>\n   <li>Richard Rutter</li>\n   <li>Jonathon Snook</li>\n  </ul></li>\n <li><a href=\"http://www.readwriteweb.com/archives/dear_new_york_times_tear_down_the_registration_wall.php\">Dear New York Times: The Pay Wall Was Only Half the Problem</a>\n  <p>The New York Times recently removed their subscription requirement to reading articles, but you still have to register to read them. Does only removing the subscription requirement solve the problem? I think not.</p>\n </li>\n <li><a href=\"http://www.simplebits.com/notebook/2007/10/05/fonts.html\">A Type In the Right Direction?</a>\n  <p>Webkit now supports the @font-face CSS property. I can only dream that this becomes a standards across all browsers. This was <a href=\"//trevor-davis.com/blog/web/my-web-wish-list.php\">#4 on my birthday web wish list this year</a>.</p>\n </li>\n</ul><p>I guess that’s it from last week. Hopefully I will start to do this on some sort of consistent basis.</p>',NULL,1743,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','1e9efb92-a1fc-4652-af50-bdc14d809368',1,NULL,NULL,NULL,NULL),(1314,1799,'Weekly Link Round-Up #2',NULL,'<p>Ok, so Fridays it is. I guess there are pros to posting this on Friday evening. There is plenty of time on the weekends to browse and read articles. Or if you aren’t a weekend reader, they will be waiting in your RSS Reader on Monday morning. Sounds good to me. Just a few good links from this week:</p>\n\n<ul><li><a href=\"http://www.sitepoint.com/article/apache-mod_rewrite-examples/\">Learn Apache mod_rewrite: 13 Real-World Examples</a>\n  <p>Mod_Rewrite is awesome. While there are plenty of articles about it, this article gives a nice intro, and then 13 real-world examples. Go ahead, try to go to <a href=\"http://www.trevor-davis.com/\">http://www.trevor-davis.com</a>. Yeah you get redirected to <a href=\"//trevor-davis.com/\">http://trevor-davis.com</a>. Stupid useless www.</p></li>\n\n <li><a href=\"http://psdtuts.com/designing-tutorials/elements-of-great-web-design-the-polish/\">Elements of Great Web Design: The Polish</a>\n  <p>I wish I was more creative. I feel like there are flashes every once in a while, but not enough. I guess the only way to get better is to keep reading, learning techniques, and just trying stuff. This is an excellent article about adding those finishing touches to sites. The before and after is pretty incredible.</p></li>\n\n <li><a href=\"http://www.zeldman.com/2007/10/10/testing-designs-for-color-blindness/\">Testing designs for color-blindness</a>\n  <p>This I found really interesting. Seeing what sites look like through the eyes of someone who is color blind. <a href=\"http://colorfilter.wickline.org/\">Go take a look at what your site looks like</a>.</p></li>\n\n <li><a href=\"http://www.456bereastreet.com/archive/200710/helping_your_client_maintain_markup_quality/\">Helping your client maintain markup quality</a>\n  <p>This is something that all of us web developers struggle with. How do we keep our clients from putting out crap code? <acronym title=\"What You See Is What You Get\">WYSIWYG</acronym>s don’t help the cause either. This idea is pretty interesting, to have a sort of warning style when depreciated elements are being used. Interesting concept.</p></li>\n\n <li><a href=\"http://fadtastic.net/2007/10/10/big-bold-backgrounds/\">Big, Bold Backgrounds</a>\n  <p>I personally love the big, bold backgrounds…when they are done well. I instantly though of <a href=\"http://mtv.com/\">MTV\'s</a> “new” site. There are so many backgrounds on there. I have refreshed a bunch of times and never seen the same one. If only I had those kind of creative skills. Maybe some day…</p></li>\n</ul>',NULL,1744,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','421733a3-a904-455b-afce-9794d1cceabe',1,NULL,NULL,NULL,NULL),(1315,1800,'Weekly Link Round-Up #3',NULL,'<p>Yeah, so I missed last week. What can I say, I was moving into my condo! I almost missed this week too…I got my wisdom teeth pulled this morning. But hey, I felt basically back to normal by about 2 this afternoon. So here’s what I found interesting this week.</p>\n\n<ul><li><a href=\"http://mezzoblue.com/archives/2007/10/25/moving_along/\">Moving Along</a>\n  <p>So, it looks likes we might be seeing some new entries on <a href=\"http://csszengarden.com/\">the CSS Zen Garden</a>. Yeah the site is been around for a while and a little tired, but it’s still interesting if you have some time to kill.</p>\n </li>\n <li><a href=\"http://thesuperest.com/\">The Superest</a>\n  <p><a href=\"http://www.bearskinrug.co.uk/\">Kevin Cornell</a> and <a href=\"http://www.inkfinger.us/\">Matthew Sutter</a> go at it drawing characters with “super” powers. The illustrations are amazing…I’m so jealous of their ability to draw like that.</p>\n </li>\n <li><a href=\"http://www.simplebits.com/notebook/2007/10/23/u489.html\">U-489</a>\n  <p>Ok, so not really web related, but this is one of the strangest/funniest stories I have heard.</p>\n </li>\n <li><a href=\"http://www.37signals.com/svn/posts/668-ask-37signals-can-i-build-a-product-business-if-im-just-a-designer\">Ask 37signals: Can I build a product business if I\'m just a designer?</a>\n  <p>Very interesting to see the career path of someone so successful, Jason Fried,  in the web development field.</p>\n </li>\n <li><a href=\"http://www.makeamixa.com/\">Make a Mixa</a>\n  <p>I am so tempted to get one of these.</p>\n </li>\n <li><a href=\"http://www.webdesignerwall.com/tutorials/design-watercolor-effect-menu/\">Design Watercolor Effect Menu</a>\n  <p>I love this style of design. Also good to get tips on how to achieve it.</p>\n </li>\n <li><a href=\"http://www.techcrunch.com/2007/10/24/google-declares-jihad-on-blog-link-farms/\">Google Declares Jihad On Blog Link Farms</a>\n  <p>Will be very interesting to see how blog link farms are affected. I guess I need to write more weekly articles too and not just link round ups!</p>\n </li>\n</ul>',NULL,1745,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','f60ba26c-2918-4b38-abef-64076abfad2b',1,NULL,NULL,NULL,NULL),(1316,1801,'Weekly Link Round-Up #4',NULL,'<p>I didn’t read too many great things this week, but there were a few. A couple of them are a little of topic, but I still found them really interesting to read.</p>\n\n<ul><li><a href=\"http://www.webdesignerwall.com/tutorials/advanced-css-menu/\">Advanced CSS Menu</a>\n<p>This is a continuation from last week’s entry,  <a href=\"http://www.webdesignerwall.com/tutorials/design-watercolor-effect-menu/\">Design Watercolor Effect Menu</a>. This entry shows how to create the XHTML and CSS from the menu that was designed last week.</p>\n</li>\n\n<li><a href=\"http://www.bennadel.com/blog/1009-jQuery-Demo-Creating-A-Sliding-Image-Puzzle-Plug-In.htm\"> jQuery Demo: Creating A Sliding Image Puzzle Plug-In</a>\n<p>I really like a <a href=\"http://jquery.com/\">jQuery</a> a lot. This is an awesome example of what is possible with it.</p>\n</li>\n\n<li><a href=\"http://www.adaptivepath.com/blog/2007/10/31/why-i-love-my-completely-inefficient-bathroom/\">Why I love my completely inefficient bathroom</a>\n<p>I don’t know why I found this article so interesting, but it was definitely different to analyze the usability of a bathroom.</p>\n</li>\n\n<li><a href=\"http://www.adaptivepath.com/blog/2007/11/01/office-bathrooms-as-key-indicators-of-team-culture/\">Office Bathrooms as key indicators of team culture</a>\n<p>Another bathroom article. This one talking about the things that a bathroom needs.</p>\n</li>\n\n<li><a href=\"http://www.456bereastreet.com/archive/200711/posh_plain_old_semantic_html/\">POSH - Plain Old Semantic HTML</a>\n<p>I love that there is an acronym for this. I also love plain old HTML.</p>\n</li>\n</ul>',NULL,1746,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','d8c24c2f-b513-4934-88d7-9a48cc833a70',1,NULL,NULL,NULL,NULL),(1317,1802,'Weekly Link Round-Up #5',NULL,'<p>Wow, I’m pathetic. I can hardly keep up with one blog post a week. I’m just so busy at work right now. I stopped reading my RSS feeds on Wednesday, so this is really like half-a-week’s worth of links.</p>\n\n<p>I’ve got a big project for work launching on Sunday, so hopefully I will have more free time. I’m also in the process of working up a new design for the site. I don’t necessarily feel like the current design is not good; I just feel the need for a change.</p>\n\n\n<ul><li><a href=\"http://www.sprymedia.co.uk/article/Grid\">Grid - Javascript Bookmarklet</a>\n  <p>Pretty awesome bookmarklet to generate any grid on any webpage, definitely a keeper.</p>\n </li>\n\n <li><a href=\"http://www.techcrunch.com/2007/11/07/google-coming-to-a-gas-station-near-you/\">Google Coming To A Gas Station Near You</a>\n  <p>Google is partnering with the makers of gas pumps to add Google Maps to the gas pump. Genius. Now when you are lost (and you don’t have GPS), but you don’t want to admit to the wife or girlfriend that you are lost, just say that you need gas! Then as you are filling up, find out where the hell you are.</p>\n </li>\n\n <li><a href=\"http://www.subtraction.com/archives/2007/1106_somethings_m.php\">Something’s Missing in Web Design</a>\n  <p>I do think web design is a little lacking compared to print. But if you think about it, the web is still a baby. There is plenty of time for it to grow up.</p>\n </li>\n\n <li><a href=\"http://www.456bereastreet.com/archive/200711/screen_readers_sometimes_ignore_displaynone/\">Screen readers sometimes ignore display:none</a>\n  <p><strong>Sometimes</strong> is the key word. Gotta love standard practice between different pieces of software that are supposed to do the same thing (IE6 anyone?). Still good to know.</p>\n </li>\n\n</ul>',NULL,1747,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','8baebb5a-11e1-4a22-9c1a-cd57a85559aa',1,NULL,NULL,NULL,NULL),(1318,1803,'Weekly Link Round-Up #6',NULL,'<p>Finally, it’s the weekend. I had to work basically all last weekend, and it’s great to finally get a break. Got a pretty good collection of links for this week.</p>\n\n<ul><li><a href=\"http://www.digital-web.com/articles/redesigning_ebay_registration/\">Better Web Forms: Redesigning eBay’s Registration</a>\n<p>Garrett Dimon gives a really good breakdown of a redesign of eBay’s registration form. Forms are easily one of the most important elements of web design, yet they are one of the least thought about elements.</p>\n</li>\n\n<li><a href=\"http://yesterdayishere.com/wordpress/arhiva/2007/11/14/classy-amp/\">Classy Amp</a>\n<p>Inspired by <a href=\"http://simplebits.com/\">Mr. Dan Cederholm</a>, this Wordpress plugin adds a span with a class around all ampersands <em>(edit: not all ampersands, only ampersands in headings)</em> so you can style the ampersand with a more attractive font.</p>\n</li>\n\n<li><a href=\"http://ilovetypography.com/2007/11/13/being-kind-to-widows-and-orphans/\">Being Kind to Widows and Orphans</a>\n<p>I guess this is like an extension of the Classy Amp plugin. Offers that functionality along with  converting quotes and other entities to their correct html values. Also adds non-breaking spaces to try and prevent widows and orphans (hence the title).</p>\n</li>\n\n<li><a href=\"http://favikon.com/\">favikon</a>\n<p>Upload a photo and create your favicon on the web. No need to go into Photoshop and crop it, then create an .ico file. This does it all.</p>\n</li>\n\n<li><a href=\"http://www.fatdux.com/how/our-web-dogma.html\">FatDuk Web Dogma ‘06</a>\n<p>10 rules that will enhance the user experience of any website or online application. While I think this is old, I still enjoyed reading it, and I think it all applies still.</p>\n</li>\n\n<li><a href=\"http://www.josiahcole.com/2007/07/11/almost-perfect-htaccess-file-for-wordpress-blogs/\">Almost Perfect htaccess File for WordPress Blogs</a>\n<p>Modify your htaccess file to try and prevent hackers from messing with your Wordpress installation.</p>\n</li>\n</ul><p>I <strong>promise</strong> a real post is coming soon! Along with a redesign…sometime soon.</p>',NULL,1748,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','fa50c9ae-618b-4c31-8067-69eaf2a85bdd',1,NULL,NULL,NULL,NULL),(1319,1804,'Upgraded to Wordpress 2.3.1',NULL,'<p>I decided to upgrade to the new version of Wordpress tonight. I wanted to get that out of the way before I finish and launch the redesigned site. The upgrade went smoothly, just noticed a couple of issues.</p>\n\n<p>The display of my comments got a little wacky. I’m not sure what exactly happened, but I’m not gonna worry about it too much since the redesign is launching soon.</p>\n\n<p>Also, it broke my AJAX comment submit. I have disabled it for now, but there is a new <code>input</code> element with the name of <strong>_wp_unfiltered_html_comment</strong>. I tried changing the JavaScript, but I still couldn’t get it to work. Hopefully, it’s something I can address soon.</p>',NULL,1749,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','8bd5d6f7-698d-488c-9ec9-664ebdb09b85',1,NULL,NULL,NULL,NULL),(1320,1805,'Weekly Link Round-Up #7',NULL,'<p>After a nice short week, and 2 days of eating and football, time to share my links for the week. This collection is only until Wednesday, but I still found a bunch of interesting things.</p>\n<ul><li><a href=\"http://www.flickr.com/photos/hicksdesign/sets/72157603217669471/\">Harry Potter and the Order of the Phoenix Typography</a>\n<p>I need to go back and watch this movie again after seeing all the great typography that is used. Someone definitely put a lot of time and effort into choosing the typography for the movie.</p>\n</li>\n\n<li><a href=\"http://www.justsayhi.com/bb/html_quiz\">How Many HTML Elements Can You Name in 5 Minutes?</a>\n<p>Ready, set, GO! I got 51. How many did you get? I got basically all of the non-depreciated elements, except for a few. The ones I missed were like <code>noscript</code>, <code>frame</code> and things like that.</p>\n</li>\n\n<li><a href=\"http://www.justsayhi.com/bb/css_quiz\">How Many CSS Properties Can You Name in 7 Minutes?</a>\n<p>I got 67. There were some that I was smacking myself for not getting, but then there are a bunch that aren’t really supported.</p>\n</li>\n\n<li><a href=\"http://www.techcrunch.com/2007/11/21/apple-gets-creative-with-mac-ads/\">Apple Gets Creative With Mac Ads</a>\n<p>Can Apple do anything wrong right now? This ad is genius.</p>\n</li>\n\n<li><a href=\"https://html.com/blog/23-scientific-website-eye-tracking-studies/\">Scientific Web Design: 23 Actionable Lessons from Eye-Tracking Studies</a>\n<p>A lot of this stuff is things most people probably know, but there is a lot of interesting stuff here.</p>\n</li>\n\n<li><a href=\"http://www.interface-research.com/\">Interface Research (Survey)</a>\n<p>Take this quick 10 question survey from a class at the Art Institute of Atlanta. The results are about what I figured, except for 1 or 2.</p>\n</li>\n\n<li><a href=\"http://www.456bereastreet.com/archive/200711/does_advanced_search_sound_too_advanced/\">Does advanced search sound too advanced?</a>\n<p>Yeah, I think “Advanced Search” is not a good term. I like what Roger suggests: “Refined” and “Enhanced”.</p>\n</li>\n\n<li><a href=\"http://www.alistapart.com/articles/understandingwebdesign\">Understanding Web Design</a>\n<p>The Godfather speaks. A great article from Jeffrey Zeldman about how you can’t really design for the web if you don’t understand it.</p>\n</li>\n\n<li><a href=\"http://www.alistapart.com/articles/howtosizetextincss\">How to Size Text in CSS</a>\n<p>This was a great issue of A List Apart this week. This article shows different tests of sizing typography. I think the important thing in this article is that Richard is testing to see his vertical grid grow when users resize their text.</p>\n</li></ul>',NULL,1750,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','ff43ace3-578f-450b-85b9-0249d1d72bc3',1,NULL,NULL,NULL,NULL),(1321,1806,'Weekly Link Round-Up #8',NULL,'<p>I’ve been busy for the last week or so working on the new site design. Hopefully I’m going to launch it within the next few days…maybe even tonight. I would say the theme for this redesign is simplicity. I’m no designer, so I should stop pretending, right? A lot of good links from this week. I guess once I finally finish the redesign, a real article will come…I promise.</p>\n\n<ul><li><a href=\"http://www.search-this.com/2007/11/26/css-a-recipe-for-success/\">CSS - A Recipe for Success</a>\n<p>Pretty good article about styling a restaurant menu as an unordered list. Nothing ground breaking, just a good example of the powerfulness of CSS.</p>\n</li>\n\n<li><a href=\"http://articles.techrepublic.com.com/5100-3513_11-5810687.html\">Creating Multicolumn Lists</a>\n<p>Again, nothing ground-breaking, just some simple techniques for creating multi-column lists. My one gripe is with the 3rd example. I\'m not sure why they don\'t just put the class name on the ordered lists instead of wrapping them in an extra div. Sure it’s not that much extra markup</p>\n</li>\n\n<li><a href=\"http://creativecurio.com/graphic-design-glossary/\">Graphic Design Glossary</a>\n<p>Nice list of definitions relating to the graphic design field. Might be helpful to send to clients so if you mix in those technical terms, they understand it.</p>\n</li>\n\n<li><a href=\"http://www.digital-web.com/articles/collecting_for_design/\">Collecting for Design</a>\n<p>Discussion about collecting ideas for interface and design solutions. Always good to help remember ideas from other sites.</p>\n</li>\n\n<li><a href=\"http://www.456bereastreet.com/archive/200711/the_rules_of_unobtrusive_javascript/\">The rules of unobtrusive JavaScript</a>\n<p>I read <a href=\"http://icant.co.uk/articles/seven-rules-of-unobtrusive-javascript/\">Chris Heilmann’s article</a> last week, but I like Roger’s explanation.</p>\n</li>\n\n<li><a href=\"http://designmeltdown.com/chapters/DesignPrinciples/\">Principles of Design</a>\n<p>A series of 6 articles (although only 3 are written so far) covering the basic principles of design.</p>\n</li>\n\n<li><a href=\"http://snook.ca/archives/accessibility_and_usability/what_does_accessibility_mean/\">What does Accessibility mean?</a>\n<p>Accessibility is not just making your site available for those with disabilities. It is making your site available for as many people as possible, disabled or not.</p>\n</li>\n\n<li><a href=\"http://www.email-standards.org/\">Email Standards Project</a>\n<p><a href=\"//trevor-davis.com/blog/web/html-emails-who-needs-them.php\">I hate HTML emails</a>. Let’s hope this project can force email client developers to stick to some sort of standards. Not saying I will like HTML emails any better, but coding them will become tolerable. I don’t know how many more crappy HTML emails I can stand to code.</p>\n</li>\n\n<li><a href=\"http://www.thinkvitamin.com/features/design/ensuring-your-html-emails-look-great-and-get-delivered\">Ensuring your HTML emails look great and get delivered</a>\n<p>Good article about making your HTML emails look good and making sure they are getting into the users’ inboxes.</p>\n</li>\n\n<li><a href=\"http://www.adaptivepath.com/blog/2007/11/29/doesnt-remind-me-of-anything/\">Doesn’t Remind Me of Anything</a>\n<p>Discussing how sometimes when you are starting new and kind or stuck, get away from the computer and go for a walk or something. A chance of scenery sometimes can really get the brain moving.</p>\n</li>\n</ul>',NULL,1751,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','d45f7ef8-a231-4cc1-8a0d-b43b0a5c5fbb',1,NULL,NULL,NULL,NULL),(1322,1807,'Version 2 Redesign Launched',NULL,'<p>Finally, I launched my redesign. I still have a little bit of cleanup to do in the blog section, but Sunday night football is on, so that’s not going to happen tonight.</p>\n\n<p>The goal for this redesign was to simplify. I’m only using a couple of images, and sticking to a pretty strict grid. I would say the inspiration for this redesign is definitely <a href=\"http://subtraction.com\">Khoi Vinh</a>.</p>\n\n\n\n<p>So the headings (or at least most of them) are done using <a href=\"http://wiki.novemberborn.net/sifr/\">sIFR</a>. I’m pulling in my <a href=\"http://twitter.com/davist11/\">Twitter status</a> next to my logo. I’ve got my <a href=\"http://flickr.com/photos/davist11/\">Flickr photos</a>, <a href=\"http://ma.gnolia.com/people/tdavis/bookmarks\">Ma.gnolia bookmarks</a>, and <a href=\"http://astore.amazon.com/trevdavi-20\">Amazon Astore</a> in the footer.</p>\n\n<p>Let me know if you have any feedback. Hopefully I will be able to clean up some of the blog stuff tomorrow or Tuesday.</p>',NULL,1752,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','f3acb829-36ff-4de0-abb6-07cb94b91e60',1,NULL,NULL,NULL,NULL),(1323,1808,'Creating Multiple Sites on a Local Web Server',NULL,'<p>So while I was redesigning my site, I needed somewhere to develop the new design. I didn’t want to have to setup a sub-domain on the live site because that would be a pain to have to FTP files up everytime I changed something. So I installed <a href=\"http://www.apachefriends.org/en/xampp.html\">XAMPP</a> on my computer.</p>\n\n<p>Basically, XAMPP is a all in one Apache web server. It installs Apache, PHP, MySQL…everything I needed.</p>\n\n\n\n<p>Once you install it, you get a web directory here <strong>C:Program Filesxampphtdocs</strong> (or whichever directory you install XAMPP to). That’s great, everything works fine when you put things in that directory and browse to <strong>localhost</strong>. But what about if you want to setup multiple sites? That is where I really had to do some digging.</p>\n\n<h2 class=\"replaceHeadline\">Setting Up Multiple Sites</h2>\n<p>I found this really good article that walks you through <a href=\"http://www.campbellssource.com/multiple-website-on-xampp/\">setting up multiple sites on XAMPP</a>. The article was a little longer than I thought it had to be, so I thought I would clarify some things.</p>\n\n<ol><li>Find this file: <strong>C:Program Filesxamppapacheconfextrahttpd-vhosts.conf</strong>, and open it in notepad.</li>\n<li>Find a line that says something like <strong>NameVirtualHost *:80</strong>. Remove the <strong>#</strong> sign that you see in front of it; this turns it from being a comment to code that is actually executed. (This was not in any instructions I could find)</li>\n<li><p>Next, scroll to the bottom, and you can add multiple domains. Here is what mine looks like:</p>\n<div class=\"codeblock\"><code>\n&lt;VirtualHost *:80&gt;<br />ServerAdmin webmaster@localhost.trevordavis.dev<br />DocumentRoot \"C:/sites/trevordavis.dev/webpages\"<br />ServerName localhost.trevordavis.dev<br />&lt;/VirtualHost&gt;<br /><br />&lt;VirtualHost *:80&gt;<br />ServerAdmin webmaster@localhost.trevordavis.redesign<br />DocumentRoot \"C:/sites/trevordavis.redesign/webpages\"<br />ServerName localhost.trevordavis.redesign<br />&lt;/VirtualHost&gt; \n\n</code></div></li>\n<li><p>Finally, find this file: <strong>C:WINDOWSsystem32driversetchosts</strong> and open it in notepad. You need to add an entry for each site you setup in the <strong>httpd-vhosts.conf</strong> file. My file looks like this:</p>\n<div class=\"codeblock\"><code>\n127.0.0.1 localhost<br />127.0.0.1 localhost.trevordavis.dev<br />127.0.0.1 localhost.trevordavis.redesign \n\n</code></div></li>\n</ol><h3 class=\"replaceHeadline\">That’s It</h3>\n<p>Once you have done this you can browse to <strong>http://localhost.trevordavis.dev</strong> and <strong>http://localhost.trevordavis.redesign</strong> on your computer when you have your web server running. This means that you can view PHP files and execute SQL locally.</p>\n\n<p>It’s great.</p>\n\n<p>Let me know if you have any questions.</p>',NULL,1753,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','c86f30ee-5e90-4683-936c-c67cf5a0c1ef',1,NULL,NULL,NULL,NULL),(1324,1809,'Weekly Link Round-Up #9',NULL,'<p>Yeah, so I didn’t get a chance to post last night because I was at the Wizards game.</p>\n\n<p>I’ve still got some clean-up to do on the redesign, which I hope to take care of this weekend. Here is what I found interesting this week.</p>\n\n<ul><li><a href=\"http://24ways.org/\">24 Ways</a>\n<p>It’s that time of the year again, 24 Ways to Impress Your Friends, already on day 8! If you haven’t read the previous years, I would definitely recommend doing it</p>\n</li>\n<li><a href=\"http://people.iola.dk/olau/flot/examples/\">Flot</a>\n<p>A library using jQuery to create charts and graphs…this is so awesome.</p>\n</li>\n<li><a href=\"http://www.csstextwrap.com/\">CSS Text Wrapper</a>\n<p>A Javascript library to have text wrap in non-traditional ways. I don’t think you could use this much in production, but still an interesting concept.</p>\n</li>\n<li><a href=\"http://www.thinkvitamin.com/features/design/creating-sexy-stylesheets\">Creating Sexy Stylesheets</a>\n<p>10 Ways to make your stylesheets “sexy”. Some good stuff here.</p>\n</li>\n<li><a href=\"http://stationfour.com/blog/post/2007/12/Better-Web-Designer-and-Developer-Collaboration-%7BPart-One-Designer-to-CSS-Coder%7D.aspx\">Better Web Designer and Web Developer Collaboration {Part One: Designer to CSS Coder}</a>\n<p>When you are like me, and don’t really design, but do the front-end, you have to have a good relationship with your designer. Some good hints here to make that hand-off smoother. I’m interested to see the other parts when they come out.</p>\n</li>\n</ul>',NULL,1754,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','cce53892-96ab-44e1-b40b-ab6c4f037097',1,NULL,NULL,NULL,NULL),(1325,1810,'Weekly Link Round-Up #10',NULL,'<p>Damn I have been busy!</p>\n<p>So I missed a week of the weekly link round-up. Last weekend I had 2 holiday parties to go to, football to watch, and Christmas presents to buy. Not only that, but I have been extremely busy with freelance work and work at my full time job. So busy that I had well over 200 feeds to read! So after a quick skim of my feeds, this is what I found link worthy in the past 2 weeks.</p>\n\n<ul><li><a href=\"http://www.webdesignerwall.com/tutorials/typographic-contrast-flow/\">Typographic Contrast and Flow</a>\n<p>Nice, simple article discussing the ways to create typographic contrast.</p></li>\n<li><a href=\"http://blogs.msdn.com/ie/archive/2007/12/19/internet-explorer-8-and-acid2-a-milestone.aspx\">Internet Explorer 8 and Acid2: A Milestone</a>\n<p>Great news, the internal build of IE8 passed the Acid2 test <strong>in standards mode</strong>. While I guess this is a step in the right direction, it’s probably still going to take a good 3 or 4 years for IE8 to even come out. Plus, what is this “standards mode”? From what I have read, it’s some special mode that the developer has to trigger, and this is different than a DOCTYPE. What kind of crap is that?</p></li>\n<li><a href=\"http://psdtuts.com/designing-tutorials/9-essential-principles-for-good-web-design/\">9 Essential Principles for Good Web Design</a>\n<p>Very good discussion about 9 essential principals for good web design. Lots of examples and links to more reading.</p></li>\n<li><a href=\"http://www.email-standards.org/blog/entry/yahoo-responds/\">Yahoo! Responds!</a>\n<p>So Yahoo! wants to support 100% of the recommendations made by the Email Standards Project. That’s pretty cool. Now how about those desktop email applications (I’m looking at you Outlook)?</p></li>\n<li><a href=\"http://www.stuffandnonsense.co.uk/malarkey/more/css_unworking_group/\">CSS Unworking Group</a>\n<p>I feel like I have to link to this since it caused so much controversy this past week. I think Andy Clarke has gone a little crazy. Sometimes I don’t even think he knows what he is actually writing. Yeah, Microsoft really dropped the ball by not updating IE6 for so long, but they are finally showing progress, and he wants the CSS Working Group to disband now? Now is the time to keep pushing, Microsoft is showing signs of playing ball.</p></li>\n<li><a href=\"http://www.markboulton.co.uk/journal/comments/bbc_homepage_redesign/\">BBC redesign: tellys have rounded corners, right?</a>\n<p>Nice breakdown of the <a href=\"http://www.bbc.co.uk/home/beta/\">BBC beta homepage</a>. I don’t really like it very much either. Especially that stupid clock. Yeah it’s a pretty cool little Flash application, but it’s so useless.</p></li>\n<li><a href=\"http://www.456bereastreet.com/archive/200712/overdoing_accessibility/\">Overdoing accessibility</a><p>Discussion of some attributes that are used to try and help accessibility, but really they are either not helping or hindering in some situations. I love the alt attribute example.</p></li>\n</ul><p>Stay tuned for <strong>The Ultimate PNG Guide</strong> coming sometime next week.</p>',NULL,1755,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','f800c0a3-b75e-4ce1-b116-36fa199b076b',1,NULL,NULL,NULL,NULL),(1326,1811,'The Ultimate PNG Guide',NULL,'<p>I would say one of the coolest things in web development/design is the creative use of PNGs. Although, it’s a little hard because of the way that IE6 handles them.</p>\n\n<p>I have already written about <a href=\"//trevor-davis.com/blog/tutorial/using-dean-edwards-ie7-script/\">Using Dean Edwards’ IE7 Script</a>, but I wanted to take it a step further and talk more about PNGs.</p>\n\n\n\n<h2 class=\"replaceHeadline\">To Review</h2>\n<blockquote>\n<p>First, <a href=\"http://dean.edwards.name/download/\">download the Dean Edwards script</a>. Next, extract the files to the root of your webserver in a folder called <strong>ie7</strong>. It needs to be in this folder, because some of the scripts have a dependency on the folder.</p>\n<p>Finally, just include the script in the head of your document using conditional comments:</p>\n</blockquote>\n\n<div class=\"codeblock\"><code>\n&lt;!--[if lt IE 7]&gt;<br />&lt;script src=\"/ie7/ie7-standard-p.js\" type=\"text/javascript\"&gt;&lt;/script&gt;<br />&lt;![endif]--&gt; \n\n</code></div>\n<p>Ok, so now when you want to have the script “fix” the PNG in IE6, you just have to have <strong>-trans.png</strong> as the suffix of the filename of the image.</p>\n\n<h2 class=\"replaceHeadline\">An Example</h2>\n\n<p>Now, I am no designer, but I have <a href=\"//assets.trevor-davis.com/uploads/images/content/2008/01/png-screenshot.png\">mocked-up a simple page to show some usage of PNGs</a>.</p>\n\n<p>Since the background on the body is the repeated diagonal lines, we cannot use a GIF for the rounded corners, because we aren’t sure where the corners will intersect with the lines on the bottom.</p>\n\n<p>In an ideal world, <a href=\"//assets.trevor-davis.com/play/pngs/\">this is how I would want to mark the page up.</a></p>\n\n<p>But, in IE6, the PNGs have a blue glow around them. So if we <a href=\"//assets.trevor-davis.com/play/pngs/example-2/\">apply the Dean Edwards scripts to the page</a>, we see the bottom image disappears (keep in mind you have to be looking in IE6 to see this problem). This is because the script is applying the IE proprietary filter property, and once this applied, we cannot position or repeat a PNG.</p>\n\n<p><a href=\"//assets.trevor-davis.com/play/pngs/example-3/\">So let’s change the way we are marking it up so that the bottom shows up in IE6</a>. Basically, we have just added an empty <code>div</code> that contains the bottom background PNG.</p>\n\n<p>Now we just have to worry about the repeated background of our main content area. In order to get rid of the blue glow, we have to apply IE’s filter property, which means that we can\'t repeat it.</p>\n\n<p>But, if we apply the filter property manually and change the sizingMethod to scale, <a href=\"//assets.trevor-davis.com/play/pngs/example-4/\">we can give the effect of repeating the background</a>.</p>\n\n<div class=\"codeblock\"><code>\ndiv#container div.inner {<br /> background-image: url(blank.gif);<br /> filter: progid:DXImageTransform.Microsoft.AlphaImageLoader (src=\'/images/content/2008/01/container-bg.png\', sizingMethod=\'scale\');<br />} \n\n</code></div>\n\n<p>Basically, it’s just stretching the image to fit the area, but since it’s a simple image that we were going to repeat anyways, it looks fine stretched.</p>\n\n<h3 class=\"replaceHeadline\">In Conclusion</h3>\n<p>Hopefully using a combination of these two PNG fixes can provide you with enough to get things looking good in all browsers.</p>\n\n<p>Anyone have any other solutions?</p>',NULL,1756,NULL,'2019-10-09 16:41:10','2019-10-09 16:41:10','e1105b75-c729-473b-8a0a-e8272741556f',1,NULL,NULL,NULL,NULL),(1327,1812,'Weekly Link Round-Up #11',NULL,'<p>Well, I hope everyone had a nice holiday break. I only worked 2 days this week, and there weren’t many good links that I could find since most people were enjoying the holidays. I have finally recovered from my busy week at work, and I only have the last 15 days of <a href=\"http://24ways.org/\">24 Ways</a> to read. I think I’m going to cherish them though, since we have to wait a whole year for it again.</p>\n\n<p>Anyways, these are the interesting links I found this week:</p>\n<ul><li><a href=\"http://www.techcrunch.com/2007/12/27/apple-tries-to-patent-a-way-to-avoid-long-lines/\">Apple Tries To Patent A Way to Avoid Long Lines</a>\n<p>Not that I’m a coffee drinker, but this is an awesome idea. I would like to see this implemented in all kinds of retail stores. I also want to see the damn iPhone available to all carriers!</p>\n</li>\n<li>\n<a href=\"http://www.andyrutledge.com/tough-client-my-son.php\">Tough Client: My Son</a>\n<p>Andy Rutledge’s 10-year old son approached him saying that he wanted a website. This is just awesome. I hope one day my kids (when I have them) do this to me.</p>\n</li>\n<li><a href=\"http://blog.netscape.com/2007/12/28/end-of-support-for-netscape-web-browsers/\">End of Support for Netscape web browsers</a>\n<p>Not like anyone uses Netscape anymore, but at one time Netscape did have 90% of the market share, and they had a large role in pushing browser makers to improve their browsers. They are part of the reason that we have awesome browsers like Safari and Firefox.</p>\n</li>\n<li><a href=\"http://freelanceswitch.com/money/should-you-sell-hosting/\">Should You Sell Hosting?</a>\n<p>This is dangerous territory if you ask me. I don’t think I will ever sell hosting to my freelance clients; I will only make recommendations of hosts to use.</p>\n</li>\n</ul>',NULL,1757,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','a4676926-7398-4dd6-bd71-e4c2770ff6a6',1,NULL,NULL,NULL,NULL),(1328,1813,'Javascript, A Requirement?',NULL,'<p>I had to go to <a href=\"http://www.fedex.com/us/\">the FedEx website</a> to track a package this week, and I was pretty disappointed. While, I was able to track my package, I was surprised to see that the little tracking box was built in Flash. You can see the exact box that I am talking about in the image that follows.</p>\n\n<img src=\"\" alt=\"FedEx Tracking Screenshot\" class=\"imageCenter\" height=\"173\" width=\"365\" /><p>So I thought, whatever it’s done in Flash, I’m sure they have an HTML equivalent if someone does not have the Flash plugin installed or if they have Javascript disabled. Boy was I wrong…</p>\n\n\n<h2 class=\"replaceHeadline\">Some Screenshots</h2>\n<p>Below is a screenshot of the page when Javascript is <strong>enabled</strong>:</p>\n<img src=\"\" alt=\"FedEx Screenshot with Javascript Enabled\" class=\"imageCenter\" height=\"423\" width=\"468\" /><p>Now, here is what the page looks like when Javascript is <strong>disabled</strong>:</p>\n<img src=\"\" alt=\"FedEx Screenshot with Javascript Enabled\" class=\"imageCenter\" height=\"830\" width=\"468\" /><p>Jesus, it looks like the page exploded. Not only does the tracking box go away, but the page looks completely awful.</p>\n\n<p>I know, I know, you are saying, “but everyone has Javascript enabled and a Flash plugin installed”. Ah, I beg to differ, <a href=\"http://www.thecounter.com/stats/2007/December/javas.php\">approximately 4% of users have Javascript disabled</a>. Yeah that looks like a small number, but when you are huge company like FedEx, that turns out to be a lot of people.</p>\n\n<p>Honestly, how hard is it to have an HTML alternative to the little Flash tracking box? A textbox and a button, how complicated!</p>\n\n<p>It’s pathetic that huge companies are still making terrible decisions like this on their web site. When will they learn?</p>',NULL,1758,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','ac7480b9-56fe-4953-8f6b-797ce041bfd1',1,NULL,NULL,NULL,NULL),(1329,1814,'Weekly Link Round-Up #12',NULL,'<p>I’m glad this week is over. You know, it really didn’t feel like a short week, I guess it’s because I worked on Monday. Well here are the interesting links I found:</p>\n\n<ul><li><a href=\"http://www.cdolivet.net/editarea/\">Edit area</a>\n<p>Really cool JavaScript that formats code. I could really use this as I am typing this post. I hate not being able to indent my list items. <a href=\"http://www.cdolivet.net/editarea/editarea/exemples/exemple_full.html\">Check out the demonstration</a>.</p>\n</li>\n\n<li><a href=\"http://particletree.com/notebook/reflections-of-an-interface-designer/\">Reflections of an Interface Designer</a>\n<p>Really good reflection from the designer of <a href=\"http://wufoo.com/\">Wufoo</a>. I love this quote:</p>\n<blockquote>\n<p>Good designers, however, are more like matchmakers. They design for the relationships between the tool and the user. If you know anything about relationships, then you know that this is extremely difficult. To be good at relationships you have to not only be selfless, but listening…constantly and carefully.</p>\n</blockquote>\n</li>\n\n<li><a href=\"http://24ways.org/2007/10-ways-to-get-design-approval\">10 Ways To Get Design Approval</a>\n<p>Ok, this isn’t really from this week, but I read it this week. This article is amazing. This quote even makes me think about things differently:</p>\n\n<blockquote>\n<p>Their [the client’s] tendency will be to try to improve the design, however that should be your problem not theirs. The role of a client should be to defend the needs of their users and business not do the design. Encourage the client to make comments such as “I am not sure that my female users will like the masculine colours” rather than “can we make the whole design pink.” It is down to them to identify the problems and for you as the designer to find the most appropriate solution.</p>\n</blockquote>\n</li>\n\n\n<li><a href=\"http://www.techcrunch.com/2008/01/04/new-years-tech-resolutions/\">New Year’s Tech Resolutions</a>\n<p>TechCrunch’s resolutions for some of the major players in the tech industry. I really hope Apple follows through with this one. I want the damn iPhone, but there is no way I’m switching to AT&amp;T.</p>\n</li>\n\n<li><a href=\"http://drawn.ca/2008/01/04/making-of-the-human-flipbook/\">Making of the Human Flipbook</a>\n<p>This commercial is amazing. So creative.</p>\n</li>\n\n<li><a href=\"http://gizmodo.com/339918/apple-docking-patent-works-perfectly-with-ultra+slim-macbook\">Apple Docking Patent Works Perfectly with Ultra-Slim MacBook</a>\n<p>Apple never ceases to amaze me. Too bad this new slim MacBook is a little too small for my liking. Where is a damn 15 inch MacBook Pro?! That’s what I want.</p>\n</li>\n</ul>',NULL,1759,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','1b553bf7-39ec-4d93-91e2-f30af1eb2eea',1,NULL,NULL,NULL,NULL),(1330,1815,'Updated Dean Edwards’ IE7 Scripts',NULL,'<p>As I have noted in previous posts: <a href=\"//trevor-davis.com/blog/tutorial/using-dean-edwards-ie7-script/\">Using Dean Edwards’ IE7 Script</a>, <a href=\"//trevor-davis.com/blog/tutorial/the-ultimate-png-guide/\">The Ultimate PNG Guide</a>, I am a big advocate of the Dean Edwards’ IE7 scripts.</p>\n\n<p>Thankfully, <a href=\"http://dean.edwards.name/weblog/2008/01/ie7-2/\">Dean has improved them even more</a>. Instead of having a ton of different JavaScript files with large file sizes, he has compressed them into two light-weight JavaScript files.</p>\n\n<p>The are now two scripts, <a href=\"//trevor-davis.com/ie7/IE7.js\">IE7.js</a> and <a href=\"//trevor-davis.com/ie7/IE8.js\">IE8.js</a>, and they are <a href=\"http://code.google.com/p/ie7-js/\">hosted on Google Code</a>. The IE7.js file “fixes” IE5 and IE6 so that it is up to par with IE7. Then, IE8.js adds in some additional functionality that is missing from IE7. <strong>Note:</strong> If you include IE8.js, you <strong>do not</strong> need to include IE7.js.</p>\n\n<h2 class=\"replaceHeadline\">Usage</h2>\n<p>There are a couple of different options here, you can either download the files and place them on your server or link directly to the Google Code version.</p>\n\n<h3 class=\"replaceHeadline\">Option 1: Download Files</h3>\n<ol><li><a href=\"http://ie7-js.googlecode.com/files/ie7-2.0%28beta%29.zip\">Download the ZIP file</a>.</li>\n<li>Extract the IE7 folder to the root of your server.</li>\n<li><p>Include the script in the head of your document:</p>\n<div class=\"codeblock\"><code>\n&lt;!--[if lt IE 7]&gt;<br />&lt;script src=\"/ie7/IE8.js\" type=\"text/javascript\"&gt;&lt;/script&gt;<br />&lt;![endif]--&gt; \n\n</code></div>\n<p>In this example, I am targeting all versions of Internet Explorer less than IE7, and applying the IE8 script to it. Or, you could apply the IE7 script instead, I just wanted the advanced CSS functionality.</p>\n<p>You could also set it so that it is applied in IE7 as well:</p>\n<div class=\"codeblock\"><code>\n&lt;!--[if lte IE 7]&gt;<br />&lt;script src=\"/ie7/IE8.js\" type=\"text/javascript\"&gt;&lt;/script&gt;<br />&lt;![endif]--&gt; \n\n</code></div>\n</li>\n<li>Open IE6 and enjoy some things not being broken.</li>\n</ol><h3 class=\"replaceHeadline\">Option 2: Link to Google Code Files</h3>\n<ol><li><a href=\"http://ie7-js.googlecode.com/svn/version/\">Find the version of the file you want to use</a></li>\n<li>Copy the URL, ex: <a href=\"http://ie7-js.googlecode.com/svn/version/2.0(beta)/IE8.js\">http://ie7-js.googlecode.com/svn/version/2.0(beta)/IE8.js</a></li>\n<li><p>Include the script in the head of your document:</p>\n<div class=\"codeblock\"><code>\n&lt;!--[if lt IE 7]&gt;<br />&lt;script src=\"http://ie7-js.googlecode.com/svn/version/2.0(beta)/IE8.js\" type=\"text/javascript\"&gt;&lt;/script&gt;<br />&lt;![endif]--&gt; \n\n</code></div>\n</li>\n<li>Smile, you just “fixed” IE6.</li>\n</ol><p>Hopefully that should get you started with what you need. My previous articles: <a href=\"//trevor-davis.com/blog/tutorial/using-dean-edwards-ie7-script.php\">Using Dean Edwards’ IE7 Script</a>, <a href=\"//trevor-davis.com/blog/tutorial/the-ultimate-png-guide.php\">The Ultimate PNG Guide</a> have some other details about the previous version of the script, some of which still apply.</p>\n\n<p>Let me know if you have questions.</p>',NULL,1760,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','a7bb8fbd-b2b7-4d20-978f-673280593251',1,NULL,NULL,NULL,NULL),(1331,1816,'Weekly Link Round-Up #13',NULL,'<p>I cannot wait until Tuesday. I have been talking for about 2 years now about getting an Apple laptop, and I think the time has finally come. Depending on what is announced at MacWorld on Tuesday, I will most likely be ordering a brand spanking new Macbook on Wednesday. I\'m so excited, that I feel like a little kid on Christmas.</p>\n\n<p>Ok, well I guess here is the stuff that I found interesting this week.</p>\n\n<ul><li><a href=\"http://cameronmoll.com/archives/2008/01/dos_aint_so_bad_after_all/\">DOS ain’t so bad after all</a>\n<p>I know exactly what Cameron is talking about. You go into furniture stores and places like that, you see these workers who have been working there for ages just flying through all of these DOS screens; they are really efficient.</p>\n</li>\n<li><a href=\"http://gizmodo.com/photogallery/microserveces08/1000446145\">Mommy, Why is There a Server in the House?</a>\n<p>Ok, this was one of the funniest things I have ever read. Click through and read the entire book. So weird…</p>\n</li>\n<li><a href=\"http://meyerweb.com/eric/thoughts/2008/01/08/access-switch/\">Access Switch</a>\n<p>Yeah, I think I am going to have to be doing this soon. Why do cable companies offer a promotional period for only 3 months and then like double the price? There is no way I am sticking with them if they don’t give me another promotion.</p>\n</li>\n<li><a href=\"http://www2.jeffcroft.com/blog/2008/jan/10/solutioneering-or-putting-solutions-problems/\">Solutioneering, or putting solutions before problems</a>\n<p>I love this article. We need to continue to solve specific problems on the web. Not just throw out the first solution that comes to mind. I know I am guilty of that at times, but it is something that I am working on.</p>\n</li>\n<li><a href=\"http://www.dustindiaz.com/udasss/\">UDASSS (Unobtrusive Degradable Ajax Style Sheet Switcher) Official Documentation</a>\n<p>This was an excellent article that debuted on <a href=\"http://24ways.org/advent/introducing-udasss\">24ways</a>, and it is great to read some further documentation.</p>\n</li>\n<li><a href=\"http://dataportability.org/\">Everyone is Joining the Data Portability Working Group</a>\n<p>Google, Facebook, Six Apart, Flickr, LinkedIn, and others all joined the Data Portability Working Group. This is awesome news. Imagine being able to manage all of those accounts with one login? Or by going Facebook and being able to access data from your Google account. This is a great step towards that.</p>\n</li>\n</ul>',NULL,1761,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','4718448e-1352-450c-b235-02c8e18367db',1,NULL,NULL,NULL,NULL),(1332,1817,'Weekly Link Round-Up #14',NULL,'<p>Busy, busy weekend. I didn’t get a chance to write this on Friday, so I\'ll get right to it. This is what entertained me this week:</p>\n<ul><li><a href=\"http://fadtastic.net/2008/01/15/accessible-can-be-beautiful/\">Accessible can be Beautiful</a>\n<p>There is no reason for people to not make a site accessible. So make it happen people.</p>\n</li>\n<li><a href=\"http://www.smashingmagazine.com/2008/01/16/evolve-your-user-interface-to-educate-your-users/\">Evolve Your User Interface To Educate Your Users</a>\n<p>I love those little tips like these examples when you are using a well designed web application.</p>\n</li>\n<li><a href=\"http://meyerweb.com/eric/thoughts/2008/01/16/browser-version-timeline/\">Browser Version Timeline</a>\n<p>Nice little timeline showing the release period of browser versions.</p>\n</li>\n<li><a href=\"http://cameronmoll.com/archives/2008/01/overcoming_blankcanvasphobia/\">Overcoming blankcanvasphobia</a>\n<p>I know I have this problem at times. I think sketching with paper and pencil is a great cure.</p>\n</li>\n<li><a href=\"http://www.webdesignerwall.com/tutorials/css-gradient-text-effect/\">CSS Gradient Text Effect</a>\n<p>Nice little gradient text effect. Just one simple image.</p>\n</li>\n<li><a href=\"http://www.techcrunch.com/2008/01/17/yahoo-implements-openid-massive-win-for-the-project/\">Yahoo Implements OpenID; Massive Win For The Project</a>\n<p>This is big news for OpenID. If they can get a few other big name companies to implement it, I think it may really take off.</p>\n</li>\n<li><a href=\"http://www.cracked.com/article_15825_internet-party-what-happens-when-googles-parents-leave-town-weekend.html\">The Internet Party: What Happens When Google\'s Parents Leave Town for the Weekend?</a>\n<p>Very entertaining video. Well worth the 5 minutes.</p>\n</li>\n<li><a href=\"http://www.webstandards.org/2008/01/18/tell-the-css-wg-what-you-want-from-css3/\">Tell the CSS WG what you want from CSS3</a>\n<p>Help the CSS Working Group set the priorities for CSS3</p>\n</li>\n</ul>',NULL,1762,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','8c53532c-4596-4946-84f4-9d6f3a4989f3',1,NULL,NULL,NULL,NULL),(1333,1818,'Integrated Whole Site with Wordpress',NULL,'<p>Last night, I finished integrating my entire site into Wordpress. It took a little while, but I’ve finally got all of my content migrated.</p>\n\n<p>Of course if you are reading this in your feed reader, it’s going to say that all of the feeds are new…but they are not.</p>\n\n<p>Hopefully soon I will write more about the process of powering a whole site with Wordpress.</p>',NULL,1763,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','d73c8b7a-9020-4373-9337-1921e3971973',1,NULL,NULL,NULL,NULL),(1334,1819,'The Importance of Testing',NULL,'<p>It is great when you can take situations in your everyday life and relate them to the web.</p>\n\n<p><img src=\"//assets.trevor-davis.com/uploads/images/content/2008/01/dishwasher-exterior.jpg\" alt=\"Bosch Dishwasher Exterior Photo\" class=\"leftSide pullLeft\" height=\"289\" width=\"228\" />First, I am going to discuss a well designed product with one major problem that I used to use daily. Then I will discuss how we can use experiences from our every day lives to make the web a better place.</p>\n\n<p>So, my parents have this <a href=\"http://www.boschappliances.com/\">Bosch</a> dishwasher that they bought a few years ago. It really was awesome. It is super quiet, cleans well, and has a nice stainless steel finish. In the store and online, this thing looks great, and it’s easy to see why my parents bought it. But, there is just one big flaw…</p>\n\n<p>As you can see by the photo, this is as slick as a dishwasher can get. The nice clean front with no buttons or switches to get in the way, its looks really nice. Since it’s so quiet when it runs, you don’t hear all those horrible dish-washing sounds.</p>\n\n<h2 class=\"replaceHeadline\">The Problem</h2>\n<p>This is where the major problem comes in. It’s so quiet, that you don’t even realize it’s running. You have to open the door to see the control panel on the top of the door.</p>\n\n<img src=\"//assets.trevor-davis.com/uploads/images/content/2008/01/dishwasher-panel.jpg\" alt=\"Bosch Dishwasher panel\" class=\"imageCenter\" height=\"115\" width=\"468\" /><p>It’s nice to have that out of view and gives the kitchen a sleek design. But there is no external display that lets you know that the dishwasher is running. There is no lock on the door for when it is running.</p>\n\n<p>So how could this have been solved?</p>\n\n<p>How about: thorough, in-home product testing? I’m sure they had a test dishwasher setup, and I bet they knew how long it took to run. They didn’t need to open it to see if it was still running. But if they had a regular person testing it, I’m sure they would encounter the same problem that I did.</p>\n\n<h2 class=\"replaceHeadline\">How is This Related to the Web?</h2>\n<p>This shows the importance of having users not close to the development of the site or application to be there to test. Just thinking about things like this remind you to slow down and make sure everything is tested thoroughly.</p>\n\n<p><a href=\"http://www.sensible.com/\">Steve Krug</a> is the master of usability testing and shows the true value of it. A simple example that he gave when I went to An Event Apart was to go to <a href=\"http://www.magazines.com/\">Magazines.com</a> and to “buy” a subscription to The New Yorker <strong>without using the search</strong>.</p>\n\n<p>It takes a while. A little too long.</p>\n\n<p>So everyone, test your web sites and applications…or you might just open the dishwasher and have all the water run out.</p>\n\n<h2 class=\"replaceHeadline\">Think About It</h2>\n<p>Can you think of other “problems” from your everyday life that could improve the way you develop websites?</p>',NULL,1764,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','6c3eadf9-ea13-41f8-b4cc-f9777ecf91e0',1,NULL,NULL,NULL,NULL),(1335,1820,'Weird Green Background in Firefox',NULL,'<div class=\"update\">\n<h2 class=\"replaceHeadline\">How to Fix</h2>\n<p>So it appears that there are two different fixes. One of them completely removes FireShot, and the second leaves FireShot installed. Both appear to work.</p>\n<h3 class=\"replaceHeadline\">Fix #1</h3>\n<ol><li>Uninstall FireShot 0.31</li>\n<li>Restart Firefox</li>\n<li>Enter <strong>about:config</strong> in the address bar</li>\n<li>Search for any variables that contain <strong>fireshot</strong> (I think this is the one that is causing the problem: <em>general.useragent.extra.fireshot</em>)</li>\n<li>Right click on each one, and select reset</li>\n<li>If you want, re-install FireShot version 0.25</li>\n</ol><h3 class=\"replaceHeadline\">Fix #2</h3>\n<ol><li>Open the FireShot preferences</li>\n<li>Uncheck <strong>Add information about FireShot into user-agent string</strong></li>\n<li>Restart Firefox</li>\n</ol></div>\n\n<p>So a couple of my Firefox add-ons had updates this morning. I installed them all without even thinking about it, and my co-worker <a href=\"http://seeyouin1984.com/\">Adrian</a> asked why I added the green background to my sIFR headings. I had no idea what he was talking about. He said he also had a Firefox add-on that was updated, <a href=\"https://addons.mozilla.org/en-US/firefox/addon/5648\">FireShot</a>.</p>\n\n<img src=\"//assets.trevor-davis.com/uploads/images/content/2008/01/home-green-background1.jpg\" alt=\"Homepage with weird green backgrounds\" class=\"frame imageCenter\" height=\"224\" width=\"462\" /><p>I checked in Firefox on the Mac, IE, and another co-worker\'s Firefox on PC, and none of them had the green backgrounds. I disabled JavaScript, and the green backgrounds went away. So something is going on with my sIFR headings. Weird.</p>\n\n<p>Anyone else seeing the green backgrounds? Anyone know why?</p>',NULL,1765,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','5070d265-7c25-4207-b999-b53ef691f855',1,NULL,NULL,NULL,NULL),(1336,1821,'Weekly Link Round-Up #15',NULL,'<p>Yeah, so I am a little late with my weekly round-up from last week. Better late than never:</p>\n\n<ul><li><a href=\"http://bokardo.com/archives/the-power-of-a-bruised-ego/\">The Power of a Bruised Ego</a>\n<p>I view the source of almost every site I go to.</p>\n</li>\n<li><a href=\"http://www.456bereastreet.com/archive/200801/standards_mode_is_the_new_quirks_mode/\">Standards mode is the new quirks mode</a>\n<p>Roger gives a good round-up of this whole Doctype switching non-sense that had been going on last week.</p>\n</li>\n<li><a href=\"http://www.digital-web.com/articles/building_facebook_applications/\">How To Build A Facebook Application</a>\n<p>I haven’t built one, but this seemed like a good getting started tutorial.</p>\n</li>\n<li><a href=\"http://www.readwriteweb.com/archives/the_work_from_home_generation.php\">The “Work From Home” Generation</a>\n<p>I need to start doing this.</p>\n</li>\n<li><a href=\"http://video.google.com/videoplay?docid=6265391640558960074\">Helvetica: The Movie</a>\n<p>Hmm, it’s not available right now. Hopefully they add it back, I need to watch this.</p>\n</li>\n<li><a href=\"http://ajaxian.com/archives/animated-png-in-firefox-3\">Animated PNG in Firefox 3</a>\n<p>Just what we need, more animated graphics.</p>\n</li>\n</ul>',NULL,1766,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','000731b4-7551-417e-859d-7210a8e57d8e',1,NULL,NULL,NULL,NULL),(1337,1822,'Weekly Link Round-Up #16',NULL,'<p>Another busy weekend, so I’m a little late on my weekly link round-up from last week. Just a few links, but here it is:</p>\n\n<ul><li><a href=\"http://www.digital-web.com/articles/the_perfect_portfolio/\">Creating The Perfect Portfolio</a>\n<p>Pretty good article discussing the ways to build a perfect portfolio. The key is to make sure you know your audience.</p>\n</li>\n<li><a href=\"http://www.boston.com/bostonglobe/ideas/articles/2008/01/27/what_font_says_change/\">What font says ‘Change’?</a>\n<p>Two type designers discuss the typography used in the presidential candidates logos. I personally like Obama’s and John Edwards’ the best.</p>\n</li>\n<li><a href=\"http://outlawdesignblog.com/2008/graphic-design-contracts-agreement-forms-webdesigner-contrats/\">Graphic Designer Contracts Agreements Forms &amp; Web Designers Contracts</a>\n<p>A nice list of contracts and forms for web designers and developers.</p>\n</li>\n</ul>',NULL,1767,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','807671d4-4373-4f61-a319-a65dbc63c605',1,NULL,NULL,NULL,NULL),(1338,1823,'PHP Get Age Function',NULL,'<p>Such things like copyright dates, ages, etc. can cause problems on websites unless they are dynamic. For example, I have my age in the little about me blurb in the sidebar. I made a little function to calculate my age so that I don’t have to go in every year on my birthday and add another year to my age.</p>\n\n\n\n<h2 class=\"replaceHeadline\">The Function</h2>\n<div class=\"codeblock\"><code>\nfunction age($bMonth,$bDay,$bYear) {<br /> <br /> $cMonth = date(\'n\');<br /> $cDay = date(\'j\');<br /> $cYear = date(\'Y\');<br /><br /> if(($cMonth &gt;= $bMonth &amp;&amp; $cDay &gt;= $bDay) || ($cMonth &gt; $bMonth)) {<br />  return ($cYear - $bYear);<br /> } else {<br />  return ($cYear - $bYear - 1);<br /> }<br />} \n\n</code></div>\n\n<p>This function takes 3 arguments: the birth month, the birth day, and the birth year. It will return the calculated age. It obviously won’t work with an age in the future; it will return a negative number. I could add in checking to see if it’s a valid date, but I don’t think it’s really necessary.</p>\n\n<p><a href=\"//assets.trevor-davis.com/play/php-get-age-function-examples/\">Check Out Some Examples</a></p>\n\n<p>Nothing too complicated. Let me know if anyone has any suggestions to shorten the code.</p>',NULL,1768,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','741d3e22-bffa-4a4b-a275-d64ac850935e',1,NULL,NULL,NULL,NULL),(1339,1824,'Weekly Link Round-Up #17',NULL,'<p>Well, I’m actually writing my weekly round-up on time this week. Guess it helps to actually keep up with my feeds. Here are a couple of items from <strong>last week</strong> that I didn’t get a chance to read until this week.</p>\n<ul><li><a href=\"http://www.smashingmagazine.com/2008/01/31/10-principles-of-effective-web-design/\">10 Principles Of Effective Web Design</a>\n<p>Nice overview of 10 principles to make designs usable. Remember, web design is all about the user.</p>\n</li>\n<li><a href=\"http://www.thinkvitamin.com/features/css/stay-on-target\">Stay on :target</a>\n<p>Some examples of how to use  the CSS3 pseudo selector: <strong>target</strong>. If only browsers could keep up.</p>\n</li>\n</ul><p>Now for the items from <strong>this week</strong> that I found interesting:</p>\n\n<ul><li><a href=\"http://freelanceswitch.com/general/why-being-an-average-freelancer-might-just-be-enough/\">Why Being An ‘Average’ Freelancer Might Just Be Enough</a>\n<p>I feel like I am an ‘average’ freelancer, and I am perfectly happy with it. My design ability is not amazing, but it’s not bad either. That’s not saying I don’t want to improve it.</p>\n</li>\n\n<li><a href=\"http://www.nytimes.com/2008/02/04/technology/04link.html\">Is Obama a Mac and Clinton a PC?</a>\n<p>I love Obama’s website. It does feel very <strong>Mac-y</strong>.</p>\n</li>\n\n<li><a href=\"http://www.sitepoint.com/article/principles-beautiful-html-email\">The Principles of Beautiful HTML Email</a>\n<p>This most important part is simplicity. This is my favorite section: <strong>“An Email is Not a Web Page”</strong>.</p>\n</li>\n\n<li><a href=\"http://thebignoob.com/posts/cinematic-web-design/\">Cinematic Web Design</a>\n<p>I love the analogy.</p>\n</li>\n\n<li><a href=\"http://abriefmessage.com/2008/02/06/saffer/\">No Child Left Behind Is Leaving Designers Behind</a>\n<p>I agree totally. I wish I would have received more design training. I’m trying on my own though…</p>\n</li>\n\n<li><a href=\"http://ajaxian.com/archives/jquery-ui-and-jquery-enchant-alpha-versions-released-today\">jQuery UI and jQuery Enchant Alpha Versions Released Today</a>\n<p>More jQuery coolness. I love the demos.</p>\n</li>\n\n<li><a href=\"http://fadtastic.net/2008/02/07/calls-to-action-click-here/\">Calls To Action - Click Here!</a>\n<p>Calls to Action: such an important part of turning visitors into conversions.</p>\n</li>\n\n<li><a href=\"http://www.maxdesign.com.au/2008/02/09/comment-anatomy/\">Anatomy of a comment</a>\n<p>Interesting discussion breaking down the different parts of a comment and what popular sites display which pieces.</p>\n</li>\n\n<li><a href=\"http://weneedgirlfriends.tv/\">We Need Girlfriends</a>\n<p>Ok, so I think I’m really late with this, but this show is hilarious. Started out as an online show, and now CBS bought the show. The episodes take a long time to download from the site, so I would also recommend checking them out on <a href=\"http://youtube.com/user/StevenTsapelas\">YouTube</a></p>\n</li>\n</ul>',NULL,1769,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','d1bb1a16-7110-4f48-becf-9b0e3aeac397',1,NULL,NULL,NULL,NULL),(1340,1825,'Weekly Link Round-Up #18',NULL,'<p>Wow, I’m actually all caught up with my feeds. I’m really looking forward to this 3-day weekend. I really could use the extra time to work on a personal project.</p>\n\n<p>Here is what I found interesting this week:</p>\n\n<ul><li><a href=\"http://www.456bereastreet.com/archive/200802/make_sure_your_website_works_with_or_without_www/\">Make sure your website works with or without www</a>\n<p>It’s surprising how many sites you see that don’t work one way or the other. Not to mention that this can hurt your search engine optimization. Oh, by the way, I’m in the <a href=\"http://no-www.org/\">no-www</a> crowd.</p>\n</li>\n<li><a href=\"http://www.css3.info/image-replacement-in-css3/\">Image Replacement in CSS3</a>\n<p>This would be an awesome addition to CSS. Think about how much we use image replacement. We should really have a <a href=\"//trevor-davis.com/blog/tutorial/improved-navigation-image-replacement/\">bulletproof implementation</a> without adding extra markup.</p>\n</li>\n<li><a href=\"http://fadtastic.net/2008/02/12/25-ways-to-improve-your-site-in-5-minutes/\">25 Ways To Improve Your Site In 5 Minutes</a>\n<p>I need to go through this list and see if there is anything I should do.</p>\n</li>\n<li><a href=\"http://www.readwriteweb.com/archives/heavy_clickers.php\">Study: 6% of People Online Contribute 50% of Display Ad Clicks</a>\n<p>Wow, that’s crazy. I barely ever click on any ads.</p>\n</li>\n<li><a href=\"http://www.techcrunch.com/2008/02/13/google-officially-hijacks-404-pages-what-do-you-think/\">Google Officially Hijacks 404 Pages, What Do You Think?</a>\n<p>At first, I kind of had mixed feelings about this. On one side, if someone was on my site and got a Google 404 page I would not be happy. On the other hand, the people have the option to just remove the toolbar if they don’t want it. And I guess to make it even better, it only displays the Google 404 page if the 404 page on the site is under 512 bytes. I think it could actually be pretty useful.</p>\n</li>\n</ul>',NULL,1770,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','91786f66-3f48-4cba-8cd6-fd12a03b4e21',1,NULL,NULL,NULL,NULL),(1341,1826,'Weekly Link Round-Up #19',NULL,'<p>There has been a lot of discussion/arguments recently about IE8’s rumored version targeting. I have been a little in between on which side to take, but I think a few articles from this week really helped me to make my decision.</p>\n<ul><li><a href=\"http://www.alistapart.com/articles/theyshootbrowsers\">They Shoot Browsers, Don\'t They?</a>\n<p>Jeremy Keith has a great discussion about why the default version targeting is incorrect. He does not think you should have to add extra code (ok, just one line) in order to “enable” new browser features.</p>\n</li>\n<li><a href=\"http://www.alistapart.com/articles/minorthreat\">Version Targeting: Threat or Menace?</a>\n<p>Jeffrey Zeldman takes a different approach and discusses how huge IE’s market share is, and that a majority of people are not developing their websites with Web Standards, and their sites would “break” (display differently) in IE8 (if by default, it would act like IE8).</p>\n<p>Imagine all of those large and powerful companies having their sites “broken”, Microsoft couldn’t take it. This is what I think really sold me. While I don’t think it’s necessarily correct, it is probably the right thing for Microsoft to do to protect themselves.</p>\n</li>\n<li><a href=\"http://meyerweb.com/eric/thoughts/2008/02/19/common-bonds/\">Common Bonds</a>\n<p>Eric Meyer brings up a fantastic point here regarding the two different views of version targeting:</p>\n<blockquote>\n<p>We all want to advance web standards. We all want browsers to improve their support. We all want better and more advanced specifications. We all want to reduce inconsistencies. We all want a better web.</p>\n</blockquote>\n</li>\n</ul><p>Here is the rest of this stuff that I found interesting this week:</p>\n<ul><li><a href=\"http://cameronmoll.com/archives/2008/02/scrutinizing_the_xo_olpc_user_experience/\">Scrutinizing the XO (OLPC) user experience</a>\n<p>Very interesting review of the affordable <a href=\"http://laptop.org/\">XO laptop</a>.</p>\n</li>\n\n<li><a href=\"http://www.ironicsans.com/2008/02/idea_a_new_typography_term.html\">Idea: A new typography term</a>\n<p>While I am not a print/type designer, I found this amusing.</p>\n</li>\n\n<li><a href=\"http://www.markboulton.co.uk/journal/comments/start_your_own_business/\">Start Your Own Business</a>\n<p>I want to start my own sometime in the future. Great guide about what you need to do it right.</p>\n</li>\n\n<li><a href=\"http://freelanceswitch.com/working/balancing-work-family/\">Balancing Work &amp; Family</a>\n<p>Nice list of 5 important things to remember before working so many hours.</p>\n</li>\n\n<li><a href=\"http://www.thinkvitamin.com/features/design/awesome-up-your-design-with-ab\">Awesome up your design with A.B.</a>\n<p>Simple tutorial about how to spruce up your design with an <strong>auroral background</strong>.</p>\n</li>\n\n<li><a href=\"http://www.techcrunch.com/2008/02/21/500-million-downloads-of-firefox-almost/\">500 Million Downloads of Firefox (almost)</a>\n<p>Damn, that’s awesome. Still not enough though…</p>\n</li>\n\n<li><a href=\"http://developer.yahoo.net/blog/archives/2008/02/conversation-with-matt-mullenweg.html\">A Conversation with Matt Mullenweg</a>\n<p>Wow, Matt just turned 24. I’m turning 24 soon! Amazing what he has accomplished. I am anxiously awaiting the new version of Wordpress to see what the admin section looks like.</p>\n</li>\n</ul>',NULL,1771,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','1d1f13b2-6dd4-4af7-a3a1-6a3b5e8767a5',1,NULL,NULL,NULL,NULL),(1342,1827,'MacBook vs MacBook Pro, Help Me Decide!',NULL,'<div class=\"update\">\n<h2>Update</h2>\n<p>I went with a MacBook Pro. <a href=\"//trevor-davis.com/blog/news/i-picked-a-macbook-pro/\">Find out what helped me to make my decision.</a></p>\n</div>\n\n<p>I have been craving an Apple laptop for about a year and a half now. Since Apple, just updated <a href=\"http://apple.com\">both the MacBook and the Macbook Pro</a> today, I think it’s finally time. But now, the hard part comes up, which do I get: the MacBook or the MacBook Pro?</p>\n\n\n<h2 class=\"replaceHeadline\">MacBook</h2>\n<p>So here are the specs for the MacBook that I would get:</p>\n<ul><li><strong>Size:</strong> 13 inch</li>\n<li><strong>Processor:</strong> 2.4GHz Intel Core 2 Duo</li>\n<li><strong>Memory:</strong> 2GB 667MHz DDR2 SDRAM - 2x1GB</li>\n<li><strong>Hard Drive</strong> 160GB Serial ATA Drive @ 5400 rpm (or go to 250GB for $100 more)</li>\n<li><strong>AppleCare Protection Plan:</strong> $249</li>\n<li><strong>Price:</strong> $1,548.00</li>\n</ul><h2 class=\"replaceHeadline\">MacBoook Pro</h2>\n<p>Now, here are the specs for the MacBook Pro I would get:</p>\n<ul><li><strong>Size:</strong> 15 inch</li>\n<li><strong>Processor:</strong> 2.4GHz Intel Core 2 Duo</li>\n<li><strong>Memory:</strong> 2GB 667MHz DDR2 SDRAM - 2x1GB</li>\n<li><strong>Hard Drive</strong> 200GB Serial ATA Drive @ 5400 rpm (or go to 250GB for $50 more)</li>\n<li><strong>AppleCare Protection Plan:</strong> $349</li>\n<li><strong>Price:</strong> $2,348.00</li>\n</ul><h2 class=\"replaceHeadline\">Comparison</h2>\n<p>Based on those specs, it seems like the MacBook pro isn’t packing that much more. But in addition to all that, it has a better graphics card, backlit keyboard, and a multi-touch trackpad.</p>\n\n<p>The backlit keyboard and 15 inch screen are big for me. But is it worth that much more? I’m not sure.</p>\n\n<p>I wish Apple would update their <a href=\"http://store.apple.com/Catalog/US/Images/comparison_chart.html\">laptop comparison chart</a>. Hopefully they will get to it today.</p>\n\n<p>So what do <strong>YOU</strong> think? Which would you get?</p>',NULL,1772,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','d91623bf-0420-42eb-9d1e-6b061aed0c19',1,NULL,NULL,NULL,NULL),(1343,1828,'Help Name That Font',NULL,'<p>So, they just painted big letters and numbers in my parking garage at work. Can you name that font? With the numbers being below the baseline of the text, it makes me think it’s Georgia. Anyone else have a guess?</p>\n<p><img src=\"//assets.trevor-davis.com/uploads/images/content/2008/02/parking-garage.jpg\" alt=\"Parking Garage Font\" class=\"frame\" height=\"462\" width=\"462\" /></p>',NULL,1773,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','789a41a8-23b6-4c5e-b7ed-9113971cd2dc',1,NULL,NULL,NULL,NULL),(1344,1829,'Gracious Spam',NULL,'<p>I’m glad that some of my spam comments appreciate the time that I put into my site:</p>\n\n<blockquote>\n<p>You have an outstanding good and well structured site. I enjoyed browsing through it.T</p>\n</blockquote>\n\n<blockquote>\n<p>Good site - you\'re a pretty good writer.u</p>\n</blockquote>\n\n<blockquote>\n<p>Thanks bro! Real good work!i</p>\n</blockquote>\n\n<blockquote>\n<p>Good site, thanks!</p>\n</blockquote>\n\n<blockquote>\n<p>simple but quality, thanks!</p>\n</blockquote>\n\n<p>I don’t even know how Akismet figures out that those are spam and not real comments.</p>',NULL,1774,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','f9cd8b12-c774-415a-b35b-ca1d33833729',1,NULL,NULL,NULL,NULL),(1345,1830,'Weekly Link Round-Up #20',NULL,'<p>Wow, I can’t believe I have written these weekly link round-up 20 times. The time sure has flown by.</p>\n\n<ul><li><a href=\"http://www.smashingmagazine.com/2008/02/26/navigation-menus-trends-and-examples/\">Navigation Menus: Trends and Examples</a>\n<p>Nice discussion of navigation trends, with lost of examples. I really like the first trend: <strong>Trend toward “speaking” block navigation</strong>. I may consider doing something like that in the next redesign.</p>\n</li>\n\n<li><a href=\"http://www.thinkvitamin.com/features/design/how-to-recreate-silverbacks-parallax\">How to recreate Silverback’s Parallax</a>\n<p>Tutorial explaining the creative use of PNGs on the <a href=\"http://silverbackapp.com/\">Silverback</a> site.</p>\n</li>\n\n<li><a href=\"http://freelanceswitch.com/clients/10-phrases-every-freelancer-should-kick-out-of-their-vocabulary/\">10 Phrases Every Freelancer Should Kick-Out of Their Vocabulary</a>\n<p>The title speaks for itself. Some good stuff to remember.</p>\n</li>\n</ul><ul><li><a href=\"http://ilovetypography.com/2008/02/28/a-guide-to-web-typography/\">A Guide to Web Typography</a>\n<p>Awesome tutorial about how to choose web typography: Contrast, Size, Hierarchy, and Space</p>\n</li>\n\n<li><a href=\"http://www.webdesignerwall.com/tutorials/jquery-tutorials-for-designers/\">jQuery Tutorials for Designers</a>\n<p>I am a big advocate of jQuery. Nice collection of 10 simple tutorials.</p>\n</li>\n\n<li><a href=\"http://cameronmoll.com/archives/2008/02/extensible_css_interface_the_foundation/\">Extensible CSS Interface I: The Foundation</a>\n<p>Part I of the IV part series. Good start, I am interested to see the rest.</p>\n</li>\n</ul>',NULL,1775,NULL,'2019-10-09 16:41:11','2019-10-09 16:41:11','d7e64595-c4c3-47c9-b740-a8c570684804',1,NULL,NULL,NULL,NULL),(1346,1831,'PNGs, the AlphaImageLoader Filter, and hasLayout',NULL,'<p>I recently wrote an article discussing <a href=\"//trevor-davis.com/blog/tutorial/the-ultimate-png-guide/\">how to use PNGs effectively in all browsers (including IE6)</a>. For work, I had to slice a site that used a lot of PNGs, and I ran into something that I had never encountered before.</p>\n\n<p>I was trying to use the Microsoft proprietary <a href=\"http://msdn2.microsoft.com/en-us/library/ms532969(VS.85).aspx\">AlphaImageLoader Filter</a> because they background images were PNGs that were going to scale to fit the background. The <code>div</code> that I was setting the PNG as the background to, did not have a height or width specified. Apparently, to use the AlphaImageLoader property, the element that you are using it on must have another Microsoft propriety property: <a href=\"http://msdn2.microsoft.com/en-us/library/ms533776.aspx\">hasLayout</a>.</p>\n\n<p>From the Microsoft Developer Network Site:</p>\n<blockquote><p>The object that the filter is applied to must have layout before the filter effect will display. You can give the object layout by setting the <strong>height</strong> or <strong>width</strong> property, setting the position property to <strong>absolute</strong>.</p>\n</blockquote>\n\n<h2 class=\"replaceHeadline\">An Example</h2>\n<p>I am going to use <a href=\"//assets.trevor-davis.com/play/pngs/example-4/\">the same working example</a> I used in my <a href=\"//trevor-davis.com/blog/tutorial/the-ultimate-png-guide/\">Ultimate PNG Guide</a>. But this time, I am going to add the following to the head of the page:</p>\n<div class=\"codeblock\"><code>\n&lt;style type=\"text/css\"&gt;<br />div#container div.inner { width: auto; }<br />&lt;/style&gt; \n\n</code></div>\n\n<p>Obviously not how you would want to really add that style to the page, but I am just trying to prove that in IE6, to use a PNG with the AlphaImageLoader Filter applied, the element must <strong>have layout</strong>. <a href=\"//assets.trevor-davis.com/play/pngs/pngs-and-haslayout/\">So here is the new page, which should be broken in IE6.</a></p>\n\n<p>So there you have it, remember to give elements <strong>layout</strong> if you are going to use the <strong>AlphaImageLoader Filter</strong>.</p>',NULL,1776,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','9cfeb844-06d6-4359-8bd8-301e6686a2c9',1,NULL,NULL,NULL,NULL),(1347,1832,'Weekly Link Round-Up #21',NULL,'<p>It was a busy week at work this week, but a good busy. I was slicing a site, and implementing it into Wordpress. It’s going to be a good edition to <a href=\"//trevor-davis.com/work/\">my portfolio</a> when it’s done. So, enough of the small talk, this is what I found interesting this week:</p>\n\n<ul><li><a href=\"http://blogs.msdn.com/ie/archive/2008/03/03/microsoft-s-interoperability-principles-and-ie8.aspx\">Microsoft’s Interoperability Principles and IE8</a>\n<p>We awoke on Monday morning to very interesting news:</p>\n<blockquote><p>We’ve decided that IE8 will, by default, interpret web content in the most standards compliant way it can. This decision is a change from what we’ve posted previously.</p></blockquote>\n</li>\n\n<li><a href=\"http://www.smashingmagazine.com/2008/03/04/creating-a-successful-online-portfolio/\">Creating A Successful Online Portfolio</a>\n<p>Great article discussing the common mistakes in online portfolios and 12 Principles of Effective Portfolio Design.</p>\n</li>\n\n<li><a href=\"http://cameronmoll.com/archives/2008/03/extensible_css_interface_css_selectors_jquery/\">Extensible CSS Interface II: CSS Selectors &amp; jQuery</a>\n<p>The second article in the four-part series, “The Highly Extensible CSS Interface”. This one touches on some <a href=\"//trevor-davis.com/blog/tutorial/ajax-forms-with-jquery/\">jQuery</a> and <a href=\"//trevor-davis.com/blog/tutorial/css-attribute-selectors-explained/\">attribute selectors</a>.</p>\n</li>\n</ul><ul><li><a href=\"http://alistapart.com/issues/254\">A List Apart: Issue 254</a>\n<p>Two great articles on design: <a href=\"http://alistapart.com/articles/oncreativity\">On Creativity</a> and <a href=\"http://alistapart.com/articles/designisinthedetails\">Design is in the Details</a>. I found both articles to be really interesting, especially since design is the area that I am trying to improve the most in.</p>\n</li>\n\n<li><a href=\"http://www.456bereastreet.com/archive/200803/first_impressions_of_internet_explorer_8_beta_1/\">First impressions of Internet Explorer 8 Beta 1</a>\n<p>That’s right everyone, <a href=\"http://www.microsoft.com/windows/products/winfamily/ie/ie8/getitnow.mspx\">IE8 Beta 1 is available for download</a>. Roger gives a nice round-up of it’s improvements and it’s shortcomings (so far).</p>\n</li>\n\n<li><a href=\"http://www.thinkvitamin.com/features/css/coding-for-the-mobile-web\">Coding for the mobile web</a>\n<p>Chris Mills from Opera discusses the do’s and don’ts of coding for the mobile web. I still think that it’s not really going to explode until we see more interfaces like the iPhone, and until cell phone carriers reduce the price of their unlimited data plans. But still, some good tips for the time being.</p>\n</li>\n\n<li><a href=\"http://www.37signals.com/svn/posts/893-workplace-experiments\">Workplace Experiments</a>\n<p>My co-worker flagged this to me. Four day work weeks? Freedom to buy a book or software whenever? That sounds amazing.</p>\n</li>\n</ul><p>Oh and in other news, my brand spanking new 15\" MacBook Pro should be arriving Monday. The anticipation is killing me. I didn’t know they ship from China!</p>',NULL,1777,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','b3ff7c5a-5c35-4037-a16b-302f60ed0efb',1,NULL,NULL,NULL,NULL),(1348,1833,'Use jQuery to Open All External Links in a New Window',NULL,'<p>In a recent project at work, I had completed implementing a site, and the client was reviewing it. Their company decided that they wanted all external links to open in a new window. This is not a practice that I really like, and others agree:</p>\n\n<blockquote>\n<p>Opening up new browser windows is like a vacuum cleaner sales person who starts a visit by emptying an ash tray on the customer\'s carpet. Don\'t pollute my screen with any more windows, thanks (particularly since current operating systems have miserable window management). If I want a new window, I will open it myself!</p>\n<p><cite>Jakob Nielsen: <a href=\"http://www.useit.com/alertbox/990530.html\">The Top Ten Web Design Mistakes of 1999</a></cite></p>\n</blockquote>\n\n<p>Breaking the back button is never a good thing. But this article is not about that.</p>\n\n<p>Back to the site I was implementing. I was really not interested in adding <code>target=\"_blank\"</code> to every single external link, so I came up with a better solution…</p>\n\n<h2 class=\"replaceHeadline\">The Solution</h2>\n<p>The site was already using jQuery for other functions, so I figured that I should just use some of its powerfulness to make my life easier.</p>\n\n<p>With a couple lines of code, I solved my problem:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\"a[@href^=\'http\']\").attr(\'target\',\'_blank\');<br />}); \n\n</code></div>\n\n<p><a href=\"//assets.trevor-davis.com/play/jquery-open-external-links-in-new-window/\">Check out the demo to see the results.</a></p>\n\n<h3 class=\"replaceHeadline\">Explanation</h3>\n<p>If you know anything about <a href=\"//trevor-davis.com/blog/tutorial/css-attribute-selectors-explained/\">attribute selectors</a>, that should look familiar to you. Basically, it is saying, apply the attribute <code>target=\"_blank\"</code> to all links that begin with <strong>http</strong>.</p>\n\n<p>Really easy, really powerful, problem solved. Some may say it almost might be preferable to browse the site with JavaScript disabled so that the external links would just open in the same window. But that debate is for another time.</p>',NULL,1778,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','b88d0fb9-c246-4706-b0ef-7a57b57dfc25',1,NULL,NULL,NULL,NULL),(1349,1834,'Weekly Link Round-Up #22',NULL,'<p>Well, I didn’t get much sleep this week, because I spent the entire week staying up late playing with my new MacBook Pro. It’s amazing. Best purchase ever. When I wasn’t playing, this is what I found interesting this week:</p>\n\n\n<ul><li><a href=\"http://reference.sitepoint.com/html\">HTML Reference</a>\n<p>Nice reference of all of the HTML elements, attributes, deprecated attributes, etc. Nothing new, but just good for reference.</p>\n</li>\n\n<li><a href=\"http://www.smashingmagazine.com/2008/03/11/the-secrets-of-grunge-design/\">The Secrets Of Grunge Design</a>\n<p>I love this style, to an extent. I want to incorporate some small touches into the next redesign.</p>\n</li>\n\n<li><a href=\"http://ilovetypography.com/2008/03/12/newzald-moleskine-to-market/\">Newzald: From Moleskine to Market</a>\n<p>Wow, that is quite a process. I think I’ll let the experts create the fonts, and I will just enjoy the fruits of their labor.</p>\n</li>\n</ul><ul><li><a href=\"http://ma.tt/2008/03/wordpress-is-open-source/\">WordPress is Open Source</a>\n<p>Uh oh, Wordpress vs. Movable Type drama. I’ll tell you what: switching from Movable Type to Wordpress was the best decision ever. I think Wordpress has a much brighter future.</p>\n</li>\n\n<li><a href=\"http://www.hulu.com/\">Hulu</a>\n<p>So after being in beta for a while, Hulu finally went public. I must say, I was really impressed. Plus, it gives me a chance to catch up on my new obsession: <a href=\"http://www.hulu.com/30-rock\">30 Rock</a></p>\n</li>\n\n<li><a href=\"http://ajaxian.com/archives/firefox-3-memory-usage\">Firefox 3 Memory Usage</a>\n<p>This looks really promising. I know on a PC, Firefox is a memory hog, but I haven’t noticed it since I’ve been on my Mac.</p>\n</li>\n\n<li><a href=\"http://www.adaptivepath.com/blog/2008/03/13/apples-design-process-through-a-keyhole/\">Apple’s Design Process Through a Keyhole</a>\n<p>Holy crap, Apple designs 10 mock ups before narrowing it down!? Maybe that’s why their products are almost always awesome. That design process it pretty intense.</p>\n</li>\n</ul>',NULL,1779,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','ecff442c-e58f-43b2-9773-233d8c29b0f0',1,NULL,NULL,NULL,NULL),(1350,1835,'Sometimes, it’s the Small Things that Count',NULL,'<p>Last fall, I bought a 2008 Nissan Altima. I absolutely love it, and I chose it over other cars like the Accord and Camry because of the way it drove. But, there is one thing that really bugs me: <strong>the steering wheel controls</strong>. More particularly, the volume and next/previous track controls.</p>\n\n<p><img src=\"//assets.trevor-davis.com/uploads/images/content/2008/03/altima-controls.jpg\" alt=\"Nissan Altima Steering Wheel Controls\" align=\"right\" class=\"imageLeft pullLeft frame\" />As I wrote in <a href=\"//trevor-davis.com/blog/web/the-importance-of-testing/\">The Importance of Testing</a>, I feel like some problems with products could be resolved pretty easily with just a little testing. The steering wheel controls on the 2008 Nissan Altima are no different.</p>\n\n<p>For some reason, Nissan decided to have the volume, which you turn <strong>up</strong> and <strong>down</strong>, be a horizontal control. So basically, if you want to turn the volume up, you hit the control to the right. If you want to turn the volume down, you hit it to the left.</p>\n\n<p>Also strange, when you want to go to the next song, you hit the control up, and to go to the previous song, you hit the control down.</p>\n\n<p>Is that just completely opposite or what? It reminds me of the Seinfeld episode: <a href=\"http://www.imdb.com/title/tt0697744/\">The Opposite</a></p>\n\n<blockquote>\n<p><strong>George:</strong> Hey, I just found twenty dollars! I tell you this, something is happening in my life. I did this opposite thing last night. Up was down, black was white, good was —</p>\n\n<p><strong>Jerry:</strong> Bad.</p>\n\n<p><strong>George:</strong> Day was —</p>\n\n<p><strong>Elaine:</strong> Night.</p>\n<p class=\"citation\"><cite>— <a href=\"http://www.imdb.com/title/tt0697744/\">Seinfeld: The Opposite</a></cite></p>\n</blockquote>\n\n<p>Every time I am about to adjust the volume level or change the song, it takes me that extra second to think about it. Maybe it’s because I’m not used to it yet, but if the volume were up and down, and the change track control were left and right, it would be what I expect and wouldn’t take that extra time to process.</p>\n\n<p>So to relate it to the web, <strong>sometimes, it’s the small things that count</strong>. Think about conventions that exist in everyday life and see if they can be applied to the web as well. <a href=\"http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758/ref=pd_bbs_1?ie=UTF8&amp;s=books&amp;qid=1205898086&amp;sr=8-1\">Don’t Make Me Think</a>.</p>',NULL,1780,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','d0950268-fb90-4183-8304-4abf04331f4a',1,NULL,NULL,NULL,NULL),(1351,1836,'Weekly Link Round-Up #23',NULL,'<p>Wow, crazy week at work. I felt like everything I had to do had a deadline of <strong>immediately</strong>. I’m so glad it’s the weekend, and I can watch some college basketball. So, here are a few interesting things from this week:</p>\n\n<ul><li><a href=\"http://snook.ca/archives/other/maintain_personal_brand/\">Maintaining your Personal Brand Online</a>\n<p>Some nice tips to create and maintain your person “brand”. I’ve been trying to do some of these things recently.</p>\n</li>\n\n<li><a href=\"http://www.techcrunch.com/2008/03/17/charlie-rose-face-plants-to-save-his-macbook-air/\">Charlie Rose Face Plants To Save His MacBook Air</a>\n<p>I would definitely do the same to save my MacBook Pro.</p>\n</li>\n\n<li><a href=\"http://wordpress.org/development/2008/03/25-sneak-peek/\">WordPress: 2.5 Sneak Peak</a>\n<p>Can they release this version already? It looks like it has some great improvements. Great work by <a href=\"http://happycog.com/\">Happy Cog</a>.</p>\n</li>\n</ul><ul><li><a href=\"http://www.formfiftyfive.com/?p=1059\">Youtube Quality</a>\n<p>So you can add an extra parameter to the query string and get higher quality videos on <a href=\"http://youtube.com/\">YouTube</a>? That’s awesome. How did they find that out?</p>\n</li>\n\n<li><a href=\"http://www.andyrutledge.com/styling-text-links.php\"><em>Why and How</em>: Styling Text Links</a>\n<p>Very good article discussing how to style links more effectively. When you think about it, <strong>links are the most important part of the web</strong>.</p>\n</li>\n\n<li><a href=\"http://cameronmoll.com/archives/2008/03/extensible_css_interface_adding_ajax/\">Extensible CSS Interface III: Adding Ajax Interactivity</a>\n<p>This time Cameron shows how to add in some simple AJAX functionality. I’m loving this series of articles.</p>\n</li>\n</ul>',NULL,1781,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','0d138196-1d14-449c-a38c-d66bcf51e16b',1,NULL,NULL,NULL,NULL),(1352,1837,'Using Web Development to Make a Difference',NULL,'<p>During my senior year of college, I wasn’t quite sure what I wanted to do with my life, so I applied to some graduate programs. I knew one thing for sure: <strong>I wanted to make a difference</strong>. Thankfully, I was rejected from both graduate programs I applied to.</p>\n\n<p>While I may not be making a difference in the Army or anything like that, I think that there are definitely ways to make a difference using web development.</p>\n\n<p>At my company, we are broken up into 4 teams, each of which has a pro-bono client:</p>\n<ul><li><a href=\"http://www.doorwaysva.org/\">Doorways</a></li>\n<li><a href=\"http://www.weaveincorp.org/\">WEAVE: Women Empowered Against Violence</a></li>\n<li><a href=\"http://www.melanomafund.org/\">Timothy Aycock Melanoma Research Foundation</a></li>\n<li><a href=\"http://www.warl.org/\">The Washington Animal Rescue League</a></li>\n</ul><p>While there are times that we have to tell our pro-bono clients that we are simply too busy to fill their needs, we always try and get to them as quickly as possible.\n\n</p><p>A few weeks ago, some of the employees from Doorways came in to talk to us more about their organization. It was pretty powerful to hear what they had to say. To think that these people sacrifice so much time for the betterment of others is amazing to me.</p>\n\n<p>I think it is extremely important for those of us who can to give back to those who are less fortunate. Whether it is donating time to a local non-profit to help them establish their web presence or just to provide some consulting time, it all will help.</p>\n\n<p>Last year, I donated time to slice and integrate the <a href=\"//trevor-davis.com/work/worldwide-breast-cancer/\">Worldwide Breast Cancer</a> site into WordPress, and I encourage everyone to try and find something to donate their time or services to.</p>\n\n<p><strong>Make a difference.</strong></p>',NULL,1782,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','b0210942-7e1f-48ac-8f05-6d1dcf6a2150',1,NULL,NULL,NULL,NULL);
INSERT INTO `craft_content` VALUES (1353,1838,'Weekly Link Round-Up #24',NULL,'<p>So many late nights this week watching basketball and working on a freelance project. Lots of good things to read this week:</p>\n\n<ul><li><a href=\"http://www.cssglobe.com/post/1446/5-most-common-web-standards-misconceptions\">5 Most Common Web Standards Misconceptions</a>\n<p>I love the first item: <strong>Web Standards = Validation</strong>. Just because your site is valid, that doesn’t mean it’s not crap.</p>\n</li>\n\n<li><a href=\"http://psdtuts.com/articles/core-principles-for-rapidly-attaining-creative-flow/\">Core Principles for Rapidly Attaining Creative Flow</a>\n<p>Some simple techniques for achieving “a state of focused concentration”. I find it hard to stay focused some times; I need to try some of these.</p>\n</li>\n\n<li><a href=\"http://www.alistapart.com/issues/255\">A List Apart: Issue 255</a>\n<p>As usual, A List Apart delivers two solid articles: <a href=\"http://www.alistapart.com/articles/findabilityorphan\">Findability, Orphan of the Web Design Industry</a> and <a href=\"http://www.alistapart.com/articles/signupforms\">Sign Up Forms Must Die</a>. While I don’t really agree with the thought that all Sign Up Forms Must Die, I think Luke Wroblewski brings up a lot of interesting points.</p>\n</li>\n</ul><ul><li><a href=\"http://www.techcrunch.com/2008/03/24/the-secret-to-googles-success-free-beer-and-sushi/\">The Secret To Google’s Success: Free Beer And Sushi</a>\n<p>So you’re telling me that I just have to tell my job that I will work better with beer and sushi? Yeah, I’m sure that would fly.</p>\n</li>\n\n<li><a href=\"http://www.simplebits.com/notebook/2008/03/25/ie8.html\">Decision or Bug?</a>\n<p>Can you imagine actually being able to use pixels for font size? I guess we can dream.</p>\n</li>\n\n<li><a href=\"http://www.smashingmagazine.com/2008/03/26/grid-based-design-six-creative-column-techniques/\">Grid-Based Design: Six Creative Column Techniques</a>\n<p>Six creative techniques for making your grid design extra special.</p>\n</li>\n\n<li><a href=\"http://www.digital-web.com/articles/ten_tips_for_email_campaigns/\">10 Tips For Your First Email Campaign</a>\n<p>Ugh, just thinking about HTML emails makes me want to cry. At least this article discusses the non-design factors when preparing a campaign.</p>\n</li>\n\n<li><a href=\"http://www.airbagindustries.com/archives/airbag/farnsworth.php\">Farnsworth.</a>\n<p>Wow, they call all of their clients every week? That’s pretty awesome.</p>\n</li>\n\n<li><a href=\"http://www.thinkvitamin.com/features/webapps/the-thrill-of-launch\">The thrill of launch</a>\n<p>This is a great article for two reasons:</p>\n<ol><li>It was really interesting to read about the hectic day that <a href=\"http://clickpass.com/\">Clickpass</a> had leading up to their launch. (I know the feeling)</li>\n<li>I think that OpenID is going to be really important this year. With services like Clickpass making it easier for developers to add OpenID to their sites, I am hoping that OpenID will really take off this year.</li>\n</ol></li>\n</ul>',NULL,1783,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','68a5c6f3-e84a-4a90-8d08-a4f21d21a02d',1,NULL,NULL,NULL,NULL),(1354,1839,'Upgraded to WordPress 2.5',NULL,'<p>I just upgraded to <a href=\"http://wordpress.org/development/2008/03/wordpress-25-brecker/\">WordPress 2.5</a> tonight, and I must say it’s pretty awesome.</p>\n\n<p>The automatic upgrade of plugins is amazing, and I really like the new organization of the admin area.</p>\n\n<p>Well, I’m sure I’ll have a lot more to say about it once I’ve used it more. Kudos to <a href=\"http://happycog.com/\">Happy Cog</a> and <a href=\"http://automattic.com/\">Automattic</a> for this release.</p>',NULL,1784,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','4f19faa3-6d13-494b-a6e3-152670ccf80c',1,NULL,NULL,NULL,NULL),(1355,1840,'The 6 Most Important CSS Techniques You Need To Know',NULL,'<p>I thought I would give a quick tutorial, with examples, of the 6 most important CSS techniques that I think you need to know:</p>\n<ol><li>Get a Consistent Base Font Size</li>\n<li>Get Consistent Margins</li>\n<li>Set a Float to Clear a Float</li>\n<li>Image Replacement</li>\n<li>Faux Columns</li>\n<li>CSS Sprites</li>\n</ol><h2 class=\"replaceHeadline\">1. Get a Consistent Base Font Size</h2>\n\n<div class=\"codeblock\"><code>\nbody { font-size: 62.5%; } \n\n</code></div>\n\n<p>Until IE finally supports the resizing of text in pixels, this is the best technique to gain full control over your font sizes. By setting the body <code>font-size</code> to 62.5%, that will set your font size to 10 pixels. That way, 1em is equal to 10 pixels.</p>\n\n<p>Although I typically then set my container <code>font-size</code> to 1.2em, which in turn sets the <code>font-size</code> to 12 pixels. But still, then you know that 1em is equal to 12 pixels.</p>\n\n<p><a href=\"//assets.trevor-davis.com/play/important-css-techniques/base-font-size/\">See the example »</a></p>\n\n<h2 class=\"replaceHeadline\">2. Get Consistent Margins</h2>\n<p>There are <a href=\"http://meyerweb.com/eric/tools/css/reset/\">some great CSS resets</a> out there, but I usually don’t need one that goes so far. I like to just remove the margin and padding from every element.</p>\n\n<div class=\"codeblock\"><code>\nhtml, body, div, h1, h2, h3, h4, h5, h6, ul, ol, dl, li, dt, dd, p, blockquote, pre, form, fieldset, table, th, td { margin: 0; padding: 0; } \n\n</code></div>\n\n<p>Then, you can set the margins that you want accordingly.</p>\n\n<p><a href=\"//assets.trevor-davis.com/play/important-css-techniques/get-consistent-margins/\">See the example »</a></p>\n\n<h2 class=\"replaceHeadline\">3. Set a Float to Clear a Float</h2>\n\n<p>Floating is probably one of the most important things to understand with CSS, but knowing how to clear floats is necessary too. All you need to remember is: <strong>Set a Float to Clear a Float</strong>.</p>\n\n<p>I have created a <a href=\"//assets.trevor-davis.com/play/important-css-techniques/set-a-float-to-clear-a-float/\">simple page with two floating columns next to each other</a>. You will notice in the example that the grey background does not contain the floating columns. So, the easiest thing to do is to <a href=\"//assets.trevor-davis.com/play/important-css-techniques/set-a-float-to-clear-a-float/set-a-float-to-clear-a-float-fixed/\">set the containing element to float</a>. But now, you will see that the container background doesn’t contain the content area.</p>\n\n<p>Since the container has <code>margin: 0 auto</code>, we do not want to float it because it will move it to whichever side we float it. So another way to clear the float, is to <a href=\"//assets.trevor-davis.com/play/important-css-techniques/set-a-float-to-clear-a-float/set-a-float-to-clear-a-float-fixed-more/\">insert a clearing element</a>. In this case, I just use an empty <code>div</code> set to <code>clear: both</code>. Now, there are other ways to <a href=\"http://www.positioniseverything.net/easyclearing.html\">clear a float without markup</a>, but I have noticed some inconsistencies with that technique, so I just sacrifice an empty <code>div</code>.</p>\n\n<h2 class=\"replaceHeadline\">4. Image Replacement</h2>\n<p>Sure, <a href=\"http://www.mezzoblue.com/tests/revised-image-replacement/\">there are a lot of different image replacement techniques</a>. But, I think that you get to most benefits from this technique. I also discussed this technique in a previous article, <a href=\"//trevor-davis.com/blog/tutorial/improved-navigation-image-replacement/\">Improved Navigation Image Replacement</a></p>\n\n<h3 class=\"replaceHeadline\">The Markup</h3>\n<div class=\"codeblock\"><code>\n&lt;h1 id=\"logo\"&gt;Company Name&lt;span&gt;&lt;/span&gt;&lt;/h1&gt; \n\n</code></div>\n\n<h3 class=\"replaceHeadline\">The CSS</h3>\n<div class=\"codeblock\"><code>\nh1#logo {<br /> height: 110px;<br /> overflow: hidden;<br /> position: relative;<br /> width: 560px;<br />}<br />h1#logo span {<br /> background: url(/images/content/2008/03/logo.gif) no-repeat;<br /> display: block;<br /> height: 100%;<br /> left: 0;<br /> position: absolute;<br /> top: 0;<br /> width: 100%;<br />} \n\n</code></div>\n\n<p>Basically, all we are doing is absolutely positioning an image over top of the HTML text.</p>\n\n<p>The reason that I like this technique is because even when images are disabled, the text is still visible. Of course this means that you cannot use a transparent image to lay over top of the text, so it will not work in all situations.</p>\n\n<p><a href=\"//assets.trevor-davis.com/play/important-css-techniques/image-replacement/\">See the example »</a></p>\n\n<h2 class=\"replaceHeadline\">5. Faux Columns</h2>\n\n<p>It is very common in layouts to have 2 columns next to each other, with one column having a background color, and the other column just being white. Since the columns will almost never have the same amount of content in them, the easiest way to fake this, is to have a <strong>1px tall background image</strong> being repeated vertically in the containing element of the 2 columns.</p>\n\n<h3 class=\"replaceHeadline\">The Markup</h3>\n<div class=\"codeblock\"><code>\n&lt;div id=\"container\"&gt;<br /> &lt;div id=\"primaryContent\"&gt;<br />  &lt;h1&gt;Primary Column&lt;/h1&gt;<br />  &lt;p&gt;&amp;hellip;&lt;/p&gt;<br /> &lt;/div&gt;<br /> &lt;div id=\"secondaryContent\"&gt;<br />  &lt;h2&gt;Secondary Column&lt;/h2&gt;<br />  &lt;p&gt;&amp;hellip;&lt;/p&gt;<br /> &lt;/div&gt;<br /> &lt;div class=\"clearing\"&gt;&lt;/div&gt;<br />&lt;/div&gt; \n\n</code></div>\n\n<h3 class=\"replaceHeadline\">The CSS</h3> \n<div class=\"codeblock\"><code>\ndiv#container { <br /> background: url(/images/content/2008/03/content-bg.gif) repeat-y top right;<br /> padding: 10px 0;<br /> width: 640px;<br />}<br />div#primaryContent { float: left; padding: 0 10px; width: 400px; }<br />div#secondaryContent { float: right; padding: 0 10px; width: 200px; } \n\n</code></div>\n\n<p>Pretty simple: a containing element, 2 floating columns, and a clearing element so that the containing element will contain the floating columns (as noted in the <strong>Set a Float to Clear a Float</strong> technique above).</p>\n\n<p><a href=\"//assets.trevor-davis.com/play/important-css-techniques/faux-columns/\">See the example »</a></p>\n\n<h2>6. CSS Sprites</h2>\n<p>CSS sprites is the technique of combing images to lessen the number of calls that need to be made to the server. Then you just shift the position of the background image to view the correct part of the image. May sound complicated, but it just takes a little math. <em>Note: In both of these examples, I am using the <strong>Image Replacement</strong> technique discussed above.</em></p>\n\n<h3 class=\"replaceHeadline\">Example #1</h3>\n<p>For this example, we are just going to have one download link that we want to replace with a nice graphic. Then, on hover, we want to change the image.</p>\n\n<h4 class=\"replaceHeadline\">The Markup</h4>\n<div class=\"codeblock\"><code>\n&lt;a href=\"#\" id=\"download\"&gt;Download Now&lt;span&gt;&lt;/span&gt;&lt;/a&gt; \n\n</code></div>\n\n<h4 class=\"replaceHeadline\">The CSS</h4>\n<div class=\"codeblock\"><code>\na#download { <br /> display: block; <br /> height: 75px; <br /> overflow: hidden; <br /> position: relative; <br /> width: 150px; <br />}<br />a#download span { <br /> background: url(/images/content/2008/03/download.gif) no-repeat; <br /> display: block; <br /> height: 100%; <br /> left: 0; <br /> position: absolute; <br /> top: 0; <br /> width: 100%;<br />}<br />a#download:hover span { background-position: 0 -75px; } \n\n</code></div>\n\n<p>As you can see from the code, on hover, we shift the position of the background image to view a different part of the image.</p>\n\n<p>Oh, and also, IE6 and 7 suck, so here are the styles we are serving to them:</p>\n\n<h5 class=\"replaceHeadline\">Styles to IE6 and IE7</h5>\n<div class=\"codeblock\"><code>\na#download { cursor: pointer; } \n\n</code></div>\n<p>I realize that we could just put that in the regular stylesheet since it has no affect on other browsers, but I prefer to move stuff like that to the IE only stylesheets.</p>\n\n<h5 class=\"replaceHeadline\">Styles to IE6 Only</h5>\n<div class=\"codeblock\"><code>\na#download:hover { background-position: 0 0; } \n\n</code></div>\n<p>This is some weird bug where the images shift when you hover, but then when you mouse-out, the images don’t shift back.</p>\n\n<p><a href=\"//assets.trevor-davis.com/play/important-css-techniques/css-sprites/\">See the example »</a></p>\n\n<h3 class=\"replaceHeadline\">Example #2</h3>\n<p>For the second example, we are going to use the CSS sprites technique, but for the entire navigation. This way, only one call needs to be made to the server to load the navigation. We are basically creating a CSS sprites matrix.</p>\n\n<h4 class=\"replaceHeadline\">The Markup</h4>\n<div class=\"codeblock\"><code>\n&lt;ul id=\"nav\"&gt;<br /> &lt;li id=\"home\"&gt;&lt;a href=\"#\"&gt;Home&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;<br /> &lt;li id=\"about\"&gt;&lt;a href=\"#\"&gt;About&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;<br /> &lt;li id=\"work\"&gt;&lt;a href=\"#\"&gt;Work&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;<br /> &lt;li id=\"play\"&gt;&lt;a href=\"#\"&gt;Play&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;<br /> &lt;li id=\"contact\"&gt;&lt;a href=\"#\"&gt;Contact&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;<br />&lt;/ul&gt; \n\n</code></div>\n\n<h4 class=\"replaceHeadline\">The CSS</h4>\n<div class=\"codeblock\"><code>\nul#nav { background: #91c6d5; float:left; list-style: none; width: 510px; }<br />ul#nav li { float: left; }<br />ul#nav a { color: #000; display: block; font-size: 1.5em; height: 38px; text-align: center; position: relative; }<br />ul#nav span { background: url(/images/content/2008/03/nav.gif) no-repeat; display: block; height: 100%; left: 0; position: absolute; top: 0; width: 100%; }<br /><br />ul#nav li#home a { width: 102px; }<br />ul#nav li#home a:hover span { background-position: 0 -38px; }<br /><br />ul#nav li#about a { width: 106px; }<br />ul#nav li#about span { background-position: -102px 0; }<br />ul#nav li#about a:hover span { background-position: -102px -38px; }<br /><br />ul#nav li#work a { width: 92px; }<br />ul#nav li#work span { background-position: -208px 0; }<br />ul#nav li#work a:hover span { background-position: -208px -38px; }<br /><br />ul#nav li#play a { width: 79px; }<br />ul#nav li#play span { background-position: -300px 0; }<br />ul#nav li#play a:hover span { background-position: -300px -38px; }<br /><br />ul#nav li#contact a { width: 131px; }<br />ul#nav li#contact span { background-position: -379px 0; }<br />ul#nav li#contact a:hover span { background-position: -379px -38px; } \n\n</code></div>\n\n<p>That may seem crazy, but it all makes sense if you take the time to think about it.</p>\n\n<p>Again, we have to serve some similar styles to IE6 and 7 from the previous example:</p>\n\n<h5 class=\"replaceHeadline\">Styles to IE6 and IE7</h5>\n<div class=\"codeblock\"><code>\nul#nav a { cursor: pointer; } \n\n</code></div>\n\n<h5 class=\"replaceHeadline\">Styles to IE6 Only</h5>\n<div class=\"codeblock\"><code>\nul#nav a:hover { background-position: 0 0; } \n\n</code></div>\n\n<p><a href=\"//assets.trevor-davis.com/play/important-css-techniques/css-sprites/\">See the example »</a></p>\n\n<h2 class=\"replaceHeadline\">In Conclusion</h2>\n<p>This list is definitely not exhaustive; they are just the 6 that I think are extremely important. <strong>What other techniques do you think are important to know?</strong></p>',NULL,1785,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','75cd768a-3567-48e7-b01c-1cc14eb3299a',1,NULL,NULL,NULL,NULL),(1356,1841,'Weekly Link Round-Up #25',NULL,'<p>It was crazy to see the amount of traffic I got for <a href=\"//trevor-davis.com/blog/tutorial/the-6-most-important-css-techniques-you-need-to-know/\">The 6 Most Important CSS Techniques You Need To Know</a>. Because of it, I stopped using <a href=\"http://novemberborn.net/sifr3\">sIFR</a> because of how much it was slowing down the page loading. I think it’s great for a few instances on a page, but if you use it for every heading, then you begin to get into trouble. Only a few interesting things I found this week:</p>\n\n<ul><li><a href=\"http://www.andyrutledge.com/non-commitment.php\">A Sense of Non-Commitment</a>\n<p>This article was very interesting considering I have a full-time job and do some freelancing on the side. I do have to get all of my freelance work cleared with my company though.</p>\n</li>\n<li><a href=\"http://cameronmoll.com/archives/2008/04/extensible_css_interface_testing_extensibility/\">Extensible CSS Interface IV: Testing for Extensibility</a>\n<p>The final part of the IV part series. This was a great series, combining numerous excellent techniques.</p>\n</li>\n<li><a href=\"http://www.darrenhoyt.com/2008/04/02/timthumb-php-script-released/\">TimThumb PHP Script Released</a>\n<p>Very nice PHP on-the-fly image resizing.</p>\n</li>\n<li><a href=\"http://ilovetypography.com/2008/04/04/on-choosing-type/\">On Choosing Type</a>\n<p>Great article discussing a few guidelines to follow when choosing type.</p>\n</li>\n</ul>',NULL,1786,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','851a579a-7536-48e3-8641-d4d98244917d',1,NULL,NULL,NULL,NULL),(1357,1842,'Why I’ll Be Going Naked Tomorrow',NULL,'<p>Tomorrow is the third annual <a href=\"http://naked.dustindiaz.com/\">CSS Naked Day</a>, and I will be participating, just as I did last year. Some people may wonder: why would you strip the design from your site for a whole day? Won’t you lose visitors?</p>\n\n<p>Well, you may, but you are helping to promote web standards. I take the time and effort to write well structured XHTML, so my site is perfectly usable without the design.</p>\n\n<p>I’ll be striping my design with the <a href=\"http://wordpress.org/extend/plugins/css-naked-day-noscript/\">CSS Naked Day WordPress Plugin</a>. I encourage everyone else to <strong>strip down and show off your <code>body</code></strong>.</p>',NULL,1787,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','f9fbbd13-f8d9-485e-80f2-025caa331a7f',1,NULL,NULL,NULL,NULL),(1358,1843,'Weekly Link Round-Up #26',NULL,'<p>It was a pretty busy week with regular work and freelance work, but here are a few things that I found interesting this week:</p>\n\n<ul><li><a href=\"http://bokardo.com/archives/you-didnt-come-here-from-google/\">You didn’t come here from Google</a>\n<p>Apparently Joshua Porter’s blog was flooded with spam links, and his blog was dropped from the Google index. This was the result of a well-known WordPress hack. This example shows the importance of staying on top of upgrading when a new version is released. On the other hand, it is really sad the society we live in. Do these hackers really gain that much from this crap? It’s really annoying.</p>\n</li>\n<li><a href=\"http://www.email-standards.org/gmail-appeal\">The 2008 Gmail Appeal</a>\n<p>Easily the best thing I saw this week. I think Outlook 2007 is more of a problem than Gmail, but really it is just HTML emails in general.</p>\n<p> </p>\n</li>\n</ul><ul><li><a href=\"http://www.alistapart.com/issues/256\">A List Apart: Issue 256</a>\n<p>Interesting issue this week from A List Apart. Two articles about adding some non-textual visualizations to your sites. First, in <a href=\"http://www.alistapart.com/articles/accessibledatavisualization\">Accessible Data Visualization with Web Standards</a>, “Wilson Miner demonstrates three techniques for incorporating data visualization into standards-based navigation patterns”. Next, in <a href=\"http://www.alistapart.com/articles/takecontrolofyourmaps\">Take Control of Your Maps</a>, Paul Smith shows that we do not have to only rely on the Google Maps UI to create awesome mapping solutions.</p>\n</li>\n<li><a href=\"http://alphablogdesigns.com/2008/04/08/signs-obsessed-with-design/\">24 Checkpoint Signs You’re Obsessed with Web/Graphic Design</a>\n<p>Pretty funny list, even thought I am really not a designer.</p>\n</li>\n<li><a href=\"http://www.readwriteweb.com/archives/google_crawling_html_forms.php\">Googlebot Crawls Through HTML Forms</a>\n<p>It is going to be very interesting to see how this changes some of the stuff indexed. Although they do note that only forms submitted with the GET method will be crawled, which makes sense.</p>\n</li>\n</ul>',NULL,1788,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','ea8fc6ed-6568-4560-8bfe-11f07dddbfdc',1,NULL,NULL,NULL,NULL),(1359,1844,'Handling WordPress Trackbacks with jQuery',NULL,'<p>So after having a ton of trackbacks in a recent article, <a href=\"//trevor-davis.com/blog/tutorial/the-6-most-important-css-techniques-you-need-to-know/\">The 6 Most Important CSS Techniques You Need To Know</a>, I thought that it was kind of breaking up the flow of the comments.</p>\n\n<p>I didn’t necessarily want to completely remove them because I thought that some people might be interested in them. These are the steps that I want to take:</p>\n\n<ol><li>Assign a class to all trackbacks</li>\n<li>Hide them all with CSS</li>\n<li>Add a jQuery visibility toggle</li>\n</ol><h2>1) Assign a Class to All Trackbacks</h2>\n<p>In your <strong>comments.php</strong> theme file, find a line that looks like this:</p>\n<div class=\"codeblock\"><code>\n&lt;li id=\"comment-&lt;?php comment_ID() ?&gt;\"&gt; \n\n</code></div>\n<p>And replace it with this:</p>\n<div class=\"codeblock\"><code>\n&lt;li class=\"&lt;?php if(get_comment_type() != \'comment\') echo \'trackback\'; ?&gt;\" id=\"comment-&lt;?php comment_ID() ?&gt;\"&gt; \n\n</code></div>\n<h3>Explanation</h3>\n<p>The get_comment_type function returns either <strong>comment</strong>, <strong>trackback</strong>, or <strong>pingback</strong>. Since I want to hide everything except comments, I filter out anything that <strong>does not equal comment</strong>, so I assign a class of trackback to that list item.</p>\n\n<h2>2) Hide them All with CSS</h2>\n<p>Ok, easy enough, just add the following to your stylesheet:</p>\n<div class=\"codeblock\"><code>\nol.commentlist li.trackback { display: none; } \n\n</code></div>\n\n<p>That should be pretty self explanatory.</p>\n\n<h2>3) Add a jQuery Visibility Toggle</h2>\n<p>The logic of the JavaScript will be as follows:</p>\n<ol><li>Check to see if there are any list items with a class of trackback.</li>\n<li>Add a link to Show/Hide trackbacks.</li>\n<li>Add a click event to the Show/Hide trackback link.</li>\n<li>Update the text of the link accordingly.</li>\n</ol><p>First, let’s execute the JavaScript once the document is ready:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br />            <br />}); \n\n</code></div>\n\n<p>Next, let’s check to see if there are any elements with a class of trackback:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> if($(\'.trackback\').length &gt; 0) {<br /> <br /> }         <br />}); \n\n</code></div>\n\n<p>Next, if there are trackbacks on the page, insert a link to show trackbacks:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> if($(\'.trackback\').length &gt; 0) {<br />  $(\'#comments\').after(\'&lt;a href=\"#\" id=\"toggleTrackbacks\"&gt;(Show Trackbacks)&lt;/a&gt;\');<br /> }         <br />}); \n\n</code></div>\n\n<p>I am adding the show/hide trackback link after the heading with an id of <strong>comments</strong>.</p>\n\n<p>Finally, I want to add in the <strong>click</strong> event to the link, and toggle the text depending upon if the trackbacks are visible or not:\n</p><div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> if($(\'.trackback\').length &gt; 0) {<br />  $(\'#comments\').after(\'&lt;a href=\"#\" id=\"toggleTrackbacks\"&gt;(Show Trackbacks)&lt;/a&gt;\');<br />  $(\'#toggleTrackbacks\').click(function() {<br />   $(\'.trackback\').slideToggle(\'slow\');<br />   if($(\'#toggleTrackbacks\').text() == \'(Show Trackbacks)\') {<br />    $(\'#toggleTrackbacks\').text(\'(Hide Trackbacks)\');<br />   } else {<br />    $(\'#toggleTrackbacks\').text(\'(Show Trackbacks)\');<br />   }<br />   return false;<br />  });<br /> }         <br />}); \n\n</code></div>\n\n<p>So basically, I am adding the jQuery <strong>slideToggle</strong> effect when the show/hide trackbacks link is clicked. Then, if the text in the show/hide trackbacks link is <strong>Show Trackbacks</strong>, I change it to <strong>Hide Trackbacks</strong>, and the opposite when the text is Hide Trackbacks.</p>\n\n<p>I have grabbed some of the comments from <a href=\"//trevor-davis.com/blog/tutorial/the-ultimate-png-guide/\">The Ultimate PNG Guide</a> so you can <a href=\"//assets.trevor-davis.com/play/jquery-collapse-trackbacks/\">see a demo of this in action</a>.</p>\n\n<p>I love how simple jQuery is.</p>',NULL,1789,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','2f3e2be3-4b96-4314-8b74-1d0828fee72f',1,NULL,NULL,NULL,NULL),(1360,1845,'Creepy Critters CSS Off',NULL,'<p>I meant to post this a little while ago, but I participated in a <a href=\"http://cssoff.com/2008/04/05/april-5-2008-critters/\">CSS Off</a> about 2 weeks ago.</p>\n\n<p>The idea is: you get a PSD file, and you have 24 hours to slice it. <a href=\"//trevor-davis.com/critters/\">This was my entry.</a></p>\n\n<p>Looking back on it, I think there were some things I would have done differently, but I am pretty happy with my submission. I’m interested to see who wins.</p>\n\n<p>I look forward to the next one and encourage others to participate. Even if you don’t win, it’s good practice.</p>',NULL,1790,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','f0350830-09fd-494d-bfbe-65b3fa62b1ea',1,NULL,NULL,NULL,NULL),(1361,1846,'Weekly Link Round-Up #27',NULL,'<p>Busy week, both freelance wise and work wise. The good news is that the NBA playoffs are starting, so let’s all cheer for the Wizards. This is what I found interesting this week:</p>\n<ul><li><a href=\"http://ma.tt/2008/04/securityfocus-sql-injection-bogus/\">SecurityFocus SQL Injection Bogus</a>\n<p>So apparently Security Focus published a false report about a security hole in WordPress. It’s good to know how much WordPress stays on top of these security issues, as they become more and more prevalent. As Matt recommends, one of the most important things to do is to stay up to date with the WordPress updates.</p>\n</li>\n\n<li><a href=\"http://snook.ca/archives/html_and_css/no_css_reset/\">No CSS Reset</a>\n<p>This sparked an interesting discussing over on <a href=\"http://meyerweb.com/eric/thoughts/2008/04/17/crafting-ourselves/\">Eric Meyer’s blog</a>. Personally, I do not use a CSS reset. I do zero out the margin and padding on all block level elements, but not by using the universal selector. In the end, I think Eric makes a great point:</p>\n<blockquote>\n<p>So it’s no surprise that we, as a community, keep building and sharing solutions to problems we encounter. Discussions about the merits of those solutions in various situations are also no surprise. Indeed, they’re exactly the opposite: the surest and, to me, most hopeful sign that web design/development continues to mature as a profession, a discipline, and a craft. It’s evidence that we continue to challenge ourselves and each other to advance our skills, to keep learning better and better how better to do what we love so much.</p>\n<p><strong>I wouldn’t have it any other way.</strong></p>\n</blockquote>\n</li>\n</ul><ul><li><a href=\"http://www.smashingmagazine.com/2008/04/17/web-form-design-modern-solutions-and-creative-ideas/\">Web Form Design: Modern Solutions and Creative Ideas</a>\n<p>Nice collection of interesting forms. It is always nice to see people getting really creative with them. I especially like the one on <a href=\"http://o.rang.es/contact/\">Edward Pistachio’s site</a>, although it is not very usable.</p>\n</li>\n<li><a href=\"http://robgoodlatte.com/2008/04/18/passionless-pre-professionals/\">Passionless Pre-Professionals</a>\n<p>I think this is a huge issue with our society. Everyone’s mentality is to do what they can to get a job that will make them a lot of money, instead of what will make them happy. Thank god that I absolutely love working with the web.</p>\n</li>\n<li><a href=\"http://www.andyrutledge.com/calculating-hours.php\">Calculating Hours – the Client Factors</a>\n<p>A great article giving some guidelines on how to price a project. I really think that one good point that Andy makes is that sometimes, there are clients that you should just not accept projects from. The hard part is evaluating that early on.</p>\n</li>\n</ul>',NULL,1791,NULL,'2019-10-09 16:41:12','2019-10-09 16:41:12','53de48e2-5deb-4455-9a4e-53acab461cc7',1,NULL,NULL,NULL,NULL),(1362,1847,'Weekly Link Round-Up #28',NULL,'<p>Man am I happy it’s the weekend. Have been working on a project at work that has a real short deadline, so I’ve been busy. I’m looking forward to Sunday because I’m running a 10 mile race and going to the Wizards playoff game. There were a lot of interesting things that I found this week:</p>\n<ul><li><a href=\"http://alistapart.com/issues/257\">A List Apart: Issue 257</a>\n<p>I’ve heard a lot about Ruby on Rails, but I never really looked too much into it. After reading <a href=\"http://alistapart.com/articles/creatingmoreusinglesseffortwithrubyonrails\">Creating More Using Less Effort with Ruby on Rails</a> and <a href=\"http://alistapart.com/articles/gettingstartedwithrubyonrails\">Getting Started with Ruby on Rails</a>, it really makes me want to learn more about it. Obviously, I don’t think I will become a hardcore programmer, but I would like be able to work with it in the future.</p>\n</li>\n<li><a href=\"http://www.smashingmagazine.com/2008/04/23/5-principles-and-ideas-of-setting-type-on-the-web/\">5 Principles And Ideas Of Setting Type On The Web</a>\n<p>Nice set of guidelines and resources for working with type on the web.</p>\n</li>\n<li><a href=\"http://jeffcroft.com/blog/2008/apr/23/who-owns-javascript/\">But who owns Javascript?</a>\n<p>This is definitely an issue at my company. Is it front-end developers or back-end developers who should be doing the JavaScript? Personally, I think that front-end developers should handle all “presentational” JavaScript, and back-end developers should handle any JavaScript that is interacting with any data. Although, that line I think is somewhat flexible, as I have shown <a href=\"//trevor-davis.com/blog/tutorial/ajax-forms-with-jquery/\">how simple it is to create an AJAX form</a>.</p>\n</li>\n</ul><ul><li><a href=\"http://www.andyrutledge.com/criticism.php\">Criticism: Myths and Childishness</a>\n<p>I love how Andy doesn’t hold back. He just says it how it is. This is definitely something I’m starting to understand more and more as I get more experience.</p>\n</li>\n<li><a href=\"http://www.smashingmagazine.com/2008/04/24/5-more-principles-of-effective-web-design/\">Five More Principles Of Effective Web Design</a>\n<p>Some nice tips and resources here. These articles are really interesting to me right now as I am working on the next design for my site.</p>\n</li>\n<li><a href=\"http://www.sitepoint.com/blogs/2008/04/25/css-gradients-transforms-animations-and-masks/\">CSS Gradients, Transforms, Animations, and Masks</a>\n<p>The latest version of WebKit has added some pretty cool CSS properties. If only all browser makers would continue to advance their browser as fast as WebKit does, it would be a much better world on the web.</p>\n</li>\n<li><a href=\"http://psdtuts.com/designing-tutorials/working-within-limitations-to-achieve-great-designs/\">Working Within Limitations to Achieve Great Designs</a>\n<p>Some nice minimalist strategies for achieving great designs.</p>\n</li>\n</ul>',NULL,1792,NULL,'2019-10-09 16:41:13','2019-10-09 16:41:13','78a56986-c932-4428-95cc-52deec3a6d54',1,NULL,NULL,NULL,NULL),(1363,1848,'Weekly Link Round-Up #29',NULL,'<p>Got great news at work this week: a redesigned site that was supposed to launch on the 6th, is now getting pushed back to the 13th. Maybe I will have time in the coming week to take a few minutes to not feel stressed out and rushed. So in my limited free time this week, here are some things that I found interesting:</p>\n\n<ul><li><a href=\"http://psdtuts.com/interface-tutorials/create-a-sleek-high-end-web-design-from-scratch/\">Create a Sleek, High-End Web Design from Scratch</a>\n<p>This was a great article going step-by-step designing a website. I am really finding these design articles interesting since I am in the process of working on the next redesign for my site. There was also a partnering article, <a href=\"http://nettuts.com/site-builds/build-a-sleek-portfolio-site-from-scratch/\">Build a Sleek Portfolio Site from Scratch</a> that discussing the slicing of the site. Nothing ground breaking, but a nice step-by-step guide for a beginner.</p>\n</li>\n<li><a href=\"http://www.zeldman.com/2008/04/27/content-outsourcing-and-the-disappearing-personal-site/\">The vanishing personal site</a>\n<p>This is an interesting article discussing something that I have recently begun to see as well. Some people’s personal sites just have links to their accounts on the numerous social networking sites. The article even spurred an article from Six Apart: <a href=\"http://www.sixapart.com/blog/2008/04/hell_no_personal_sites_arent_d.html\">Hell no, personal sites aren’t dead!</a>. I don’t believe that personal sites are <strong>dead</strong>, but I agree with Zeldman’s comment that they are <strong>vanishing</strong>.</p>\n</li>\n<li><a href=\"http://veerle.duoh.com/blog/comments/starting_with_css_and_bug_fixing_tips/\">Starting with CSS and bug fixing tips</a>\n<p>This is a great resource for people just getting into web development. Veerle provides a bunch of links, recommended books, and strategies for fixing CSS bugs. Definitely will become a great starting point for a lot of people.</p>\n</li>\n</ul>',NULL,1793,NULL,'2019-10-09 16:41:13','2019-10-09 16:41:13','e23381bb-4724-4884-bf5d-50ffaffb5ac6',1,NULL,NULL,NULL,NULL),(1364,1849,'Set a Body Id Using PHP',NULL,'<p>One of the first things I do when I am creating the markup for a new site, is to set a body id. You may wonder what I mean when I say “set a body id”. What I mean is to dynamically check the url to figure out which section you are in. This tutorial will show how to do this dynamically using PHP, and also how to integrate it into WordPress.</p>\n\n<h2>Why Should I Set a Body Id?</h2>\n<p>There are plenty of reasons why you should, here are a few:</p>\n<ul><li>Maybe your design has different colors depending upon which section you are in. Instead of having to touch the markup, you can just modify the CSS depending upon the id on the <code>body</code>.</li>\n<li>You can control the current states for your navigation.</li>\n<li>Maybe the markup on your homepage is a little different than subpages, so instead of creating a different template, just stick in an if statement.</li>\n</ul><h2>Setting Up the Code</h2>\n<p>So typically, you setup your navigation to match your directory structure. Ex: Top level navigation is <strong>about</strong>, and there is a folder on the root called <strong>about</strong>. So the easiest thing to do, is just check the url and determine which section you are in. This is the code that sets the body id on my site:</p>\n\n<div class=\"codeblock\"><code>\n&lt;?php<br />function setBodyId() {<br />    $path = $_SERVER[\'REQUEST_URI\'];<br />    <br />    if(!isset($bodyId)) {<br />  if(eregi(\'^/about/\',$path) == 1) {<br />   $bodyId = \'about\';<br />  } else if(eregi(\'^/blog/\',$path) == 1) {<br />   $bodyId = \'blog\';<br />  } else if(eregi(\'^/contact/\',$path) == 1) {<br />   $bodyId = \'contact\';<br />  } else if(eregi(\'^/work/\',$path) == 1) {<br />   $bodyId = \'work\';<br />  } else if(eregi(\'^/play/\',$path) == 1) {<br />   $bodyId = \'play\';<br />  } else if ($path == \'\') {<br />   $bodyId = \'home\';<br />  } else {<br />   $bodyId = \'general\';<br />  }<br /> }<br />   <br />    return $bodyId;<br />}<br />?&gt; \n\n</code></div>\n\n<p>Sure, you could do this dynamically and pull in the top level folder from the url, but I have found there are too many situations that arise where you want multiple sections to have the same body id, or you want to set other variables section by section. So I stick with this method, and it has been successful.</p>\n\n<h2>My Example</h2>\n<p>My example is going to be a little different because it is in a subsection of my site. So here is the code I am using to control setting the body id in the example:</p>\n<div class=\"codeblock\"><code>\n&lt;?php<br />function exampleSetBodyId() {<br />    $path = $_SERVER[\'REQUEST_URI\'];<br />    <br />    if(!isset($bodyId)) {<br />  if(eregi(\'^/play/set-a-body-id/about/\',$path) == 1) {<br />   $bodyId = \'about\';<br />  } else if(eregi(\'^/play/set-a-body-id/blog/\',$path) == 1) {<br />   $bodyId = \'blog\';<br />  } else if(eregi(\'^/play/set-a-body-id/contact/\',$path) == 1) {<br />   $bodyId = \'contact\';<br />  } else if(eregi(\'^/play/set-a-body-id/work/\',$path) == 1) {<br />   $bodyId = \'work\';<br />  } else if(eregi(\'^/play/set-a-body-id/play/\',$path) == 1) {<br />   $bodyId = \'play\';<br />  } else if ($path == \'/play/set-a-body-id/\') {<br />   $bodyId = \'home\';<br />  } else {<br />   $bodyId = \'general\';<br />  }<br /> }<br />   <br />    return $bodyId;<br />}<br />$bodyId = exampleSetBodyId();<br />?&gt; \n\n</code></div>\n\n<p>So in the <code>$bodyId</code> variable, you have the value of the body id, so just print the variable on the <code>body</code> tag:</p>\n\n<div class=\"codeblock\"><code>\n&lt;body id=\"&lt;?=$bodyId; ?&gt;\"&gt; \n\n</code></div>\n\n<h3>Some Practical Uses</h3>\n<p>As I discussed at the beginning of the post, there are a lot of benefits to having a body id set on every page. This is the <a href=\"//assets.trevor-davis.com/play/set-a-body-id/\">demo section</a> that I am discussing below.</p>\n<h4>Different Colors Per Section</h4>\n<p>If you click through the navigation in the example, you can see the colors are different for each section. This can be easily accomplished without changing any markup through the power of <strong>descendant selectors.</strong> Here is the part of the CSS that is controlling the color of the borders:</p>\n<div class=\"codeblock\"><code>\ndiv#content { border: 1px solid #000; }<br />ul#nav { border-top: 1px solid #000; }<br />body#home div#content, body#home ul#nav { border-color: #FF6600; }<br />body#about div#content, body#about ul#nav { border-color: #429C19; }<br />body#blog div#content, body#blog ul#nav { border-color: #54D0ED; }<br />body#work div#content, body#work ul#nav { border-color: #A81919; }<br />body#play div#content, body#play ul#nav { border-color: #400152; }<br />body#contact div#content, body#contact ul#nav { border-color: #F8DC0C; } \n\n</code></div>\n\n<p>Here is the part that is changing the color of the <code>h1</code>:</p>\n\n<div class=\"codeblock\"><code>\nbody#home h1 { color: #FF6600; }<br />body#about h1, { color: #429C19; }<br />body#blog h1 { color: #54D0ED; }<br />body#work h1 { color: #A81919; }<br />body#play h1 { color: #400152; }<br />body#contact h1 { color: #F8DC0C; }&lt;/pre&gt;&lt;/code&gt;<br /><br />&lt;p&gt;Obviously this is not the most beautiful example, but hopefully the idea makes sense.&lt;/p&gt;<br /><br />&lt;h4&gt;Current State on Navigation&lt;/h4&gt;<br />&lt;p&gt;There are different ways to set the current state on the navigation, but by assigning an id to each navigation element, you can use descendant selectors again. Here is the markup:&lt;/p&gt;<br />[code]&lt;ul id=\"nav\"&gt;<br /> &lt;li id=\"homeNav\"&gt;&lt;a href=\"/play/set-a-body-id/\"&gt;Home&lt;/a&gt;&lt;/li&gt;<br /> &lt;li id=\"aboutNav\"&gt;&lt;a href=\"/play/set-a-body-id/about/\"&gt;About&lt;/a&gt;&lt;/li&gt;<br /> &lt;li id=\"blogNav\"&gt;&lt;a href=\"/play/set-a-body-id/blog/\"&gt;Blog&lt;/a&gt;&lt;/li&gt;<br /> &lt;li id=\"workNav\"&gt;&lt;a href=\"/play/set-a-body-id/work/\"&gt;Work&lt;/a&gt;&lt;/li&gt;<br /> &lt;li id=\"playNav\"&gt;&lt;a href=\"/play/set-a-body-id/play/\"&gt;Play&lt;/a&gt;&lt;/li&gt;<br /> &lt;li id=\"contactNav\"&gt;&lt;a href=\"/play/set-a-body-id/contact/\"&gt;Contact&lt;/a&gt;&lt;/li&gt;<br />&lt;/ul&gt; \n\n</code></div>\n\n<p>Then, we use the following CSS to change the background color and text color when we are in that section:</p>\n<div class=\"codeblock\"><code>\nbody#home ul#nav li#homeNav a { background: #FF6600; }<br />body#about ul#nav li#aboutNav a { background: #429C19; }<br />body#blog ul#nav li#blogNav a { background: #54D0ED; }<br />body#work ul#nav li#workNav a { background: #A81919; }<br />body#play ul#nav li#playNav a { background: #400152; }<br />body#contact ul#nav li#contactNav a { background: #F8DC0C; }<br />body#home ul#nav li#homeNav a, body#about ul#nav li#aboutNav a, body#blog ul#nav li#blogNav a, body#contact ul#nav li#contactNav a { color: #000; }<br />body#work ul#nav li#workNav a, body#play ul#nav li#playNav a { color: #fff; } \n\n</code></div>\n\n<h4>Slightly Different Homepage Markup</h4>\n<p>Typically the markup for homepages are slightly different. But, if you are using one header and footer template for the entire site, you probably don’t want to create another template just for the homepage. So since we have the body id that tells us when we are on the homepage, we can just write a simple <code>if</code> statement:</p>\n\n<div class=\"codeblock\"><code>\n&lt;?php if($bodyId == \'home\') { ?&gt;<br /> &amp;hellip;PUT YOUR HOMEPAGE SPECIFIC ELEMENTS HERE&amp;hellip; <br />&lt;?php } ?&gt; \n\n</code></div>\n\n<h2>Make it Work with WordPress</h2>\n<p>So just take the <strong>setBodyId function</strong> that we defined earlier, and add it to your WordPress theme functions (functions.php).</p>\n\n<p>After you have added the function, we want to add actions to <a href=\"http://codex.wordpress.org/Hook_Reference/wp_head\">wp_head</a> and <strong>wp_footer</strong> (for some reason there isn’t a WordPress Hook Reference for wp_footer, but it is essentially the same as wp_head, just in the footer). Here is how we add our function to those hooks:</p>\n<div class=\"codeblock\"><code>\nadd_action(\'wp_head\', \'setBodyId\');<br />add_action(\'wp_footer\', \'setBodyId\'); \n\n</code></div>\n\n<p>Then, in your header, just call the <strong>wp_head</strong> hook, and call our function:</p>\n<div class=\"codeblock\"><code>\n&lt;?php wp_head(); $bodyId = setBodyId(); ?&gt; \n\n</code></div>\n\n<p>There you have it, you have the body id defined in the <code>$bodyId</code> variable, and you can do with it what you want.</p>\n\n<h2>Other Thoughts</h2>\n<p>I think by setting an id (or class) on such a high level element gives you a lot of control over its descendants. Another interesting idea that I heard was to use <a href=\"http://jquery.com/\">jQuery</a> to determine the browser and version that the user is using, then add a class on the body. That way you could differ your CSS depending on which class is on the <code>body</code>. That idea would eliminate the need for conditional comments (at least for users with JavaScript enabled).</p>\n\n<p>So hopefully this tutorial shows you an easy way to make some site-wide tasks simpler, and I am interested to see if other people have ideas for what to do with body ids.</p>',NULL,1794,NULL,'2019-10-09 16:41:13','2019-10-09 16:41:13','80060d47-dd9b-4453-8019-b143773347e3',1,NULL,NULL,NULL,NULL),(1365,1850,'Weekly Link Round-Up #30',NULL,'<p>Wow, I was actually able to get some sleep this weekend. Too bad I didn’t have any time to do freelance work or work on the redesign for my site. Oh well, at least there was a lot of interesting things that I read this week:</p>\n<ul><li><a href=\"http://mezzoblue.com/archives/2008/05/05/image_replac/\">Image Replacement + Google</a>\n<p>Good to know, Google won’t penalize you for using image replacement properly. This is something we all assumed but were never really clear on.</p>\n</li>\n<li><a href=\"http://www.seomoz.org/blog/the-web-developers-seo-cheat-sheet\">The Web Developer’s SEO Cheat Sheet</a>\n<p>Nothing that we don’t know already, but a nice round up of basic SEO information for beginners.</p>\n</li>\n<li><a href=\"http://veerle.duoh.com/blog/comments/does_flash_irks_me/\">Does Flash irk me?</a>\n<p>I agree with Veerle in that it is important to evaluate the goals of a project. While most flash on the web does nothing for me, there are things like <a href=\"http://wiki.novemberborn.net/sifr\">sIFR</a> that are awesome.</p>\n</li>\n</ul><ul><li><a href=\"http://alistapart.com/issues/258\">A List Apart: Issue 258</a>\n<p>Another couple of interesting articles from A List Apart: <a href=\"http://alistapart.com/articles/fromlittlethings\">Community: From Little Things, Big Things Grow</a> and <a href=\"http://alistapart.com/articles/zebrastripingdoesithelp\">Zebra Striping: Does it Really Help?</a>. I thought the Zebra Striping article was especially interesting.</p>\n</li>\n<li><a href=\"http://patthorntonfiles.com/blog/?p=261\">Web natives need to lead Web operations</a>\n<p>I agree; it is very important for web people to be making decisions about the web. While one can easily become a “web person”, it is not something that happens instantly. The web is a complex place.</p>\n</li>\n<li><a href=\"http://www.useit.com/alertbox/percent-text-read.html\">How Little Do Users Read?</a>\n<p>While not surprising, Jakob Nielsen says that users typically don’t read very much on the web. This is why it’s important to use frequent headings and to break up the text into smaller chunks.</p>\n<p>Conversely, I also thought that an article by Andy Rutledge, <a href=\"http://www.andyrutledge.com/volume-doesnt-matter.php\">Volume Doesn’t Matter</a>, presented an interesting “argument” to the other side. If a page is designed well and the topic is interesting to the user, I think they will be very likely to do more than scan the text.</p>\n</li>\n</ul>',NULL,1795,NULL,'2019-10-09 16:41:13','2019-10-09 16:41:13','b49e9acc-646f-476a-a25f-c26a31224d70',1,NULL,NULL,NULL,NULL),(1366,1851,'Weekly Link Round-Up #31',NULL,'<p>After a busy week at work, it’s great to relax during the weekend. Even though I was getting <a href=\"http://monicafdavis.com/\">my sister’s website</a> finished, I always enjoy slicing a site. Here are a few things I found interesting this week:</p>\n\n<ul><li><a href=\"http://astheria.com/design/initial-impressions-of-silverback\">Initial Impressions of Silverback</a>\n<p>There has already been a lot written about the <a href=\"http://www.silverbackapp.com/\">Silverback website</a>, but no one has really been clear on what the application actually is. This is a nice review from one of the beta testers, and it looks amazing. Basically you can create a user testing environment with a Mac, and that’s all you need.</p>\n</li>\n<li><a href=\"http://www.themaninblue.com/experiment/Cubescape/\">Cubescape</a>\n<p>Ok, this is some seriously awesome JavaScript. You can create your own “isometric pixel picture”. I’m sure this took quite a time investment to create this.</p>\n</li>\n</ul><ul><li><a href=\"http://www.37signals.com/svn/posts/1018-designing-is-not-a-profession-but-an-attitude\">“Designing is not a profession but an attitude”</a>\n<p>I love this way of thinking. Being a Front-End Developer is not just a job for me, it’s basically my life. It’s funny how I’ll just be out somewhere, and I’ll think about how something would be marked up. If you have read <a href=\"http://www.transcendingcss.com/\">Transcending CSS</a>, you may know what I mean.</p>\n</li>\n<li><a href=\"http://nettuts.com/misc/build-a-wordburner-email-newsletter-manager-using-wordpress-and-feedburner/\">Build a ‘WordBurner’ Email Newsletter Manager using WordPress and FeedBurner</a>\n<p>Interesting tutorial explaining how to use a normal WordPress category to create an email newsletter.</p>\n</li>\n<li><a href=\"http://zenhabits.net/2008/05/a-letter-to-my-son-on-starting-out-in-life\">A Letter to My Son, on Starting Out In Life</a>\n<p>Great letter with some life hints from Leo to his son. I have really enjoyed reading his site recently.</p>\n</li>\n</ul>',NULL,1796,NULL,'2019-10-09 16:41:13','2019-10-09 16:41:13','5f29b584-3a0f-4579-bae4-a2b54de4d910',1,NULL,NULL,NULL,NULL),(1367,1852,'Input vs. Button',NULL,'<p>My latest redesign project at work was for <a href=\"http://www.grouplogic.com/\">Group Logic</a>. Another company did the design and created static HTML templates. My role was to create a single header and footer to make maintaining the site easier, and to wrap the store and other dynamic applications in the new design.</p>\n<p>The company who designed it used images for the form buttons, and I found some interesting things while implementing them.</p>\n\n<h2>A Disclaimer</h2>\n<p>I think before you design form buttons to be images, you should seriously consider just styling the buttons with CSS. Just think about all of the images you will have to maintain. Is the value of the image button style really that great that you will deal with all of that hassle? In my opinion, it’s not. But whatever, to each <strong>his</strong> own (you like that <a href=\"http://monadology.net/\">Nate</a>?). Ok, enough with the disclaimer, now on to the good stuff.</p>\n\n<h2>Some Options</h2>\n<p>Ok, so I decided that there were 3 options for implementing these buttons:</p>\n<ol><li>Use <code>&lt;input type=\"submit\" /&gt;</code> and use an image replacement technique (that I didn’t think would work in Safari).</li>\n<li>Use <code>&lt;input type=\"image\" /&gt;</code> and have the image source as an attribute.</li>\n<li>Use <code>&lt;button type=\"submit\"&gt;&lt;/button&gt;</code> and insert the image within the button element. </li>\n</ol><h3>My Decision</h3>\n<p>With ease of implementation in mind (since the time line was short), I decided to go with option 2: <code>&lt;input type=\"image\" /&gt;</code>. Everything went fine until we decided to test in IE (6 and 7). Apparently, the value from the button does not get passed onto the server. After some Googling around, I found out that this is a well known problem, and the only way to get this to work is by using JavaScript. Whenever I code something with JavaScript, I want to make sure that it works without JavaScript. So that solution would not work.</p>\n\n<h3>The Next Option</h3>\n<p>Next, I went with option 3: <code>&lt;button type=\"submit\"&gt;&lt;/button&gt;</code>. I really did not know much about the <code>button</code> element until I read <a href=\"http://particletree.com/features/rediscovering-the-button-element/\">Rediscovering the Button Element</a> a year ago.</p>\n<p>Again, that option worked fine in everything, except IE6 this time (in IE7, it passed in the entire source of the image as the value, but we could find a way to make that work). Apparently, if you have multiple button elements with the same name attributes, the value that comes out from the server in IE6 is the value from the last element on the form.</p>\n\n<p>Ok, maybe that was confusing. The <a href=\"//assets.trevor-davis.com/play/input-vs-button/\">example page</a> might clarify some. The first example is just <code>&lt;input type=\"submit\" /&gt;</code>. The second example is <code>&lt;input type=\"image\" /&gt;</code>. Finally, the third example is <code>&lt;button type=\"submit\"&gt;&lt;/button&gt;</code>.</p>\n\n<p>Be sure to try that in IE6 and IE7 to see the problems I explained.</p>\n\n<h3>A Third Try?</h3>\n<p>Ok, this sucks, obviously I went with option 1 this time: <code>&lt;input type=\"submit\" /&gt;</code>. We know from the <a href=\"//assets.trevor-davis.com/play/input-vs-button/\">first example on the previous page</a> that the value is at least passed through to the server properly in all browsers. Now the fun part is just trying to style the buttons in all browsers.</p>\n\n<h2>Stying the Input Element</h2>\n<p>Let’s assign a class to all of the buttons we are going to style, and just add some basic styles to the button:</p>\n\n<div class=\"codeblock\"><code>\ninput.buttons {<br /> background: none no-repeat top left;<br /> border: none;<br /> cursor: pointer;<br /> display: block;<br /> height: 25px;<br /> overflow: hidden;<br /> padding: 0;<br /> margin: 0 2px 0 0;<br /> text-indent: -9999px;<br /> width: auto;<br />} \n\n</code></div>\n\n<p>Most of that should be pretty self explanatory. So let’s now add in the background images for the 3 buttons and give them a width:</p>\n\n<div class=\"codeblock\"><code>\ninput.updateCart { background-image: url(update-cart.gif); width: 107px; }<br />input.continueShopping { background-image: url(continue-shopping.gif); width: 146px; }<br />input.proceedCheckout { background-image: url(proceed-to-checkout.gif); width: 156px; } \n\n</code></div>\n\n<p>The images are actually CSS Sprites so let’s add in the hover effect:</p>\n<div class=\"codeblock\"><code>\ninput.buttons:hover { background-position: 0 -25px; } \n\n</code></div>\n\n<p>Sweet, let’s <a href=\"//assets.trevor-davis.com/play/input-vs-button/regular-input/\">take a look at the page</a>. Nice, it even looks good in Safari. Of course, it’s broken in IE 6 and IE 7.</p>\n\n<p><img src=\"//assets.trevor-davis.com/uploads/images/content/2008/05/buttons-ie.gif\" alt=\"Strange effect on buttons in IE\" class=\"imageCenter\" height=\"25\" width=\"413\" /><em>Check out the weird buttons in IE</em></p>\n\n<h3>Fixing for IE</h3>\n<p>Ok, so I had no idea how to even attack this problem. So I started playing around, and finally came up with this:</p>\n\n<div class=\"codeblock\"><code>\ninput.buttons { font-size: 0; line-height: 25px; } \n\n</code></div>\n\n<p>So I just serve those properties to IE6 and IE7. Beautiful, <a href=\"//assets.trevor-davis.com/play/input-vs-button/regular-input-fixed-for-ie/\">it works now</a>.</p>\n\n<h3>One Last Thing</h3>\n<p>So we were able to get these buttons working in all browsers. There is just one minor thing that bugged me. The hover effect does not work on the buttons in IE6. How about we use <a href=\"http://jquery.com/\">jQuery</a> to fix that for IE6:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\'input.buttons\').hover(function() {<br />   $(this).css(\'background-position\',\'0 -25px\');<br />  },<br />  function() {<br />   $(this).css(\'background-position\',\'0 0\');<br />  }<br /> );<br />}); \n\n</code></div>\n\n<p>Nice, <a href=\"//assets.trevor-davis.com/play/input-vs-button/regular-input-hover-fixed-for-ie/\">it works in IE6</a>. So yeah, that was really long. But form buttons are always a fun topic to get working across all browsers. Anyone have anything they would do differently?</p>',NULL,1797,NULL,'2019-10-09 16:41:13','2019-10-09 16:41:13','474aad1b-ab9b-4317-8d5b-5c979dfda2d2',1,NULL,NULL,NULL,NULL),(1368,1853,'Weekly Link Round-Up #32',NULL,'<p>Gotta love a nice long weekend and the short week that follows. Here are the interesting things that I read this week:</p>\n<ul><li><a href=\"http://www.techcrunch.com/2008/05/20/netflix-roku-free-is-such-a-beautiful-word/\">Netflix Roku: Free Is Such A Beautiful Word</a>\n<p>Nice, so Netflix is going to offer a $100 box that will stream movies free for Netflix subscribers.</p>\n</li>\n<li><a href=\"http://mezzoblue.com/archives/2008/05/21/handoff/\">Handoff</a>\n<p>Dave Shea describes his process of handing off his designs.</p>\n</li>\n<li><a href=\"http://alistapart.com/issues/259\">A List Apart: Issue 259</a>\n<p>This issue featured two really good articles: <a href=\"http://alistapart.com/articles/thecureforcontent-delaysyndrome\">The Cure for Content-Delay Syndrome</a> and <a href=\"http://alistapart.com/articles/whydidyouhireme\">Why Did You Hire Me?</a>. Both articles are really well thought out and address some lingering issues in the web development world.</p>\n</li>\n</ul><ul><li><a href=\"http://www.digital-web.com/articles/design_decisions_vs_audience_considerations/\">Design Decisions vs. Audience Considerations</a>\n<p>Good article discussing the process of making audience-centered design decisions.</p>\n</li>\n<li><a href=\"http://www.nihilogic.dk/labs/mariokart/\">JavaScript Super Mario Kart</a>\n<p>People are doing some really awesome JavaScript stuff recently.</p>\n</li>\n<li><a href=\"http://planetozh.com/projects/lightbox-clones/\">The Lightbox Clones Matrix</a>\n<p>Informative table showing different lightbox scripts. Shows which lightboxes support which type of elements, which library they use, and other information about the script.</p>\n</li>\n</ul>',NULL,1798,NULL,'2019-10-09 16:41:13','2019-10-09 16:41:13','4ddd5e9f-e6ba-4d41-8f34-e22ecd2a5f31',1,NULL,NULL,NULL,NULL),(1369,1854,'I Picked a MacBook Pro',NULL,'<p>I had been receiving a decent amount of traffic to the article: <a href=\"//trevor-davis.com/blog/news/macbook-vs-macbook-pro-help-me-decide/\">MacBook vs MacBook Pro, Help Me Decide!</a>, so I thought I would give a quick update so people would know which I chose.</p>\n\n<p><img src=\"//assets.trevor-davis.com/uploads/images/content/2008/05/macbook-pro.jpg\" alt=\"MacBook Pro photo\" class=\"imageRight\" height=\"140\" width=\"228\" />I did finally decide to go with the MacBook Pro. I think the screen size was one of the biggest factors for me. 15 inch vs 13 inch doesn’t seem like that much, but when looking at them next to each other, it is a huge difference. The MacBook also felt much cheaper than the Pro. I also think the backlit keyboard, while maybe not something I use all the time (although I am right now), is a really nice feature.</p>\n<p>I also decided to go with the matte screen. When looking at the glossy vs. matte next to each other, the colors on the glossy definitely pop more, but from what I heard, if you are going to be doing any kind of design work, the matte gives truer colors.</p>\n<p>I am absolutely 100% happy with my purchase and would recommend the MacBook Pro to anyone who is looking for an awesome laptop. I love it. I am also in love with the two finger scrolling. Sometimes when I am on another laptop, I try and scroll with two fingers, and I kind of want to cry when it does nothing.</p>',NULL,1799,NULL,'2019-10-09 16:41:13','2019-10-09 16:41:13','6500d44a-b119-4e3a-a82d-7c58a7d534ab',1,NULL,NULL,NULL,NULL),(1370,1855,'Weekly Link Round-Up #33',NULL,'<p>Yeah, so I had an awesome birthday weekend. My girlfriend bought me a 46 inch HDTV for my birthday! Also, Sunday was my two year anniversary at <a href=\"http://www.matrixgroup.net/\">Matrix</a>. Crazy how time flies. Here is the stuff that I found interesting this past week:</p>\n<ul><li><a href=\"http://fadtastic.net/2008/05/26/getting-design-approval-the-single-mockup-theory/\">Getting Design Approval: The Single Mockup Theory</a>\n<p>I think that by providing only one mockup for clients to react to, it gives them the opportunity to get a feeling for the site and what goal it is trying to accomplish. When you show them multiple mockups, I think that the client really starts to compare the designs more, without thinking about the goal of the mockup.</p>\n</li>\n<li><a href=\"http://www.andyrutledge.com/pre-bid-discussions.php\">Pre-bid Discussions</a>\n<p>I think knowing how and when to turn down projects is a great skill to have.</p>\n</li>\n<li><a href=\"http://nettuts.com/news/unraveling-the-secrets-of-wordpress-commentsphp-file/\">Unraveling the Secrets of WordPress’ Comments.php File</a>\n<p>Nothing new or groundbreaking, just a solid breakdown of the WordPress comments.php file.</p>\n</li>\n</ul><ul><li><a href=\"http://www.smashingmagazine.com/2008/05/29/applying-divine-proportion-to-web-design/\">Applying Divine Proportion To Your Web Designs</a>\n<p>I love how thousands year old principles are still present in design today.</p>\n</li>\n<li><a href=\"http://www.37signals.com/svn/posts/1053-luke-dean-kamens-wonderful-prosthetic-robot-arm\">Luke: Dean Kamen\'s wonderful prosthetic robot arm</a>\n<p>Ok, after just watching <a href=\"http://www.imdb.com/title/tt0387808/\">Idiocracy</a>, it got my worried about how our world really could be getting dumber. After watching this video, it at least gives me hope that we aren’t. This is truly amazing.</p>\n</li>\n<li><a href=\"http://www.thinkvitamin.com/features/biz/good-products-dont-make-up-for-bad-service-but-they-help\">Good products donâ€™t make up for bad service…but they help</a>\n<p>I love when normal everyday experiences can be learned from on how to improve your web product/service.</p>\n</li>\n</ul>',NULL,1800,NULL,'2019-10-09 16:41:13','2019-10-09 16:41:13','1f093fff-290f-4f3f-96ee-44d17a664379',1,NULL,NULL,NULL,NULL),(1371,1856,'Improving a Flickr Plugin with jQuery',NULL,'<p>For a while, I have been using the <a href=\"http://wordpress.org/extend/plugins/flickr-rss/\">flickrRSS</a> WordPress plugin to show my recent flickr photos in the <a href=\"//trevor-davis.com/#flickr\">footer of my site</a>. Since I have become more comfortable using <a href=\"http://jquery.com/\">jQuery</a>, I thought I would use it to make the plugin better.</p>\n\n<p>I created a <a href=\"//assets.trevor-davis.com/play/wordpress-flickr-plugin/\">demo page</a>. to see what the markup generated from the plugin normally is. The markup is just an unordered list, and I have done some basic CSS so that it looks halfway decent.</p>\n<p>Each photo just links to the original Flickr page with the photo on it. I kind of didn’t like that because if someone wanted to see the larger version, they would have to leave my site just to see it.</p>\n<a href=\"http://farm3.static.flickr.com/2123/2543094667_2ddfec7c73_s.jpg\"><img src=\"http://farm3.static.flickr.com/2123/2543094667_2ddfec7c73_s.jpg\" alt=\"I Love My Birthday Present\" class=\"imageRight frame\" height=\"75\" width=\"75\" /></a>\n<h2>Digging into the Flickr Photos</h2>\n<p>If we take a look at the square image of me hugging my new TV, we can see that it is 75x75. Now if we take a closer look at the filename <strong>2543094667_2ddfec7c73_s.jpg</strong>, we see that there is a _s at the end. Let’s take a look at the other photo sizes there are:</p>\n<ul><li><a href=\"http://farm3.static.flickr.com/2123/2543094667_2ddfec7c73_t.jpg\">Thumbnail</a>: _t.jpg</li>\n<li><a href=\"http://farm3.static.flickr.com/2123/2543094667_2ddfec7c73_m.jpg\">Small</a>: _m.jpg</li>\n<li><a href=\"http://farm3.static.flickr.com/2123/2543094667_2ddfec7c73.jpg\">Medium</a>: .jpg</li>\n<li><a href=\"http://farm3.static.flickr.com/2123/2543094667_2ddfec7c73_b.jpg\">Large</a>: _o.jpg</li>\n</ul><p>The medium sized photo looks like a nice size to display. What if instead of linking the small square photos to their respective Flickr page, we open the medium sized photo in a lightbox.</p>\n\n<h2>Lightbox</h2>\n<p>The lightbox that I use is a hacked up version of the <a href=\"http://famspam.com/facebox\">Facebox script</a>. I modified it a little to use table-less markup and for the entire page to grey out. The lightbox is launched by setting the <strong>rel</strong> attribute equal to <strong>lightbox</strong>.</p>\n<p>Another modification I would like to make is to enable the lightbox to work in sets. Kind of like the <a href=\"http://www.lokeshdhakar.com/projects/lightbox2/\">Lightbox 2</a> script, but that is for another day.</p>\n<p>The reason I like the Facebox script is because you can also have inline content and content loaded via an AJAX call.</p>\n\n<h2>Tweaking the Flickr Markup</h2>\n<p>Since I do not want to modify the flickrRSS plugin to change the markup, I will just use jQuery to change the markup on body load.</p>\n<p>So there are two things that I want to do:</p>\n<ul><li>Add <code>rel=\"lightbox\"</code> to each link containing the Flickr photo</li>\n<li>Change the <code>href</code> to link to the <strong>medium image</strong> instead of linking to the Flickr page</li>\n</ul><h3>The Code</h3>\n<p>First, let’s add the <code>rel=\"lightbox\"</code> attribute to each of the links that are descendants of <code>ul#flickr</code> on body load:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'ul#flickr a\').each(function() {<br />  $(this).attr(\'rel\',\'lightbox\'); <br /> });<br />}); \n\n</code></div>\n\n<p>Next, let’s change the link to be the medium photo. We will do this by copying the source of the image, and then replacing <strong>_s.jpg</strong> with <strong>.jpg</strong>:\n</p><div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'ul#flickr a\').each(function() {<br />  $(this).attr(\'rel\',\'lightbox\'); <br />  var imgSrc = $(this).children().attr(\'src\');<br />  $(this).attr(\'href\',imgSrc.replace(\'_s.jpg\',\'.jpg\'))<br /> });<br />}); \n\n</code></div>\n\n<p>Next, we just initiate the lightbox script by targeting links that have a rel attribute of <strong>lightbox</strong>:\n</p><div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'ul#flickr a\').each(function() {<br />  $(this).attr(\'rel\',\'lightbox\'); <br />  var imgSrc = $(this).children().attr(\'src\');<br />  $(this).attr(\'href\',imgSrc.replace(\'_s.jpg\',\'.jpg\'))<br /> });<br /><br /> $(\'a[rel*=lightbox]\').facebox();<br />}); \n\n</code></div>\n<p>I have <a href=\"//assets.trevor-davis.com/play/wordpress-flickr-plugin/enhancing-the-plugin-with-jquery/\">modified the first demo page</a> to show this new functionality (although you can just look at <a href=\"//trevor-davis.com/#flickr\">my footer</a> too).</p>\n\n<p>It’s pretty cool how just a few lines of jQuery can drastically improve the user experience.</p>',NULL,1801,NULL,'2019-10-09 16:41:13','2019-10-09 16:41:13','80e1f9f1-c514-41e8-a29a-83979ce58d2b',1,NULL,NULL,NULL,NULL),(1372,1857,'Weekly Link Round-Up #34',NULL,'<p>It has been crazy times at work recently. I am in the process of slicing three sites at the same time. In all the madness, this is what I found interesting last week:</p>\n<ul><li><a href=\"http://meyerweb.com/eric/thoughts/2008/06/02/the-missing-link/\">The Missing Link</a>\n<p>I love that we have Eric Meyer fighting on our side. Eric discusses how the <code>href</code> attribute should be allowed on many elements instead of a few. He even goes on to <a href=\"http://meyerweb.com/eric/html-xhtml/html5-linking.html\">show examples</a> and discuss the pros and cons.</p>\n</li>\n<li><a href=\"http://www.alistapart.com/issues/260\">A List Apart: Issue 260</a>\n<p>Another couple of solid articles from A List Apart: <a href=\"http://www.alistapart.com/articles/writingainterfacestyleguide\">Writing an Interface Style Guide</a> and <a href=\"http://www.alistapart.com/articles/savingthespark\">Saving the Spark: Developing Creative Ideas</a>.</p>\n</li>\n<li><a href=\"http://www.markboulton.co.uk/journal/comments/design_isnt_about_tools/\">Design isn’t about tools</a>\n<p>This was kind of the end of a great discussion from <a href=\"http://www.37signals.com/svn/posts/1061-why-we-skip-photoshop\">37 Signals</a> and <a href=\"http://jeffcroft.com/blog/2008/jun/04/why-we-dont-skip-photoshop/\">Jeff Croft</a>. I think I agree with most of Jeff’s points. I think it definitely depends upon the product that you are trying to make, and I think 37 Signals has nailed down their simplistic style, so Photoshop is not necessary.</p>\n</li>\n</ul>',NULL,1802,NULL,'2019-10-09 16:41:13','2019-10-09 16:41:13','b412a637-39b9-4c5b-ae6b-334daafb3d95',1,NULL,NULL,NULL,NULL),(1373,1858,'Weekly Link Round-Up #35',NULL,'<p>It is pretty sad how much my life depends on the internet. I got to work early today and left early, with plans on writing a couple of blog posts and working on my redesigned logo. But of course, my power went out. So right now, I am sitting Border’s, and I caved and bought an hour of internet time. Oh well. Here are a few links I found interesting this week:</p>\n\n<ul><li><a href=\"http://northtemple.com/1608\">The Accessibility Checklist I Vowed I’d Never Write</a>\n<p>This is an awesome checklist with some guidelines to keep in mind when considering the accessibility of a site.</p>\n</li>\n<li><a href=\"http://www.subtraction.com/archives/2008/0609_investing_st.php\">Investing Strategies for iPhone Customers</a>\n<p>Wow, that’s a pretty powerful graph. Really shows how much the value of technology drops the instant you walk out of the store. As awesome as the iPhone looks, I would never buy it on the AT&amp;T network. The only way I would buy it were if it were available on Verizon.</p>\n</li>\n<li><a href=\"http://veerle.duoh.com/blog/comments/design_critiquing/\">Design Critiquing</a>\n<p>Veerle talks about a very important part of the design process: critiquing. I sometimes find it hard to say why I don’t like certain things. I guess that is the downside of not having any professional design training.</p>\n</li>\n<li><a href=\"http://www.37signals.com/svn/posts/1080-you-have-to-treat-your-employees-like-customers\">“You have to treat your employees like customers”</a>\n<p>This is a great quote:</p>\n<blockquote><p>“When employees are trusted and treated like adults, they appreciate it just as much. The result: loyal employees who want to stick around forever.”</p></blockquote>\n</li>\n</ul><p>I am hoping this week that I can finish up an article discussing some cool new things I found out about WordPress while implementing my <a href=\"http://www.thematrixfiles.net/\">CEO’s blog</a>, so be on the lookout for that.</p>',NULL,1803,NULL,'2019-10-09 16:41:13','2019-10-09 16:41:13','23309ce8-7b59-4024-964b-9356e6db4928',1,NULL,NULL,NULL,NULL),(1374,1859,'jQuery Table Striping Bug',NULL,'<p>I have been using <a href=\"http://jquery.com/\">jQuery</a> to do table striping, and up until today, I have not had any problems with it.</p>\n\n<p>I had just been using the <a href=\"http://docs.jquery.com/Selectors/even\">:even</a> and <a href=\"http://docs.jquery.com/Selectors/odd\">:odd</a> selectors to add classes to each table row.</p>\n\n<p>Here is the code that I have been using:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\"table.striped tbody tr:odd\").addClass(\"odd\");<br /> $(\"table.striped tbody tr:even\").addClass(\"even\");<br />}); \n\n</code></div>\n<p>Seems easy enough. Then I just styled the odd table rows like so:</p>\n<div class=\"codeblock\"><code>\ntable.striped tr.odd td { background-color: #f0f0f4; } \n\n</code></div>\n<p>One thing to note is that the <strong>:even</strong> and <strong>:odd</strong> selectors are zero-indexed, so the <strong>first table row will have a class of even, and not odd</strong>. <a href=\"//assets.trevor-davis.com/play/jquery-table-striping/\">Here is an example showing this simple striping</a>.</p>\n\n<h2>Multiple Striped Instances</h2>\n<p>The situation that I had today had two different tables that were being striped. So based on the code, you would think that there wouldn’t be a problem. <a href=\"//assets.trevor-davis.com/play/jquery-table-striping/multiple-striping-instances/\">Here is the example with two striped tables on the same page</a>.</p>\n\n<p>Weird, so it looks like the first table row in the second striped table has a class of even instead of odd. I thought that the client may not like that because the two tables were not consistent, so I tried to think of another way to do the striping.</p>\n\n<h2>The nth Child</h2>\n<p>So based on the documentation, it looks like <a href=\"http://docs.jquery.com/Selectors/nthChild#index\">the nth child selector</a> would be the solution. I just modified my JavaScript like so:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\"table.striped tbody tr:nth-child(odd)\").addClass(\"odd\");<br /> $(\"table.striped tbody tr:nth-child(even)\").addClass(\"even\");<br />}); \n\n</code></div>\n<p>As a note, <strong>the nth child selector is not zero indexed</strong>, so the first table row will have a class of odd instead of even. <a href=\"//assets.trevor-davis.com/play/jquery-table-striping/using-nth-child/\">Here is the fixed example</a>.</p>\n\n<h2>Conclusion</h2>\n<p>From what I can tell, this does not appear to be a browser problem, but a bug in jQuery. I have checked this in Firefox, Safari, IE6 and IE7.</p>',NULL,1804,NULL,'2019-10-09 16:41:13','2019-10-09 16:41:13','780cee44-f1e3-4935-9b91-6eec6ab66796',1,NULL,NULL,NULL,NULL),(1375,1860,'Weekly Link Round-Up #36',NULL,'<p>I actually got started on my redesign/realign this weekend. I think I want to have a larger focus on my portfolio, and not just my blog. But god is it hard to redesign when you aren’t a designer. Hopefully it will all turn out well in the end. Here is what I found interesting this week:</p>\n<ul><li><a href=\"http://jasonsantamaria.com/articles/a-new-day/\">A New Day</a>\n<p>As much as I love <a href=\"http://v3.jasonsantamaria.com/\">Jason Santa Maria’s last design</a>, I think his new direction/design is really interesting.</p></li>\n<li><a href=\"http://www.subtraction.com/archives/2008/0617_spacing_is_e.php\">Spacing Is Everything</a>\n<p>Khoi Vinh shows what Gmail would look like with a little bit of spacing. I actually think it might look better, but he caught some backlash from the commentors saying that there would be less messages “above the fold”. But I think that you rarely look below the fold when looking for a message, and even if you did, you would be more likely to use the search instead.</p>\n</li>\n</ul><ul><li><a href=\"http://www.alistapart.com/issues/261\">A List Apart: Issue 261</a>\n<p>I was pretty excited to finally see a CSS article in A List Apart, <a href=\"http://www.alistapart.com/articles/fauxabsolutepositioning\">Faux Absolute Positioning</a>. It had been quite a while. I was actually really disappointed with it though. It seems like extraneous markup, and I don’t really see the advantages. The second article in the issue, <a href=\"http://www.alistapart.com/articles/sketchingincode\">Sketching in Code: the Magic of Prototyping</a>, brings up a much more important issue. Prototyping is probably the most important part of the process of developing web applications.</p>\n</li>\n\n<li><a href=\"http://www.digital-web.com/articles/education_of_freaks_and_geeks/\">The Education of Geeks and Freaks</a>\n<p>I think the current state of the education of web development is awful. I know how hard it must be to stay on top of new technologies and be a teacher, but still, it needs to improve. It’s great to hear that some schools are starting to take the right step and teaching <strong>new technologies</strong>.</p>\n</li>\n\n<li><a href=\"http://nettuts.com/site-builds/from-psd-to-html-building-a-set-of-website-designs-step-by-step/\">From PSD to HTML, Building a Set of Website Designs Step by Step</a>\n<p>I kind of skimmed this article because it was really just a discussion about what I do when I slice a site. From what I saw, it seemed like a pretty decent description.</p>\n</li>\n</ul>',NULL,1805,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','4f99e6c6-8c95-4fb8-8d26-a8d69c76f3f1',1,NULL,NULL,NULL,NULL),(1376,1861,'WordPress Tips and Ideas Learned From Implementation',NULL,'<p>Recently, I had to slice and implement <a href=\"http://www.thematrixfiles.net/\">a blog for the CEO of my company</a>. I decided to go with WordPress because that is what I have become enamored with recently, when <a href=\"http://www.wirelesscareer.com/\">I created a job board</a> using it. I used some features of WordPress that I had never used before, so I figured I would talk about them so that others could learn how to use them as well.</p>\n\n<h2>Multiple Loops</h2>\n<p>The blog contained a main blog section, along with a “Favorites” section in the sidebar, that would be used to list anything: favorite websites, books, etc. I didn’t think that using just the basic WordPress blogroll or a third party bookmarking site would give the CEO enough flexibility to mark whatever she wanted as a favorite. So I decided to just create a separate category for Favorites.</p>\n\n<p>In the footer of the site, there is also information about the last 6 projects that we had worked on. I definitely did not want those to be static. Since we complete projects almost daily, I wanted “non-technical” people to be able to update them. So I decided to create a separate category for those.</p>\n\n<p>So in total, I had 3 categories: Blog, Favorites, and Projects.</p>\n\n<p>I figured I would just end up having the main loop in the content area, a loop in the sidebar, and a loop in the footer. I had never really done a site with multiple loops, but after reading <a href=\"http://codex.wordpress.org/The_Loop#Multiple_Loops\">the documentation</a>, it didn’t look too complicated. So the key to having multiple loops is to use the <a href=\"http://codex.wordpress.org/Template_Tags/query_posts\">query_posts</a> template tag.</p>\n\n<h3>The Main Blog Loop</h3>\n<p>The Blog category has an id of 1. So all you have to do is call the query_posts template tag before you loop through the entries:</p>\n<div class=\"codeblock\"><code>\n&lt;?php query_posts(\'cat=1\');<br /> if (have_posts()) : <br />  while (have_posts()) : the_post(); ?&gt;<br />   &amp;hellip;<br />  &lt;?php endwhile;<br /> endif; ?&gt; \n\n</code></div>\n\n<p>Then the Favorites and Project categories are basically the same, you just plug in the correct category id into the <strong>query_posts</strong> template tag.</p>\n\n<h3>Paging with Multiple Loops</h3>\n<p>So since we are using the <strong>query_posts</strong> template tag, it messes up the paging of the main loop. So, in the main blog loop, we need to use the ternary operator to add in the paging argument:</p>\n<div class=\"codeblock\"><code>\n&lt;?php<br /> $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;<br /> query_posts(\"cat=1&amp;paged=$paged\");<br />?&gt; \n\n</code></div>\n<p>So those two lines would replace the previous call to the <strong>query_posts</strong> template tag that we used for the main loop.</p>\n\n<h2>Read More Links</h2>\n<p>When I had first implemented the blog, we were using the read more links (whenever they were added into the post) for all posts. Later in the implementation process, I was told that the most recent article should always show the full post.</p>\n<p>I wasn’t sure how the heck I could do that, but after some Googling I figured it out. Basically what we need to do is just create a simple counter to see if we are on the first post. If we are, we set a global $more variable equal to 1. So I define the $count variable and set it equal to 1, then I have this at the beginning of the main loop:</p>\n<div class=\"codeblock\"><code>\n&lt;?php<br />if (is_home()) {<br /> global $more;<br /> if($count == 1) $more = 1;<br /> else $more = 0;<br /> $count++;<br />}<br />?&gt; \n\n</code></div>\n\n<h3>Wait a Minute…</h3>\n<p>So I was all ready to publish this article, when I found out today that the first article on my CEO’s blog was still showing the read more link. From what I discovered, it looked like both the <strong>is_home()</strong> and <strong>is_front_page()</strong> conditional tags were not registering as true when on the homepage. For the life of me, I could not figure out why this was happening.</p>\n<p>So this was a little bit of a hacky solution, but it was all that I could think of quickly. I had this code before the loop:</p>\n<div class=\"codeblock\"><code>\n&lt;?php<br /> if($_SERVER[\'REQUEST_URI\'] == \'/\') { <br />  $isHomepage = true;<br /> }<br />?&gt; \n\n</code></div>\n\n<p>So essentially, I was setting up my own flag to see if it was the homepage. What that is doing is checking the URL to see if it is the root of the site or not. Then I modifed the if statement in my other code to be:</p>\n<div class=\"codeblock\"><code>\n&lt;?php<br /> if (isset($isHomepage) &amp;&amp; $isHomepage = true) {<br />  global $more;<br />  if($count == 1) $more = 1;<br />  else $more = 0;<br />  $count++;<br /> }<br />?&gt; \n\n</code></div>\n\n<p>I’m not sure if there is a better solution, but I think the reason the <strong>is_home()</strong> and <strong>is_front_page()</strong> conditions don’t work is because of calling the <strong>query_posts</strong> template tag, because they worked before the call.</p>\n\n<h2>Custom Fields</h2>\n<p>I had used custom fields before, and they are amazingly powerful in being able to extend WordPress functionality. For my CEO’s blog, I used 4 custom fields:</p>\n<ul><li>favoriteThumbnail</li>\n<li>favoriteUrl</li>\n<li>projectThumbnail</li>\n<li>projectUrl</li>\n</ul><h3>Favorites’ Custom Fields</h3>\n<p>The favorites are supposed to be little blurbs about something that my CEO likes, whether it is a book, website, etc. So the idea is that it is not supposed to be a full blog post, just a little blurb. So instead of linking to the WordPress post, we link to the <strong>favoriteUrl</strong> custom field. Here is how the favoriteUrl custom field is being used (this is called within The Loop):</p>\n<div class=\"codeblock\"><code>\n&lt;?php <br />$favoriteUrl = get_post_meta($post-&gt;ID, \"favoriteUrl\", true);<br />if($favoriteUrl != \'\') { ?&gt;<br /> &lt;a href=\"&lt;?=$favoriteUrl ?&gt;\" class=\"heading\"&gt;&lt;strong&gt;&lt;?php the_title(); ?&gt;&lt;/strong&gt;&lt;/a&gt;<br />&lt;?php } else { ?&gt;<br /> &lt;strong class=\"heading\"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;<br />&lt;?php } ?&gt; \n\n</code></div>\n\n<p>So basically what I am doing there is first calling in the favoriteUrl custom field and assigning it to the $favoriteUrl variable. Then, I check to make sure it is not empty (meaning the custom field was not entered). If it is entered, I output the link to the URL. If not, I still do not link to the WordPress post, I just display the title in bold.</p>\n\n<p>The favoriteThumbnail is pretty self explanatory and is called in the same way as the favoriteUrl. The reason I wanted to use a custom field for the thumbnail instead of just adding the image to the post content is because the design called for the image to be floated next to the title and because I wanted to link the image to the favoriteUrl. This way, when my CEO is adding a favorite, she does not have to worry about floating the image and linking it to the favoriteUrl.</p>\n\n<h3>Projects’ Custom Fields</h3>\n<p>Both of the Projects’ custom fields are used similarly to the Favorities’ custom fields. The projectThumbnail custom field is just used to show the most recent 6 projects in the footer. Nothing complicated, just showing and linking the photo to the WordPress post.</p>\n\n<p>Until our new company website gets launched, we are linking to the short WordPress post which gives a little description about the project. The projectUrl outputs the URL to the project at the end of the post. Once our company website is finished, I will just modify the custom field to link directly from the footer to its respective page in our portfolio.</p>\n\n<h2>Conclusion</h2>\n<p>I really enjoyed doing this implementation. While it was just a simple blog, it is always great to learn a couple of new tricks/techniques. Any other WordPress tips that you have found useful?</p>',NULL,1806,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','86eadd2f-543e-40b4-b862-bb83e5b32c4f',1,NULL,NULL,NULL,NULL),(1377,1862,'Weekly Link Round-Up #37',NULL,'<p>So I think I am going to stop doing weekly link round-ups once i launch my redesign/realign. I think I want to have more of like “asides”, where I will just post an interesting link with a little blurb much more frequently. But the redesign is still a little ways off, so here is what I found interesting this past week:</p>\n<ul><li><a href=\"http://fadtastic.net/2008/06/23/get-out-of-a-creative-slump/\">Get out of a Creative Slump</a>\n<p>Even though I am not really a designer, I feel like I am definitely in a creative slump when trying to create this new design. Some of these tips are definitely useful for stirring up that creativity.</p>\n</li>\n<li><a href=\"http://freelanceswitch.com/finding/learning-when-to-say-no/\">Learning When to Say No</a>\n<p>Probably the single most important part of freelancing.</p>\n</li>\n<li><a href=\"http://www.andyrutledge.com/the-employable-web-designer.php\">The Employable Web Designer</a>\n<p>Andy discusses how web design students should rightly be worried about whether their education will prepare them for the “real world”.</p>\n</li>\n</ul><ul><li><a href=\"http://www.thewebsiteisdown.com/salesguy.html\">Sales Guy vs. Web Dude</a>\n<p>Absolutely hilarious video with a guy working tech support.</p>\n</li>\n<li><a href=\"http://nettuts.com/working-with-cmss/hack-together-a-user-contributed-link-feed-with-wordpress-comments/\">Hack Together a User Contributed Link Feed with WordPress Comments</a>\n<p>Nice tutorial showing the flexibility of WordPress while creating a user contributed feed.</p>\n</li>\n</ul>',NULL,1807,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','466a6fc1-8aec-4ca3-b290-006adda97b39',1,NULL,NULL,NULL,NULL),(1378,1863,'When Planning Your Site Content, Become the User',NULL,'<p>On Friday, I needed to get a small coffee table for my living room, so I decided to head to <a href=\"http://ikea.com/\">Ikea</a>. I love Ikea, not only because their website is full of web standards goodness, but also because they make some really nice and affordable furniture.</p>\n\n<p>Since Friday was the 4th of July, I wasn’t sure what the hours would be. I logged onto their website, <a href=\"http://www.ikea.com/webapp/wcs/stores/servlet/IkeaNearYouView?storeId=12&amp;catalogId=11001&amp;langId=-1&amp;StoreName=woodbridge\">found the store closest to me</a>, and was getting ready to call and find out the hours.</p>\n\n<p>To my delight, I not only found the normal store hours, <strong>but also found the holiday store hours</strong>.</p>\n\n<p>Wow, that is quite a rarity. It is rare to even find the normal store hours on their websites, but holiday hours too? Quite impressive.</p>\n\n<p>What the folks at Ikea have done is the simplest (and probably most important) method to having a successful website: <strong>put yourself in the users’ shoes</strong>. I’m sure at some point during their web site strategy development they thought: if we provide our store hours on the web site, then we will get less phone calls at the store about the hours, thus allowing the employees to focus more on the customers in the store.</p>\n\n<p>So what is the lesson here? With every decision you make about your website, think about the goal of the website, and make sure your decision will help to achieve that goal.</p>',NULL,1808,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','0e4fa978-9453-4ad3-93ce-021c607b85a1',1,NULL,NULL,NULL,NULL),(1379,1864,'Weekly Link Round-Up #38',NULL,'<p>Only found a couple of interesting things to read this past week, must have been the fact that I am working on 2 sites that need to launch next week.</p>\n\n<ul><li><a href=\"http://www.alistapart.com/issues/262\">A List Apart: Issue 262</a>\n<p>I have been exposed to subversion a lot in the past few months, so it was interesting to read <a href=\"http://www.alistapart.com/articles/collaboratewithsubversion\">Collaborate and Connect with Subversion</a>. There are definitely pros as well as cons to using it. I kind of skimmed <a href=\"http://www.alistapart.com/articles/getoutbindingsituations\">Getting Out of Binding Situations in JavaScript</a>, but it seemed interesting.</p>\n</li>\n<li><a href=\"http://www.smashingmagazine.com/2008/07/01/should-links-open-in-new-windows/\">Should Links Open In New Windows?</a>\n<p>No way! This article provides some good information from “the experts” about why links should not open in a new window.</p>\n</li>\n</ul>',NULL,1809,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','852d898f-4244-4e02-adcd-424e0bd30b77',1,NULL,NULL,NULL,NULL),(1380,1865,'Weekly Link Round-Up #39',NULL,'<p>Wow, I must say it is hard writing blog posts, doing freelance work, and being crazy busy at my day job. I’ve got one post in the works, and hopefully I will be able to finish it up next week. Here is what I found interesting last week (and the beginning of this week):</p>\n\n<ul><li><a href=\"http://nettuts.com/javascript-ajax/adding-form-validation-to-wordpress-comments-using-jquery/\">Adding Form Validation to WordPress Comments using jQuery</a>\n<p>I had actually been considering writing a post like this. With a just a few short lines of JavaScript, you give users a much better experience when trying to submit a comment. (Note: see my comment form as another example.)</p>\n</li>\n<li><a href=\"http://www.zeldman.com/2008/07/14/your-us-tax-dollars-at-work/\">Your US tax dollars at work</a>\n<p>So the <a href=\"http://www.cra.org/ccc/\">Computing Community Consortium</a> launched their website the other day, at it was a blatant rip-off of <a href=\"http://alistapart.com/\">A List Apart</a>. They have since changed it, but you can <a href=\"http://floatingsun.net/2008/07/13/inspiration-or-imitation\">check out the screenshots here</a>. It wasn’t even like they just designed it to look similar, they straight up stole the mark-up and CSS. I will say that the CCC handled it correctly, but how did they let it happen in the first place?</p>\n</li>\n</ul><ul><li><a href=\"http://wordpress.org/development/2008/07/wordpress-26-tyner/\">WordPress 2.6</a>\n<p>The WordPress team was able to launch version 2.6 a month before it was supposed to! Not any huge differences, but there are some nice small changes. I would recommend taking a few minutes to watch the video. I love the redesigned plugins page and the post revisions.</p>\n</li>\n<li><a href=\"http://alistapart.com/issues/263\">A List Apart: Issue 263</a>\n<p>Only one real article in this issue: <a href=\"http://alistapart.com/articles/walkingthelinewhenyouworkfromhome\">Walking the Line When You Work from Home</a>, but it is a great article describing how to succeed while working at home.</p>\n</li>\n</ul>',NULL,1810,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','961fdd43-9125-4c14-8ce3-9bf3a73c3c5d',1,NULL,NULL,NULL,NULL),(1381,1866,'Weekly Link Round-Up #40',NULL,'<p>Well, I finally got a site launched that had been stressing me out, now I only have my company website to stress me out for the next two weeks. Here is what I found interesting this week:</p>\n\n<ul><li><a href=\"http://www.digital-web.com/articles/smart_CSS_aint_always_sexy_CSS/\">Smart CSS Ain’t Always Sexy CSS</a>\n<p>This was a pretty interesting read. I think one interesting point that Martin brought up was that most of the time, editing HTML is quicker than editing CSS. A lot of times, it may just be easier to add a new class/id and add some new CSS instead of editing existing code.</p>\n</li>\n<li><a href=\"http://www.37signals.com/svn/posts/1141-western-spaghetti\">Western Spaghetti</a>\n<p>This video is just awesome. How long did this take to make?</p>\n</li>\n<li><a href=\"http://www.twinhelix.com/css/iepngfix/\">IE PNG Fix</a>\n<p>Interesting, this IE PNG script gives support for background position and repeat.</p>\n</li>\n<li><a href=\"http://ejohn.org/blog/firebuggin/\"> Firebuggin’</a>\n<p>Nice, John Resig is going to be spending half of his time at Mozilla working on Firebug. After seeing how amazing jQuery is, I can’t wait to see what he does for Firebug.</p>\n</li>\n</ul>',NULL,1811,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','078f5778-9727-40c3-8ece-4d6c88204fe5',1,NULL,NULL,NULL,NULL),(1382,1867,'Flexible and Semantic Forms with a Little jQuery',NULL,'<p>While they may not be that pretty, forms are one of the most important parts of a web site. <a href=\"//trevor-davis.com/blog/tutorial/css-forms/\">I have already written an article on CSS Forms</a>, that was over a year ago, and I have developed much better techniques.</p>\n\n<p>There are other <a href=\"http://www.lukew.com/resources/articles/web_forms.html\">great resources for information about form design</a>, and I will take this information into account when I am showing the flexibility of my method of marking up and styling forms.</p>\n\n<h2>The Markup</h2>\n<p>After previously using a <strong>definition list</strong> to mark up my forms, I have switched to using an <strong>ordered list</strong> now. I switched for two main reasons:</p>\n\n<ul><li>The list item of the ordered list provides a containing clearing element that the definition list does not provide.</li>\n<li>Semantically, it just makes more sense. A form is really just a list of form fields to fill out. Forms are typically meant to be filled out in order, hence the ordered list instead of un-ordered list (I think this could be debated, but in the long run, either one is more semantic than anything else).</li>\n</ul><p>I have decided to create just a <a href=\"//assets.trevor-davis.com/play/forms-revisited/\">simple un-styled form</a> to use as an example. Here is what the markup of the page is:</p>\n<div class=\"codeblock\"><code>\n&lt;ol class=\"forms\"&gt;<br /> &lt;li&gt;&lt;label for=\"name\"&gt;Name&lt;/label&gt;&lt;input type=\"text\"name=\"name\" id=\"name\" /&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;label for=\"email\"&gt;Email&lt;/label&gt;&lt;input type=\"text\" name=\"email\" id=\"email\" /&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;label for=\"city\"&gt;City&lt;/label&gt;&lt;input type=\"text\" name=\"city\" id=\"city\" /&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;label for=\"state\"&gt;State&lt;/label&gt;&lt;input type=\"text\" name=\"state\" id=\"state\" /&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;label for=\"zip\"&gt;Zip&lt;/label&gt;&lt;input type=\"text\" name=\"zip\" id=\"zip\" /&gt;&lt;/li&gt;<br /> &lt;li class=\"grouping\"&gt;&lt;label&gt;Sign Up for the Following&lt;/label&gt;<br />  &lt;ul&gt;<br />   &lt;li&gt;&lt;input type=\"checkbox\" name=\"info1\" id=\"info1\" /&gt;&lt;label for=\"info1\"&gt;Information 1&lt;/label&gt;&lt;/li&gt;<br />   &lt;li&gt;&lt;input type=\"checkbox\" name=\"info2\" id=\"info2\" /&gt;&lt;label for=\"info2\"&gt;Information 2&lt;/label&gt;&lt;/li&gt;<br />   &lt;li&gt;&lt;input type=\"checkbox\" name=\"info3\" id=\"info3\" /&gt;&lt;label for=\"info3\"&gt;Information 3&lt;/label&gt;&lt;/li&gt;<br />  &lt;/ul&gt;<br /> &lt;/li&gt;<br /> &lt;li&gt;&lt;label for=\"message\"&gt;Message&lt;/label&gt;&lt;textarea name=\"message\" id=\"message\"&gt;&lt;/textarea&gt;&lt;/li&gt;<br /> &lt;li class=\"buttons\"&gt;&lt;button type=\"submit\" name=\"submit\" id=\"submit\"&gt;Submit&lt;/button&gt;&lt;/li&gt;<br />&lt;/ol&gt; \n\n</code></div>\n\n<p>Even without any style applied, the form is still completely usable.</p>\n\n<h2>Styling the Forms</h2>\n<p>There are really 3 main styles of laying out forms:</p>\n<ul><li>Labels above the form field</li>\n<li>Labels to the side of the form field, jagged right</li>\n<li>Labels to the side of the form field, jagged left</li>\n</ul><p>Again, like I said, I am not going to go through the pros and cons of each method, I am going to show how easy it is to switch between the methods using my markup.</p>\n\n<h3>Labels Above the Form Field</h3>\n<p>This is by far the easiest method. Here is the CSS used to style my <a href=\"//assets.trevor-davis.com/play/forms-revisited/forms-styled-labels-stacked/\">example form</a>:</p>\n\n<div class=\"codeblock\"><code>\nol.forms { float: left; list-style: none; width: 100%; }<br />ol.forms li { <br /> clear: both; <br /> float: left; <br /> margin: 0 0 10px; <br /> width: 100%; <br />}<br />ol.forms label { cursor: pointer; display: block; font-weight: bold; }<br />ol.forms input, ol.forms textarea { <br /> font: inherit;<br /> padding: 2px;<br /> width: 300px;<br />}<br />ol.forms textarea { height: 250px; }<br />ol.forms li.grouping { margin-bottom: 0; }<br />ol.forms li.grouping ul { list-style: none; }<br />ol.forms li.grouping ul label { <br /> display: inline;<br /> font-weight: normal;<br /> margin: 0 0 0 10px;<br />}<br />ol.forms li.grouping ul input { width: auto; } \n\n</code></div>\n\n<p>Really nothing too complicated. In my opinion, I don’t like stacking the label over the form field; I think it just makes the form too long.</p>\n\n<h3>Labels to the Side of the Form Field, Jagged Right</h3>\n<p>I like this layout of forms the best. I think it presents the form in a clear way so that you can just scan right through the form fields. With just a few changes to the CSS, you can float the labels to the left of the form fields. The changes are marked in bold:</p>\n\n<div class=\"codeblock\"><code>\nol.forms { float: left; list-style: none; width: 100%; }<br />ol.forms li { <br /> clear: both;<br /> float: left;<br /> margin: 0 0 10px;<br /> width: 100%;<br />}<br />ol.forms label { <br /> cursor: pointer;<br /> display: block;<br /> &lt;strong&gt;float: left;&lt;/strong&gt;<br /> font-weight: bold;<br /> &lt;strong&gt;margin: 0 10px 0 0;<br /> width: 90px;&lt;/strong&gt;<br />}<br />ol.forms input, ol.forms textarea { <br /> font: inherit;<br /> padding: 2px;<br /> width: 300px;<br />}<br />ol.forms textarea { height: 250px; }<br />&lt;strong&gt;ol.forms li.grouping label { margin: 0; width: auto; }&lt;/strong&gt;<br />ol.forms li.grouping { margin-bottom: 0; }<br />ol.forms li.grouping ul { list-style: none; &lt;strong&gt;margin-left: 100px;&lt;/strong&gt; }<br />ol.forms li.grouping ul label { <br /> display: inline;<br /> &lt;strong&gt;float: none;&lt;/strong&gt;<br /> font-weight: normal;<br /> margin: 0 0 0 10px;<br /> &lt;strong&gt;width: auto;&lt;/strong&gt;<br />}<br />ol.forms li.grouping ul input { width: auto; }<br />&lt;strong&gt;ol.forms li.buttons { float: none; margin-left: 100px; width: auto; }&lt;/strong&gt; \n\n</code></div>\n\n<p><a href=\"//assets.trevor-davis.com/play/forms-revisited/forms-styled-labels-left/\">Take a look at the example with the fields on the left</a>. Depending upon your label length, you may need to increase the width of the labels so that it does not span more than one line, but that is an easy enough change.</p>\n\n<h3>Labels to the Side of the Form Field, Jagged Left</h3>\n<p>Now with two changes to the CSS, you can easily switch to having the labels jagged left, which puts them closer to the form input. The changes needed are highlighted in bold:</p>\n\n<div class=\"codeblock\"><code>\nol.forms label { <br /> cursor: pointer;<br /> display: block;<br /> float: left;<br /> font-weight: bold;<br /> margin: 0 10px 0 0;<br /> &lt;strong&gt;text-align: right;&lt;/strong&gt;<br /> width: 90px;<br />}<br />ol.forms li.grouping label { margin: 0; &lt;strong&gt;text-align: left;&lt;/strong&gt; width: auto; } \n\n</code></div>\n\n<p><a href=\"//assets.trevor-davis.com/play/forms-revisited/forms-styled-labels-right/\">Here is the example of the form with the labels jagged left</a>.</p>\n\n<h3>Taking it a Step Further with More CSS and a Little jQuery</h3>\n<p>Since I like the form layout with labels to the side and jagged right, I am going to use <a href=\"//assets.trevor-davis.com/play/forms-revisited/forms-styled-labels-left/\">this one</a> to customize the display a little, and then add in some jQuery functionality.</p>\n\n<h4>Improving the Display</h4>\n<p>When looking at the form, it may be confusing to have all form fields be the same width. It is helpful to the user to modify the width to suit the data that will be entered.</p>\n\n<p>For example, there is no reason that the zip code, city, and state fields should be so long, so let’s add a class to each one to shorten it to the length of the data that will probably be entered. Here is the modified markup:</p>\n\n<div class=\"codeblock\"><code>\n&lt;li&gt;<br /> &lt;label for=\"city\"&gt;City&lt;/label&gt;<br /> &lt;input type=\"text\" name=\"city\" id=\"city\" class=\"medium\" /&gt;<br />&lt;/li&gt;<br />&lt;li&gt;<br /> &lt;label for=\"state\"&gt;State&lt;/label&gt;<br /> &lt;input type=\"text\" name=\"state\" id=\"state\" class=\"small\" /&gt;<br />&lt;/li&gt;<br />&lt;li&gt;<br /> &lt;label for=\"zip\"&gt;Zip&lt;/label&gt;<br /> &lt;input type=\"text\" name=\"zip\" id=\"zip\" class=\"extraSmall\" /&gt;<br />&lt;/li&gt; \n\n</code></div>\n\n<p>Then we just have to add those 3 classes to the CSS:</p>\n\n<div class=\"codeblock\"><code>\nol.forms .extraSmall { width: 50px; }<br />ol.forms .small { width: 100px; }<br />ol.forms .medium { width: 150px; } \n\n</code></div>\n\n<p>Here is what <a href=\"//assets.trevor-davis.com/play/forms-revisited/forms-styled-labels-left-customized-more/\">the form looks like with that little bit of extra style</a>. I also added in some help text, a notation for required fields, and the associated CSS; so take a look at the code to see that.</p>\n\n<h4>Adding a Little jQuery</h4>\n<p>Obviously you have read my article about <a href=\"//trevor-davis.com/blog/tutorial/ajax-forms-with-jquery/\">AJAX forms with jQuery</a>, which discusses how to add AJAX functionality to a form in a degradable way. So the following code assumes that you are going to be doing server side validation of the form as well.</p>\n\n<p>Since there are required fields in this form, I add a class of <strong>required</strong> to the form and to each parent list item of required input fields.</p>\n\n<p>First, we want our JavaScript to execute when the form with a class of required is submitted:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form.required\').submit(function() {<br />  &amp;hellip;<br /> });<br />}); \n\n</code></div>\n\n<p>If there are any error messages still displaying from before, we want to hide them. Also, let’s disable the submit button so just in case, the form cannot be submitted twice. I am also creating a variable that I will be using later to determine if there is an error or not:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form.required\').submit(function() {<br />  &lt;strong&gt;$(\'form.required span.error\').remove();<br />  $(\'form.required li.buttons button\').attr(\'disabled\',\'disabled\');<br />  var hasError = false;&lt;/strong&gt;<br /> });<br />}); \n\n</code></div>\n\n<p>Now, we want to check each form field that has a parent list item with a class of <strong>required</strong>:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form.required\').submit(function() {<br />  $(\'form.required span.error\').remove();<br />  $(\'form.required li.buttons button\').attr(\'disabled\',\'disabled\');<br />  var hasError = false;<br /><br />  &lt;strong&gt;jQuery.each($(\'form.required ol.forms li.required\'),function() {<br />   &amp;hellip;<br />  });&lt;/strong&gt;<br /> });<br />}); \n\n</code></div>\n\n<p>There are a lot of other jQuery plugins that validate forms, but most of the time, it will just alert the user that the field is required. Instead of doing that, I am going to grab the text from the label element and display that in the error message:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form.required\').submit(function() {<br />  $(\'form.required span.error\').remove();<br />  $(\'form.required li.buttons button\').attr(\'disabled\',\'disabled\');<br />  var hasError = false;<br /><br />  jQuery.each($(\'form.required ol.forms li.required\'),function() {<br />   &lt;strong&gt;var labelText = $(this).children(\'label\').text();<br />   labelText = labelText.replace(\' *\',\'\');&lt;/strong&gt;<br />  });<br /> });<br />}); \n\n</code></div>\n\n<p>Now, we have two different structures of form fields for each list item: a single form field and a grouping of checkboxes or radio buttons. We have to do things a little bit different for each one:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form.required\').submit(function() {<br />  $(\'form.required span.error\').remove();<br />  $(\'form.required li.buttons button\').attr(\'disabled\',\'disabled\');<br />  var hasError = false;<br /><br />  jQuery.each($(\'form.required ol.forms li.required\'),function() {<br />   var labelText = $(this).children(\'label\').text();<br />   labelText = labelText.replace(\' *\',\'\');<br /><br />   &lt;strong&gt;if($(this).hasClass(\'grouping\')) {<br />    &amp;hellip; <br />   } else {<br />    &amp;hellip;<br />   }&lt;/strong&gt;<br />  });<br /> });<br />}); \n\n</code></div>\n\n<p>First, let’s focus on the case when there is a grouping. We want to loop through each input and see if it is checked. If it is, we just increment a counter. Then, if the counter equals zero, meaning we have no fields checked, we display an error message:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form.required\').submit(function() {<br />  $(\'form.required span.error\').remove();<br />  $(\'form.required li.buttons button\').attr(\'disabled\',\'disabled\');<br />  var hasError = false;<br /><br />  jQuery.each($(\'form.required ol.forms li.required\'),function() {<br />   var labelText = $(this).children(\'label\').text();<br />   labelText = labelText.replace(\' *\',\'\');<br /><br />   if($(this).hasClass(\'grouping\')) {<br />    &lt;strong&gt;var numSelected = 0;<br />    jQuery.each($(this).find(\'input\'),function() {<br />     if($(this).attr(\'checked\') == true) {<br />      numSelected++;<br />     }<br />    });<br />    <br />    if(numSelected == 0) {<br />     $(this).append(\'&lt;span class=\"error\"&gt;You must select from \'+labelText+\'.&lt;/span&gt;\');<br />     hasError = true;<br />    }&lt;/strong&gt;<br />   } else {<br />    &amp;hellip;<br />   }<br />  });<br /> });<br />}); \n\n</code></div>\n\n<p>That seems easy enough, and it’s even easier for the single input fields. We just check to see if the value is empty, and if it is, display the error message:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form.required\').submit(function() {<br />  $(\'form.required span.error\').remove();<br />  $(\'form.required li.buttons button\').attr(\'disabled\',\'disabled\');<br />  var hasError = false;<br /><br />  jQuery.each($(\'form.required ol.forms li.required\'),function() {<br />   var labelText = $(this).children(\'label\').text();<br />   labelText = labelText.replace(\' *\',\'\');<br /><br />   if($(this).hasClass(\'grouping\')) {<br />    var numSelected = 0;<br />    jQuery.each($(this).find(\'input\'),function() {<br />     if($(this).attr(\'checked\') == true) {<br />      numSelected++;<br />     }<br />    });<br />    <br />    if(numSelected == 0) {<br />     $(this).append(\'&lt;span class=\"error\"&gt;You must select from \'+labelText+\'.&lt;/span&gt;\');<br />     hasError = true;<br />    }<br />   } else {<br />    &lt;strong&gt;if(jQuery.trim($(this).children(\'input, textarea\').val()) == \'\') {<br />     $(this).append(\'&lt;span class=\"error\"&gt;Please enter your \'+labelText+\'.&lt;/span&gt;\');<br />     hasError = true;<br />    }&lt;/strong&gt;<br />   }<br />  });<br /> });<br />}); \n\n</code></div>\n\n<p>To finish up, we just check to see if the <code><strong>hasError</strong></code> variable is true. Since this is just a demo form, I just add an alert if the form would submit successfully:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form.required\').submit(function() {<br />  $(\'form.required span.error\').remove();<br />  $(\'form.required li.buttons button\').attr(\'disabled\',\'disabled\');<br />  var hasError = false;<br /><br />  jQuery.each($(\'form.required ol.forms li.required\'),function() {<br />   var labelText = $(this).children(\'label\').text();<br />   labelText = labelText.replace(\' *\',\'\');<br /><br />   if($(this).hasClass(\'grouping\')) {<br />    var numSelected = 0;<br />    jQuery.each($(this).find(\'input\'),function() {<br />     if($(this).attr(\'checked\') == true) {<br />      numSelected++;<br />     }<br />    });<br />    <br />    if(numSelected == 0) {<br />     $(this).append(\'&lt;span class=\"error\"&gt;You must select from \'+labelText+\'.&lt;/span&gt;\');<br />     hasError = true;<br />    }<br />   } else {<br />    if(jQuery.trim($(this).children(\'input, textarea\').val()) == \'\') {<br />     $(this).append(\'&lt;span class=\"error\"&gt;Please enter your \'+labelText+\'.&lt;/span&gt;\');<br />     hasError = true;<br />    }<br />   }<br />  });<br /><br />  &lt;strong&gt;if(hasError) {<br />   $(\'form.required li.buttons button\').removeAttr(\'disabled\');<br />   return false;<br />  } else {<br />   alert(\'The form would submit now\');<br />   $(\'form.required li.buttons button\').removeAttr(\'disabled\'); //Remove this line if using for real<br />   return false; //Change this to true when using it for real<br />  }&lt;/strong&gt;<br /> });<br />}); \n\n</code></div>\n\n<p>Go ahead and take a look at the <a href=\"//assets.trevor-davis.com/play/forms-revisited/forms-styled-labels-left-customized-more/\">demo form</a> to see it in action.</p>\n\n<h2>Conclusion</h2>\n<p>With a well structured form, you can easily customize it to your liking with just a little bit of CSS. Then, by using some custom jQuery code, you can easily customize how you would like to have the form validation appear.</p>\n<p>With a little more work, you could easily add in validation for things like form elements expecting an email address, zip codes, phone numbers, etc. I will have to save that for another post since this one is quite long.</p>\n\n<p>What do you all think? How do you structure your forms? Which layout of forms do you prefer and why?</p>',NULL,1812,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','3d7e0d15-8860-4eb1-bd49-1e06aea21489',1,NULL,NULL,NULL,NULL),(1383,1868,'Weekly Link Round-Up #41',NULL,'<p>Well, another week and weekend flew by. I’m finally starting to work on my redesign/realign, and I hope that I can get it launched in not too long. Here is what I found interesting this week:</p>\n\n<ul><li><a href=\"http://meyerweb.com/eric/thoughts/2008/07/23/any-element-linking-demo/\">Any-Element Linking Demo</a>\n<p>Eric Meyer created a demo of his proposed “any-element” linking. This could be an awesome addition to HTML 5 (although who knows how long it will take to actually be implemented).</p>\n</li>\n<li><a href=\"http://www.37signals.com/svn/posts/1149-modal-overlays-beyond-the-dialog-box\">Modal overlays beyond the dialog box</a>\n<p>Modal overlays definitely have become an integral part of the web these days. This is a nice discussion about good and bad uses.</p>\n</li>\n</ul><ul><li><a href=\"http://getfirebug.com/lite.html\">Firebug Lite</a>\n<p>Instead of only being able to use Firebug in Firefox, you can use the lite version (a bit of JavaScript) to utilize Firebug functionality in other browsers. It was definitely finicky, but it’s a big upgrade from other debugging tools.</p>\n</li>\n<li><a href=\"http://www.silverbackapp.com/\">Silverback</a>\n<p>The much anticipated Silverback finally launched. I’m going to have to find the right time to use that 30 day trial. This looks so awesome.</p>\n</li>\n<li><a href=\"http://www.smashingmagazine.com/2008/07/24/a-small-study-of-big-blogs/\">A Small Design Study Of Big Blogs</a>\n<p>Blogs are obviously a huge part of the web. Smashing Magazine takes the time to examine the 50 most popular Technorati blogs to investigate design trends and more. Definitely a good read.</p>\n</li>\n</ul>',NULL,1813,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','ebe2d20a-4b4f-489c-b545-1164527696d4',1,NULL,NULL,NULL,NULL),(1384,1869,'I Took the 2008 Survey (for people who make websites)',NULL,'<p><a href=\"http://alistapart.com/articles/survey2008\"><img src=\"//assets.trevor-davis.com/uploads/images/content/2008/07/i-took-the-2008-survey.gif\" alt=\"I Took The 2008 Survey\" width=\"180\" height=\"46\" class=\"imageRight frame\" /></a>It’s that time of the year again, <a href=\"http://alistapart.com/articles/survey2008\">the A List Apart 2008 Survey</a> is out.</p>\n<p>It only takes a few minutes to fill out, and the data compiled at the end is awesome. I look forward to seeing the results in the next few weeks.</p>',NULL,1814,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','f864c5f9-db9f-4623-971e-898529df4f00',1,NULL,NULL,NULL,NULL),(1385,1870,'Weekly Link Round-Up #42',NULL,'<p>I just found out today that if we get our company website launched by Wednesday, our company is going to send myself and the other Front-End Developers to <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a>, so that’s pretty awesome. Just a few links from this week:</p>\n<ul><li><a href=\"http://www.smashingmagazine.com/2008/07/31/a-small-survey-of-big-blogs-further-findings/\">A Small Study Of Big Blogs: Further Findings</a>\n<p>After an article last week discussing some of the findings from a survey of the 50 most popular blogs, Smashing Magazine reveals more.</p>\n</li>\n<li><a href=\"http://patterntap.com/\">Pattern Tap</a>\n<p>Great collection of web design patterns.</p>\n</li>\n<li><a href=\"http://blueflavor.com/blog/2008/aug/04/time-web-forward-movement/\">Time for a Web-Forward Movement</a>\n<p>I definitely agree with what Kenny has to say. I feel like there was this huge push for standards a few years ago, and it has really started to slow down. <strong>We should not be satisfied!</strong> There is still so much more to do.</p>\n</li>\n</ul>',NULL,1815,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','968e7c0c-21cc-401c-918b-438e7e2e80c2',1,NULL,NULL,NULL,NULL),(1386,1871,'Hiring Web Designers and Developers',NULL,'<p>My company, <a href=\"http://www.matrixgroup.net/\">Matrix Group International</a>, is currently looking to hire Web Designers, Web Developers, Python Software Engineers, a Product Manager, and an Executive Assistant to the CEO.</p>\n<p>We are located just outside of Old Town Alexandria, VA. We are having <a href=\"http://www.matrixgroup.net/events/index.cfm?fa=details&amp;Calendar_ID=30358\">an Open House on Friday from 4-7pm</a>. So if you or anyone you know could fill those spots, come join us on Friday.</p>',NULL,1816,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','136a412b-733f-4d66-8d3e-6fb2fb9ef3da',1,NULL,NULL,NULL,NULL),(1387,1872,'Why is there no float: center?',NULL,'<p>When they were writing the specifications for CSS, why didn’t they allow things to be <strong>floated center</strong>?</p>\n\n<p>I was looking through an old site at work this week, that was developed long before me, and I saw someone tried to do this: <strong>float: center</strong>. So that got me thinking, why would they include the specification to float left and right, but not center?</p>\n\n<p>Imagine the posibilities…the following are just a couple of simple examples of what could be possible, <strong>they are not meant to be used in a production environment</strong>.</p>\n<ul><li><a href=\"//assets.trevor-davis.com/play/float-center/\">Float an Image Between Two Columns</a>\n<p>In this example, I just floated the image to the right, and gave it a -100px right margin (half the width of the image). Then I just added an empty div to the right hand column, floated it left, and gave it a height and width.</p></li>\n<li><a href=\"//assets.trevor-davis.com/play/float-center/image-align-center/\">Float an Image in the Middle of One Column</a>\n<p>This one is really hacky. I absolutely positioned the image, chose a monospaced font, and then added non-breaking spaces so that the image was no longer covering the text.</p></li>\n</ul><p>I think being able to float something in the center could really make pages more interesting. I would be curious to know if there was any specific explanation for why you cannot float to the center.</p>',NULL,1817,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','3068b334-8b26-4c97-87e5-54a6e1a01ed9',1,NULL,NULL,NULL,NULL),(1388,1873,'Weekly Link Round-Up #43',NULL,'<p>It’s hard to believe that it’s already the middle of August. This week was a bit crazy: managing two freelance projects and getting <a href=\"http://www.matrixgroup.net/\">my company website launched</a>. My CEO agreed that if we got the site launched by Friday, she would send myself and my fellow Front-End Developers to <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a>. So yeah, that’s going to be awesome. Now, here is what I found interesting this week:</p>\n\n<ul><li><a href=\"http://adaptivepath.com/aurora/\">Aurora Concept Video</a>\n<p>Adaptive Path created videos for the Mozilla Labs concept browser series. This whole series was really cool, but I think that the user interaction is a long time from showing up. I also wonder how “non-technical” users would respond to an interface like this.</p>\n</li>\n<li><a href=\"//trevor-davis.com/blog/web/why-is-there-no-float-center/\">Why is there no float: center?</a>\n<p>I posed this very simple question last week, and there was some <a href=\"//trevor-davis.com/blog/web/why-is-there-no-float-center/#comments\">great discussion</a> that ended up happening.</p>\n</li>\n<li><a href=\"http://psdtuts.com/drawing/create-a-citrus-fruit-design-from-scratch-in-photoshop/\">Create a Citrus Fruit Design From Scratch in Photoshop</a>\n<p>And this is why I will never be a graphic designer. How do you even do that? So amazing.</p>\n</li>\n</ul><ul><li><a href=\"http://www.thinkvitamin.com/features/biz/the-5-hidden-costs-of-running-a-cms\">The 5 hidden costs of running a CMS</a>\n<p>I think these are definitely costs that are not really considered when deciding whether to power your site by a CMS, and which CMS to use.</p>\n</li>\n<li><a href=\"http://www.techcrunch.com/2008/08/06/an-evolving-cultural-curiosity-we-need-a-fake-follow/\">An Evolving Cultural Curiosity: We Need A Fake Follow</a>\n<p>This is an excellent point that Michael brings up. On Twitter, if someone chooses to follow you, but you do not follow them, there is this sense of rejection from the person who decided to follow you. But honestly, they have no idea what your life is like. Maybe you are just so busy, that you only care to follow your closest friends. I think this is something that Twitter and other social networking sites should seriously consider.</p>\n</li>\n</ul>',NULL,1818,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','74fb2166-6bcc-4b46-a183-d0cae90e3152',1,NULL,NULL,NULL,NULL),(1389,1874,'Weekly Link Round-Up #44',NULL,'<p>Another busy week with freelance,  but hopefully I’ll be able to finish them up shortly so I can work more on my redesign/realign. My hope is to finish it before I go to <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a> in October. Just a few interesting things I found this week:</p>\n\n<ul><li><a href=\"http://www.thinkvitamin.com/features/webapps/developing-a-better-cms\">Developing a better CMS</a>\n<p>This is an interesting article describing the process of creating the CMS <strong>Firerift</strong>. Firerift looks interesting, but the website unfortunately doesn’t give enough details.</p>\n</li>\n<li><a href=\"http://www.simplebits.com/notebook/2008/08/14/ampersands.html\">Use the Best Available Ampersand</a>\n<p>As Dan has discussed before, you should always use the best possible ampersand. He gives a nice collection of great looking ampersands.</p>\n</li>\n</ul>',NULL,1819,NULL,'2019-10-09 16:41:14','2019-10-09 16:41:14','24be66dd-6633-4f03-a8c0-2428b12056dc',1,NULL,NULL,NULL,NULL),(1390,1875,'jQuery Tabbed Navigation',NULL,'<p>It seems like more and more these days, JavaScript tabbed interfaces are being used. There are plenty of scripts out there, but I think it is important to be able to do things yourself. A lot of JavaScript “plugins” that you will find online will give you way more than you really need, and you may understand how to use it, but you will not really understand what it is really doing.</p>\n\n<p>First, I thought I would walk through creating a tabbed navigation script with jQuery, and then modifying it so that it works without JavaScript.</p>\n\n<p>If you want to skip ahead, <a href=\"//assets.trevor-davis.com/play/javascript-tabbed-navigation/\">take a look at the sample jQuery tabbed interface</a>.</p>\n\n<h2>The Markup</h2>\n<p>I’m going to set this up using classes so that it is possible to use this multiple times on a page. There are two different pieces to the markup: the navigation and the actual content for the tabs.</p>\n\n<h3>The Navigation</h3>\n<div class=\"codeblock\"><code>\n&lt;ul class=\"tabNav\"&gt;<br /> &lt;li class=\"current\"&gt;&lt;a href=\"#\"&gt;Tab 1&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Tab 2&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Tab 3&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Tab 4&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&gt;&lt;a href=\"#\"&gt;Tab 5&lt;/a&gt;&lt;/li&gt;<br />&lt;/ul&gt; \n\n</code></div>\n<p>Pretty straightforward, just an un-ordered list. The JavaScript will accommodate any number of tabs. Notice that the first tab has a class of <strong>current</strong>. This will be the class to style to show the active tab.</p>\n\n<h3>The Tab Content</h3>\n<div class=\"codeblock\"><code>\n&lt;div class=\"tabContainer\"&gt;<br /> &lt;div class=\"tab current\"&gt;<br />  &amp;hellip;Content for Tab 1&amp;hellip;<br /> &lt;/div&gt;<br /> &lt;div class=\"tab\"&gt;<br />  &amp;hellip;Content for Tab 2&amp;hellip;<br /> &lt;/div&gt;<br /> &lt;div class=\"tab\"&gt;<br />  &amp;hellip;Content for Tab 3&amp;hellip;<br /> &lt;/div&gt;<br /> &lt;div class=\"tab\"&gt;<br />  &amp;hellip;Content for Tab 4&amp;hellip;<br /> &lt;/div&gt;<br /> &lt;div class=\"tab\"&gt;<br />  &amp;hellip;Content for Tab 5&amp;hellip;<br /> &lt;/div&gt;<br />&lt;/div&gt; \n\n</code></div>\n<p>Again, pretty straightforward: a container and a div for each of the tabs’ content. A couple of things to note: the first tab content also has a class of <strong>current</strong>, and the tabs’ content divs need to appear in the same order as the navigation.</p>\n\n<h2>Some Basic CSS</h2>\n<p>I’m not going to explain how I completely style my example, but I will highlight the necessary styles for the tabs to work.</p>\n\n<p>To highlight the active tab, this is what you want to style:</p>\n<div class=\"codeblock\"><code>\nul.tabNav li.current a { &amp;hellip; } \n\n</code></div>\n\n<p>In order to hide all of the tabs’ contents except for the active tab, these are the styles that are necessary:</p>\n<div class=\"codeblock\"><code>\ndiv.tabContainer div.tab { display: none; }<br />div.tabContainer div.current { display: block; } \n\n</code></div>\n\n<h2>The JavaScript</h2>\n<p>Ok, this is definitely the meat of the post. Since I wanted this to be as generic and simple as possible, I made heavy use of the <a href=\"http://docs.jquery.com/Traversing/parent\">parent</a> and <a href=\"http://docs.jquery.com/Traversing/children\">children</a> selectors.</p>\n\n<p>So to start, we want to <strong>add onclick events to the tabs</strong>:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\'ul.tabNav a\').click(function() {<br />  &amp;hellip;<br />  return false;        <br /> });<br />}); \n\n</code></div>\n\n<p>When each tab is clicked, we want to see which tab was clicked on so that we can show the appropriate content. So we count the previous number of siblings of the parent (the list item) and store it in the <strong>curChildIndex</strong> variable:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\'ul.tabNav a\').click(function() {<br />  &lt;strong&gt;var curChildIndex = $(this).parent().prevAll().length + 1;&lt;/strong&gt;<br />  &amp;hellip;<br />  return false;        <br /> });<br />}); \n\n</code></div>\n\n<p>Next, we want to remove the class of current from the currently selected tab, and add the class of current to the tab we just clicked:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\'ul.tabNav a\').click(function() {<br />  var curChildIndex = $(this).parent().prevAll().length + 1;<br />  &lt;strong&gt;$(this).parent().parent().children(\'.current\').removeClass(\'current\');<br />  $(this).parent().addClass(\'current\');&lt;/strong&gt;<br />  &amp;hellip;<br />  return false;        <br /> });<br />}); \n\n</code></div>\n\n<p>The final step is to hide the tab content that is currently showing and to show the tab content that matches the tab that was just clicked on. This is where we will make use of the <strong>curChildIndex</strong> variable and the <a href=\"http://docs.jquery.com/Selectors/nthChild\">nth Child Selector</a>:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function(){<br /> $(\'ul.tabNav a\').click(function() {<br />  var curChildIndex = $(this).parent().prevAll().length + 1;<br />  $(this).parent().parent().children(\'.current\').removeClass(\'current\');<br />  $(this).parent().addClass(\'current\');<br />  &lt;strong&gt;$(this).parent().parent().next(\'.tabContainer\').children(\'.current\').slideUp(\'fast\',function() {<br />   $(this).removeClass(\'current\');<br />   $(this).parent().children(\'div:nth-child(\'+curChildIndex+\')\').slideDown(\'normal\',function() {<br />    $(this).addClass(\'current\');<br />   });<br />  });&lt;/strong&gt;<br />  return false;        <br /> });<br />}); \n\n</code></div>\n\n<p>The previous snippet of the code is traversing from the clicked tab ,<strong>(this)</strong>, to the current content that has a class of <strong>current</strong>, sliding that up, and removing the class of current. Once that is complete, we are selecting the tab content that matches the tab clicked, sliding it down, and adding the class of current.</p>\n\n<p><a href=\"//assets.trevor-davis.com/play/javascript-tabbed-navigation/\">Take a look at the sample jQuery tabbed interface</a> to see it in action.</p>\n\n<h2>Making it Work for Non-JavaScript Users</h2>\n<p>Now, that works great, but what about people who don’t have JavaScript enabled? Sure it’s a very small number, but we still want to account for those people.</p>\n<p>Most other JavaScript tab scripts use JavaScript to hide the non-active tab content sections or to write in the tabbed navigation, but then you get that flash of changing content. My idea is to use CSS to hide the non active tab content (which I discussed earlier) and pass a parameter into the URL to select which tab to show.</p>\n<h3>The Code</h3>\n<p>Below is the new code for the tab navigation:</p>\n<div class=\"codeblock\"><code>\n&lt;ul class=\"tabNav\"&gt;<br /> &lt;li&lt;?php if(!isset($_GET[\'tab\'])) echo \' class=\"current\"\';?&gt;&gt;&lt;a href=\"\"&gt;Tab 1&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&lt;?php if(isset($_GET[\'tab\']) &amp;&amp; $_GET[\'tab\'] == 2) echo \' class=\"current\"\';?&gt;&gt;&lt;a href=\"?tab=2\"&gt;Tab 2&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&lt;?php if(isset($_GET[\'tab\']) &amp;&amp; $_GET[\'tab\'] == 3) echo \' class=\"current\"\';?&gt;&gt;&lt;a href=\"?tab=3\"&gt;Tab 3&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&lt;?php if(isset($_GET[\'tab\']) &amp;&amp; $_GET[\'tab\'] == 4) echo \' class=\"current\"\';?&gt;&gt;&lt;a href=\"?tab=4\"&gt;Tab 4&lt;/a&gt;&lt;/li&gt;<br /> &lt;li&lt;?php if(isset($_GET[\'tab\']) &amp;&amp; $_GET[\'tab\'] == 5) echo \' class=\"current\"\';?&gt;&gt;&lt;a href=\"?tab=5\"&gt;Tab 5&lt;/a&gt;&lt;/li&gt;<br />&lt;/ul&gt; \n\n</code></div>\n\n<p>Basically, I am checking to see if the variable <strong>tab</strong> is set in the URL, and determining the value of it. I also use the same logic for the tab content. <a href=\"//assets.trevor-davis.com/play/javascript-tabbed-navigation/?tab=3\">This is the example page with tab 3 displaying</a>. So basically, if the user does not have JavaScript, it would reload the entire page and display the correct tab.</p>\n\n<h2>Conclusion</h2>\n<p>This was just a simple example of jQuery, and the possibilities are endless. Instead of being so quick to use a plugin or someone’s code, try to do it yourself. You will become a much better programmer because of it. Even if you aren’t doing things as efficiently as possible, you will learn something new every time.</p>',NULL,1820,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','df963952-4ca0-4fa7-b101-a2389f72e95d',1,NULL,NULL,NULL,NULL),(1391,1876,'Weekly Link Round-Up #45',NULL,'<p>Hopefully I am getting down to the last month of so of doing these weekly round-ups. On my new site, I plan on having an aside section for posting a link and a short blurb. Here are a few links that I found interesting this week:</p>\n\n<ul><li><a href=\"http://nettuts.com/site-builds/build-your-first-facebook-app/\">Build Your First Facebook App</a>\n<p>While there is an abundance of Facebook Apps (and a lot of annoying ones), this is a nice tutorial about creating them.</p>\n</li>\n<li><a href=\"http://mezzoblue.com/archives/2008/08/18/sneakernet_s/\">Sneakernet SVN</a>\n<p>Dave Shea describes his technique of <strong>source control</strong>. While using an USB key may not be the most elegant solution, it works for him. Source control is a major issue, and I think we will see more and more elegant solutions in the future.</p>\n</li>\n<li><a href=\"http://nettuts.com/html-css-techniques/10-principles-of-the-css-masters/\">10 Principles of the CSS Masters</a>\n<p>This is kind of like my post about <a href=\"//trevor-davis.com/blog/tutorial/the-6-most-important-css-techniques-you-need-to-know/\">The 6 Most Important CSS Techniques You Need To Know</a>. So much so that a part of the article was even included.</p>\n</li>\n</ul>',NULL,1821,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','fd513992-2a28-4296-8153-a30247399366',1,NULL,NULL,NULL,NULL),(1392,1877,'Weekly Link Round-Up #46',NULL,'<p>Ah, long weekends are the best. I got a lot of freelance work done, and I’m hoping to finish up the couple of projects I am working on so that I can redesign my site. Here is what I found interesting this week:</p>\n\n<ul><li><a href=\"http://www.smashingmagazine.com/2008/08/26/how-simple-web-design-helps-your-business/\">How Simple Web Design Helps Your Business</a>\n<p>This is a list showing how some nice design decisions have helped these e-commerce sites.</p>\n</li>\n<li><a href=\"http://www.digital-web.com/articles/web_design_by_designers/\">Web Design by Designers</a>\n<p>When award-winning design firms design their website, they should let their work be the focus of the site.</p>\n</li>\n</ul><ul><li><a href=\"http://www.alistapart.com/issues/266\">A List Apart: Issue 266</a>\n<p>Aaron Rester discusses a new way of thinking when developing a site in <a href=\"http://www.alistapart.com/articles/mappingmemory\">Mapping Memory: Web Designer as Information Cartographer</a>, and Dave Shea shows us how to add a little “flair” to CSS Sprites with jQuery in <a href=\"http://www.alistapart.com/articles/sprites2\">CSS Sprites2 – It’s JavaScript Time</a>.</p>\n</li>\n<li><a href=\"http://www.guardian.co.uk/technology/2008/aug/28/internet.captcha\">How Captcha was foiled: Are you a man or a mouse?</a>\n<p>Spam is obviously one of the biggest issues on the web, but are we attacking it incorrectly with captcha? Some think we are: Matt Mullenweg’s answer is to focus on the content rather than the user.</p>\n</li>\n</ul>',NULL,1822,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','b0c0ae19-a5fa-4c12-bc2e-17ff0d733251',1,NULL,NULL,NULL,NULL),(1393,1878,'Weekly Link Round-Up #47',NULL,'<p>It is amazing how fast these weeks have been flying by. I have a couple of “real” blog posts that I have been working on, and I need to finish them up and get them published. Here are a few things that I found interesting in the last week:</p>\n\n<ul><li><a href=\"http://labs.mozilla.com/2008/08/introducing-ubiquity/\">Introducing Ubiquity</a>\n<p>After watching the <a href=\"http://adaptivepath.com/aurora/\">Aurora</a> concept videos, it is great to see something similar already be in development.</p>\n</li>\n<li><a href=\"http://www.devlounge.net/publishing/finding-harmony-between-categories-and-tags-on-blogs\">Finding Harmony Between Categories and Tags on Blogs</a>\n<p>Using categories and tags effectively is an integral part to information organization on blogs.</p>\n</li>\n</ul><ul><li><a href=\"http://www.idolhands.com/personal/obama-is-restful/\">Obama is RESTful</a>\n<p>I love that we are comparing presidential candidates based on their websites. Obama wins.</p>\n</li>\n<li><a href=\"http://snook.ca/archives/opinion/shelf-life/\">The Shelf Life of a Web Site</a>\n<p>After just redesigning our company website, Jonathan Snook brings up an interesting question on the shelf life of technology.</p>\n</li>\n</ul>',NULL,1823,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','e441aa10-a800-4cd3-9adc-f59aecd190f8',1,NULL,NULL,NULL,NULL),(1394,1879,'Make Your Content Smarter With jQuery',NULL,'<p>At work today, we were asked by a client to add a link to download Adobe Acrobat onto every page that had a PDF linked on it. Since the site was mostly static, with some content coming from the content management system, we were not interested in adding it to all of the static pages and changing the programming of the CMS output pages.</p>\n\n<p><a href=\"http://seeyouin1984.com/\">My co-worker</a> and I decided that the best way to do it would be with JavaScript. Since the site was already using jQuery, our company’s library of choice, it turned out to be quite a simple task. If you just want to get to the code, <a href=\"//assets.trevor-davis.com/play/jquery-pdf-links/\">take a look at the demo</a>.</p>\n<h2>The Idea</h2>\n<ol><li>We add the link to download Adobe Acrobat to the site’s template</li>\n<li>We hide the link using CSS</li>\n<li>We use jQuery to see if there are any links on the page linking to a PDF</li>\n<li>If there are, we use jQuery to show the link</li>\n</ol><h2>The Execution</h2>\n<p>Ok, simple enough, just add the link to the source of the document:</p>\n<div class=\"codeblock\"><code>\n&lt;p id=\"acrobatDownload\"&gt;&lt;a href=\"http://www.adobe.com/products/acrobat/readstep2.html\"&gt;Download Adobe Acrobat to view the PDFs on this page&lt;/a&gt;&lt;/p&gt; \n\n</code></div>\n\n<p>Then, hide it with CSS:</p>\n<div class=\"codeblock\"><code>\n#acrobatDownload { display: none; } \n\n</code></div>\n\n<h3>The jQuery</h3>\n<p>First, we want to check and see if any of the links on the page end with <strong>.pdf</strong>. Then, if there are any, we fade in the link:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> if($(\'a[href$=.pdf]\').length &gt; 0) {<br />  $(\'#acrobatDownload\').fadeIn(\'slow\');<br /> }<br />}); \n\n</code></div>\n<p>I have created <a href=\"//assets.trevor-davis.com/play/jquery-pdf-links/\">a demo page with a PDF link on it</a> to see this in action.</p>\n\n<h2>Conclusion</h2>\n<p>I can’t even imagine how much time and hassle we saved ourselves by doing this with JavaScript. Plus, it could provide useful to someone who doesn’t have Acrobat (although I can’t imagine that there are many).</p>\n\n<p>The concept is actually quite simple, and my mind is grinding away trying to think of other ways to use jQuery to do things like this.</p>\n\n<p>Can you all think of anything?</p>',NULL,1824,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','c1d0e8a4-1427-4c46-b10e-36a4f3f1fe5b',1,NULL,NULL,NULL,NULL),(1395,1880,'Weekly Link Round-Up #47',NULL,'<p>Ah, football season is so great. It’s hard to get any work done on my redesign when there is so much football on TV though. Oh well, here is what I found interesting this week:</p>\n\n<ul><li><a href=\"http://jeffcroft.com/blog/2008/sep/11/two-thousand-twenty-two/\">Two thousand twenty two</a>\n<p>This post by Jeff is kind of like a tragic comedy. While it is laughable how ridiculous it is that it will take that long for the HTML 5 spec to become “Proposed Recommendation”, it is also sad how long it takes for advances in browsers to actually happen.</p>\n</li>\n<li><a href=\"http://www.zeldman.com/2008/09/12/dear-aiga-where-are-the-web-designers/\">Dear AIGA, where are the web designers?</a>\n<p>Jeffrey Zeldman points out that AIGA is really not catering to Web Designers. I think they need to reevaluate their thinking because the Web is almost more important than any other form of media these days.</p>\n</li>\n</ul><ul><li><a href=\"http://freelanceswitch.com/money/how-to-keep-the-freelancing-spark-without-burning-out/\">How To Keep The Freelancing Spark (Without Burning Out)</a>\n<p>Some nice tips to keep in mind to prevent from burning out. This is especially important to people like me who have a full-time job and freelance on the side.</p>\n</li>\n<li><a href=\"http://www.zeldman.com/2008/09/15/a-modest-proposal/\">A modest proposal</a>\n<p>While Zeldman’s proposal will never happen, this article really shows why he is such a prominent figure in the Web community. Even though this is not a web related article, he is such a great communicator.</p>\n</li>\n<li><a href=\"http://www.smashingmagazine.com/2008/09/15/wordpress-developers-toolbox/\">WordPress Developer’s Toolbox</a>\n<p>WordPress is my tool of choice these days, and this is a nice collection of resources.</p>\n</li>\n</ul>',NULL,1825,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','2e3452f1-2a7d-4dd8-9e84-83f5152b83c3',1,NULL,NULL,NULL,NULL),(1396,1881,'Web Designer Guide',NULL,'<p>About a week ago, I was asked if I wanted to be included in Web Hosting Search’s <a href=\"http://www.webhostingsearch.com/web-design-companies.php\">Web Designer Guide</a>. The project seems like a great idea, and below is a quote from the organizer, Eva, about the project:</p>\n\n<blockquote>\n<p>“This guide will aide visitors in finding a web designer in their local area. Say you want to start a website and sell hats and you are based in Tennessee but you have no idea how to make a website. Well, you can look at our list of designers, find one in Tennessee and connect. Instead of searching on Google everywhere, this list already has great designers since WHS has contact with every company listed. We also geographically separated them since many people want to work with someone in their area.”</p>\n</blockquote>\n\n<p>You can read more about the project <a href=\"http://www.webhostingsearch.com/blogs/hosting-events/?p=16\">on their blog</a>. It’s pretty cool to even be asked to be included, and I’m interested to see how the guide will grow.</p>',NULL,1826,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','2b47f9f9-6dda-45b1-99a5-80965b56ef74',1,NULL,NULL,NULL,NULL),(1397,1882,'Weekly Link Round-Up #48/49',NULL,'<p>Let me first apologize for being a terrible blogger. Two weeks without a word from me. I have been very busy at work, doing a bunch of freelance, and working on the redesign for this site.</p>\n\n<p>I also took a two day trip to New York for work to attend a gala for the <a href=\"http://www.nationalparks.org/\">National Park Foundation</a>. So basically, this is two weeks worth of links in one blog article.</p>\n\n<p>I’m hoping to launch the redesign before I head to <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart</a> on the 11th. So here it is, some interesting stuff from the past 2 weeks:</p>\n\n<ul><li><a href=\"http://www.markboulton.co.uk/journal/comments/design_by_community/\">Design By Community</a>\n<p>I agree that design by committee doesn’t work, but Mark discusses design by <strong>community</strong>, and it looks like it has some promise.</p>\n</li>\n<li><a href=\"http://www.airbagindustries.com/archives/airbag/hire.php\">Hire.</a>\n<p>Airbag created an awesome <a href=\"http://rfp.airbagindustries.com/\">RFP</a> form to improve the communication at the beginning of projects.</p>\n</li>\n<li><a href=\"http://mezzoblue.com/archives/2008/09/17/anchor_butto/\">Anchor Buttons</a>\n<p>Dave Shea plays with the button element. While the buttons look basically the same in all browsers, I know that <a href=\"//trevor-davis.com/blog/tutorial/input-vs-button/\">there are some programmatic issues using the button element</a>. We have also found that some version of Windows Mobile don’t support it.</p>\n</li>\n</ul><ul><li><a href=\"http://www.zeldman.com/2008/09/18/a-list-apart-is-changing/\">A List Apart is changing</a>\n<p>There are only so many ground-breaking CSS tricks that can be come up with. Expanding the topics of A List Apart’s articles to cater to <strong>all</strong> people who build websites seems like a great move.</p>\n</li>\n<li><a href=\"http://forabeautifulweb.com/blog/about/time_to_stop_showing_clients_static_design_visuals/\">Time to stop showing clients static design visuals</a>\n<p>While I think Andy Clarke has a good idea here, I don’t think it is very realistic. It is just a very risky move to basically create the sliced template before the design has even been signed off on. You would really need to have some trusting clients.</p>\n</li>\n<li><a href=\"http://www.alistapart.com/issues/268\">A List Apart: Issue 268</a>\n<p>So A List Apart starts off with the new direction in fine fashion with <a href=\"http://www.alistapart.com/articles/webstandards2008\">Web Standards 2008: Three Circles of Hell</a> and <a href=\"http://www.alistapart.com/articles/testdriven\">Test-Driven Progressive Enhancement</a>. Molly’s article gives a great insider’s perspective on some of the groups that are working to continue the advancement of web standards.</p>\n</li>\n<li><a href=\"http://forabeautifulweb.com/blog/about/five_css_design_browser_differences_i_can_live_with/\">Five CSS design browser differences I can live with</a>\n<p>I agree totally with Andy here. I think as long as what you are doing with advanced CSS selectors is not essential to being able to read the content, I say we go for it. There is only one problem: clients. I guess we will just have to work hard trying to educate our clients.</p>\n</li>\n<li><a href=\"http://ajaxian.com/archives/jquery-finds-its-way-into-microsoft-and-nokia-stacks\">jQuery finds its way into Microsoft and Nokia stacks</a>\n<p>It’s great to see jQuery getting usage from some big names; it can only do good things for the library.</p>\n</li>\n<li><a href=\"http://jeffcroft.com/blog/2008/sep/30/when-can-we-stop-talking-about-supporting-browsers/\">When can we stop talking about “supporting” certain browsers?</a>\n<p>I think Jeff makes a great point here: if you know what you are doing with web development, your sites should be “supported” in <strong>all</strong> browsers.</p>\n</li>\n<li><a href=\"http://www.thinkvitamin.com/features/webapps/the-future-of-web-apps-in-an-integrated-world\">The Future Of Web Apps In An Integrated World</a>\n<p>This is an awesome article discussing what our world could be like if our phones could control everything. I want to live in that world.</p>\n</li>\n</ul>',NULL,1827,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','4ba62583-0997-4a89-b9b2-f68cb0fc20b5',1,NULL,NULL,NULL,NULL),(1398,1883,'Still Publishing Summary RSS Feeds?',NULL,'<p>While there is no “correct” choice in the full vs. summary RSS feed debate, I came across a situation this weekend that reinforced my opinion for full feeds.</p>\n\n<p>The past few days, I was at <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a>, and I only had access internet access on Monday and Tuesday during the day. Now, I wanted to read my RSS feeds at other times, so I took my Google Reader offline with <a href=\"http://gears.google.com/\">Gears</a>, and started to read through them.</p>\n\n<p>This worked great until I got to feeds that only gave a summary. How was I supposed to read the article? Stop begging for page views and give me the content.</p>\n\n<p>I guess it’s just one more thing to consider when trying to decide whether to choose full vs. summary. Have your own opinion? Vote below.</p>\n\n<h2>Which do you prefer?</h2>\n[polldaddy poll=1001137]',NULL,1828,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','2eb375f5-a18d-4c3c-a489-24970f8d6836',1,NULL,NULL,NULL,NULL),(1399,1884,'Weekly Link Round-Up #50/51',NULL,'<p>Well again, I am slow getting a blog post written. I have 4 drafts saved right now! I spent last weekend at <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a>, and I really enjoyed myself. So, here are some links from the past 2 weeks:</p>\n\n<ul><li><a href=\"http://dev.opera.com/articles/view/automatic-numbering-with-css-counters/\">Automatic numbering with CSS Counters</a>\n<p>Wow, I never knew this existed. Although if a user does not have a CSS capable browser, you better make sure the numbers are not essential to the content.</p>\n</li>\n<li><a href=\"http://www.digital-web.com/articles/concept_design_tools/\">Concept Design Tools</a>\n<p>I love the backup software example.</p>\n</li>\n<li><a href=\"http://www.snook.ca/archives/javascript/jquery-bg-image-animations/\">Using jQuery for Background Image Animations</a>\n<p>Jonathan Snook shows how some simple jQuery can add some interesting hover effects.</p>\n</li>\n</ul><ul><li><a href=\"http://www.thinkvitamin.com/features/design/designing-user-centric-web-sites\">Designing User-Centric Web Sites</a>\n<p>A discussion about creating a <em>user-centric</em> site. In the future, this definitely seems like it is going to be the direction that a lot of websites are going to go in.</p>\n</li>\n<li><a href=\"http://gmailblog.blogspot.com/2008/10/new-in-labs-stop-sending-mail-you-later.html\">New in Labs: Stop sending mail you later regret</a>\n<p>A new Labs feature, Mail Goggles, will try to prevent you from sending those late night drunk emails. It asks you to solve math problems when sending emails late at night on the weekends.</p>\n</li>\n<li><a href=\"http://www.cabel.name/2008/10/on-wedding-design.html\">On Wedding Design</a>\n<p>While I’m not a big design nerd, I found this recap of Cabel’s wedding and all of the design he did for it really interesting. I definitely want a photo booth at my wedding!</p>\n</li>\n<li><a href=\"http://mezzoblue.com/archives/2008/10/07/zoom/\">Zoom</a>\n<p>Dave Shea starts a good discussion about whether browsers using page zoom will change the way that we slice websites. I actually have begun sizing my text absolutely and “<a href=\"http://danielmall.com/archives/2007/04/20/soft_serve.php\">soft-serving</a>” relative units to IE6.</p>\n</li>\n<li><a href=\"http://www.airbagindustries.com/archives/airbag/foxworthy.php\">Foxworthy</a>\n<p>I’m definitely a perfectionist, not a purist.</p>\n</li>\n<li><a href=\"http://www.alistapart.com/issues/269\">A List Apart: Issue 269</a>\n<p>I love that Aaron Gustafson compares the web to an M&amp;M in his article entitled <a href=\"http://www.alistapart.com/articles/understandingprogressiveenhancement\">Understanding Progressive Enhancement</a>. Zeldman gets sentimental and talks about A List Apart after <a href=\"http://www.alistapart.com/articles/tenyears\">Ten Years</a>.</p>\n</li>\n</ul>',NULL,1829,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','9a373420-0e25-4267-80e0-13b910c80398',1,NULL,NULL,NULL,NULL),(1400,1885,'Weekly Link Round-Up #52',NULL,'<p>Well hopefully this is going to be one of my last weekly round-ups. In my redesign, I am going to have an area made especially for asides where I can just post a link and a little description. The problem is just finding time to finish my design. So here are the links I enjoyed in the past week:</p>\n\n<ul><li><a href=\"http://particletree.com/features/interfaces-and-color-blindness/\">Be Kind to the Color Blind</a>\n<p>Chris Campbell, who has a color vision deficiency, shares techniques to make sure that your designs are still effective to those who have vision issues with color.</p>\n</li>\n<li><a href=\"http://meyerweb.com/eric/thoughts/2008/10/22/javascript-will-save-us-all/\">JavaScript Will Save Us All</a>\n<p>Since browser development is so slow, Eric talks about utilizing JavaScript to extend the browser to support CSS3.</p>\n</li>\n<li><a href=\"http://www.digital-web.com/articles/everything_you_know_about_CSS_Is_wrong/\">Everything You Know About CSS Is Wrong</a>\n<p>Rachel Andrew’s discusses how we will be able to utilize the table value of the display property to make layout much easier.</p>\n</li>\n</ul><ul><li><a href=\"http://www.alistapart.com/issues/270\">A List Apart: Issue 270</a>\n<p>Aaron Gustafson discusses <a href=\"http://www.alistapart.com/articles/progressiveenhancementwithcss\">Progressive Enhancement with CSS</a> and the A List Apart readers provide <a href=\"http://www.alistapart.com/articles/workingfromhomereadersrespond\">some tips from working from home</a>. I’m not sure I agree with Aaron’s technique of using multiple stylesheets. I think using just one makes it easier to manage, but to each his own.</p>\n</li>\n<li><a href=\"http://www.darrenhoyt.com/2008/10/22/creating-custom-listings-with-expression-engine-part-ii/\">Creating Custom Listings with Expression Engine, Part II</a>\n<p>I have been trying to learn as much about EE as possible, and this tutorial definitely give some insight on how to customize it and utilize its power.</p>\n</li>\n<li><a href=\"http://jasonsantamaria.com/articles/on-the-subject-of-design/\">On the Subject of Design</a>\n<p>This is just a simple list of design books that Jason recommends, but I just love the way he lays things out.</p>\n</li>\n<li><a href=\"http://www.guardian.co.uk/help/insideguardian/2008/oct/22/full-fat-rss-feed-upgrade\">Upgrading our RSS feeds</a>\n<p>The Guardian becomes the first major newspaper to provide full RSS feeds. According to my <a href=\"//trevor-davis.com/blog/web/still-publishing-summary-rss-feeds/\">poll from last week</a>, this makes sense.</p>\n</li>\n<li><a href=\"http://www.wilsonminer.com/posts/2008/oct/20/relative-readability/\">Relative readability</a>\n<p>Wilson Miner discusses why 16 pixels is the most readable font size to use on the web.</p>\n</li>\n<li><a href=\"http://forabeautifulweb.com/blog/about/is_css3_rgba_ready_to_rock/\">Is CSS3 RGBa ready to rock? (screencast)</a>\n<p>Andy Clarke talks about Dan Cederholm’s talk at An Event Apart Chicago on RGBa. I had never really heard of it until Dan talked about it, but it sounds really promising.</p>\n</li>\n</ul>',NULL,1830,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','2a196d8d-8197-4dbb-9fac-7cf5ea7e7357',1,NULL,NULL,NULL,NULL),(1401,1886,'Weekly Link Round-Up #53',NULL,'<p>Another busy week for me. I’ve finally finished my review of my experience at <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a>, and I will be publishing it later this week. Yes, I know it’s weeks late, but it is really long and was helpful in helping me remember what I learned. So, here are the links I found interesting last week:</p>\n\n<ul><li><a href=\"http://attackadgenerator.com/a/editor\">Attack Ad Generator</a>\n<p>A political attack ad generator full jQuery goodness.</p>\n</li>\n<li><a href=\"http://freesitevalidator.com/\">Free Site Validator</a>\n<p>Scan your entire website to search for validation errors. Although, when I tried it, it didn’t seem to get further than the home page. Good idea in concept at least.</p>\n</li>\n</ul><ul><li><a href=\"http://jontangerine.com/log/2008/10/font-face-in-ie-making-web-fonts-work\">@font-face in IE: Making Web Fonts Work</a>\n<p>Jon Tangerine discuses how the current state of @font-face embedding and how to implement it.</p>\n</li>\n<li><a href=\"http://www.boxesandarrows.com/view/prototyping-with\">Prototyping with XHTML</a>\n<p>Really nice overview of the process of prototyping. It’s not anything we don’t already know, but it’s nice to see the entire process described in words.</p>\n</li>\n<li><a href=\"http://www.smashingmagazine.com/2008/10/29/expressionengine-developers-toolbox/\">Expression Engine Developer’s Toolbox</a>\n<p>Expression Engine seems to be the hot new thing and for good reasons. I have begun to play with a little bit, but I am trying to learn as much as possible about it.</p>\n</li>\n</ul>',NULL,1831,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','14aa8f00-be15-4f0d-93bd-b92f23f62a1b',1,NULL,NULL,NULL,NULL),(1402,1887,'Change We Can Believe In',NULL,'<p><img src=\"//assets.trevor-davis.com/uploads/images/content/2008/11/change-we-can-believe-in.gif\" alt=\"change-we-can-believe-in\" width=\"468\" height=\"119\" /></p>\n\n<p>Thank you America for doing the <strong>right thing</strong>.</p>',NULL,1832,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','2050347b-3989-4915-99a0-d4637700744a',1,NULL,NULL,NULL,NULL),(1403,1888,'An Event Apart Chicago',NULL,'<p>I was lucky enough to have my company pay for myself and my two colleagues, <a href=\"http://gdarb.com/\">Brad</a> and <a href=\"http://seeyouin1984.com/\">Adrian</a>, to go to <a href=\"http://aneventapart.com/events/2008/chicago/\">An Event Apart Chicago</a>. Like my <a href=\"//trevor-davis.com/blog/web/an-event-apart-boston-summary/\">An Event Apart Boston Summary</a>, I thought I would create a similar post. This is going to end up being a <strong>really long post</strong>, so I would recommend reading it in pieces or skimming. I am going to split it up into two pages so that the page does not get even more ridiculously long. So be sure to go on to the next page after reading the first one.</p>\n\n<h2>Understanding Web Design – Jeffrey Zeldman</h2>\n<p>Zeldman is such an amazing speaker and web evangelist. He first begins by asking the question “What does a web designer need most?” CSS? PHP? Ruby on Rails? Nope. Empathy (ok, he joked that we need Advil too).</p>\n\n<p>He described this more by showing a screenshot of the old <a href=\"http://real.com/\">RealPlayer</a> site and labeling everything that looked like a link. The truth was, not that many of them were actually links. The web designer for RealPlayer has to respond to two different internal strategies: help a user find the free player and sell the free player. Those two strategies are basically competing and fight against each other. As Zeldman says, “It’s <strong>rough out there</strong> for a web designer”.</p>\n\n<p>The key to good design is that the user needs to be able to use the website with a short learning curve. Like Steve Krug says, “<strong>Don’t make me think</strong>”. He uses another site, <a href=\"http://www.consumersearch.com/\">Consumer Search</a>, as an example. Take a look at the site. Doesn’t it look like a phishing website? We have no clue what this site actually does.</p>\n\n<h3>College? What for?</h3>\n<p>Another hard part of being a web designer is the lack of good education programs for the field. Just because someone can learn how to use Photoshop, it does not mean they are a designer. “Teaching <strong>Excel</strong> is not the same as teaching <strong>business</strong>”.</p>\n\n<p>After reviewing all of the data from the <a href=\"//trevor-davis.com/blog/news/i-took-the-web-design-survey-2007/\">2007 Web Design Survey</a>, Zeldman wonders if education is even relevant. 47% of people surveyed said that what they studied in college was unrelated to what they do today. I can’t remember how I responded, but very little of what I learned in college do I use today. They also determined that as income increases, relevance decreases. This actually makes sense since the more money you make, the longer you have been out of college. Technology changes. Fast.</p>\n\n<h3>No Respect</h3>\n<p>Think about when you meet someone who says they are an architect or surgeon, you are usually pretty impressed with the person. But think about when people meet web designers, they think that they just play on the internet. No respect.</p>\n\n<p>But did we bring this onto ourselves? There is no standardization of titles, no standardization of departmental organization, and not that much money in the web field.</p>\n\n<h3>In Search of Excellence</h3>\n<p>Another problem with the perception of the web, I that non-web people don’t understand it. All they here in the news is how important Facebook’s redesign is, how MySpace is adding music to profiles, how much money some startup got, and other crap like that. Is that really what’s important?</p>\n\n<p>So fine, maybe they so all these sites that claim they have won awards. Take the <a href=\"http://www.coca-cola.com/\">Coca Cola</a> site. Really? Award winning? Some kind of rainbow exploding from a bottle? Go ahead and disable JavaScript and try to visit the site. Yeah, you can’t get past the first page. Award winning (note the sarcasm).</p>\n\n<h3>Web Design is Different</h3>\n<p>The web is different than print design. Comparing illustration to web sites it just wrong. People spend time on normal web sites usually: their bank, insurance, news, etc. sites. Nobody spends time on the Coca Cola website.</p>\n\n<p>“Good design is <em>invisible</em>. Good web design is about the character of the content, not the character of the designer.” Nobody comes to your site to see your “awesome” stock photo. They come for the words.</p>\n\n<h3>12 Tips to Empathetic Web Design</h3>\n<ol><li>Start with the user / <em>your passion</em>.</li>\n<li>Know yourself, know what your limitations are.</li>\n<li>Find the right clients (job) – during initial client meetings, shows your true personality. If the clients don’t like it, tell them to take a hike.</li>\n<li>Sell ideas, not pixels!</li>\n<li>Saying “I don\'t know” is okay. Just tell them you’ll find out later.</li>\n<li>Build trust. Show that you really care about the project, ask questions.</li>\n<li>Bring out the big guns, reference articles by experts when necessary, it gives clients reassurance.</li>\n<li>Create a paper trail. Always be able to refer back to something.</li>\n<li>Never underprice your work.</li>\n<li><a href=\"http://www.no-spec.com/\">Say no to SPEC</a>.</li>\n<li>Say no to rush jobs. Lack of planning on your part does not constitute an emergency on my part.</li>\n<li>End with the user / your passion.</li>\n</ol><p>Man, Zeldman is awesome. I’m glad that he’s on our side.</p>\n\n<h2>Debug / Reboot – Eric Meyer</h2>\n<p>This was one of the more technical talks of the conference, and it was a good one. Eric first started by showing a code snippet:</p>\n\n<div class=\"codeblock\"><code>\n&lt;p&gt;&lt;a href=\"\"&gt;&lt;/a&gt;&lt;/p&gt; <br />&lt;p&gt;&lt;img src=\"\" alt=\"\" title=\"\" /&gt;&lt;/p&gt; \n\n</code></div>\n\n<p>Yep, perfectly valid. According to a validator. Validators can’t tell you everything. This is why good web development will never be able to be completely done by machines. But validators really are just tools for us to use to make sure we are doing things correcty.</p>\n\n<h3>Debug CSS</h3>\n<p>I had previously read Eric’s article about <a href=\"http://meyerweb.com/eric/thoughts/2007/09/07/diagnostic-styling/\">Diagnostic Styling</a>, but I guess I didn’t really think too much about using it. This could definitely be useful when creating pages, but it is <strong>definitely not for production use</strong>. It can easily be added as a user stylesheet using the web developer toolbar.</p>\n\n<p>A couple of new CSS things that I learned were the <a href=\"http://www.w3.org/TR/css3-selectors/#empty-pseudo\">empty</a> and <a href=\"http://www.w3.org/TR/css3-selectors/#negation\">not pseudo selectors</a>. The <strong>empty pseudo selector</strong> will select elements that do not have any nodes as children, text included. So it could be useful to use on some content management systems that generate a lot of extra empty elements. Here is an example of hiding all empty paragraphs:</p>\n\n<div class=\"codeblock\"><code>\np:empty { display: none; } \n\n</code></div>\n\n<p>The <strong>not pseudo selector</strong> will select elements that are not something. To better explain that, here is an example of giving a border to all images that do not have an alt attribute defined:</p>\n\n<div class=\"codeblock\"><code>\nimg:not([alt]) { border: 2px solid red; } \n\n</code></div>\n\n<p>With debug CSS, there are some times when you style all of a type of element, then override the style for the elements that have what you are looking for. This example should explain it a little better:</p>\n\n<div class=\"codeblock\"><code>\nth { border: 1px solid red; }<br />th[scope=\"col\"], th[scope=\"row\"] { border: none; } \n\n</code></div>\n\n<p>So what is happening here is that you are styling all table header cells with a red border, then table header cells that have a scope attribute will have no border. Which accomplishes the goal of giving all table header cells without a scope attribute of col or row a red border.</p>\n\n<p>The important thing about Eric’s debug CSS is that you should modify it to fit your situation. Eric is just creating this to show an example of what is possible, not to be the only solution. So get creative.</p>\n\n<p>Another point that Eric made when debugging CSS, was to use the outline property instead of a border. Since borders affect the layout of elements, they can sometimes change the layout of the page. But outlines do not affect the layout, which I didn’t realize until now.</p>\n\n<h3>Reboot CSS (not reset)</h3>\n<p>Eric then went on to talk about his infamous <a href=\"http://meyerweb.com/eric/thoughts/2008/01/15/resetting-again/\">reset stylesheet</a>. The main point of this part of Eric’s discussion was that you should not just drop in his reset stylesheet if there is an more effective way to accomplish the same thing.</p>\n\n<p>For example, don’t set the ol and ul list-style equal to none if you are just going to redefine it later to have a list-style. Instead, turn the reset into a baseline. Modify the reset stylesheet to suit your project, don’t use his reset stylesheet without modifying anything. Don’t reset then re-style, reboot instead.</p>\n\n<p>Eric reinforced this point by saying he did not like the use of CSS frameworks. He thinks everyone should create their own “framework”. He said that once you get into someone else’s framework and try to modify their code, you have to change the way that you think about coding and try to think like the person who created the framework. He also thinks that they end up being bloated.</p>\n\n<p>His reset CSS has evolved over time after just thinking about the concept more. For example, he changed it so that it does not use <strong>font: inherit</strong> because of lack of support in IE. He also stopped using generated content to add quotes to the quote and blockquote elements. He compared relying on a browser to generate content to relying on a browser to have JavaScript enabled. There are still some browsers that do not support generated content, and if the quotes are important enough, they should be in the actual content.</p>\n\n<h2>Storytelling by Design – Jason Santa Maria</h2>\n<p>Jason has been one of my favorite designers for a while now. With his <a href=\"http://jasonsantamaria.com/\">recently redesigned site</a>, he has reaffirmed how great of a designer he is.</p>\n\n<p>As a child we are taught to look for the meaning from images in stories, this is called <strong>graphic resonance</strong>. Images are used to reinforce the story. Remember the saying, a picture can tell a thousands words?. Yeah, that’s what he was talking about.</p>\n\n<p>Designers need to consider themselves as the narrator. The first example that Jason gave was of Charles Joseph Minard’s <a href=\"http://www.edwardtufte.com/tufte/graphics/poster_OrigMinard.gif\">Map of Napoleon’s March</a>. This information could have easily been represented as a bar graph, but Charles’ map has much more impact. Seeing how Napoleon’s troops dwindle in size really help us to visualize the magnitude of what happened.</p>\n\n<p>The second example Jason gave was the article in <em>Wired</em> magazine, <a href=\"http://www.wired.com/wired/archive/14.08/spamking.html\">The Sleazy Life and Nasty Death of Russia’s Spam King</a>. He showed the spread from the actual printed magazine, and they really captured the feeling of the article. But then he showed how the article was translated onto the web, and it was quite boring. “Basically, we’ve distilled the stories down to just content”.</p>\n\n<p>We all know that <strong>content is king</strong>, but that doesn’t mean we can’t enhance the content and tell a story with images. As David Carson said, <strong>“Design can’t not communicate”</strong>.</p>\n\n<p><a href=\"http://www.jasonsantamaria.com/\">Jason’s own site</a> is an incredible example of telling a story with each blog entry. Jason is basically “art directing” each article on its own.</p>\n\n<h3>Why Are We Plagued By Sameness?</h3>\n<p>There is so much of the web today that is so similar. Logos look the same. Sites all have similar layouts. Web designers complain that they are restricted by the browser, but is that really the reason why everything is similar? There are plenty of sites that really break from the mold: <a href=\"http://noonebelongsheremorethanyou.com/\">No One Belongs Here More Than You</a>, <a href=\"http://abriefmessage.com/\">A Brief Message</a>, <a href=\"http://www.fray.com/\">Fray</a>, and <a href=\"http://www.jasonsantamaria.com/\">Jason’s site</a> just to name a few.</p>\n\n<p>Armin Vit recently inquired <a href=\"http://www.underconsideration.com/speakup/archives/004033.html\">Landmark Web Sites, Where Art Thou?</a> Well, a simple reason is because the web really is young. Now is when we are going to start seeing landmark websites. There are still advancements to be made, and still new stuff to figure out. There isn’t only one way to present information. Jason realized that when designing, you always start from a blank slate, whether it’s a piece of paper or a blank Photoshop canvas.</p>\n\n<h3>The Nature of the Medium</h3>\n<p>Jason then went on to describe four common principles of the web:</p>\n\n<ol><li>The metaphorical page</li>\n<li>Ubiquity &amp; WYSIWYG</li> \n<li>Collections of pages</li>\n<li>Layout</li>\n</ol><h4>The metaphorical page</h4>\n<p>If we take a look back in history, the canvas that designers has changed drastically, from stone, to paper, to digital canvases. But still, it is all starting from a blank slate. The web is the one place that is basically infinite. It’s fluid. Most of the web runs on a single fixed dimension: width. It’s not like we are given a 8′x10′ book cover to design. The web really has no finite value.</p>\n\n<p>Jason gave the example of Ladislav Sutnar, who created the two page spread. Ladislav probably could not fit everything on one page, so he decided to break the convention and spread it across two pages. “If you have new problems, look for new solutions”.</p>\n\n<h4>Ubiquity &amp; WYSIWYG</h4>\n<p>Another reason why the web is so different is because we have no idea what kind of device people will be looking at websites on. With a printed newspaper, there is only one way to look at it. With advancing technology, people can visit websites online, on an iPhone, screen-reader, and more. When people click something on a website, things can happen. The web is an experience.</p>\n\n<h4>Collections of pages</h4>\n<p>With a book, you can flip to the last page and see what you have ahead of you. With websites, there is no real way to grasp the depth. Take a look at <a href=\"http://harpers.org/archive\">Harper’s Magazine’s Archive</a>. Sure, you can grasp that there are 158 years and 12 months per year, but there are tons of articles per month. You cannot ever grasp how large the site is without clicking into every article. By the time you finished with that, there would probably be new articles.</p>\n\n<h4>Layout</h4>\n<p>Most people have probably heard of the <a href=\"http://en.wikipedia.org/wiki/Golden_ratio\">golden ratio</a> and the <a href=\"http://en.wikipedia.org/wiki/Rule_of_thirds\">rule of thirds</a>. But again, since the web can be viewed on so many different devices, they do not always apply. “Design ideals rely on predictable dimensions” But on the web, we can’t predict what dimension that will be.</p>\n\n<h3>Conclusion</h3>\n<p>As Jason summed it up, he said that “Design for the web has been chiefly driven forward by the technology rather than the message. The form of design should be driven by the story.” So the question is: <strong>how do you stand out from all the other crap online?</strong>\n\n\n</p><h2>Design Criteria: Actionable Ideas – Sarah Nelson</h2>\n<p>I had never heard of Sarah Nelson before, and I was a little worried because she was presenting right before lunch. It ended up being a great presentation, and she had me captivated the entire time.</p>\n\n<h2>What are Design Criteria?</h2>\n<p>Design Criteria are a set of 5-7 short, memorable strategic directives your team can use to focus design activities, and unlike project goals, success metrics brand statements, universal design principles or mission statements, design criteria emphasize specific rules your team will follow when tackling the problem at hand.</p>\n\n<p>Instead of looking at design criteria as a constraint, we should look at them as freedom. They help us generate ideas, evaluate ideas, make decisions, and move forward. Here are a few examples of familiar constraints that Sarah gave:</p>\n\n<ul><li>Budget</li>\n<li>Time</li>\n<li>People</li>\n<li>Information</li>\n<li>Media</li>\n<li>Resources</li>\n</ul><p>Sarah also gave an example of some constraining tools:</p>\n\n<ul><li>Mission Statements</li>\n<li>Brand Guidelines</li>\n<li>Personas/Demographics</li>\n<li>Design Principles/Best Practices</li>\n</ul><p>These tools are used to help designers to focus their designs. If design constraints are defined well at the beginning of a project, it makes creating the actual design much easier.</p>\n\n<p>I’m sure everyone has heard of the term “think outside the box” well Sarah said that before you can think outside the box, you have to know and define the box. The problem is, we don’t work alone, so we cannot define the box ourselves. Once we all understand the box, we can use that as a platform to generate ideas and figure out which ideas are the most actionable.</p>\n\n<h3>The Creative Process</h3>\n<p>The creative process is comprised of divergence and convergence approaches, which each have a very distinct way of thinking.</p>\n\n<h4>Divergence</h4>\n<p>You use a divergent approach when you are trying to discover new things. This is the process where there is no wrong answer, and you are really just in discovery mode. This is comprised of research activities. The next step is to determine what is actionable and find the “solution”.</p>\n\n<h4>Convergence</h4>\n<p>This is when you are seeking a conclusion. You are examining the actionable ideas and solving the problem. The point of design is to solve a problem.</p>\n\n<p>I found Sarah’s talk to be very interesting. As I have never been formally trained in graphic design, it is important for me to understand the process.</p>\n\n<h2>On-the-Spot Usability Reviews – Robert Hoekman, Jr.</h2>\n<p>Instead of having a formal presentation, Robert took websites suggested from the crowd and did a usability review.</p>\n\n<p>The 3 most important things when determining the usability of a site is the purpose, benefit, and usage. Before creating a site, we must determine what a person would want to find.</p>\n\n<p>When using large branding images on a site they should be considered billboards on a highway. Do they convey the message when driven by at 60 mph? To help this, less and more concise text is preferable. <strong>Do the images help to tell the story of the content?</strong></p>\n\n<p>When you have a form with many steps, there should be some sort of progress meter to let the user know what they are up against. If you can avoid them, select menus on forms are generally bad for usability. Out of sight, out of mind.</p>\n\n<p>When creating calls to actions, people generally do better when they think about doing instead of structure. So when things are organized by task, instead of object, users succeed more.</p>\n\n<h3>5 Second Usability Test</h3>\n<p>This is a similar idea to the billboard example. It is a quick and easy way to determine the usability of a page. Robert suggests the following steps:</p>\n\n\n<ol><li>Take a page and show it to someone for 5 seconds</li>\n<li>Take it away and ask them to write down everything they remember about the page</li>\n<li>One of the things they write down should be the most important thing that you want them to do</li>\n</ol><p>If the user does not list the most important thing you are trying to convey on the page, then you are in trouble and should re-evaluate the page. An easy way to do this is to use the website <a href=\"http://fivesecondtest.com/\">Five Second Test</a>.</p>\n\n<p>Robert created a test and had everyone take the test. One interesting thing about it was that he twittered the link. Twitter is such a simple tool, and it was perfect for this situation.</p>\n\n\n<h2>Designing the Details: Web-App UI Design Beyond the Basics – Jason Fried</h2>\n\n<p>The basis of Jason’s talk was the idea of <strong>craftsmanship</strong>. He started with the comparison of an Ikea desk to a desk made by a craftsman. Sure, the Ikea desk is perfectly usable, but it feels a little cheap. The desk made by the craftsman is sturdy and solid. So if we just add a little bit of craftsmanship to our design, we can vastly improve them.</p>\n\n<h3>Weak, Normal, Strong</h3>\n<p>On the web, there is normal text, and emphasized (strong) text, but there is no de-emphasized element. So how do we de-emphasize? Using design of course.</p>\n\n<p>For example, instead of making everything emphasized, de-emphasize something by giving it a lighter color. Most people focus on the normal and emphasized text, but not enough focus on the weak. Jason then went through some of the 37 Signals applications to show us examples.</p>\n\n<h3>Think About the Flow, Anticipate the Next Action</h3>\n<p>Jason discussed how the functionality of iPrioritize and Ta-da List were very similar, but Ta-da List thinks about what the user wants to do next. Ta-da list takes less clicks and streamlines the process of using the application.</p>\n\n<p>You should consider the <strong>before, during, and next</strong> actions of the application flow. If a user goes to a page with a form on it, focus the first form field so they don’t have to click anywhere. You should always focus the user’s attention on the next thing you think they want to do.</p>\n\n<h3>The Details</h3>\n<p>It’s amazing how much little details can make a difference. Designers should consider words as important as pixels. Copywriting is an integral part of interface design. For example, if you are doing a search for contacts, and only 1 contact is returned, say that <strong>1 contact</strong> was found. if 10 were found, say that <strong>10 contact</strong> were found. Just one simple letter. All it takes is a little bit of extra coding.</p>\n\n<p><strong>Write in your applications like you talk</strong>. For example, use the phrase, “who can see this person” instead of “permissions”. Always be clear over clever. Instead of “advanced search”, use “search by city, state, country, zip, phone, or email”. Think about how you would say something in real conversation, make it more human-like. Label the button “Save This Item” instead of “Save Item”.</p>\n\n<p>When developing an application, you definitely do not want to spent too much time at the beginning on these small details. The flow and functionality should be established, then work on the fine details. Jason said at 37 Signals they use sharpies instead of pencils when sketching at the beginning of the process. </p>\n\n<p>When you have to explain something, like instructions for a form, use 3 sentences. The sentences should be structured as follows:</p>\n\n<ol><li>Explain what is going to happen</li>\n<li>Give an example</li>\n<li>Provide a suggestion/recommendation</li>\n</ol><p><strong>Timing is everything</strong>. If you have a drop down menu, allow for a mistake when hovering. If the hover off of it for a second, then hover back over it, don’t make the menu disappear.</p>\n\n\n<p><strong>Have a photographic memory</strong>. If someone is entering a lot of items in a row, remember the settings from the last time they entered it. It is most likely that they will want to have the same preferences checked.</p>\n\n<p><strong>Give the user feedback on that just happened</strong>. Gracefully fade something out instead of quickly hiding it. Give a slight flash of yellow before fading back to white. Give the user an update in words so that they know what happened.</p>\n\n<p><strong>Not everything needs to be equally obvious</strong>. There are two different users: regular users and power users. You do not need to make advanced tasks obvious for everyone. As long as regular users can accomplish the same task through a different path, it’s not a problem. For example, not many people know that in Backpack, you can drag items to the sidebar to create a new page.</p>\n\n<p>There is a lot of planning you can do for an application, but you never know if a product is going to be any good until you actually use it. So like the popular saying: <a href=\"http://en.wikipedia.org/wiki/Dogfooding\">eat your own dogfood</a>.</p>\n\n<h2>Underpants Over My Trousers – Andy Clarke</h2>\n<p>I had never heard Andy talk, but I loved his book <em>Transcending CSS</em>. His talk was a little contradictory to what most of the “experts” say, but I thought it was great. His talk was centered around the thought that we can gain inspiration for designing from comic books.</p>\n\n<p>Every time you pick up a new comic book, you have to learn how to read it. Taking the inverse of Steve Krug’s “<strong>Don’t Make Me Think</strong>” mentality, Andy suggests that we should engage the user and make them think. Obviously he is not suggesting that we make things hard to understand; he just thinks that we can create much more interesting and compelling layouts.</p>\n\n<p>Andy recommends that you stick to a grid, and be uniform, but then break out to enforce a specific, dramatic message. What goes on between the panels is just as important as what happens in them. Comics make the user be creative and fill in the story between the panels. He recommended reading Scot McCloud’s <em>Understanding Comic Books</em> to understand a lot of techniques that are used in comic books.</p>\n\n<p>Not everyone visits your website be going to the homepage first. Just as not everyone starts reading a comic from the beginning of the series. Make all of your pages unique. Don’t get stuck in a template.</p>\n\n<p>Andy’s talk was definitely more inspirational than anything. It was quite interesting to see the examples of comics and examining the way that they flow from panel to panel.</p>\n\n<h2>Special Adobe Session: Web Workflow with the Adobe Creative Suite – Adam Pratt</h2>\n<p>This was a different kind of session, more like a sponsor session, but it was interesting to see some of the new stuff in Creative Suite 4. Adam popped open the different applications and gave us a quick overview of the new stuff.</p>\n\n<p>First off, Adam said that Flash is on 98% of devices (not just computers, phones as well). Probably on of the most anticipated features in Photoshop is the content aware scaling. Basically, you can cram more parts of the photo into a smaller area without squishing or stretching it. I also noticed that Photoshop added the tabbed interface that a lot of the other Adobe applications already had.</p>\n\n<p>Flash can run natively in all CS4 application. So that means you can run things like Adobe Kuler in Photoshop to get color scheme ideas.</p>\n\n<p>You can also get real time screen sharing with up to 2 people . As long as one person has CS4, the others just need flash and an internet connection. You can give control to the others that do not have CS4. You can see everything on the computer, not just CS4 applications.</p>\n\n<p>You can drop a PSD in Dreamweaver, and when the PSD changes, you can update the image in Dreamweaver with just the click of a button. When you open a file in Dreamweaver, it also pulls in all CSS and JS that are being called on the page. In it’s live code mode, it is now running Webkit. You can freeze JavaScript, and use the code navigation to see where the styles come from.</p>\n\n<p>Now if CS4 weren’t so damn expensive, that’d be great.</p>\n\n<p><a href=\"//trevor-davis.com/blog/web/an-event-apart-chicago/2/\">Continue to Page 2 »</a></p>\n\n\n<h2>Eric Meyer Live Code Workshop</h2>\n<p>Eric gave attendees the opportunity to submit CSS problems they were having, and he would go through and help them fix it. I didn’t have any unresolved issues, so I just enjoyed listening to what Eric had to say. Nothing groundbreaking, but there are a few points that I took away.</p>\n\n<p>One thing that I guess I don’t really think about is setting a background color on the body element if the design calls for white. If a browser changed their default background color, then the design could drastically change.</p>\n\n<p>There has been some talk recently about using absolute font sizes since a lot of the newer browsers have full page zoom functionality. I have actually decided the switch to use absolute font sizes and to “<a href=\"http://danielmall.com/archives/2007/04/20/soft_serve.php\">soft serve</a>” relative sizes to IE6. Eric suggested to use an absolute font size as the base size and then relative sizes from there on out. I’m not sure if I agree with that though, because you may not want all font sizes to be affected by changing the base size.</p>\n\n<p>There are a couple of ways to contain floats: float the container or assign the container a property of overflow with a value of hidden or auto. Using the overflow property feels a little bit like a hack, but it gets the job done. I’m not really clear on why this actually contains the float, and I wonder if browsers will break this functionality at any point.</p>\n\n<p>Surprising as it may be, Eric even advocated using a table for laying out a form. Although, I really do prefer using an <a href=\"//trevor-davis.com/blog/tutorial/flexible-and-semantic-forms-with-a-little-jquery/\">ordered list for laying out forms</a>.</p>\n\n<p>Someone even asked if Eric knew a way to remove the yellow background on form fields that the Google Toolbar automatically adds to fields it knows how to fill in. He came to the conclusion that you could probably remove it with JavaScript, but it could destroy any focus background color that a user could have setup. Also, if the user has the Google Toolbar installed, then that probably means they may use the ability to automatically fill in the forms.</p>\n\n<h2>Design Lessons in Chess – Rob Weychert</h2>\n<p>Who would have thought that you could learn design lessons from learning chess? Well Rob Weychert did of course, and he shared his lessons with us. First, he started with a couple of basic correlations between chess and web design.</p>\n\n<h3>Chronology</h3>\n<p>Chess involves playing the beginning, middle, and end game. Web design has a similar chronology: information architecture, visual design, and the site build out. Just as you need to research your opponent before playing them, you need to do research to begin any project.</p>\n\n<h3>Opponents</h3>\n<p>In chess, you are only playing one opponent, but when working on a website, you are typically facing three opponents: the users, the client, and your colleagues. You want to limit the users’s options on the web site and help them focus on the task at hand. With the client, you want to work together with them to reach the goal of the web site. It is important to surround yourself with colleagues that will challenge you. Collaborating and challenging each other is the best way to grow in this industry.\n\n</p><h3>The Lessons</h3>\n<p>Rob then went on to describe the 8 lessons that he learned from playing chess.</p>\n\n<h4>1. Content is King</h4>\n<p>We have all heard it before, but sometimes it is easy to lose sight of this. In chess, the game is decided on the king. It is easy to get so focused on the king that you forget about the rest of the pieces. Sometimes we are so wrapped up in AJAX, jQuery, Photoshop, etc that we forget that the foundation of a website is its content. Yes, the other stuff is important, but the content is what needs to be served. So use your design to enhance the content.</p>\n\n<h4>2. Know Your Story</h4>\n<p>Rob gave us the example of project that needed to be like a newspaper from a specific time period. So what did Rob do? He researched the project by looking at old newspaper ads. Then to top it off, he used a typeface that really existed in the era.</p>\n\n<h4>3. Think Ahead</h4>\n<p>The web is constantly changing, and there are many ways for users to receive the content. It is not like a static medium like newspapers or books. You must plan for content to change and grow.</p>\n\n<h4>4. Don’t Get too Attached</h4>\n<p>While you think you may have come up with a great idea, keep looking, the changes are that you will probably come up with a better idea.</p>\n\n<h4>5. Act with Purpose</h4>\nFamous chess player Siegbert Tarrasch said “One badly-placed piece makes your whole position bad”. What Rob took from this was that we should be able to justify every one of the decisions we make. He broke down his slide design and gave reasoning behind every single one of his decisions.\n\n<h4>6. Obey Circumstance</h4>\n<p>Don’t put the solution before the problem and rely on your old bag of tricks. Each problem should come with its own solution.</p>\n\n<h4>7. Principles are Your Friends. Except When They’re Not</h4>\n<p>Principles are great to provide a foundation for a project. The best place to be is in the middle ground: you want to understand the principles, but understand with experience how to break them. Ralph Waldo Emerson said “The man who knows how will always have a job. The man who also knows why will always be his boss.”</p>\n\n<h4>8. The Journey is as Important as the Goal</h4>\n<p>In order to succeed, you need to have failures. You should learn something from every project, whether you fail or succeed. With this knowledge, you should be able to use a process of elimination to become successful.</p>\n\n<h2>Implementing Design: Bulletproof A-Z – Dan Cederholm</h2>\n<p>Derek Powazek was actually scheduled to talk, but he was unable to attend so Dan Cederholm stepped in. I enjoyed Dan’s talk last year at An Event Apart, and he definitely did not disappoint this year.</p>\n\n<p>Dan’s entire talk focused around the idea of <strong>craftsmanship</strong> in implementation. He wanted to take a look at ideas for <strong>bulletproofness</strong>, <strong>progressive enrichment</strong> (basically really cool stuff that doesn’t work in IE), and <strong>reexamining past methods</strong>.</p>\n\n<p>To show these ideas, Dan created a website called <a href=\"http://icedorhot.com/\">Iced or Hot</a>, and decided to come up with something for every letter of the alphabet.</p>\n\n<h3>a: Anchor Links with Meta Information</h3>\n<p>On the right hand side of Iced or Hot, there is a list of popular drinks. Dan decided to include the number of drinks within the anchor tag. Instead of absolutely positioning the number of drinks within the anchor and risk overlap with a really long drink name, Dan just floated the number of drinks to avoid collision.</p>\n\n<h3>b: Border-Radius</h3>\n<p>While CSS3 is still not officially implemented in all browsers, there are some browsers that are offering vendor specific properties (-webkit-border-radius, -moz-border-radius) to achieve CSS3 properties. So if you want to add rounded corners to something, and do not want to deal with slicing all those images, then just use border-radius. It degrades fine, and most of the time, rounded corners are kind of like an added bonus. This could also be useful when prototyping, before slicing the real images (if the corners are necessary in all browsers). Dan used these properties in a few places on Iced or Hot.</p>\n\n<h3>c: Color Transparency with RGBa</h3>\n<p>Browsers are starting to implement the opacity property (or a vendor specific version), but the problem with opacity is that it is applied to all of the element’s children. When you apply RGBa to an element, it will not affect its children. The one downside to RGBa is that it does not look like you can use hex values anymore, which are probably the more commonly used and easier to remember values. You would apply a .7 transparent black background like so: <code>background-color: rgba(0,0,0,.7)</code>. Again, this might be something that is great for prototyping, but then in implementation, you would use PNGs.</p>\n\n<h3>d: Do Websites Need to Look Exactly the Same in Every Browser</h3>\n<p><a href=\"http://dowebsitesneedtolookexactlythesameineverybrowser.com/\">NO!</a>. It’s great to work with decision makers who get it. These tiny visual enhancements that do not affect layout should not be necessary in every browser.</p>\n\n<h3>e: Easy-Clearing Floats</h3>\n<p>Dan has been using the <a href=\"http://positioniseverything.net/easyclearing.html\">clearfix</a> method of clearing, but has decided that naming the class clearfix might not be the best idea. Instead, he names the class group. While the clearfix method is just one of many methods for clearing floats, it looks like it will work in IE8 because it will support generated content.</p>\n\n<h3>f: Frameworks</h3>\n<p>Dan writes his own. Instead of using some bloated framework that someone else has written, Dan has created his own “framework” that he uses from project to project.</p>\n\n<h3>g: Gridlasticnus (grid layout using ems)</h3>\n<p>We all know that grids should be used to help structure your designs, but you can use an em-based layout to ensure ultimate flexibility. Dan then gave a couple of tips when creating an em-based layout:</p>\n\n<ul><li>Set a max-width on the outermost container (max-width: 100%;)</li>\n<li>Try to avoid setting font-size and width on same element</li>\n<li>Think from the outside in</li>\n</ul><h3>h: Horizontal Grid? Sure. Vertical Grid? Sort of.</h3>\n<p>When designers design comps, they typically design columns to be equal and blocks of text to be the same height as an image. In reality, the actual content will not be the same. So in order to have the appearance of a vertical grid, use classed groups for the columns so that the tops of the columns can align.</p>\n\n<h3>i: IE8, Still Refuses to Resize Text Set in Pixels</h3>\n<p>WTF? Yes, IE does have the page zoom functionality, but if someone goes in and changes the text size, it will not scale absolute units. So do we stick with relative units? I am going to use absolute units and <a href=\"http://www.danielmall.com/archives/2007/04/20/soft_serve.php\">soft serve</a> relative units to IE.</p>\n\n<h3>j: jQuery</h3>\n<p>It has a familiar CSS-like syntax and is really powerful. jQuery is my language of choice as well.</p>\n\n<h3>k: Kitty</h3>\n<p>Dan realized that trying to come up with 26 items was really hard. So he decided to show a picture of his cat.</p>\n\n<h3>l: .last</h3>\n<p>On the Iced or Hot popular drinks list, Dan has a bottom border, margin, and padding on each list item. On the last list item, he did not want any of them. So he created a class of last which zeroed out all of those properties. He then used jQuery to add a class of last to the last-child of the list. This is such an elegant solution until we get full CSS3 support.</p>\n\n\n<h3>m: Must Skip a Few Letters if We’re Going to Get Through This</h3>\n<p>In order to save time, Dan skipped m-r.</p>\n\n<h3>s: Shifting Backgrounds (Parallax Backgrounds for the Lazy)</h3>\n<p><a href=\"http://www.silverbackapp.com/\">Silverback</a> made the parallax background popular, and it’s pretty simple to do. Basically all you need to do is to position the background with a negative percentage. The header of Iced or Hot uses a subtle parallax background.</p>\n\n<h3>t: A Testimonial for Reset.css</h3>\n<p>Dan found out that on the mtv.com redesign, he used <code>margin: 0</code> and <code>padding: 0</code> a total of 155 times. if he would have just used a reset at the beginning, he would have saved himself a lot of those instances.</p>\n\n<h3>u: Your Stats</h3>\n<p>You may be asked when you can drop support for a certain browser. The answer should be found by looking at your statistics. Global statistics might be very different from your own, so you have to consider those with a grain of salt.</p>\n\n\n<h2>The In-House Designer – Cameron Moll</h2>\n\n<p>Cameron Moll decided to share the lessons that he has learned working as an in-house designer.</p>\n\n<h3>Lesson One – “Let’s take that offline.”</h3>\n<p>I&amp;rsquom sure you’ve heard the phrase “<strong>Let’s take that offline</strong>”? Well, who knew that so much of a designer’s time should be spent not designing. Khoi Vinh broke down how he thought he should successfully spend his time when he was “doing design”, and he concluded that he should spend 20% of his time doing the actual work, 40% working on the publicity of the design, and 40% creating relationships.</p>\n\n<p><strong>Lesson Learned:</strong> Create relationships that will engender trust and confidence in your work as a designer. Remember, it’s 40% of your job.</p>\n\n<h3>Lesson Two – “Let’s take a 5-minute bio break.”</h3>\n<p>Cameron gave an example of communicating with his IT department, and he was asking for an email alias to be created. The IT department emailed him and asked what he would like it to be called. Cameron then responded with “is dl-mobile available?” The IT department then asked the person who created the aliases to create an alias for the following address:  dl-mobile-available@.</p>\n\n<p>Cameron recommended reading <em>The Anatomy of Peace</em> to understand how to deal with conflicts.</p>\n\n<p><strong>Lesson Learned:</strong> Great communication skills create the shortest distance between an initial idea and a successful user experience. Besides, itâ€™s another 40% of your job.</p>\n\n<h3>Lesson Three – “Who owns that action item?”</h3>\n<p>Cameron showed us this quote from Paola Antonelli: “Ideas are a dollar a pound. Greatness \nis in picking which ones you want to make happen”. He decided to modify it a little:  “Ideas are a dollar a pound. Wisdom is in picking which ones you want to make happen. Greatness is in making them happen”.</p>\n\n<p>You should not fall into the trap of thinking that you cannot make a difference in your organization.</p>\n\n<p><strong>Lesson Learned:</strong> Smallify the organization. Develop &amp; foster relationships with change makers, not just decision makers.</p>\n\n<h3>Lesson Four – “Let’s not try to boil the ocean.”</h3>\n<p>You should always present things low fidelity. People get too distracted by small things that only the designer should worry about, like color, typography, etc.</p>\n\n<p><strong>Lesson Learned:</strong> Bring people along in your thinking. Paint the big picture, and then avoid the “illusion of agreement” by prototyping early and often. Remove fidelity when it isn’t necessary for agreement.</p>\n\n<h3>Lesson Five – “Do we have the bandwidth?”</h3>\n<p>You should always try and build on your knowledge and capabilities. Cameron recommends having an annual and weekly design review. They hold in-house workshops and have a budget for conferences. You should always be looking to improve yourself.</p>\n\n<p>You want to establish influential relationships with as many people as possible: internal departments, local colleges &amp; universities, vendors, etc.</p>\n\n<p>At Cameron’s company, the designers have a <a href=\"http://northtemple.com/\">blog</a>.</p>\n\n<p><strong>Lesson Learned:</strong> Establish the culture and environment \nnecessary for good design to flourish.</p>\n\n<h3>Lesson Six – “We’re determined to leverage our synergy with this new initiative.”</h3>\n\n<p>Create an inspirational culture and environment. The surroundings in the office should help to inspire yourself and others. Work from home sometime. Change your surroundings.</p>\n\n<p><strong>Lesson Learned:</strong> Uninspiring workplaces are a detriment to creativity only if you allow them to be. Find inspiration everywhere.</p>\n\n<h3>Lesson Seven – “I just got dilberted. Again.”</h3>\n\n<p><strong>Lesson Learned:</strong> Know when to exit. It’s as simple as that.</p>\n\n\n<h2>The Arts &amp; Crafts of Web Design or What Would William Do? – Curt Cloninger</h2>\n<p>I didn’t know Curt by name, but apparently I read one of his books. Curt did his presentation a little differently than everyone else, he actually wrote his presentation in HTML and linked to images when necessary. Curt based his presentation on William Morris, who helped to spearhead the English arts and crafts movement.</p>\n\n<h3>1. Stay True to Nature and Materials</h3>\n<p>Remember people, this is the web. There is no need to simulate physical material (wood, metal, etc) on the screen. Typography should be seen as a material. Push CSS typography. There are a lot of text properties that are rarely used. Behavior should be seen as a material. It should look like it does what it does. Interstitial animation should help to tell the story of progressing through the site.</p>\n\n<h3>2. Unite Art (Design) and Hand Craft</h3>\n<p>Everything that you touch should be great. If you have to slice someone else’s design, do it ingeniously. Push the limits of possibility.</p>\n \n<h3>3. Unite the Microcosmic and Macrocosmic</h3>\n<p>If it doesn’t need to be scalable, don’t automate it. Make each section of a website different and unique.</p>\n\n<h3>4. Value Utility. Value Beauty.</h3>\n<p>“Have nothing in your house that you do not know to be useful or believe to be beautiful.” Anyone can build a cookie cutter site with templates; the added value is beauty and customization. Add small ornamentation to the site and show your real craftsmanship.</p>\n\n<h3>5. Enjoy Work</h3>\n<p>Outsource or mechanize the un-pleasurable, but try and do as much of the entire process yourself at least once. This will help you when you are trying to find someone to do that job for you.</p>\n\n<h3>6. Redesign the Whole World</h3>\n<p>If current goods and tools are unsatisfactory, make your own.</p>\n\n<blockquote>\n<p>“Life doesn\'t simply happen to us; we produce it…”</p>\n<p>–<cite>Bruce Mau</cite></p>\n</blockquote>\n\n<h2>Designing the Next Generation of Web Apps – Jeffrey Veen</h2>\n<p>The future of the web is very bright. There are web applications released every day. All of the web applications revolve around entering and digesting data. The future of the web is going to be creating these tools that will enable users to participate and interact with the data. As designers, we need to design the data so that it will be easy to digest and interact with. Then, you should use filters to clarify the data. Like many of the other presenters said, it’s easy to lose track of the fact that design is just communication.</p>\n\n<p>So where do we get our sources of inspiration? History, the current state of things, who users are, etc. Jeff gave the example of John Snow, who was a physician in Britain researching a cholera outbreak. John used a map to illustrate that the source was actually a water pump and not airborne like everyone else thought.</p>\n\n<p>Inspiration should come from everywhere. Jeff got the inspiration for the Google Analytics graph from watching <em>Raiders of the Lost Ark</em>. Visuals are most impacful than numbers.</p>\n\n<blockquote>\n<p>Statistics can feel abstract and anesthetizing, making it difficult to connect with and make meaning.</p>\n<p>–<cite>Chris Jordan</cite></p>\n</blockquote>\n\n<p>The designer’s job is to find a story in the data and to remove everything that isn’t telling the story. The difference between print and interactive designers is that interactive designers have to give up some control to their users. People can resize their text; they can change their screen size; they have much more control then someone reading the newspaper.</p>\n\n\n<p>Jeff made three specific points about design:</p>\n<ul><li>storytelling is enabling users to discover</li>\n<li>visual cues allow for interactivity</li>\n<li>instead of editing, allow for filtering</li>\n</ul><p>Jeff also recommended some books:</p>\n<ul><li>The Ghost Map</li>\n<li>Edward Tufte’s books</li>\n<li>Visualizing Data</li>\n<li>Mental Models</li>\n</ul><h2>A Panel Apart</h2>\n<p>The last session was really just an opportunity for people to ask questions to Jeffrey Zeldman, Eric Meyer, Cameron Moll, and Jeffrey Veen. It was certainly interesting to hear what they had to say about the current state of web design.</p>\n\n<h2>Conclusion</h2>\n<p>I absolutely loved the conference. I always feel inspired when I come back to work. I would certainly recommend the Event Apart conferences to anyone.</p>',NULL,1833,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','8ca44a32-13f0-449f-9bd6-9b4c10cdcd0d',1,NULL,NULL,NULL,NULL),(1404,1889,'Weekly Link Round-Up #54',NULL,'<p>Well, unfortunately I’m still doing weekly link round-ups. That means that my redesign still isn’t finished. Hopefully I will have more time to finish it up soon. Here are the links that I found interesting this past week:</p>\n\n<ul><li><a href=\"http://www.37signals.com/svn/posts/1375-in-the-past-historic-front-page-moments\">QUESTION: In the past, historic front-page moments</a>\n<p>This is a great question considering the historic moment we had last week. We had people lining up for hours to buy newspapers, but were people taking screenshots of websites?</p>\n</li>\n<li><a href=\"http://www.digital-web.com/articles/extract_know_your_site/\">Extract: Know Your Site</a>\n<p>We get to read an excerpt from Paul Boag’s book <em>Website Owner’s Manual</em> about analyzing your website.</p>\n</li>\n</ul><ul><li><a href=\"http://www.alistapart.com/issues/271\">A List Apart: Issue 271</a>\n<p>This was an excellent article this week with <a href=\"http://www.alistapart.com/articles/writingcontentthatworksforaliving\">Writing Content that Works for a Living</a> and <a href=\"http://www.alistapart.com/articles/progressiveenhancementwithjavascript\">Progressive Enhancement with JavaScript</a>. Well written content and unobtrusive JavaScript, is there anything better?</p>\n</li>\n<li><a href=\"http://www.robertnyman.com/obtrusive-javascript-checker/\">Obtrusive JavaScript Checker</a>\n<p>This plugin will traverse a webpage and highlight obtrusive JavaScript.</p>\n</li>\n<li><a href=\"http://www.andyrutledge.com/web-02.php\">Web 0.2</a>\n<p>Andy Rutledge describes how he thinks the economy will affect web development firms and freelancers.</p>\n</li>\n</ul>',NULL,1834,NULL,'2019-10-09 16:41:15','2019-10-09 16:41:15','3e46fcde-511f-40f8-900e-601f891961c5',1,NULL,NULL,NULL,NULL),(1405,1890,'How to Preload Images When You Can’t Use CSS Sprites',NULL,'<p>I have already shown <a href=\"//trevor-davis.com/blog/tutorial/the-6-most-important-css-techniques-you-need-to-know/#cssSprites\">how to use css sprites</a>, but there are times when you just cannot use them. Sometimes you still want the benefit of preloading the image, so you have to get creative.</p>\n<h2>An Example</h2><p class=\"leftSide pullLeft col1\">\n<a href=\"//assets.trevor-davis.com/play/css-sprites/\"><img src=\"//assets.trevor-davis.com/uploads/images/content/2008/11/sprite-vert.gif\" alt=\"CSS Sprite\" class=\"imageRight frame\" height=\"40\" width=\"21\" /></a></p><p>I have created a <a href=\"//assets.trevor-davis.com/play/css-sprites/\">demo of a CSS sprite in action</a>. The sprite has the two images sitting on top of each other, and each link is using the image as a background image and then shifting the position of it when hovering.</p><p class=\"codeblock\"><code>\na.spriteVert { &lt;br /&gt; background: url(//assets.trevor-davis.com/uploads/images/content/2008/11/sprite-vert.gif) no-repeat top left;&lt;br /&gt; padding-left: 30px;&lt;br /&gt;}&lt;br /&gt;a.spriteVert:hover { background-position: bottom left; } </code></p><p>It works great in the first example, but <strong>what happens if the user resizes their text?</strong> The sprite starts to break. When I am building a site, I am always thinking with the <a href=\"http://simplebits.com/publications/bulletproof/\">bulletproof mentality of Dan Cederholm</a>, so this is just not an acceptable solution.</p><p>Now, we obviously couldn’t position the images next to each other because we would still have a problem when shifting the image around.</p><h2>The Solution</h2><p>Typically when you are using CSS sprites, there is another element containing the anchor. Whether it’s a list item, paragraph, div, etc; <strong>this solution will work unless you have a background image on that element as well</strong>.</p><h3>Example</h3><p class=\"leftSide pullLeft col1\"><a href=\"//assets.trevor-davis.com/play/css-sprites/preload-image/\"><img src=\"//assets.trevor-davis.com/uploads/images/content/2008/11/sprite-hover.gif\" alt=\"Background image for hover state\" class=\"leftSide frame\" height=\"20\" width=\"21\" /></a><a href=\"//assets.trevor-davis.com/play/css-sprites/preload-image/\"><img src=\"//assets.trevor-davis.com/uploads/images/content/2008/11/sprite-off.gif\" alt=\"Background image for unactive state\" class=\"leftSide frame\" height=\"20\" width=\"21\" /></a></p><p>I have created a second <a href=\"//assets.trevor-davis.com/play/css-sprites/preload-image/\">demo that “fixes” the first example</a>. The idea behind it is that instead of combining the images into 1 image, you split it into 2. Then you <strong>place the image that is being shown on hover as the background image on another element</strong> (preferably a containing element), just positioned off the screen.</p><p>Then when you hover, you switch the background image, which has already been preloaded, so you don’t get that “white flicker”. That may be a little hard to understand, so I’ll give an example.</p><h4>The Markup</h4><p class=\"codeblock\"><code>\n&lt;p class=\"spriteContainer\"&gt;&lt;a href=\"#\" class=\"spriteVert\"&gt;Hover Over Me&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=\"spriteContainer\"&gt;&lt;a href=\"#\" class=\"spriteVert spriteVert2\"&gt;Hover Over Me&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class=\"spriteContainer\"&gt;&lt;a href=\"#\" class=\"spriteVert spriteVert3\"&gt;Hover Over Me&lt;/a&gt;&lt;/p&gt; </code></p><p><em>Note: The extra classes of spriteVert2 and spriteVert3 are just used to change the font size.</em></p><h4>The CSS</h4><p class=\"codeblock\"><code>\np.spriteContainer { &lt;br /&gt; background: url(//assets.trevor-davis.com/uploads/images/content/2008/11/sprite-hover.gif) no-repeat -9999px -9999px;&lt;br /&gt;}&lt;br /&gt;a.spriteVert {&lt;br /&gt; background: url(//assets.trevor-davis.com/uploads/images/content/2008/11/sprite-off.gif) no-repeat top left;&lt;br /&gt; padding-left: 30px;&lt;br /&gt;}&lt;br /&gt;a.spriteVert:hover { &lt;br /&gt; background-image: url(//assets.trevor-davis.com/uploads/images/content/2008/11/sprite-hover.gif);&lt;br /&gt;} </code></p><h4>More Explanation</h4><p>So looking at the previous example, I am adding the background image that I want to appear on hover as the <strong>background image on the paragraph with a class of spriteContainer</strong>, and I am positioning it way off the screen.</p><p>Then when I hover over an anchor with a class of spriteVert, <strong>I change the background image to be the one from the paragraph</strong> with a class of spriteContainer.</p><h2>Conclusion</h2><p>While this is not as ideal as using CSS sprites because you increase the number of hits to your server, it can help to eliminate the white flicker that you get if the image is not preloaded.</p>',NULL,1835,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','c1bcd936-31e3-4d65-8246-4f6e830301bb',1,NULL,NULL,NULL,NULL),(1406,1891,'Weekly Link Round-Up #55',NULL,'<p>Just another busy week and some interesting links from the week:</p>\n\n<ul><li><a href=\"http://www.456bereastreet.com/archive/200811/writing_good_alt_text/\">Writing good alt text</a>\n<p>Roger Johansson provides some instructions for writing good alt text.</p>\n</li>\n<li><a href=\"http://cssglobe.com/post/3181/100-css-compatibility-or-degrade-correctly\">100% CSS compatibility or degrade correctly?</a>\n<p>In my opinion, the correct answer is to degrade correctly. The only problem is trying to sell the client on that idea.</p>\n</li>\n<li><a href=\"http://cameronmoll.com/archives/2008/11/showering_and_thinking/\">Why thinking in the shower may be an ideal model for “creative pause”</a>\n<p>I definitely get a lot of good thinking done in the shower. Someone just needs to invent some way of writing stuff in the shower.</p>\n</li>\n</ul><ul><li><a href=\"http://www.google.com/webmasters/docs/search-engine-optimization-starter-guide.pdf\">Google Search Engine Optimization Starter Guide</a>\n<p>This is a good beginner’s guide to SEO. Even though there is nothing new or profound here, it is always interested to see what Google recommends as good practice.</p>\n</li>\n<li><a href=\"http://www.protonotes.com/\">Protonotes</a>\n<p>This application provides the ability to add notes to prototypes and comps. I thought this would be useful for our company when we send them to clients.</p>\n</li>\n<li><a href=\"http://www.themaninblue.com/experiment/JS-909/\">JS-909</a>\n<p>Cameron Adams created a drum machine using straight-up JavaScript. That’s pretty hot.</p>\n</li>\n</ul>',NULL,1836,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','b7d449fa-d0b3-40eb-bcc7-1984a15f4ae6',1,NULL,NULL,NULL,NULL),(1407,1892,'Weekly Link Round-Up #56',NULL,'<p>I’m really looking forward to this Thanksgiving break. I’ve been working on some blog articles and the redesign of my site. So stay tuned, changes are coming soon hopefully. Here is what I found interesting this week:</p>\n\n<ul><li><a href=\"http://www.alistapart.com/issues/272\">A List Apart: Issue 272</a>\n<p>Two solid articles from A List Apart again, but I thought <a href=\"http://www.alistapart.com/articles/thisishowthewebgetsregulated\">This is How the Web Gets Regulated</a> was especially interesting. There are definitely holes in web accessibility, and people like Joe Clark are helping to fill those holes. <a href=\"http://www.alistapart.com/articles/amoreuseful404\">A More Useful 404</a> was an interesting concept, but I’m not sure how I feel about it being done with Perl and SSI.</p>\n</li>\n<li><a href=\"http://www.37signals.com/svn/posts/1409-heres-a-demo-of-some-thoughtful-ui-on-ffffoundcom\">Demo of some thoughtful UI on Ffffound.com</a>\n<p>Wow, I had heard of Ffffound but didn’t know that it had so much thought put into the UI. Definitely some great minds behind it.</p>\n</li>\n</ul><ul><li><a href=\"http://www.readwriteweb.com/archives/college_stops_giving_students_new_email_accounts.php\">College Stops Giving Students New Email Accounts: Start Of New Trend?</a>\n<p>Definitely a smart move at Boston College. It definitely seems unnecessary to give students another email account when they probably already have at least one.</p>\n</li>\n<li><a href=\"http://stylizedweb.com/2008/11/16/10-steps-to-a-client-friendly-wordpress-cms/\">10 Steps to a Client Friendly WordPress CMS</a>\n<p>WordPress is a great choice as a CMS for powering small sites, but for the non-techie user, it can be a little challenging. Here are a few tips to help make it easier for them.</p>\n</li>\n<li><a href=\"http://mezzoblue.com/archives/2008/11/24/now_boarding/\">Now Boarding</a>\n<p>Dave Shea decided that he was going to try and fly without using a paper boarding pass, and he was only going to use the digital version of the boarding pass on his iPhone. This definitely seems like it is going to be the way boarding passes are handled in the future, but we still may be a little ways away from that.</p>\n</li>\n</ul>',NULL,1837,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','c33f1613-8d64-4600-a0ea-92ef794719ec',1,NULL,NULL,NULL,NULL),(1408,1893,'My 2008 Web Thanksgiving List',NULL,'<p>Happy Thanksgiving to all! I thought I would take this opportunity to say what I am thankful for on the web. <strong>I am thankful for:</strong></p>\n\n<ul><li><strong><a href=\"http://www.zeldman.com/\">Jeffrey Zeldman</a> and <a href=\"http://meyerweb.com/\">Eric Meyer</a> (and others)</strong>\n<p>They really helped to spearhead the Web Standards movement, and without them, I probably wouldn’t be in the field today.</p>\n</li>\n<li><strong><a href=\"http://www.simplebits.com/publications/bulletproof/\">Bulletproof Web Design</a></strong>\n<p>This is one of the first web development books I had ever read, and it definitely helped to provide a strong foundation to build on. Thank god for Dan Cederholm’s brilliance.</p>\n</li>\n</ul><ul><li><strong><a href=\"http://twitter.com/\">Twitter</a></strong>\n<p>What I first saw as a silly little web app, really has become a great networking tool. I can post a question and someone is always around to answer.</p>\n</li>\n<li><strong><a href=\"http://www.cssmastery.com/\">CSS Mastery</a></strong>\n<p>I really took a big step forward in my ability after reading this book. Instead of just being a novice at CSS, I feel like I can tackle anything now.</p>\n</li>\n<li><strong><a href=\"http://code.google.com/p/ie7-js/\">Dean Edwards’ IE7 Script</a></strong>\n<p>I can’t tell you how many times I have used it. While I have begun to use it less and less, it saved my life when slicing early in my career.</p>\n</li>\n<li><strong><a href=\"http://wordpress.org/\">WordPress</a></strong>\n<p>It really is a flexible CMS. I honestly try and suggest it for every single site I am creating.</p> \n</li>\n<li><strong><a href=\"http://jquery.com/\">jQuery</a></strong>\n<p>I am in love with it. I knew some JavaScript before, but  after easily learning jQuery, I feel much more comfortable writing JavaScript now.</p>\n</li>\n</ul><p><strong>So what are you thankful for?</strong></p>',NULL,1838,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','164ad64a-c9b0-4b0d-911a-f9e4c8d8843c',1,NULL,NULL,NULL,NULL),(1409,1894,'Weekly Link Round-Up #57',NULL,'<p>We need to have 4 day weekends more often. I got so much work done on my redesign. I’m currently in the process of dealing with IE6, then I am going to start creating the theme. So there is a possibility that I will have something launched sometime this week. Just a few interesting items from this past week:</p>\n\n<ul><li><a href=\"http://www.questionablecharacters.com/\">Questionable Characters</a>\n<p>I found this site so amusing. The premise is that you ask a question, and you get two witty responses from the two designers running the site.</p>\n</li>\n<li><a href=\"http://fontfeed.com/archives/nyu-researchers-discover-defining-factor-for-legibility/\">NYU Researchers Discover Defining Factor for Legibility</a>\n<p>There are plenty of tweaks you can make to refine your typography, but NYU researchers claim that spacing is the most important factor for legibility. So let’s all think about increasing our margins and line height.</p>\n</li>\n</ul><ul><li><a href=\"http://www.37signals.com/svn/posts/1431-mixed-content-warning-how-i-loathe-thee\">“Mixed content warning”, how I loathe thee!</a>\n<p>Ugh, I hate those stupid warnings! David brings up a good point:</p>\n<blockquote><p>This is why it would be ever so wonderful if you could refer to a non-SSL asset from an SSL page. That way you could say â€œthis stuff is private, donâ€™t share itâ€ when serving over SSL and at the same time take advantage of HTTP caching for things that pose no security risk, like drag_handle.gif.</p></blockquote>\n</li>\n<li><a href=\"http://24ways.org/\">24 Ways</a>\n<p>I still can’t believe is December already. But at least we have 24 ways to impress your friends to get us through the month. We already have 2 great articles.</p>\n</li>\n<li><a href=\"http://www.gerrymcgovern.com/nt/2008/nt-2008-11-24-content-migration.htm\">Web content migration: disastrous strategy</a>\n<p>Is there anything worse than content migrations? Well, maybe content audits. Regardless, Gerry brings up some good points, and I love the milk analogy. I think that the whole process of content migrations should be re-evaluated.</p>\n</li>\n</ul>',NULL,1839,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','d7f46c6c-b27a-4eb8-bd24-afeba40600db',1,NULL,NULL,NULL,NULL),(1410,1895,'Weekly Link Round-Up #58',NULL,'<p>Man, it’s tough to get work done on my own site when I am so busy with freelance work. Slowly but surely, I am making progress, and I am hoping that by having some days off this month, I will be able to get it done soon. Here are the links that I found interesting this week:</p>\n\n<ul><li><a href=\"http://www.airbagindustries.com/archives/airbag/cholesterol.php\">Cholesterol.</a>\n<p>I think having debate in the workplace is so important to reaching the best decision. This is why I think Obama will be successful in office; he is not just surrounding himself with “yes” men.</p>\n</li>\n<li><a href=\"http://psdtuts.com/articles/9-information-design-tips-to-make-you-a-better-web-designer/\">9 Information Design Tips to Make You a Better Web Designer</a>\n<p>Some nice tips that are focused more on the organization side than the design side.</p>\n</li>\n<li><a href=\"http://jasonsantamaria.com/articles/cultivating-conversations/\">Cultivating Conversations</a>\n<p>Jason brings up the point that sometimes comments become overwhelming on blog posts. He suggests that the author should use “milemarker” comments so that readers can get a quick snapshot of the comments so far.</p>\n</li>\n</ul><ul><li><a href=\"http://surveys.webdirections.org/index.php?sid=38693\">The State of the Web 2008</a>\n<p>Do you make websites? Take the survey.</p>\n</li>\n<li><a href=\"http://freelanceswitch.com/finding/six-valuable-things-web-design-clients-wont-tell-you/\">Six Valuable Things Web Design Clients Won’t Tell You</a>\n<p>I wish clients would admit things like this. I guess the solution to that is to educate the client.</p>\n</li>\n<li><a href=\"http://www.zeldman.com/2008/12/04/20-signs-you-dont-want-that-web-design-project/\">20 signs you don’t want that web design project</a>\n<p>Wow, I can’t believe some of these things actually happened.</p>\n</li>\n<li><a href=\"http://www.designobserver.com/archives/entry.html?id=38855\">Chris Pullman: What I’ve Learned </a>\n<p>Chris shares ten important lessons that he learned while working for WGBH for 35 years.</p>\n</li>\n<li><a href=\"http://www.miltonglaser.com/pages/milton/essays/es3.html\">Ten Things I Have Learned</a>\n<p>Milton Glaser’s talk from 2001 was also linked around this week. It’s great to see so many tips from these guys with so much experience.</p>\n</li>\n<li><a href=\"http://www.alistapart.com/issues/273\">A List Apart: Issue 273</a>\n<p>I know some about IA, but I definitely learned some new ideas while reading <a href=\"http://www.alistapart.com/articles/flexiblefueleducatingtheclientonia\">Flexible Fuel: Educating the Client on IA</a>. I really hadn’t heard much about agile design, but <a href=\"http://www.alistapart.com/articles/gettingrealaboutagiledesign\">Getting Real About Agile Design</a> was helpful in learning more about it.</p>\n</li>\n</ul>',NULL,1840,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','e84d76e1-f584-4b12-a5fe-7faeb8c46c37',1,NULL,NULL,NULL,NULL),(1411,1896,'Unobtrusive JavaScript Print Link (with jQuery)',NULL,'<p>There are times when I have to implement designs that have print links on them. While I may think they are useless, I still have to make them work as they are a part of an approved comp. Sure, it is easy to have a link and then add an onclick event to launch the print window, but is that the right thing to do?</p>\n\n<p>Clicking a JavaScript print link does nothing more than launch the browser’s print window. If a person has JavaScript disabled, nothing will happen when they click a link like this:</p>\n<div class=\"codeblock\"><code>\n&lt;a href=\"#\" onclick=\"window.print(); return false;\"&gt;Print&lt;/a&gt; \n\n</code></div>\n\n<p>Ideally, we do not want to have things on a page that do not work without JavaScript enabled. So the solution is to write the print link into the DOM using JavaScript, then attach a click event to the link. Luckily, I use jQuery on every project, so it makes the process much easier.</p>\n\n<h2>The Solution</h2>\n<p>In this example, we are going to prepend a list item with a link to an unordered list with the id of <strong>tools</strong>. Then, we attach a click event to the link we have just added to the DOM. Finally, we <strong>return false</strong> to override the action of the link.</p>\n\n<p><strong>Here is the script:</strong></p>\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'ul#tools\').prepend(\'&lt;li class=\"print\"&gt;&lt;a href=\"#print\"&gt;Click me to print&lt;/a&gt;&lt;/li&gt;\');<br /> $(\'ul#tools li.print a\').click(function() {<br />  window.print();<br />  return false;<br /> });<br />}); \n\n</code></div>\n\n<p>Take a look at the <a href=\"//assets.trevor-davis.com/play/javascript-print-link/\">demo page</a> to see it in action. The script is nothing complex; it is just another example of using jQuery to improve a user’s experience.</p>',NULL,1841,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','ab0ebae2-6e32-4bf6-adff-c7c5e673fed3',1,NULL,NULL,NULL,NULL),(1412,1897,'Weekly Link Round-Up #59',NULL,'<p>Nice, 2 days off this week, so hopefully I will be able to get my redesign finished up. Here are a few interesting links from this past week:</p>\n<ul><li><a href=\"http://cameronmoll.com/archives/2008/12/four_resources_when_starting_a_project/\">Four resources to consider when starting a project</a>\n<p class=\"last\">Cameron gives a nice list of resources to use before starting a project:</p>\n<ol><li>Precedent: Who’s done it already and how?</li>\n<li>External data.</li>\n<li>Internal data &amp; knowledge.</li>\n<li>Educated guesses.</li>\n</ol></li>\n<li><a href=\"http://www.maxdesign.com.au/2008/12/12/sign-in/\">Sign in, register, join?</a>\n<p>This is a really interesting collection of data. What terms are used for new and existing users? Another interesting thing that I found was people using “Login” vs. “Log in”.</p>\n</li>\n<li><a href=\"http://visitmix.com/Articles/Web-Standards-Where-the-ROI-is\">Web Standards: Where the ROI is</a>\n<p>Sometimes it’s hard to sell web standards to people, but Molly gives some excellent points to help back us up.</p>\n</li>\n</ul>',NULL,1842,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','16c2b2bd-f712-4f50-a385-641fe1f06899',1,NULL,NULL,NULL,NULL),(1413,1898,'Redesign',NULL,'<p>Just a quick note to everyone that I am planning on launching my redesign tomorrow at some point. Some things are defintely going to need some clean up after launch, but I just feel like it is at a point where small things shouldn’t hold it up.</p>\n\n<p>So if something looks broken, I will be fixing it soon.</p>',NULL,1843,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','aae5e48d-2ccb-484c-b43c-c4d53c540c5d',1,NULL,NULL,NULL,NULL),(1414,1899,'A List Apart: Issue 274',NULL,'<p><a href=\"http://www.alistapart.com/issues/274\">This issue</a> has 2 excellent articles focused on content strategy. “A website without a content strategy is like a speeding vehicle without a driver.”</p>',NULL,1844,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','94dcff95-46c6-4f3e-89c2-3d38aafead04',1,NULL,NULL,NULL,NULL),(1415,1900,'Version 3 Launched',NULL,'<p>Well, I finally think my redesign is good enough for the public eye. There are definitely some tweaks that I need to make, but it’s good enough for now.</p>\n\n<p>I plan on tweaking stuff for the rest of the week and doing some clean up on some of the older articles.</p>\n\n\n<p>This goal of this design was to adhere to a very strict grid, and I used the 16 column <a href=\"http://960.gs/\">960 grid</a>.</p>\n\n<p><a href=\"//trevor-davis.com/blog/news/version-3-launched/?grid=true\" class=\"viewGrid more-link\">View Grid</a> <em>(click on the grid to remove it)</em></p>\n\n<p>I also wanted to have a stronger focus on some of the things that I can do with jQuery. Check out the accordion and recent work in the sidebar and the comments on the blog articles.</p>\n\n<p>Well, that is enough for now. I’m sure I will have more to talk about later, but I have to run. Please give me your feedback. I by no means call myself a designer, which is why I tried to go simplistic.</p>',NULL,1845,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','b23beac0-fab5-4fe5-8444-ff73bab308e1',1,NULL,NULL,NULL,NULL),(1416,1901,'Using jQuery Clone',NULL,'<p>I love how I can use jQuery to solve all of my problems. When I was working on a website for <a href=\"http://www.thenationaltree.org/\">The Lighting of the National Christmas Tree</a>, I had to create a page that displayed all of the ornaments. Thank god for the jQuery <a href=\"http://docs.jquery.com/Manipulation/clone\">clone()</a> method, which saved me loads of time and effort.</p>\n\n<h2>The Situation</h2>\n<p>I was on a tight deadline, and had to figure out some way to layout all of the state ornaments. Not to mention the fact that I had to crop and resize 56 images to 2 different sizes. Yes, I know there are only 50 states, but the US territories were included as well.</p>\n<p>So the layout had to be easy enough for everyone to see all the ornaments and be able to click to get a more detailed photo and some information about the ornament. I really was not interested in creating 56 separate pages with information about each ornament, so I went scouring through the jQuery documentation to see how I could copy elements.</p>\n<p>Before I get started describing what I had to do, <a href=\"//assets.trevor-davis.com/play/using-jquery-clone-for-a-lightbox/\">here is a demo page that I created</a>.</p>\n<h2>My Solution</h2>\n<p>So basically, this is what I wanted to happen when an ornament was clicked:</p>\n<ol><li>Get the source of the larger image to be shown</li>\n<li>Copy the description text about the ornament</li>\n<li>Append the image and text and open it in a modal window</li>\n</ol><p>The styling of the example is nothing special, so I will stick to explaining the script.</p>\n<h3>The Script</h3>\n<p>First, we want all of this to happen after the document is loaded and when the ornament links are clicked:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'ul.ornaments a\').click(function() {<br />  return false;<br /> });<br />}); \n\n</code></div>\n<p>Next, we want to setup the modal window with a couple of empty divs: <em>(Note: line breaks added for readability)</em></p>\n<div class=\"codeblock\"><code>\n$(\'body\').append(\'&lt;div id=\"overlay\"&gt;&lt;/div&gt;<br /> &lt;div id=\"modal\"&gt;<br />  &lt;div id=\"modalInner\"&gt;<br />   &lt;a href=\"#\" id=\"close\" title=\"Close\"&gt;Close&lt;/a&gt;<br />   &lt;div id=\"modalImageColumn\"&gt;&lt;/div&gt;<br />   &lt;div id=\"modalTextColumn\"&gt;&lt;/div&gt;<br />   &lt;div class=\"clearing\"&gt;&lt;/div&gt;<br />  &lt;/div&gt;<br /> &lt;/div&gt;\'); \n\n</code></div>\n<p>Since IE6 doesn’t support fixed positioning, we need to get the actual height of the page so we can apply that height to the overlay:</p>\n<div class=\"codeblock\"><code>\nif($.browser.msie &amp;&amp; $.browser.version &lt;= 6.0) {<br /> var windowHeight = $(document).height();<br /> $(\'#overlay\').height(windowHeight);<br />} \n\n</code></div>\n<p>Next, we set the opacity of the overlay, start to fade it in, position the modal window, and start to fade it in.</p>\n<div class=\"codeblock\"><code>\n$(\'#overlay\').css(\'opacity\', 0.5).fadeIn(\'fast\');<br />$(\'#modal\').fadeIn(\'slow\');  <br />var scrollPos = $(window).scrollTop() + 50;  <br />$(\'div#modal\').css(\'top\',scrollPos+\'px\'); \n\n</code></div>\n<p>The order of these things can be moved around some, but this is what I ended up doing, and everything looked good.</p>\n<p>Next, we want to close and remove the modal window when the close button is clicked or the background overlay is clicked:</p>\n<div class=\"codeblock\"><code>\n$(\'div#modal a#close,div#overlay\').bind(\'click\', function() {<br /> $(\'div#modal\').fadeOut(\'fast\',function() {<br />  $(\'div#overlay\').fadeOut(\'fast\',function() {<br />   $(this).remove();          <br />  });<br />  $(this).remove();          <br /> });<br /> return false;<br />}); \n\n</code></div>\n<p>Next, we grab the url of the link that was clicked, which goes to the full size image, and append the image to the modal window. Once the image has been loaded, we fade it in:</p>\n<div class=\"codeblock\"><code>\nvar imgUrl = $(this).attr(\'href\');<br />$(\'div#modalImageColumn\').append(\'&lt;img src=\"\'+imgUrl+\'\" alt=\"\" class=\"frame\" height=\"400\" id=\"ornament\" width=\"400\" /&gt;\');<br />$(\'img#ornament\').load(function() {<br /> $(this).fadeIn();        <br />}); \n\n</code></div>\n<p>Finally, we get to use the clone() method. We target the div with the class of <strong>stateDescription</strong> that is a sibling of the link we clicked, clone it, and append it to the modal window:</p>\n<div class=\"codeblock\"><code>\n$(this).siblings(\'.stateDescription\').clone().appendTo(\'div#modalTextColumn\'); \n\n</code></div>\n<h2>Conclusion</h2>\n<p>Pretty cool stuff if I say so myself. I don’t think there are any jQuery plugins out there that would have helped me achieve this, which is why it is important to actually understand jQuery.</p>\n\n<p><a href=\"//assets.trevor-davis.com/play/using-jquery-clone-for-a-lightbox/\" class=\"more-link\">See Demo</a></p>\n\n<p><a href=\"//assets.trevor-davis.com/uploads/images/content/2008/12/modal.js\">Here is the full script to download</a>. You can also take a look at the <a href=\"http://www.thenationaltree.org/visit-santa/pathway-of-peace/\">final product on the National Christmas Tree site</a>.</p>\n\n<p>But, I would encourage you to actually understand jQuery instead of just grabbing code and using it.</p>',NULL,1846,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','d78629b5-7626-44ef-b95d-d7b75e24d20b',1,NULL,NULL,NULL,NULL),(1417,1902,'The Death Throes of Print?',NULL,'<p>Jason Santa Maria wonders if <a href=\"http://jasonsantamaria.com/articles/the-death-throes-of-print/\">print really is nearing its death</a>. I still can’t imagine reading a book online though.</p>',NULL,1847,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','61c519a0-1161-47c4-8b12-5d276ddfb593',1,NULL,NULL,NULL,NULL),(1418,1903,'Google pushing users away from IE?',NULL,'<p>When users use <a href=\"http://www.techradar.com/news/internet/google-pushing-users-away-from-ie--496216\">Gmail in Internet Explorer</a>, a red link appears at the top right of the page that says “Get faster Google Mail”. The link takes you to a <a href=\"http://mail.google.com/support/bin/answer.py?&amp;answer=107906&amp;hl=en-GB\">page suggesting faster browsers</a>. Love it.</p>',NULL,1848,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','65295655-9de0-4171-a468-22164197ea89',1,NULL,NULL,NULL,NULL),(1419,1904,'Jeffrey Zeldman: Understanding Web Design',NULL,'<p>A video of <a href=\"http://www.aiga.org/content.cfm/video-gain-2008-zeldman\">Jeffrey Zeldman presenting his talk on Understanding Web Design</a>. I saw this presentation at <a href=\"//trevor-davis.com/blog/web/an-event-apart-chicago/\">An Event Apart</a>, and I am still amazed at how great of a speaker he is.</p>',NULL,1849,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','f734ae6c-b8ef-4af6-8f71-eb2133f434d9',1,NULL,NULL,NULL,NULL),(1420,1905,'WordPress Art Direction Plugin',NULL,'<p>Inspired by <a href=\"http://jasonsantamaria.com/\">Jason Santa Maria’s “art directed” site</a>, Noel Jackson decided to create an <a href=\"http://noel.io/wordpress-art-direction-plugin/\">art direction plugin for WordPress</a>, which allows you to add per post styling. Interesting.</p>',NULL,1850,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','e2c9b021-42ab-472c-93c1-f82553e12d50',1,NULL,NULL,NULL,NULL),(1421,1906,'WordPress Cheat Sheet',NULL,'<p>This <a href=\"http://wpcandy.com/articles/tutorials/the-wordpress-help-sheet.html\">WordPress cheat sheet</a> seems like it could be pretty useful. I think there are some important functions that are left off though, and it’s definitely geared more towards beginners.</p>',NULL,1851,NULL,'2019-10-09 16:41:16','2019-10-09 16:41:16','0fd10db2-ace9-4d70-ad20-5273f95eff7d',1,NULL,NULL,NULL,NULL),(1422,1907,'Design Decisions: The new Highrise signup chart',NULL,'<p><a href=\"http://www.37signals.com/svn/posts/1496-design-decisions-the-new-highrise-signup-chart\">Jason Fried discusses the many design iterations</a> for the Highrise signup chart. <a href=\"http://www.highrisehq.com/signup\">What they ended up with</a> is very appealing and accomplishes they goals they seemed to set out.</p>',NULL,1852,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','bf237a7f-cac3-4cb1-895b-c179a8817db7',1,NULL,NULL,NULL,NULL),(1423,1908,'Tabinta',NULL,'When editin<p>g stuff in WordPress, I was always so annoyed that I could not tab in the textareas. <a href=\"https://addons.mozilla.org/en-US/firefox/addon/3955/\">Tabinta</a> Firefox plugin to the rescue.</p>',NULL,1853,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','6a2fd1a1-b264-4e4b-89f5-1f366e25af61',1,NULL,NULL,NULL,NULL),(1424,1909,'A Plea for WordPress Help',NULL,'<p>I love using WordPress to power websites.</p>\n\n<p>While it began strictly as a blogging platform, it has evolved into a pretty solid CMS, but there is one little thing that has been bugging me for a while now.</p>\n\n<p>With the launch of my redesigned site, I was interested in using the <a href=\"http://wordpress.org/extend/plugins/wp-pagenavi/\">WP-PageNavi plugin</a> because I think it provides much better paging than the default WordPress previous/next.</p>\n\n<p>The problem is that WordPress includes <strong>/category/</strong> in the URL, and I hate it. For example, on my <a href=\"//trevor-davis.com/blog/\">blog page</a>, you can click the older entries link at the bottom of the content area, and you can see that the link points to here:</p>\n<div class=\"codeblock\"><code>\n//trevor-davis.com/blog/page/2/ \n\n</code></div>\n\n<p>But, you will notice that you actually get redirected to:</p>\n<div class=\"codeblock\"><code>\n//trevor-davis.com/category/blog/page/2/ \n\n</code></div>\n\n<p>I had to do this because <a href=\"//trevor-davis.com/blog/page/2/\">/blog/page/2/</a> returned a 404 error. You can see this by going <a href=\"//trevor-davis.com/blog/page/3/\">directly to the third page</a>.</p>\n\n<h2>Some Suggested Fixes</h2>\n<p>I read through <a href=\"http://wordpress.org/extend/ideas/topic.php?id=359\">a couple</a> of <a href=\"http://wordpress.org/support/topic/98005\">forum posts</a>  discussing the problem, but none of the fixes mentioned seemed to work.</p>\n<p>The most discussed suggestion was to change the category base permalink to <strong>/.</strong>, but that did not work for me. Surprisingly, some people said it worked for them. That was pretty bizarre to me, so I kept looking.</p>\n<p>Another suggestion was to edit a core WordPress file, which I do not want to do.</p>\n\n<h2>Plugins to Fix the Problem?</h2>\n<p>I came across 3 plugins that were supposed to fix the problem, but none of them worked for me either.</p>\n<ul><li><a href=\"http://wordpress.org/extend/plugins/top-level-cats/\">Top Level Categories</a></li>\n <li><a href=\"http://wordpress.org/extend/plugins/decategorizer/\">Decategorizer</a></li>\n <li><a href=\"http://www.brianshoff.com/wordpress/category-base-removal-plugin.htm\">Category Base Killer</a></li>\n</ul><h2>My Idea</h2>\n<p>So I am not the greatest with regular expressions and htaccess and all that jazz, but my thinking is that I can use the <a href=\"http://wordpress.org/extend/plugins/redirection/\">Redirection plugin</a> to use a pass-through to rewrite any link like this:</p>\n<div class=\"codeblock\"><code>\n/blog/page/(*)/ \n\n</code></div>\n<p>To this:</p>\n<div class=\"codeblock\"><code>\n/blog/page/$1/ \n\n</code></div>\n\n<p><em>Is that not possible?</em> I could not get it to work. Does anyone know how to get something like this to work? <strong>WordPress team, why has this been a problem for so long?</strong></p>',NULL,1854,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','e15e3d88-8a20-457b-b8db-fc847e2ece4f',1,NULL,NULL,NULL,NULL),(1425,1910,'Jason Santa Maria is Leaving Happy Cog',NULL,'<p>Probably my favorite designer out there right now <a href=\"http://jasonsantamaria.com/articles/leaving-happy-cog/\">is going freelance</a>. Hey Jason, want to come work at my company instead?</p>',NULL,1855,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','b9df7038-c456-4a59-9d38-d3b5e40e7c91',1,NULL,NULL,NULL,NULL),(1426,1911,'Design Share',NULL,'<p>I had the pleasure of being invited to <strong>Design Share</strong> at <a href=\"http://viget.com/\">Viget Labs</a> Wednesday night. The idea of the event was that 6 presenters would each give a 5 minute presentation on design, and then there was a question and answer period. It was especially great since I am not really a designer. Always great to learn new things.</p>\n\n\n<h2><a href=\"http://www.brian-talbot.com/\" class=\"inline\">Brian Talbot</a> National Geographic</h2>\n<p>Brian started the night off by discussing the process of bringing the National Geographic <a href=\"http://www.thegreenguide.com/\">Green Guide</a> online. It was quite an undertaking since they were taking a print publication and creating a supporting website.</p>\n<p>Usually, something gets lost in translation going from print to the web. So, they wanted to still have these <strong>interesting layouts and help tie in the site to the printed collateral</strong>. They also wanted to get the community involved in providing information and commentary.</p>\n\n<p>I think a lot of the screenshots that he showed us are not in production yet, but they looked great. There were charts, information organization in a sensible manor, and nice simple layouts.</p>\n\n<h2><a href=\"http://www.thirstyinteractive.com/\" class=\"inline\">Jay Moore</a> Thirsty Interactive</h2>\n<p>Next, Jay discussed his “<strong>Papa Bear, Mama Bear, &amp; Baby Bear</strong>” approach to mood boards. The example he used was from his experience in building the mood boards for the <a href=\"http://www.bered.com/\">AOL Red</a> redesign.</p>\n\n<h3>Papa Bear Mood Board</h3>\n<p>This is the “safety” board. It’s comfortable because it was similar to the previous design. They wanted to show that they incorporated elements to meet the goals of the project.</p>\n\n<h3>Mama Bear Mood Board</h3>\n<p>With this board, they do not expect it to be chosen. It’s edgier and purposely a little bit too far over the top. The idea of this board is that it will help to generate thought and ideas.</p>\n\n<h3>Baby Bear Mood Board</h3>\n<p>This board is kind of the best of the Mama &amp; Papa bear boards. It is that happy medium. It has the familiar feel of the Papa bear board, but that edginess that will help to cater to the teen audience.</p>\n\n<p>Of course, the final decision was to use elements from each board.</p>\n\n<p>The most interesting part of this talk was that <strong>real design elements were actually worked into the mood boards</strong>. I haven’t seen too many mood boards, but all of the ones I had seen were very abstract. This was a nice change.</p>\n\n<h2><a href=\"http://www.ericlohman.com/\" class=\"inline\">Eric Lohman</a> AKQA</h2>\n<p>Eric had the opportunity to help re-brand and redesign the <a href=\"http://www.nhl.com/\">NHL</a> website. Before his company was involved, the NHL had no real brand; they had all of these different banners with different treatments of their logo. They helped to standardize the logo and provide a simple system for expanding it.</p>\n\n<p><img src=\"//assets.trevor-davis.com/uploads/images/content/2009/01/nhl-team-logos.gif\" alt=\"NHL Team Logos\" width=\"220\" height=\"220\" class=\"leftSide pullLeft col4\" />So AKQA developed mood boards, and <strong>the entire design concept was inspired by one image: black ice</strong>. This is where the dark concept came from. It really gives the site a sleek look, and it makes the large action shots really pop.</p>\n\n<p>Another difficult task that they encountered was dealing with the teams logos. They were all odd shaped and nothing tied them all together. They decided to do some intense cropping to gain consistency between the logos.</p>\n\n<p>Finally, Eric talked about adding more interactivity to the site. You can see game highlights, watch games live, and even look through an enormous photo gallery. The new NHL site is a tremendous design success.</p>\n\n<h2><a href=\"http://caviarfrenchfries.tumblr.com/\" class=\"inline\">Ari Kushimoto</a> CaviarFrenchFries </h2>\n<p>Ari was tasked with developing 3 mood boards for an intranet that had a Web 2.0 feel (yuck, I hate saying that). Of course she had a tight deadline. This is where she found that her bookmarking service really paid off. <strong>All of that time she spent bookmarking cool sites and ideas really paid off and saved time</strong>.</p>\n\n<p>She took screenshots, organized into different folders, and then got started on the mood boards. She setup a consistent grid for the boards, and this made it easier to swap things in and out.</p>\n\n<p>There was some good discussion afterward about good tools that help to organize screenshots: <a href=\"http://www.realmacsoftware.com/littlesnapper/\">LittleSnapper</a> and <a href=\"http://derailer.org/paparazzi/\">Paparazzi</a></p>\n\n<h2><a href=\"http://www.robsoule.com/\" class=\"inline\">Rob Soulé</a> Viget Labs</h2>\n<p>Rob talked about the Viget design process. The project begins by sending a couple of surveys to the client. The surveys ask some abstract questions like “What kind of car would your company be” and “What magazine(s) describe your company”. These surveys help the client to focus on their thoughts of their brand and <strong>help to give the designers a better idea of what the client is looking for</strong>.</p>\n\n<p>Once a project is ready to be designed, a lead designer is assigned the project, and they sit down with 2 other designers. They discuss 3 directions that they want to go in and discuss elements that they want to include in the mood boards. While this is going on, the user experience designer is working on the wireframes.</p>\n\n<p>One thing that I thought was really interesting was that they discuss specific elements to add to the mood boards. So for example, a submit button for a form, a headline, and the navigation. While sometimes they also do abstract mood boards, I think <strong>it seems more useful to real elements</strong> that you would see on a site.</p>\n\n<h2><a href=\"http://sixtwothree.org/\" class=\"inline\">Jason Garber</a> Mixx</h2>\n<p>When Jason used to work at AOL, he was involved in creating <a href=\"http://ficlets.com/\">Ficlets</a> which is basically an online community for short story writers. It became popular relatively quickly, and they had a solid community. A few years later…Jason and the others who helped to create Ficlets no longer work at AOL, and suddenly, AOL decided they are going to shut down Ficlets.</p>\n<p>It is not really clear what the reasoning is, basically AOL just sucks. Well, Jason and the others who created it didn’t want the site to go away. It was successful and had a solid community. So Jason and friends decided to basically recreate it.</p>\n<p>This is quite an opportunity for anyone creating a website. <strong>They were able to examine the way that users were using Ficlets and found some ways to improve it</strong>. They are facing some tough decisions trying to determine what to do with past Ficlets’ stories and the community. Somehow, they need to transport the community from Ficlets to <a href=\"http://ficly.com/\">Ficly</a>, which will be the new home starting on January 15th.</p>\n\n<h2>Conclusion</h2>\n<p>It was very interesting to hear about the process and experience of so many talented people. I think the format of the 5 minute presentation also helped to focus the discussion. All in all, it was a good time.</p>',NULL,1856,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','686c7d1e-32f2-45da-9c92-a18a82a473a3',1,NULL,NULL,NULL,NULL),(1427,1912,'The State of the Web 2008',NULL,'<p>The <a href=\"http://www.webdirections.org/the-state-of-the-web-2008/\">detailed report from the State of the Web Survey</a> has been compiled. Wow, 62% of the people using JavaScript libraries are using jQuery; I love it.</p>',NULL,1857,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','7de4b606-fb86-4973-9f23-125643fcb4e1',1,NULL,NULL,NULL,NULL),(1428,1913,'CSS Testing of Selectors and Pseudo Selectors',NULL,'<p><a href=\"http://kimblim.dk/css-tests/selectors/\">A list of selectors and their supported browsers</a>. There seems to be a trend of the non-supported ones…</p>',NULL,1858,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','72df34e8-1cc1-4ab9-b8ac-dc0ff83bb8ad',1,NULL,NULL,NULL,NULL),(1429,1914,'Use jQuery to Enhance your WordPress Comment Form',NULL,'<p>I have already completed a couple of tutorials on forms and jQuery (<a href=\"//trevor-davis.com/blog/tutorial/ajax-forms-with-jquery/\">Ajax Forms with jQuery</a> and <a href=\"//trevor-davis.com/blog/tutorial/flexible-and-semantic-forms-with-a-little-jquery/\">Flexible and Semantic Forms with a Little jQuery</a>), but I wanted to show another example of using a simple jQuery script to enhance functionality. This example will be about the comment form on a WordPress powered site.</p>\n\n<p><img src=\"//assets.trevor-davis.com/uploads/images/content/2009/01/wordpress-validation.gif\" alt=\"WordPress Validation Screenshot\" width=\"330\" height=\"106\" class=\"leftSide pullLeft col6 frame\" />Depending upon your configuration, WordPress will validate the comment form for required fields. In my configuration, I want to make sure that users fill in their name and email address If you submit my comment form without those, WordPress will perform server side validation.</p>\n\n<p>But, do you really want users to see this error page? <strong>Wouldn’t it be so much better if we used to JavaScript to validate on the client side so that they never have to leave the form</strong>?</p>\n\n<p>I think so. Before we get started, I created <a href=\"//assets.trevor-davis.com/play/wordpress-comment-form/\">a sample of the WordPress comment form</a>.</p>\n\n<p><a href=\"//assets.trevor-davis.com/play/wordpress-comment-form/\" class=\"more-link\">See Example Page</a></p>\n\n<h2>Creating the Markup</h2>\n<p>I have tweaked my markup somewhat from the default WordPress comment form, so you will need to make changes to account for your markup. Here is the markup for my form:</p>\n\n<div class=\"codeblock\"><code>\n&lt;form action=\"#\" method=\"post\" id=\"commentform\"&gt;<br /> &lt;p class=\"required\"&gt;* Denotes Required Field&lt;/p&gt;<br /> &lt;ol class=\"forms\"&gt;<br />  &lt;li&gt;<br />   &lt;label for=\"author\"&gt;Name &lt;span class=\"required\"&gt;*&lt;/span&gt;&lt;/label&gt;<br />   &lt;input type=\"text\" class=\"requiredField\" name=\"author\" id=\"author\" size=\"22\" /&gt;<br />  &lt;/li&gt;<br />  &lt;li&gt;<br />   &lt;label for=\"email\"&gt;E-Mail &lt;span class=\"required\"&gt;*&lt;/span&gt;&lt;/label&gt;<br />   &lt;input type=\"text\"  class=\"requiredField\" name=\"email\" id=\"email\" size=\"22\" /&gt;<br />  &lt;/li&gt;<br />  &lt;li&gt;<br />   &lt;label for=\"url\"&gt;Website&lt;/label&gt;<br />   &lt;input type=\"text\" name=\"url\" id=\"url\" size=\"22\" /&gt;<br />  &lt;/li&gt;<br />  &lt;li class=\"textarea\"&gt;<br />   &lt;label for=\"comment\"&gt;Comments &lt;span class=\"required\"&gt;*&lt;/span&gt;&lt;/label&gt;<br />   &lt;textarea  class=\"requiredField\" name=\"comment\" id=\"comment\" cols=\"100%\" rows=\"10\"&gt;&lt;/textarea&gt;<br />  &lt;/li&gt;<br />  &lt;li class=\"subscribe-to-comments\"&gt;<br />   &lt;input type=\"checkbox\" name=\"subscribe\" id=\"subscribe\" value=\"subscribe\"  /&gt;<br />   &lt;label for=\"subscribe\"&gt;Notify me of followup comments via e-mail&lt;/label&gt;<br />  &lt;/li&gt;<br />  &lt;li class=\"buttons\"&gt;<br />   &lt;button type=\"submit\" name=\"submit\" id=\"submit\"&gt;Add Comment &amp;raquo;&lt;/button&gt;<br />  &lt;/li&gt;<br /> &lt;/ol&gt;<br />&lt;/form&gt; \n\n</code></div>\n\n<p>I don’t think there is much that I need to discuss about that markup; it is pretty standard. The only thing to mention is the class name of <strong>requiredField</strong> on the form fields that I want to be required. <em>Note: I also removed the action on the form so that the sample form cannot really be submitted to the database.</em></p>\n\n<h2>The jQuery</h2>\n<p>I of course am going to show this example using jQuery, but you could create something comparable with any other JavaScript library or just with some plain old JavaScript.</p>\n\n<p>Once the document is loaded, let’s start by adding a function for when the comment form is submitted:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form#commentform\').submit(function() {<br /> &amp;hellip;<br /> });<br />}); \n\n</code></div>\n\n<p>Next, we want to remove any errors if they are showing, and create a flag that will let us know if an error has occured:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form#commentform\').submit(function() {<br />  &lt;strong&gt;$(\'form#commentform .error\').remove();<br />  var hasError = false;&lt;/strong&gt;<br />  &amp;hellip;<br /> });<br />}); \n\n</code></div>\n\n<p>Ok, here is where we really start to do some coding. I want to take each form field that has a class of <strong>requiredField</strong>, check to see if it is empty, copy the name of the label (<em>and remove the required asterisk</em>), traverse to the parent list item, and append the error message. Here is where we will also set the hasError flag so that we know an error has occurred:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form#commentform\').submit(function() {<br />  $(\'form#commentform .error\').remove();<br />  var hasError = false;<br />  &lt;strong&gt;$(\'.requiredField\').each(function() {<br />   if(jQuery.trim($(this).val()) == \'\') {<br />    var labelText = $(this).prev(\'label\').text().replace(\' *\',\'\');<br />    $(this).parent().append(\'&lt;span class=\"error\"&gt;\'+labelText+\' is a required field.&lt;/span&gt;\');<br />    hasError = true;<br />   }<br />  });&lt;/strong&gt;<br />  &amp;hellip;<br /> });<br />}); \n\n</code></div>\n\n<p>Finally, you want to check the <strong>hasError</strong> variable to determine whether or not you should submit the form to the server:</p>\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> $(\'form#commentform\').submit(function() {<br />  $(\'form#commentform .error\').remove();<br />  var hasError = false;<br />  $(\'.requiredField\').each(function() {<br />   if(jQuery.trim($(this).val()) == \'\') {<br />    var labelText = $(this).prev(\'label\').text().replace(\' *\',\'\');<br />    $(this).parent().append(\'&lt;span class=\"error\"&gt;\'+labelText+\' is a required field.&lt;/span&gt;\');<br />    hasError = true;<br />   }<br />  });<br />  &lt;strong&gt;if(hasError) {<br />   return false;<br />  }&lt;/strong&gt;<br /> });<br />}); \n\n</code></div>\n<p class=\"note\"><em>Note: The end of the script is slightly different on the example form because I did not want to actually submit the form.</em></p>\n\n<h2>Conclusion</h2>\n<p>Just another simple example of how we can improve the user experience by using jQuery. Like usual, there are jQuery plugins out there that can do the same thing, but I think it is important to understand how to do things yourself. Plus, that is only 17 lines of JavaScript compared to much, much more for a plugin.</p>\n\n<p>Anyone have any ideas on how to improve the script?</p>',NULL,1859,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','40c92ea5-9d8f-48de-97a9-0c8057d423df',1,NULL,NULL,NULL,NULL),(1430,1915,'Web Development Project Estimator',NULL,'<p>“<a href=\"http://estimator.astuteo.com/\">A simple tool</a> that allows web designers and site developers to quickly and thoroughly estimate the time and materials required for a proposed web project.” Yes, all of this could be accomplished through other programs, but this is a pretty nice interface.</p>',NULL,1860,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','911b1ac9-bdf7-4a22-9f26-f245baf9b643',1,NULL,NULL,NULL,NULL),(1431,1916,'Design Share, an Event Series',NULL,'<p>Viget’s write up about the <a href=\"http://www.viget.com/inspire/design-share-event-series/\">design share event</a> that I attended and <a href=\"//trevor-davis.com/blog/news/design-share/\">summarized</a>. This one with video!</p>',NULL,1861,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','bdc557f6-7884-4cd8-abc0-5bfe2a0a44f1',1,NULL,NULL,NULL,NULL),(1432,1917,'A List Apart: Issue 276',NULL,'<p><a href=\"http://www.alistapart.com/issues/276\">This issue</a> focuses around one of the biggest problems in web development: education, or lack thereof. I know I would have loved to actually go to school for web development.</p>',NULL,1862,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','4adc04d6-0aa0-4dd1-a904-30072901999a',1,NULL,NULL,NULL,NULL),(1433,1918,'Exactly How to Create a Custom jQuery Accordion',NULL,'<p>Yesterday, I saw that <a href=\"http://nettuts.com/articles/news/a-staff-writer-position-has-opened/\">NETTUTS was looking for another staff writer</a>. I figured that I would give it a shot and write a tutorial about creating a custom jQuery accordion (just like the one on the sidebar of my website). Well what do you know, <a href=\"http://nettuts.com/tutorials/javascript-ajax/exactly-how-to-create-a-custom-jquery-accordion/\">they published it</a>.</p>','http://net.tutsplus.com/tutorials/javascript-ajax/exactly-how-to-create-a-custom-jquery-accordion/',0,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','6dc33f7f-7988-4836-a8c2-2f6ee9e75f83',1,NULL,NULL,NULL,NULL),(1434,1919,'My First WordPress Plugin',NULL,'<p>In a recent project at work, I had to integrate WordPress and bbPress. It proved to be a little more difficult than I anticipated, and I had to write my first WordPress plugin: <a href=\"http://wordpress.org/extend/plugins/add-bbpress-default-role/\">Add bbPress Default Role</a>.</p>',NULL,1864,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','55591647-3899-4920-91eb-3ef01fa6d58d',1,NULL,NULL,NULL,NULL),(1435,1920,'Sprite Optimization',NULL,'<p>Dave Shea is <a href=\"http://mezzoblue.com/archives/2009/01/27/sprite_optim/\">starting to notice the use of huge CSS Sprites</a>. I think I am in his state of mind: optimize when possible, but I’m not too interested in making one of those huge sprites.</p>',NULL,1865,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','fb73fdac-e761-495b-b6aa-96253602d640',1,NULL,NULL,NULL,NULL),(1436,1921,'How we reduced chargebacks by 30%',NULL,'<p>Jason Fried discusses <a href=\"http://www.37signals.com/svn/posts/1545-how-we-reduced-chargebacks-by-30-as-a-percentage-of-sales\">how they reduced chargebacks by 30%</a>. My favorite part of this is how 37Signals determines the problem and quickly finds the simple solution to it.</p>',NULL,1866,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','cce0d585-4962-4c39-ada9-1f0f1a0bd6b7',1,NULL,NULL,NULL,NULL),(1437,1922,'WebAIM screenreader survey…the results are in',NULL,'<p><a href=\"http://www.webstandards.org/2009/01/31/webaim-screenreader-survey-results/\">The WebAIM screenreader survey results are in</a>. Not surprisingly: 76% of users always or often navigating by headings; 72% of screen reader users reported that Flash is very or somewhat difficult.</p>',NULL,1867,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','b8999a0b-adc9-46e1-a8ae-d991f26fd2e4',1,NULL,NULL,NULL,NULL),(1438,1923,'Twitter Chatter During the Super Bowl',NULL,'<p>The New York Times created an <a href=\"http://www.nytimes.com/interactive/2009/02/02/sports/20090202_superbowl_twitter.html\">interactive information graph of tweets during the super bowl</a>. I love how at halftime, there was an explosion of Springsteen tweets.</p>',NULL,1868,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','00221a68-1fcd-4218-be9c-fc700e61b528',1,NULL,NULL,NULL,NULL),(1439,1924,'I’m a Weekly NETTUTS Writer',NULL,'<p>As I noted in my <a href=\"//trevor-davis.com/blog/tutorial/exactly-how-to-create-a-custom-jquery-accordion/\">last post</a>, I submitted a tutorial to <a href=\"http://nettuts.com/\">NETTUTS</a> to be considered as a weekly writer. I am very happy to announce that <strong>they chose me</strong>!</p>\n<p>In my second article, <a href=\"http://nettuts.com/tutorials/javascript-ajax/creating-a-filterable-portfolio-with-jquery/\">Creating a “Filterable” Portfolio with jQuery</a>, I take a look at creating a portfolio that can be filtered by category.</p>\n\n<p>This tutorial was kind of inspired by the effect that I created on <a href=\"http://www.matrixgroup.net/portfolio/\">my company’s portfolio</a>.</p>\n\n<h2>How will this effect my web site?</h2>\n<p>Yes, I am not going to be able to write articles as frequently on my blog, but I am still going to be posting some articles. I will also post a note each week discussing my weekly NETTUTS article.</p>\n<p>I hope you all enjoy the articles.</p>',NULL,1869,NULL,'2019-10-09 16:41:17','2019-10-09 16:41:17','301472ff-8329-4caa-b829-94870fc39aa2',1,NULL,NULL,NULL,NULL),(1440,1925,'Setting Body Ids in Expression Engine',NULL,'<p><a href=\"http://expressionengine.com/\">Expression Engine</a> has become a popular choice to power many sites. I have just begun experimenting with it, and I have been very impressed. One thing that I have been interested in determining was to figure out if I could set an id on the body like I do when building other sites. I have already written one article showing how to do this in <a href=\"//trevor-davis.com/blog/tutorial/set-a-body-id/\">PHP and WordPress</a>, but this will show how to do it dynamically in Expression Engine.</p>\n\n<h2>Why are Body Ids Useful?</h2>\n<p>Body ids can be useful for styling sections differently, displaying certain parts of a dynamic template, displaying current navigation states, and many other things.</p>\n\n<h3>A Simple Example</h3>\n<p>Let’s say that I want to have my font size be 14 pixels, <strong>except on the homepage</strong>. It would be as easy as this:</p>\n\n<div class=\"codeblock\"><code>\nbody { font-size: 14px; }<br />body#home { font-size: 12px; } \n\n</code></div>\n\n<p><strong>Pretty useful.</strong> By using body ids, we now have a unique hook for each section of the website.</p>\n\n<h2>Why not Body Classes?</h2>\n<p>I do utilize body classes as well. I typically use the body id to indicate the section, then other various items for the body classes.</p>\n\n<h3>For Example</h3>\n<p>For my own blog, I have some pages that I want to have a left gutter on it so that I can push images, quotes, etc. into the column. I also have another class that indicates when it is a blog article page. So, I can just continue to use multiple classes on the body to help me control the width and layout of the page.</p>\n\n<p>Here is what the body element looks like on a blog article on my site:</p>\n\n<div class=\"codeblock\"><code>\n&lt;body id=\"blog\" class=\"subpage leftGutter article\"&gt; \n\n</code></div>\n\n<p>The <strong>subpage class</strong> just indicates that it is not the homepage. Not completely necessary since I already have a specific id on the homepage, but it can sometimes become useful.</p>\n\n<p>The <strong>leftGutter class</strong> is used to push the content area to the right and make it narrower. Then, I can pull elements into the left-hand gutter as well.</p>\n\n<p>The <strong>article class</strong> is useful because some of the markup for the blog entry information is the same as the homepage and archive pages. Using this class, I can be more specific with my styles to change the way that these elements are displayed on the blog article page.</p>\n\n<p>I always try and add classes and id attributes as high up in the tree as possible. This let’s me utilize descendant selectors in the CSS without having to add additional classes and ids lower down.</p>\n\n<h2>Setting the Body Id in Expression Engine</h2>\n<p>I want to have complete control over the body id, so I want to be able to have it set dynamically and also be able to set it statically.</p>\n\n<p>So my thought behind this is that first, I want to check to see if the body id was set statically. When I say statically, I mean passing the variable in as an attribute on my embed statement. Next, I will then set the body id dynamically.</p>\n\n<h3>Setting the Id Statically</h3>\n<p>In order to make changes to the overall website structure simpler, I have a header template the sits in the includes template group. So in all of the other template groups, I embed the header on the page:</p>\n\n<div class=\"codeblock\"><code>\n{embed=\"includes/header\"} \n\n</code></div>\n\n<p>Then, if for some reason I want to specifically pass in a body id, I can just change it to this:</p>\n\n<pre><code>{embed=\"includes/header\" <strong>body_id=\"contact-us\"</strong>}</code></pre>\n\n<p>So the first step in the header is to check to see if the <strong>embed:body_id</strong> variable is set:</p>\n<div class=\"codeblock\"><code>\n&lt;body<br />{if embed:body_id}<br /> id=\"{embed:body_id}\"<br />{/if}<br />&gt; \n\n</code></div>\n<p class=\"note\"><em>Note: Line wrapping added for readability.</em></p>\n\n<h3>Dynamically Setting the Id</h3>\n<p>If we are not statically setting the body id, we want to then do it dynamically. My thinking is that I will take advantage of Expression Engine’s <a href=\"http://expressionengine.com/docs/templates/globals/url_segments.html\">URL segments</a> to determine which section we are in.</p>\n\n<p>Here is an example of URL segments using the following URL:</p>\n\n<div class=\"codeblock\"><code>\nhttp://ee.trevor-davis.com/index.php/about/me/education/ \n\n</code></div>\n\n<ul><li>Segment 1 = <strong>about</strong></li>\n <li>Segment 2 = <strong>me</strong></li>\n <li>Segment 3 = <strong>education</strong></li>\n</ul><p>Then, we can reference each segment like so:</p>\n\n<ul><li>Segment 1 = <strong>{segment_1}</strong></li>\n <li>Segment 2 = <strong>{segment_2}</strong></li>\n <li>Segment 3 = <strong>{segment_3}</strong></li>\n</ul><p>So basically what we want to do is assign the body id the value of <strong>{segment_1}</strong> if it is not empty. So continuing on our example:</p>\n\n<div class=\"codeblock\"><code>\n&lt;body<br />{if embed:body_id}<br /> id=\"{embed:body_id}\"<br />{if:elseif segment_1}<br /> id=\"{segment_1}\"<br />{/if}<br />&gt; \n\n</code></div>\n\n<p class=\"note\"><em>Note: Line wrapping added for readability.</em></p>\n\n<p><strong>But wait, what about the homepage?</strong> The homepage will have nothing for the value of <strong>{segment_1}</strong>, so we can just put in an else statement:</p>\n\n<div class=\"codeblock\"><code>\n&lt;body<br />{if embed:body_id}<br /> id=\"{embed:body_id}\"<br />{if:elseif segment_1}<br /> id=\"{segment_1}\"<br />{if:else}<br /> id=\"home\"<br />{/if}<br />&gt; \n\n</code></div>\n\n<p class=\"note\"><em>Note: Line wrapping added for readability.</em></p>\n\n<p>Here is the line of code without any line wrapping:</p>\n<div class=\"codeblock\"><code>\n&lt;body{if embed:body_id} id=\"{embed:body_id}\"{if:elseif segment_1} id=\"{segment_1}\"{if:else} id=\"home\"{/if}&gt; \n\n</code></div>\n\n<p>I created a <a href=\"http://ee.trevor-davis.com/index.php/\">demo Expression Engine site</a> to test this functionality.</p>\n\n<p><a href=\"http://ee.trevor-davis.com/index.php/\" class=\"more-link\">View Demo Site</a></p>\n\n<h2>Walking Through the Demo Site</h2>\n<p>Since we have body ids for each section and an id on each list item in the navigation, I have created the current state for the navigation with a few simple line of CSS:</p>\n<div class=\"codeblock\"><code>\nbody#home ul#primaryNav li#homeNav a,<br />body#about ul#primaryNav li#aboutNav a,<br />body#services ul#primaryNav li#servicesNav a,<br />body#contact-us ul#primaryNav li#contactNav a {<br /> background: #B3602D;<br /> border-top-color: #B3602D;<br /> color: #fff;<br />} \n\n</code></div>\n<p class=\"note\"><em>Note: Line wrapping added for readability.</em></p>\n\n<p>I also want to show the sidebar on all of the subpages, so I just need 1 more conditional:</p>\n<div class=\"codeblock\"><code>\n{if embed:body_id || segment_1}<br /> &lt;div id=\"sidebar\"&gt;<br /> &lt;/div&gt;<br />{/if} \n\n</code></div>\n\n<p>This is checking to see if {embed:body_id} or {segment_1} are not empty, and displaying the sidebar if one or both are set.</p>\n\n<p>These are just a few examples of using a body id in Expression Engine, but the possibilities are endless.</p>\n\n<h2>One More Thing</h2>\n<p>Another thing that I was trying to figure out was how to create a variable that I could reuse in multiple embed files. So what I want to do is in my conditional statement, determine that the body id should be and assign it to a variable. Then, I want to be able to access that variable in the footer without have to use the same conditional statement.</p>\n\n<p><strong>Is this possible?</strong> I was messing around with the <strong>{assign_variable}</strong> tag, but that didn’t seem to do the job because it can only be used in the same template. <strong>Anyone know how to do this?</strong> I’m relatively new to Expression Engine, so I am still learning. </p>',NULL,1870,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','fcc1de23-bf2f-4a3a-a17d-ae73a22a7dfe',1,NULL,NULL,NULL,NULL),(1441,1926,'42 Web Design Companies: Designs That Move Me',NULL,'<p>There are so many <a href=\"http://designmovesme.com/42-web-design-companies/\">web design companies that have amazing websites</a>. I felt inspired after looking through these. Now it’s just a matter of execution…</p>',NULL,1871,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','3cc940ea-d163-4c13-bbe0-8d1fa3b4bf77',1,NULL,NULL,NULL,NULL),(1442,1927,'10 Harsh Truths About Corporate Websites',NULL,'<p>The legendary Paul Boag gives us a <a href=\"http://www.smashingmagazine.com/2009/02/10/10-harsh-truths-about-corporate-websites/\">reality check</a>. While it’s hard to believe, I think I agree with all of them.</p>',NULL,1872,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','2cc03578-48a2-497b-946c-fe1371420ae3',1,NULL,NULL,NULL,NULL),(1443,1928,'No more pixel perfectionism in IE 6',NULL,'<p>I do just like <a href=\"http://www.456bereastreet.com/archive/200902/no_more_pixel_perfectionism_in_ie_6/\">Roger Johansson says</a>: I make sites perfectly usable in IE, but <strong>not necessarily exactly the same</strong>. As long as everything is accessible, it’s good enough for me.</p>',NULL,1873,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','6760bbe2-afe8-474a-829e-0bd11bd0c9ad',1,NULL,NULL,NULL,NULL),(1444,1929,'Fixing a Twitter WordPress Plugin with jQuery',NULL,'<p>I use the fantastic <a href=\"http://wordpress.org/extend/plugins/twitter-for-wordpress/\">Twitter for WordPress plugin</a> on my website. Sometimes though, <a href=\"http://twitter.com\">Twitter</a> decides that it doesn’t want to make my tweets available. The plugin has accounted for this, and it displays <strong>No public Twitter messages</strong> when this happens. That kinda sucks though.</p>\n\n<p>It’s definitely nice that the plugin doesn’t throw an error, but I really don’t want that message displayed on my site. So what’s the solution? <strong>jQuery of course</strong>.</p>\n\n<h2>When the Tweet Comes Through</h2>\n<p>Here is the markup that is displayed on my site when a tweet comes through successfully:</p>\n\n<div class=\"codeblock\"><code>\n&lt;div id=\"twitterContainer\"&gt;<br /> &lt;a class=\"twitter-link\" href=\"http://twitter.com/davist11/status/1200405534\"&gt;<br />  I feel like I\'m in an episode of Seinfeld right now.<br /> &lt;/a&gt;<br />&lt;/div&gt; \n\n</code></div>\n\n<h2>When the Tweet Doesn’t Come Through</h2>\n<p>This is what you end up with:</p>\n<div class=\"codeblock\"><code>\n&lt;div id=\"twitterContainer\"&gt;<br /> No public Twitter messages.<br />&lt;/div&gt; \n\n</code></div>\n\n<h2>The jQuery</h2>\n<p>My thinking is that I will check the contents of <strong>div#twitterContainer</strong> to see if it is <strong>No public Twitter messages</strong>. If it is, I think it would be useful to replace that text with a link to <a href=\"http://twitter.com/davist11\">my Twitter account</a> with a message telling people to follow me.</p>\n\n<p>So first, let’s execute the jQuery code when the document is loaded:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> <br />}); \n\n</code></div>\n\n<p>Next, we are going to check and see <strong>if the contents of div#twitterContainer is No public Twitter messages</strong>:\n\n</p><div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> &lt;strong&gt;if(jQuery.trim($(\'div#twitterContainer\').text()) == \'No public Twitter messages.\') {<br />   <br /> }&lt;/strong&gt;<br />}); \n\n</code></div>\n\n<p>Finally, let’s just replace this text with a link to my Twitter feed:</p>\n\n<div class=\"codeblock\"><code>\n$(document).ready(function() {<br /> if(jQuery.trim($(\'div#twitterContainer\').text()) == \'No public Twitter messages.\') {<br />  &lt;strong&gt;$(\'div#twitterContainer\').html(\'&lt;a href=\"http://twitter.com/davist11\" class=\"twitter-link\"&gt;Follow Me on Twitter&lt;/a&gt;\');&lt;/strong&gt;  <br /> }<br />}); \n\n</code></div>\n\n<div class=\"clearfix\">\n<p><img src=\"//assets.trevor-davis.com/uploads/images/content/2009/02/twitter-plugin-fixed.jpg\" alt=\"Screenshot of fixed Twitter plugin\" class=\"rightSide frame\" height=\"164\" width=\"150\" /><strong>That’s it</strong>. This is just <a href=\"//trevor-davis.com/blog/tutorial/improving-a-flickr-plugin-with-jquery/\">another example of how I have used jQuery to improve a WordPress plugin on my site</a>.</p>\n\n<p>You can see this in action on my site, or <a href=\"//assets.trevor-davis.com/play/fixing-twitter-plugin/\">take a look at the demo</a>.\n\n</p><p><a href=\"//assets.trevor-davis.com/play/fixing-twitter-plugin/\" class=\"more-link\">See Demo</a></p>\n</div>',NULL,1874,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','6c60ab3b-80e8-49fa-8830-16271fa2f49d',1,NULL,NULL,NULL,NULL),(1445,1930,'CSS3 Feedback: Selector Blocks',NULL,'<p>Ohh, please make <a href=\"http://meyerweb.com/eric/thoughts/2009/02/12/selector-blocks/\">the ability to do this</a> happen. It would make CSS so much more lightweight and easier to write.</p>',NULL,1875,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','a1032520-6385-40b3-ae30-488fcc52d5e8',1,NULL,NULL,NULL,NULL),(1446,1931,'5 Ways to Instantly Write Better CSS',NULL,'<p>In my most recent article at NETTUTS: <a href=\"http://nettuts.com/tutorials/html-css-techniques/5-tips-to-writing-better-css/\">5 Ways to Instantly Write Better CSS</a>, I share some tips that have helped me to write better CSS.</p>\n\n<p>This is definitely not me trying to tell you to code in a certain way; they are just some tips that I have found to become very useful for myself. I hope you enjoy, and feel free to <a href=\"http://nettuts.com/tutorials/html-css-techniques/5-tips-to-writing-better-css/#add\">share other tips</a>.</p>',NULL,1876,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','c887e0b8-f4a4-4c03-b31b-64511fc104a3',1,NULL,NULL,NULL,NULL),(1447,1932,'10 tips for efficient design',NULL,'<p>Paul Boag says that “being a good designer is not always enough to survive hard economic times. You need to be efficient too.” With that, he gives us <a href=\"http://boagworld.com/design/10_tips_for_efficient_design/\">10 tips for efficient design</a>. I think #10 should be <em>emphasized</em> and then <strong>emphasized again</strong>; it’s so important!</p>',NULL,1877,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','3d580d46-4ffa-41c9-8ed7-be2d42c1e38c',1,NULL,NULL,NULL,NULL),(1448,1933,'Achieve Your Big Goals With Incremental Persistence',NULL,'<p><a href=\"http://www.devlounge.net/strategy/achieve-your-big-goals-with-incremental-persistence\">Incremental success</a> really helps in working toward your larger goals. I’ve been trying to improve something on my site every day. Recent examples: <a href=\"//trevor-davis.com/work/\">tooltips on my portfolio</a> &amp; <a href=\"//trevor-davis.com/blog/\">better pagination on my blog</a>.</p>',NULL,1898,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','c489c570-53a5-4451-af55-a195ca24b5be',1,NULL,NULL,NULL,NULL),(1449,1934,'Orange You Sorry About Tropicana?',NULL,'<p>Khoi Vinh discusses <a href=\"http://www.subtraction.com/2009/02/24/orange-you-sorry-about-tropicana\">the disastrous Tropicana redesign</a> and wonders if the branding agency behind it, Arnell, did it just for the press. I certainly agree that it was a disaster, as I felt like I was trying to find my orange juice for 5 minutes.</p>',NULL,1899,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','ab619560-bb02-41fe-a3be-e246ab2355f4',1,NULL,NULL,NULL,NULL),(1450,1935,'WordPress & jQuery Contact Form without a Plugin',NULL,'<p>There are <a href=\"http://wordpress.org/extend/plugins/search.php?q=contact\">lots of WordPress plugins for contact forms</a>, but wouldn’t it be nice to have more control over the markup? In this tutorial, I am going to show how to use a custom page template to create a contact form in WordPress without a plugin.</p>\n<p>Some people may want to skip the post and get to the demo and source files:</p><p class=\"clearfix\"><a href=\"http://wp.trevor-davis.com/contact-form/\" class=\"leftSide more-link\">View Demo</a> <a href=\"//assets.trevor-davis.com/uploads/images/content/2009/02/contact-form.zip\" class=\"leftSide more-link\">Download Source Files</a></p><h2>So, why not use a plugin?</h2><p>Well, I think that a contact form is so simple that a WordPress plugin that doesn’t provide exactly what I want is pretty lame. Plus, I don’t need all those fancy interfaces for building the form; I just need the code.</p><h2>The Plan</h2><p>Our plan is to create a custom <a href=\"http://codex.wordpress.org/Pages#Creating_Your_Own_Page_Templates\">WordPress Page Template</a>, then create a page that uses that template. Finally, we will add in a little <strong>jQuery</strong> to improve the form. Let’s write a little pseudo code to help determine how our page template will be structured.</p><h3>Pseudo Code</h3>\n<pre>&lt;code&gt;If form was submitted validate it\n If the form was submitted successfully\n  Send email(s)\n Else\n  Set variables to show errors\n\nIf the form was submitted successfully\n Show thank you message\nElse\n Show form (with errors if there are any)</pre>\n<h3>Creating the WordPress Page Template</h3><p>Alright, so first, we are going to start with some basic stuff: define the template name, include the header/sidebar/footer, and setup the basic structure of our pseudo code.</p><pre>&lt;code&gt;&lt;?php\n/*\nTemplate Name: Contact Form\n*/\n?&gt;\n\n&lt;?php \n//If the form is submitted\nif(isset($_POST[\'submitted\'])) {\n //If there is no error, send the email\n if(!isset($hasError)) {\n\n }\n} ?&gt;\n\n&lt;?php get_header(); ?&gt;\n\n&lt;?php \n//If the email was sent, show a thank you message\n//Otherwise show form\nif(isset($emailSent) &amp;&amp; $emailSent == true) {\n?&gt;\n\n&lt;?php } else { ?&gt;\n\n&lt;?php } ?&gt;\n\n&lt;?php get_sidebar(); ?&gt;\n\n&lt;?php get_footer(); ?&gt;</pre>\n<h3>The Form</h3><p>Next, let’s code the actual form. I also want to provide the ability for the user to enter some text to go above the form, so we are going to use the regular loop:</p>\n<pre>&lt;code&gt;&lt;?php if(isset($emailSent) &amp;&amp; $emailSent == true) { ?&gt;\n\n &lt;div class=\"thanks\"&gt;\n  &lt;h1&gt;Thanks, &lt;?=$name;?&gt;&lt;/h1&gt;\n  &lt;p&gt;Your email was successfully sent. I will be in touch soon.&lt;/p&gt;\n &lt;/div&gt;\n\n&lt;?php } else { ?&gt;\n\n &lt;?php if (have_posts()) : ?&gt;\n \n  &lt;?php while (have_posts()) : the_post(); ?&gt;\n   &lt;h1&gt;&lt;?php the_title(); ?&gt;&lt;/h1&gt;\n   &lt;?php the_content(); ?&gt;\n  \n   &lt;?php if(isset($hasError) || isset($captchaError)) { ?&gt;\n    &lt;p class=\"error\"&gt;\n     There was an error submitting the form.\n    &lt;p&gt;\n   &lt;?php } ?&gt;\n \n   &lt;form action=\"&lt;?php the_permalink(); ?&gt;\" id=\"contactForm\" method=\"post\"&gt;\n \n   &lt;/form&gt;\n \n  &lt;?php endwhile; ?&gt;\n &lt;?php endif; ?&gt;\n&lt; } ?&gt;</pre>\n<p>If the <strong>emailSent</strong> variable is set to true, we display the thank you message. Otherwise, we show the form. So we are outputting the title of the page, and any content that was entered. Then, we are checking to see if there was an error. Finally, we display the form:</p><pre>&lt;code&gt;&lt;ol class=\"forms\"&gt;\n &lt;li&gt;\n  &lt;label for=\"contactName\"&gt;Name&lt;/label&gt;\n  &lt;input type=\"text\" name=\"contactName\" id=\"contactName\" value=\"\n  &lt;?php if(isset($_POST[\'contactName\'])) echo $_POST[\'contactName\'];?&gt;\"\n   class=\"requiredField\" /&gt;\n  &lt;?php if($nameError != \'\') { ?&gt;\n   &lt;span class=\"error\"&gt;&lt;?=$nameError;?&gt;&lt;/span&gt; \n  &lt;?php } ?&gt;\n &lt;/li&gt;\n \n &lt;li&gt;\n  &lt;label for=\"email\"&gt;Email&lt;/label&gt;\n  &lt;input type=\"text\" name=\"email\" id=\"email\" value=\"\n  &lt;?php if(isset($_POST[\'email\']))  echo $_POST[\'email\'];?&gt;\"\n  class=\"requiredField email\" /&gt;\n  &lt;?php if($emailError != \'\') { ?&gt;\n   &lt;span class=\"error\"&gt;&lt;?=$emailError;?&gt;&lt;/span&gt;\n  &lt;?php } ?&gt;\n &lt;/li&gt;\n \n &lt;li class=\"textarea\"&gt;\n  &lt;label for=\"commentsText\"&gt;Comments&lt;/label&gt;\n  &lt;textarea name=\"comments\" id=\"commentsText\" rows=\"20\" cols=\"30\" class=\"requiredField\"&gt;\n  &lt;?php if(isset($_POST[\'comments\'])) { \n   if(function_exists(\'stripslashes\')) { \n    echo stripslashes($_POST[\'comments\']); \n   } else { \n    echo $_POST[\'comments\']; \n   }\n   } ?&gt;&lt;/textarea&gt;\n  &lt;?php if($commentError != \'\') { ?&gt;\n   &lt;span class=\"error\"&gt;&lt;?=$commentError;?&gt;&lt;/span&gt; \n  &lt;?php } ?&gt;\n &lt;/li&gt;\n &lt;li class=\"inline\"&gt;\n  &lt;input type=\"checkbox\" name=\"sendCopy\" id=\"sendCopy\" value=\"true\"\n  &lt;?php if(isset($_POST[\'sendCopy\']) &amp;&amp; $_POST[\'sendCopy\'] == true) \n   echo \' checked=\"checked\"\'; ?&gt; \n  /&gt;\n  &lt;label for=\"sendCopy\"&gt;Send a copy of this email to yourself&lt;/label&gt;\n &lt;/li&gt;\n &lt;li class=\"screenReader\"&gt;\n  &lt;label for=\"checking\" class=\"screenReader\"&gt;If you want to submit this form, do not enter anything in this field&lt;/label&gt;\n  &lt;input type=\"text\" name=\"checking\" id=\"checking\" class=\"screenReader\" value=\"\n  &lt;?php if(isset($_POST[\'checking\']))  echo $_POST[\'checking\'];?&gt;\"\n  /&gt;\n &lt;/li&gt;\n &lt;li class=\"buttons\"&gt;\n  &lt;input type=\"hidden\" name=\"submitted\" id=\"submitted\" value=\"true\" /&gt;\n  &lt;button type=\"submit\"&gt;Email me »&lt;/button&gt;\n &lt;/li&gt;\n&lt;/ol&gt;</pre>\n<p class=\"note\"><em>Note: Line wrapping added for readability.</em></p><p>Ok, wow, that may seem like a lot. So let’s break down the name field to see what this code is actually doing:</p><pre>&lt;code&gt;&lt;li&gt;&lt;label for=\"contactName\"&gt;Name&lt;/label&gt;\n &lt;input type=\"text\" name=\"contactName\" id=\"contactName\" value=\"&lt;?php if(isset($_POST[\'contactName\'])) echo $_POST[\'contactName\'];?&gt;\" class=\"requiredField\" /&gt;\n &lt;?php if($nameError != \'\') { ?&gt;\n  &lt;span class=\"error\"&gt;&lt;?=$nameError;?&gt;&lt;/span&gt; \n &lt;?php } ?&gt;\n&lt;/li&gt;</pre>\n<p>We are displaying each form field in a list item, displaying the label, input field, and then showing an error message if there is one. We are also displaying the value in the form field if it was already submitted.</p><p>So in essence, we are just doing that for each field of the form. You could easily go into the code to add more fields.</p><p>We are also using honeypot captcha to see if a bot was trying to submit the form:</p><pre>&lt;code&gt;&lt;li class=\"screenReader\"&gt;\n &lt;label for=\"checking\" class=\"screenReader\"&gt;If you want to submit this form, do not enter anything in this field&lt;/label&gt;\n &lt;input type=\"text\" name=\"checking\" id=\"checking\" class=\"screenReader\" value=\"&lt;?php if(isset($_POST[\'checking\']))  echo $_POST[\'checking\'];?&gt;\" /&gt;\n&lt;/li&gt;</pre>\n<p>That list item is pushed off the page with CSS, and if there is a value in that field, we can assume that it is not a human trying to submit the form:</p><pre>&lt;code&gt;.screenReader { \n left: -9999px; \n position: absolute; \n top: -9999px;\n}</pre>\n<h3>The Validation</h3><p>Next, we are going to have a conditional statement to determine if the form was submitted or not:</p><pre>&lt;code&gt;&lt;?php \n//If the form is submitted\nif(isset($_POST[\'submitted\'])) {\n\n} ?&gt;</pre>\n<p>Within that conditional, is where we are going to do all of our validation of the required fields. First, let’s check to see if our honeypot captcha form field is filled in. If it is, then we will display an error and not check anymore of the form:</p><pre>&lt;code&gt;//Check to see if the honeypot captcha field was filled in\nif(trim($_POST[\'checking\']) !== \'\') {\n $captchaError = true;\n} else {\n\n}</pre>\n<p>So if the captcha field was left blank, we will continue to validate the required fields:</p><pre>&lt;code&gt;//Check to make sure that the name field is not empty\nif(trim($_POST[\'contactName\']) === \'\') {\n $nameError = \'You forgot to enter your name.\';\n $hasError = true;\n} else {\n $name = trim($_POST[\'contactName\']);\n}\n\n//Check to make sure sure that a valid email address is submitted\nif(trim($_POST[\'email\']) === \'\')  {\n $emailError = \'You forgot to enter your email address.\';\n $hasError = true;\n} else if (!eregi(\"^[A-Z0-9._%-]+@[A-Z0-9._%-]+.[A-Z]{2,4}$\", trim($_POST[\'email\']))) {\n $emailError = \'You entered an invalid email address.\';\n $hasError = true;\n} else {\n $email = trim($_POST[\'email\']);\n}\n \n//Check to make sure comments were entered \nif(trim($_POST[\'comments\']) === \'\') {\n $commentError = \'You forgot to enter your comments.\';\n $hasError = true;\n} else {\n if(function_exists(\'stripslashes\')) {\n  $comments = stripslashes(trim($_POST[\'comments\']));\n } else {\n  $comments = trim($_POST[\'comments\']);\n }\n}</pre>\n<p>Again, that may seem like a little much, so let’s just take a look at the validation on the name field:</p><pre>&lt;code&gt;if(trim($_POST[\'contactName\']) === \'\') {\n $nameError = \'You forgot to enter your name.\';\n $hasError = true;\n} else {\n $name = trim($_POST[\'contactName\']);\n}</pre>\n<p>If the name field if empty, set a variable that will display the name error and set a flag saying that there was an error on the form. Otherwise, set a variable that will contain the name value from the form.</p><h3>Sending the Email</h3><p>Now, we want to send the email if there are no errors:</p>\n<pre>&lt;code&gt;//If there is no error, send the email\nif(!isset($hasError)) {\n\n $emailTo = \'&lt;strong&gt;me@somedomain.com&lt;/strong&gt;\';\n $subject = \'Contact Form Submission from \'.$name;\n $sendCopy = trim($_POST[\'sendCopy\']);\n $body = \"Name: $name nnEmail: $email nnComments: $comments\";\n $headers = \'From: My Site &lt;\'.$emailTo.\'&gt;\' . \"rn\" . \'Reply-To: \' . $email;\n \n mail($emailTo, $subject, $body, $headers);\n\n if($sendCopy == true) {\n  $subject = \'You emailed &lt;strong&gt;Your Name&lt;/strong&gt;\';\n  $headers = \'From: &lt;strong&gt;Your Name&lt;/strong&gt; &lt;&lt;strong&gt;noreply@somedomain.com&lt;/strong&gt;&gt;\';\n  mail($email, $subject, $body, $headers);\n }\n\n $emailSent = true;\n\n}</pre>\n<p class=\"note\"><em>Note: Items bolded are values that you will want to change before implementing.</em></p><p>I personally like to have the contact form submission come from myself. That way, I just setup a filter in Gmail, and I can guarantee that it won’t get caught in my spam filter. The second email is only sent if the user checks the checkbox to send a copy to themselves.</p><p><a href=\"//assets.trevor-davis.com/uploads/images/content/2009/02/contact-form.txt\" class=\"more-link\">View Entire Custom Page Template</a></p><h3>Creating the Page in WordPress</h3><p>First, you want to upload the <a href=\"//assets.trevor-davis.com/uploads/images/content/2009/02/contact-form.zip\">contact-form.php</a> page template to your themes folder. Next, you will create the page in WordPress and select <strong>Contact Form</strong> as the page template.</p><p class=\"pullLeft\"><img src=\"//assets.trevor-davis.com/uploads/images/content/2009/02/wordpress-page-template.png\" alt=\"Adding WordPress page template\" class=\"frame\" height=\"341\" width=\"570\" /></p><p>Then, just publish your page and you will have your contact form. Well, the form will be usable, but we are going to add in some CSS and jQuery to finish it off.</p><h3>Styling the Form</h3><p>I recently wrote <a href=\"//trevor-davis.com/blog/tutorial/flexible-and-semantic-forms-with-a-little-jquery/\">an article about styling forms</a>, so we are just going to stick with some basic styles:</p><pre>&lt;code&gt;.screenReader { left: -9999px; position: absolute; top: -9999px; }\n.thanks { background: #F2F3F6; border: 1px solid #7E8AA2; padding: 10px; }\n\n/*****Forms*****/\nol.forms { float: left; list-style: none; margin: 0; width: 100%; }\nol.forms li { \n clear: both; \n float: left; \n margin-bottom: 18px; \n position: relative;\n width: 100%;\n}\nol.forms label {\n cursor: pointer;\n display: block;\n float: left;\n font-weight: bold;\n padding-right: 20px;\n width: 100px;\n}\nol.forms input, ol.forms textarea {\n border: 1px solid #7E8AA2;\n border-radius: 3px;\n font: inherit;\n -moz-border-radius: 3px;\n padding: 2px;\n -webkit-border-radius: 3px;\n width: 214px;\n}\nol.forms textarea { height: 300px; width: 334px; }\nol.forms input:focus, ol.forms textarea:focus { background-color: #f2f3f6; border-color: #ff9800; }\n.error { color: #f00; }\nol.forms li .error { font-size: 12px; margin-left: 20px; }\nol.forms li.textarea .error {\n display: block;\n position: absolute;\n right: 0;\n top: 0;\n width: 100px;\n}\nol.forms li.screenReader { margin-bottom: 0; }\nol.forms li.buttons button {\n background: #ff9800;\n border: none;\n color: #000;\n cursor: pointer;\n font: 16px/16px \"Avenir LT Std\", Helvetica, Arial, sans-serif;\n overflow: hidden;\n padding: 6px 3px 3px 3px;\n text-transform: uppercase;\n width: auto;\n}\nol.forms li.buttons button:hover { color: #222; }\nol.forms li.buttons button:active { left: -1px; position: relative; top: -1px; }\nol.forms li.buttons, ol.forms li.inline { float: right; width: 460px; }\nol.forms li.inline input { width: auto; }\nol.forms li.inline label { display: inline; float: none; width: auto; }</pre>\n<p>So drop that CSS in your theme stylesheet and you will see the form start to look much better.</p><h3>Enhancing the form with some jQuery</h3><p>I have also already written about creating <a href=\"//trevor-davis.com/blog/ajax-forms-with-jquery/\">AJAX forms with jQuery</a>, but I thought I would specifically talk about an AJAX script for a contact form.</p><p>First, we want to execute our jQuery when the document is ready and the form was submitted:</p><pre>&lt;code&gt;$(document).ready(function() {\n $(\'form#contactForm\').submit(function() {\n  \n  return false;\n });\n});</pre>\n<p>Next, we want to hide any error messages if there are any and validate any required fields which are denoted with a class of <strong>requiredField</strong>:</p><pre>&lt;code&gt;$(\'form#contactForm .error\').remove();\nvar hasError = false;\n$(\'.requiredField\').each(function() {\n   \n});</pre>\n<p>After that, we want to validate that the field is not empty and append an error message if it is:</p><pre>&lt;code&gt;if(jQuery.trim($(this).val()) == \'\') {\n var labelText = $(this).prev(\'label\').text();\n $(this).parent().append(\'&lt;span class=\"error\"&gt;You forgot to enter your \'+labelText+\'.&lt;/span&gt;\');\n hasError = true;\n}</pre>\n<p>If the field is not empty and also has a class of <strong>email</strong>, we want to validate that the email address is valid:</p><pre>&lt;code&gt; else if($(this).hasClass(\'email\')) {\n var emailReg = /^([w-.]+@([w-]+.)+[w-]{2,4})?$/;\n if(!emailReg.test(jQuery.trim($(this).val()))) {\n  var labelText = $(this).prev(\'label\').text();\n  $(this).parent().append(\'&lt;span class=\"error\"&gt;You entered an invalid \'+labelText+\'.&lt;/span&gt;\');\n  hasError = true;\n }\n}</pre>\n<p>If there are no errors, then we want to replace the submit button with a loading image:</p><pre>&lt;code&gt;if(!hasError) {\n$(\'form#contactForm li.buttons button\').fadeOut(\'normal\', function() {\n $(this).parent().append(\'&lt;img src=\"/wp-content/themes/td-v3/images/template/loading.gif\" alt=\"Loading…\" height=\"31\" width=\"31\" /&gt;\');\n});</pre>\n<p class=\"note\"><em>Note: You will need to update the source of the image to wherever you upload it in your theme.</em></p><p>Finally, let’s submit the form via an AJAX request, slide the form up, and show a thank you message:</p><pre>&lt;code&gt;var formInput = $(this).serialize();\n$.post($(this).attr(\'action\'),formInput, function(data){\n $(\'form#contactForm\').slideUp(\"fast\", function() {       \n  $(this).before(\'&lt;p class=\"thanks\"&gt;&lt;strong&gt;Thanks!&lt;/strong&gt; Your email was successfully sent. I check my email all the time, so I should be in touch soon.&lt;/p&gt;\');\n });\n});</pre>\n<p>Take a look at the entire script:</p><pre>&lt;code&gt;$(document).ready(function() {\n $(\'form#contactForm\').submit(function() {\n  $(\'form#contactForm .error\').remove();\n  var hasError = false;\n  $(\'.requiredField\').each(function() {\n   if(jQuery.trim($(this).val()) == \'\') {\n    var labelText = $(this).prev(\'label\').text();\n    $(this).parent().append(\'&lt;span class=\"error\"&gt;You forgot to enter your \'+labelText+\'.&lt;/span&gt;\');\n    hasError = true;\n   } else if($(this).hasClass(\'email\')) {\n    var emailReg = /^([w-.]+@([w-]+.)+[w-]{2,4})?$/;\n    if(!emailReg.test(jQuery.trim($(this).val()))) {\n     var labelText = $(this).prev(\'label\').text();\n     $(this).parent().append(\'&lt;span class=\"error\"&gt;You entered an invalid \'+labelText+\'.&lt;/span&gt;\');\n     hasError = true;\n    }\n   }\n  });\n  if(!hasError) {\n   $(\'form#contactForm li.buttons button\').fadeOut(\'normal\', function() {\n    $(this).parent().append(\'&lt;img src=\"/wp-content/themes/td-v3/images/template/loading.gif\" alt=\"Loading…\" height=\"31\" width=\"31\" /&gt;\');\n   });\n   var formInput = $(this).serialize();\n   $.post($(this).attr(\'action\'),formInput, function(data){\n    $(\'form#contactForm\').slideUp(\"fast\", function() {       \n     $(this).before(\'&lt;p class=\"thanks\"&gt;&lt;strong&gt;Thanks!&lt;/strong&gt; Your email was successfully sent. I check my email all the time, so I should be in touch soon.&lt;/p&gt;\');\n    });\n   });\n  }\n  \n  return false;\n  \n });\n});</pre>\n<p>Just include it in the head of your document after jQuery, and you are good to go:</p><pre>&lt;code&gt;&lt;script type=\"text/javascript\" src=\"&lt;?php bloginfo(\'template_directory\'); ?&gt;/scripts/jquery.js\"&gt;&lt;/script&gt;\n&lt;script type=\"text/javascript\" src=\"&lt;?php bloginfo(\'template_directory\'); ?&gt;/scripts/contact-form.js\"&gt;&lt;/script&gt;</pre>\n<p class=\"note\"><em>Note: You may need to change the source depending upon where you upload the files in your theme.</em></p><h2>Conclusion</h2><p class=\"clearfix\"><a href=\"http://wp.trevor-davis.com/contact-form/\" class=\"leftSide more-link\">View Demo</a> <a href=\"//assets.trevor-davis.com/uploads/images/content/2009/02/contact-form.zip\" class=\"leftSide more-link\">Download Source Files</a></p><p>That’s it! Just upload the files and you’ve got your form. Since you’ve got the code right in front of you, it should be very easy to tweak and add on to. Enjoy!</p><p class=\"ad\">\nCenturyLink Deals: <a href=\"http://www.centurylinkquote.com/bundles.html\">Internet, Phone, &amp; TV Bundles</a></p>',NULL,1900,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','b145cd50-a992-4b22-b8dd-742b047124d8',1,NULL,NULL,NULL,NULL),(1451,1936,'There’s always time to launch your dream',NULL,'<p>I agree completely, <a href=\"http://www.37signals.com/svn/posts/1619-theres-always-time-to-launch-your-dream\">stop with the excuses</a>. I don’t think I tried that hard in school either. Definitely the quote of the article: “Never let your schooling interfere with your education”.</p>',NULL,1901,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','f6e707a8-7f07-4d92-9ec5-1c2d36d445df',1,NULL,NULL,NULL,NULL),(1452,1937,'We Refuse',NULL,'<p>You know what, <a href=\"http://unitinteractive.com/blog/2009/03/07/we-refuse/\">I refuse too</a>. Just because someone tells you that you shouldn’t do something, that doesn’t mean you have to listen. Would you have gotten to where you are today by only listening to other people?</p>',NULL,1902,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','873e6606-a1d3-4bcf-93e6-3e14a480e45c',1,NULL,NULL,NULL,NULL),(1453,1938,'Dynamically Set a Body Id in PHP',NULL,'<p>I have already written a couple of articles about body ids: <a href=\"//trevor-davis.com/blog/tutorial/set-a-body-id/\">\nSet a Body Id Using PHP</a> and <a href=\"//trevor-davis.com/blog/tutorial/setting-body-ids-in-expression-engine/\">Setting Body Ids in Expression Engine</a>, but in a recent project, I was looking for a more dynamic way to do it in PHP and WordPress.</p>\n\n<p>I don’t think it’s necessary to discuss the benefits of body ids because I have already discussed them in the other posts. So if you still aren’t using body ids/classes, go read the articles, and start using them.</p>\n\n<h2>The Plan</h2>\n<p>This seems so straightforward that I’m not sure why I didn’t start with this method. So basically, I look at the URI, and if it is equal to <strong>/</strong> then I give it a <strong>body id of home</strong>. Otherwise, I grab the <strong>first “folder” and set that as the body id</strong>.</p>\n\n<h3>Example</h3>\n<p>Let’s say that the URI is: <strong>/about/team/leadership/</strong>. The body id would be <strong>about</strong>. Ok, the seems easy, let’s get to the code.</p>\n\n<h2>The Code</h2>\n\n<p>Here is our setBodyId function:</p>\n\n<div class=\"codeblock\"><code>\nfunction setBodyId() {<br /> $path = $_SERVER[\'REQUEST_URI\'];<br /><br /> if($path === \'/\') {<br />  $bodyId = \'home\';<br /> } else {<br />  $bodyId = substr($path, 1, (strpos($path,\'/\',1)-1));<br /> }<br /> <br /> return $bodyId;<br />} \n\n</code></div>\n<p class=\"note\"><em>If you are using this in WordPress, put this function in your theme function.php file.</em></p>\n\n<p>Then, you want to call the function and assign it to a variable:</p>\n\n<div class=\"codeblock\"><code>\n$bodyId = setBodyId(); \n\n</code></div>\n\n<p>Finally, if the $bodyId variable is not empty, add the id attribute on the body tag:</p>\n<div class=\"codeblock\"><code>\n&lt;body&lt;?php if(!empty($bodyId)) echo \' id=\"\'.$bodyId.\'\"\';?&gt;&gt; \n\n</code></div>\n\n<h2>Conclusion</h2>\n<p>It’s so simple, yet powerful. This could also easily be recoded in other programming languages. What do you think? Any ideas for improvement?</p>',NULL,1903,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','dd8f8f0f-c013-4343-9fce-f543e5fadbdd',1,NULL,NULL,NULL,NULL),(1454,1939,'The 13 Most Essential Plugins for WordPress',NULL,'<p>I feel like right after I install WordPress; I immediately install the same set of plugins. I figured this would be a good topic for a post, so I chose that for my <a href=\"http://net.tutsplus.com/articles/web-roundups/the-13-most-essential-plugins-for-wordpress/\">most recent article at NETTUTS</a>.</p>',NULL,1904,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','090a90d7-65f5-4049-9225-344edb440a50',1,NULL,NULL,NULL,NULL),(1455,1940,'Browser Compatibility Master Tables',NULL,'<p>PPK has updated his <a href=\"http://www.quirksmode.org/compatibility.html\">browser compatibility tables</a> to include more CSS3 testing, new browsers, and more. This is a great resource to determine which browsers support what.</p>',NULL,1905,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','3c576ae2-a2a3-4c60-805d-243a157f79e9',1,NULL,NULL,NULL,NULL),(1456,1941,'Presentation to Damscus High School Students',NULL,'<p>I have been noticeably absent from my blog recently, but for good reason. I was honored when <a href=\"http://teachmetheweb.org/\">Jeff Brown</a>, a teacher at Damascus High School, asked if I wanted to speak to the students in his advanced web class. I have always been interested in speaking about web development, so this seemed like a great first opportunity.</p>\n\n<p>So basically, Mr. Brown has people in the industry come in and speak to his students every Friday. After looking at the <a href=\"http://teachmetheweb.org/index.php/tmtw/blog-article/spring_2009_guest_speaker_line_up/\">list of other speakers</a>, I sure was nervous. I mean; I go to conferences to see some of these guys speak.</p>\n\n<p>Mr. Brown has a great program going, and I was glad to be a part of it. He is one of the few teachers that actually teach about web standards and is a member of the <a href=\"http://www.webstandards.org/action/edutf\">WaSP Education Task Force</a>. He also gave a presentation at <a href=\"http://refresh-dc.org/\">RefreshDC</a> about web education the night before my presentation, that I unfortunately missed.</p>\n\n<h2>My Presentation</h2>\n<p>I decided to focus my presentation on my path through web development, some tips to become successful as a front-end developer, and then how to maintain that success.</p>\n\n<p>I was pretty nervous, and I felt like I raced at times, but I think it turned out well. Mr. Brown has posted the <a href=\"http://teachmetheweb.org/index.php/tmtw/blog-article/guest_speaker_reactions_trevor_davis/\">audio from the presentation</a> on his site.</p>\n\n<div class=\"leftSide\">\n <a href=\"http://www.slideshare.net/davist11/become-a-productive-frontend-developer-continue-to-be-one?type=powerpoint\">View Presentation: Become a Productive Front-End Developer &amp; Continue to be one</a>\n</div>\n\n<p class=\"clearing\">I would love to hear any feedback on the presentation, so let me know what you all think.</p>',NULL,1906,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','90ebc9c0-0495-4c14-bf2a-cac299f18231',1,NULL,NULL,NULL,NULL),(1457,1942,'Creating a jQuery Word Counter',NULL,'<p>I had to code a form at work that required word limitations on each textarea. The article describing <a href=\"http://blog.themeforest.net/tutorials/creating-a-jquery-word-counter/\">how I created a jQuery word counter</a> was published on the ThemeForest blog.</p>','http://blog.themeforest.net/tutorials/creating-a-jquery-word-counter/',0,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','b221a112-b6c1-47b9-b270-1117036dfa91',1,NULL,NULL,NULL,NULL),(1458,1943,'CSS Naked Day 2009',NULL,'<p>Yep, today, April 9, 2009, is <a href=\"http://naked.dustindiaz.com/\">the annual CSS Naked Day</a>. Some people may think it is a huge risk to completely strip the design from my site for a day, but I think otherwise.</p>\n\n<p>If anything, it gives visitors a chance to see my ability to code with web standards. I take the time and effort to write well structured XHTML, so it is still readable without any style applied.</p>\n<p>I am striping my design with the <a href=\"http://wordpress.org/extend/plugins/css-naked-day-noscript/\">CSS Naked Day WordPress Plugin</a>. I encourage everyone else to <strong>strip down and show off your <code>body</code></strong>.</p>\n<p>Is anyone else going naked today?</p>',NULL,1908,NULL,'2019-10-09 16:41:18','2019-10-09 16:41:18','742586db-2a59-4821-8479-84de115fecab',1,NULL,NULL,NULL,NULL),(1459,1944,'Dear Designer, You Suck',NULL,'<p>As usual, <a href=\"http://www.subtraction.com/2009/04/09/dear-designer-you-suck\">another well thought out post</a> from Khoi Vinh. I agree completely: I thrive on criticism. Even though I’m not a designer, I’m always looking to improve by hearing the thoughts of others.</p>',NULL,1909,NULL,'2019-10-09 16:41:19','2019-10-09 16:41:19','49bce75d-3690-42fc-994a-f84f3e701a69',1,NULL,NULL,NULL,NULL),(1460,1945,'Review: Building Websites with ExpressionEngine 1.6',NULL,'<p>I was lucky enough to be contacted by <a href=\"http://www.packtpub.com/\">Packt Publishing</a> to review the book <a href=\"http://www.packtpub.com/building-websites-with-expressionengine-1.6/book/mid/200409srne2o\">Building Websites with ExpressionEngine 1.6</a> by Leonard Murphy. I have recently become very infatuated with <a href=\"http://expressionengine.com/\">ExpressionEngine</a>, and I have devoted a lot of time to learning how to use it. This book was a great opportunity to see where my skill set was at.</p>\n\n<a href=\"http://www.packtpub.com/building-websites-with-expressionengine-1.6/book/mid/200409srne2o\"><img src=\"//assets.trevor-davis.com/uploads/images/content/2009/04/building-site-ee.jpg\" alt=\"Building Websites with ExpressionEngine 1.6\" class=\"rightSide frame\" height=\"259\" width=\"210\" /></a>\n<h2>Who is it for?</h2>\n<p>This book is definitely aimed toward beginning users of <abbr title=\"ExpressionEngine\">EE</abbr> who have some knowledge of HTML. There is no knowledge of EE needed in order to read this book. So basically anyone who wants to learn how to use EE would benefit from reading this. While I have had some experience with EE, I found many parts of this book that were more of a review for me.</p>\n\n<h2>What I liked</h2>\n<p>I really liked that Leonard uses a lot of screenshots and code snippets to help walk through how he is doing something. They definitely would have helped me to comprehend some of the EE concepts that I did not understand until devoting a lot of time online doing research.</p>\n\n<p>This book does a great job of covering a variety of topics, from installing EE and creating a calendar to using other modules and plugins. Even though I have prior experience with EE and this book is geared toward beginners, I did learn a few things about EE from reading this book.</p>\n\n<h2>What I could do without</h2>\n<p>There seemed to be a large chunk of the book devoted to applying CSS to the examples to make them presentable. I don’t think there is any need to go through and explain the CSS; people are buying the book for information about EE.</p>\n\n<p>I also wish that the example site that is used in the book were a bit more realistic. I really learned a lot from Mike Boyink’s <a href=\"http://www.train-ee.com/courseware/free-tutorials/category/building-a-church-site/\">Building a Church Site</a> and <a href=\"http://www.train-ee.com/courseware/free-tutorials/category/building-a-small-business-site/\">Building a Small Business Site</a> tutorials because the content and functionality of the sites were <strong>real</strong>.</p>\n\n<h2>Conclusion</h2>\n<p>This book is really the only EE book out there. So if you are one of those people who has trouble learning from online tutorials and needs a book, this is definitely a solid choice to get started with EE. You can get a preview of it by <a href=\"//assets.trevor-davis.com/uploads/images/content/2009/04/expressionengine-sample-chapter-3-start-posting.pdf\">downloading a sample chapter</a>.</p>\n\n<h3>Update</h3>\n<p>I actually wasn’t aware of this, but Mike Boyink also has his <a href=\"http://www.train-ee.com/courseware/books/\">tutorials available as books</a>.</p>',NULL,1911,NULL,'2019-10-09 16:41:19','2019-10-09 16:41:19','037bacbc-3eb2-4707-a91c-c115c58df639',1,NULL,NULL,NULL,NULL),(1461,1946,'Let your links look like links',NULL,'<p>Roger Johansson discusses one of my big pet peeves: <a href=\"http://www.456bereastreet.com/archive/200904/let_your_links_look_like_links/\">links need to look like links</a>. Links are the most important part of the web. Make them stand out.</p>',NULL,1912,NULL,'2019-10-09 16:41:19','2019-10-09 16:41:19','3952a914-4af1-4e79-8a1e-414013e4d270',1,NULL,NULL,NULL,NULL),