<?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>Thu, 02 Sep 2010 10:30:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Getting Started with Drupal: A Comprehensive Hands-On Guide</title>
		<link>http://sixrevisions.com/web-development/getting-started-with-drupal-a-comprehensive-hands-on-guide/</link>
		<comments>http://sixrevisions.com/web-development/getting-started-with-drupal-a-comprehensive-hands-on-guide/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 11:30:36 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=3904</guid>
		<description><![CDATA[
Drupal&#160;is a popular open source content management system. With its powerful and advanced features, you can build complex websites with ease, compared to building them from scratch. With the support of a huge community and a big number of available modules, no wonder Drupal is a system you keep hearing about over and over again.
In [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sixrevisions.com/web-development/getting-started-with-drupal-a-comprehensive-hands-on-guide/"><img src="http://images.sixrevisions.com/2010/08/24-01_drupal_guide_ld_img.jpg" width="550" height="200" alt="Getting Started with Drupal: A Comprehensive Hands-On Guide" /></a></p>
<p><a href="http://drupal.org">Drupal</a>&nbsp;is a popular open source content management system. With its powerful and advanced features, you can build complex websites with ease, compared to building them from scratch. With the support of a huge community and a big number of available modules, no wonder Drupal is a system you keep hearing about over and over again.</p>
<p>In this guide, we are going to discover Drupal using a pragmatic approach. We will create a Drupal site with a custom content type and views.</p>
<p><span id="more-3904"></span></p>
<p>Ready? Let&#8217;s dive right into this immensely powerful content management system.</p>
<h3>Objectives</h3>
<p>By the end of this guide, you will:</p>
<ul>
<li>Learn the benefits and disadvantages of using Drupal</li>
<li>Install Drupal</li>
<li>Understand the Drupal back-end</li>
<li>Learn about Drupal modules</li>
<li>Explore the Administer page</li>
<li>Create and publish content</li>
<li>Create custom content types with the Content Construction Kit</li>
<li>Create Views</li>
<li>Create Page view displays</li>
<li>Create Block view displays</li>
<li>Learn about Drupal themes</li>
</ul>
<h3>What We Will Create</h3>
<p>We will set up and develop a basic Drupal website with a job board that visitors can post job openings and projects to. The intention here is to get you started using Drupal by actually creating a Drupal site instead of just reading about it.</p>
<h3>Why Use Drupal?</h3>
<p>It is worth a few moments to discuss the benefits (as well as disadvantages) of using Drupal so that you can determine if it&#8217;s the <a href="http://sixrevisions.com/web-development/how-to-evaluate-what-cms-to-use/" title="How to Evaluate What CMS to Use - sixrevisions.com">right CMS</a> for you.</p>
<h4>Pros of Using Drupal</h4>
<p><strong>Open source:</strong>&nbsp;Yes, Drupal is open source. This means you get all the <a href="http://sixrevisions.com/web-development/convincing-your-clients-to-use-open-platforms/" title="Convincing Your Clients to Use Open Platforms">benefits of using an open platform</a>.</p>
<p><strong>Highly customizable:</strong>&nbsp;The main power of Drupal lies in its flexible nature. You can mould it into any type of content-centered/user-generated site: from a social media site that allows users to submit and vote on content, a forum, a job board, to an image gallery or a service for deploying portfolio sites for designers &#8212; Drupal can get it done (with a little bit of work on your behalf, of course).</p>
<p><strong>Big and intelligent community:</strong> Drupal has one of the biggest and brightest open source community of supporters, users, and developers. This means great modules, quick bug fixes and core updates, great support, and a never-ending supply of amazing documentation and tutorials on the Web.</p>
<p><strong>Modules:</strong> There is a huge amount of modules that extend the capability of Drupal. (We will talk about what  modules are a little bit later.)</p>
<p><strong>Developer-friendly:</strong> As a web developer, you will never feel any limitations while using Drupal. Drupal has been built keeping the needs of developers in mind. Some faults of a few mainstream CMSes is that there is a disproportionate focus on the end-user&#8217;s interface, and with that, means neglecting or focusing very little on the needs of the people who actually develop and deploy the CMS; this isn&#8217;t so with Drupal.</p>
<p><strong>Built-in caching system:</strong>&nbsp;Drupal has built-in support for caching your web pages, which helps reduce the load on your web server, as well as speed up <a href="http://sixrevisions.com/web-development/five-ways-to-speed-up-page-response-times/" title="Five Ways to Speed Up Page Response Times - sixrevisions.com">page response times</a>. This feature eliminates some resource-intensive database queries, aiding your server in performing better.</p>
<p><strong>Decent built-in search capabilities:</strong> Drupal, when compared to many CMSes out there, has a pretty good search feature baked right into its core. It still would not beat a third-party search API like Google Search or Yahoo! Search BOSS, but it&#8217;s still decent enough to use in production.</p>
<h4>Cons of Using Drupal</h4>
<p><strong>Big learning curve:</strong>&nbsp;Yes, it&#8217;s a fact that Drupal is a bit harder to grok than other content management systems out there. I will not suggest you use Drupal if you want a website done in a week the first time you use it. It may take you some months to <em>really</em> understand Drupal, and as much as  a month to be able to deploy a fully custom site the first time around. However, I should also note that you can <strong>deploy a basic site in less than a day&#8217;s worth of work</strong> (and that&#8217;s what we will be doing in this guide).</p>
<p><strong>Complex for non-developers:</strong>&nbsp;Since developers&#8217; needs are prioritized with Drupal, for those that aren&#8217;t very familiar with computing technologies, Drupal might take a while to get used to. This means that professionals that only dabble in web development might not find it easy to develop (or even administer) Drupal sites.</p>
<p><strong>Complex user interface:</strong>&nbsp;Drupal&#8217;s admin interface is a bit difficult to understand; it&#8217;s not as user-friendly as it should be. (That&#8217;s going to change soon, though.)</p>
<h3>Drupal Versus WordPress</h3>
<p>Whenever you talk about Drupal, there is always the inevitable desire to compare it to another leading open source publishing platforms; and that is usually <a href="http://sixrevisions.com/category/wordpress/" title="WordPress category on Six Revisions - sixrevisions.com">WordPress</a>.</p>
<p>And whenever you suggest that WordPress is not a fully featured CMS and that it is just a blogging platform will always generate a heated debate. I am myself a WordPress developer, but it&#8217;s a fact that <strong>sometimes WordPress is just not enough.</strong></p>
<p>Rather than spending time in customizing WordPress, it&#8217;s the right decision to use a more robust CMS if you&#8217;re doing something very complex that involves user registration, authentication, custom permissions, custom user role, highly customized content types for sites such as user-generated social media sites, e-stores, forums, and so forth.</p>
<p>I will not suggest you use Drupal if your client only needs a blog or simple portfolio site with only a few pages and basic content types &#8212; it is quicker and easier to build these sites using WordPress. Using Drupal for these purposes seems like overkill.</p>
<p>Another major argument against using Drupal is its user interface, which is emphatically hard to learn for  people who are not computer-savvy. This is a solid point where WordPress wins.</p>
<h3>Websites That Use Drupal</h3>
<p>For inspiration, here are a few sites that use Drupal.</p>
<h4><a href="http://www.mozilla.com/en-US/">Mozilla</a></h4>
<p>Mozilla, the company behind Firefox, uses Drupal for almost all of its web properties. The official website of Mozilla and Spread Firefox are both built with Drupal.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-02_firefox_homepage.jpg" width="550" height="317" alt="Mozilla" /></p>
<h4><a href="http://www.spreadfirefox.com/">Spread Firefox</a></h4>
<p><img src="http://images.sixrevisions.com/2010/08/24-03_spread_firefox_page.jpg" width="550" height="304" alt="Spread Firefox" /></p>
<h4><a href="http://www.ubuntu.com/">Ubuntu</a></h4>
<p>The official website of Ubuntu, a popular distro of Linux and the operating system that many web servers use, is built on Drupal. Study the enormous nature of the site and the variety of content types and features available on it; you will soon see why Ubuntu chose Drupal.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-04_ubuntu_homepage.jpg" width="550" height="312" alt="Ubuntu" /></p>
<p>Want to see more examples? Check out these other remarkable <a href="http://sixrevisions.com/web_design/31-drupal-content-management-system-cms/" title="CMS Showcase: 31 Remarkable Drupal Powered Websites - sixrevisions.com">Drupal-powered websites</a> if you would like to see more.</p>
<h3>Downloading and Installing Drupal</h3>
<p>We will use the latest stable release of <strong>Drupal 6</strong> for this guide; <a href="http://drupal.org/drupal-6.19">download it here</a>.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-05_drupal_download.jpg" width="550" height="344" alt="Downloading and Installing Drupal" /></p>
<h4>Installing Drupal on XAMPP</h4>
<p>We will install Drupal on our computers, but if you want to install it on a live web server, the process will be the same.</p>
<p>To install Drupal on your local machine, you will need a web server platform like <a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a> or <a href="http://www.wampserver.com/en/">WAMP</a>. Don&#8217;t be intimidated if you haven&#8217;t heard of them; they are really very easy to install and use.</p>
<p>If you don&#8217;t have a local web server platform installed yet, <strong>install XAMPP now.</strong></p>
<p>Below is a user-friendly guide written by Jacob Gube (Founder and Chief Editor of Six Revisions) that will get you up and running with XAMPP in no time flat (the tutorial is for WordPress, so just follow the first part of the tutorial, Steps 1-26 tweaking the steps by keeping in mind you are installing Drupal):</p>
<ul>
<li><a href="http://sixrevisions.com/tutorials/web-development-tutorials/using-xampp-for-local-wordpress-theme-development/">Using XAMPP for Local Development</a></li>
</ul>
<p>This Drupal guide will assume that you are using XAMPP, so you might have to tweak the Drupal installation process if you choose another web server platform package.</p>
<h4>Copy the Drupal Files to XAMPP Directory</h4>
<p>Copy the  Drupal package you downloaded earlier to <code>xampp\htdocs</code>. Extract the files and rename the folder to <code>drupal</code> for easy navigation.</p>
<p>Now go to the <code>xampp\htdocs\drupal\sites\default</code> folder.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-06_drupal_installed_xampp.jpg" width="481" height="307" alt="Copy the Drupal Files to XAMPP Folder" /></p>
<h4>Create settings.php</h4>
<p>Make a copy of the file named <code>default.settings.php</code> and rename it to <code>settings.php</code>.</p>
<p>Make sure that you <strong>don&#8217;t delete default.settings.php</strong> otherwise your Drupal installation will throw you an error; this is one of the <strong>most common mistakes</strong> beginning Drupal developers make.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-07_settingsphp_drupal.jpg" width="428" height="226" alt="Create settings.php" /></p>
<h4>Create a MySQL Database for Drupal</h4>
<p>Drupal uses MySQL to store all the content, so we need to set up a MySQL database for it.</p>
<p>We will use <a href="http://www.phpmyadmin.net/home_page/index.php" title="phpMyAdmin home page - www.phpmyadmin.net">phpMyAdmin</a> &#8212; a browser-based MySQL database administration GUI &#8212; to make this easier (it comes with XAMPP by default).</p>
<p>Navigate to phpMyAdmin using your favorite web browser via the following URL:</p>
<pre>http://localhost/phpmyadmin/</pre>
<p><img src="http://images.sixrevisions.com/2010/08/24-08_phpmyadmin.jpg" width="550" height="220" alt="Create a MySQL Database for Drupal" /></p>
<p>For this example, I named the database <code>db_drupal</code>. You can give the root user permission with all privileges to the <code>db_drupal</code> database so that it can read/write/modify it if you want to save some time, but it&#8217;s <strong>not good practice</strong> to use root in a production environment. It&#8217;s better to create a new dedicated user just for the Drupal database and then only provide the needed permissions; we should do that next.</p>
<h4>Create a New Dedicated MySQL User for the Drupal Database</h4>
<p>For this example, I will create a new MySQL user called <code>drupal_user</code>. For production, it&#8217;s not a bad idea to use a user name that is obscure and random to minimize the event of a bruteforce attack being successful.</p>
<p>Definitely <strong>do not use root</strong> though as that is what most hackers will likely try first because the root MySQL user has super privileges that can access not only your <code>drupal_db</code>, but also your other databases. (In fact, it&#8217;s a good idea to delete and not use root at all and instead create a pseudo-root user, but that is another story for another day).</p>
<p>To create a new MySQL user, go to the home page of phpMyAdmin and then click on the <strong>Privileges</strong> tab.</p>
<p>Now click on <strong>Add a new user</strong> and then fill out all the required information.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-09_drupal_phpmyadmin_adduser.jpg" width="470" height="234" alt="Create a New MySQL User for the Drupal Database" /></p>
<p><img src="http://images.sixrevisions.com/2010/08/24-10_drupal_phpmyadmin_newuser.jpg" width="543" height="236" alt="Create a New MySQL User for the Drupal Database" /></p>
<p>While working on localhost (e.g. deploying Drupal in our computer using XAMPP), you can definitely select all the privileges, but in production, it is strongly recommended that you select only the privileges that <code>drupal_user</code> <strong>really needs.</strong></p>
<p>In this example, I have selected only those privileges I want <code>drupal_user</code> to have.</p>
<ul>
<li>Select</li>
<li>Insert</li>
<li>Update</li>
<li>Delete</li>
<li>File</li>
<li>Create</li>
<li>Alter</li>
<li>Index</li>
<li>Drop</li>
<li>Create Temporary Tables</li>
<li>Lock Tables</li>
</ul>
<p><img src="http://images.sixrevisions.com/2010/08/24-11_drupal_phpmyadmin_globalpriviledges.jpg" width="550" height="338" alt="Create a New MySQL User for the Drupal Database" /></p>
<p>At this point, we are done with phpMyAdmin and any MySQL-related tasks.</p>
<h4>Install Drupal Using the Installation Wizard</h4>
<p>Now let&#8217;s point our browser to the following URL:</p>
<pre>http://localhost/drupal</pre>
<p>If you renamed the folder in <code>htdocs</code> to <code>drupal</code>, this should work. If not, replace <code>drupal</code> in the URL string above with whatever folder name you used for the Drupal files.</p>
<p>When you navigate to the URL above, you will see the installation wizard of Drupal. You can select the language you want for the Drupal interface in the first page. Note that this option can be changed later from the Drupal back-end. We will continue with English, so let&#8217;s choose &quot;Install Drupal in English&quot;.</p>
<p>In the next screen, Drupal will verify whether your web server (In this case localhost) is able to run Drupal or not. If your web server is missing server applications that are essential to Drupal functioning on it, then it will give an error message.</p>
<p>Next, you will see the <strong>Database configuration</strong> screen. Here you will have to give all the information you used in creating <code>drupal_db</code> and <code>drupal_user</code>.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-12_drupal_database_configuration.jpg" width="550" height="370" alt="Install Drupal Using the Installation Wizard" /></p>
<p>Still in the Database configuration screen, click on <strong>Advanced options</strong> and you will see an option named <strong>Table prefix</strong> which will append all Drupal MySQL tables with a string (e.g. <strong>blackjack_</strong>drupal_table). I recommend you use some random table prefix that will only make sense to you; this is a precautionary security measure to reduce the threat of a SQL injection attack on your databases.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-13_drupal_db_prefix.jpg" width="368" height="279" alt="Install Drupal Using the Installation Wizard" /></p>
<p>If you have done everything correctly then you will successfully move to the next screen where Drupal will install some necessary modules. You will be automatically directed to the <strong>Configure site</strong> screen after this is done.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-14_drupal_configuresite.jpg" width="550" height="332" alt="Install Drupal Using the Installation Wizard" /></p>
<p>Options on the Configure site screen are mostly self-explanatory, so I will let you fill out the needed information yourself.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-15_drupal_timezone.jpg" width="516" height="242" alt="Install Drupal Using the Installation Wizard" /></p>
<h4>Clean URLs Option</h4>
<p>One thing many might not be familiar with is the <strong>Clean URLs</strong> option under&nbsp;Server settings. By default, the links generated by Drupal are unintuitive like <code>http://localhost/index.php?q=21</code>.</p>
<p>With Clean URLs enabled, your URLs will look nicer and will be more <a href="http://sixrevisions.com/web-development/10-seo-tips-to-remember-when-building-your-site/" title="10 SEO Tips to Remember When Building Your Site - sixrevisions.com">SEO-friendly</a>, such as <code>http://localhost/events</code>.</p>
<p>The Clean URLs option requires <a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html" title="Apache module mod_rewrite - httpd.apache.org">mod_rewrite</a> (an Apache module) to be installed in your web server &#8212; and it probably is installed already.</p>
<p>If mod_rewrite isn&#8217;t installed or running (highly unlikely if you&#8217;re on an Apache server), then Drupal will give you an error and you will not be able to use the Clean URLs option. It&#8217;s fine and won&#8217;t prevent you from deploying your site, but it really is advised for the purposes stated above that you get Clean URLs working as soon as you can.</p>
<h4>Installation Complete</h4>
<p>If you have followed along correctly, then you will get the following screen.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-16_drupal_install_complete.jpg" width="550" height="277" alt="Installation Complete" /></p>
<p><strong>Don&#8217;t worry about the error</strong> being shown, as it is because if you are doing this on localhost using XAMPP, it just means we didn&#8217;t set up a mailserver, and it will not permit Drupal to send emails to administrators.</p>
<p>When you are on an actual server, these things should already be set up for you (unless you built your own web server and don&#8217;t have it configured).</p>
<h4>Log Into Drupal&#8217;s Back-End</h4>
<p>Let&#8217;s move to the back-end of Drupal. After navigating to your new website at <code>http://localhost/drupal</code>, you will see the following page.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-17_drupal_welcome.jpg" width="550" height="279" alt="Log Into Drupal's Back-End" /></p>
<p>Log in by clicking on Administer.</p>
<p>Now that you have installed Drupal, let&#8217;s move on by talking about the concept of modules.</p>
<h3>What Are Drupal Modules?</h3>
<p><strong>Modules</strong> are extensions of Drupal that enhance it with additional functionality.</p>
<p>For example, Drupal comes with a pre-installed module called &quot;System&quot;.&nbsp;In fact, Drupal itself is a group of <strong>core modules</strong> (which are modules developed and maintained by the Drupal project). The System module is one of them, and Drupal can&#8217;t work without it.</p>
<h4>How to Add Drupal Modules</h4>
<p>Aside from the core modules that come with your Drupal installation, you can download <strong>add-on modules</strong> from&nbsp;<a href="http://drupal.org/project/Modules" title="Drupal Modules">Drupal&#8217;s official repository</a>. You can also make your own modules as you advance through your Drupal development skills using <a href="http://api.drupal.org/api/group/hooks/6" title="Hooks - Drupal API - api.drupal.org">Drupal&#8217;s module API</a>.</p>
<p>After finding a module you want to install, <strong>download it</strong> to your computer.</p>
<p>You will have to move the extracted module to the following location:</p>
<pre>drupal\sites\all\modules</pre>
<p>By default, there is <strong>no folder for modules</strong>, so you will have to create one manually; create a folder called <code>modules</code> inside <code>drupal\sites\all</code>.</p>
<p>It&#8217;s good practice to keep your downloaded modules separate from  ones that come with the default Drupal distribution so <strong>don&#8217;t put add-on modules in&nbsp;<code>drupal\modules</code>.</strong></p>
<p><img src="http://images.sixrevisions.com/2010/08/24-18_drupal_modules.jpg" width="550" height="230" /></p>
<h3>Installing an Add-on Module: The CCK Module</h3>
<p>The <strong>CCK (Content Construction Kit)</strong> add-on module is a popular Drupal module that allows you to add different types of custom content. Let&#8217;s practice adding modules to our Drupal sites by installing CCK, which we will use later on in this guide.</p>
<p>First, <a href="http://drupal.org/project/cck" title="Content Construction Kit (CCK) - drupal.org">download the appropriate version of CCK</a> and then place it inside <code>drupal\sites\all\modules</code>.</p>
<p>After downloading and placing CCK inside <code>drupal\sites\all\modules</code>, you will need to enable it from Drupal&#8217;s administration interface. Go to&nbsp;<strong>Site Building&gt; Modules</strong>&nbsp;and there you will see CCK. Enable it. You can enable different sub-modules of CCK if you need them (and we will do so later on in this guide when we start using CCK).</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-19_drupal_cck.jpg" width="550" height="384" /></p>
<p>Congratulations! You have just installed a Drupal module.</p>
<h3>Drupal&#8217;s Administer Page: A Crash Course</h3>
<p>When you are in the Drupal Administer page, you will see two ways in which you can view it:</p>
<ol>
<li>By task</li>
<li>By module</li>
</ol>
<p>If you are in the <strong>By task</strong> view, you will see the page organized by administration tasks.</p>
<p>For example, in the By task view, under Content Management, you will see all the tasks associated in dealing with your content, such as Content which enables you to view, edit, and delete content as well as Post settings, which controls the behavior and display of your content.</p>
<p>Each task will have a short description below it to help you figure out what it is for.</p>
<p>If you are in the <strong>By module</strong> view, links are organized by modules.</p>
<p>For example, in the By module view, under the System module, you will see Configure permissions, Clean URLs, Modules, etc.</p>
<h4>Learning Curve of the Back-end UI</h4>
<p>The administration interface of Drupal <strong>takes a lot of time</strong> to get used to, but there are plenty of add-on modules that you can download and install to make the administration UI easier to work with.</p>
<p>I suggest installing the <a href="http://drupal.org/project/admin_menu">Administration menu module</a>, which adds a navigation bar at the top of all your web pages when you are logged in as a site administrator.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-20_drupal_admin_dropdown.jpg" width="550" height="283" alt="Drupal's Administer Page: A Crash Course" /></p>
<h3>Setting Up Your Home Page</h3>
<p>It&#8217;s time for some action. Let&#8217;s build our home page. To do this, we will create our very first content. Our first post will be of a Page content type. To start, go to <strong>Content Management &gt; Create Content &gt; Page</strong>.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-21_drupal_homepage.jpg" width="550" height="235" alt="Setting Up Your Home Page" /></p>
<h4>Menu settings</h4>
<p>The default Drupal theme has a navigation menu in the top-right corner. The options under Menu settings will decide whether to include the home page link to that navigation or not.</p>
<p>If you would like to add a Home link to your primary navigation menu, select <em>&lt;Primary Links&gt;</em> under the Parent item dropdown menu.</p>
<p>The <strong>Weight</strong> option allows you to organize your links in sequence. A link with a lower weight will float to the top of the list.</p>
<p>So if your Home link is 0 and your About link is 5, for example, then your Home link will show up first because it is less heavy.</p>
<p>If your Home link has a Weight option of 0 and your About link also has a weight of 0, then Drupal will make a judgment of organizing your links in alphabetical order, such that since their weight is equal, About will show up first.</p>
<p>In our case, leave the Weight option for your Home link unchanged (its value by default is 0).</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-22_menusettings_drupal.jpg" width="550" height="255" alt="Setting Up Your Home Page" /></p>
<h4>Input format</h4>
<p>The options under Input format enable you to choose how you want to enter in your content.</p>
<p><strong>Filtered HTML</strong> limits the amount of HTML you can use, filtering out dangerous HTML elements like <code>&lt;script&gt;</code>, which can be exploited for a client-side-based site attack.</p>
<p>Use Filtered HTML if you have site administrators that are not familiar with HTML.</p>
<p>For developers, use the <strong>Full HTML</strong> option. This input format option assumes that you are well aware of HTML.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-23_fullhtml_drupal.jpg" width="550" height="226" alt="Input format" /></p>
<h4>Revision information</h4>
<p>If the content of your Drupal website is being maintained by a single person, then this feature may not be useful (unless you&#8217;re very forgetful).</p>
<p>If you work with a team of different content creators and you want to save different versions, log changes to content, and make notes of revisions in your content &#8212; the Revision information optionst can be handy.</p>
<p>Also, with the <em>Create new revision</em> option checked, it will keep the older version in case you want to restore back to it later.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-24_logmsg_drupal.jpg" width="550" height="193" alt="Revision information" /></p>
<h4>Comments settings</h4>
<p>These settings allow you to enable or disable the ability of people visiting your site to make comments on your content. We probably don&#8217;t want comments on our home page, so I&#8217;ve chosen the <em>Disabled</em> option.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-25_commentsettings_drupal.jpg" width="550" height="123" alt="Comments settings" /></p>
<h4>Authoring information</h4>
<p>You can change the name of author and time of publishing under the Authoring information options.</p>
<p>You <strong>don&#8217;t need to fill out</strong> these options all the time as Drupal will automatically fill it in if you don&#8217;t change the options.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-26_authoring_info_drupal.jpg" width="550" height="182" alt="Authoring information" /></p>
<h4>Publishing options</h4>
<p>This set of options dictates publishing settings of your content.</p>
<ul>
<li><em>Published </em>shows the status of the content. Uncheck it if you want to un-publish something.</li>
<li><em>Promoted to front page</em> will display the page in the front page. Uncheck it if you don&#8217;t want the content to be published in your home page.</li>
<li><em>Sticky at top of lists</em> will keep your content at the top of the front page and any content listings. </li>
</ul>
<p><img src="http://images.sixrevisions.com/2010/08/24-27_publishing_options_drupal.jpg" width="550" height="153" alt="Authoring information" /></p>
<h4>Check Out the Front Page</h4>
<p>Here is our home page now; it is still simple, but don&#8217;t worry, we will be adding stuff next.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-28_drupal_frontend.jpg" width="550" height="266" alt="Check Out the Front Page" /></p>
<h3>What We&#8217;ll Do Next</h3>
<p>Now, we will create a <strong>job board</strong> for user-generated content.</p>
<p>While creating this part of our website, we will be working with custom content types, views and other Drupal features.</p>
<h3>What is a Drupal Node?</h3>
<p>Before we go any further, we should discuss one of the most befuddling topics for Drupal beginners &#8212; and that is the concept of nodes.</p>
<p>A <strong>node</strong> is the elementary unit of Drupal&#8217;s content architecture. In simple words, if we pretend that a Drupal website is a house, the nodes are the bricks of that house. Each bit of content in Drupal is referred to as a node &#8212; whether it&#8217;s a comment, a page, a forum post, a story, and so forth.</p>
<p>Keep in mind that the Admin and User profile back-end pages are not referred to as nodes as they are created by the system and not by its users.</p>
<p>The node is a <strong>very important concept</strong> to familiarize yourself with if you want to build complex websites with Drupal. While the concept of nodes is confusing for Drupal beginners, it&#8217;s the core foundation that gives Drupal developers ultimate flexibility and customization options.</p>
<p>To give you an example, let us navigate to the home page content we created earlier. If you take a look at the address bar of your web browser, you will have something like this (note that you might not see this if you have Clean URLs enabled).</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-29_drupalnodes.jpg" width="369" height="118" alt="What is a Drupal Node?" /></p>
<p>You can see the word &quot;node&quot; in the URL, which is an indication that the page you are looking at is a node.</p>
<h3>Creating a Custom Content Type with Drupal</h3>
<p>Custom content types are a great way to customize your Drupal site. For each content type, you can control how it is displayed, the user permissions, give it custom attributes &#8212; the possibilities are excitingly endless.</p>
<h4>Create a &quot;Jobs&quot; content type</h4>
<p>For this example, we will create a job board in our website; a place where users can post job vacancies and projects, sort of like a mini-Craigslist.</p>
<p>We will have the following fields for each job posting:</p>
<ul>
<li>Job Title</li>
<li>Job Description</li>
<li>Department &#8212; which will be a drop-down menu</li>
<li>Experience &#8212; A text field</li>
<li>Salary &#8212; A text field</li>
</ul>
<p>Working with custom content types in Drupal is a piece of cake. First, navigate to <strong>Administer &gt; Content types &gt; Add content type</strong>.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-30_custom_content_type.jpg" width="550" height="427" /></p>
<p>Most of the options in the <em>Add content type</em> interface have descriptions. The one I think is essential to talk about is the Type option. <strong>Type</strong> is the machine-readable name of your custom content type that is used in more advanced Drupal development.</p>
<p>For this example, the Type we will assign job posts will be <code>job</code>. This will be important in the future when you become a Drupal ninja master and want to create more complex customizations to your site, such as in the case where you want to create a custom page template for job postings, which you can do by creating a template file called <code>node-job.tpl.php</code> (this topic is out of the scope of this guide).</p>
<p>To move forward, fill out the <em>Title</em>, <em>Type</em>, and <em>Description</em> fields.</p>
<h4>Submission form settings</h4>
<p>In this set of options, you will have the ability to create and set up a web form for accepting a job posting; this is what job posters will see when they want to submit information about a job.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-31_submission_form_setting.jpg" width="550" height="347" alt="Submission form settings" /></p>
<h4>Workflow settings</h4>
<p>Under the Workflow settings, you will find some basic publishing options for a Job posting that is submitted. If you want the job post to be published without first getting reviewed by a Drupal administrator, then check the Publish box.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-32_workflow_settings.jpg" width="522" height="227" alt="Workflow settings" /></p>
<p>Continue to set up your workflow settings to move forward. For example, under the <em>Comments settings</em>, you can change different settings for comments in the job posts. If you want site visitors to be able to comment on a job post, turn it off. If you don&#8217;t, disable comments.</p>
<h3>Create the Jobs Content Type</h3>
<p>Time to hit Save to create our first content type. If you followed all the instructions exactly, then you should see <em>Jobs</em> in your Content types list (along with default Drupal content types like Page, Story, etc.)</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-33_comment_settings.jpg" width="550" height="319" alt="Create the Jobs content type" /></p>
<h3>Customizing Content Types with the Content Construction Kit</h3>
<p>So now we have our very own Drupal custom content type. What we will do next is to customize the Jobs submission web form with the help of a very helpful Drupal module: CCK.</p>
<p><a href="http://drupal.org/project/cck">CCK</a> is usually the first module most seasoned Drupal developers install on a new Drupal site. Because this add-on module is so important, <a href="http://drupal.org/node/725382">Drupal 7</a> will include it as a core module so that you don&#8217;t have to download it manually anymore.</p>
<p>You should have already installed CCK at this point because of our exploration of Drupal modules in the beginning of this guide.</p>
<h4>Enable Some CCK Sub-Modules</h4>
<p>First step in our customization process is to go to <strong>Administer &gt; Site Building &gt; Modules</strong>.</p>
<p>Under <em>CCK</em>, you will find a list of CCK sub-modules; some of them are already enabled (by default), and some of them aren&#8217;t. Why is this so? Drupal is extremely modular, giving you the choice to use only the things you need. Drupal module developers are encouraged to compartmentalize their feature set, which in turn results in less bulky and more resource-conscious add-on modules.</p>
<p>As a Drupal administrator, you should only enable the modules and sub-modules that you are actually using on your site.</p>
<p>For our job posting web form, let us enable the CCK sub-modules we need.</p>
<p>Here are all the sub-modules we need to enable for our Job post web form:</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-34_cck01.jpg" width="550" height="445" alt="Enable Some CCK Sub-Modules" /></p>
<p>Since we need the user of the form to be able to enter float values (like years of experience needed by the job applicant to qualify for the job), then we will have to enable the Number sub-module.</p>
<p>We also need to enable the Option Widgets, which allows us to add different kinds of web form input fields like checkboxes, radio groups, and so forth.</p>
<p>Each of these sub-modules depends upon the parent module called Content &#8212; and you can&#8217;t enable a sub-module without first enabling Content.</p>
<h4>Add the Form Fields</h4>
<p>Finished enabling the CCK sub-modules? Great, now let&#8217;s start modifying our job post submission form.</p>
<p>Go to <strong>Administer &gt; Content Management &gt; Content Types</strong>, then in the Jobs content type, under <em>Operations</em>, and click <strong>manage fields</strong> &#8212; this is where we will add custom fields.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-35_cck02.jpg" width="550" height="203" /></p>
<p>First, I am going to add the <strong>Department</strong> field, which will permit the job poster to select an option of job types (e.g. Development, Finance, User Interface, IT, Marketing) from a dropdown list.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-36_cck03.jpg" width="550" height="174" /></p>
<p>After hitting the Save button, you will be forwarded to a page where you can write allowed values and where you can fine-tune the Department field.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-37_cck04.jpg" width="550" height="259" /></p>
<p><img src="http://images.sixrevisions.com/2010/08/24-38_cck05.jpg" width="550" height="382" /></p>
<p>The next field is the <strong>Experience</strong> field, which is going to allow the input of floating point values (e.g. 3.5 years of experience).</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-39_cck06.jpg" width="550" height="79" /></p>
<p>Under <em>Help text</em>, add instructions on how to fill out the Experience field so that the job poster can get a better understanding of how to input the values correctly.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-40_cck07.jpg" width="550" height="190" /></p>
<p>Under <em>Global settings</em>, you can specify valid input values. For example, under the Minimum option, if you specify 2.3, then a job poster typing 1.4 will see an error.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-41_cck08.jpg" width="550" height="399" /></p>
<p>Our last field for our Jobs content type is the <strong>Salary</strong> field. It can take in an Integer value such as 5000 USD.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-42_cck09.jpg" width="550" height="74" /></p>
<p>Under Global settings, specify 0 as the Minimum because you don&#8217;t want people entering negative integers like -1200. (Why not specify something greater than 0? Because entering 0 for the salary might mean that it&#8217;s an unpaid job). </p>
<p>After creating all the fields, you should have something like the following image in your Fields view for the Jobs content type.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-43_cck10.jpg" width="550" height="303" /></p>
<p>Click and drag on the cross-arrows icon on the left side of each field to reorganize their order.</p>
<h4>Create Job Postings</h4>
<p>Before moving forward, create some sample job postings by going to <strong>Create Content &gt; Jobs</strong>. Create a few sample job postings because <strong>we will need this data</strong> for the next section of this guide.</p>
<h4>CCK is Really Powerful</h4>
<p>While we have worked with some basic field types here, CCK also allows you very robust ways of taking in content. For example, you can use the <a href="http://drupal.org/project/imagefield">ImageField add-on module</a> to allow people to post an image (maybe you want the job poster to have the ability to show pictures of the office space where the job is located).</p>
<p>Check out this <a href="http://drupal.org/taxonomy/term/88" title="Content Construction Kit (CCK) modules - drupal.org">list of available CCK fields</a> if you need custom input fields.</p>
<h3>Using the Views Module to Populate the Job Posting Page</h3>
<p>Though you can use queries to call out content from your database, that&#8217;s a really a complex process even with <a href="http://api.drupal.org/" title="API reference Drupal API - api.drupal.org">Drupal&#8217;s powerful API</a>.</p>
<p>To help populate the data of a Job post page, we will use <strong>Views</strong>, which is a module that allows you to call content from your database without writing a single bit of code.</p>
<p>In simple words, it is a user interface for MySQL queries. Views is a very powerful module and sometimes it can be a bit difficult to understand for new users. The best way to learn about Views is to play with it; and that&#8217;s what we will do next.</p>
<h4>Install the Views Module</h4>
<p>Before we begin, we need to install Views. After&nbsp;<a href="http://drupal.org/project/views">downloading</a>, installing and enabling Views, you can access it under Site  Building.</p>
<h4>Creating the First View</h4>
<p>Any listing of data provided by Views is referred as a view.</p>
<p>We will create a view that will show all the available job postings on one page. You can also create attachments, blocks and customizable RSS feeds with Views, but we will keep it simple.</p>
<p>Go to <strong>Site Building &gt; Views &gt; Add</strong> and type out the fields as shown in following image.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-44_views_1.jpg" width="550" height="511" /></p>
<p>Drupal will show you the actual user interface that is used to create views. Don&#8217;t feel overwhelmed, we will talk about the user interface shortly.</p>
<h4>What is a Display?</h4>
<p>To start customizing our Jobs view, we have to understand what a display is. Displays present our data in different styles. A view can have multiple displays.</p>
<p>In our Jobs view, we will create 2 displays: a page and a block. We will revisit this topic shortly.</p>
<h4>Add Fields to the View</h4>
<p>Let us add some fields to our view. Fields are the content that we want to show on our page. Click on the plus (+) icon under Fields to add fields to your view.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-45_views_2.jpg" width="550" height="440" /></p>
<p>We will show the Job Title, Job Posting Date, Department, Salary and Experience that is supplied through our Job CCK web form.</p>
<p>We will have to select the following fields from the additional box opened at the end of page when we clicked on the plus (+) icon. These are the fields we are interested in:</p>
<ul>
<li>Node: Title</li>
<li>Node: Post Date</li>
<li>Content: Department (field_department)</li>
<li>Content: Salary (field_salary)</li>
<li>Content: Experience (field_experience)</li>
</ul>
<p><img src="http://images.sixrevisions.com/2010/08/24-46_views_3.jpg" width="550" height="357" /></p>
<p>After checking the appropriate boxes, make sure that you hit the Add button so that you can configure each field separately.</p>
<p>After hitting the Add button, the first option will be to customize <strong>Content: Department (field_department).</strong> Leave everything as it is except just change the Format option to <em>Plain Text</em> (from Default), and then click Update.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-47_views_4.jpg" width="488" height="490" /></p>
<p>After hitting Update, the next field you will customize is <strong>Content: Experience (field_experience).</strong> Don&#8217;t change the default values; just hit Update. Do the same thing for the <strong>Salary</strong> field.</p>
<p>After finalizing your custom fields, the next option is to change the field <strong>Node: Post Date.</strong> You just have to change the <strong>Date Format</strong> to <em>Time ago</em> so it shows the number of days the job post has been up (e.g. &quot;12 days ago&quot;).</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-48_views_5.jpg" width="404" height="237" /></p>
<p>The next and final field to customize is <strong>Node: Title.</strong> We just have to check the box that it should be linked to.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-49_views_6.jpg" width="304" height="237" /></p>
<h4>Live Preview Tab</h4>
<p>You can use the Live preview tab to see how your view looks like as you make customizations to it.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-50_views_7.jpg" width="550" height="338" /></p>
<h4>Basic Settings</h4>
<p>Now we will set up our basic settings.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-51_views_7_1.jpg" width="394" height="435" /></p>
<p>Let us choose <strong>Unformatted</strong> for <em>Style</em>, and display the data in a Table format. Once that&#8217;s done, click Update.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-52_views_8.jpg" width="395" height="540" /></p>
<p>We want to display all the job postings in one page, instead of being split up in multiple pages, so we will select <strong>No</strong> for <em>Use pager</em>. Again, click Update once you&#8217;re done.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-53_views_9.jpg" width="395" height="564" /></p>
<p>After all these customizations, you can see that our Live Preview tab looks nicer than the initial view, but we are not done yet.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-54_views_9_1.jpg" width="550" height="120" /></p>
<h4>View Filters</h4>
<p>At this point, our view is displaying <strong>all of our content</strong>, even ones that aren&#8217;t job postings. We only want to show jobs on our Jobs page.</p>
<p>We will select two filters so that we only show only published job nodes:</p>
<ul>
<li>Node: Published</li>
<li>Node: Type</li>
</ul>
<p>Click on that plus (+) icon beside Filters, select the <em>Node: Published</em> and <em>Node: Type</em> options, and then click Add.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-55_views_9_2.jpg" width="550" height="362" /></p>
<p>Then configure the <em>Node: Published</em> filter so that the criteria is such that <strong>Published</strong> is set to <em>Yes</em>, which will omit all jobs that are not yet published from our Jobs view.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-56_views_9_3.jpg" width="384" height="191" /></p>
<p>Configure the <em>Node: Type filter</em> so that only nodes that is a Jobs content type is shown.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-57_views_9_4.jpg" width="403" height="216" /></p>
<p>Use the Live Preview tab to check your filters.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-58_views_9_5.jpg" width="550" height="90" /></p>
<h4>Sorting Criteria</h4>
<p>If we look at the Live Preview, you will notice that nodes are sorted from oldest to newest. It would be nice to show the latest jobs first.</p>
<p>In order to sort jobs such that the newest jobs are displayed at the top, we will apply a sorting criteria. Under <em>Add sort criteria</em>, select <strong>Node: Post Date</strong> from the box, which will then open when you click the Add button.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-59_views_9_6.jpg" width="533" height="394" /></p>
<p>Under Sort order, choose <strong>Descending.</strong></p>
<p><img src="http://images.sixrevisions.com/2010/08/24-60_views_9_7.jpg" width="452" height="343" /></p>
<p>Check the Live Preview tab again; it will now show you the latest jobs first.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-64_views_9_8.jpg" width="550" height="383" /></p>
<h4>Rearrange the Fields</h4>
<p>There&#8217;s one other thing we can do to improve our view: rearranging the order of the fields. It makes sense that the Title should be first, and the post date second, and so forth. You can do so by clicking the up/down button on fields tab.</p>
<p>Check out the Live Preview tab; our view is looking nice.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-61_views_9_9.jpg" width="550" height="89" /></p>
<p>We are done creating our view. Next, we just have to create 2 displays for our view.</p>
<h3>Creating a Page Display</h3>
<p>On the left of your Views page, select <em>Page</em> and then click <em>Add display</em>. After clicking it, you will be automatically directed to the Page settings page.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-62_views_10_1.png" width="550" height="506" /></p>
<p>We just have to add a path to our page and a place to show the link to our display. I have put the value of 2 for <em>Weight</em> so that it appears after the Home navigation link.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-63_views_10_2.jpg" width="550" height="451" /></p>
<p>After filling the values, don&#8217;t forget to click on <em>Save the Display</em>.</p>
<p>Now, you can see the link (called <em>Available Positions</em>) to our page display in the main navigation.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-65_views_10_4.jpg" width="550" height="265" /></p>
<h3>Creating a Block Display</h3>
<p><strong>Blocks</strong> are used to show information in various regions of a Drupal website. They are widgets that can display things like current events, the top 5 most popular posts, and so on in regions like the left sidebar, the header, the footer, and more.</p>
<p>You can place blocks in the header, footer and left and right sidebars in Drupal&#8217;s default theme. You can manage your blocks by going to Administer &gt; Site  Building &gt; Blocks.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-66_views_10_5.jpg" width="550" height="274" /></p>
<p>Now we are going to create our second display for the Jobs view so that we can show the latest job postings in the right sidebar.</p>
<p>Go to <strong>Administer &gt; Site Building &gt; Views</strong> and choose <em>edit Jobs view</em>. On the left, select <em>Block</em> and click <em>Add display</em> as you did before.</p>
<h4>Click Override</h4>
<p>We will  remove 3  fields in our block display so that the block fits in the sidebar and so that it isn&#8217;t so overwhelming with information. Click on each field under the Fields tab. Before removing a field, make sure that you click the <strong>Override button</strong>, otherwise it will change the default view and will also affect the page display we constructed earlier.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-68_views_10_7_add.jpg" width="550" height="409" /></p>
<p>You can also change the name of the block, which will be shown in Administer pages.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-67_views_10_7.jpg" width="550" height="206" /></p>
<h4>Add the Block to the Sidebar</h4>
<p>Now let&#8217;s move to Blocks and add our generated block display to right sidebar.</p>
<p>Go to <strong>Administer &gt; Site building</strong> and click on <em>Blocks</em>.</p>
<p>Go to the <em>Disabled</em> section, find the block display we just created, and select <strong>right sidebar</strong> under <em>Region</em>.</p>
<p>Make sure that you hit <em>Save</em> to perform the change.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-69_views_10_7_1.jpg" width="520" height="414" /></p>
<p>Awesome, and with that &#8212; we&#8217;re done with our job board!</p>
<h3>Drupal Themes</h3>
<p>The final subject we will discuss in this guide are themes. Themes are used to change the visual appearance of a Drupal website.</p>
<p>There are many themes available on the Web. Here is the <a href="http://drupal.org/project/Themes">Themes list</a> on Drupal&#8217;s official site.</p>
<p>To install a theme, you have to download it and then copy it in your <code>drupal/sites/all/themes</code> directory. If there isn&#8217;t a <code>themes</code> directory, then you can create one and then place your theme files inside it.</p>
<p>You can activate or deactivate themes by going to <strong>Administer &gt; Site Building &gt; Themes</strong>.</p>
<p>There are 5 themes that comes bundled with the Drupal core installation. I have just activated the Marvin theme to give my test site a clean, new look.</p>
<p><img src="http://images.sixrevisions.com/2010/08/24-70_views_10_8.jpg" width="550" height="312" alt="Drupal Themes" /></p>
<p>Make sure that you choose the theme default so that it can be applied to your Drupal site.</p>
<h3>Wrapping Up</h3>
<p>Drupal is big. I have done my best to cover the most confusing and difficult subjects that beginners often struggle with; however, this guide merely <em>scratches the surface</em> of the true power of Drupal. I encourage you to explore the <a href="http://drupal.org/">Drupal site</a> for more advanced topics.</p>
<p>If you have questions, feel free to ask  via the comments section and I will be more than happy to help you!</p>
<h3>Related Content</h3>
<ul>
<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/10-drupal-modules-you-may-not-know-about/">10 Drupal Modules You May Not Know About</a></li>
<li><a href="http://sixrevisions.com/web-development/convincing-your-clients-to-use-open-platforms/">Convincing Your Clients to Use Open Platforms</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/saad_bassi_small.jpg" alt="" width="80" height="80" /><strong>Saad Bassi</strong> is a 20-year-old web developer from Pakistan. He is the Co-Editor at <a href="http://www.crispytech.com/" target="_blank">CrispyTech</a>, and blogs about Windows at <a href="http://www.windows8geek.com/" target="_blank">Windows8Geek</a>. Don&#8217;t forget to give him a &quot;hello&quot; on <a href="http://www.twitter.com/saadbassi" target="_blank">Twitter</a>. Last but not least, make sure that you check out hist latest project, <a href="http://addictivefonts.com" target="_blank">Addictive Fonts</a> which focuses on free high quality font downloads.</p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/getting-started-with-drupal-a-comprehensive-hands-on-guide/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>Mobile Web Design: Best Practices</title>
		<link>http://sixrevisions.com/web-development/mobile-web-design-best-practices/</link>
		<comments>http://sixrevisions.com/web-development/mobile-web-design-best-practices/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 13:00:36 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=3850</guid>
		<description><![CDATA[
The explosion in user adoption of mobile devices has revolutionized the web. Though designing for the Mobile Web follow similar principles to designing websites, we must consider some notable differences.
For one, current mobile device networks don&#8217;t run in the same speed as broadband devices.
In addition, there are also a myriad of ways our mobile web [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sixrevisions.com/web-development/mobile-web-design-best-practices/"><img src="http://images.sixrevisions.com/2010/08/16-17_mobile_web_design_ld_img.jpg" width="550" height="200" alt="Mobile Web Design: Best Practices" /></a></p>
<p>The explosion in user adoption of mobile devices has revolutionized the web. Though designing for the Mobile Web follow similar principles to designing websites, we must consider some notable differences.</p>
<p>For one, current mobile device networks don&#8217;t run in the same speed as broadband devices.</p>
<p>In addition, there are also a myriad of ways our mobile web designs are displayed in, from touch screens to netbooks, which make even the smallest desktop monitors look like giants.</p>
<p><span id="more-3850"></span></p>
<p>Some might argue that <a href="http://sixrevisions.com/web-development/mobile-web-design-is-it-worth-it/" title="Mobile Web Design: Is it Worth It? - sixrevisions.com">going mobile isn&#8217;t necessary yet</a>, however, what no one will disagree with is that it&#8217;s an inevitable turn in the profession of people who make and run websites.</p>
<p>If you&#8217;re considering <strong>developing mobile web designs</strong> (or pushing an existing one onto the Mobile Web), this article should help you get to grips with the growing trend of mobile design.</p>
<h3>Delivering the Design</h3>
<p>One of the early elements that need to be considered for producing a mobile-device-friendly site is the way the experience will be delivered.</p>
<h4>Complications in Delivery Method</h4>
<p>The ideal scenario would be that each device simply scales and adapts to your existing website &#8212; and some devices, such as the iPhone, are able to because of their built-in web browser. But because of so many devices out there, a cross-device mobile design is difficult to make.</p>
<p>If you thought that developing sites that work on most web browsers such as IE, Firefox, Chrome, and Safari was tough &#8212; try developing one for iPhones, BlackBerrys, Palm Pres, Androids, Motorola devices, Nokia devices, and &#8212; the list appears bottomless!</p>
<p>For desktop-based web designs, you only had one markup language to deal with: HTML. But on the Mobile Web, there is also WML and then platforms such as iOS for Apple devices and Android for Android devices.</p>
<p><a href="http://wapall.com/en/main.asp"><img src="http://images.sixrevisions.com/2010/08/16-01_wml_rendered_site.png" width="550" height="355" alt="Complications in Delivery Method" /></a><span class="figure-caption">WML used to limit our design creativity, but we have more flexibility these days.</span></p>
<h4>Adapting a Web Design to Support Mobile Devices</h4>
<p>One option to pushing a site to the Mobile Web is to simply create or modify your existing code and design to work well on mobile devices, or building from scratch with mobile devices in mind.</p>
<p>With a bit of CSS3 (using <a href="http://www.w3.org/TR/css3-mediaqueries/">media queries</a>), for example, you can rescale the dimensions of your layout depending on the user&#8217;s device.</p>
<p>The problem is &#8212; you guessed it &#8212; not all devices support CSS3. So you may have to resort to using server-side device detection (e.g. <a href="http://en.wikipedia.org/wiki/User_agent#User_agent_identification" title="User agent - en.wikipedia.org">HTTP headers to sniff out the user agent</a>) or using JavaScript (e.g. modifying the DOM to rescale your layouts). But again, some devices might not support these techniques.</p>
<p><a href="http://2010.dconstruct.org/"><img src="http://images.sixrevisions.com/2010/08/16-02_css3_scale_viewport.png" width="446" height="334" alt="Adapting a Web Design to Support Mobile Devices" /></a><span class="figure-caption">Making an existing layout scale depending on the viewport is as simple as a few lines of CSS3.</span></p>
<h4>Redirect Mobile Users to a Mobile Version of the Site</h4>
<p>Another method for delivering a mobile design is to build an especially optimized layout for handheld devices. You can build this yourself or use a web service such as <a href="http://mobify.me/">Mobify</a>.</p>
<p>Compared to the first method, <strong>this is the better format for delivery</strong> as you can create an experience specifically for your mobile users without taking away from the experience of desktop users.</p>
<p>For this to work, you will have to route traffic on your site depending on the user&#8217;s browser agent. For example, if a mobile device user visits your site (yousitename.com), then they will automatically be redirected to, say, mobile.yoursitename.com or m.yoursitesname.com.</p>
<p><img src="http://images.sixrevisions.com/2010/08/16-03_sixrevisions_mobile_site.png" width="550" height="320" alt="Adapting a Web Design to Support Mobile Devices" /><span class="figure-caption">A separate mobile site can mean squeezing out the extra bytes for faster rendering.</span></p>
<h4>Tips on Redirection</h4>
<p>Whichever route you decide to go down, it&#8217;s important that:</p>
<ul>
<li>Visitors know that a mobile-friendly version of your site <strong>is available</strong></li>
<li>Visitors can <strong>have the choice</strong> between a mobile version or the normal version</li>
</ul>
<p>While forcefully redirecting or changing the layout for your end-users may seem like a good idea, <strong>it can lead to frustrations</strong>, so there should be ways in which a mobile device user can view the normal site design, and vice versa.</p>
<p>A simple solution would be to <strong>provide a link that goes to either version of a website.</strong> For example, on Six Revisions, you can find a link to the mobile version (<a href="http://m.sixrevisions.com/">m.sixrevisions.com</a>) in the footer of the regular website, and conversely, a link to <a href="http://sixrevisions.com/">the regular website</a> is provided at the footer on the mobile version. Whether you&#8217;re a mobile device user or a desktop user, you have access to both sites.</p>
<h3>Structure and Code</h3>
<p>The next thing that we need to consider is the structural code (markup and styles) that goes on behind the scenes.</p>
<ul>
<li>Do you go with a mobile-friendly language like WML or the XHTML mobile profiles?</li>
<li>Do you build an app for iPhones, and then one for the Android?</li>
<li>How does the cost and speed associated with mobile device web browsing affect the way you should develop your design?</li>
<li>What about modern standards like HTML5 and CSS3?</li>
</ul>
<p>These are just some of the questions that we all have in this relatively uncharted and undeveloped territory.</p>
<p><img src="http://images.sixrevisions.com/2010/08/16-04_google_iphone.jpg" width="550" height="290" alt="Adapting a Web Design to Support Mobile Devices" /><span class="figure-caption">New devices may not support the same code as older mobile handsets.</span></p>
<h4>Choices</h4>
<p>Choosing the right language for a mobile-friendly website is paramount; while older devices before the smartphone revolution only support WML (which is pretty basic) the W3C produced a mobile-friendly version of XHTML (referred to as the <a href="http://en.wikipedia.org/wiki/XHTML_Mobile_Profile" title="XHTML Mobile Profile - en.wikipedia.org">XHTML Mobile Profiles</a>).</p>
<p>Luckily, due to the speed in which mobile device manufacturers have taken to giving a complete and robust web experience, <strong>you can often simply use regular HTML or XHTML</strong> &#8212; if you don&#8217;t want to be held back by mobile profiles or WML.</p>
<p>However, it&#8217;s important to underscore the fact that it&#8217;s still worth considering WML if you feel your visitors have old phones. Remember, though, you&#8217;ll be adding more <a href="http://sixrevisions.com/web-technology/the-webs-undead/" title="The Web’s Undead - sixrevisions.com">web zombies</a> that we&#8217;ll all have to deal with some day.</p>
<p>Use your site statistics and carry out some <a href="http://sixrevisions.com/usabilityaccessibility/unleashing-the-power-of-website-analytics/" title="Unleashing the Power of Website Analytics - sixrevisions.com">website analytics</a> to help you come up with an educated decision.</p>
<p><img src="http://images.sixrevisions.com/2010/08/16-05_device_support.png" width="550" height="462" alt="Adapting a Web Design to Support Mobile Devices" /><span class="figure-caption">Every browser will have its own level of support (it&#8217;s not all about the device itself).</span></p>
<h4>Speed and Cost (to the User)</h4>
<p>Ultimately, whichever language you choose, the primary considerations you need to think about is <strong>speed and user cost.</strong></p>
<p>It&#8217;s well known that most mobile internet providers cap connections, and therefore bandwidth has now become a limited and valuable resource.</p>
<p>Even worse is the issue that roaming charges outside of the country you reside in can be expensive, which is a reason to keep the sizes of everything on your site as low as possible.</p>
<p>With caps, costs and speed issues, <strong>the need to keep markup as clean, small and standards-based as possible</strong> is important.</p>
<p><img src="http://images.sixrevisions.com/2010/08/16-06_roaming.png" width="550" height="125" alt="Speed and Cost (to the User)" /><span class="figure-caption">Roaming charges from mobile web providers can get pretty expensive.</span></p>
<p>Because of the speed in which adoption is occurring for new technologies, the ability and future of using languages like <strong>HTML5 and CSS3 is not out of the question</strong> &#8212; taking into account that your code degrades gracefully, of course.</p>
<p>Many providers such as Apple provide firmware upgrades that improve how the device will function, which means older devices may be able to take advantage of modern standards. But this situation is analogous to IE6 users refusing to upgrade to modern versions like IE8, therefore, ensure you always research before you implement &#8212; then <strong>test, test and test again!</strong></p>
<h3>Layout Essentials</h3>
<p>If there&#8217;s one issue that mobile devices have in spades, it&#8217;s the issue of how to lay out your web pages. A design&#8217;s layout in mobile devices is problematic because:</p>
<ul>
<li>Mobile devices <strong>come in all shapes and sizes</strong></li>
<li>Mobile devices have <strong>different levels of quality and resolutions</strong></li>
<li>Mobile devices may or may not <strong>support zooming</strong>, others <strong>scroll content</strong></li>
<li><strong>Scrolling in mobile devices</strong> is more difficult because of their small screen</li>
</ul>
<p>The goal of a mobile web design&#8217;s layout is to allow the least amount of burden to the user&#8217;s ability to find (and quickly read) what they&#8217;re looking.</p>
<p>Essentially, your layout will be important to making your mobile presence a success.</p>
<p><img src="http://images.sixrevisions.com/2010/08/16-07_single_column.png" width="550" height="220" alt="Layout Essentials" /><span class="figure-caption">Due to the lack of space on many screens, single column designs may be required.</span></p>
<h4>Simplicity</h4>
<p>One of the main concepts to an effective mobile web layout is simplicity. It goes without saying that the more information you pile into a small space, the harder it becomes to read and the more scrolling that will be required.</p>
<p>With such limited space to contend with, multi-column layouts often break because the required space to meet the needs of the content cannot span beyond the physical space of the viewport unless passive zooming and scaling comes into play.</p>
<p>Therefore, it pays to <strong>use a single column layout.</strong></p>
<h4>Avoid Scrolling</h4>
<p>Some mobile devices, like the iPhone and iPad, have the ability to adjust a web page&#8217;s zoom depending on the orientation of the device (portrait or landscape mode), which reduces the need for scrolling; but not all devices have this ability.</p>
<p><img src="http://images.sixrevisions.com/2010/08/16-08_scroll_down.png" width="550" height="246" alt="Avoid Scrolling" /><span class="figure-caption">Having to scroll down a content-heavy page isn&#8217;t a fun experience on cell phones.</span></p>
<p>We all know that <a href="http://www.useit.com/alertbox/20050711.html">horizontal scrolling isn&#8217;t a good idea</a> &#8212; especially on the iPad where scrollbars don&#8217;t show up until you attempt to scroll &#8212; so avoid this situation in your mobile web designs.</p>
<p><a href="http://m.alistapart.com/"><img src="http://images.sixrevisions.com/2010/08/16-09_ala_clean.png" width="550" height="280" alt="Avoid Scrolling" /></a><span class="figure-caption">A good mobile design should have a clean layout with simple navigation options.</span></p>
<h4>Size of Navigation and Clickable Objects</h4>
<p>Another key component is the issue of navigation and clickable regions, which is predominantly a problem with touchscreen mobile devices.</p>
<p>I&#8217;m sure if any of you have big hands, you are well aware of what a pain typing on a handheld keyboard can be or how hard it is to click on something small on the screen without having to zoom into it.</p>
<p>Ensuring that your mobile layout has <strong>large and easy-to-press links and clickable objects</strong> will be essential in streamlining the experience.</p>
<p><strong>Reducing the amount of clicks required</strong> to achieve an action &#8212; which is <a href="http://en.wikipedia.org/wiki/Three-click_rule" title="Three-click rule - en.wikipedia.org">a good practice</a> regardless of whether or not you&#8217;re designing a mobile site &#8212; is all the more important in mobile web designs.</p>
<h3>Content Design</h3>
<p>With the cost of browsing the web and caps on data allowances being put in place (along with speed issues), the most costly component of a website is the content. Knowing how to reduce excess images, text and media can be the difference between a 50KB design and a 2MB layout of crippling intensity.</p>
<p><a href="http://m.mobify.me/"><img src="http://images.sixrevisions.com/2010/08/16-10_mobify_bandwidth.png" width="550" height="235" alt="Content Design" /></a><span class="figure-caption">Less is more on a mobile device; <em>less</em> content equals <em>more</em> likely to read.</span></p>
<h4>Text Content</h4>
<p>Of all the components of a site, none plays a more vital role than the text.</p>
<p>But while content is king even on handheld devices &#8212; the need for scrolling, small file sizes, quick readability and bandwidth restraints means that we have to <strong>reengineer our copy</strong> to ensure that it&#8217;s useful on such devices.</p>
<p>If your design is simply a modification/adaptation of your existing layout (the first method of delivery), you could decide to hide unnecessary text, images or media (even though they&#8217;ll still download, it will improve readability). The real advantages come from a separate design where you can purge the marketing talk and excessive content.</p>
<h4>Images</h4>
<p>When working with a small screen, large CSS background images or byte-heavy <a href="http://sixrevisions.com/resources/10-revealing-infographics-about-the-web/" title="10 Revealing Infographics about the Web - sixrevisions.com">infographics</a> can be problematic. While some handheld devices have larger displays where this is not an issue, and while the ability to zoom into graphics on devices like the iPhone shouldn&#8217;t go without some credit, unnecessary bulk for visual embellishments certainly needs to have a good clean up.</p>
<p><img src="http://images.sixrevisions.com/2010/08/16-11_iphone4.jpg" width="550" height="262" alt="Images" /><span class="figure-caption">Large images sap a lot of bandwidth; consider scaling them back for smaller screens.</span></p>
<p><strong>Reducing the resolution and dimensions</strong> of your images can literally be the difference between 50KB and 500KB &#8212; bandwidth consumption that&#8217;s worth saving.</p>
<h4>Video/Audio</h4>
<p>It&#8217;s inevitable in the modern web that utilizing audio and video will be needed. Even with the bandwidth issues that exist, you shouldn&#8217;t stop using these richer forms of content, as they can be great, especially on handheld mobile devices that have excellent video/audio quality such as the iPhone or iPod Touch. But just like with everything else, <strong>moderation and smart usage</strong> is key.</p>
<p><a href="http://crave.cnet.co.uk/podcast/"><img src="http://images.sixrevisions.com/2010/08/16-12_downloads_asking.png" width="550" height="262" alt="Video/Audio" /></a><span class="figure-caption">If you&#8217;re providing audio or video, don&#8217;t make it start downloading until requested.</span></p>
<p>There are a few considerations you should make when utilizing video and audio:</p>
<ul>
<li><strong>The format you use:</strong> Beware of Flash and other closed formats that aren&#8217;t compatible on some devices</li>
<li><strong>The file size of video and audio:</strong> Optimize your files</li>
<li><strong>Don&#8217;t automatically download video/audio files until requested:</strong> For bandwidth savings</li>
<li><strong>Don&#8217;t auto-play:</strong> It&#8217;s annoying; in fact, don&#8217;t do this even outside of mobile devices</li>
</ul>
<h3>Other Issues to Consider</h3>
<p>Finally, it&#8217;s important we address the best practices when it comes to scripting, plugins (like Flash and Silverlight), and developing web apps.</p>
<p>Knowing what to cut and what to keep will help enhance your mobile user&#8217;s experience and also ensure that your mobile website is functional across most/all devices.</p>
<p><img src="http://images.sixrevisions.com/2010/08/16-13_degrade_bbc.png" width="550" height="226" alt="Other Issues to Consider" /><span class="figure-caption">Allow your code to degrade gracefully as you can&#8217;t rely on any technologies success rate.</span></p>
<h4>Interaction in Mobile Devices vs. Personal Computers</h4>
<p>An important point to make is that we interact differently with a mobile design screen versus a regular computer screen.</p>
<p>With the lack of a mouse and the way our hands gesture to instigate actions and reactions, the traditional interaction patterns we&#8217;re accustomed to, such as hovering over a link (for example), is different.</p>
<p>Consideration must be given to how such functions are affected by a change in interfaces.</p>
<h4>Proprietary Technologies and Plugins</h4>
<p>The <a href="http://sixrevisions.com/web-development/issues-with-apples-decision-to-block-flash/" title="Issues with Apple’s Decision to Block Flash - sixrevisions.com">move of Apple to block Flash from their devices</a> underscores the problems of becoming dependent on proprietary plug-in components &#8212; closed technologies that other companies can&#8217;t or won&#8217;t support.</p>
<p><img src="http://images.sixrevisions.com/2010/08/16-14_adobesite_pwnd.jpg" width="550" height="290" alt="Proprietary Technologies and Plugins" /><span class="figure-caption">Adobe Flash isn&#8217;t supported on the iPhone, iPad or iPod Touch, which is problematic.</span></p>
<p>Apple&#8217;s decision against Flash can be a harbinger of things to come, setting a precedence about the way mobile device manufacturers welcome third-party technologies into their own. Other technologies like Silverlight or Java may not work as intended &#8212; or may later be blocked as well.</p>
<p>While many developers may use this as an excuse not to develop on these platforms, the best course of action is simply to <strong>ensure that their mobile websites degrades gracefully.</strong></p>
<p><img src="http://images.sixrevisions.com/2010/08/16-15_iphone_build_app.jpg" width="550" height="262" alt="Proprietary Technologies and Plugins" /><span class="figure-caption">Building an app may be useful if internet access is unavailable (for any reason).</span></p>
<h4>Web Services with Persistent Internet Connections</h4>
<p>Even though the availability of web-based services are fantastic, I do worry that the dependence on a constant and reliable (always on) web connection is very much going to be a problem for web apps at the current state of mobile device networks.</p>
<p>While there have been moves towards <a href="http://dev.w3.org/html5/webstorage/#the-localstorage-attribute" title="Web Storage - dev.w3.org">local storage</a> mechanisms, for now, web apps that rely on persistent internet connections could affect mobile device users due to the capabilities of their networks.</p>
<p>For example, the fact that there are still &quot;dead zones&quot; &#8212; places where mobile phones don&#8217;t have service &#8212; can affect the user&#8217;s interaction, such as in cases where his or her signal suddenly drops in the middle of performing a task.</p>
<p>It&#8217;s worth considering the idea of developing an app for your service which can function both offline and online (learn how by <a href="http://sixrevisions.com/web-development/html5-iphone-app/" title="How to Make an HTML5 iPhone App - sixrevisions.com">reading this offline HTML5 iPhone app tutorial</a>).</p>
<h3>Testing Your Mobile Website</h3>
<p>If you&#8217;ve ever been into a store that sells phones, it can be downright shocking how diverse the screens, devices and contract plans can be.</p>
<p><img src="http://images.sixrevisions.com/2010/08/16-16_emulator_w3c.jpg" width="550" height="308" alt="Testing Your Mobile Website" /><span class="figure-caption">There are a wide range of emulators for simulating your designs.</span></p>
<p>With the future set to bring even more mobile devices into the fray, and because we are at the mercy of corporations that want to gain or maintain their <a href="http://paidcontent.org/article/419-10-q-watch-adobe-admits-apples-anti-flash-strategy-could-be-damaging/" title="Adobe Admits Apple’s Anti-Flash Strategy Could Be Damaging - paidcontent.org">competitive edge</a>, the <strong>standardization of these web-enabled devices is unlikely to occur.</strong></p>
<p>Therefore, it&#8217;s up to our common senses to do what we can to ensure that the widest possible audience can access and use our site in a way that&#8217;s functional and enjoyable.</p>
<h4>Testing with Mobile Device Emulators</h4>
<p>With such diversity in the mobile device landscape, it goes without question that you should test your designs on as many platforms as you can manage. Below is a list of emulators that will simulate certain devices for you to be able to test your work.</p>
<ul>
<li><a href="http://developer.android.com/guide/developing/tools/emulator.html">Android emulator</a></li>
<li><a href="http://www.blackberry.com/developers/downloads/simulators/">Blackberry emulator</a></li>
<li><a href="http://mtld.mobi/emulator.php">Dot Mobi emulator</a></li>
<li><a href="http://www.mozilla.com/en-US/mobile/platforms/">Firefox Mobile emulator</a></li>
<li><a href="http://www.puresimstudios.com/ibbdemo/">iPhone / iPad / iPod Touch emulator</a></li>
<li><a href="http://www.simtel.net/product/download/id/53647">Klondike WML emulator</a></li>
<li><a href="http://developer.lgmobile.com/lge.mdn.tnd.RetrieveDocAndTools.dev?objectType=T#1">LG emulator</a></li>
<li><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=dd567053-f231-4a64-a648-fea5e7061303">Microsoft Devices emulator</a></li>
<li><a href="http://developer.motorola.com/docstools/sdks/archive/c975ADK/">Motorola emulator</a></li>
<li><a href="http://www.mozilla.org/projects/fennec/1.0a1/releasenotes/">Mozilla Fennec emulator</a></li>
<li><a href="http://www.access-company.com/products/internet_appliances/netfrontsdk/">NetFront emulator</a></li>
<li><a href="http://www.forum.nokia.com/info/sw.nokia.com/id/db2c69a2-4066-46ff-81c4-caac8872a7c5/NMB40_install.zip.html">Nokia emulator</a></li>
<li><a href="http://wapreview.com/blog/?p=3733">OpenWave emulator</a> (archive)</li>
<li><a href="http://www.opera.com/mobile/demo/">Opera Mini emulator</a></li>
<li><a href="http://informatico.altervista.org/netvibes/operamini.php">Opera Mobile emulator</a></li>
<li><a href="http://developer.palm.com/index.php?option=com_content&amp;view=article&amp;id=1744">Palm emulator</a></li>
<li><a href="http://www.genuitec.com/mobile/download.html">Palm Pre / iPhone emulator</a></li>
<li><a href="http://innovator.samsungmobile.com/platform.main.do?platformId=3">Samsung Java emulator</a></li>
<li><a href="http://innovator.samsungmobile.com/bbs/lab/labplatform.do">Samsung Platform emulator</a></li>
<li><a href="http://msdn.microsoft.com/en-gb/windowsmobile/bb264327.aspx">Windows Mobile emulator</a></li>
</ul>
<h3>Simple, Small and Speedy</h3>
<p>While much of what I discussed in this article is straightforward advice, common sense is a major factor that dictates how we build interfaces.</p>
<p>Back in the 56k modem days, we had speed issues to contend with. We also had monitors that were limited in resolution and color. Many ISPs capped our bandwidth and internet access. Some internet connections would drop if you have an incoming phone call to your house. So for  those of you older-generation developers &#8212; you should be in familiar territory.</p>
<p>For now &#8212; and until mobile network infrastructure improves and connectivity is widely available &#8212; <strong>simple, small and speedy</strong> are the three main principles we should abide by.</p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/web-development/mobile-web-design-is-it-worth-it/">Mobile Web Design: Is it Worth It?</a></li>
<li><a href="http://sixrevisions.com/user-interface/a-quick-look-at-mobile-web-designs/">A Quick Look at Mobile Web Designs</a></li>
<li><a href="http://sixrevisions.com/web-development/html5-iphone-app/">How to Make an HTML5 iPhone App</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-technology/">Web Technology</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/mobile-web-design-best-practices/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>A 6-Step General Process for Producing a Website</title>
		<link>http://sixrevisions.com/web-development/a-6-step-general-process-for-producing-a-website/</link>
		<comments>http://sixrevisions.com/web-development/a-6-step-general-process-for-producing-a-website/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 10:00:54 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=3792</guid>
		<description><![CDATA[
When it comes to building a website, it helps to have a process to follow, especially if you are just getting started as a web designer. Good guidelines can help you work better by keeping forgetfulness to a minimum.
Every designer or company will develop unique components to their web design process over time, but the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sixrevisions.com/web-development/a-6-step-general-process-for-producing-a-website/"><img src="http://images.sixrevisions.com/2010/08/07-01_process_web_design_ld_img.jpg" width="550" height="200" alt="A 6-Step General Process for Making a Website" /></a></p>
<p>When it comes to building a website, it helps to have a process to follow, especially if you are just getting started as a web designer. Good guidelines can help you work better by keeping forgetfulness to a minimum.</p>
<p>Every designer or company will develop unique components to their web design process over time, but the basics remain the same: learn, plan, design, code, launch and maintain.</p>
<p><span id="more-3792"></span></p>
<p>In this article, I will share my process for designing a website.</p>
<p><img src="http://images.sixrevisions.com/2010/08/07-03_flowchart.jpg" width="550" height="550" alt="A 6-Step General Process for Making a Website" /></p>
<p>Before we get into it, let me first share two parallel processes that should be taking place throughout your design process.</p>
<p>The first thing you should be doing continuously is seeking <a href="http://sixrevisions.com/tools/10-excellent-feedback-tools-for-web-designers/" title="10 Excellent Feedback Tools for Web Designers - sixrevisions.com">feedback</a>. You&#8217;ll save yourself a lot of wasted time and effort by getting feedback at regular intervals.</p>
<p>The second thing you should do continuously is testing. Test the heck out of everything as you go to avoid mega-headaches down the road.</p>
<p>With that said, let&#8217;s get started!</p>
<h3>1. Learn</h3>
<p>What do you think is the most important step of the web design process? Planning? Designing? Coding? </p>
<p>Guess again.</p>
<p>It shouldn&#8217;t surprise you that learning &#8212; discovering and understanding what you need to build in the first place &#8212; is the most important part of the entire website design process.</p>
<p>Why? It&#8217;s simple, really. The more you know about what you need to accomplish, the better your chances will be of creating a successful website.</p>
<p>Think of it like this: If you are an archer, don&#8217;t you need to know where to aim your arrow? That&#8217;s what the target is for. The little red dot in the middle is the bullseye. Since it&#8217;s smaller, it&#8217;s harder to hit, but even if you aim for it and miss, you&#8217;re sure to get closer than if you aimed your arrow up into the air and hoped for a random direct hit.</p>
<p><img src="http://images.sixrevisions.com/2010/08/07-02_bullseye.jpg" width="550" height="220" alt="Bullseye" /></p>
<p>So how can you score a bullseye as a web designer? Before you go any further, you need to define what hitting the bullseye in your project means.</p>
<p>As a web designer, hitting the bullseye is giving your clients what they want &#8212; it&#8217;s what they are paying you for.</p>
<p> What clients want varies widely on a case-by-case basis. Since you aren&#8217;t a mind reader (no, you&#8217;re not), you need to proactively find out what they want.</p>
<p>In some cases, they may not even know what they want, and in other cases, they may have a hard time verbalizing what they have envisioned because they don&#8217;t know industry terms and concepts like CSS, Ajax, or relational databases.</p>
<h4>The Creative Brief</h4>
<p>Fortunately, there&#8217;s a tool web designers can use to easily gather this information. It&#8217;s called a creative brief. A creative brief is basically a <a href="http://sixrevisions.com/productivity/create_web_design_questions/" title="How to Create an Effective Web Design Questionnaire - sixrevisions.com">series of questions</a> that you ask your clients so that you can understand the <a href="http://sixrevisions.com/project-management/eight-tips-on-how-to-manage-feature-creep/" title="Eight Tips on How to Manage Feature Creep - sixrevisions.com">scope</a> and goals of a project.</p>
<p>You can ask these questions during a face-to-face meeting or a phone call &#8212; or you can simply make a web form available on your website that handles the answers of your clients.</p>
<p>You should obtain this information in the way you and your clients are most comfortable with &#8212; but whatever you do, don&#8217;t skip the creative brief because it will become the lifeblood of your project.</p>
<p>What kind of questions should you ask in your creative brief? At the minimum, find out:</p>
<ul>
<li>The client&#8217;s target audience</li>
<li>Their primary and secondary goals for the website</li>
<li>Current branding characteristics</li>
<li> Budget</li>
<li>Deadlines they need to meet</li>
</ul>
<p>I also like asking clients what websites they like and don&#8217;t like to give me a visual idea of where I should be heading and what I should avoid.</p>
<p>You might also want to find out if they need an online store, if they already have a logo (if not, you can <a href="http://sixrevisions.com/graphics-design/5-branding-basics-every-logo-designer-should-know/" title="5 Branding Basics Every Logo Designer Should Know - sixrevisions.com">make one for them</a>), who will be responsible for maintaining the site once it goes live, and so forth.</p>
<p>You might have unique questions that you will want to include; use them and don&#8217;t be afraid to tailor your questions on a per-project basis.</p>
<h3>2. Plan</h3>
<p>Once you&#8217;ve learned what you need to build, it&#8217;s time to start planning how you are going to make it happen. Before you can start designing a website, you need to know exactly what, and how, to design it in the first place &#8212; and it all starts with creating a <strong>design strategy.</strong></p>
<p>Your design strategy for each website you make should be handcrafted to fit the client&#8217;s vision (if you are designing a site for yourself, then <a href="http://sixrevisions.com/web_design/how-to-design-for-your-worst-client-you/" title="How to Design for Your Worst Client: You. - sixrevisions.com">you would qualify as the client</a>).</p>
<p>So what factors will shape your design strategy? The creative brief will act as the foundation of your plan by providing you with some basic information, such as what your timeframes are and who the target audience of the website is.</p>
<p>It&#8217;s especially important to know your audience because it will affect where and how the site gets viewed. For example, will you also need to create a <a href="http://sixrevisions.com/user-interface/a-quick-look-at-mobile-web-designs/" title="A Quick Look at Mobile Web Designs - sixrevisions.com">mobile version</a> or an iPad-specific version that works with touch?</p>
<h4>Research and Note-Taking</h4>
<p>Whatever gaps are left in the overall strategic picture will need to be filled by doing some research of your own. Now is the time to visit competing websites and see what types of designs are already out there in the target market so you will know how to differentiate your own design.</p>
<p>See who comes up first in a Google search and try to find out why. Within 10 minutes, you should be able to start piecing together the beginnings of your design plan.</p>
<p>While you are researching, you&#8217;ll also start brainstorming about what colors to use, where to place the call(s)-to-action, what kind of fonts you should use and other similar details.</p>
<p>At this point, you should also be taking notes, snapping screenshots and starting a <a href="http://en.wikipedia.org/wiki/Mood_board">mood board</a>.</p>
<h4>Sketching and Mock-Up</h4>
<p>Next, it&#8217;s time to create a mock-up and start letting your ideas take on more of a tangible state. I like to start by sketching out my ideas on a regular old piece of paper, as do many other web designers.</p>
<p>Other people prefer to use a wireframing tool like <a href="http://www.omnigroup.com/products/omnigraffle/">OmniGraffle</a>. During this phase, not only will you want to start thinking seriously about the layout of the site, but also the structure of your site and how the navigation will shape up.</p>
<p>This is your chance to see what works best and a good place to experiment with different ideas before actually hitting Photoshop or Illustrator to create something more concrete.</p>
<h4>Pick Your Tools</h4>
<p>This part of the process is also the perfect opportunity to assess which tools you will need to use. You absolutely should not fall into a pattern of using a predetermined set of tools for each site you create. It&#8217;s a potentially hazardous practice for everyone involved, including the site&#8217;s end users and the client (not to mention how monotonous your portfolio would look).</p>
<p>Put some real thought into what content management system would work the best considering the site&#8217;s goals, whether or not including Flash at all is a good idea, and so on.</p>
<h3>3. Design</h3>
<p>Now I know there are many web designers out there who like to skip directly to the design stage without giving a second thought to learning or planning, but design is more than just the act of creating. You want to actually create something good and useful and you just can&#8217;t do that without first doing some preliminary work before starting to design.</p>
<p>If you&#8217;ve already done the legwork of learning and planning, it makes the actual designing much easier. When you don&#8217;t have to worry about the little details, it really opens up a whole new level of effectiveness and productivity because you can focus on more important things.</p>
<p>Once you are ready to start designing, keep in mind that you need to design more than just a home page. You&#8217;ll need a design for the sub-pages of your site as well. It can sometimes be easy to design a home page concept, slice it up and start coding only to get to sub-pages and have no direction. You may also need to design a mobile or iPad version of your site as well.</p>
<p>The design phase itself is straightforward. Just open up <a href="http://sixrevisions.com/category/photoshop/" title="Photoshop category on Six Revisions - sixrevisions.com">Photoshop</a> (or your graphics creation tool of choice) and start bringing your mock-up to life. Sweat the details. Make it pixel perfect. Even if you feel like the project you are working on is more boring that staring at a wall for 24 hours straight, put your all into it. Your client will notice and you&#8217;ll be proud of the work you did.</p>
<p>You&#8217;ll have to decide at this point whether you want to use real content in your design or some dummy text (e.g. <a href="http://www.lipsum.com/">Lorem Ipsum</a>). There are plenty of fans in either camp, but I personally prefer to use real copy and photos if they are available to make it as close to reality as possible.</p>
<p>During the design phase, it is incredibly important to seek feedback often to make sure all specified requirements have been met. If the client wants to make changes, now is the time to do it before the design is sliced and coded, making it ten times more difficult to make what would be a simple change if you were to do it during the design phase.</p>
<h3>4. Code</h3>
<p>Once you have a killer design, you&#8217;ll need to turn it into a real, live website. A safe bet, no matter what content management system you are going to be working with, is to start with a generic HTML and CSS template.</p>
<h4>Start with a Base Template</h4>
<p>If you&#8217;re like me, you&#8217;ve already got a set of starter HTML and CSS files ready to go that are already linked to each other and already contain some basic starter code (such as a <a href="http://sixrevisions.com/css/css-tips/css-tip-1-resetting-your-styles-with-css-reset/" title="CSS Resetting Your Styles with CSS Reset - sixrevisions.com">CSS reset</a>).</p>
<p>If you&#8217;re not like me and don&#8217;t have these generic files at the ready, go ahead and create some that you can reuse at this stage in the future.</p>
<p>Before you go any further, it&#8217;s a good idea to go ahead and add in your title, descriptions and meta tags, or at least make a note of what they should be if you are going to be using a content management system later on.</p>
<h4>Lay Out the Main Sections and Content</h4>
<p>Begin carving up your HTML/CSS by inserting the major sections (your main <code>&lt;div&gt;</code>s) for your header, footer and content area.</p>
<p>Next, begin adding your text and image content. The goal is to keep your markup as semantic as possible so that each element is meaningful.</p>
<p>Avoid divitis &#8212; the act of utilizing too many divs. For example, you don&#8217;t need a div just to contain the logo. Try using an <code>&lt;h1&gt;</code> or a <code>&lt;p&gt;</code> instead &#8212; it can be styled exactly the same way (e.g. making them into a block elements using the <code>display</code> CSS property).</p>
<h4>Validate and Test</h4>
<p>Don&#8217;t forget to make sure your code validates by using the <a href="http://validator.w3.org/">validation tool </a> provided by the W3C (but also understand that <a href="http://sixrevisions.com/web-standards/problems-with-using-website-validation-services/" title="Problems with Using Website Validation Services - sixrevisions.com">validation tools have shortcomings</a>).</p>
<p>You&#8217;ll also need to do some browser testing to make sure the site looks and acts as intended and provides a uniform brand experience no matter how a user accesses it. You can use a tool like <a href="http://browsershots.org/">Browsershots</a> if you have limited access to different types of computers.</p>
<p>Use <a href="http://getfirebug.com/">Firebug </a> and <a href="http://developer.yahoo.com/yslow/">YSlow </a> to debug your site and make sure your work is <a href="http://sixrevisions.com/web-development/five-ways-to-speed-up-page-response-times/" title="Five Ways to Speed Up Page Response Times - sixrevisions.com">running at an optimal speed</a>.</p>
<p>One last thing: don&#8217;t forget to implement <a href="http://sixrevisions.com/usabilityaccessibility/unleashing-the-power-of-website-analytics/" title="Unleashing the Power of Website Analytics - sixrevisions.com">Google Analytics</a> or your favorite <a href="http://sixrevisions.com/usabilityaccessibility/10-promising-free-web-analytics-tools/" title="10 Promising Free Web Analytics Tools - sixrevisions.com">analytics alternative</a> so you won&#8217;t miss out on tracking the stats during the <a href="http://sixrevisions.com/web-development/10-simple-tips-for-launching-a-website/" title="10 Simple Tips for Launching a Website - sixrevisions.com">big launch</a>.</p>
<h3>5. Launch</h3>
<p>When you&#8217;ve finally perfected the site, it&#8217;s time to release it to the public. Launching can mean different things to different people, mostly because there are various content management systems and development circumstances out there.</p>
<p>For instance, if you are redesigning a site that uses a content management system or publishing platform, your launch may be as simple as applying a new theme.</p>
<p>If you are designing a brand new site in a sandbox or <a href="http://sixrevisions.com/tutorials/web-development-tutorials/using-xampp-for-local-wordpress-theme-development/" title="Using XAMPP for Local WordPress Theme Development - sixrevisions.com">local development environment</a>, then &quot;going live&quot; means FTP&#8217;ing your files to the production server.</p>
<h3>6. Maintain</h3>
<p>During your planning phase, you should have determined who will be in charge of site maintenance. If a client is unable to maintain the site, you may want to suggest that they hire you on a regular or as-needed basis to manage and perform maintenance tasks.</p>
<p>During the hand-off/closeout of the project, it might also help to provide some guidelines and basic training to your client to make sure they understand how to properly maintain the site.</p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/project-management/a-4-step-process-for-a-positive-web-marketing-approach/">A 4-Step Process for a Positive Web Marketing Approach</a></li>
<li><a href="http://sixrevisions.com/project-management/how-to-navigate-design-by-committee/">How to Navigate Design by Committee</a></li>
<li><a href="http://sixrevisions.com/project-management/6-things-you-need-for-your-web-project-to-succeed/">6 Things You Need for Your Web Project to Succeed</a></li>
<li><em>Related categories</em>: <a href="http://sixrevisions.com/category/web_design/">Web Design</a> and <a href="http://sixrevisions.com/category/web-development/">Web Development</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://images.sixrevisions.com/authors/chris_mcconnell_small.jpg" alt="" width="80" height="80" /><strong>Chris McConnell</strong> co-founded the <a href="http://www.brandeluxe.com/">Brandeluxe</a> network of sites, which includes <a href="http://www.freelancereview.net/">Freelance Review</a>, <a href="http://www.designnewssource.com/">Design News Source</a> and <a href="http://www.dailydesignadvice.com/">Daily Design Advice</a>. Be sure to follow @<a href="http://twitter.com/brandeluxe">Brandeluxe</a> and @<a href="http://twitter.com/designnewssrc">DesignNewsSrc</a> on Twitter.</p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/a-6-step-general-process-for-producing-a-website/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Making Money Designing Themes: What You Should Know</title>
		<link>http://sixrevisions.com/web-development/making-money-designing-themes-what-you-should-know/</link>
		<comments>http://sixrevisions.com/web-development/making-money-designing-themes-what-you-should-know/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 10:00:13 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=3703</guid>
		<description><![CDATA[
Alongside my primary income stream, which is my web design freelance business, I&#8217;ve also been selling themes and templates for content management systems and publishing platforms like WordPress for close to two years now.
Although theme design can seem like the promised land for web designers and web developers &#8212; with some theme authors making tens [...]]]></description>
			<content:encoded><![CDATA[<p><a href=" http://sixrevisions.com/web-development/making-money-designing-themes-what-you-should-know/"><img src="http://images.sixrevisions.com/2010/07/22-01_making_money_theme_design.jpg" width="550" height="200" alt="Making Money Designing Themes: The Pros and Cons" /></a></p>
<p>Alongside my primary income stream, which is my web design freelance business, I&#8217;ve also been selling themes and templates for content management systems and publishing platforms like WordPress for close to two years now.</p>
<p>Although theme design can seem like the promised land for web designers and web developers &#8212; with some theme authors making tens of thousands of dollars from a single theme alone &#8212; it&#8217;s actually more like a gold rush: a chosen few hit it big, but only after putting in a lot of hard work.</p>
<p><span id="more-3703"></span></p>
<p>Here is a short guide to help you decide if getting into professional theme designing is for you.</p>
<h3>No Clients? No Problem!</h3>
<p>One of the main reasons why designers start designing themes is simply because they might not have anything else to do.</p>
<p>Whether you&#8217;re fresh out of design school, have recently begun freelancing, or are simply experiencing a dry spell, finding clients can sometimes be hard.</p>
<p>Designing a theme lets you get to work right away without having to wait for a project to fall in your lap.</p>
<p>Of course, contrary to a &quot;real&quot; client, there&#8217;s no guarantee that you&#8217;ll ever make any money off your theme.</p>
<p>But if the alternative is doing nothing while your design skills erode, you might as well get to work on that theme.</p>
<p>Plus, theme design is a great way to build a portfolio and get valuable experience, which in turn will help you get new clients. </p>
<h3>Build It and They Will Come</h3>
<p>Building on my previous point, theme design can be a very effective way of getting your name out there and attracting clients. When you build a website, your work is seen by every user. Now multiply that by the number of people using your theme for their own site, and you&#8217;ll understand that you can reach a very large audience. And add to this all the people who come across your work while looking for a theme, even if they don&#8217;t end up using yours.</p>
<p>In this age of <a href="http://sixrevisions.com/content-strategy/make-the-most-out-of-social-media/" title="Make the Most Out of Social Media - sixrevisions.com">social media saturation</a>, just having a Twitter account isn&#8217;t enough to get people to pay attention to you.</p>
<p>Having a real tangible product that people use every day makes a big difference, and will help you build strong relationships with customers and potential clients.</p>
<h3>Democratic Design</h3>
<p>Another big part of the appeal of theme design is that it&#8217;s egalitarian: No matter where you went to school, where you live, who you know, or how old you are, the only thing that counts is the quality of your work.</p>
<p>Even though the world is a lot flatter thanks to the Internet, a company in New York would probably not entrust its $5,000 site redesign to a 16 year old from Mumbai that they found through Google. On the other hand, that company would have no problem buying a $50 theme from that same 16 year old.</p>
<h3>Passive Income (or &quot;How to Retire While You&#8217;re Still Young&quot;)</h3>
<p>I&#8217;m surprised to see how many people don&#8217;t know the difference between active and passive income.</p>
<p>To put it simply, <strong>active income</strong> is the money you earn while actually working, while <strong>passive income</strong> is not linked to the time you put in, and usually comes from things like product sales or investments.</p>
<p>There&#8217;s a simple test to know if your income is active or passive: Do you earn money while you sleep? If the answer is &quot;no&quot;, then this means your income is of the active kind; your revenue is attached to the time you put in, and the only way to earn more is to work more. A traditional web design business is active income.</p>
<p>The problem with this is that there are a limited number of hours in a day, which in turns limits your income. So unless you become a design superstar and get paid hundreds/thousands of dollars by the hour (and raise your prices every year on top of that), your revenue streams will eventually reach its limit.</p>
<p>This might not be a problem right now, but what if you get sick and are unable to work for a month? What if you want to take a vacation? And what if you need to provide for your family, or plan for retirement?</p>
<p>Theme design is one of the few sources of passive income available to web designers, and probably the only one that lets you actually design. For example, writing a blog or an e-book can also be good sources of passive income, but not every designer enjoys writing, so designing/coding <a href="http://sixrevisions.com/wordpress/a-guide-to-premium-wordpress-themes/" title="A Guide to Premium WordPress Themes - sixrevisions.com">premium themes</a> can be an alternative.</p>
<h3>The $50 Theme versus the $5,000 Website</h3>
<p>You&#8217;d be tempted to assume that, provided a client has the budget, a custom-made $5,000 website will always serve them better than a cheap $50 WordPress theme.</p>
<p>But this is far from certain: if your clients are like mine, at the end of that $5,000, they get a brand new website, but have ran out of money to pay for things like copy writing, video production, or additional marketing.</p>
<p>Wouldn&#8217;t the result be much better if the client had used a $50 theme, and the remaining $4,950 had gone into content creation instead of design?</p>
<p>I know it sounds suicidal coming from a web designer, but I&#8217;m pretty sure most clients will figure it out by themselves eventually anyway.</p>
<p>The truth is that not everybody needs a custom-made site. Only a few people buy custom-made cars or even custom-made houses, there will come a point where a website becomes the same way.</p>
<p>As more and more people realize this, I believe the theme market will only get bigger. So this is another good argument to enter the field now while the iron is hot.</p>
<h3>Finding Fulfillment</h3>
<p>Dan H. Pink&#8217;s <em><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">Drive</a></em> is a great book about motivation. It shows that the old &quot;carrot and stick&quot; way of motivating people is outdated and doesn&#8217;t work for complex tasks. Instead, he puts forward three key principles that make work motivating: autonomy, mastery, and purpose.</p>
<p><img src="http://images.sixrevisions.com/2010/07/22-02_drive_book.jpg" width="333" height="500" alt="Finding Fulfillment" /></p>
<p>Theme design gives you a lot of <em>autonomy</em>. You&#8217;re usually working alone or in small groups, and you&#8217;re responsible for every choice you make. The fact that you&#8217;re selling a product to consumers instead of working for clients means that you feel less pressure from any single buyer and are less likely to get bossed around (unless you really take customer support to extremes).</p>
<p>It also gives you a real feeling of <em>mastery</em>. To be able to say you&#8217;ve mastered a craft, you need to be able to track some kind of metric to know your progress &#8212; sales is the perfect metric for this. If you see that every theme you publish is generating more sales than the previous one, you&#8217;ll know you&#8217;re making good progress and getting better at what you do.</p>
<p>And finally, you&#8217;ll get a real sense of <em>purpose</em> once you see how people are using your themes. It can be very gratifying to know that your work helped someone launch their personal site or their startup.</p>
<h3>But It&#8217;s Not All Gravy&#8230;</h3>
<p>If I stopped writing here, you&#8217;d probably wonder why everybody isn&#8217;t out there designing their own WordPress themes or site templates. Everything sounds so peachy!</p>
<p>But the truth is that there are also serious downsides to professional theme designing, and you should be aware of them before entering the field.</p>
<h3>Nobody Likes Working for Free</h3>
<p>Nobody likes working for free, but if you decide to enter the theme design market, I can almost guarantee that you&#8217;ll end up doing just that.</p>
<p>Even the top theme authors can produce themes that don&#8217;t sell. And when that happens, you&#8217;ll have spent hundreds of hours to earn a meager few hundred dollars.</p>
<p>You will then be faced with the hard decision of whether to invest <em>even</em> more time in the theme to try and make it more attractive to buyers or scrap it and move on to the next project. </p>
<h3>I Hope You Like Long Hours</h3>
<p>Theme design takes a ton of time. First, you have to come up with a design, slice it up, and code it into HTML/CSS.</p>
<p>Then comes the fun part: developing the WordPress /Drupal/Blogger theme.</p>
<p>Oh, and don&#8217;t forget cross-browser testing, adding multiple color schemes, custom options, and writing the documentation.</p>
<p>And that&#8217;s only before the theme is launched. After the launch, you&#8217;ll have to take care of promotion, customers support, and bug fixes. You can safely assume that about <strong>30% of the work happens after a theme is published.</strong> So if you&#8217;re trying to see if theme design is going to be profitable for you, be sure to factor this in your calculations.</p>
<h3>Don&#8217;t Ignore Competition</h3>
<p>While 37Signals famously advises <a href="http://gettingreal.37signals.com/ch02_Build_Less.php">ignoring and underdoing the competition</a>, you might not want to heed that advice when you enter the theme design arena.</p>
<p>The market is very crowded, competition is extremely stiff, and the quality level is through the roof. Most themes offer design on the same level as any custom-made site &#8212; with far <strong>more</strong> features.</p>
<p>If you want to be successful, you&#8217;ll have to compete on all fronts: Customers are receptive to good design, but also compare every theme&#8217;s features, so you can&#8217;t afford to be found lacking in that area.</p>
<p>And of course, if a competitor undercuts you in price, you will probably have very bad consequences on your sales, too. And then you&#8217;re also competing with <a href="http://sixrevisions.com/resources/50-beautiful-free-wordpress-themes/" title="50 Beautiful Free WordPress Themes - sixrevisions.com">free themes</a>&#8230;</p>
<h3>It&#8217;s Really Hard</h3>
<p>Finally, theme designing in the professional level is hard. In fact, it&#8217;s harder than traditional web design: Imagine having to design a site without any content or guidelines.</p>
<p>Oh, and instead of pleasing just one client, it has to appeal to thousands of potential buyers. But it should still be different from all the themes already on the market and must bring something new to the table if you want to gain an advantage.</p>
<p>From a technical point of view, you&#8217;ll have to make sure your theme works in all browsers, and across all possible server configurations (Apache, IIS, nginx).</p>
<p>And you have to do all of this <strong>before</strong> even earning a cent. Your theme could be a total flop and all that time you invested would have gone to waste.</p>
<h3>Final Thoughts</h3>
<p>If you&#8217;re considering entering the theme design market, this should give you a few elements to help you make a decision.</p>
<p>Personally, I don&#8217;t regret selling themes at all, but on the other hand, I also wouldn&#8217;t do it full time. I&#8217;ve reached a good balance between themes and regular web design gigs, and I hope you&#8217;ll be able to find your own path as well.</p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/project-management/five-reasons-why-you-shouldnt-expand-your-design-business/">Five Reasons Why You Shouldn’t Expand Your Design Business</a></li>
<li><a href="http://sixrevisions.com/wordpress/a-guide-to-premium-wordpress-themes/">A Guide to Premium WordPress Themes</a></li>
<li><a href="http://sixrevisions.com/web-standards/problems-with-using-website-validation-services/">Problems with Using Website Validation Services</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/sacha_greif_small.jpg" alt="" width="80" height="80" /><span class="author-bio-text"><strong>Sacha Greif</strong> is a web designer from Paris, France who specializes in user interfaces and theme design. Visit his personal site at <strong><a href="http://www.sachagreif.com" target="_blank">sachagreif.com</a>.</strong> He blogs about design at <a href="http://attackofdesign.com" target="_blank"><strong>AttackOfDesign.com</strong></a> and his latest Wordpress portfolio theme is <strong><a href="http://themeforest.net/item/silverio/103125?ref=SachaG" target="_blank">Silverio</a></strong>. Follow him on Twitter: <strong>@<a href="https://twitter.com/SachaGreif">SachaGreif</a></strong></span></p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/making-money-designing-themes-what-you-should-know/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Building Rich Internet Applications with Frameworks</title>
		<link>http://sixrevisions.com/web-development/building-rich-internet-applications-with-frameworks/</link>
		<comments>http://sixrevisions.com/web-development/building-rich-internet-applications-with-frameworks/#comments</comments>
		<pubDate>Sat, 24 Jul 2010 10:00:58 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=3694</guid>
		<description><![CDATA[
JavaScript libraries, ICEfaces, Adobe Flash 4, Microsoft Silverlight, and now, HTML5 have been competing for web dominance as the world wide web is thrown into a new era &#8212; an era dominated by rich internet applications (RIA for short).
The purpose of this article is to define what RIAs are, explain why the web has been [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sixrevisions.com/web-development/building-rich-internet-applications-with-frameworks/"><img src="http://images.sixrevisions.com/2010/07/20-01_ria_future_ld_img.png" width="550" height="200" alt="Building Rich Internet Applications with Frameworks" /></a></p>
<p>JavaScript libraries, ICEfaces, Adobe Flash 4, Microsoft Silverlight, and now, HTML5 have been competing for web dominance as the world wide web is thrown into a new era &#8212; an era dominated by rich internet applications (RIA for short).</p>
<p>The purpose of this article is to define what RIAs are, explain why the web has been moving towards RIAs, explore the different RIA frameworks that exist today, give an overview of the pros and cons for each framework, and discuss how these new technologies might coexist in the future.</p>
<p><span id="more-3694"></span></p>
<h3>What&#8217;s an RIA?</h3>
<p>An RIA, or rich internet application, is a web application that behaves like a desktop application. Before RIAs began popping up, most web applications were composed of static pages.</p>
<p><img src="http://images.sixrevisions.com/2010/07/20-02_ria_sumopaint.png" width="550" height="420" alt="What's an RIA?" /><span class="figure-caption"><a href="http://www.sumopaint.com/app/">Sumo Paint</a> is an Flash-based RIA, functioning like a graphics editor software such as Photoshop.</span></p>
<p>Unlike desktop applications, any interaction with a web page usually resulted in reloading a whole new page. Desktop applications, on the other hand, had much better user interactivity because all of the processing was being done natively on the user&#8217;s machine, resulting in a more seamless user experience.</p>
<p>As a result, software developers began to ask themselves, &quot;Should my product be a desktop application or a web application?&quot;</p>
<p>It has always been a fair question, because both types of applications have very strong pros and cons.</p>
<p>Desktop applications have smoother user interactivity, but require distribution and dealing with software updates when the software has shipped.</p>
<p>Web applications, on the other hand, are easily accessible from the web, freeing it from the problems related to software distribution and updates, but <em>were </em>very lacking in user interactivity.</p>
<p>So how can we have the best of both worlds?</p>
<p>RIAs are the best of both worlds. RIAs are distributed through the web, and have very rich user interactivity. Since the advent of <a href="http://sixrevisions.com/category/ajax/" title="Ajax category on Six Revisions - sixrevisions.com">Ajax</a>, a method for web applications to make server requests with JavaScript without reloading a web page, new technologies have been popping up left and right to join the RIA movement.</p>
<p>Among these technologies are frameworks that help developers build and deploy rich internet applications, such as JavaScript libraries, <a href="http://www.icefaces.org/main/home/">ICEfaces</a>, Adobe Flash 4 (formerly Flex 3), Microsoft Silverlight, and HTML5.</p>
<p>Let&#8217;s talk about these RIA frameworks one by one.</p>
<h3>JavaScript Libraries for Web Application Development</h3>
<p>JavaScript libraries <a href="http://sixrevisions.com/javascript/the-power-of-jquery-with-ajax/" title="The Power of jQuery with Ajax - sixrevisions.com">like jQuery</a> and MooTools were one of the first technologies to really help deploy slick and interactive rich web apps. They provided a framework for an RIA application that leveraged client-side scripting to handle front-end interface functions. They are basically JavaScript files that comprise of a collection of useful, cross-browser-tested functions for doing things with Ajax and dealing with common user interactions like hiding and showing content based on a user-driven event.</p>
<p>Some of the most popular ones today are jQuery (especially with jQuery UI), MooTools, YUI (Yahoo! User Interface library), and ExtJS. All these libraries include RIA components like grids, graphs, and complex form elements, as well as utilities to handle Ajax. Best of all, most great JavaScript libraries for web development are open source.</p>
<p>JavaScript libraries are good to use if you don&#8217;t want to pay for an integrated development environment (IDE) but still want great-looking and professional RIA functionality in your website.</p>
<p>Sites using JavaScript libraries include Google, Digg, Yahoo, Amazon, Microsoft, Twitter, and Best Buy.</p>
<h3>ICEfaces</h3>
<p>ICEfaces extend the standard <a href="http://java.sun.com/javaee/javaserverfaces/">JavaServer Faces</a> (JSF) framework and is intended to simplify the programmer&#8217;s workflow by removing JavaScript from the equation. In other words, ICEfaces handle all of the JavaScript/Ajax for your web application via Java APIs. This greatly simplifies the task of creating rich internet applications by removing some of the complexities introduced by building custom JavaScript functions.</p>
<p>ICEfaces is good to use if your team is made up mostly of Java developers, if your web application doesn&#8217;t require other complex components that ICEfaces doesn&#8217;t offer, or if your web application is <a href="http://en.wikipedia.org/wiki/Event-driven_programming" title="Event-driven programming - en.wikipedia.org">event-driven</a>. If your app is event-driven, make sure that you understand that ICEfaces doesn&#8217;t offer true &quot;server pushes&quot; in the sense that HTML5, Flash Builder 4, and Silverlight can. Instead, it uses a <a href="http://en.wikipedia.org/wiki/Push_technology#Long_polling" title="Push technology - en.wikipedia.org">long polling</a> method to simulate server push.</p>
<p>Sites using ICEfaces include Boeing, NASA, Union Pacific, T-Mobile, and Bank of America.</p>
<h3>Adobe Flash Builder 4</h3>
<p>Flash has been around for a long time, but building entire web applications out of Flash used to be more trouble than it was worth until the introduction of Flex, which is an extension to Flash that provides RIA web components.</p>
<p>What makes Adobe Flash Builder 4 so exciting is its cross-platform and cross-browser nature, allowing it to run exactly the same way across all operating systems and all browsers. Comparing it to JavaScript, where browsers have varying <a href="http://en.wikipedia.org/wiki/JavaScript_engines" title="JavaScript engine - en.wikipedia.org">JavaScript engines</a> that handle and process your code, Adobe Flash has one engine that your users install via the Adobe Flash browser plugin (which more often than not, they would already have).</p>
<p>Flash Builder 4 applications can do this because they are embedded into HTML pages, meaning that the browser itself has no effect on the application&#8217;s performance. This means that you can run even the most complex web applications correctly in IE6 if you wanted to (this is of course a simplification because the Flash plugin/engine regularly gets updated, so it would slightly depend on the user&#8217;s version of the plugin).</p>
<p>These applications are usually accompanied by server-side processing like a Java backend and need the <a href="http://en.wikipedia.org/wiki/Adobe_Flash_Builder">Flash Builder 4 IDE</a> for development.</p>
<p>Adobe Flash Builder 4 is good to use if your web application requires complex graphics, if your team is made primarily of Java developers (because it works well with Java), or if your application uses an event-driven architecture.</p>
<p>Sites using Flash for web applications include Mint.com, Flickr, and Hyundai.</p>
<h3>Silverlight</h3>
<p>Silverlight is basically Microsoft&#8217;s version of Adobe Flex/Adobe Flash. It has been gaining some traction, but doesn&#8217;t seem to be catching up to Adobe Flash in terms of popularity.</p>
<p>Silverlight applications are obviously bound to have a .NET backend because it&#8217;s a Microsoft product. This means, though, that you&#8217;ll have tighter Silverlight/.NET integration versus Adobe Flex/[some server-side scripting language like PHP].</p>
<p>Silverlight is a good option if your web application requires complex graphics, if your team is made primarily of .NET developers, or if your application uses an event-driven architecture.</p>
<p>Sites that use Silverlight include Netflix.</p>
<h3>HTML5</h3>
<p>HTML5 is the latest development in the RIA movement. HTML5 is, in essence, the result of merging the best of HTML4, JavaScript, CSS, JavaScript libraries, and Flash into a single specification that leverage the API model. HTML5 is an open technology, which means there isn&#8217;t going to be a single governing body like Adobe for Flash or Microsoft for Silverlight.</p>
<p>Since HTML5 specifications is not yet complete, and IE9 has not yet been released (read about <a href="http://sixrevisions.com/web-development/five-things-ie9-is-actually-doing-right/" title="Five Things IE9 is (Actually) Doing Right - sixrevisions.com">new IE9 features</a>), you&#8217;ll need to wait a little bit before building a production-ready HTML5 web app.</p>
<p>Currently, all major browsers support HTML5 except for IE8 (go figure). Since IE8 has a major portion of the browser market, HTML5 really won&#8217;t go mainstream until IE9 is released.</p>
<p>Once HTML5 becomes widely supported, it will be good to use if you don&#8217;t want to buy or learn an IDE (which you would need for frameworks like Flex and Silverlight), your application uses an event-driven architecture, or if you would rather use built-in HTML functionality and JavaScript APIs rather than using third-party JavaScript libraries for basic RIA functionalities. </p>
<p>Although HTML5 can handle graphics very well, using Flash and Silverlight for complex graphics and animation is still  easier/faster at the moment.</p>
<h3>The Future of RIAs</h3>
<p>Are <a href="http://sixrevisions.com/html/the-state-of-html5-apps/" title="The State of HTML5 Apps - sixrevisions.com">HTML5 apps the future of the internet</a>? Not exclusively. As long as there are creative and innovative web developers out there who are driven to create something special, there will always be new technologies that can provide amazing things that HTML5 or any other web technology won&#8217;t be able to offer.</p>
<p>Creativity and innovation are the reasons why JavaScript libraries, ICEfaces, Flash, Silverlight, and HTML5 came into existence in the first place. The <a href="http://sixrevisions.com/web-development/what-is-the-future-of-web-development/">future of the web</a> will be made up of many coexisting technologies, just like it is today.</p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/web-development/what-is-the-future-of-web-development/">What is The Future of Web Development?</a></li>
<li><a href="http://sixrevisions.com/javascript/promising_javascript_frameworks/">10 Promising JavaScript Frameworks</a></li>
<li><a href="http://sixrevisions.com/web-development/getting-started-with-the-iphone-sdk/">Getting Started with the iPhone SDK</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/user-interface/">User Interface</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://images.sixrevisions.com/authors/eric_rowell_small.jpg" alt="" width="80" height="80" /><span class="author-bio-text"><strong>Eric Rowell</strong> is a professional web developer and designer who is fascinated with everything related to the web, including RIAs, emerging technology, and social media marketing. He is the Founder and Chief Editor of <a href="http://www.webkrunk.com/"><strong>Web Krunk</strong></a> and loves HTML, HTML5, CSS, JavaScript, Ajax, jQuery, Flash, PHP and Java. You can follow him on Twitter at <strong>@<a href="http:/twitter.com/webkrunk">webkrunk</a>.</strong></span></p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/building-rich-internet-applications-with-frameworks/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>10 SEO Tips to Remember When Building Your Site</title>
		<link>http://sixrevisions.com/web-development/10-seo-tips-to-remember-when-building-your-site/</link>
		<comments>http://sixrevisions.com/web-development/10-seo-tips-to-remember-when-building-your-site/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 10:00:50 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=3630</guid>
		<description><![CDATA[
Let us assume that, just like everyone else, you are building a website&#8211;after all, the Web is where it is all happening now. As soon as your website goes live&#8211;and especially while you are still in the design and development phase&#8211;you need to make sure your site&#8217;s content will be found through search engines such [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sixrevisions.com/web-development/10-seo-tips-to-remember-when-building-your-site/"><img src="http://images.sixrevisions.com/2010/07/08-01_seo_tips_remember_ld_img.jpg" width="550" height="200" alt="10 SEO Tips to Remember When Building Your Site" /></a></p>
<p>Let us assume that, just like everyone else, you are building a website&#8211;after all, the Web is where it is all happening now. As soon as your website goes live&#8211;and especially while you are still in the design and development phase&#8211;you need to make sure your site&#8217;s content will be found through search engines such as Google, Yahoo!, and Bing where many people go to look for information.</p>
<p>Whether you&#8217;re <a href="http://sixrevisions.com/website-management/launching-blog-successfully/" title="Launching a Blog Successfully in 15 Days - sixrevisions.com">starting a blog</a> or <a href="http://sixrevisions.com/web-development/planning-your-e-commerce-website/" title="Planning your E-Commerce Website - sixrevisions.com">deploying an e-commerce solution</a> for your clients, it&#8217;s a good idea to keep in mind some good web development practices that will enhance your chances in search rankings.</p>
<p><span id="more-3630"></span></p>
<p>This article follows up on a previous Six Revisions post called <a href="http://sixrevisions.com/web_design/improve-seo-website-design/">9 Ways To Improve the SEO of Every Website You Design</a>, sharing with you a few more tips for improving the search engine optimization, semantics, web accessibility, and interoperability of your web designs.</p>
<h3>1. Use Flash Wisely</h3>
<p>Don&#8217;t call me patronising&#8211;it goes without saying&#8211;but try not to use Flash when HTML/CSS should be used. Flash has its place on the Web: it&#8217;s great for interactive components such as sophisticated learning activity games with audio and video, and 3D animation. It&#8217;s better served as components of an HTML/CSS site than as the technology that powers the entire site. For example, check out <a href="http://www.kongregate.com/">Kongregate</a>, a popular social Flash gaming site. Although Flash is their bread and butter, they still use HTML, CSS, and server-side scripting to power their site functionalities.</p>
<p><img src="http://images.sixrevisions.com/2010/07/08-02_flash_wisely.jpg" width="550" height="180" alt="Use Flash Wisely" /></p>
<p>Flash can be SEO-friendly and <a href="http://sixrevisions.com/usabilityaccessibility/adobe-flash-accessibility-best-practices-for-design/">web accessible</a>, however, it&#8217;s more difficult when compared to using open web languages like HTML, CSS, and JavaScript.</p>
<h3>2. Use Gracefully-Degrading JavaScript for Hidden Content</h3>
<p>If you are hiding and showing content on a web page, it&#8217;s best to use JavaScript so that the content is still within the web page&#8217;s markup. This is not only good for web robots such as search engines, but also great for those that use screen readers.</p>
<p><img src="http://images.sixrevisions.com/2010/07/08-03_javascript_wisely.png" width="550" height="230" alt="Use Gracefully-Degrading JavaScript for Hidden Content" /></p>
<p>A good test to see whether hidden content on a web page is viewable by web crawlers is temporarily disabling JavaScript and determining if you can read your hidden content. You can do this from within your browser settings, but more conveniently, you can use a browser plugin like <a href="http://sixrevisions.com/tools/firefox_web_developer_extension_toolbar/" title="Awesome Things That Firefox’s Web Developer Extension Can Do">Web Developer Toolbar</a>.</p>
<h3>3. Name Your Image File Names Accurately</h3>
<p>It is easy to forget how important images can be for SEO and web design alike. Name the actual file correctly by giving it a key term (e.g. <code>yellow-banana.jpg</code> and not some random name like <code>img2gtc92.jpg</code>) because this gives your site assets extra context. Make sure that you give the alt property of the image similar key terms and a decent and succinct description&#8211;aim to keep it 10 words or fewer.</p>
<p>In addition, <a href="http://images.google.com/" title="Google Images - images.google.com">Google Images</a> is another way to get traffic to your site, and if you name your image files well and give them excellent context through their alt property, you will improve your chances of showing up in Google Images results.</p>
<h3>4. Don&#8217;t Drown Your Home Page with Links</h3>
<p>Internal linking&#8211;hyperlinks that point to other web pages on your site&#8211;is important, so try not to have more than 150 links from page to page so that you don&#8217;t dilute your web pages&#8217; rank.</p>
<p><img src="http://images.sixrevisions.com/2010/07/08-04_inundate_links.png" width="550" height="180" alt="Don't Drown Your Home Page with Links" /></p>
<p>Too many internal links can overcrowd the page and can also slow down your users&#8217; ability to find the link they need.</p>
<h3>5. Don&#8217;t Use Redundant Links</h3>
<p>Some may think that increasing the value of a particular page involves repeatedly linking to the same page from another page. Search engines will only count the first instance of that link, so there is no need to repeat links. In addition, this is a poor practice that will confuse your users.</p>
<h3>6. Deep Linking Can Improve Conversions </h3>
<p>Deep linking are links that point to internal pages instead of the main/home page. It is a fantastic way for you to send power to pages deeper in your site outside of your home page. Deep linking also promotes the exploration of your site by visitors, providing additional points of conversions.</p>
<h3>7. Have a Blog</h3>
<p>Blogs are a great way to keep building fresh content on your site and targeting long-tailed key terms. A possible idea is to bring snippets of blog posts onto related pages for fresh content on these specific pages.</p>
<h3>8. Make Your Brand Obvious</h3>
<p>Make sure that your branding is very clear and that your brand name is obvious on your website. This makes for an easy way for people to remember who you are and augments the possibility of people searching for your brand name on search engines. Being searched by your brand&#8217;s name also means that you won&#8217;t compete with generic words that people often use in searches (i.e. &quot;budwieser&quot; versus &quot;american beer&quot;).</p>
<h3>9. Use an XML Sitemap</h3>
<p>An <a href="http://www.sitemaps.org/">XML Sitemap</a> is a protocol that aids search engine crawlers gain contextual meaning about your site&#8217;s web page.</p>
<p><img src="http://images.sixrevisions.com/2010/07/08-05_sitemapsdotorg.png" width="550" height="365" alt="Use an XML Sitemap" /></p>
<p>If you&#8217;re <a href="http://sixrevisions.com/web-development/how-to-evaluate-what-cms-to-use/" title="How to Evaluate What CMS to Use - sixrevisions.com">using a content management system</a>, see if it has an XML Sitemap extension (or built-in feature) that will automatically generate the XML file for you. If not, you can use a tool like <a href="http://www.xml-sitemaps.com/">XML Sitemaps Generator</a>.</p>
<h3>10. Use Anchor Text Accurately for Deeper Pages</h3>
<p>When linking through to your deeper pages, use your anchor text as precise and short pieces of information. It is important to use keywords that search engine bots can relate exactly to your page. For example, if you&#8217;re linking to a web page about Maldives holidays, your link should be <code>&lt;a href=&quot;/maldives-holidays.html&quot;&gt;Maldives holidays&lt;/a&gt;</code>. This way people, as well as web robots, easily know what they are going to get.</p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/category/content-strategy/">Make the Most Out of Social Media</a></li>
<li><a href="http://sixrevisions.com/wordpress/optimizing-wordpress-for-search-engines/">Optimizing WordPress for Search Engines</a></li>
<li><a href="http://sixrevisions.com/tools/tools_monitoring_website_popularity/">15 Tools for Monitoring a Website’s Popularity</a></li>
<li><em>Related categories:</em> <a href="http://sixrevisions.com/category/website-management/">Website Management</a> and <a href="http://sixrevisions.com/category/content-strategy/">Content Strategy</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://images.sixrevisions.com/authors/mark_cronin_small.jpg" alt="" width="80" height="80" /><strong>Mark Cronin</strong> heads up the <strong><a href="http://www.freshegg.com/">SEO</a></strong> team for a <strong><a href="http://www.africasky.co.uk/">Safari holidays</a></strong> Tour Operator. Follow mark on Twitter as <strong>@<a href="http://twitter.com/MarcusSeo">MarcusSeo</a></strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/10-seo-tips-to-remember-when-building-your-site/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>5 Good Habits That Will Make You a Better Coder</title>
		<link>http://sixrevisions.com/web-development/5-good-habits-that-will-make-you-a-better-coder/</link>
		<comments>http://sixrevisions.com/web-development/5-good-habits-that-will-make-you-a-better-coder/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 14:00:40 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=3583</guid>
		<description><![CDATA[
We all want to grow in the things we do, and in the field of web development, one of the main areas that we spend a lot of time on is our code. This could include HTML, CSS, JavaScript, PHP, Python, ActionScript or any other language that you may choose to use for building websites.
In [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sixrevisions.com/web-development/5-good-habits-that-will-make-you-a-better-coder/"><img src="http://images.sixrevisions.com/2010/07/01-01_better_coder_ld_img.jpg" width="550" height="200" alt="5 Good Habits That Will Make You a Better Coder" /></a></p>
<p>We all want to grow in the things we do, and in the field of web development, one of the main areas that we spend a lot of time on is our code. This could include HTML, CSS, JavaScript, PHP, Python, ActionScript or any other language that you may choose to use for building websites.</p>
<p>In this article, I&#8217;ll share some practical steps that you can take to expand your skill set and become a better coder. I would like to propose five different habits that you can adapt in order to help yourself become more excellent at what you do.</p>
<p><span id="more-3583"></span></p>
<h3>1. Focus on One Type of Language at a Time</h3>
<p>If you are designing and developing for the web, there are often <a href="http://sixrevisions.com/web-technology/web-languages-decoded/" title="Web Languages: Decoded - sixrevisions.com">numerous different languages</a> that you will need to familiarize yourself with, and it can be tempting to try to learn them all at once, especially considering how interconnected they all are.</p>
<p>I suppose that, to some degree, this is inevitable. But if you really want to improve quickly, I recommend focusing on one particular area of expertise. Do you want to get better at using CSS? Put your focus on that. Try using a single HMTL document and creating various layouts using nothing but styles. The <a href="http://www.csszengarden.com/">CSS Zen Garden</a> is a great example of how incredibly different your web page can become for the same markup. You can also focus your efforts by finding a list of elements and working through them. For instance, if you are comfortable with CSS2, but want to improve your understanding of <a href="http://sixrevisions.com/css/css3-techniques-you-should-know/" title="CSS3 Techniques You Should Know - sixrevisions.com">what is possible with CSS3</a>, you could study CSS3 properties and start working through them one by one. You can read the current <a href="http://www.w3.org/Style/CSS/">CSS3 specifications</a>. You can experiment with each module to see what it can (and cannot) do on what browsers.</p>
<p>You could use a similar approach to scripting languages like  JavaScript and PHP, though trying to work through all of their functions methodically might be a little tedious. Another option would be to work through a number of tutorials specifically on these languages, preferably in the specific area that you work in the most.</p>
<p>Do you need to become better at WordPress development? There is <a href="http://sixrevisions.com/wordpress/30-excellent-wordpress-video-tutorials/" title="30 Excellent WordPress Video Tutorials - sixrevisions.com">a ton of tutorials about that</a>. Want to learn more about server-side image manipulation? There are tutorials for that too. Find them, bookmark them, and work through them &#8212; just don&#8217;t do it while you are also going through tutorials about CSS, HTML5, or any other web language so that you&#8217;re not spreading yourself too thinly.</p>
<p>Pick one and stick to it until you master it, then move on to the next.</p>
<h3>2. Write Your Logic through Comments</h3>
<p>When it comes to coding, there are many tenets and ideas I stand by. One of this is that <strong>code is 95% logic.</strong> Another is that logic doesn&#8217;t change when translated from human language into a programming language.</p>
<p>What this means is that if you can write it in code, you can write it in a spoken language like English or French.</p>
<p>For example, suppose that I wanted to write a function that would either lock or unlock something based on the time of day (for what reason, I&#8217;m not sure). Instead of just jumping into coding the function, I could step back and write the logic in plain English as comments.</p>
<h4>Example</h4>
<pre>
// FUNCTION: Lock On Time
// This function will accept two time values, indicating the range through
// which it should return an unlocked status.
  
  // Create a new data object

  // Using the data object, get the current time
  
  // IF the current time falls within the range passed to the function

    // Return false – meaning that we are currently unlocked

  // ELSE

    // Return true – meaning that we are currently locked.

  // ENDIF

// END FUNCTION</pre>
<p>Here, we have the complete logic structure for our function, which is almost analogous to a blueprint in building a house. From here, I can then start adding in the actual code, allowing the comments to guide the process.</p>
<p>Obviously, this is a very simplistic example, but I do use this technique on a regular basis when I need to build a function that is notably more complex. This way, I can think through the full logic and try to iron out the wrinkles before I actually get into writing the code. I&#8217;ve found this to be an incredibly valuable habit that tends to result in fewer bugs.</p>
<p>As a bonus, since I will rarely actually delete the comments, writing the logic through comments also means that my code will already be documented, making it easier for others to follow my logic if they ever have to work on it, or even just for myself, if I have to come back to it several months or years down the road!</p>
<h3>3. Study Templates, Plugins, and Open Source Code</h3>
<p>The web is an incredibly accessible and open place, especially in the design a development communities. This disposition of the web can be a valuable resource for anyone wanting to become a better coder.</p>
<p>For example, if you&#8217;re really just getting started with HTML, you could download any of the innumerable <a href="http://sixrevisions.com/freebies/web-page-templates/free-xhtml-template-pack-luxury-classic/" title="Example of a free template you can download and study: Free XHTML Template Pack: Classic Luxury - ">free templates</a> that exist out there on the internet, or study your favorite site&#8217;s markup. Because these templates are typically just plain HTML (and CSS, and maybe JavaScript), they&#8217;re able to work locally, giving you the opportunity to open up the source and start digging around. Play around with tags and structure to understand them better. Move things around. See what happens when you modify a style rule.</p>
<p>Of course, I would highly recommend coupling this experimentation with reading some solid resources about <a href="http://sixrevisions.com/category/web-standards/" title="Web Standards category on Six Revisions - sixrevisions.com">standards</a> and best practices. After all, you don&#8217;t want to find yourself getting into bad coding habits.</p>
<p>This technique is probably even more useful for programmatic coding like JavaScript or PHP, which are quite a bit more complex than HTML or CSS in terms of scope and logic.</p>
<p>For instance, a content management system like <a href="http://sixrevisions.com/category/wordpress/" title="WordPress category - sixrevisions.com">WordPress</a> is built almost entirely upon a foundation of various PHP scripts that all work together to establish the core functionalities. The publishing platform also supports a vast and powerful architecture for extending that core functionality, allowing you to download and install plugins that do all sorts of cool (and sometimes entirely mundane) things.</p>
<p>The benefit of all this is that WordPress and its plugins are entirely open source, meaning that you have complete access to all the code. So, go ahead and take advantage of this fact by digging into the plugins and poking around the code. Again, this is a great opportunity to try things and experiment.</p>
<p>One last word of advice on this  habit: Never take the techniques or structures that you find in other people&#8217;s code as definitive (or &quot;gospel&quot;) &#8212; <strong>be sure that you&#8217;re also trying to understand what&#8217;s going on</strong> and not just mimicking someone else&#8217;s code. Always ask why things are the way they are. Always try to consider the code as it relates to the accepted processes and standards for that particular language. Again, this will help keep you from slipping into some bad habits.</p>
<h3>4. Read Books</h3>
<p>While there is a ton of <a href="http://sixrevisions.com/resources/fresh-design-blogs-you-should-be-reading/" title="50 Fresh Design Blogs You Should Be Reading - sixrevisions.com">awesome information on various blogs</a> out here on the web (like right here on Six Revisions), there is still nothing quite like reading a good book on a subject. Blogs are great for articles and tutorials on specific subjects and can work wonders for quick tips, but in my view, nothing beats a good book for helping to build a strong foundational understanding of a larger subject.</p>
<p>This has never been made clearer to me than when I finally grew tired of the table-based layouts that I had been creating in the late 90s and into the early 21st century. At that time, I finally realized that it was time for me to switch over to best practices (<code>div</code>s).</p>
<p>However, up to that point, I only had moderate success trying to teach myself how to use proper markup. I didn&#8217;t fully understand CSS selector syntax, which is such a huge part of grokking <code>div</code>-based layouts. As such, I really didn&#8217;t get pseudo-classes either (such as <code>:hover</code>), and the whole concept of specificity and inheritance meant nothing to me. The same was true of positioning and floats.</p>
<p>Now, I could probably have learned the language slowly, piecing together bits of information from various blogs (of which there were far fewer at the time, I might add) to form a more comprehensive picture of CSS as a whole. That would have taken a lot of time and I had jobs to do, and so I was looking for a more expedient solution.</p>
<p>So, I went out and bought <em>Stylin&#8217; With CSS</em> by Charles Wyke-Smith. It was a revelation. In just a few short chapters, I had the basic concepts of CSS down. All those things that I didn&#8217;t even know existed were made known to me in a well-paced and organized fashion, with each chapter building on the one before. In about a day&#8217;s worth of reading, I gained the same amount of knowledge that would have taken me weeks and months to pull out of a wide assortment of articles and blog entries.</p>
<p><img src="http://images.sixrevisions.com/2010/07/01-02_better_coder_styling_css.jpg" width="300" height="365" alt="Stylin CSS" /></p>
<p>Of course, I&#8217;ve learned a lot more since then, but this single book was really the foundation of my CSS knowledge, and I still keep it on my shelf as a reference (it has a really handy appendix).</p>
<p>If you need to dig into a new technology from scratch, a good book is one of the best ways of going about it!</p>
<h3>5. Experiment</h3>
<p>The last thing that I would suggest you should get in the habit of is to just <strong>have fun.</strong> Sit down, experiment and see what you can come up with on your own.</p>
<p>Currently, this is a popular trend with <a href="http://sixrevisions.com/css/css3-techniques-you-should-know/" title="CSS3 Techniques You Should Know - sixrevisions.com">CSS3</a>, as different coders try to push the technology and techniques in order to discover what it is truly capable of.</p>
<p>Here are just a few examples of such experiments.</p>
<h4><a href="http://neography.com/journal/css-transforms-font-face-experiment/">CSS3 Transforms &amp; @font-face Experiment</a></h4>
<p><img src="http://images.sixrevisions.com/2010/07/01-03_css_poster.jpg" width="550" height="306" alt="CSS3 Transforms &amp; @font-face Experiment" /></p>
<p>This is a really cool experiment that creates a poster-like typographical design using the <a href="http://sixrevisions.com/css/font-face-guide/" title="The Essential Guide to @font-face - sixrevisions.com">@font-face CSS property</a>, along with some shadows and the amazing rotate transform, which, when fully supported by all browsers, will open all kinds of amazing new possibilities in web design.</p>
<h4><a href="http://designinformer.com/css-posters/">CSS Posters</a></h4>
<p><img src="http://images.sixrevisions.com/2010/07/01-04_poster_design_informer.png" width="550" height="359" alt="CSS Posters" /></p>
<p>In this article over at Design Informer, Jad Limcaco experiments on creating a number of different poster designs using nothing but CSS.</p>
<h4><a href="http://cssglobe.com/post/4175/pure-css-line-graph">Pure CSS Line Graph</a></h4>
<p><img src="http://images.sixrevisions.com/2010/07/01-07_line_graph.jpg" width="550" height="438" alt="Pure CSS Line Graph" /></p>
<p>There are tons of different tutorials out there that demonstrate <a href="http://sixrevisions.com/css/css_techniques_charting_data/">how to create bar graphs using CSS</a>. This one uses a different approach to visualizing data by using an actual line graph. Depending on your point of view, you might not think it&#8217;s &quot;pure&quot; CSS since it makes use of a giant sprite, but it&#8217;s still pretty darned cool.</p>
<h4><a href="http://gordonbrander.com/lab/css3-stacks/">CSS3 Leopard-style Stacks</a></h4>
<p><img src="http://images.sixrevisions.com/2010/07/01-05_safari.jpg" width="550" height="380" alt="CSS3 Leopard-style Stacks" /></p>
<p>This article illustrates an excellent attempt at trying to recreate a non-web effect using CSS by visually emulating one behavior from the Mac operating system. It&#8217;s pretty well done too, so check it out to be inspired.</p>
<h4><a href="http://www.subcide.com/articles/pure-css-twitter-fail-whale/">Pure CSS Twitter Fail Whale</a></h4>
<p><img src="http://images.sixrevisions.com/2010/07/01-06_twitter_failwhale.png" width="550" height="391" alt="Pure CSS Twitter Fail Whale" /></p>
<p>Not all CSS experiments are entirely practical, of course, and this one is probably the least practical of all as it actually recreates the well-known Twitter fail whale illustration using nothing but CSS. Is it time-consuming? Yes. Is it practical? No. But it&#8217;s certainly fun and is a proof of concept of how powerful CSS is.</p>
<p>All of these experiments do compelling things with CSS. Some have more real-world applications than others, but I&#8217;m sure that all of their creators actually took something away from their exploration of CSS; perhaps a better understanding of the particular CSS properties  they were working with or a few techniques that they will be able to apply to actual site designs.</p>
<p>What kind of coding experiment can you undertake? It can be a fun and effective way to learn.</p>
<h3>Some Parting Words</h3>
<p>So there you have it: five different habits to take on to improve your coding expertise. Not all of these will be relevant to everyone, but I hope that you will be able to find at least one habit that appeals to you.</p>
<p>Remember that this place called the internet is always growing and evolving. Being a great coder means a lifetime of learning and growing.</p>
<p>I hope you enjoy your journey.</p>
<p><strong><em>What are other good habits to get into as a coder?</em></strong></p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/web_design/why-designers-should-learn-how-to-code/">Why Designers Should Learn How to Code</a></li>
<li><a href="http://sixrevisions.com/resources/10-puzzle-websites-to-sharpen-your-programming-skills/">10 Puzzle Websites to Sharpen Your Programming Skills</a></li>
<li><a href="http://sixrevisions.com/web_design/collaboration-tips-for-designers-working-with-developers/">Collaboration Tips for Designers Working with 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/web_design/">Web Design</a></li>
</ul>
<h3>About the Author</h3>
<p class="about-author"><img src="http://images.sixrevisions.com/authors/matt_ward_small.jpg" alt="" width="80" height="80" /><strong>Matt Ward</strong> is a digital artist who lances freely under the moniker of <strong><a href="http://www.echoenduring.com/">Echo Enduring Media</a></strong>, and specializes in graphics design, illustration and writing. Check out his <strong><a href="http://blog.echoenduring.com/">blog</a></strong> to read posts on design. You can follow him on <strong><a href="http://twitter.com/echoenduring" target="_blank" title="Follow Matt On Twiter">Twitter</a>.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/5-good-habits-that-will-make-you-a-better-coder/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Getting Started with the iPhone SDK</title>
		<link>http://sixrevisions.com/web-development/getting-started-with-the-iphone-sdk/</link>
		<comments>http://sixrevisions.com/web-development/getting-started-with-the-iphone-sdk/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 13:43:17 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=3590</guid>
		<description><![CDATA[
This article is a general overview of making iPhone apps using the iPhone software development kit (SDK).
In order to start making your own iPhone apps, you&#8217;ll need to sign up for a free Apple Developer account and download the iPhone SDK.

What&#8217;s the iPhone SDK?
Apple has bundled a ton of great resources into a mega 2GB [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sixrevisions.com/web-development/getting-started-with-the-iphone-sdk/"><img src="http://images.sixrevisions.com/2010/07/03-01_iphone_sdk_guide_ld_img.jpg" width="550" height="200" alt="Getting Started with the iPhone SDK" /></a></p>
<p>This article is a general overview of making iPhone apps using the <strong>iPhone software development kit (SDK).</strong></p>
<p>In order to start making your own iPhone apps, you&#8217;ll need to <a href="http://developer.apple.com/iphone/index.action">sign up for a free Apple Developer account</a> and download the iPhone SDK.</p>
<p><span id="more-3590"></span></p>
<h3>What&#8217;s the iPhone SDK?</h3>
<p>Apple has bundled a ton of great resources into a mega 2GB download that contains help files, documents and three very important apps: <strong>Xcode, Interface Builder and iPhone Simulator.</strong> All of these apps also work for the creation of iPad apps.</p>
<p>Let&#8217;s take a quick look at the three apps and see what they do.</p>
<h3>Xcode</h3>
<p><img src="http://images.sixrevisions.com/2010/07/03-02_xcode.jpg" width="550" height="204" alt="Xcode" /></p>
<p><a href="http://developer.apple.com/technologies/tools/xcode.html">Xcode</a> is the integrated development environment (IDE) of the SDK and the main app you&#8217;ll be using when creating your apps.</p>
<p>It&#8217;s similar in interface to the popular <a href="http://www.panic.com/coda/">Coda</a> IDE for website development, but it&#8217;s much, much more powerful since it&#8217;s built to specifically handle <a href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html">Objective-C</a> (the programming language used on Mac OS X and <a href="http://www.apple.com/iphone/ios4/">iOS</a>) and <a href="http://developer.apple.com/technologies/mac/cocoa.html">Cocoa</a> (Apple&#8217;s development framework).</p>
<p>When coding, you&#8217;ll find that Xcode offers code completion and hints that can greatly speed up your development time. Typing in 3 or 4 characters will often result in Xcode choosing the right method or option you&#8217;re trying to type and even remembers classes and object names you&#8217;ve created. Xcode also comes with documentation that can be accessed by pressing the Option key and doubling-clicking on the methods.</p>
<p>Xcode offers different project types depending on the kind of app you&#8217;re planning on building. <strong>Projects</strong> are the files and resources that make up your app and they&#8217;re bundled together by the SDK. Most of them never need to be edited, but are required for the app to run.</p>
<h4>Starting a New Project in Xcode</h4>
<p>If you go to File &gt; New Project (Shift + Command + N), you&#8217;ll see the different project types that Xcode offers.</p>
<p>The <strong>View-Based Application</strong> option is probably the most common type for beginners. Select it, hit the Choose button and then give your project a name and a place to save it.</p>
<p>Choosing a project type allows Xcode to build and link the core files and resources together.</p>
<p>The left-hand column is called the <strong>Groups &amp; Files</strong> pane. The Groups &amp; Files pane contains all of the files and resources that were created when you selected the View-Based Application project type.</p>
<p>If you expand the tree underneath the name of your project (using the triangle), you&#8217;ll see that there are five folders contained underneath it. Let&#8217;s go over what these folders are.</p>
<p><strong>Classes folder: </strong>Most of the time, you&#8217;ll be using the files contained within the Classes folder. The Classes folder simply contains all of the Objective-C classes you&#8217;ll be creating. The two most important files you&#8217;ll be editing are called <code><em>your_project_name</em>_ViewController.h</code> and <code><em>your_project_name</em>_ViewController.m.</code></p>
<p><strong>Other Sources folder: </strong>This folder contains all of the classes that aren&#8217;t in Objective-C.</p>
<p><strong>Resources folder: </strong>The Resources folder contains all the files, images, sound files, movies, etc. that belong to your app. Any resource you want to use within your app has to be placed here while in test mode unless you&#8217;re using the iPhoto or Address Book APIs. This folder also contains your <code><em>your_project_name</em>_ViewController.xib</code> file. Doubling-clicking this file opens up Interface Builder, allowing you to begin seeing what the user sees (more on this topic later down the article).</p>
<p><strong>Frameworks folder: </strong>The Frameworks folder can contain both code and resources and common frameworks that are already included.</p>
<p><strong>Products folder: </strong>The Products folder contains the actual app that is produced when you compile your project. If you expand this folder without having compiled your project, you&#8217;ll see <code><em>you_project_name</em>.app</code> in red because it won&#8217;t exist.</p>
<h4>Xcode&#8217;s Detail Pane and Editor Pane</h4>
<p>In the right-hand column, you&#8217;ll see we have two different panes. The top pane is called the <strong>Detail</strong> pane and it shows you information about the files inside Groups &amp; Files. You probably won&#8217;t use this pane very often, so you can minimize it some by clicking and dragging up the bottom portion.</p>
<p>The pane beneath the Detail pane is the <strong>Editor</strong> pane. This is where all your coding happens! If you click one of the files under your Classes folder in the Groups &amp; Files pane, the file will appear in the Editor where you can then work on it.</p>
<p>Now that we&#8217;ve taken a tour of Xcode, let&#8217;s check out the second most important app: Interface Builder.</p>
<h3>Interface Builder</h3>
<p><img src="http://images.sixrevisions.com/2010/07/03-03_interface_builder.jpg" width="550" height="204" alt="Interface Builder" /></p>
<p>One of the coolest things about iPhone development is that making the apps requires a lot less code than you would think, thanks to the Interface Builder. </p>
<p>Open Interface Builder by double-clicking the <code><em>your_project_name</em>ViewController.xib</code> file under the Resources folder in the Groups &amp; Files pane of Xcode. Interface Builder opens as a series of four windows.</p>
<p>You can think of the Interface Builder as sort of a visual WYSIWYG for the iPhone, but it&#8217;s much more than that. It never produces ugly code, and in fact, you&#8217;ll never see the code. It&#8217;s also built with Apple&#8217;s design guidelines and grids to ensure you&#8217;re app doesn&#8217;t come out as the ugly stepchild!</p>
<p>The <strong>Library</strong> window gives you all the views and controls that you can simply drag and drop onto your interface (the module marked as &quot;Window&quot;).</p>
<p>The <strong>Inspector</strong> window is where all of your settings and controls lie. This window actually contains four different views that you can access by clicking one of the top icons or by pressing Command + 1-4 to access each view.</p>
<p><strong>Attributes: </strong>The first window shows the object&#8217;s attributes. You can change fonts, colors and sizes from this window.</p>
<p><strong>Connections: </strong>shows the available ways you can connect the object to an action. For example, buttons have a ton of connections such as <em>Touch Up Inside</em> and <em>Touch Drag Outside</em> that all correspond to how a user may interact with your object.</p>
<p><strong>Size: </strong>The Size window allows you to adjust the size, alignment and positioning of the object on the window. This view will be most helpful when dealing with repositioning of the app due to horizontal and vertical views (rotation of the iPhone).</p>
<p><strong>Identity: </strong>This view is less used than the others but it gives you the ability to set class names, as well as what the object is and does.</p>
<h4>Other Important Features of Interface Builder</h4>
<p>The smaller window marked <code><em>your_project_name</em>ViewController.xib</code> contains icons that represent each Objective-C class that was created when you started a new project &#8212; with the exception of the first two icons.</p>
<p>The first icon &#8212; <strong>File&#8217;s Owner</strong> &#8212; represents the object that loaded your .xib file (which is commonly referred to as a &quot;nib&quot; file &#8212; confusing, I know).</p>
<p>The First Responder icon represents the object or control the user is interacting with &#8212; for example, a text field or a button.</p>
<p>The coolest thing about Interface Builder is how it connects to Xcode. After you&#8217;ve coded your objects and actions in Xcode, you&#8217;ll switch over to Interface Builder to create what the user actually sees.</p>
<p>Then, to connect the objects in Interface Builder to what you&#8217;ve coded, you simply Command + click and drag from the File&#8217;s Owner icon in the Untitled Window to the object to assign it. You can also do the same to assign an action to the button.</p>
<h3>iPhone Simulator</h3>
<p>The iPhone Simulator does just what it promises &#8212; it gives you a realistic simulator of how your app will look and work on a real iPhone. It even allows you to hit the Home button to view the app&#8217;s icon.</p>
<p>You can also use the simulator to view apps on the iPad and even to open Safari and view websites on.</p>
<h4>Testing on a Real iPhone</h4>
<p>If you want to use a real iPhone to test on, you&#8217;ll need to pay Apple&#8217;s <a href="http://developer.apple.com/programs/mac/">Mac Developer Program</a> membership fee. An Apple Developer account is free, but in order to put your apps on your own iPhone or sell it in the Apple Store, you must sign up and pay $99 for the privilege.</p>
<h3>Further Reading on iPhone Apps</h3>
<p>Now that you&#8217;ve taken a tour of the SDK, it&#8217;s time to start building apps! I&#8217;ve been using a ton of resources to help me learn more about the process, so I&#8217;d thought I&#8217;d share a few of my favorites with you here.</p>
<h4><a href="http://www.amazon.com/gp/product/1430224592?ie=UTF8&amp;tag=portofambewei-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1430224592">Beginning iPhone 3 Development</a> by Dave Mark</h4>
<p>This is an excellent book for beginners. The apps work (no code errors) and it&#8217;s easy to follow along even if you have no Objective-C experience.</p>
<h4><a href="http://itunes.apple.com/us/podcast/onmacdevelopment/id329872824">OnMacDevelopment</a></h4>
<p>This is a video podcast offering tutorials and topics on Mac and iPhone development.</p>
<h4><a href="http://mobile.tutsplus.com/">MobileTuts</a></h4>
<p>I tend to skim through these posts quickly, but they often have interesting topics.</p>
<h4><a href="http://www.amazon.com/gp/product/0307463745?ie=UTF8&amp;tag=portofambewei-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0307463745">Rework</a> and <a href="http://gettingreal.37signals.com/toc.php">Getting Real</a> by 37signals</h4>
<p>While not specifically about iPhone apps, these two books can inspire you in the business side of making apps, launching your projects well, and development practices.</p>
<p><strong><em>Have you used the iPhone SDK before? What are your thoughts on it? Do you have any excellent beginner resources to share?</em></strong></p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/web-development/html5-iphone-app/">How to Make an HTML5 iPhone App</a></li>
<li><a href="http://sixrevisions.com/web_design/10-iphone-apps-every-web-designer-should-know-about/">10 iPhone Apps Every Web Designer Should Know About</a></li>
<li><a href="http://sixrevisions.com/user-interface/20-killer-iphone-game-designs/">20 Killer iPhone Game Designs</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://images.sixrevisions.com/authors/amber_weinberg_small.jpg" alt="" width="80" height="80" /><span class="author-bio-text"><strong>Amber Weinberg</strong> is a freelancer with over 10 years of experience. She&#8217;s the founder of <a href="http://codesnipp.it/"><strong>codesnipp.it</strong></a>, a social site for developers. She specializes in clean, semantic and valid 1.0 Strict XHTML, CSS and WordPress development. She also writes a web development blog on her portfolio site at&nbsp;<a href="http://www.amberweinberg.com" target="_blank"><strong>www.amberweinberg.com</strong></a><strong>.</strong></span></p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/getting-started-with-the-iphone-sdk/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Top 10 Flash Content Management Systems</title>
		<link>http://sixrevisions.com/web-development/top-10-flash-content-management-systems/</link>
		<comments>http://sixrevisions.com/web-development/top-10-flash-content-management-systems/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 15:00:09 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=3529</guid>
		<description><![CDATA[
When it comes to Flash, there are some conflicting views. There is a misconception that that Flash web pages are not seen by search engines and can&#8217;t be indexed at all. Others reckon that Flash sites are not user-friendly and load for ages.
If you are one of those individuals who&#8217;ve overlooked and ignored Flash as [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sixrevisions.com/web-development/top-10-flash-content-management-systems/"><img src="http://images.sixrevisions.com/2010/06/26-01_top_flash_cms_ld_img.jpg" width="550" height="200" alt="Top 10 Flash Content Management Systems" /></a></p>
<p>When it comes to <a href="http://sixrevisions.com/category/flashactionscript/" title="Flash/ActionScript category on Six Revisions - sixrevisions.com">Flash</a>, there are some <a href="http://sixrevisions.com/web-development/issues-with-apples-decision-to-block-flash/">conflicting views</a>. There is a misconception that that Flash web pages are not seen by search engines and can&#8217;t be indexed at all. Others reckon that Flash sites are not user-friendly and load for ages.</p>
<p>If you are one of those individuals who&#8217;ve overlooked and ignored Flash as a <a href="http://sixrevisions.com/web-development/how-to-evaluate-what-cms-to-use/" title="How to Evaluate What CMS to Use - sixrevisions.com">viable CMS</a>, I hope this post will make you look twice.</p>
<p><span id="more-3529"></span></p>
<h3>1. <a href="http://www.flashmoto.com">FlashMoto Flash CMS</a></h3>
<p><img src="http://images.sixrevisions.com/2010/06/26-02_flashmotocms.jpg" width="550" height="335" alt="FlashMoto Flash CMS" /></p>
<p><a href="http://www.flashmoto.com/demo">FlashMoto Flash CMS Demo</a></p>
<p>FlashMoto is an advanced Flash content management system that allows users to create fully editable, extensible and SEO-friendly Flash websites and easily manage them. FlashMoto is intended for Flash developers, freelancers and design studios that are engaged in creating custom Flash sites or modifying web templates. It provides an opportunity to create a website of any complexity, starting from an online business card to a full-fledged portfolio.</p>
<p>So far, there is no way to create multiple accounts for the CMS. In theory, FlashMoto allows the replacement of one template by another (but profound Flash skills required).</p>
<h4>System Requirements</h4>
<ul>
<li>PHP 5.2+</li>
<li>Zend Optimizer v3.3 and higher</li>
</ul>
<h4>Pricing</h4>
<p>The standalone version of FlashMoto CMS costs $199, while one template + CMS costs around $250.</p>
<h3>2. <a href="http://www.royalecms.com/">Royale/CMS</a></h3>
<p><img src="http://images.sixrevisions.com/2010/06/26-03_royalecms.jpg" width="550" height="392" alt="Royale/CMS" /></p>
<p><a href="http://demo.cmslog.com/">Royale/CMS Demo</a></p>
<p>Royale CMS is a rebrandable content management system created by an interactive agency for agencies and freelancers. With this CMS, you may create the structure that fits your design. They make an emphasis on the rebranding feature: users may upload their own logo and change the colors. Royale CMS is specifically designed for websites that typically use external XML data.</p>
<h4>System Requirements</h4>
<ul>
<li>Apache 2 (or higher) with mod_rewrite</li>
<li>PHP 5.2 with GD library 2 (or higher)</li>
<li>MySQL 5.1 (or higher)</li>
</ul>
<h4>Pricing</h4>
<p>One license costs $199.</p>
<h3>3. <a href="http://www.saffronflashcms.com/">Saffron Flash CMS</a></h3>
<p><img src="http://images.sixrevisions.com/2010/06/26-04_saffroncms.jpg" width="550" height="257" alt="Saffron Flash CMS" /></p>
<p><a href="http://saffronflashcms.com/saffron/cms.php">Saffron Video Tour</a></p>
<p>Saffron CMS is a WYISWYG content management system for Flash-based websites. It is a set of seven readymade components and a controller component that can be incorporated into a Flash-based website and the website content can be updated without leaving the browser window.</p>
<h4>System Requirements</h4>
<ul>
<li>Adobe/Macromedia Flash MX/MX 2004/8, or Flash CS3 (Windows or Mac)</li>
<li>ActionScript 2.0</li>
</ul>
<h4>Pricing</h4>
<p>Saffron CMS costs $129.00.</p>
<h3>4. <a href="http://www.flashloaded.com/flashcomponents/fcmspro/">fCMSPro</a></h3>
<p><img src="http://images.sixrevisions.com/2010/06/26-05_fcmspro.jpg" width="550" height="387" alt="fCMSPro" /></p>
<p><a href="http://www.flashloaded.com/flashcomponents/fcmspro/screencastA.html">fCMSPro Screencast</a></p>
<p>fCMSPro is a Flash component from Flashloaded. It is a solid Flash content management system that provides a lot of useful features for fast and easy Flash website management. Like any other CMS, it makes it possible for users to update content directly on a live website. Websites created with fCMSPro are search-engine-friendly.</p>
<h4>System Requirements</h4>
<ul>
<li>Adobe/Macromedia Flash 8, Flash CS3+</li>
<li>Flash Player 8, 9 or 10</li>
<li>ActionScript 2.0</li>
<li>PHP version 4.3.0 or higher</li>
<li>MySQL 4.1.1 or higher</li>
</ul>
<h4>Pricing</h4>
<p>fCMSPro costs $ 299 (per website).</p>
<h3>5. <a href="http://www.yooba.com/">Yooba CMS</a></h3>
<p><img src="http://images.sixrevisions.com/2010/06/26-06_yoobacms.jpg" width="550" height="187" alt="Yooba CMS" /></p>
<p><a href="http://www.yooba.com/en/Product/View-demo/">Yooba CMS Live Demo</a></p>
<p>Yooba is one of the convenient Flash content management systems that allow users to create rich-media content without having to be a programmer. The user interface looks and works just like any application installed on your computer. Yooba comes in two different account types: Professional (monthly subscription) and Enterprise (annual subscription).</p>
<h4>System Requirements</h4>
<p>As hosting is included, you don&#8217;t have to worry about the system requirements.</p>
<h4>Pricing</h4>
<p>Yooba price depends on the account type and subscription period.</p>
<h3>6. <a href="http://flashblocks.com/">Flashblocks</a></h3>
<p><img src="http://images.sixrevisions.com/2010/06/26-07_yoobacms.jpg" width="550" height="318" alt="Flashblocks" /></p>
<p><a href="http://www.sketchography.com/demoSite/flashblocks_demoSite.php">Flashblocks Live Demo</a></p>
<p>Flashblocks is a simple Flash content management system aimed mostly at Flash designers. It provides easy ways to create, update, and arrange Flash content from any web browser.</p>
<h4>System Requirements</h4>
<ul>
<li>Flash MX, 8, CS3, CS4 or CS5</li>
<li>ActionScript 2.0</li>
<li>PHP 4-6 on the server and GD2.0 for image processing</li>
</ul>
<h4>Pricing</h4>
<p>Flashblocks initially costs $240 with additional licenses being substantially less.</p>
<h3>7. <a href="http://www.flashcontentmanager.com/index.html">FlashContentManager</a></h3>
<p><img src="http://images.sixrevisions.com/2010/06/26-08_flashblockscms.jpg" width="550" height="402" alt="FlashContentManager" /></p>
<p><a href="http://www.flashcontentmanager.com/demo.html">FlashContentManager Demo</a></p>
<p>FlashContentManager is a simple File Manager developed for Flash websites with external content that allows users to update text, images, SWFs, MP3s, etc. directly on a live website. It is aimed at both Flash designers and end-users.</p>
<h4>System Requirements</h4>
<ul>
<li>PHP enabled server</li>
<li>GD extension in PHP</li>
</ul>
<h4>Pricing</h4>
<p>FlashContentManager costs €50.</p>
<h3>8. <a href="http://www.flypaper.com/">Flypaper</a></h3>
<p><img src="http://images.sixrevisions.com/2010/06/26-10_flypaper.jpg" width="550" height="316" alt="Flypaper" /></p>
<p><a href="http://www.flypaper.com/product/view-demos">Flypaper Demo</a> (Registration Needed)</p>
<p>The Flypaper Platform was designed specifically for agencies and companies that create and use interactive content. Non-technical users can create content without Flash skills and programming knowledge.</p>
<h4>System Requirements</h4>
<ul>
<li>Windows 7, Windows Vista or Windows XP (Service Pack 2 and above)</li>
<li>1GHz Pentium processor or higher (2GHz, dual core processor recommended)</li>
<li>2 GB of RAM (4 GB recommended)</li>
<li>Adobe Flash Player version 9.0.115.0 or later (included)</li>
<li>Microsoft .NET Framework 3.5 SP1 (*install .NET before installing Flypaper*)</li>
</ul>
<h4>Pricing</h4>
<p>The price depends on the subscription type and the number of modules available.</p>
<h3>9. <a href="http://www.makicms.com/">Maki CMS</a></h3>
<p><img src="http://images.sixrevisions.com/2010/06/26-11_makicms.jpg" width="550" height="424" alt="Maki" /></p>
<p><a href="http://www.makicms.com/demo_maki.php">Maki CMS Demo</a></p>
<p>Maki is another simple content management system that allows users to build and update Flash-based websites. Maki provides a range of readymade templates that you choose and customize.</p>
<h4>System Requirements</h4>
<p>There are no system requirements as all Maki CMS websites are hosted on their server. </p>
<h4>Pricing</h4>
<p>The price (€164–€406) depends on the subscription type.</p>
<h3>10. <a href="http://www.flintcms.com/">Flint CMS</a></h3>
<p><img src="http://images.sixrevisions.com/2010/06/26-12_flintcms.jpg" width="550" height="288" alt="Flint CMS" /></p>
<p>Flint CMS is a simple Flash content editor that can be integrated into your own content management solution. It can be used with the news manager, product catalog or anything else.</p>
<h4>System Requirements</h4>
<ul>
<li>PHP server</li>
<li>GD plugin</li>
</ul>
<h4>Pricing</h4>
<p>The site license costs €49.</p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/web-development/how-to-evaluate-what-cms-to-use/">How to Evaluate What CMS to Use</a></li>
<li><a href="http://sixrevisions.com/web-development/issues-with-apples-decision-to-block-flash/">Issues with Apple&#8217;s Decision to Block Flash</a></li>
<li><a href="http://sixrevisions.com/usabilityaccessibility/adobe-flash-accessibility-best-practices-for-design/">Adobe Flash Accessibility: Best Practices for Design</a></li>
<li><em>Related categories</em>: <a href="http://sixrevisions.com/category/flashactionscript/">Flash/Actionscript</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://images.sixrevisions.com/authors/tatiana_titkova_small.jpg" alt="" width="80" height="80" /><span class="author-bio-text"><strong>Tatiana Titkova</strong> is a copywriter/marketing specialist interested in web design, development, SEO, and SEM/SMO currently working for FlashMoto.com &#8211; an advanced <a href="http://www.flashmoto.com">Flash content management system</a> provider. You may connect with her on <strong><a href="http://www.twitter.com/tanamaree">Twitter</a></strong>.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/top-10-flash-content-management-systems/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Planning your E-Commerce Website</title>
		<link>http://sixrevisions.com/web-development/planning-your-e-commerce-website/</link>
		<comments>http://sixrevisions.com/web-development/planning-your-e-commerce-website/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 15:04:03 +0000</pubDate>
		<dc:creator>Jacob Gube</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://sixrevisions.com/?p=3525</guid>
		<description><![CDATA[
Whether theming an e-commerce website or doing a full-scale build, one of the most important parts in the whole process is the planning. Planning a build before you start can sometimes seem like a bit of a tedious and time-consuming task, but not only will it make everything run a lot smoother, it will also [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sixrevisions.com/web-development/planning-your-e-commerce-website/"><img src="http://images.sixrevisions.com/2010/06/24-01_e-commerce_planning_ld_img.jpg" width="550" height="200" alt="Planning your E-Commerce Website" /></a></p>
<p>Whether theming an e-commerce website or doing a full-scale build, one of the most important parts in the whole process is the planning. Planning a build before you start can sometimes seem like a bit of a tedious and time-consuming task, but not only will it make everything run a lot smoother, it will also save a lot of time.</p>
<p>You may be wondering where you even begin, and that&#8217;s what this article will help you answer.</p>
<p><span id="more-3525"></span></p>
<h3>What Do You Want Your Site To Do?</h3>
<p>Let&#8217;s start at the beginning. Since we are talking about an e-commerce site, I&#8217;m guessing that the aim is to sell <em>something</em>. We need to figure out ways to make it more compelling to buy that <em>something</em>.</p>
<p>Try to make it as easy as possible for the customer to buy your products. The well-known <a href="http://en.wikipedia.org/wiki/Three-click_rule" title="Three-click rule - en.wikipedia.org">three-click rule</a> applies here: You want your customer to get to what they are looking for in three or less clicks. Any more, and they may just give up. The user interface should be a primary subject to plan for.</p>
<h3>Who&#8217;s Going to Buy From You?</h3>
<p>Another important factor to take into account is your audience. This is something that you should consider researching properly; knowing who will want to buy your products is something that influences your design.</p>
<h3>Do You Require Special Site Features?</h3>
<p>Depending on what you are selling, you may need features that other e-commerce sites do not. For example, a clothing e-store may need a refined search so that the customer can filter a search by colour or brand. Alternatively, you may want to allow the customer to use coupon codes. You should plan what features and functions you think you need or want to add.</p>
<p><img src="http://images.sixrevisions.com/2010/06/24-02_filter.jpg" width="500" height="154" alt="Do You Require Special Site Features?" /></p>
<h3>What Are Your Limitations?</h3>
<p>Everyone has limitations — work out what yours are when you are building your site. Do you have a budget for the build, and if so, how will this limit what you can do? What technical limitations do you have? Is there any part of the build that you won&#8217;t be able to do by yourself? How does the technology limit your build?</p>
<p>You can do nearly anything with enough hard work, but remember that not everything will be possible.</p>
<h3>Do You Have All the Tools You Need?</h3>
<p>It depends on how much of the build you are doing, but you will probably need graphic editing software (i.e. Photoshop, Fireworks), a web development application (i.e. Dreamweaver), e-commerce and online store management software (i.e. Magento, OSCommerce, etc.) and the obvious things like a <a href="http://sixrevisions.com/resources/12-excellent-tools-for-picking-a-domain-name/" title="12 Excellent Tools for Picking a Domain Name - sixrevisions.com">domain name</a> and <a href="http://sixrevisions.com/website-management/guide-vps-hosting/" title="A Complete Guide to VPS Hosting - sixrevisions.com">web hosting</a>.</p>
<h3>What E-Commerce Platform Are You Going to Use?</h3>
<p>Since we are talking about e-commerce, we should take into consideration what&#8217;s going to power our website. There are countless of e-commerce platforms out there, and one of your tasks is to find one that fits your needs.</p>
<p>Depending on your knowledge and what your needs are, there are a various number of options that you would be able to use. If you think that you have quite a comprehensive knowledge on the subject, then maybe you should consider going for an open source cart or even building a platform yourself. If not, then there are also hosted carts to take into account.</p>
<p>Let&#8217;s have a look at a few platform options from different categories.</p>
<h4>Magento</h4>
<p><img src="http://images.sixrevisions.com/2010/06/24-03_magento.jpg" width="500" height="321" alt="Magento" /></p>
<p><a href="http://www.magentocommerce.com/">Magento</a> is probably one of the most popular open source carts in the e-commerce platform market and, in my opinion, is probably the best free cart out there (there are also enterprise and professional versions with a yearly cost that will provide additional support).</p>
<p>Magento has some awesome features including <a href="http://sixrevisions.com/usabilityaccessibility/unleashing-the-power-of-website-analytics/" title="Unleashing the Power of Website Analytics - sixrevisions.com">analytics</a> integration, capability of wish lists, multiple images for products, advanced product filter search, advanced customer service, tonnes of payment methods, marketing/promotional tools and so much more.</p>
<p>Recently, Magento has also released the world&#8217;s first <a href="http://www.magentocommerce.com/product/mobile">mobile commerce platform</a>. This could be very interesting, even more so now that smartphones with huge screens (such as the <a href="http://sixrevisions.com/web_design/10-iphone-apps-every-web-designer-should-know-about/" title="10 iPhone Apps Every Web Designer Should Know About">iPhone</a>) are all the rage.</p>
<h4>Shopify</h4>
<p><img src="http://images.sixrevisions.com/2010/06/24-04_shopify.jpg" width="500" height="287" alt="Shopify" /></p>
<p><a href="http://www.shopify.com/">Shopify</a> is a very interesting hosted platform. Compared to something open source and self-hosted like Magento, it is extremely simple to set up, manage and update. You could have a site running within minutes if you wanted to.</p>
<p>But Shopify does have a slight lack of features (by intent — to keep things simple), its price is a monthly fee plus, on top of that, a commission for every sale, and a hosted platform means you have less control of your platform (which isn&#8217;t necessarily a bad thing for people who just want things to work).</p>
<h4>Content Management Systems With E-Commerce Addons</h4>
<p>Another alternative that has recently arisen is that of <a href="http://sixrevisions.com/category/wordpress/">WordPress</a>, Drupal, and Joomla! shopping cart plugins, giving these content management systems e-store capabilities. There are a few, including eShop, Shopp, and Wordpress MiniCart. This is great if you want a quick add-on for you existing site, but not perfect if you want a fully manageable e-commerce site.</p>
<h4>Custom E-Commerce Site</h4>
<p>An alternative to all this would be to go the DIY route and build your own platform. Of course, this will need a fair bit of web development knowledge and also a lot of time. But putting in all that work could be worthwhile if you have highly customized needs. Plus, if you build it yourself, you&#8217;ll be guaranteed full ownership of everything, including your code base.</p>
<h3>Case Examples of E-Commerce Sites</h3>
<p>Do a little bit of research into what other e-commerce sites are doing right and wrong. Try to learn and consider all your findings when you&#8217;re building your e-store.</p>
<p>Let&#8217;s have a look at some of e-commerce sites.</p>
<h4>Amazon</h4>
<p><img src="http://images.sixrevisions.com/2010/06/24-05_amazon.jpg" width="500" height="373" alt="Amazon" /></p>
<p>Amazon is the world&#8217;s largest online reseller, but what makes the site so brilliant? One of the main factors is the simplicity of the site: Even though it looks cluttered, it&#8217;s still easy to navigate and find what you are looking for. For example, think of any product you want to buy right now: You&#8217;ll probably find it or learn that it isn&#8217;t available on Amazon.com within three clicks.</p>
<p>Amazon also boasts about its customer service and if your customers are happy, then you&#8217;re doing a good job.</p>
<p>Other huge e-commerce sites you should look at are <a href="http://www.zappos.com/">Zappos</a>, <a href="http://www.threadless.com/">Threadless</a>, and <a href="http://www.thinkgeek.com/">ThinkGeek</a>.</p>
<h4>Google Product Search</h4>
<p><img src="http://images.sixrevisions.com/2010/06/24-06_google.jpg" width="500" height="190" alt="Google Product Search" /></p>
<p><a href="http://www.google.com/products">Google Product Search</a> is not really an e-commerce site, but it&#8217;s worth looking at to illustrate an important concept about planning and building e-commerce websites: <strong>simplicity is important.</strong> And if we can think of one company that excels in this concept that best, it&#8217;s Google. Google has been known for its simplicity since the beginning and this remains the case when using its product search.</p>
<p>Google Product Search is also great for when you have your e-commerce site up and running as well: By uploading a list of your products to Google Product Search, you open a whole new portal to your online shop.</p>
<p>Another remarkably simple but successful e-commerce site to look at is <a href="http://www.woot.com/">Woot</a>.</p>
<h4>Shoe Guru</h4>
<p><img src="http://images.sixrevisions.com/2010/06/24-07_shoeguru.jpg" width="500" height="272" alt="Shoe Guru" /></p>
<p>Now that we&#8217;ve had a look at the largest, let&#8217;s have a look at some smaller e-commerce sites. <a href="http://shoeguru.ca/">ShoeGuru</a> is an amazingly simplistic site, and its design is perfect for displaying their clothing products. The design comprises of a nice graphical site that gets the message across.</p>
<h4>Doorstep Dairy</h4>
<p><img src="http://images.sixrevisions.com/2010/06/24-08_doorstepdairy.jpg" width="500" height="541" alt="Doorstep Dairy" /></p>
<p><a href="http://doorstepdairy.com/">Doorstep Dairy</a> is a great example of a great-looking site that is both fun to use, yet still easy to purchase from.</p>
<h4>Nation Toys</h4>
<p><img src="http://images.sixrevisions.com/2010/06/24-09_nationtoys.jpg" width="500" height="564" alt="Nation Toys" /></p>
<p><a href="http://thisisnation.com/">Nation Toys</a> is an excellent and colourful site that compliments the vibrant products they sell.</p>
<h4>Crocs Store Romania</h4>
<p><img src="http://images.sixrevisions.com/2010/06/24-10_crocs.jpg" width="500" height="380" alt="Crocs Store Romania" /></p>
<p><a href="http://www.crocs.store.ro/">Crocs Store Romania</a> is probably the best version of the Crocs site (for some reason they have designed the sites differently for each region).</p>
<h3>Mock-up and Design</h3>
<p>Once you&#8217;ve done your planning, what do you do next? Well, everyone works a different way, but you may want to make a mock-up or wireframe of what your site will look like. Some people like to go straight into Photoshop or other design software at this stage, but personally I like starting out with pencil and paper (very old fashioned, I know) because  it&#8217;s easier for me, but it may be different for you.</p>
<p>If you do decide to start out the old-fashioned way, try <a href="http://www.raincreativelab.com/paperbrowser/">Paper Browser</a>: You just print out the templates and draw on them, giving you a true perspective on paper.</p>
<p><img src="http://images.sixrevisions.com/2010/06/24-11_sketch.jpg" width="500" height="199" alt="Mock-up and Design" /></p>
<h3>Related Content</h3>
<ul>
<li><a href="http://sixrevisions.com/design-showcase-inspiration/80-examples-of-add-to-cart-buttons-for-design-inspiration/">80 Examples of Add to Cart Buttons for Design Inspiration</a></li>
<li><a href="http://sixrevisions.com/user-interface/30-high-quality-icon-sets-for-e-commerce-designs/">30 High-Quality Icon Sets for E-Commerce Designs</a></li>
<li><a href="http://sixrevisions.com/web-development/mobile-web-design-is-it-worth-it/">Mobile Web Design: Is it Worth It?</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://images.sixrevisions.com/authors/kyle_prior_small.jpg" alt="" width="80" height="80" /><span class="author-bio-text"><strong>Kyle Prior</strong> is a young web developer for <strong><a href="http://www.hpinkcartridges.co.uk/">hpinkcartridges.co.uk</a></strong> specializing in branding and front end design. Visit the website for surprisingly low priced <a href="http://www.hpinkcartridges.co.uk/">HP ink cartridges</a>. Follow Kyle on Twitter as <strong>@<a href="http://twitter.com/HPCartridge">HPCartridge</a>.</strong></span></p>
]]></content:encoded>
			<wfw:commentRss>http://sixrevisions.com/web-development/planning-your-e-commerce-website/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
	</channel>
</rss>
