<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Six Revisions &#187; Web Development</title>
	<atom:link href="http://sixrevisions.com/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://sixrevisions.com</link>
	<description></description>
	<lastBuildDate>Wed, 01 Feb 2012 03:46:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>7 Crazy Tips That Will Help You Become a Better Coder</title>
		<link>http://sixrevisions.com/web-development/crazy-tips-help-become-better-coder/</link>
		<comments>http://sixrevisions.com/web-development/crazy-tips-help-become-better-coder/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 10:00:37 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=5942</guid>
		<description><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5942&c=713499173' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5942&c=713499173' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br />There are a whole slew of developers writing amazing and practical code and there are thousands of public code repositories on sites like GitHub. Meanwhile, the rest of us are content with just cutting and pasting the code of these industry geniuses. For the majority, it seems that true coding has become a lost art. [...]]]></description>
			<content:encoded><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5942&c=2087894445' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5942&c=2087894445' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br /><p><a href="http://sixrevisions.com/web-development/crazy-tips-help-become-better-coder/"><img src="http://cdn.sixrevisions.com/0210-01_crazy_coding_tips_thumbnail.png" width="550" height="200" alt="7 Crazy Tips That Will Help You Become a Better Coder" /></a></p>
<p>There are a whole slew of developers writing amazing and practical code and there are thousands of public code repositories on sites like GitHub. Meanwhile, the rest of us are content with just cutting and pasting the code of these industry geniuses.</p>
<p>For the majority, it seems that true coding has become a lost art. Almost every project, it seems, now uses some sort of library/framework or contains a heap of plugins.</p>
<p><span id="more-5942"></span></p>
<p>It&#8217;s rare to see any front-end coding project truly start from scratch anymore.</p>
<p>In this article, I thought I would give some somewhat off-the-wall tips on improving your skill as a front-end coder.</p>
<p>These tips will likely not be used when coding paid client projects where time and budget are factors. These are tips that we can put into practice in our own <a href="http://sixrevisions.com/project-management/6-reasons-why-you-should-do-personal-design-projects/" title="6 Reasons Why You Should Do Personal Design Projects">personal projects</a> or in our spare time to try to improve our coding abilities and problem-solving skills.</p>
<p>While I do think the tips below can contribute to a developer becoming a stronger coder, they may not always be practical.</p>
<h3>1. Write Your Own Framework</h3>
<p>As mentioned, there&#8217;s almost no such thing as a <em>from-scratch</em> project anymore. Everything starts with some kind of code base or boilerplate. Even industry leaders with cream-of-the-crop engineers <a href="http://ajaxian.com/archives/google-code-revamps-with-jquery" target="_blank" title="Google Code Revamps with jQuery - Ajaxian">like Google</a> have leveraged open source JavaScript frameworks such as <a href="http://sixrevisions.com/javascript/getting-started-with-jquery/">jQuery</a>.</p>
<p><img src="http://cdn.sixrevisions.com/0210-02_jquery_home.jpg" width="550" height="415" /></p>
<p>On the back-end, you&#8217;ll probably be using something like <a href="http://sixrevisions.com/category/wordpress/" title="WordPress category on Six Revisions">WordPress</a> or <a href="http://sixrevisions.com/web-applications/10-promising-content-management-systems/" title="10 Promising Content Management Systems">another CMS</a>. On the front-end, you&#8217;ll likely be including your favorite <a href="http://sixrevisions.com/javascript/promising_javascript_frameworks/" title="10 Promising JavaScript Frameworks">JavaScript web development library/framework</a> and a <a href="http://sixrevisions.com/css/a-comprehensive-guide-to-css-resets/" title="A Comprehensive Guide to CSS Resets">CSS reset</a>.</p>
<p>Forget those bloated things. Write your own code base instead and adapt them to your own needs. Yes, something like this will probably take you many hours, and potentially weeks or months.</p>
<p>You&#8217;ll likely end up scrapping the whole thing and never using it on a real project. But you&#8217;ll have no choice but to learn how to do it, even if that means doing it badly.</p>
<p>It&#8217;s a daunting task, but something that will reap great benefits. You&#8217;ll understand the language&#8217;s syntax better, the concepts will become clearer, and your problem-solving skills will improve.</p>
<p>Even if it&#8217;s something small like your own tiny JavaScript library (e.g. a <a href="http://sixrevisions.com/javascript/10-impressive-javascript-animation-frameworks/" title="10 Impressive JavaScript Animation Frameworks">JavaScript animation framework</a>) that has a half-dozen modules, it will be well worth the effort.</p>
<p>It might even be a good idea to keep this type of thing as an indefinite project that&#8217;s continually on going. You can keep going back to it, improving it, learning new lessons and adding new features. It probably still won&#8217;t be as good as the popular, open source ones out there, but you&#8217;ll probably learn more than you ever would otherwise.</p>
<h3>2. Don&#8217;t Use Developer Tools</h3>
<p>If you&#8217;re like me and you run into a scripting problem or a selector specificity issue in CSS, the first thing you might turn to is some developer-related tool like  <a href="http://sixrevisions.com/web-development/10-useful-firefox-extensions-to-supercharge-firebug/" title="10 Useful Firefox Extensions to Supercharge Firebug">Firebug</a>, <a href="http://sixrevisions.com/tools/firefox_web_developer_extension_toolbar/">Web Developer extension</a>, Google Chrome&#8217;s Developer Tools and the like. For instance, Firebug provides invaluable features for tracking down and fixing almost any front-end coding issue.</p>
<p>However, remember that tools like Firebug are fairly young. Developers in the <a href="http://sixrevisions.com/web_design/are-current-web-design-trends-pushing-us-back-to-1999/" title="Are Current Web Design Trends Pushing Us Back to 1999?">late 90s</a> and early 2000s didn&#8217;t use these types of robust tools.</p>
<p><img src="http://cdn.sixrevisions.com/0210-03_firebug_in_newwindow.png" width="550" height="347" /></p>
<p>Although those rudimentary development techniques might be considered &quot;slow&quot; by today&#8217;s standards, the developers that used such archaic debugging methods understood their craft as well as anyone.</p>
<p>If you can debug a CSS or JavaScript problem without using any special tools, then that shows you have a solid understanding of CSS and some of the deeper parts of JavaScript.</p>
<p>This topic, specifically in relation to debugging tools, <a href="http://meiert.com/en/blog/20100514/real-debugging-tools/" target="_blank">was covered by Jens O. Meiert</a> and I wholeheartedly agree with his theory.</p>
<p>Sure, you won&#8217;t solve any problem as quickly as you would with Firebug or your favorite developer tools, but there&#8217;s a good chance you&#8217;ll learn more and avoid making the same mistake again in the future.</p>
<h3>3. Don&#8217;t Use a Browser</h3>
<p>Creating websites without testing them in their environment? Did I mention that these were crazy coding tips?</p>
<p>Well, customarily, if you&#8217;re developing a CSS layout or some kind of JavaScript functionality, it&#8217;s pretty common to switch back and forth between editor and browser, checking your stuff as you go.</p>
<p>Instead, try this exercise some time: Code an entire <a href="http://sixrevisions.com/web_design/a-guide-on-layout-types-in-web-design/" title="A Guide on Layout Types in Web Design">web page layout</a> or JavaScript widget without checking it in the browser until you&#8217;ve completed the whole thing. This will cause you to stay focused the entire time, ensuring that every line is coded properly. And you&#8217;ll be forced to visualize the outcome of your code.</p>
<p>From my experience, being able to visualize the results of the code you write is an important part of understanding it. Ignoring, to some degree, the actual output forces you to think through your code line by line, and this will help you understand every bit of it more fully.</p>
<h3>4. Don&#8217;t Use a Code Generator</h3>
<p>This tip is especially important for learning the ins and outs of <a href="http://sixrevisions.com/css/css3-techniques-you-should-know/" title="CSS3 Techniques You Should Know">CSS3</a>. There are dozens of CSS3 gradient generators, button makers, and other tools that can help you write CSS faster. Those are useful, especially when you&#8217;re facing a deadline.</p>
<p><img src="http://cdn.sixrevisions.com/0210-04_css3_generator.jpg" width="550" height="347" /><span class="figure-caption">A <a href="http://westciv.com/tools/gradients/">CSS3 gradient generator</a> can be useful, but can also hamper learning of underlying style sheet concepts.</span></p>
<p>But if you take the time to type every line of CSS3 manually, you&#8217;ll be forced to learn all the different parts of the various syntaxes.</p>
<p>Take for example the simple <code>box-shadow</code> property (example below):</p>
<pre>.shadow {
  <strong>box-shadow: 4px 4px 8px rgba(0, 0, 0, .2);</strong>
}</pre>
<p>If you&#8217;re using a code generator to spit out that code, then you&#8217;ll take much longer to get used to what each of those values represent.</p>
<p>On the other hand, typing it manually likely means you&#8217;ll have to check a reference or even the CSS3 W3C specification draft. All of this will lead to a better understanding of how the code works.</p>
<h3>5. Type Book Code Examples By Hand</h3>
<p>Pretty much every computer programming book written nowadays will include a code archive that&#8217;s available for download or on an accompanying CD. This is great. But how much can you learn from copying and pasting so much code?</p>
<p>So forget about the code archive. If you have the time to do an in-depth study of the material in a book, complement such study by typing all the examples by hand, then test them to ensure they&#8217;re working properly.</p>
<p>This will have a number of positive effects on your coding abilities. It&#8217;s inevitable (especially if the concepts are new to you) that you&#8217;ll type a lot of things incorrectly, leading to error messages. This will force you to have to pore over the code examples in the book while comparing them to your own until you find any problems.</p>
<p>You&#8217;ll be debugging code almost immediately after learning it, and I&#8217;m sure we can all agree that many of the most important coding lessons are learned when debugging. You might also find errors in the code printed in the book, so this presents further opportunities for getting a stronger understanding of the concepts involved.</p>
<p>Even more crazy: You might want to do the same thing with code examples you find online in tutorials and articles. Don&#8217;t copy and paste them, but instead, type them manually. Again, you&#8217;ll see many of the same benefits mentioned above.</p>
<h3>6. Use a Vanilla Text Editor</h3>
<p>What I mean by &quot;vanilla&quot; is a text editor that has no helpers or auto-complete functionality. Or else you could just turn off any auto-complete functionality your editor has, and pretend you&#8217;re using something like the Windows-based <a href="http://en.wikipedia.org/wiki/Notepad_(software)">classic Notepad</a>.</p>
<p><img src="http://cdn.sixrevisions.com/0210-05_vanilla_text_editor.png" width="550" height="347" /></p>
<p>I used to code classic ASP-based websites in the early 2000s, and for a number of years I wrote all my code (front-end and back-end) in Windows Notepad. Although there were times when this seriously slowed me down, I learned to write a lot of it from memory, and I was able to debug pretty much anything without any special tools.</p>
<p>If you get zero help from your editor when writing code, you&#8217;ll be forced to memorize much more than you would otherwise.</p>
<h3>7. Re-Invent the Wheel</h3>
<p>Whatever project you&#8217;ll be working on next will likely require something that&#8217;s been written a million times before. It could be a <a href="http://sixrevisions.com/css/semantic-css3-lightboxes/" title="Semantic CSS3 Lightboxes">lightbox</a>, a content or <a href="http://sixrevisions.com/tutorials/javascript_tutorial/create-a-slick-and-accessible-slideshow-using-jquery/" title="Create a Slick and Accessible Slideshow Using jQuery">image slider</a>, a photo gallery script or a tab switcher.</p>
<p>Almost every developer will tell you you&#8217;d be crazy to write one of these yourself. But think about it: Do you know how to write (for example) a lightbox function in JavaScript? If you don&#8217;t, then how would you ever learn?</p>
<p>The concepts you&#8217;ll pick up from these activities will have tremendous long-term value.</p>
<p>It&#8217;s ridiculous to never re-invent the wheel. If you spend your entire developer career cutting and pasting other people&#8217;s code, then you&#8217;ll only make minimal progress at best.</p>
<p>Of course, if you do write your own lightbox script, it will probably be one of the worst lightbox scripts ever. But who cares? You&#8217;ll learn a ton of stuff along the way, and you could always go back to it later and see if you can&#8217;t make any improvements and optimizations that you might have picked up elsewhere.</p>
<h3>Conclusion</h3>
<p>As I mentioned early on in the article, these aren&#8217;t going to be the kinds of tips you&#8217;ll want to use regularly or on important projects. But if you have some time to spare, use some of this advice &#8212; even if you&#8217;re just applying it in a small way.</p>
<p>In my opinion, these crazy suggestions will help you develop your own coding style and you&#8217;ll have a better understanding of the underlying concepts of the code you&#8217;re working with.</p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/project-management/ways-more-productive-web-developer/">10 Ways to Be a More Productive Web Developer</a></li>
<li><a href="http://sixrevisions.com/web-development/tips-on-how-to-code-web-designs-better/">Tips on How to Code Web Designs Better</a></li>
<li><a href="http://sixrevisions.com/web-development/5-good-habits-that-will-make-you-a-better-coder/">5 Good Habits That Will Make You a Better Coder</a></li>
<li><em>Related categories</em>: <a href="http://sixrevisions.com/category/web-development/">Web Development</a> and <a href="http://sixrevisions.com/category/web_design/">Web Design</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://cdn.sixrevisions.com/authors/louis_lazaris_small.jpg" alt="" width="80" height="80" /><span class="author-bio-text"><strong>Louis Lazaris</strong> is a freelance web developer based in Toronto,  Canada. He blogs about front-end code on <a href="http://www.impressivewebs.com/">Impressive Webs</a> and is a co-author of <em><a href="http://www.sitepoint.com/books/htmlcss1/">HTML5 and CSS3 for the Real World</a></em>, published by SitePoint. You can <a href="http://twitter.com/ImpressiveWebs">follow Louis on Twitter</a> or contact him through his website.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/crazy-tips-help-become-better-coder/feed/</wfw:commentRss>
		<slash:comments>111</slash:comments>
		</item>
		<item>
		<title>Hacking Google Analytics: Ideas, Tips and Tricks</title>
		<link>http://sixrevisions.com/web-development/hacking-google-analytics-ideas-tips-and-tricks/</link>
		<comments>http://sixrevisions.com/web-development/hacking-google-analytics-ideas-tips-and-tricks/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 10:00:06 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=5836</guid>
		<description><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5836&c=723580591' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5836&c=723580591' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br />Web analytics is a powerful tool made accessible to all of us through awesome free software such as Google Analytics. These tools are designed to satisfy the general needs of every kind of website out there. That&#8217;s why website analytics tools, in general, are very good at offering a fundamental overview of traffic data of [...]]]></description>
			<content:encoded><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5836&c=1005534030' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5836&c=1005534030' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br /><p><img src="http://cdn.sixrevisions.com/0174-01_google_hacks_ideas_thumbnail.jpg" width="550" height="200" alt="Hacking Google Analytics: Ideas, Tips and Tricks" /></p>
<p><a href="http://sixrevisions.com/usabilityaccessibility/unleashing-the-power-of-website-analytics/">Web analytics is a powerful tool</a> made accessible to all of us through awesome free software such as Google Analytics. These tools are designed to satisfy the general needs of every kind of website out there.</p>
<p>That&#8217;s why website analytics tools, in general, are very good at offering a fundamental overview of traffic data of a site, but not so good when it comes to answering specific questions.</p>
<p><span id="more-5836"></span></p>
<p>To get specific questions answered, sometimes you have to work around limitations of your current software.</p>
<p>As a proof of concept, I&#8217;ll present three examples/ideas for gathering more information in conjunction with Google Analytics.</p>
<p>The purpose of this article is to present some starting points for your further exploration.</p>
<h3>Example 1: Where Do Users Come From?</h3>
<p>Google Analytics (and  <a href="http://sixrevisions.com/usabilityaccessibility/10-promising-free-web-analytics-tools/" title="10 Promising Free Web Analytics Tools">other web analytics tools</a>) does a great job of telling you the last web page the user clicked on that got him/her to your website. This last web page is often called the <strong>referrer</strong> or <strong>referral path</strong>.</p>
<p>Knowing where the user was before visiting your site is helpful because you can use this data to analyze and understand how people are getting to your site.</p>
<p>The problem, though, is that not all visitors become customers/users on their first visit to your website. In most circumstances, the majority of customers visit a website a few times before deciding to buy something or become a regular visitor.</p>
<p>Taking action based only on the last referral path, as reported by tools like Google Analytics, might leave many&nbsp;opportunities&nbsp;on the table and might not give you enough actionable information.</p>
<p>Hacking Google Analytics&nbsp;to give you all the referrers of each visitor proves to be pretty difficult, and the reports you get still won&#8217;t answer all of your questions.</p>
<p><strong>Here is how you could do it better:</strong></p>
<ol>
<li>Each time a visitor gets to your website, Google Analytics will look at his referral and note it down in a specific cookie called <em>__utmz</em>.</li>
<li>A JavaScript hack can help you copy that referral information on another cookie that is managed by your website, and not by Google Analytics.</li>
<li>Each time a visitor gets back to the website, Google Analytics will rewrite its own cookies. The JavaScript hack will update (not rewrite) your website cookie by adding the new referral next to the old one.</li>
<li>When a visitor becomes a customer, upload the content of the new cookie to your database, next to your customer details.</li>
</ol>
<p>Below is a sample of such a script. Feel free to experiment and fine-tune it.</p>
<pre>
function createCookie(name, value, days) {
  if(days) {
    var date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    var expires = "; expires=" + date.toGMTString();
  }
  else {
    var expires = "";
  }
  document.cookie = name + "=" + value+expires + ";domain=" + window.location.hostname + "; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) {
      return c.substring(nameEQ.length,c.length);
    }
  }
  return null;
}

function googleCookieReferrer() {
  var feed=readCookie("__utmz");
  <strong>// If the utmcsr is not found, cancel</strong>
  if(feed.indexOf("utmcsr")==-1) {
    return null;
  }
  if(feed != null) {
    <strong>// New version cookie</strong>
    if(feed.indexOf("%7C") != -1) {
      feed = feed.split("%7C");
      feed = feed[0].split("%3D");
    }
    else {
      <strong>// Old version cookie</strong>
      feed = feed.split("|");
      feed = feed[0].split("=");
    }

    if(feed[1] != "") {
      return feed[1];
    }
    else {
      return "";
    }
  }
  <strong>// Read the Google cookie, and extract the utmcsr parameter from utmz</strong>
  var referrer=googleCookieReferrer();
  <strong>// If the Google cookie was successfully read, and utmcsr found</strong>
  if(referrer != null &#038;&#038; referrer != "") {
    <strong>// Read our cookie if it exists</strong>
    if(readCookie("__rfrr")) {
      <strong>// Cookie data</strong>
      var feed = readCookie("__rfrr");
    <strong>  // Temp cookie string</strong>
      var feed_temp = feed;
    <strong>  // This will hold the last referrer in our cookie</strong>
      var check = "";
    <strong>  // Split the data in our cookie</strong>
      feed = feed.split("|");

    <strong>  // If it's the first element, it's a string</strong>
      if(feed[feed.length-1] == null) {
        check = feed;
      } else {
    <strong>  // If multiple elements, it's an array, so get last array item</strong>
        check = feed[feed.length-1];
      }

    <strong>// If last element != referrer: write cookie and add new referrer</strong>
    if(check != referrer) {
      createCookie("__rfrr",feed_temp+"|"+referrer,365);
    }
    <strong>// If no cookie found: create and populate</strong>
    else {
      createCookie("__rfrr",referrer,365);
    }
  }
}</pre>
<p>Once the script is in place, you&#8217;ll be able to answer the following questions:</p>
<ul>
<li>Who are the&nbsp;referrers that drive the most sales&nbsp;(no matter if it&#8217;s the first click, the last click, or somewhere in the middle)?</li>
<li>Who are the best&nbsp;first-click referrers&nbsp;that bring converted visitors to the website?</li>
<li>Which referrers do the best job of&nbsp;getting visitors back to the website&nbsp;and convincing them to buy?</li>
</ul>
<h3>Example 2: How Much Do Customers Spend?</h3>
<p>The number one question I get from my clients who use&nbsp;Google Analytics <a href="http://code.google.com/apis/analytics/docs/tracking/gaTrackingEcommerce.html">ecommerce tracking</a>&nbsp;is: Why are there more/less money or orders shown by Google Analytics than in reality?</p>
<p><img src="http://cdn.sixrevisions.com/0174-02_diy_analytics_spending.jpg" width="550" height="200" alt="How Much Do Customers Spend?" /></p>
<p>The answer: Google Analytics is not an accounting application, and it will almost never show exact figures of your sales. Charge backs, tracking code issues and ecommerce implementation not covering all payment methods are just a few reasons why the information provided by Google Analytics will not be precise.</p>
<p><strong>Here is how you could do it better:</strong></p>
<ol>
<li>In the admin area of the website, create a special page for reporting sales (if you don&#8217;t already have one). Report from your own database figures; include data such as daily sales, orders or average amount paid per order.</li>
<li>Having in place the above JavaScript hack (example 1), add the referrers reports for your orders.</li>
<li>Add some Google Analytics API queries and display behavior data of converted users compared to website average: time spent on site, number of pages, countries or anything else that&#8217;s important to your business (i.e., key performance indicators &#8212; otherwise known as KPIs).</li>
</ol>
<p>You&#8217;ve just created a&nbsp;professional&nbsp;dashboard for your business that will give you a clear and reliable view on what&#8217;s happening.</p>
<h3>Example 3: How Successful Is Website Personalization?</h3>
<p>Personalizing the experience of your website visitors can bring positive results. For example, according to a <a href="http://www.fastcompany.com/1770673/how-yahoo-got-to-a-billion-clicks" title="Brains And Bots Deep Inside Yahoo's CORE Grab A Billion Clicks - fastcompany.com">Fast Company article</a>, Yahoo!&#8217;s personalization algorithm was a key contributing factor to a 270% increase in clicks on the site&#8217;s home page compared to 2009.</p>
<p>Here are just a couple of examples on what you could do to personalize experiences for your visitors:</p>
<ul>
<li>Display personalized messages and call-to-actions to your visitors, based on their referral path. You can start with specific messages for users that come from advertising campaigns by offering them exactly what they&#8217;re looking for based on the ad campaign they clicked on.</li>
<li>Change your home page content based on previous behavior (make it an opt-in or opt-out action for your visitors when they sign up, to <a href="http://sixrevisions.com/usabilityaccessibility/privacy-and-the-user-experience/" title="Privacy and the User Experience">respect their privacy</a>). Some more advanced coding might be needed, but it would be worth it.</li>
<li>Invite engaged users to your website to subscribe to your newsletter (my company built an online app for this, called&nbsp;<a href="http://padiact.com/">PadiAct</a>) or RSS feed, based on their behavior.</li>
</ul>
<p>Each website has many keywords that drive visitors from search engines on pages that aren&#8217;t immediately relevant for those keywords.</p>
<p>With the next add-on to the previous hack, you can display a nice bottom overlay to your visitors that would contain just the information they are looking for. Now that&#8217;s good targeting!</p>
<pre>
<strong>// Add this to extend the code in Example 1</strong>
function googleCookieKeyword() {
  var feed = readCookie("__utmz");
  <strong>// If the utmcsr is not found, cancel</strong>
  if(feed.indexOf("utmctr") == -1) {
    return null;
  }

  if(feed!=null) {
    <strong>// New version cookie</strong>
    if(feed.indexOf("%7C") != -1) {
      feed = feed.split("%7C");
      feed = feed[3].split("%3D");
    }
    else {
    <strong>  // Old version cookie</strong>
      feed = feed.split("|");
      feed = feed[3].split("=");
    }

    if(feed[1] != "") {
      return feed[1];
    }
    else {
      return "";
    }
  }
  else {
    return "";
  }
}

<strong>// Read the Google cookie and extract the utmcsr parameter from utmz</strong>
var referrer = googleCookieKeyword();

if (referrer == "YOUR_DESIRED_KEYWORD") {
  // Add your code for displaying the content you desire here
}</pre>
<h3>Conclusion</h3>
<p>Actionable web analytics is not something that should be left to generic tools and data-gathering methods. You&#8217;d be happy to know that it&#8217;s also not something exclusively affordable only to large companies with big budgets.</p>
<p>As long as we can do some basic coding &#8212; and as long as we are devoted to meeting the goals of our website &#8212; nothing can stop us from hacking our way to great solutions and innovative workarounds.</p>
<p>I hope this article has inspired you to look into how you can gather richer and more refined data from your own analytics software.</p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/website-management/search-analysis-with-google-analytics/">Search Analysis with Google Analytics</a></li>
<li><a href="http://sixrevisions.com/web_design/designing-by-numbers-data-analysis-for-web-designers/">Designing By Numbers: Data Analysis for Web Designers</a></li>
<li><a href="http://sixrevisions.com/content-strategy/using-charts-and-graphs-for-content/">Using Charts and Graphs for Content</a></li>
<li><em>Related categories</em>: <a href="http://sixrevisions.com/category/web-development/">Web Development</a> and <a href="http://sixrevisions.com/category/tools/">Tools</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://cdn.sixrevisions.com/authors/claudiu_murariu_small.jpg" alt="" width="80" height="80" /><strong>Claudiu Murariu</strong> is a web analyst and co-founder of <a href="http://padicode.com/">PadiCode</a>, a company building conversion optimization tools. Claudiu can be found on Twitter (as @<a href="http://twitter.com/padicode">padicode</a>) and on his <a href="http://padicode.com/blog/">conversion optimization blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/hacking-google-analytics-ideas-tips-and-tricks/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Must-Have Drupal Modules for Improving Your Site Builds</title>
		<link>http://sixrevisions.com/web-development/drupal-modules-site-builds/</link>
		<comments>http://sixrevisions.com/web-development/drupal-modules-site-builds/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 10:00:13 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=5807</guid>
		<description><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5807&c=188058203' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5807&c=188058203' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br />One of the biggest hurdles when developing a website in Drupal is the initial setup and configuration. Out of the box, Drupal isn&#8217;t exactly &#34;end-user friendly&#34;. If you&#8217;re like me, and you need to set up sites with a non-developer end-user in mind, there is a lot of face lifting that needs to be done [...]]]></description>
			<content:encoded><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5807&c=1010725294' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5807&c=1010725294' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br /><p><a href="http://sixrevisions.com/web-development/drupal-modules-site-builds/"><img src="http://cdn.sixrevisions.com/0187-01_musthave_drupal_modules_thumbnail.jpg" width="550" height="200" alt="Must-Have Drupal Modules for Improving Your Site Builds" /></a></p>
<p>One of the biggest hurdles when developing a website in Drupal is the initial setup and configuration. Out of the box, Drupal isn&#8217;t exactly &quot;end-user friendly&quot;.</p>
<p>If you&#8217;re like me, and you need to set up sites with a non-developer end-user in mind, there is a lot of face lifting that needs to be done before Drupal is presentable in a simple, easy-to-learn way.</p>
<p><span id="more-5807"></span></p>
<p>Below, you&#8217;ll find some recommended Drupal modules that will extend the core installation in order to make content management easier for site owners as well as, you, the developer who builds sites using Drupal.</p>
<h3>Background</h3>
<p>I tend to use <a href="http://acquia.com/products-services/acquia-drupal">Acquia Drupal</a> (a free packaged installation of Drupal) on all of my sites. It comes with a lot of handy modules right out of the box that Drupal core doesn&#8217;t provide you. It&#8217;s a good starting point.</p>
<p><a href="http://acquia.com/products-services/acquia-drupal"><img src="http://cdn.sixrevisions.com/0187-02_acquia_drupal_ss.jpg" width="550" height="337" /></a></p>
<p>I noticed patterns in most of the sites I set up, so I created an installation profile to streamline the configuration process. (It&#8217;s more of an advanced topic, but ask me about it in the comments if you&#8217;re interested.)</p>
<p>The modules covered here are must-haves for any standard setup and configuration of a site built in Drupal 6.</p>
<p>While Drupal 7 has rapidly become the center of attention in the Drupal community, I think it&#8217;s important to pay homage to Drupal 6. After all, it&#8217;s given us three years of solid, reliable site-deployment power. It also has more modules than Drupal 7, making it the only viable option for some sites.</p>
<p>We&#8217;ll cover Drupal 7 modules in another post.</p>
<p>I have divided the modules in these categories:</p>
<ul>
<li>Content management</li>
<li>Content editing</li>
<li>Multimedia content</li>
<li>Site administration</li>
<li>Tools for developers</li>
</ul>
<h3>Content Management</h3>
<p>We can enhance the way site owners create, present and manage their content through the modules below.</p>
<h4><a href="http://drupal.org/project/cck">CCK (Content Construction Kit)</a></h4>
<p><a href="http://drupal.org/project/cck"><img src="http://cdn.sixrevisions.com/0187-03_drupal_module_cck.jpg" width="550" height="342" /></a></p>
<p>CCK is a must-have module for any custom content configuration. This module has become a part of Drupal 7 core (it&#8217;s that important).</p>
<p>CCK allows you to add content types as well as additional fields to existing content types. If your site has the need for a blog, or a staff list, or an events area, CCK can help you create a whole new type of content.</p>
<p>I&#8217;ve found that making the distinction with separate content types has worked a lot better than using other methods, like taxonomy. </p>
<p>A few additional modules I use in conjunction with CCK that make things even easier are:</p>
<ul>
<li><a href="http://drupal.org/project/email">Email</a></li>
<li><a href="http://drupal.org/project/cck_phone">Phone Number</a></li>
<li><a href="http://drupal.org/project/location">Location</a></li>
</ul>
<h4><a href="http://drupal.org/project/multiblock">Multiblock</a></h4>
<p>One of the huge criticisms of blocks in Drupal is that, with larger sites, you often get to a point where there are just too many blocks that they become unwieldy to manage. Your block list becomes cluttered and it starts to make things really confusing.</p>
<p>To make matters worse, blocks are only able to have one instance. This works fine when you want a block to appear in the same region on multiple pages, but it falls apart when you want to add the same block in multiple regions.</p>
<p>Multiblock solves this issue by creating more than one instance of a block and allowing you to add it to multiple regions. This helps us cut down on repetitive blocks. This also makes training end-users a lot easier.</p>
<h4><a href="http://drupal.org/documentation/modules/trigger">Trigger</a></h4>
<p>Trigger is a Drupal core module, so it&#8217;s included by default. It tends to be a module that many Drupal developers overlook, but it&#8217;s powerful and deserves props.</p>
<p>Trigger allows you to fire off certain actions based on events that take place on your site.</p>
<p>Trigger comes with a standard set of actions, but you can also create your own actions as well. For example, if you want a user to be redirected to a specific page upon registering for an account on your site, you can create a trigger.</p>
<p>Trigger: it&#8217;s what&#8217;s for dinner.</p>
<h4><a href="http://drupal.org/project/views">Views</a></h4>
<p>I don&#8217;t care what anyone says, the Views module is the most powerful module available for development in Drupal.</p>
<p>You will likely need it for every site you will build and deploy. The Views module allows you to organize, order, specify and manipulate content on your site using specifications you control.</p>
<p>Views can generate anything from simple news lists to complex sidebars that only show up on specific pages. Views can be displayed in page, block, feed or attachment format by default, but other modules have extended these capabilities.</p>
<p>A couple of modules I always use in addition to basic views are:</p>
<ul>
<li><a href="http://drupal.org/project/views_slideshow">Views Slideshow</a> &#8211; a rotating slideshow with views.</li>
<li><a href="http://drupal.org/project/views_attach">Views Attach</a> &#8211; for attaching a view to other content.</li>
</ul>
<h4><a href="http://drupal.org/project/pathauto">Pathauto</a></h4>
<p><img src="http://cdn.sixrevisions.com/0187-04_drupal_module_pathauto.jpg" width="342" height="277" /></p>
<p>This module makes URL-generation automatic instead of having to designate a URL for every piece of content you add.</p>
<p>System URLs &#8212; the ones that look like <em>http://drupalsite.com/?q=node/123</em> &#8212; are bad for SEO and site navigation.</p>
<p>With Pathauto, you can set an automated URL for each content type you have. For example, you can set the URL structure for all news items on your site to be <em>news/[article-title]</em>, which is much better for SEO and is more user-friendly. </p>
<h4><a href="http://drupal.org/project/pathologic">Pathologic</a></h4>
<p>Has anyone ever dealt with relative URLs linking to pages within your own website? It can be cumbersome, especially when web pages are moved around or deleted.</p>
<p>Pathologic creates a filter that corrects URL paths that would normally have the tendency to blow up and break. The configuration is a little more challenging than your average Drupal module, but the documentation is great and it&#8217;s worth it so you can avoid <a href="http://sixrevisions.com/website-management/find-remove-broken-links/" title="How to Find and Remove Broken Links in Your Website">broken-link</a> headaches.</p>
<h3>Content Editing</h3>
<p>Graphical user interfaces (GUIs) for writing text content is a great way to make site management easier.</p>
<h4><a href="http://drupal.org/project/wysiwyg">Wysiwyg</a></h4>
<p><img src="http://cdn.sixrevisions.com/0187-05_drupal_module_wysiwyg.jpg" width="550" height="436" /></p>
<p>Wysiwyg is the module that allows you to use rich-text editors within text areas on your site. It&#8217;s compatible with a lot of different rich-text editors and is easy to install and use.</p>
<h4>A Module for Rich-Text-Editing</h4>
<p>If the site you are building is going to be used by a non-technical site owner, you almost always have to include a WYSIWYG/rich-text editor in your initial setup so that they don&#8217;t have to be burdened with having to learn HTML or some other markup language when they want to create or edit site content. (The exception here would be if the client wants to write in HTML.)</p>
<p>I tend to use <a href="http://drupal.org/project/ckeditor">CKEditor</a> or <a href="http://drupal.org/project/tinymce">TinyMCE</a>, but there are many out there that you may want use instead (<a href="http://drupal.org/project/yui_editor">YUI Rich Text Editor</a>, <a href="http://drupal.org/project/htmlarea">Htmlarea</a>, <a href="http://drupal.org/project/widgeditor">widgEditor</a>, the list is seemingly endless).</p>
<p><img src="http://cdn.sixrevisions.com/0187-06_drupal_module_rich_text_editor.jpg" width="550" height="300" /></p>
<p>For a step-by-step setup guide on setting up a rich-text editor, read: <a href="http://drupal.org/node/839646">Installing a text editor in Drupal 6</a>.</p>
<h3>Multimedia Content</h3>
<p>Aside from text content, the site owner might want to embed streaming video and audio in their content pages or provide PDF and Excel spreadsheet for their readers to download. The following modules will help in this regard.</p>
<h4><a href="http://drupal.org/project/emfield">Embedded Media Field</a></h4>
<p>When possible, embedded media is the way to go, because you&#8217;re not hosting anything on the server and taking up space.</p>
<p><a href="http://youtube.com/">YouTube</a>, <a href="http://vimeo.com/">Vimeo</a>, <a href="http://viddler.com/">Viddler</a> and other third-party web services allow you to host and serve multimedia content under their server infrastructure. Those videos can then be embedded into your Drupal content pages.</p>
<p>You&#8217;ll need to download supporting modules for easily embedding multimedia content from these web services.</p>
<p>If you really need to host your own audio and video, check these modules out:</p>
<ul>
<li><a href="http://drupal.org/project/video">Video</a> &#8211; Upload videos via CCK (video player included). </li>
<li><a href="http://drupal.org/project/audiofield">Audio Field</a> &#8211; Create a simple CCK field for audio.</li>
</ul>
<h4><a href="http://drupal.org/project/imce">IMCE</a></h4>
<p><img src="http://cdn.sixrevisions.com/0187-07_drupal_module_imce.jpg" width="550" height="417" /></p>
<p>IMCE gives you control of the uploaded files on your server as well as the ability to upload new ones.</p>
<p>It works great for images as well as file uploads (PDFs, text files and so on). It&#8217;s not so great for video and audio, though.</p>
<p>To get IMCE to work with your text editor, you need to download <a href="http://drupal.org/project/imce_wysiwyg">IMCE Wysiwyg Bridge</a>, a module that connects IMCE to your WYSIWYG/rich-text editor. </p>
<h3>Site Administration</h3>
<p>By default, it&#8217;s really hard to navigate through Drupal&#8217;s admin interface. Check out the following modules to enhance Drupal&#8217;s navigation menu interface.</p>
<h4><a href="http://drupal.org/project/admin_menu">Administration Menu</a></h4>
<p><img src="http://cdn.sixrevisions.com/0187-08_drupal_module_admin_menu.jpg" width="550" height="288" /></p>
<p>This module comes standard with <a href="https://acquia.com/downloads">Acquia Drupal</a> (mentioned earlier) and gives you a nice, horizontal admin navigation bar at the top of web pages for navigating around the admin interface easier.</p>
<p>As a site administrator, it can be difficult to use the default menu system to configure things and manage content quickly. This module solves that by giving you a persistent navigation menu.</p>
<h4><a href="http://drupal.org/project/content_access">Content Access</a></h4>
<p><img src="http://cdn.sixrevisions.com/0187-09_drupal_module_content_access.jpg" width="550" height="288" /></p>
<p>Content Access is a must-have for sites with any kind of customized permissions. This module will allow you to restrict access of content as you choose.</p>
<p>Content Access is great for limiting access to content types by user roles. You can also allow access to individual pieces of content and individual users as well. When content is restricted, it becomes invisible to users who don&#8217;t have permission to see it. It also becomes invisible in site searches. I use this module a lot when creating internal wikis or help documentation for clients.</p>
<h4><a href="http://drupal.org/project/backup_migrate">Backup and Migrate</a></h4>
<p>Backup and Migrate is used to create regular backups of your site files and database. The backups can be manually triggered or automated at set intervals (say, once a night or once a week).</p>
<p>The backups can be emailed or saved to a directory on the server. Make sure your site has routine backups in case something goes awry. If things do go south, and you have Backup and Migrate installed, all you need to do is restore. Easy and stress-free! Protect your client&#8217;s web assets by setting this up to do automatic backups.</p>
<h3>Tools for Developers</h3>
<p>The following modules are for web developers working with Drupal and can be used during the site build process to speed things up. If the end-user doesn&#8217;t need these developer-oriented modules, deactivate or delete them before the project hand-off.</p>
<h4><a href="http://drupal.org/project/features">Features</a></h4>
<p>With this module, you can create your own features and bundle them into modules to use on other projects.</p>
<p>I use Features when I find myself creating the same thing over and over again in Drupal, like an event list, for example.</p>
<p>The Features module makes it easy to create functionality and export it so it can be used later. This can save lots of development time and resources.</p>
<h4><a href="http://drupal.org/project/ie_css_optimizer">IE CSS Optimizer</a></h4>
<p><img src="http://cdn.sixrevisions.com/0187-10_drupal_module_css_optimizer.jpg" width="392" height="192" /></p>
<p>Your website audience may include Internet Explorer users (feel sorry for them) who probably have no idea what a Drupal themer goes through trying to make Drupal look good on IE.</p>
<p>By default, IE does not load more than 31 linked style sheets. This may not mean anything to you, but it could mean the difference between a theme working or not. Install this module so you don&#8217;t break out in a spastic fit while trying to debug IE.</p>
<p>Drupal 7 does not have this issue anymore. This module only applies to Drupal 6. </p>
<h4><a href="http://drupal.org/project/devel">Devel</a></h4>
<p>Devel provides great resources for Drupal development, theming and testing. Devel can generate dummy content for all content types, which saves time and energy when theming and testing.</p>
<p>This module also allows you to hop over to different users so that you can see the site from their role/permissions perspective.</p>
<p>It does a lot more and I recommend you visit its <a href="https://ratatosk.backpackit.com/pub/1836982-debugging-drupal">demo page</a>. Seriously.</p>
<h3>Conclusion and Summary</h3>
<p>Bear in mind that there are around 6,000 modules that are compatible with Drupal 6, and not every module was able to make it on this list. There are a lot of other modules that make life easier when developing in Drupal.</p>
<p>Feel free to suggest your own favorite Drupal modules in the comments.</p>
<h4>Drupal 6 Module Summary</h4>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<th scope="col">Module</th>
<th scope="col">Drupal 7 Status</th>
<th scope="col">In Acquia Bundle?</th>
<th scope="col">Development Status</th>
</tr>
<tr>
<td>CCK</td>
<td>Core</td>
<td>Yes</td>
<td>Active</td>
</tr>
<tr>
<td>Multiblock</td>
<td>Development</td>
<td>No</td>
<td>Active</td>
</tr>
<tr>
<td>Trigger</td>
<td>Core</td>
<td>Yes</td>
<td>Active</td>
</tr>
<tr>
<td>Views</td>
<td>Yes</td>
<td>Yes</td>
<td>Active</td>
</tr>
<tr>
<td>Views Attach</td>
<td>Replaced</td>
<td>No</td>
<td>Active</td>
</tr>
<tr>
<td>Views Slideshow</td>
<td>Development</td>
<td>No</td>
<td>Active</td>
</tr>
<tr>
<td>Wysiwyg</td>
<td>Yes</td>
<td>No</td>
<td>Active</td>
</tr>
<tr>
<td>Emfield</td>
<td>Replaced</td>
<td>No</td>
<td>Active</td>
</tr>
<tr>
<td>Video</td>
<td>Yes</td>
<td>No</td>
<td>Active</td>
</tr>
<tr>
<td>Audio Field</td>
<td>Development</td>
<td>No</td>
<td>Active</td>
</tr>
<tr>
<td>IMCE</td>
<td>Yes</td>
<td>No</td>
<td>Active</td>
</tr>
<tr>
<td>IMCE Wysiwyg</td>
<td>Development</td>
<td>No</td>
<td>Active</td>
</tr>
<tr>
<td>Admin Menu</td>
<td>Replaced</td>
<td>Yes</td>
<td>Active</td>
</tr>
<tr>
<td>Content Access</td>
<td>Yes</td>
<td>No</td>
<td>Active</td>
</tr>
<tr>
<td>Backup &amp; Migrate</td>
<td>Yes</td>
<td>No</td>
<td>Active</td>
</tr>
<tr>
<td>Features</td>
<td>Yes</td>
<td>No </td>
<td>Active</td>
</tr>
<tr>
<td>IE CSS Optimizer</td>
<td>Not Needed</td>
<td>No</td>
<td>Active</td>
</tr>
<tr>
<td>Devel</td>
<td>Yes</td>
<td>No</td>
<td>Active</td>
</tr>
<tr>
<td>Pathauto</td>
<td>Yes</td>
<td>Yes</td>
<td>Active</td>
</tr>
<tr>
<td>Pathologic</td>
<td>Yes</td>
<td>No</td>
<td>Active</td>
</tr>
</table>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/web-development/getting-started-with-drupal-a-comprehensive-hands-on-guide/">Getting Started with Drupal: A Comprehensive Hands-On Guide</a></li>
<li><a href="http://sixrevisions.com/web-development/22-excellent-tips-for-new-drupal-developers/">22 Excellent Tips for New Drupal Developers</a></li>
<li><a href="http://sixrevisions.com/web-development/10-drupal-modules-you-may-not-know-about/">10 Drupal Modules You May Not Know About</a></li>
<li><em>Related categories</em>: <a href="http://sixrevisions.com/category/web-development/">Web Development</a> and <a href="http://sixrevisions.com/category/website-management/">Website Management</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://cdn.sixrevisions.com/authors/katie_methe_small.jpg" alt="" width="80" height="80" /><span class="author-bio-text"><strong>Katie Methe</strong> is one of the sharpest Drupal Chicks on the East Coast. Her experience with Drupal ranges from small websites to complex and advanced databases. Catch up with Katie at Drupalcon 2011 or join the <a href="http://www.gravityswitch.com/newsletter/">Gravity Switch mailing list</a> to stay up to date!</span></p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/drupal-modules-site-builds/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>You Should Build Websites That Empower Site Owners</title>
		<link>http://sixrevisions.com/web-development/you-should-build-websites-that-empower-site-owners/</link>
		<comments>http://sixrevisions.com/web-development/you-should-build-websites-that-empower-site-owners/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 15:30:19 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=5796</guid>
		<description><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5796&c=200998557' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5796&c=200998557' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br />Until recently, managing a website required, at the very least, familiarity with HTML. Updating a web page required the ability to work with FTP. Even minor tweaks to the site&#8217;s design required the client to know CSS (or to have someone on staff with the know-how). This was just an accepted part of owning a [...]]]></description>
			<content:encoded><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5796&c=1506271055' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5796&c=1506271055' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br /><p><a href="http://sixrevisions.com/web-development/you-should-build-websites-that-empower-site-owners/"><img src="http://cdn.sixrevisions.com/0186-01_buildsites_empower_siteowners_thumbnail.jpg" width="550" height="200" alt="You Should Build Websites That Empower Site Owners" /></a></p>
<p>Until recently, managing a website required, at the very least, familiarity with HTML. Updating a web page required the ability to work with FTP. Even minor tweaks to the site&#8217;s design required the client to know CSS (or to have someone on staff with the know-how).</p>
<p>This was just an accepted part of owning a website. The nature of the Internet created a demand to keep websites constantly updated and interactive by skilled developers, designers and/or IT staff.</p>
<p>Things have changed.</p>
<p><span id="more-5796"></span></p>
<p>Today, we have <a href="http://sixrevisions.com/web-applications/10-promising-content-management-systems/" title="10 Promising Content Management Systems">plenty of fantastic content management systems</a> (CMSs) that make creating, editing and managing site content easy even for individuals who have the bare minimum computing skills.</p>
<p>Sure, a little bit of guidance at the start is probably going to be required. Clients need to become familiar with how their CMS works and how to use the system&#8217;s admin interface.</p>
<p>However, the days of teaching site owners HTML, FTP, CSS, and the other things that are required to edit source code and manage website files are behind us now.</p>
<p>What this all ultimately means is that we can more easily deliver web-based products that are complex, yet easy to interface with.</p>
<p>Instead of providing extensive staff training at hand-off, for example, web designers like the <a href="http://www.paper-leaf.com/blog/2010/01/for-your-clients-how-to-use-wordpress/">Paper Leaf</a>&nbsp;team build sites using WordPress and give their clients a 30-minute training session on the publishing platform (and a user-friendly guide to WordPress administration basics when face-to-face meetings aren&#8217;t doable).</p>
<p><img src="http://cdn.sixrevisions.com/0186-02_wordpress_guide_paperleaf.jpg" width="550" height="360" /></p>
<h3>Empowering Your Client</h3>
<p>When we restrict our clients &#8212; placing limitations on what they can and can&#8217;t do with their website &#8212; we start to build a list of rules and regulations that their new site comes with.</p>
<p>As a web designer, I hate telling clients that they can&#8217;t do something with their website such as changing the font size of paragraphs, re-writing <a href="http://sixrevisions.com/content-strategy/about-page-guidelines/" title="Guidelines for Writing a Good About Page">their About page</a> or changing the color of their site&#8217;s <a href="http://sixrevisions.com/web_design/designing-hyperlinks-tips-and-best-practices/" title="Designing Hyperlinks: Tips and Best Practices">hyperlinks</a>.</p>
<p>Telling a client that they can&#8217;t add a sidebar on a product description page or alter featured content on the site&#8217;s home page without the help of a professional is no longer acceptable. We can &#8212; and <em>should</em> &#8212; build sites that allow them to make basic changes without our assistance.</p>
<p>In the case of WordPress, for example, many themes allow users to specify which pages should and shouldn&#8217;t have sidebars, and there are WordPress plugins such as <a href="http://wordpress.org/extend/plugins/wp-featured-content-slider/" target="_blank">WP Featured Content Slider</a> that you can easily install to deal with featured content on the home page.</p>
<p>What follows are just some of the things you can do to empower your client.</p>
<h4>Set Up User Roles</h4>
<p>When delivering a website built using a CMS, don&#8217;t encumber the site owner with rules such telling them which parts of the system they can and can&#8217;t use.</p>
<p><img src="http://cdn.sixrevisions.com/0186-03_wordpress_user_roles.jpg" width="550" height="200" /></p>
<p>Instead, take advantage of your ability to use and create custom user roles with varying system privileges.</p>
<p>For instance, WordPress comes with user roles that have different capabilities. The Administrator role can do anything, the Editor role allows the user to publish and manage posts but won&#8217;t allow her to modify the site&#8217;s theme settings and so on.</p>
<p><img src="http://cdn.sixrevisions.com/0186-04_user_roles_capabilities_table_wp.png" width="550" height="299" /><span class="figure-caption">WordPress table showing user <a href="http://codex.wordpress.org/Roles_and_Capabilities#Capability_vs._Role_Table">roles vs. capabilities</a>.</span></p>
<p>And if the default user roles aren&#8217;t enough, <a href="http://sixrevisions.com/web-development/how-to-evaluate-what-cms-to-use/" title="How to Evaluate What CMS to Use">a great content management system</a> will offer you the ability to create custom user roles out of the box or through a plugin (by default, <a href="http://drupal.org/node/22275" target="_blank" title="Managing access control with permissions and user roles - drupal.org">you can create your own user roles in Drupal</a> and <a href="http://wordpress.org/extend/plugins/user-role-editor/" target="_blank" title="User Role Editor WordPress plugin - wordpress.org">WordPress has the User Role Editor plugin</a>).</p>
<p>Set up accounts that only have access to the tools that can generate or edit the front-end of the site, and give your clients the freedom to experiment with everything they have access to.</p>
<h4>Provide GUIs for Basic Site Administration Tasks</h4>
<p>Another important thing we need to do is to provide user interfaces for common site-management tasks (even if the publishing platform doesn&#8217;t provide them).</p>
<p>Here is a brief list containing some common site administration tasks you should consider providing a user-friendly GUI for:</p>
<ul>
<li>Adding links to site navigation menus</li>
<li>Formatting a web page&#8217;s content (through a <a href="http://sixrevisions.com/user-interface/rich-text-editors-for-2010-and-beyond/" title="Rich-Text Editors for 2010 and Beyond">rich-text editor</a>)</li>
<li>Choosing which content should be featured on the home page</li>
<li>Creating new users</li>
<li>Adding and resizing images on a content page</li>
</ul>
<p>Providing GUIs is simple if you use a CMS because if it doesn&#8217;t come built into the system, you may be able to find an extension/plugin for it or use the CMS&#8217;s API to build one.</p>
<p>To determine what GUIs are needed, you can follow these steps:</p>
<ol>
<li>Create a list of site administration tasks an empowered site owner might want to do.</li>
<li>For each task, determine if the CMS provides a GUI for the task by default.</li>
<li>If the CMS doesn&#8217;t provide it by default, research plugins/extensions/modules that you can use.</li>
<li>If there is no existing plugin, use the CMS&#8217;s API to create a GUI.</li>
</ol>
<p><img src="http://cdn.sixrevisions.com/0186-05_develop_gui_flowchart.png" width="550" height="410" /></p>
<h4>Create Sites with Changeability in Mind</h4>
<p><a href="http://sixrevisions.com/web-technology/evolution-of-websites-a-darwinian-tale/" title="Evolution of Websites: A Darwinian Tale">Websites are meant to be alive</a> &#8212; they are constantly changed, updated, <a href="http://sixrevisions.com/web_design/the-three-golden-rules-of-site-redesigns/" title="The Three Golden Rules of Site Redesigns">redesigned</a>, and so on. In other words, what you deliver to the client today might not be exactly the same product a year from now. Change is inevitable.</p>
<p>Having this concept in mind throughout the <a href="http://sixrevisions.com/web-development/a-6-step-general-process-for-producing-a-website/" title="A 6-Step General Process for Producing a Website">website-production process</a> will ensure that you make the appropriate design decisions.</p>
<p>When we design with change in mind, our clients can expand and even rebuild their website with significantly less work. When a designer plans for the future around the content, they can reuse the most important part of the site  even as technology and their needs change.</p>
<h3>Planning for the Website&#8217;s Future</h3>
<p>As web designers, it&#8217;s our responsibility to make sure that our clients&#8217; websites will stay functional while continuing to deliver a rich experience long after a project is finished.</p>
<p>The best way to achieve this is to plan ahead as much as we can.</p>
<p>In the initial stages of a new project, make sure you sit down with the client and hash out a plan for growth. Any project for a brand new or freshly redesigned website should involve stakeholders that are familiar with the current state of the company, product or service, along with where they want it to be several years down the road.</p>
<p>If a company knows they want to expand into a new line of service in two years, it should be a part of the consideration of a website that&#8217;s being developed today.</p>
<p>Getting these plans out in the open will help the web designer predict what kinds of content additions, changes and expansions to expect down the road. This way, when the client decides to expand their site, they can do so with a minimal number of surprises or additional work.</p>
<p>I&#8217;m not suggesting that we have the power to build a website that can predict the future. However, we should be able to make websites that are as flexible and accepting to whatever lies ahead.</p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/web-development/agile/">Agile Web Development That Works</a></li>
<li><a href="http://sixrevisions.com/web_design/the-three-golden-rules-of-site-redesigns/">The Three Golden Rules of Site Redesigns</a></li>
<li><a href="http://sixrevisions.com/tools/responsive-web-design/">10 Excellent Tools for Responsive Web Design</a></li>
<li><em>Related categories</em>: <a href="http://sixrevisions.com/category/web-development/">Web Development</a> and <a href="http://sixrevisions.com/category/web_design/">Web Design</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://images.sixrevisions.com/authors/jason_gross_small.jpg" alt="" width="80" height="80" /><strong>Jason Gross</strong> is a freelance web designer focused on creating clean and user friendly websites. Jason currently lives in Indiana and can be found on Twitter as @<a href="http://twitter.com/JasonAGross">JasonAGross</a> or on the web at <a href="http://jasonagross.com/">his personal blog</a> and portfolio.</p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/you-should-build-websites-that-empower-site-owners/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>How Being a Coder Can Make You a Better Blogger</title>
		<link>http://sixrevisions.com/web-development/how-being-a-coder-can-make-you-a-better-blogger/</link>
		<comments>http://sixrevisions.com/web-development/how-being-a-coder-can-make-you-a-better-blogger/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 12:08:40 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=5622</guid>
		<description><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5622&c=909879751' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5622&c=909879751' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br />One of the neatest things I&#8217;ve had the pleasure of experiencing by combining my love for software development and professional blogging is to see how closely tied they are in art, form and function. The marriage couldn&#8217;t be more copasetic, and I&#8217;ve discovered that they complement each other and I can learn more about each [...]]]></description>
			<content:encoded><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5622&c=768223878' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5622&c=768223878' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br /><p><a href="http://sixrevisions.com/web-development/how-being-a-coder-can-make-you-a-better-blogger/"><img src="http://cdn.sixrevisions.com/0160-01_coder_better_blogger_thumbnail.png" width="550" height="200" alt="How Being a Coder Can Make You a Better Blogger" /></a></p>
<p>One of the neatest things I&#8217;ve had the pleasure of experiencing by combining my love for software development and professional blogging is to see how closely tied they are in art, form and function. The marriage couldn&#8217;t be more copasetic, and I&#8217;ve discovered that they complement each other and I can learn more about each respectively and dependently.</p>
<p><span id="more-5622"></span></p>
<p>Taking it one step further, I&#8217;ve had the pleasure to be a part of a <a href="http://8bit.io/">startup</a> that leverages one of the top blogging platforms out there, <a href="http://sixrevisions.com/category/wordpress/" title="WordPress - Six Revisions">WordPress</a>, and I&#8217;ve spent ample time in the weeds developing both WordPress themes and plugins for the system.</p>
<p>Naturally, I&#8217;ve learned a lot and, just like how an auto mechanic knows a car better than the average driver, I&#8217;ve been blessed with an insider look into how the blogging system itself talks to the end-user.</p>
<p>Here&#8217;s what I&#8217;ve discovered: You can become a seriously better blogger if you code even a little bit. Below are a few ways development is similar to blogging.</p>
<h3>An Affinity to Order</h3>
<p>When you first start out, developing software is like swimming in a pool of ideas that somehow coalesce into something workable, pliable and functional.</p>
<p>As you mature, you find that you&#8217;re able to quickly increase your pace of development by systemizing your processes, taking advantage of existing structures, syntax, systems and frameworks to speed things up. That is, you produce order out of chaos.</p>
<p>The more order you bring to a system, the more manageable it will become.</p>
<p>As a blogger, your goal is create order in what you write so that your readers can reasonably understand what you&#8217;re saying. It harkens me back to my elementary school years where my teacher required me to create all those outlines before I actually started to write anything. You remember, don&#8217;t you?</p>
<p>Practically, this means that your blog posts need to be orderly, written in a pattern, rhythm and cadence that&#8217;s acceptable to the audience and the context you&#8217;re covering. The more you can lock into the acceptable pattern and order, the better and quicker your writing becomes.</p>
<h3>Balance and Tension</h3>
<p>Coding requires poise, nerves of steel, and a bit of luck to get it off the ground. Do it once and you&#8217;re hooked. It&#8217;s like a drug that satisfies but never completely satiates.</p>
<p>As you build more and more complexity into your system, the balance begins to wear and the tension begins to grow. Of course, all of this is to produce an excellent product that the end-user will enjoy, so you continue to muddle through the code to completion!</p>
<p>And like any good blogger, your content needs to strike the right balance and tension as it presents the information to the reader. Go out too light, and the reader finds it boring and not deep enough. They might even find you a tad bit boring as well.</p>
<p>Create too much irresolvable tension, and you won&#8217;t capture anyone long-term.</p>
<p>In literary terms, this is called the narrative, the overarching movement of the story, a beginning, middle, and end.</p>
<p>Code does that aplenty, and if you spent a little time walking through some code, then you&#8217;d come away with a fresh perspective that few bloggers have: an appreciation for the art and science of software narrative.</p>
<p>In time, this develops into even more mature thinking as you build out your blog posts. For example, you might even start thinking about blog series and putting more than one or two blog posts together. You might even string them out for over 50 posts at some point!</p>
<h3>Just Ship It!</h3>
<p>At the end of the day, the most important thing that any software developer needs to do is ship the darn thing. That is, they need to finalize the last semi-colon, make sure it works, and then give it to the public for use.</p>
<p>The never-ending battle within the soul of the developer is that he knows that his work is not completely finished nor is it absolutely the best thing since sliced bread &#8212; but they ship and launch anyways.</p>
<p>And bloggers can learn a thing or two here: I encounter tons of people that have the potential to become amazing bloggers if only they&#8217;d ship more. In other words, they need to let go of the fear of making a mistake and the pointless drive to perfection, and just simply publish their posts, even if they&#8217;re imperfect.</p>
<p>Many writers simply feel like they can&#8217;t publish anything that isn&#8217;t completely perfect. This is insanity in a box. A post will never be perfect.</p>
<p>On the other hand, a developer knows that the moment she ships it, she&#8217;s already fixing it.</p>
<p>You will become a better blogger if you learn to publish despite the voices in your head telling you that it&#8217;s not perfect, that it&#8217;s not quite there yet, and that it&#8217;s not your opus.</p>
<p>Then, you&#8217;ll find the next time to be easier, and then the next even easier, and heck, you might even wake up one day as a professional blogger.</p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/resources/how-to-write-an-amazing-article/">How to Write an Amazing Article</a></li>
<li><a href="http://sixrevisions.com/content-strategy/components-of-high-quality-blog-posts/">Components of High-Quality Blog Posts</a></li>
<li><a href="http://sixrevisions.com/user-interface/creating-a-user-interface-that-speaks-your-users-language/">Creating a User Interface That Speaks Your Users&#8217; Language</a></li>
<li><em>Related categories</em>: <a href="http://sixrevisions.com/category/web-development/">Web Development</a> and <a href="http://sixrevisions.com/category/project-management/">Project Management</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://cdn.sixrevisions.com/authors/john_saddington_small.jpg" alt="" width="80" height="80" /><span class="author-bio-text"><strong>John Saddington</strong> is a software developer at <a href="http://8bit.io">8BIT</a> and a <a href="http://tentblogger.com/full-time-blogger/">professional blogger</a> who loves sharing his blogging tips, tricks, tools, and practical teaching covering <a href="http://tentblogger.com/seo/">SEO</a>, <a href="http://tentblogger.com/wordpress/">WordPress</a> and <a href="http://tentblogger.com/make-money-blogging/">making money</a> through your blog. You can follow him on Twitter @<a href="http://twitter.com/tentblogger">TentBlogger</a>.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/how-being-a-coder-can-make-you-a-better-blogger/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Agile Web Development That Works</title>
		<link>http://sixrevisions.com/web-development/agile/</link>
		<comments>http://sixrevisions.com/web-development/agile/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 10:00:04 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=5583</guid>
		<description><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5583&c=146347936' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5583&c=146347936' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br />Agile web development is not a specific process, action, or a daylong exercise. Agile is a mindset, an attitude with which a project is undertaken. It means streamlining the project, taking away time-sucks, performing frequent sanity checks, and making sure that you&#8217;re not spending excessive time on things that don&#8217;t add value to the project. [...]]]></description>
			<content:encoded><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5583&c=2116670355' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5583&c=2116670355' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br /><p><a href="http://sixrevisions.com/web-development/agile/"><img src="http://cdn.sixrevisions.com/0153-01_agile_website_development_thumbnail.png" /></a></p>
<p>Agile web development is not a specific process, action, or a daylong exercise. Agile is a mindset, an attitude with which a project is undertaken.</p>
<p>It means streamlining the project, taking away time-sucks, performing frequent sanity checks, and making sure that you&#8217;re not spending excessive time on things that don&#8217;t add value to the project.</p>
<p><span id="more-5583"></span></p>
<p>It&#8217;s about spending quality time on actions that add value to the website and make it better, and taking away time and energy from parts of the process that cause headaches.</p>
<p>Your team will reach the same goals and milestones, but in half the time or less.</p>
<p>In this article, I&#8217;ll show you how the <a href="http://en.wikipedia.org/wiki/Agile_management" target="_blank" title="Agile management - en.wikipedia.org">agile project management method</a> can be applied to developing websites.</p>
<h3>Traditional Web Development Process</h3>
<p><img src="http://cdn.sixrevisions.com/0153-02_traditional_web_development.png" width="550" height="145" /><span class="figure-caption">Typical web development process circa 2000-2007. </span></p>
<p>Around the turn of the century, a bunch of us web geeks were working hard on figuring out how to design websites effectively. We started with the tools and processes used in print, video and radio, and modified them for the internet.</p>
<p>We embraced paper prototypes, <a href="http://sixrevisions.com/user-interface/website-wireframing/" title="Ultimate Guide to Website Wireframing">wireframes</a>, user personas and use-case planning, as well as <a href="http://sixrevisions.com/usabilityaccessibility/information-architecture-101-techniques-and-best-practices/" title="Information Architecture 101: Techniques and Best Practices">information architecture</a> planning with site maps and flow charts.</p>
<p>When <a href="http://en.wikipedia.org/wiki/Jesse_James_Garrett" target="_blank">Jesse James Garrett</a> and <a href="http://www.sensible.com/" target="_blank">Steve Krug</a> came out with their usability/user-centered-design books, we heaved a sigh of relief, not because what they were saying was new, but because they articulated the subject in a way that even the most technology-phobic print designer could understand.</p>
<h3>The Turning Point</h3>
<p>We got an <a href="http://sixrevisions.com/project-management/7-tips-for-giving-effective-design-project-quotes/" title="7 Tips for Giving Effective Design Project Quotes">RFP</a> recently from a college that is redesigning their website and wanted to hire us for design and planning. It&#8217;s a great school and it sounded like a great project, the likes of which we&#8217;ve done dozens of times before.</p>
<p>But when we sat down to write the proposal, we found ourselves scratching our heads about how to approach it.</p>
<p>After a while, we realized why. The RFP was looking for a web developer from 2005.</p>
<p>Wireframes, site maps, use-case scenarios and focus groups &#8212; the traditional web development process &#8212; have served us well for almost 10 years, and we developed effective websites using them, but in a high-paced industry like ours, speed and efficiency are very important.</p>
<p>Now we see that they were tools of the Wild West. They still have their places in the new world, but they&#8217;ve been reduced to a niche player, and are only used on the trickiest of web projects.</p>
<h3>What&#8217;s Changed?</h3>
<p>There have been three major changes in the past 5 years that have fundamentally altered how we design websites.</p>
<p>First, everyone uses the Internet. I mean everyone. Ten years when we met with marketing directors or CEOs, most of them had secretaries who printed out their email to be replied to. Now, every CEO has a Blackberry or iPhone.</p>
<p>Secondly, we have gained a better understanding of how people use sites. Five years ago, we had <em>best guesses</em> to start from, now we have <em>best practices</em>. For example, every user who goes to a college website knows to look for the link that says &quot;Admissions&quot;, and likewise every college knows to have a link called &quot;Admissions&quot;. It&#8217;s hard to imagine, but these were big questions 10 years ago that merited days of discussion and testing.</p>
<p>Third, and possibly most importantly, are the vast strides in <a href="http://sixrevisions.com/web-development/how-to-evaluate-what-cms-to-use/" title="How to Evaluate What CMS to Use">content management systems</a> (CMS) technologies over the past 5 years. Any reasonably talented usability consultant (a profession that also didn&#8217;t exist 10 years ago) can work with a developer to customize any number of inexpensive or freely available, open-sourced CMSs, so that even my grandparents can edit a website.</p>
<p>Now we&#8217;re at a point where the work that used to take up 80% of a web development project is unnecessary.</p>
<p>It&#8217;s time to put aside the processes that supported that work, and graduate to the next level.</p>
<h3>Agile Web Development Process</h3>
<p><img src="http://cdn.sixrevisions.com/0153-03_agile_web_development.jpg" /><span class="figure-caption">Modern (agile) web development process.</span></p>
<p>In the process shown above, editors are interacting with content and navigation on day one. Navigation is fluid, and we&#8217;re getting in front of users faster and making 100 minor corrections to our course, instead of waiting a few weeks and making major adjustments.</p>
<h4>Flexible Processes for a Flexible Web</h4>
<p>Get your team off of email and hold the phone. Stop the endless back-and-forth, internal meetings, and rehashing of the same issues each week.</p>
<p>Get everyone in the office and lock them in (figuratively). Bring the decision makers, the content entry folks, and your IT specialists, and you have a recipe for success.</p>
<p>While every part of an agile web development process runs more smoothly with rapid iterations, it&#8217;s the reduction of time spent on overhead &#8212; scheduling, recapping, hunting someone down for feedback, mood swings, staff reorganizations, training, etc. &#8212; that really gives you your biggest time-savings. Instead of your key stakeholders having to attend 4 meetings over 5 months, they need to attend 3 hours of meetings over 3 days.</p>
<p><img src="http://cdn.sixrevisions.com/0153-04_agile_time_investment.png" width="549" height="305" /></p>
<p>With agile development, your team will be immersed in building the website within a couple of weeks of starting the project, and you&#8217;ll be getting real-time feedback from real website users within a month.</p>
<p>Your internal team will be empowered to make these changes and will be trained in asking the key questions, which are:</p>
<ul>
<li>Does this change help us reach our goals?</li>
<li>Do these images and words support our brand?</li>
<li>Is this solution better than what&#8217;s there now?</li>
<li>What&#8217;s the worst that could happen if we tried this for a week?</li>
<li>Once the week is done, how should we decide if we leave it or change it back?</li>
</ul>
<p>Now is a very exciting time for technology, and this new method of web development is a tool that gets right to the heart of the matter, and avoids wasting time on the noise and minutia that slows us down.</p>
<h3>A Case Study of Agile Web Development</h3>
<p>We worked with <a href="http://www.tcicollege.edu/">Technical Career Institutes</a> in Manhattan to re-launch their 100-page college website in 1 month.</p>
<p><a href="http://www.tcicollege.edu/"><img src="http://cdn.sixrevisions.com/0153-05_agile_case.jpg" alt="" width="550" height="361" /></a></p>
<p>They wanted a slick, modern, engaging design to reflect their brand. They want it to be easy to edit, and easy for them to maintain.</p>
<p>Within 2.5 months of signing a contract with us, their inquiries had increased by 100% &#8212; a wonderful outcome of the re-design. (We&#8217;re continuing to work with them to understand where they lose people in the application process, and will continue to improve these numbers.)</p>
<p>In three days, despite not having a clear brand statement, we took all the photos, designed the new website look, got sign-off (and excitement) from over a dozen key stakeholders, programmed the themes and tested them on all priority browsers, finalized navigation and created about half the pages on the website.</p>
<p>What follows is a breakdown of our 1-month timeline.</p>
<h4>Week 1: Setup</h4>
<p>Initial server setup by our team. We chose <a href="http://sixrevisions.com/web-development/getting-started-with-drupal-a-comprehensive-hands-on-guide/" title="Getting Started with Drupal: A Comprehensive Hands-On Guide">Drupal</a> because it&#8217;s powerful and can be configured and customized to be very easy for end-users to use. Using the <a href="http://acquia.com/products-services/acquia-drupal" target="_blank" title="Acquia Drupal - acquia.com">Acquia Drupal</a> install, security updates become easy. (We have a standard module list that, if you ask about in the comments, I&#8217;ll discuss in another article.)</p>
<h4>Week 2: Onsite Training</h4>
<p>Over the course of this week, we worked with TCI to understand their brand, create the visual design of the website, take hundreds of photos, define the navigation, and train 15 TCI staff members on content management. This allowed them to completely rewrite 15 pages and migrate 25 more from the old site to the new site, set up multiple web forms and calendar integration, and connect all the hooks to their existing admissions systems.</p>
<h4>Weeks 3-4: Cleanup and Go Live</h4>
<p>We spent the last two weeks tidying up and preparing to go into production. TCI continued to add and tweak content while we refined the design and the code, cropped pictures for them, and helped them with navigation problems. We made the site more search-engine-friendly and generally kept things moving forward to deployment.</p>
<h4>Post-Launch</h4>
<p>Both our team and their team have made dozens of tweaks to the website after the site was launched. We continue to <a href="http://sixrevisions.com/tools/tools_monitoring_website_popularity/" title="15 Tools for Monitoring a Website's Popularity">monitor website traffic</a> to optimize the website for search engine traffic.</p>
<h3>Conclusion</h3>
<p>Using agile project management reduces traditional website development processes significantly. What could have taken 4-8 months under a traditional process, we reduced to 1 month. Cutting down the build process to its bare essentials  reduces bottlenecks and project overhead, making it as efficient and results-driven as possible.</p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/web-development/4-steps-to-building-a-portfolio-website-using-drupal/">4 Steps to Building a Portfolio Website Using Drupal</a></li>
<li><a href="http://sixrevisions.com/web-development/why-making-web-apps-with-rails-is-awesome/">Why Making Web Apps with Rails Is Awesome</a></li>
<li><a href="http://sixrevisions.com/project-management/ideas-for-expanding-your-web-design-business/">Ideas for Expanding Your Web Design Business</a></li>
<li><em>Related categories</em>: <a href="http://sixrevisions.com/category/web-development/">Web Development</a> and <a href="http://sixrevisions.com/category/project-management/">Project Management</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://cdn.sixrevisions.com/authors/jason_mark_small.jpg" alt="" width="80" height="80" /><span class="author-bio-text"><strong>Jason Mark</strong> is an educator, business owner, and author. His Massachusetts-based firm, <a href="http://www.gravityswitch.com/" title="Gravity Switch">Gravity Switch</a>, continues to be the leader in web, iPhone and iPad development in New England, and Jason keeps their carbon footprint down by bicycling to work year round. Follow him on Twitter @<a href="http://twitter.com/#!/jasonnmark">jasonnmark</a>.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/agile/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>5 Little-Known Web Files That Can Enhance Your Website</title>
		<link>http://sixrevisions.com/web-development/5-little-known-web-files-that-can-enhance-your-website/</link>
		<comments>http://sixrevisions.com/web-development/5-little-known-web-files-that-can-enhance-your-website/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 17:09:56 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=5541</guid>
		<description><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5541&c=1272577427' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5541&c=1272577427' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br />Previously, I wrote about 5 web files that will improve your website and discussed files that, while small in size, pack a solid punch and make our work that little bit better. In this article, we&#8217;ll look at five more web files that can improve and your website. Quick Overview Here are the files we [...]]]></description>
			<content:encoded><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5541&c=2065435733' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5541&c=2065435733' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br /><p><a href="http://sixrevisions.com/5-little-known-web-files-that-can-enhance-your-website/"><img src="http://cdn.sixrevisions.com/0146-01_files_furtherimprove_website_thumbnail.jpg" width="550" height="200" alt="5 Little-Known Web Files That Can Enhance Your Website" /></a></p>
<p>  Previously, I wrote <a href="http://sixrevisions.com/web-standards/5-web-files-that-will-improve-your-website/" title="5 Web Files That Will Improve Your Website">about 5 web files that will improve your website</a> and discussed files that, while small in size, pack a solid punch and make our work that little bit better. In this article, we&#8217;ll look at five more web files that can improve and your website.</p>
<p><span id="more-5541"></span></p>
<h3>Quick Overview</h3>
<p>Here are the files we will cover:</p>
<ul>
<li><strong>P3P.xml</strong> &#8211; for user privacy </li>
<li><strong>Geo.kml</strong> (and <strong>Geo.rdf</strong>) &#8211; for geolocation</li>
<li><strong>Humans.txt</strong> &#8211; for attribution</li>
<li><strong>vCard.vcf</strong> &#8211; digital business card</li>
<li><strong>PICS.rdf</strong> &#8211; declares a website to be safe (or not safe) for young web users</li>
</ul>
<h3>P3P.xml</h3>
<p><a href="http://sixrevisions.com/usabilityaccessibility/privacy-and-the-user-experience/" title="Privacy and the User Experience">Issues related to user privacy</a> on the web are of paramount concern both to those who store information (site owners) and to those who submit the information (site users).</p>
<p>The Platform for Privacy Preferences Project (P3P) encourages website owners to declare all details relating to their privacy measures in a standardized XML document (or via meta tags), so that browsers can pick up the information, display warnings and details, and empower users to take whatever action they feel necessary.</p>
<p>On the surface, this system sounds wonderful: it gives users control over their data, it helps site owners keep them informed, and the browsers let users choose sites to trust.</p>
<p><img src="http://cdn.sixrevisions.com/0146-02_ppp_spec.png" width="550" height="284" /><span class="figure-caption">Platform for Privacy Preferences or Pretty Poor Privacy? The truth is out there!</span></p>
<p>Unfortunately, creating the file can be quite complex, with all of the variables involved (it&#8217;s like filing a tax return).</p>
<p>Worse, Internet Explorer is the only major browser that does much with the file. It grants greater control over cookie-blocking in IE6+, while letting you display an on-screen privacy policy.</p>
<p>In addition, the issuer of the file is responsible for complying with its own guidelines, and there is no enforcement.</p>
<p>The reality is that, with all of the critics and compatibility issues, no alternative has gained as broad of a support as P3P.</p>
<p>Website owners need to deal with these increasingly prevalent privacy issues, and because P3P offers a workable  solution right now, adopting it for the sake of IE, privacy search engines, and other user-focused tools is justifiable. </p>
<h4>Creating a P3P.xml File</h4>
<p>Once you&#8217;ve created the file, it requires little maintenance.</p>
<p>There are two ways to go about creating a P3P.xml file.</p>
<p>One way is you could follow the W3C <a href="http://www.w3.org/TR/P3P/" title="The Platform for Privacy Preferences 1.0 (P3P1.0) Specification - w3.org">Platform for Privacy Preferences 1.0 (P3P1.0)</a> specification and build the file by hand using your favorite <a href="http://sixrevisions.com/tools/12-excellent-free-text-editors-for-coders/" title="12 Excellent Free Text Editors for Coders">text editor</a>.</p>
<p>Alternatively, a few useful apps will do the work for you.</p>
<p><strong>P3P.xml tools:</strong></p>
<ul>
<li><a href="http://alphaworks.ibm.com/tech/p3peditor">IBM P3P Policy Editor</a> (freeware)</li>
<li><a href="http://sourceforge.net/projects/jrc-policy-api/">JRC Policy Workbench</a> (open source)</li>
<li><a href="http://p3pedit.com/">P3PEdit</a> (web-based, $39)</li>
</ul>
<p><strong>Other useful resources:</strong></p>
<ul>
<li><a href="http://www.w3.org/P3P/validator.html">P3P policy validator</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms537343.aspx">Internet Explorer and P3P</a></li>
<li><a href="http://www.privacybird.org/">P3P privacy verification</a></li>
<li><a href="http://www.privacyfinder.org/">Search for privacy-friendly websites</a></li>
</ul>
<p>Once you&#8217;ve created the file, name it <strong>P3P.xml</strong>, put it in either the site&#8217;s root directory or a directory named <strong>w3c</strong>.</p>
<p>Next, you&#8217;ll need to add a reference in the <code>&lt;head&gt;</code> of your HTML document. Below is a sample reference:</p>
<pre>
 &lt;head&gt;
 <strong>&lt;link rel=&quot;P3Pv1&quot; type=&quot; text/xml&quot; href=&quot;/w3c/p3p.xml&quot; /&gt;</strong>
 &lt;/head&gt;
</pre>
<h3>Geo.kml and Geo.rdf     </h3>
<p><a href="http://en.wikipedia.org/wiki/Geotagging">Geotagging</a> has taken the web by storm.  Disclosing your geographic location to site visitors can build trust, especially in e-commerce websites.</p>
<p><img src="http://cdn.sixrevisions.com/0146-03_google_earth.jpg" width="550" height="257" /><span class="figure-caption">Using Google Earth or Maps, we can guide visitors to our office.</span></p>
<p>The benefits of geotagging are quite evident. You let users see where your offices are (great if you need to arrange meetings with clients at your headquarters). Also, showing that there are real people behind the website makes you seem less like an anonymous corporation. Not to mention, mapping services will be able to index you in their listings.</p>
<p>There are several possible approaches to geotagging your site, including using <a href="http://sixrevisions.com/web-development/ultimate-guide-to-microformats-reference-and-examples/" title="Ultimate Guide to Microformats: Reference and Examples">microformats</a>. We&#8217;ll look at how to build two different solutions: one for <a href="http://www.google.com/earth/index.html" target="_blank" title="Google Earth - google.com">Google Earth</a> (Geo.kml) and a helpful RDF fallback (Geo.rdf) for other tools.</p>
<h4>Creating a Geo.kml file</h4>
<p>You can create this file using any text editor. You could name the file after the website or place that you&#8217;re mapping. For example, if we made a file for Six Revisions, it could be named <em>SixRevisions.kml</em>.</p>
<p>Put your Geo.kml file in the root directory  of your website.</p>
<p>Below is a basic example of what the code should include:</p>
<pre>
  &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  &lt;kml xmlns=&quot;http://www.opengis.net/kml/2.2&quot; xmlns:gx=&quot;http://www.google.com/kml/ext/2.2&quot; xmlns:kml=&quot;http://www.opengis.net/kml/2.2&quot; xmlns:atom=&quot;http://www.w3.org/2005/Atom&quot;&gt;
  &lt;Document&gt;
  &lt;name&gt;Brighton&lt;/name&gt;
  &lt;description&gt;The place that I call home!&lt;/description&gt;
  &lt;Style id=&quot;pin&quot;&gt;&lt;IconStyle&gt;&lt;Icon&gt;&lt;href&gt;http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png&lt;/href&gt;&lt;/Icon&gt;&lt;/IconStyle&gt;&lt;/Style&gt;
  &lt;Placemark&gt;
    &lt;LookAt&gt;
      &lt;longitude&gt;-0.13642&lt;/longitude&gt;
      &lt;latitude&gt;50.819522&lt;/latitude&gt;
      &lt;altitude&gt;0&lt;/altitude&gt;
      &lt;tilt&gt;0&lt;/tilt&gt;
      &lt;range&gt;5500&lt;/range&gt;
    &lt;/LookAt&gt;
    &lt;styleUrl&gt;#pin&lt;/styleUrl&gt;
    &lt;Point&gt;&lt;coordinates&gt;-0.13642,50.819522,0&lt;/coordinates&gt;&lt;/Point&gt;
  &lt;/Placemark&gt;
  &lt;/Document&gt;
  &lt;/kml&gt;</pre>
<p>Every KML file begins with a document type declaration (DTD), which states that this is an XML file that follows the KML specification.</p>
<p>Inside the KML element, there should be a <code>&lt;Document&gt;</code> tag (just as an HTML document has a <code>&lt;body&gt;</code> tag), and in it, you put the details of your address.</p>
<p>Briefly, here are explanations for tags to include:</p>
<ul>
<li><code>&lt;name&gt;</code> and <code>&lt;description&gt;</code> lets users know what is being shown</li>
<li><code>&lt;style&gt;</code> offers an image to pinpoint the location on the globe</li>
<li><code>&lt;Placemark&gt;</code> pinpoints the object</li>
<li><code>&lt;Point&gt;</code> contains <code>&lt;coordinates&gt;</code> to the latitude and longitude of your location
<p>    <code>&lt;LookAt&gt;</code> data about the coordinates, such as altitude and tilt</li>
<li><code>&lt;range&gt;</code> tells how far to zoom in</li>
</ul>
<p>Most of these are easy to declare. The only thing to find are the coordinates.</p>
<p>Finding your coordinates is rather easy. If you visit <a href="http://maps.google.com/">maps.google.com</a> and type in the place or address, half the job is done.</p>
<p>Of the many methods of extracting these details, my favorite requires the least amount of work. Simply using the script below into the address bar after you&#8217;ve found your location will yield the information.</p>
<pre>javascript:void(prompt('',gApplication.getMap().getCenter()));</pre>
<p><img src="http://cdn.sixrevisions.com/0146-09_jsgooglemaps.jpg" width="550" height="407" /></p>
<p>To reference it in HTML, add the following inside your <code>&lt;head&gt;</code> tag:</p>
<pre>
 &lt;link rel=&quot;alternate&quot; type=&quot;application/vnd.google-earth.kml+xml&quot; href=&quot;SixRevisions.kml&quot; /&gt;
</pre>
<p>Of course, you can do more with your KML file than what is described here. If you&#8217;d like to explore further, Google has a <a href="http://code.google.com/apis/kml/documentation/kmlreference.html">KML Reference</a> documention.</p>
<h4>Creating a Geo.rdf File</h4>
<p>Of course, not everyone uses Google Earth, and many other web services exist (such as search engines) that gather geodata. So, we should also produce an RDF file that works some geo magic on the semantic web.</p>
<p><img src="http://cdn.sixrevisions.com/0146-04_geo_vocabulary.jpg" width="550" height="259" /><span class="figure-caption">Geodata has a lot of uses, and it&#8217;s very easy to create.</span></p>
<p>If you have the coordinates, the file is actually a lot more straightforward to create than the Google Earth KML file, because we&#8217;re not worried about visual representation; we simply want to get the coordinates out there for other services to make use of them (whether social networks or search engines).</p>
<p>To build the file, create a new document named <strong>Geo.rdf</strong>, and in it, just use the code below, replacing details such as your website (<code>rdf:about</code>), the place or website name (<code>dc:title</code>), and your coordinates (<code>geo:lat</code> and <code>geo:long </code> tags).</p>
<pre>
 &lt;rdf:RDF xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:foaf=&quot;http://xmlns.com/foaf/0.1/&quot; xmlns:geo=&quot;http://www.w3.org/2003/01/geo/wgs84_pos#&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
 &lt;rdf:Description rdf:about=&quot;http://www.mysite.com&quot;&gt;
 &lt;dc:title&gt;Brighton&lt;/dc:title&gt;
 &lt;foaf:topic rdf:parseType=&quot;Resource&quot;&gt;
 &lt;geo:lat&gt;50.819522&lt;/geo:lat&gt;
 &lt;geo:long&gt;-0.13642&lt;/geo:long&gt;
 &lt;/foaf:topic&gt;
 &lt;/rdf:Description&gt;
 &lt;/rdf:RDF&gt;
</pre>
<p>Once you&#8217;ve created the file, add the link reference to your website:</p>
<pre>
 &lt;link rel=&quot;alternate&quot; type=&quot;application/rdf+xml&quot; title=&quot;Geo&quot; href=&quot;Geo.rdf&quot; /&gt;</pre>
<h3>Humans.txt</h3>
<p>The proper way to attribute work has been up for debate since the Internet went mainstream. As professionals, we want to act in our clients&#8217; best interests, but as creatives, we want people to know who is behind the wonderful work we put together (which could lead to new clients).</p>
<p><img src="http://cdn.sixrevisions.com/0146-05_humans_txt.jpg" width="550" height="263" /><span class="figure-caption">Websites are built by people, so why not credit them?</span></p>
<p><a href="http://humanstxt.org/">humans.txt</a> is a standard format not unlike a robots.txt, but with the intention of providing information about the people behind a particular website.</p>
<h4>Creating a Humans.txt File</h4>
<p>The great thing about Humans.txt is its simplicity. While there is no formal standard for what (or who) to include, there are some best practices to ensure that the file is as human-readable (and possibly machine-readable, for web spiders) as possible.</p>
<p>To begin, create a <strong>humans.txt</strong> file and put it in your website&#8217;s root directory. In that file, you will be enclosing three primary categories in comments. You could add and remove categories as you see fit</p>
<p>The first category, <strong>TEAM</strong>, can include directives such as title, position, website, Twitter profile and location. The purpose is to provide information about the individuals responsible for creating the site.</p>
<p>The second category, <strong>THANKS</strong>, attributes the project&#8217;s contributors by name (or URL).</p>
<p>The final category, <strong>SITE</strong>, provides information about the standards, components and software used in the website&#8217;s production, along with a timestamp for the last update and language details.</p>
<p>Below I&#8217;ve adapted a humans.txt template, illustrating this format:</p>
<pre>
<strong>/* TEAM */</strong>
Title:      YourName.
Position:   Job Role
Site:       http://yoursite.com
Twitter:    @YourSite
Location:   City, Country.
<strong>/* THANKS */</strong>
Name: TheirName
<strong>/* SITE */</strong>
Updated:     YYYY/MM/DD
Language:    English (US)
Standards:   HTML5, CSS3, JavaScript
Components:  jQuery, etc.
Software:    Adobe Photoshop, Notepad++
</pre>
<p>Once you&#8217;ve filled in as much detail as you&#8217;d like (remember that this file is primarily for humans, so keep it simple), you just need to link to the <code>&lt;head&gt;</code> (as always).</p>
<pre>&lt;link type=&quot;text/plain&quot; rel=&quot;author&quot; href=&quot;humans.txt&quot; /&gt;</pre>
<p>It&#8217;s a great way to credit the entire team unobtrusively.</p>
<h3>vCard.vcf</h3>
<p>Next on the list is a personal favorite of mine. In this era of communication, enabling clients and visitors to get (and stay) in touch is essential. Our contact pages are often fragmented by social network icons, email forms and lists of instant messaging and VoIP accounts. Visitors and clients just want to get in touch with us, so make the process as easy as possible.</p>
<p><img src="http://cdn.sixrevisions.com/0146-06_vcards.jpg" width="550" height="320" /><span class="figure-caption">With a few lines of code, we can produce a useful importable contact reference.</span></p>
<p><a href="http://en.wikipedia.org/wiki/VCard">vCard</a> is a standardized format for digital business cards. One file lists all of the applications, services and social networks that people can use to connect with you. It functions as an index of meta data about you or your business, and people can import all of the data into their favorite address book or email client. Microsoft Outlook and other clients support vCards, as do the Windows and Mac address books.</p>
<p>vCard has its own <a href="http://microformats.org/wiki/hcard">microformat</a> that semantically marks up any related information on our pages. You could offer just the microformat version, but for compatibility and ease of access, vCard (or even both formats) is preferred.</p>
<h4>Creating a vCard.vcf File</h4>
<p>The first thing to do is create the <strong>vCard.vcf</strong> file (which is case-insensitive). Inside are a few things every vCard must have, according to the specifications:</p>
<ul>
<li><code>BEGIN:VCARD</code> and <code>END:VCARD</code> (case-sensitive) to map the start and end of the line (the same way that we open and close the <code>&lt;html&gt;</code> tag in HTML documents)</li>
<li><code>VERSION:</code> with a value of 3.0 (the latest edition)</li>
<li><code>N:</code> (Lastname;Firstname) and <code>FN:</code> (Full Name) directives
  </li>
</ul>
<p>Here is an example:</p>
<pre>
BEGIN:VCARD
VERSION:3.0
N:LastName;FirstName
FN:FirstName SecondNames LastName
END:VCARD</pre>
<p>You can add a bunch of other useful directives to declare things about yourself; if supported, these details can be used by other apps and services.</p>
<p>The general syntax for vCard files is the directive in uppercase, followed by a colon character, except where a variable is required (like <code>TYPE=HOME</code> or <code>EMAIL</code>), in which case the colon becomes a semi-colon. <code>TYPE=</code> becomes the variable identifier, multiple variables are comma-separated (like <code>TYPE=HOME, WORK</code>), and new lines for values are identified by more semi-colons.</p>
<p>Below are some examples of the various directives:</p>
<pre>
 NICKNAME:Name
 X-GENDER:Male
 BDAY:YYYY-MM-DDT
 ORG:Company
 TITLE:Web Designer
 URL;TYPE=WORK:http://www.yoursite.com/
 EMAIL;INTERNET:Hello@yoursite.com
 EMAIL;TYPE=PREF,INTERNET:Support@yoursite.com
 X-MSN;TYPE=HOME:You@hotmail.com
 X-SKYPE;TYPE=WORK:MySkypeID
 X-GOOGLE-TALK;TYPE=WORK:MyGoogleID</pre>
<p>The variable <code>TYPE=PREF</code> indicates a preferred contact type (if the destination program recognizes it).</p>
<p>For more details about directives and extensions, please check the links below. You can add all sorts of awesome things into vCards, like images, links and even sometimes audio!</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/VCard#Properties">Basic directives</a></li>
<li><a href="http://en.wikipedia.org/wiki/VCard#vCard_extensions">Known extensions</a></li>
</ul>
<p>There are many more directives than are mentioned here. Another reason vCards are great is that they are extensible, supporting proprietary extensions. vCard extensions are prefixed with <code>X-</code> (the way we use vendor prefixes like <code>-moz-</code> in CSS). The only downside is that, as with CSS, support isn&#8217;t a given, so you&#8217;ll have to figure out the best semantic route.</p>
<p>Once you have your vCard.vcf ready, reference it in your HTML documents like so:</p>
<pre>
 &lt;link rel=&quot;alternate&quot; type=&quot;text/directory&quot; title&quot;vCard&quot; href=&quot;vCard.vcf&quot; /&gt;</pre>
<h3>PICS.rdf</h3>
<p>Not everything on the web is child-friendly, and this last file helps with that issue. Many software providers (even Windows with IE6+) provide specialized tools to filter out objectionable content for young audiences (i.e. generic content filtering). While some providers use human-based filtering, PICS (Platform for Internet Content Selection) helps any automated product gauge whether your content is age-appropriate. And it&#8217;s well supported.</p>
<p><img src="http://cdn.sixrevisions.com/0146-07_content_advisor.jpg" width="550" height="246" /><span class="figure-caption">The content advisor in Internet Explorer is just one system that integrates PICS tags.</span></p>
<p>Getting your content blocked automatically reduces your ability to reach users, and while some newer tools rely on human screening (because of a distrust of self-regulation), we can at least certify our content to aid with such decisions. It&#8217;s pretty much like how the music and film industries work, and there are several ratings systems, too.</p>
<h4>Creating a PICS.rdf file</h4>
<p>Because there are several ratings systems, each with its own methodology, I&#8217;ve adapted one of the most popular formats (ICRA&#8217;s RDF method) to accept other types of labeling. Even though the ICRA has ceased developing its PICS labeling system, the system is still widely used by content filters, so it still has an important role to play, until something better comes along.</p>
<p>Start by creating a <strong>PICS.rdf</strong> file, and use the following code in it:</p>
<pre>&lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-8859-1&quot;?&gt;
 &lt;rdf:RDF xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot; xmlns:rdfs=&quot;http://www.w3.org/2000/01/rdf-schema#&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:dcterms=&quot;http://purl.org/dc/terms/&quot; xmlns:label=&quot;http://www.w3.org/2004/12/q/contentlabel#&quot; xmlns:icra=&quot;http://www.icra.org/rdfs/vocabularyv03#&quot; xmlns:rsac=&quot;http://www.icra.org/rdfs/vocabularyv01#&quot;  xmlns:ss=&quot;http://www.safesurf.com/ssplan/&quot; xmlns:sfk=&quot;http://www.weburbia.com/safe/ratings/ &quot;&gt;
 &lt;rdf:Description rdf:about=&quot;&quot;&gt;
 &lt;dc:creator rdf:resource=&quot;http://www.icra.org&quot; /&gt;
 &lt;dc:creator rdf:resource=&quot;http://www.safesurf.com&quot; /&gt;
 &lt;dc:creator rdf:resource=&quot;http://www.weburbia.com/safe&quot; /&gt;
 &lt;dcterms:issued&gt;2011-04-15&lt;/dcterms:issued&gt;
 &lt;label:authorityFor&gt;http://www.icra.org/rdfs/vocabularyv03#&lt;/label:authorityFor&gt;
 &lt;/rdf:Description&gt;
 &lt;label:Ruleset&gt;
 &lt;label:hasHostRestrictions&gt;&lt;label:Hosts&gt;&lt;label:hostRestriction&gt;www.yoursite.com&lt;/label:hostRestriction&gt;&lt;/label:Hosts&gt;&lt;/label:hasHostRestrictions&gt;
 &lt;label:hasDefaultLabel rdf:resource=&quot;#label_1&quot; /&gt;
 &lt;/label:Ruleset&gt;
 &lt;label:ContentLabel rdf:ID=&quot;label_1&quot;&gt;
 &lt;rdfs:comment&gt;ICRA Ratings&lt;/rdfs:comment&gt;

 &lt;/label:ContentLabel&gt;
 &lt;label:ContentLabel rdf:ID=&quot;label_2&quot;&gt;
 &lt;rdfs:comment&gt;RSACi Ratings&lt;/rdfs:comment&gt;

 &lt;/label:ContentLabel&gt;
 &lt;label:ContentLabel rdf:ID=&quot;label_3&quot;&gt;
 &lt;rdfs:comment&gt;SafeSurf Ratings&lt;/rdfs:comment&gt;

 &lt;/label:ContentLabel&gt;
 &lt;label:ContentLabel rdf:ID=&quot;label_4&quot;&gt;
 &lt;rdfs:comment&gt;WebUrbia Ratings&lt;/rdfs:comment&gt;

 &lt;/label:ContentLabel&gt;
 &lt;/rdf:RDF&gt;</pre>
<p>Below each <code>rdfs:comment</code> element, you&#8217;ll notice some empty spaces. Your job is to fill them in according to the specifications of the various groups. Guides exist to help you determine what code to put in each category (mentioned below).</p>
<p>In each section, create a tag that begins with the letters of the system you&#8217;re using there, and then (separated by a colon) define the relevant rating by its unique abbreviation. Once you have the tag, simply enter the appropriate digit, 0 or 1, inside it.</p>
<p><img src="http://cdn.sixrevisions.com/0146-08_pics_systems.jpg" width="550" height="200" /><span class="figure-caption">ICRA, RSAC, SafeSurf and Safe for Kids represent the four most popular PICS systems.</span></p>
<p>For example, if you used ICRA, your tags would be <code>&lt;icra:x&gt;&lt;/icra:x&gt;</code>, with the <code>x</code>&#8216;s being replaced by the rating, and the 1 or 0 value going between the tags.</p>
<p>For RSAC, it would be <code>&lt;rsac:x&gt;</code>, for SafeSurf it would be <code>&lt;ss:x&gt;</code>, and for Weburbia&#8217;s &quot;Safe for Kids&quot; system it would be <code>&lt;sfk:x&gt;</code>.</p>
<p>To determine exactly what sections you&#8217;ll need, visit these websites:</p>
<ul>
<li><a href="http://replay.waybackmachine.org/20090228211023/http:/www.icra.org/decode/">ICRA</a></li>
<li><a href="http://256.com/gray/docs/pics/rsac.html">RSAC</a></li>
<li><a href="http://www.safesurf.com/ssplan.htm">SafeSurf</a></li>
<li><a href="http://www.weburbia.com/safe/ratings.htm">WebUrbia</a></li>
</ul>
<p>To see how this code might look, I&#8217;ve pre-built some example labels. ICRA labels have a two-letter code (for example, <code>NZ</code> declares that there is no nudity on the website). For RSAC, it&#8217;s a letter followed by a number (indicating severity).</p>
<p>For SafeSurf, it&#8217;s a slightly longer value (<code>SS~~</code>, followed by two zeros and the number or letter). The easiest of all (with only one declaration) is Weburbia&#8217;s &quot;Safe for Kids&quot; scheme, with an <code>S</code> to represent the safety level, and a value of a 0, 1 or 2 to match the PICS scheme.</p>
<p>Below are some basic examples of PICS labels from the four providers:</p>
<pre>
 &lt;label:ContentLabel rdf:ID=&quot;label_1&quot;&gt;
 &lt;rdfs:comment&gt;ICRA Ratings&lt;/rdfs:comment&gt;
 &lt;icra:nz&gt;1&lt;/icra:nz&gt;
 &lt;icra:sz&gt;1&lt;/icra:sz&gt;
 &lt;icra:vz&gt;1&lt;/icra:vz&gt;
 &lt;icra:lz&gt;1&lt;/icra:lz&gt;
 &lt;icra:oz&gt;1&lt;/icra:oz&gt;
 &lt;icra:cz&gt;1&lt;/icra:cz&gt;
 &lt;icra:xz&gt;1&lt;/icra:xz&gt;
 &lt;/label:ContentLabel&gt;
 &lt;label:ContentLabel rdf:ID=&quot;label_2&quot;&gt;
 &lt;rdfs:comment&gt;RSACi Ratings&lt;/rdfs:comment&gt;
 &lt;rsac:L&gt;0&lt;/rsac:L&gt;
 &lt;rsac:N&gt;0&lt;/rsac:N&gt;
 &lt;rsac:S&gt;0&lt;/rsac:S&gt;
 &lt;rsac:V&gt;0&lt;/rsac:V&gt;
 &lt;/label:ContentLabel&gt;
 &lt;label:ContentLabel rdf:ID=&quot;label_3&quot;&gt;
 &lt;rdfs:comment&gt;SafeSurf Ratings&lt;/rdfs:comment&gt;
 &lt;ss:ss000&gt;1&lt;/ss:ss000&gt;
 &lt;ss:ss001&gt;1&lt;/ss:ss001&gt;
 &lt;ss:ss002&gt;1&lt;/ss:ss002&gt;
 &lt;ss:ss003&gt;1&lt;/ss:ss003&gt;
 &lt;ss:ss004&gt;1&lt;/ss:ss004&gt;
 &lt;ss:ss005&gt;1&lt;/ss:ss005&gt;
 &lt;ss:ss006&gt;1&lt;/ss:ss006&gt;
 &lt;ss:ss007&gt;1&lt;/ss:ss007&gt;
 &lt;ss:ss008&gt;1&lt;/ss:ss008&gt;
 &lt;ss:ss009&gt;1&lt;/ss:ss009&gt;
 &lt;ss:ss00A&gt;1&lt;/ss:ss00A&gt;
 &lt;/label:ContentLabel&gt;
 &lt;label:ContentLabel rdf:ID=&quot;label_4&quot;&gt;
 &lt;rdfs:comment&gt;WebUrbia Ratings&lt;/rdfs:comment&gt;
 &lt;SFK:S&gt;0&lt;/SFK:S&gt;
 &lt;/label:ContentLabel&gt;</pre>
<p>Once you&#8217;ve created the PICS label and determined your content&#8217;s suitability for younger audiences (basically by filling out the RDF file like a questionnaire), all that&#8217;s left to do is save the file, put it in the root directory of your website, and declare it in the <code>&lt;head&gt;</code> via a link tag:</p>
<pre>
 &lt;link rel=&quot;meta&quot; href=&quot;PICS.rdf&quot; type=&quot;application/rdf+xml&quot; title=&quot;PICS labels&quot; /&gt;</pre>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/web-standards/a-comprehensive-guide-inside-your/">A Comprehensive Guide Inside Your &lt;head&gt;</a></li>
<li><a href="http://sixrevisions.com/content-strategy/5-common-seo-mistakes-with-web-page-titles/">5 Common SEO Mistakes with Web Page Titles</a></li>
<li><a href="http://sixrevisions.com/wordpress/fine-tuning-wordpress-seo/">Fine-Tuning WordPress for SEO</a></li>
<li><em>Related categories</em>: <a href="http://sixrevisions.com/category/web-development/">Web Development</a> and <a href="http://sixrevisions.com/category/resources/">Resources</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://images.sixrevisions.com/authors/alexander_dawson_small.jpg" alt="" width="80" height="80" /><span class="author-bio-text"><strong>Alexander Dawson</strong> is a freelance web designer, author and recreational software developer specializing in web standards, accessibility and UX design. As well as running a business called <strong><a href="http://www.hitechy.com/">HiTechy</a></strong> and writing, he spends time on <strong><a href="http://twitter.com/AlexDawsonUK">Twitter</a></strong>, SitePoint&#8217;s forums and other places, helping those in need.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/5-little-known-web-files-that-can-enhance-your-website/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>The Overblown Excitement Around Modern Web Browsers</title>
		<link>http://sixrevisions.com/web-development/the-overblown-excitement-around-modern-web-browsers/</link>
		<comments>http://sixrevisions.com/web-development/the-overblown-excitement-around-modern-web-browsers/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 10:00:13 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=5234</guid>
		<description><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5234&c=946556556' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5234&c=946556556' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br />In the past few months, there has been a lot of talk around modern web browsers (Firefox 4, Chrome, IE9, etc.). The software application we use to navigate to our favorite websites is seeing tremendous attention, increased competition amongst its vendors, and advancements in its features. Designers are understandably excited about these so-called modern browsers [...]]]></description>
			<content:encoded><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5234&c=1434007368' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5234&c=1434007368' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br /><p><a href="http://sixrevisions.com/web-development/the-overblown-excitement-around-modern-web-browsers/"><img src="http://cdn.sixrevisions.com/0090-01_overblown_excitement_modernbrowsers_thumbnail.jpg" width="550" height="200" alt="The Overblown Excitement Around Modern Web Browsers" /></a></p>
<p>In the past few months, there has been <a href="http://sixrevisions.com/web_design/why-ie9-is-a-web-designers-nightmare/">a lot of talk</a> around modern web browsers (Firefox 4, Chrome, IE9, etc.). The software application we use to navigate to our favorite websites is seeing tremendous attention, increased competition amongst its vendors, and advancements in its features.</p>
<p><span id="more-5234"></span></p>
<p>Designers are understandably excited about these so-called modern browsers because they support HTML5 and CSS3 and have enhanced performance that can render complex graphics animation and processing-intensive scripting. At the same time, we&#8217;re seeing a <a href="http://sixrevisions.com/web-development/farewell-ie6/">big push to move users off older versions of browsers like IE6</a>. All great stuff.</p>
<p><img src="http://cdn.sixrevisions.com/0090-02_firefox_downloads.jpg" width="550" height="250" /></p>
<p>While Internet Explorer still holds a majority of the market, Firefox and Chrome, for instance, have been gaining a lot of ground. For web designers, this means we can <a href="http://sixrevisions.com/css/embracing-and-using-css3-pragmatically/">take advantage of  the new features today</a>. </p>
<p>While this is all exciting for the design and development community, I can&#8217;t help but wonder <em>how much</em> it all really matters.</p>
<p>Does it really matter to the <em>average</em> user and to the typical client that the animated hover states of buttons or dropdown menus are now using CSS instead of JavaScript (or Flash) because of <a href="http://www.w3.org/TR/css3-transitions/">CSS3 transitions</a>? Would they even know the difference between a Flash object versus something that&#8217;s made using JavaScript, CSS3, and HTML5?</p>
<p>In the eyes of the site user and the site owner, the real value of a website will remain the same. <strong>It&#8217;s still all about the content.</strong> Users visit websites in order to gain information, socialize with other users, or to complete a specific task. As long as they can accomplish their goal, they will be happy. That&#8217;s all that matters.</p>
<h3>Focus on What Matters to Users</h3>
<p>While it&#8217;s now an accepted reality that any given website can look differently depending on what browser you use, it&#8217;s not acceptable that a website requires its users to use a modern, future-standards-compliant web browser. A web designer should never have to include a disclaimer with their website saying that it&#8217;s a better site when experienced in Chrome or Firefox or Safari or IE9.</p>
<p><img src="http://cdn.sixrevisions.com/0090-06_add_downloadsafari.jpg" width="550" height="310" /></p>
<p>The information a website displays or the task it allows its users to complete must be accessible in all platforms and in as many scenarios as possible.</p>
<p>Never make browser choice a hindrance to access and the user experience.</p>
<p>Along the same lines, a website&#8217;s interactive features (such as its <a href="http://sixrevisions.com/user-interface/navigation-design-patterns/" title="Guide to Website Navigation Design Patterns">navigation</a> menu) must remain functional across all platforms and interfaces. All of the cool new features in the world won&#8217;t save you from a web design with poor functionality. A website with poor UI design is just as broken as a site that doesn&#8217;t work well in IE5.5. </p>
<p><img src="http://cdn.sixrevisions.com/0090-03_ie6countdown.jpg" width="550" height="250" /></p>
<h3>The Modern Browser</h3>
<p>There&#8217;s no arguing that modern browsers boasting wide support for the newest features in HTML5, JavaScript, and CSS3 put more power in the hands of designers and developers. They allow us to craft better and high-performing user interfaces and innovative designs.</p>
<p>The ability to design a website just for one environment is the utopian scenario; it&#8217;ll make things so much easier. Unfortunately, this is hardly ever a realistic scenario for most of us.</p>
<p>The truth of the matter is that we&#8217;ll always be required to design and debug for the weakest browser.&nbsp;Sometimes this means putting an ideal solution to a problem on hold in favor of one that&#8217;s supported by all browsers. Other times we choose to force weaker browsers into compliance with hacks, script, and overrides. Both courses of action are taken in order to achieve the same goal: to make sure that the core content and functionality of the website remains the same for everyone, regardless of the browser they choose to use.</p>
<p>This may make it seem like users on old systems are holding us back and preventing the <a href="http://sixrevisions.com/web-technology/evolution-of-websites-a-darwinian-tale/" title="Evolution of Websites: A Darwinian Tale">web from evolving</a>. This unavoidable situation certainly doesn&#8217;t help move things along. However, it doesn&#8217;t leave us at a complete loss for taking advantage of what modern browsers have to offer. </p>
<h3>What Users Don&#8217;t Know Can&#8217;t Hurt Them</h3>
<p>While <a href="http://sixrevisions.com/web_design/designing-websites-under-information-technology-restrictions/" title="Designing Websites Under Information Technology Restrictions">we shouldn&#8217;t punish users for having an old, outdated browser</a>, we can certainly reward those who choose to use a more feature-rich browser. How can designers use modern methods to build a beautiful site that boasts rich interaction on modern browsers, without neglecting those who still use outdated browsers?</p>
<p>Let&#8217;s talk about this through a pragmatic example. The CSS3 <code>border-radius</code> property provides a great example of a way to achieve what was once a painstaking task with a simple line of CSS.</p>
<p>But older versions of Internet Explorer don&#8217;t support this feature. That good news is that they simply don&#8217;t render rounded corners &#8212; they ignore the rule &#8212; and fall back to right-angled corners. It&#8217;s harmless and doesn&#8217;t affect the user experience of people who use browsers that don&#8217;t have support for this new CSS property.</p>
<p>If used consistently throughout the site, IE users will never notice their corners are any different; and they probably don&#8217;t care either way.</p>
<p><img src="http://cdn.sixrevisions.com/0090-04_borderradius.png" width="550" height="250" /></p>
<p>This kind of design methodology can be used for many situations. The core concept is that the new techniques and site features aren&#8217;t barriers to those that choose to use older browsers.</p>
<h3>The Reality</h3>
<p>In reality, web designers will always need to take into consideration how their site renders on the weakest browser. And right now, the <em>weakest browser</em> also happens to be a pretty popular one. While Firefox, Safari, Opera, IE9 and Chrome are gaining momentum, it really doesn&#8217;t matter if the number of IE7-IE8 users are still significant enough to merit our concern. Even though better browsers have surpassed IE6 in market share, we can&#8217;t ignore the weakest possible scenario until its usage significantly drops off.</p>
<p><img src="http://cdn.sixrevisions.com/0090-05_browser_statistics.png" width="550" height="250" /></p>
<p>Even if <a href="http://sixrevisions.com/web-development/five-things-ie9-is-actually-doing-right/" title="Five Things IE9 is (Actually) Doing Right">IE9 provides designers with a huge improvement</a> over what&#8217;s available in IE8 and below, we still need to wait for the older versions to be phased out.  The complete adoption of CSS3 and HTML5 is not something that&#8217;s going to happen over the course of a single year.</p>
<h3>The Good News</h3>
<p>Web designers are in a unique professional position in that we have the ability to drive our own future forward at a faster pace by holding web browsers accountable and by promoting the use of better browsers.</p>
<p>The continual improvement of web browsers is wonderful, but it will never hold the true key to our success. What will always drive the achievements of a web designer is their ability to use their skills and experience to present a message and a great experience to the user.</p>
<p>Much like different brands of TVs vary in size, quality, resolution, and features, web browsers, too, have differences between them. However, what really matters and what deserves our attention is what&#8217;s playing on the channels, not the box that presents them.</p>
<p><em>Do you test your designs to ensure that the core functionality of your sites remains the same across all browsers? Are you taking advantage of what CSS3 and HTML5 have to offer yet?</em></p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/tools/10-web-browsers-you-probably-havent-heard-of/">10 Web Browsers You Probably Haven&#8217;t Heard Of</a></li>
<li><a href="http://sixrevisions.com/web_design/why-ie9-is-a-web-designers-nightmare/">Why IE9 is a Web Designer&#8217;s Nightmare</a></li>
<li><a href="http://sixrevisions.com/web-development/the-history-of-web-browsers/">The History of Web Browsers</a></li>
<li><em>Related categories</em>: <a href="http://sixrevisions.com/category/web-development/">Web Development</a> and <a href="http://sixrevisions.com/category/web-standards/">Web Standards</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://images.sixrevisions.com/authors/jason_gross_small.jpg" alt="" width="80" height="80" /><strong>Jason Gross</strong> is a freelance web designer focused on creating clean and user friendly websites. Jason currently lives in Indiana and can be found on Twitter as @<a href="http://twitter.com/JasonAGross">JasonAGross</a> or on the web at <a href="http://jasonagross.com/">his personal blog</a> and portfolio.</p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/the-overblown-excitement-around-modern-web-browsers/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>4 Steps to Building a Portfolio Website Using Drupal</title>
		<link>http://sixrevisions.com/web-development/4-steps-to-building-a-portfolio-website-using-drupal/</link>
		<comments>http://sixrevisions.com/web-development/4-steps-to-building-a-portfolio-website-using-drupal/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 11:10:16 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=5196</guid>
		<description><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5196&c=1944274014' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5196&c=1944274014' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br />If you&#8217;re building a website for a client or yourself that requires a number of images to be presented in a gallery format &#8212; for example, if you&#8217;re a web designer, photographer, sculptor, painter or graphic designer &#8212; Drupal has some out-of-the-box solutions to help you organize and present your information. Professionals who work on [...]]]></description>
			<content:encoded><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5196&c=690695030' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5196&c=690695030' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br /><p><a href="http://sixrevisions.com/web-development/4-steps-to-building-a-portfolio-website-using-drupal/"><img src="http://cdn.sixrevisions.com/0084-15_drupal_image_gallery_thumbnail.jpg" width="550" height="239" alt="4 Steps to Building a Portfolio Website Using Drupal" /></a></p>
<p>If you&#8217;re building a website for a client or yourself that requires a number of images to be presented in a gallery format &#8212; for example, if you&#8217;re a web designer, photographer, sculptor, painter or graphic designer &#8212; Drupal has some out-of-the-box solutions to help you organize and present your information.</p>
<p>Professionals who work on a visual medium often need help presenting (and possibly monetizing) their work, and an online gallery is a great way to do this. Perhaps you could also make the images available as physical products or digital downloads in an online store as an added option.</p>
<p><span id="more-5196"></span></p>
<p>This guide will show you how to develop a portfolio/image gallery website using the popular content management system, <a href="http://sixrevisions.com/web-development/getting-started-with-drupal-a-comprehensive-hands-on-guide/">Drupal</a>.</p>
<h3>Prerequisites</h3>
<p>For this guide, you will need basic working knowledge of Drupal and a clean installation of the Acquia Drupal distribution ready to go.</p>
<p>The following guide might be helpful to read for new Drupal users:</p>
<ul>
<li><a href="http://sixrevisions.com/web-development/getting-started-with-drupal-a-comprehensive-hands-on-guide/">Getting Started with Drupal: A Comprehensive Hands-On Guide</a></li>
</ul>
<p>Here are the Drupal modules we&#8217;ll be using:</p>
<ul>
<li><a href="http://www.acquia.com/downloads">Acquia Drupal distribution</a></li>
<li><a href="http://www.drupal.org/project/cck">Content Construction Kit</a></li>
<li><a href="../Being%20Processed/Monica_S_Flores_Drupal_Image_Gallery/edit/Macintosh%20HD:/¥%09http/---www.drupal.org-project-views">Views</a></li>
<li><a href="http://www.drupal.org/project/simplenews">Simplenews</a></li>
<li>Optional: <a href="http://www.drupal.org/project/ubercart">Ubercart</a> (for e-commerce)</li>
</ul>
<p>Below, you&#8217;ll be instructed to navigate to certain sections of Drupal. You will have to replace <em>http://example.com</em> with your domain name where you have Drupal set up.</p>
<p>Let&#8217;s get started!</p>
<h3>Step 1: Gather the Information to Display</h3>
<p>Use Drupal&#8217;s module manager to enable the following modules:</p>
<ul>
<li>Image (enables you to use images)</li>
<li>Image Gallery (pre-built gallery functionality)</li>
<li>Image Attach (functionality to add images to pages and other types of posts)</li>
<li>Image Import (to batch upload a number of image files)</li>
<li>Lightbox 2 (if desired)</li>
<li>CCK Content (to edit the &quot;Image&quot; content type)</li>
<li>CCK Number (to add new number fields to the &quot;Image&quot; content type)</li>
<li>CCK Text (to add new text fields to the &quot;Image&quot; content type)</li>
</ul>
<p>The typical project to display in a gallery-style website would have specific fields that display only on a per-project basis. These could include things like the image itself, the image&#8217;s title, the creation date, the medium and a description of the image.</p>
<p>Go through the body of work and identify the types of information that are important to display for each item in the gallery. You may be able to skip this step if all you need is the title and a description of the gallery item.</p>
<p>If you need more, then use CCK to add new fields to the &quot;Image&quot; content type by navigating to:</p>
<pre>Admin menu &gt; Content management &gt; Content types &gt; Edit Image &gt; Manage fields</pre>
<p>Direct URL:</p>
<pre>http://example.com/admin/content/node-type/image/fields</pre>
<p><img src="http://cdn.sixrevisions.com/0084-01_add_new_fields.jpg" width="550" height="338" /></p>
<p>This will enable you to collect more information about each image (again, specific to the type of gallery being displayed).</p>
<p>Note that the name of each gallery may be specified in advance by going to:</p>
<pre>Admin menu &gt; Content management &gt; Image galleries &gt; List</pre>
<p>Direct URL:</p>
<pre>http://example.com/admin/content/image/list</pre>
<p> If no gallery has been prepared yet, you can create one by going to:</p>
<pre>Admin menu &gt; Content management &gt; Image galleries &gt; Add Gallery</pre>
<p>Direct URL:</p>
<pre>http://example.com/admin/content/image/add      </pre>
<h3>Step 2: Import the Images</h3>
<p>You may upload images one at a time using the &quot;Add image&quot; functionality:</p>
<pre>Admin &gt; Content management &gt; Create content &gt; Image</pre>
<p>Direct URL:</p>
<pre>http://example.com/node/add/image</pre>
<p>The default version lets you add a title and description. Because we enabled the Image Attach module, you can therefore attach an image to this node.</p>
<p>The following describes how to upload an image from your hard drive, and assign it to its gallery (if it&#8217;s destined to have one).</p>
<p> If you have a number of photos to upload at the same time, you could first put them all in one folder on your desktop or hard drive to make them easier to organize and access.</p>
<p>Next, go to the Image Import settings:</p>
<pre>Admin &gt; Site configuration &gt; Images &gt; Image import</pre>
<p>Direct URL:</p>
<pre>http://example.com/admin/settings/image/image_import</pre>
<p>Follow the instructions to create a &quot;temporary&quot; folder somewhere in your web server. You may need to use FTP to create the folder (especially if you are using shared hosting).</p>
<p><img src="http://cdn.sixrevisions.com/0084-02_image_import.jpg" width="550" height="246" /></p>
<p>Here is the equivalent tmp/image file on the hard drive:</p>
<p><img src="http://cdn.sixrevisions.com/0084-03_image_temp_file.jpg" width="550" height="293" /></p>
<p>FTP all of the images that you want to make available to your Drupal website, putting them in this temporary directory.</p>
<p>Note that you can automatically create new image galleries by creating sub-directories. For example, with the path <em>tmp/image/gallery1/foo.jpg</em>, the image <em>foo.jpg</em> would be part of <em>gallery1</em>.</p>
<p><img src="http://cdn.sixrevisions.com/0084-04_images_uploaded.jpg" width="550" height="304" /></p>
<p>Next, take those images from the temp folder and import them to your Drupal website:</p>
<pre>Admin &gt; Content Management &gt; Image Import</pre>
<p>Direct URL:</p>
<pre>http://example.com/admin/content/image_import</pre>
<p>You can use the <em>Select</em> button at the very top of the list to auto-select all of the images.</p>
<p><img src="http://cdn.sixrevisions.com/0084-05_image_import.jpg" width="550" height="328" /></p>
<p> At this point, specify a new &quot;Title&quot; and &quot;Body.&quot;</p>
<p> After the images have been imported, you&#8217;ll receive a confirmation.</p>
<p><img src="http://cdn.sixrevisions.com/0084-06_image_import_success.jpg" width="550" height="328" /></p>
<p>You can always refer to the content overview section by going to:</p>
<pre>Admin &gt; Content management &gt; Content &gt; List</pre>
<p>Direct URL:</p>
<pre>http://example.com/admin/content/node/overview</pre>
<p>Review which of the most recent items have been moved over, and make sure that any new images are assigned to the correct gallery. For example, I am assigning this particular image to the &quot;Regular Gallery,&quot; which is in the dropdown list right under the title of the image.</p>
<p><img src="http://cdn.sixrevisions.com/0084-07_image_gallery.jpg" width="550" height="338" /></p>
<h3>Step 3: Fill Out the Informational Pages</h3>
<p>Now is your chance to start creating pages about your portfolio website. Typically, you&#8217;ll start with pages such as:</p>
<ul>
<li>Home</li>
<li>Biography</li>
<li>Contact</li>
<li>Privacy policy</li>
<li>Terms and conditions</li>
</ul>
<p>You can create new pages using the &quot;Page Management&quot; tool:</p>
<pre>Admin &gt; Content management &gt; Create content &gt; Page</pre>
<p>Direct URL:</p>
<pre>http://example.com/node/add/page</pre>
<p>You can also specify whether or not the page should appear in the &quot;Primary Links&quot; menu, which is usually found across the top of every page.</p>
<p><img src="http://cdn.sixrevisions.com/0084-08_node_add_page.jpg" width="550" height="352" />
</p>
<h3>Step 4: Using Lightbox</h3>
<p>Lightbox 2 is a very nice way to present photos on a website. It allows you to upload images to the Image Gallery; and then, when a user clicks through the images, the images come up as a modal window with an arrow on either side of the image.</p>
<p>It&#8217;s worth briefly reviewing the available options for Lightbox. For the gallery we&#8217;re working on, we won&#8217;t change the default settings much.</p>
<p>To configure Lightbox, go to:</p>
<pre>Admin &gt; Site configuration &gt; Light box &gt; General</pre>
<p>Direct URL:</p>
<pre>http://example.com/admin/settings/lightbox2/general</pre>
<p>My only change to the default settings is the following:</p>
<pre> Admin &gt; Site configuration &gt; Lightbox &gt; Automatic image handling</pre>
<p>Direct URL:</p>
<pre>http://example.com/admin/settings/lightbox2/automatic</pre>
<p>Set the <em>Automatic handler for image nodes</em> option to be <em>Lightbox grouped.</em> This means that the images will be grouped together but appear one at a time, with &quot;Next&quot; and &quot;Previous&quot; arrows and a dark shadow behind them.</p>
<p><img src="http://cdn.sixrevisions.com/0084-09_automatic.jpg" width="550" height="338" /></p>
<h3>Putting It All Together</h3>
<p>If you&#8217;re using the Image Gallery&#8217;s default functionality, then all of your galleries will appear at:</p>
<pre>http://example.com/image</pre>
<p><img src="http://cdn.sixrevisions.com/0084-10_default_gallery.jpg" width="550" height="338" /></p>
<p>Finally, the uploaded images themselves will appear in Lightbox format if you click on one of the thumbnails in a gallery.</p>
<p><img src="http://cdn.sixrevisions.com/0084-11_regular_gallery_page.jpg" width="550" height="338" /></p>
<p><img src="http://cdn.sixrevisions.com/0084-12_final_display.jpg" width="550" height="331" /></p>
<h3>Bonus: Using Ubercart to Handle Payments</h3>
<p>I use <a href="http://www.drupal.org/project/ubercart">Ubercart</a> to handle user payments. This software is free and open source, and it allows you to sell products on your website. The products could be digital, such as high-resolution JPEGs (like screensavers) or PDF reports that are unlocked upon payment. Or they could be physical, such as signed prints, t-shirts, mugs, calendars or signed photos, which require shipment to the buyer.</p>
<p>Perhaps the site owner wants to sell subscriptions to the website, in which case the product would be a &quot;membership package&quot; that directs the purchaser to a &quot;paid members&quot; section for a fixed amount of time.</p>
<p>You can create a product by going to:</p>
<pre>Admin &gt; Content management &gt; Create content &gt; Product</pre>
<p>Direct URL:</p>
<pre>http://example.com/node/add/product</pre>
<p>If you use Ubercart, you&#8217;ll need a payment gateway such as PayPal or Authorize.net to accept payments. If you choose to accept payments directly on your website, you&#8217;ll also need to purchase an SSL certificate to make data transmission from user to your web server (and back) more secure.</p>
<h3>Examples</h3>
<p>Would you like to see some examples of this deployment in action? Check out the following examples:</p>
<h4><a href="http://www.missinglink.org/image">Missing Link</a></h4>
<p>Images of logos, products and events for a bicycle co-op.</p>
<p><a href="http://www.missinglink.org/image"><img src="http://cdn.sixrevisions.com/0084-13_bicycle_coop.jpg" width="550" height="306" alt="Missing Link" /></a></p>
<h4><a href="http://www.wagnersf.org/image">Wagner Society of Northern California</a></h4>
<p>Images of members of an organization devoted to the famous composer.</p>
<p><a href="http://www.wagnersf.org/image"><img src="http://cdn.sixrevisions.com/0084-14_wagner_society.jpg" width="550" height="306" alt="Wagner Society of Northern California" /></a></p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/tools/20-drupal-modules-to-boost-your-websites-functionality/">20 Drupal Modules to Boost Your Website&#8217;s Functionality</a></li>
<li><a href="http://sixrevisions.com/web_design/31-drupal-content-management-system-cms/">CMS Showcase: 31 Remarkable Drupal Powered Websites</a></li>
<li><a href="http://sixrevisions.com/web-development/22-excellent-tips-for-new-drupal-developers/">22 Excellent Tips for New Drupal Developers</a></li>
<li><em>Related categories</em>: <a href="http://sixrevisions.com/category/web-development/">Web Development</a> and <a href="http://sixrevisions.com/category/wordpress/">WordPress</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://images.sixrevisions.com/authors/monica_s_flores_small.jpg" alt="" width="80" height="80" /><strong>Monica S. Flores</strong> is a web developer through <a href="http://www.10kwebdesign.com">10K Webdesign</a>, which focuses on websites for progressive organizations and membership groups. She founded a member community for success-oriented women <a href="http://www.asuccessfulwoman.com">ASuccessfulWoman</a> and one of the first green business directories by and for women <a href="http://www.greenbusinesswomen.com">GreenBusinessWomen</a>. Contact her through <a href="http://www.twitter.com/monicadear">Twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/4-steps-to-building-a-portfolio-website-using-drupal/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Why Making Web Apps with Rails Is Awesome</title>
		<link>http://sixrevisions.com/web-development/why-making-web-apps-with-rails-is-awesome/</link>
		<comments>http://sixrevisions.com/web-development/why-making-web-apps-with-rails-is-awesome/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 10:00:02 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=5152</guid>
		<description><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5152&c=393680637' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5152&c=393680637' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br />I&#8217;m fairly new to the Ruby on Rails web application framework. I just started learning it about eight months ago when I started developing my web app. I&#8217;ll share a story with you about my experience with Rails, and maybe you&#8217;ll be intrigued enough to try it out for yourself. About My Web App CompVersions [...]]]></description>
			<content:encoded><![CDATA[<a href='http://rss.buysellads.com/click.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5152&c=148532524' target='_blank'><img src='http://rss.buysellads.com/img.php?z=1259902&k=6989dd4b5220d0b14530453de7387991&a=5152&c=148532524' border='0' alt='' /></a><p><a href='http://buysellads.com/buy/sitedetails/pubkey/6989dd4b5220d0b14530453de7387991/zone/1259902' target='_blank'>Advertise here with BSA</a></p><br /><p><a href="http://sixrevisions.com/web-development/why-making-web-apps-with-rails-is-awesome/"><img src="http://cdn.sixrevisions.com/0077-01_rails_pleasant_thumbnail.jpg" width="550" height="200" alt="Why Making Web Apps with Rails Is Awesome" /></a></p>
<p>I&#8217;m fairly new to the <a href="http://rubyonrails.org/" target="_blank">Ruby on Rails</a> web application framework. I just started learning it about eight months ago when I started developing my web app.</p>
<p>I&#8217;ll share a story with you about my experience with Rails, and maybe you&#8217;ll be intrigued enough to try it out for yourself.</p>
<p><span id="more-5152"></span></p>
<h3>About My Web App</h3>
<p><a href="http://www.compversions.com/" target="_blank">CompVersions</a> is a web application that allows designers to upload multiple versions of their designs so that their clients can easily give them a thumbs up or a thumbs down as well as provide comments as necessary.</p>
<p>Here are some images of the app:</p>
<p><img src="http://cdn.sixrevisions.com/0077-02_compversions_ss1.jpg" width="550" height="243" /></p>
<p><img src="http://cdn.sixrevisions.com/0077-03_designer_dashboard.jpg" width="550" height="407" /></p>
<p><img src="http://cdn.sixrevisions.com/0077-04-compversions_ss2.jpg" width="550" height="206" /></p>
<p>The idea for the app comes from my previous experiences working with multiple designers. I have, at various points in the past, worked on projects where I was either project lead or project manager and I had to coordinate designs and feedback from multiple designers and stakeholders.</p>
<p>Getting and forwarding emails with PDF files as attachments and notes specifying the line and page number in the PDF was not cutting it anymore.</p>
<p>I tried the popular project management app, Basecamp (also built on top of Rails, by the way), but it wasn&#8217;t designed for this problem, so it didn&#8217;t work the way I needed it to.</p>
<p>I decided to build my own solution.</p>
<p>A friend of mine (<a href="http://twitter.com/#!/StephenHector" target="_blank">Hector</a>) is on a similar journey (building a web app/site while still learning about the framework), but he is in &quot;Microsoft Land&quot; &#8212; .Net, IIS servers, MSDN &#8212; the whole nine yards.</p>
<p>I was explaining to him why I love Ruby on Rails (RoR for short), and how it completely abstracts the pain of doing things like database queries (although, if you want to work with them, you surely can).</p>
<p>I was trying to find a real-world example of what I meant, but all I found were the regular &quot;build a blog in 15 minutes&quot; tutorials and articles that take you through the entire app development process.</p>
<p>I didn&#8217;t want that, so I started looking through my code and realized that I have the perfect use case to highlight how wonderful it is to use Rails.</p>
<p>He appreciated the example, and understood what I meant by way of a practical, real-world example that&#8217;s actually in use.</p>
<p>I figured I would share to you that example I showed Hector.</p>
<h3>Rails Business Logic</h3>
<p>Rails is known for allowing the developer to focus more on the <strong>business logic</strong> of the application, rather than the technical, behind-the-scenes stuff. </p>
<p>What does that even mean? Here is an example: I was hooking up the email functionality for CompVersions so that once a designer registers, they get an email from the app.</p>
<p>I used a Rails gem (similar to what a plugin is for WordPress or a prewritten class in PHP) called <a href="https://github.com/plataformatec/devise" target="_blank">Devise</a> that makes it relatively easy to get up and running with an authentication solution. It handles users logging in and out: Registering, forgotten passwords, resetting passwords, and so forth. Locking and unlocking an account &#8212; say if your application requires high security where you only allow a certain number of login attempts &#8212; was baked right in, no need to code it. It had a bunch of other awesome features that solve everyday web app development problems.</p>
<p>That&#8217;s right, you get all that functionality from one Rails gem. All done to industry standard design patterns, e.g., when a user forgets their password, a unique link is sent where they can reset their password. </p>
<p>So the first question I was faced with was, <em>How do I format the email?</em> Not, <em>How do I programmatically tackle something like this?</em> or <em>Can I write code to send out emails?</em></p>
<p>Do I say &quot;Hi John!&quot;? But what if there is no first name, how do I fallback to their username (sexyjohn79) and then subsequently their email (sexyjohn79@email.com)?</p>
<p>That&#8217;s business logic.</p>
<h3>Writing the Business Logic</h3>
<p>The registration form for CompVersions has input fields for first name, last name, username and email address. A user can log in with either their username or email address. But I haven&#8217;t decided whether or not I&#8217;m going to let first and last names be required form fields. Most likely, I will, but I wanted to implement it to gracefully handle the situations when a user doesn&#8217;t provide one or the other.</p>
<p>Rails uses what&#8217;s called an MVC structure. <a href="http://blog.elliottheis.com/post/3461828705/explanation-of-mvc-ruby-on-rails">Model, View, Controller</a>. Rails encourages you to put all of your business logic in the <em>Model</em> portion of your app. </p>
<p>In my User model (which is where Rails handles all the business logic related to the users of the app), I created a method called <em>pretty_name</em> that handles the business logic.</p>
<p>This is how my <em>pretty_name</em> method looks:</p>
<pre>def pretty_name
  f_name || username || email
end</pre>
<p>The first line is the definition of the method. The method is what I will invoke to print out the designer&#8217;s name in the email.</p>
<p>The method translated in plain English: &quot;If the value <code>f_name</code> exists, return that value, if not, try <code>username</code>, and if that doesn&#8217;t exist, then try <code>email</code>&quot;. The syntax will be familiar to many of you: <code>||</code> means OR.</p>
<p>The assumption here is that a username must exist because the user will be getting this message through email. Ruby executes left-to-right.</p>
<p>That&#8217;s it. That&#8217;s the business logic.</p>
<h3>Applying the Business Logic to the View</h3>
<p>In my template for the actual email &#8212; the <em>View</em> in MVC &#8212; this is what the first few lines look like:</p>
<pre>
&lt;p&gt;Hi &lt;%= @resource.pretty_name %&gt;!&lt;/p&gt;
&lt;p&gt;Thank you for registering with CompVersions.&lt;/p&gt;</pre>
<p>The template prints <em>&#8216;Hi &#8216;</em> and then it invokes the <em>pretty_name</em> method on the object called <code>@resource</code>. <code>@resource</code> is an object that is used to refer to the current user account and then returns the best value.</p>
<p>So if the person&#8217;s first name is <em>John</em> and it&#8217;s available (i.e., the value is not <code>nil</code>), the email will say <em>&#8216;Hi John&#8217;</em>.</p>
<p>If there is no first name, it will use the username (e.g., <em>&#8216;Hi sexyjohn79&#8242;</em>).</p>
<p>If there is no username, it will say something like <em>&#8216;Hi sexyjohn79@email.com&#8217;</em>, falling back to the user&#8217;s email address.</p>
<h3>The Result</h3>
<p>Here is an example of how the email looks.</p>
<p><img src="http://cdn.sixrevisions.com/0077-05_finished_email.png" width="550" height="170" /></p>
<h3>Some Parting Thoughts</h3>
<p>So is Rails really a walk in the park for non-developers?</p>
<p>I don&#8217;t want you to misinterpret what I&#8217;ve said. I&#8217;m not implying that getting from nothing to a full SaaS web app with no Ruby and/or Rails knowledge is effortless. It&#8217;s not <em>that</em> easy.</p>
<p>But as a general rule when using Rails, the things you will be struggling with (once you get the basics down) are related to how the app will function (business logic) rather than the minutia, set up, coding syntax, and the writing of common web app methods and functions. The focus will be on the logic of the app rather than missing semi-colons, setting up a code project, and errant SQL queries.</p>
<p>Like all web development frameworks, Rails has its quirks. Rails has a set of conventions that make sense and force you to develop a certain way, which makes it especially tricky for those immutably set in their processes.</p>
<p>I hope this helps encourage you to try Rails and to consider it for your next web app project. There are many awesome tutorials out there. For starters, I would recommend <a href="http://railsforzombies.org/" target="_blank">Rails for Zombies</a>.</p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/web-development/getting-started-with-ruby-on-rails-installation/">Getting Started with Ruby on Rails: Installation</a></li>
<li><a href="http://sixrevisions.com/web-development/four-ways-ruby-on-rails-can-help-you/">Four Ways Ruby on Rails Can Help You</a></li>
<li><a href="http://sixrevisions.com/web-development/how-to-create-a-blog-from-scratch-using-ruby-on-rails/">How to Create a Blog from Scratch Using Ruby on Rails</a></li>
<li><em>Related categories</em>: <a href="http://sixrevisions.com/category/web-development/">Web Development</a> and <a href="http://sixrevisions.com/category/web-applications/">Web Applications</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://cdn.sixrevisions.com/authors/marc_gayle_small.jpg" alt="" width="80" height="80" /><strong>Marc Gayle</strong> lives in Jamaica and is bootstrapping <a href="http://compversions.com/" target="_blank">CompVersions</a> with blood, sweat and care. He&#8217;s a proud advisor to <a href="http://kingstonbeta.com/about/">Kingston Beta</a>, an organization set up to help nurture local tech entrepreneurship. He blogs at <a href="http://marcgayle.com/" target="_blank">marcgayle.com</a>. Follow him on Twitter @<a href="http://twitter.com/marcgayle">marcgayle</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/why-making-web-apps-with-rails-is-awesome/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
	</channel>
</rss>

