<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>bradt.ca</title>
	
	<link>http://bradt.ca</link>
	<description>Independent web developer, web designer, and entrepreneur living in Halifax, Canada.</description>
	<lastBuildDate>Sat, 19 May 2012 00:36:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/bradtca/posts" /><feedburner:info uri="bradtca/posts" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Dandelion: Git Deployment over FTP</title>
		<link>http://feedproxy.google.com/~r/bradtca/posts/~3/qFY5iVgfFKE/</link>
		<comments>http://bradt.ca/archives/dandelion-git-deployment-over-ftp/#comments</comments>
		<pubDate>Fri, 04 May 2012 18:10:59 +0000</pubDate>
		<dc:creator>bradt</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://bradt.ca/?p=10178</guid>
		<description><![CDATA[Dandelion is an awesome deployment tool I adopted recently. When you run dandelion deploy from the command line, it automatically determines what has changed in your Git repository since the last deploy and adds, updates, or deletes just those files over FTP, SFTP, or Amazon S3. Kudos to Scott Nelson for his awesome work on this. Packaged as [...]]]></description>
			<content:encoded><![CDATA[<p><a href="https://github.com/scttnlsn/dandelion">Dandelion</a> is an awesome deployment tool I adopted recently. When you run <code>dandelion deploy</code> from the command line, it automatically determines what has changed in your Git repository since the last deploy and adds, updates, or deletes just those files over FTP, SFTP, or Amazon S3. Kudos to <a href="http://www.scttnlsn.com/">Scott Nelson</a> for his awesome work on this.</p>
<p>Packaged as a Ruby Gem, Dandelion is super simple to install: <code>gem install dandelion</code>. To setup, you create a tiny YAML config file in the same directory as your Git repository with the server connection details. Then you can run  <code>dandelion deploy</code>. Pure awesome.</p>
<p><span id="more-10178"></span></p>
<p>Why not use <a href="https://github.com/capistrano/capistrano">Capistrano</a>? I&#8217;m definitely not a Capistrano expert, but I don&#8217;t believe it&#8217;s as easy to set it up to deploy over FTP, SFTP, or Amazon S3. From what I understand, it&#8217;s primarily designed for use over SSH. Unfortunately not all web hosts offer SSH access and those that do sometimes require time to set it up. As a result, I&#8217;d been using the <a href="http://panic.com/transmit/">Transmit</a>&#8216;s Sync feature for years. It&#8217;s slow (needs to check each file for changes) and a break from my command line workflow. Dandelion keeps my workflow on the command line and is much quicker to upload changes. A nice little bump to <a href="http://gettingreal.37signals.com/ch10_Optimize_for_Happiness.php">developer happiness</a>.</p>
<p>I&#8217;ve been deploying <a href="http://wpappstore.com/">WP App Store</a> to <a href="http://wpengine.com/">WP Engine</a> with Dandelion for a couple weeks now and it has been fantastic. As I bring on additional developers and deployment becomes a bit more complex, I&#8217;ll likely move to <a href="http://www.deployhq.com/">deployhq.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bradt.ca/archives/dandelion-git-deployment-over-ftp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bradt.ca/archives/dandelion-git-deployment-over-ftp/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=dandelion-git-deployment-over-ftp</feedburner:origLink></item>
		<item>
		<title>Founder Inner Conflict: Engineer vs. Entrepreneur</title>
		<link>http://feedproxy.google.com/~r/bradtca/posts/~3/YhdpUgVPIvo/</link>
		<comments>http://bradt.ca/archives/founder-inner-conflict-engineer-vs-entrepreneur/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 14:27:36 +0000</pubDate>
		<dc:creator>bradt</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[psychology]]></category>
		<category><![CDATA[startup]]></category>
		<category><![CDATA[web-development]]></category>

		<guid isPermaLink="false">http://bradt.ca/?p=10036</guid>
		<description><![CDATA[When working on a project, I constantly find myself at odds with&#8230;myself. It&#8217;s a battle between the engineer in me wanting to write ideal code and the entrepreneur in me who just wants it working. The engineer wants ideal code, while the entrepreneur is fine with it being hacked together as long as it works [...]]]></description>
			<content:encoded><![CDATA[<p>When working on a project, I constantly find myself at odds with&#8230;myself. It&#8217;s a battle between the engineer in me wanting to write ideal code and the entrepreneur in me who just wants it working. The engineer wants ideal code, while the entrepreneur is fine with it being hacked together as long as it works great.</p>
<p>I go through phases where the engineer takes over. There&#8217;s an itch that has been irritating him for weeks, maybe even months, and damn it, he&#8217;s going to scratch it. He starts writing some kind of framework, or refactoring some code, or implementing some new, fascinating approach he read about, or working on a cool, new feature that is out of scope. At the same time, from the back seat, the entrepreneur starts nagging for updates on the overall progress of the project. Unfortunately though, scratching these itches rarely moves the project forward, so the entrepreneur is relentless. With every line of code, the entrepreneur is becoming more and more irritating. Eventually the nagging is more irritating than the original itch, so the engineer drops his tangential coding and resumes hacking the project forward.<span id="more-10036"></span></p>
<p>When I only had client work, I allowed the engineer to scratch a few itches per project. It improved my code base, often saving me time on the next project, and increased <a href="http://gettingreal.37signals.com/ch10_Optimize_for_Happiness.php">developer happiness</a>. Sure, the project price was set and I would make more money by just hacking, but I valued developer happiness and it was worth the tiny cost.</p>
<p>But now in the throes of building a new business, I can&#8217;t afford to let the engineer take over at any point. <a href="http://blog.asmartbear.com/value-time.html">A founder&#8217;s time is expensive</a> and any time spent working on the business should be moving it forward. A balance is needed between the engineer and the entrepreneur. Neither should take over completely. The entrepreneur keeps things moving forward and the engineer ensures that hacking doesn&#8217;t create a complete disaster.</p>
<p>New businesses need to hack things together so they can start generating revenue as soon as possible. Adii <a href="http://adii.me/2012/02/bootstrappingdont-reinvent-the-wheel/">shares</a> a great inside story on this. WooThemes hacked together their membership and payment processing backend when they started. And hacked away at it for three years, until they were in a better position to rewrite it. The engineer cringes at the idea of hacking away at crappy code for three years, but the entrepreneur slaps him, quoting WooThemes&#8217; success.</p>
<p>Fortunately, I&#8217;ve found that the entrepreneur&#8217;s nagging is much more intense when there&#8217;s no revenue, which makes it easier to keep the engineer in check. That&#8217;s not to say the engineer doesn&#8217;t try to take over as often as before. He does. But the mere threat of intense nagging sends him back to hacking.</p>
<p>Vote this up on HN:<br />
<a href="http://news.ycombinator.com/item?id=3620954">http://news.ycombinator.com/item?id=3620954</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bradt.ca/archives/founder-inner-conflict-engineer-vs-entrepreneur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bradt.ca/archives/founder-inner-conflict-engineer-vs-entrepreneur/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=founder-inner-conflict-engineer-vs-entrepreneur</feedburner:origLink></item>
		<item>
		<title>Portfolio: Visual Orgasm</title>
		<link>http://feedproxy.google.com/~r/bradtca/posts/~3/Tmp9zG1EgJI/</link>
		<comments>http://bradt.ca/archives/visual-orgasm/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 02:01:27 +0000</pubDate>
		<dc:creator>bradt</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP/MySQL]]></category>
		<category><![CDATA[WordPress Plugins]]></category>
		<category><![CDATA[WordPress Theme]]></category>

		<guid isPermaLink="false">http://bradt.ca/?p=10000</guid>
		<description><![CDATA[Visual Orgasm (VO) has been documenting and archiving Canadian graffiti since 1998. Unfortunately, their web site itself was a bit of an artifact, still running (barely) on an old Windows server coded in ASP classic. Working with their designer, VO put together a fresh new design and entrusted me with building custom WordPress and Shopify [...]]]></description>
			<content:encoded><![CDATA[<p>Visual Orgasm (VO) has been documenting and archiving Canadian graffiti since 1998. Unfortunately, their web site itself was a bit of an artifact, still running (barely) on an old Windows server coded in ASP classic. Working with their designer, VO put together a fresh new design and entrusted me with building custom WordPress and Shopify themes.</p>
<blockquote><p>
<em>We needed to build the site around a large volume of photo-based content. WordPress seemed like it might be able to handle the job, and Brad made it work without question. Lots of really cool custom WordPress stuff going on behind the scenes that makes it incredibly easy to manage content and keep the site alive. We definitely recommend Brad and his web dev wizardry. &mdash;&nbsp;Adam&nbsp;Melnyk,&nbsp;Visual&nbsp;Orgasm</em>
</p></blockquote>
<p>Check out the nice, clean, custom URLs in the photo archive. It took some extra work with all the varieties of meta data in there, but it was well worth it. This was my first Shopify project, but I was impressed how easy it was to work with and surprised how well it turned out.</p>
<p><a class="read-more" href="http://www.visualorgasm.com/">Visit the site &raquo;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bradt.ca/archives/visual-orgasm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bradt.ca/archives/visual-orgasm/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=visual-orgasm</feedburner:origLink></item>
		<item>
		<title>Podcamp Halifax 2012: WordPress Workshop</title>
		<link>http://feedproxy.google.com/~r/bradtca/posts/~3/LEGfGVTTe_8/</link>
		<comments>http://bradt.ca/archives/podcamp-halifax-2012-wordpress-workshop/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 12:04:44 +0000</pubDate>
		<dc:creator>bradt</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[podcamphalifax]]></category>
		<category><![CDATA[podcamphfx]]></category>
		<category><![CDATA[speaking]]></category>
		<category><![CDATA[unconference]]></category>
		<category><![CDATA[web-design]]></category>
		<category><![CDATA[web-development]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://bradt.ca/?p=9921</guid>
		<description><![CDATA[I&#8217;m running the following session at the Podcamp Halifax unconference today: WordPress Workshop After a 5 min intro including what’s new in the latest release of WordPress (and what’s coming in the next version), I’ll ask attendees what they’d like to hear. Do you want me to show you how to install WordPress? Maybe you’d [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m running the following session at the <a href="http://podcamphalifax.ca/">Podcamp Halifax</a> unconference today:</p>
<blockquote>
<h3>WordPress Workshop</h3>
<p>After a 5 min intro including what’s new in the latest release of WordPress (and what’s coming in the next version), I’ll ask attendees what they’d like to hear. Do you want me to show you how to install WordPress? Maybe you’d like to hear what a child theme is? How about some awesome WordPress plugins? It’s like a choose your own adventure, but with WordPress instead of dragons.</p></blockquote>
<p>The following are my notes for the session. There are no slides.<span id="more-9921"></span></p>
<p>Tweet your questions, comments, etc to me <a href="http://twitter.com/bradt">@bradt</a> and I&#8217;ll answer them during the session. If I run out of time, I&#8217;ll answer the rest on Twitter afterward. Don&#8217;t forget to tag your tweets #podcamphfx so everyone can find them.</p>
<p><strong>What is WordPress?</strong></p>
<ul>
<li>Web Software</li>
<li>Free, open source</li>
<li>Publishing system</li>
<li>Content management system (CMS)</li>
</ul>
<p><strong>What does a WordPress web site look like?</strong></p>
<ul>
<li>Mostly any web site could be using WordPress</li>
<li>Check out <a href="http://bradt.ca/portfolio/#wordpress-theme">my portfolio of WordPress projects</a> for examples</li>
</ul>
<p><strong>Why is WordPress popular?</strong></p>
<ul>
<li>Very popular: <a href="http://wordpress.org/download/counter/">WordPress.org Download Counter</a>, <a href="http://en.wordpress.com/stats/">WordPress.com Site Counter</a></li>
<li>Excellent UI</li>
<li>WYSIWYG sucks less than most</li>
<li>Easy to use</li>
<li>Strong development community</li>
<li>Commercial backing (<a href="http://automattic.com/">Automattic</a>).</li>
</ul>
<p><strong>What&#8217;s the difference between WordPress.org and WordPress.com?</strong></p>
<ul>
<li>.org &#8211; a project of the <a href="http://wordpressfoundation.org/">WordPress Foundation</a>, a non-profit organization devoted to developing the WordPress software and supporting its community</li>
<li>.com &#8211; a for profit corporation offering free WordPress hosting and makes money by selling domain names and other upgrades</li>
</ul>
<p><strong>Why wouldn&#8217;t you always go with WordPress.com over hosting it yourself?<br />
</strong></p>
<ul>
<li>Far less flexible</li>
<li>Limited list of installable themes</li>
<li>No plugins</li>
<li>No ecommerce.</li>
</ul>
<p><strong>Where can I get WordPress web hosting?<br />
</strong></p>
<ul>
<li>Most web hosts support WordPress</li>
<li>Cheap web hosting sucks. Read my article: <a href="http://bradt.ca/archives/stop-complaining-about-4-dollar-web-hosting/">Stop complaining about $4 web hosting</a></li>
<li><a href="http://www.zenutech.com/?ref=bradt.ca">Zenutech Web Hosting</a> &#8211; I&#8217;m a founder. 1-click install of WordPress. $6.95/month and up.</li>
<li><a href="https://phpfog.com/">phpFog</a> &amp; <a href="http://www.pagodabox.com/">Pagoda Box</a> &#8211; Cloud hosting with 1-click installs of WordPress. ~$29/month and up. Free trial.</li>
<li><a href="http://wpengine.com/">WP Engine</a> &amp; <a href="http://page.ly/">page.ly</a> - Specialize in performance WordPress hosting. $49/month &amp; $20/month and up. Free trial.</li>
</ul>
<p><strong>What&#8217;s new in the latest WordPress 3.3 release?</strong></p>
<div>
<ul>
<li>User experience improvements (new toolbar, flyout menus, pointer tips, etc)</li>
<li>Welcome screens for new users and when you upgrade</li>
<li>Drag and drop uploader (no more Flash!)</li>
<li>For Developers: New editor API, jQuery 1.7</li>
</ul>
</div>
<p><strong>How do I properly setup WordPress after installing?</strong></p>
<ol>
<li>General Settings: Update tagline and timezone</li>
<li>Discussion Settings: Turn comments on/off</li>
<li>Permalinks: &#8220;Month and name&#8221; is a good option for SEO-friendly links</li>
<li>Appearance: Settings depend on theme</li>
</ol>
<p><strong>How do I change the home page to a content page instead of a list of posts?</strong></p>
<ul>
<li>Create two new pages, one named &#8220;Home&#8221; and one named &#8220;Blog&#8221;</li>
<li>Go to Settings &gt; Reading</li>
<li>Change &#8220;Front page displays&#8221; to &#8220;A static page&#8221;</li>
<li>For the &#8220;Front page&#8221; choose &#8220;Home&#8221;, for the &#8220;Posts page&#8221; choose &#8220;Blog&#8221;</li>
<li>Add whatever content you like to your the &#8220;Home&#8221; page</li>
</ul>
<p><strong>How do I install a theme through WordPress&#8217;s built-in directory?</strong></p>
<ul>
<li>Go to Plugins &gt; Add New.</li>
<li>Search.</li>
<li>Click &#8220;Install Now&#8221;.</li>
<li>Activate.</li>
</ul>
<p><strong>How do I install a theme I downloaded from a web site?</strong></p>
<ul>
<li>Go to Plugins &gt; Add New &gt; Upload.</li>
<li>Choose the file you downloaded.</li>
<li>Click &#8220;Install Now&#8221;.</li>
<li>Activate.</li>
</ul>
<p><strong>Where can I find quality themes?</strong></p>
<ul>
<li><a href="http://www.woothemes.com/">WooThemes</a></li>
<li><a href="http://press75.com/">Press75</a></li>
<li><a href="http://themify.me/">Themify.me</a></li>
<li><a href="http://www.studiopress.com/">StudioPress</a></li>
<li><a href="http://appthemes.com/">App Themes</a></li>
<li><a href="http://www.themegarden.com/">Theme Garden</a></li>
</ul>
<p><strong>Where can I find quality plugins?<br />
</strong>The following plugins are all free except when stated otherwise.</p>
<ul>
<li><a href="http://akismet.com/">Akismet</a>* - prevent comment SPAM</li>
<li><a href="http://disqus.com/admin/wordpress/">Disqus</a>* &amp; <a href="http://intensedebate.com/">IntenseDebate</a>* - (free &amp; paid packages) comments with social features</li>
<li><a href="http://yoast.com/wordpress/seo/">WordPress SEO</a>* - define all your title tags, generates Google XML Sitemap, etc</li>
<li><a href="http://yoast.com/wordpress/google-analytics/">Google Analytics for WordPress</a>* - very handy when using Google Analytics</li>
<li><a href="http://wordpress.org/extend/plugins/bbpress/">bbPress</a>* - fully featured forums</li>
<li><a href="http://buddypress.org/">BuddyPress</a>* - turns WordPress into a social networking site</li>
<li><a href="http://www.bravenewcode.com/store/plugins/wptouch-pro/">WPTouch</a>* - (free &amp; paid versions) adds a mobile-friendly version of your site</li>
<li><a href="http://www.bravenewcode.com/store/plugins/wordtwit-pro/">WordTwit</a>* - (free &amp; paid versions) automatically send tweets</li>
<li><a href="http://www.prophotoblogs.com/">ProPhoto</a>* - (paid only) excellent plugin for photographers</li>
<li><a href="http://jetpack.me/">JetPack</a>* - bundle of useful plugins from Automattic</li>
<li><a href="http://www.gravityforms.com/">Gravity Forms</a>* - (paid only) beautiful form building without any coding</li>
<li><a href="http://jigoshop.com/">JigoShop</a>* &amp; <a href="http://www.woothemes.com/woocommerce/">WooCommerce</a>* - online store plugins</li>
<li><a href="http://www.addthis.com/help/wordpress">AddThis</a>* - add social media sharing widgets to your posts and track use</li>
<li><a href="http://tri.be/wordpress-events-calendar/">Events Calendar</a>* - (free &amp; paid versions) great calendar plugin</li>
<li><a href="http://pluginbuddy.com/purchase/backupbuddy/">Backup Buddy</a>* - (paid only) backup, restore, and migrate</li>
<li><a href="http://scribeseo.com/">ScribeSEO</a>* &#8211; (paid only) helps you write content that is more search engine friendly</li>
<li><a href="http://wpml.org/">WPML</a> - (paid only) for multilingual sites</li>
<li><a href="http://wordpress.org/extend/plugins/subscribe-to-comments/">Subscribe to Comments</a>* &#8211; allows your commenters to subscribe to email notifications of follow up comments</li>
<li><a href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache</a>* &#8211; speeds up your WordPress site</li>
</ul>
<p>* Can be found by searching WordPress&#8217; built-in plugin directory for the plugin name.</p>
<p><strong>How do I hire a web designer or web developer to build my WordPress site?</strong></p>
<ul>
<li>Designer or developer? Doesn&#8217;t matter.</li>
<li>Search &#8220;wordpress developer canada&#8221;</li>
<li><a href="http://wpcandy.com/pros">WP Candy Pros Directory</a></li>
<li><a href="http://jobs.freelanceswitch.com/">Freelance Switch Job Board</a></li>
<li><a href="http://jobs.wordpress.net/">WordPress Jobs</a></li>
<li><a href="http://www.authenticjobs.com/">Authentic Jobs</a></li>
</ul>
<p><strong>What does it cost to build a WordPress web site?</strong></p>
<ul>
<li>Depends. Doesn&#8217;t matter that it&#8217;s WordPress. To get an idea of cost, read my article, <a href="http://bradt.ca/archives/what-does-it-cost-to-build-a-web-site/">What does it cost to build a web site?</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://bradt.ca/archives/podcamp-halifax-2012-wordpress-workshop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bradt.ca/archives/podcamp-halifax-2012-wordpress-workshop/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=podcamp-halifax-2012-wordpress-workshop</feedburner:origLink></item>
		<item>
		<title>Image Crop Position in WordPress</title>
		<link>http://feedproxy.google.com/~r/bradtca/posts/~3/daCvlZ5k6uQ/</link>
		<comments>http://bradt.ca/archives/image-crop-position-in-wordpress/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 21:22:04 +0000</pubDate>
		<dc:creator>bradt</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[web-development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://bradt.ca/?p=9767</guid>
		<description><![CDATA[I just submitted my first WordPress core patch today and have been receiving lots of positive feedback. It allows developers to set the crop position by specifying an array for the $crop parameter in the add_image_size function (see the Trac ticket for more details). WordPress 3.3 is at beta 4 at the moment, so it won&#8217;t make [...]]]></description>
			<content:encoded><![CDATA[<p>I just submitted <a href="http://core.trac.wordpress.org/ticket/19393">my first WordPress core patch</a> today and have been receiving lots of positive feedback. It allows developers to set the crop position by specifying an array for the $crop parameter in the <code>add_image_size</code> function (<a href="http://core.trac.wordpress.org/ticket/19393">see the Trac ticket for more details</a>). WordPress 3.3 is at beta 4 at the moment, so it won&#8217;t make it into the 3.3 release. Hopefully it will make it into 3.4 and we can all enjoy cropped images with proper positioning (especially screenshots).</p>
<p>If you&#8217;ve done a Google search for a solution to defining the image crop position, you will likely find several articles on how you can hack the WordPress core to change the crop position. Gross! Not only is it terrible practice to edit core WordPress files (#1 reason: makes upgrading a royal PITA), but this solution also changes the crop position for all your images. What if you want different crop positions for different image sizes? The following solution accomplishes this without hacking the core.<span id="more-9767"></span></p>
<p>Copy and paste the following code into your theme&#8217;s functions.php file (or create an include file) and use the function <code>bt_add_image_size</code> instead of <code>add_image_size</code>. Once the patch is implemented in a core release you should be able to revert to using <code>add_image_size</code> and remove the code you copied into functions.php. As a bonus, I&#8217;ve included code that properly rotates photos containing EXIF data indicating the photo should be rotated for viewing. If you need to regenerate your previously uploaded images, I recommend <a href="http://www.viper007bond.com/">Alex</a>’s <a href="http://wordpress.org/extend/plugins/regenerate-thumbnails/">Regenerate Thumbnails</a> plugin.</p>
<div style="font-size: 0.8em;">
<script src="http://gist.github.com/1406471.js"></script>
</div>
<p>Wouldn&#8217;t take much to make this into a plugin, but it&#8217;s not worth going through the whole process for me personally.</p>
]]></content:encoded>
			<wfw:commentRss>http://bradt.ca/archives/image-crop-position-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		<feedburner:origLink>http://bradt.ca/archives/image-crop-position-in-wordpress/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=image-crop-position-in-wordpress</feedburner:origLink></item>
		<item>
		<title>Portfolio: McCafé®</title>
		<link>http://feedproxy.google.com/~r/bradtca/posts/~3/uX8mDwvLpqI/</link>
		<comments>http://bradt.ca/archives/mccafe%c2%ae/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 15:03:09 +0000</pubDate>
		<dc:creator>bradt</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://bradt.ca/?p=9698</guid>
		<description><![CDATA[For my second collaboration with Tribal DDB, I was assigned to the McCafé® project for their client, McDonald&#8217;s. The project involved the construction of a promotional web page for the McCafé® launch campaign in Canada. Tribal&#8217;s creative team developed a fantastic concept, employing the parallax effect with coffee beans to create a 3D illusion as [...]]]></description>
			<content:encoded><![CDATA[<p>For my second collaboration with <a href="http://tribalddb.ca/">Tribal DDB</a>, I was assigned to the McCafé® project for their client, McDonald&#8217;s. The project involved the construction of a promotional web page for the McCafé® launch campaign in Canada. Tribal&#8217;s creative team developed a fantastic concept, employing the parallax effect with coffee beans to create a 3D illusion as the user scrolls (you need to visit the site to experience parallax effect). My job was to transform the PSD mockups into an interactive web page that worked within the McDonalds&#8217; web site constraints and achieved the parallax effect.</p>
<blockquote><p><em>This is looking great, very tasteful and exactly what I&#8217;m looking for.<br />
— Joe Dee, Technology Director, Tribal DDB</em></p></blockquote>
<blockquote><p><em>It went well! Your code was apparently very easy for someone to take over and make small changes. You&#8217;ll notice we got to keep the beans and we didn&#8217;t have to make any major changes to what you had done. Thanks so much for the great work!!<br />
— Sarah Lasch, Producer, Tribal DDB</em></p></blockquote>
<p><a href="http://www.mcdonalds.ca/ca/en/mccafe.html">Visit the site »</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.mcdonalds.ca/ca/fr/mccafe.html">Visitez le site »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bradt.ca/archives/mccafe%c2%ae/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bradt.ca/archives/mccafe%c2%ae/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=mccafe%25c2%25ae</feedburner:origLink></item>
		<item>
		<title>Portfolio: Canadian Tire Winter Driving</title>
		<link>http://feedproxy.google.com/~r/bradtca/posts/~3/c55y24hjxMg/</link>
		<comments>http://bradt.ca/archives/canadian-tire-winter-driving/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 02:06:58 +0000</pubDate>
		<dc:creator>bradt</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://bradt.ca/?p=9654</guid>
		<description><![CDATA[In their search for a &#8220;creative coder&#8221; (their words), Tribal DDB’s Toronto office came across my web site and contacted me about working together. For our first collaboration, they offered me the winter driving project for their client, retail giant Canadian Tire. Their creative team put together an impressive promotional page with several moving pieces. My [...]]]></description>
			<content:encoded><![CDATA[<p>In their search for a &#8220;creative coder&#8221; (their words), <a href="http://tribalddb.ca">Tribal DDB</a>’s Toronto office came across my web site and contacted me about working together. For our first collaboration, they offered me the <em>winter driving</em> project for their client, retail giant Canadian Tire. Their creative team put together an impressive promotional page with several moving pieces. My job was to turn Tribal&#8217;s PSD mockups into an interactive web page coded in HTML, CSS, and Javascript. My work would then be packaged up and integrated by Canadian Tire&#8217;s IT team. The page features transition effects that simulate lightning and evoke a sense of danger. One of the challenges of this project was keeping the file size under the limit set by Canadian Tire.</p>
<blockquote><p><em>Thanks for the solid work on this Brad.<br />
— Joe Dee, Technology Director, Tribal DDB</em></p></blockquote>
<p><a href="http://tires.canadiantire.ca/view/content/Winterprep">Visit the site »</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://tires.canadiantire.ca/view/content/Winterprep?isoCode=fr">Visitez le site »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bradt.ca/archives/canadian-tire-winter-driving/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bradt.ca/archives/canadian-tire-winter-driving/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=canadian-tire-winter-driving</feedburner:origLink></item>
		<item>
		<title>AIM Conference Workshop Notes: Getting Started with WordPress</title>
		<link>http://feedproxy.google.com/~r/bradtca/posts/~3/CWstfMotKvc/</link>
		<comments>http://bradt.ca/archives/aim-conference-workshop-notes-getting-started-with-wordpress/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 12:05:36 +0000</pubDate>
		<dc:creator>bradt</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[aimhalifax]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[speaking]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://bradt.ca/?p=9511</guid>
		<description><![CDATA[Today I am running the following workshop at AIM Conference in Halifax: Getting Started with WordPress In this session, we&#8217;ll briefly go over why WordPress is a great choice. We’ll dive into setting up your own WordPress web site step-by-step, from ordering your web hosting to publishing your first page. We&#8217;ll explore buying beautiful, well-built themes [...]]]></description>
			<content:encoded><![CDATA[<p>Today I am running the following workshop at <a href="http://aimconference.com/">AIM Conference</a> in Halifax:</p>
<blockquote>
<h3>Getting Started with WordPress</h3>
<p>In this session, we&#8217;ll briefly go over why WordPress is a great choice. We’ll dive into setting up your own WordPress web site step-by-step, from ordering your web hosting to publishing your first page. We&#8217;ll explore buying beautiful, well-built themes and how to install them. We&#8217;ll navigate the overgrown jungle that is WordPress plugins and discover a few you absolutely must have. This is a workshop, not a formal presentation, so I&#8217;ll be more of a tour guide than a presenter. I&#8217;ll try keep the acronyms and techno babble to a minimum. You&#8217;ll be encouraged to ask questions throughout the session by voicing them or thumbing them to Twitter.</p></blockquote>
<p>The following are my notes for the session. There are no slides.<span id="more-9511"></span></p>
<p>Tweet your questions, comments, etc to me <a href="http://twitter.com/bradt">@bradt</a>. Don&#8217;t forget to also tag your Tweets #aimhalifax so everyone can see them.</p>
<p><a href="http://wordpress.org/download/counter/">Download Counter</a><br />
Excellent UI. WYSIWYG sucks less than most. Easy to use. <a href="http://automattic.com/">Automattic</a> support.</p>
<p><a href="http://en.wordpress.com/stats/">WordPress Site Counter</a><br />
~30 million self-hosted WordPress sites</p>
<p><a href="https://phpfog.com/">phpFog</a> &amp; <a href="http://www.pagodabox.com/">Pagoda Box</a><br />
Cloud hosting that supports WP.</p>
<p>My Article: <a href="http://bradt.ca/archives/stop-complaining-about-4-dollar-web-hosting/">Stop complaining about $4 web hosting</a><br />
Cheap web hosting sucks.</p>
<p><a href="http://www.zenutech.com/?ref=bradt.ca">Zenutech Web Hosting</a><br />
My web hosting company. 1-click install of WordPress.</p>
<p>Post-Install Checklist:</p>
<ol>
<li>General Settings: Update tagline and timezone</li>
<li>Discussion Settings: Turn comments on/off</li>
<li>Permalinks: &#8220;Month and name&#8221; is a good option for SEO-friendly links</li>
<li>Appearance: Settings depend on theme</li>
<li>Change home page to a content page instead of a list of posts.</li>
</ol>
<p>Install a theme through WP&#8217;s built-in directory.</p>
<p>Install a theme from a download.</p>
<p>Quality Themes:</p>
<ul>
<li><a href="http://www.woothemes.com/">WooThemes</a></li>
<li><a href="http://press75.com/">Press75</a></li>
<li><a href="http://themify.me/">Themify.me</a></li>
<li><a href="http://www.studiopress.com/">Studio Press</a></li>
<li><a href="http://appthemes.com/">App Themes</a></li>
<li><a href="http://www.themegarden.com/">Theme Garden</a></li>
</ul>
<p>Quality Plugins:</p>
<ul>
<li><a href="http://akismet.com/">Akismet</a> - prevent comment SPAM</li>
<li><a href="http://disqus.com/admin/wordpress/">Disqus</a> &amp; <a href="http://intensedebate.com/">IntenseDebate</a> &#8211; comments with social features</li>
<li><a href="http://yoast.com/wordpress/seo/">WordPress SEO</a> - define all your title tags, generates Google XML Sitemap, etc</li>
<li><a href="http://yoast.com/wordpress/google-analytics/">Google Analytics for WordPress</a> &#8211; essential for Google Analytics</li>
<li><a href="http://wordpress.org/extend/plugins/bbpress/">bbPress</a> - forum plugin</li>
<li><a href="http://buddypress.org/">BuddyPress</a> &#8211; turns WP into a social networking site</li>
<li><a href="http://www.bravenewcode.com/store/plugins/wptouch-pro/">WPTouch</a> - adds a mobile-friendly version of your site</li>
<li><a href="http://www.bravenewcode.com/store/plugins/wordtwit-pro/">WordTwit</a> &#8211; automatically send tweets</li>
<li><a href="http://www.prophotoblogs.com/">ProPhoto</a> &#8211; excellent plugin for photographers</li>
<li><a href="http://jetpack.me/">JetPack</a> - bundle of useful plugins from Automattic</li>
<li><a href="http://www.gravityforms.com/">Gravity Forms</a> &#8211; build forms without any coding</li>
<li><a href="http://jigoshop.com/">JigoShop</a> &amp; <a href="http://www.woothemes.com/woocommerce/">WooCommerce</a> &#8211; online store plugins</li>
<li><a href="http://www.addthis.com/help/wordpress">AddThis</a> &#8211; add sharing features to your posts</li>
<li><a href="http://tri.be/wordpress-events-calendar/">Events Calendar</a> &#8211; great calendar plugin</li>
<li><a href="http://pluginbuddy.com/purchase/backupbuddy/">Backup Buddy</a> &#8211; backup, restore, and migrate</li>
<li><a href="http://scribeseo.com/">ScribeSEO</a> - helps you write content that is more search engine friendly</li>
<li><a href="http://wpml.org/">WPML</a> - for multilingual sites</li>
<li><a href="http://wordpress.org/extend/plugins/subscribe-to-comments/">Subscribe to Comments</a> &#8211; allows your commenters to subscribe to email notifications of follow up comments</li>
<li><a href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache</a> &#8211; speeds up your WP site</li>
</ul>
<p>Most of these plugins can be found in WP&#8217;s built-in plugin directory.</p>
]]></content:encoded>
			<wfw:commentRss>http://bradt.ca/archives/aim-conference-workshop-notes-getting-started-with-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bradt.ca/archives/aim-conference-workshop-notes-getting-started-with-wordpress/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=aim-conference-workshop-notes-getting-started-with-wordpress</feedburner:origLink></item>
		<item>
		<title>Portfolio: STAT</title>
		<link>http://feedproxy.google.com/~r/bradtca/posts/~3/3qgGpGPESUo/</link>
		<comments>http://bradt.ca/archives/stat/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 17:59:59 +0000</pubDate>
		<dc:creator>bradt</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP/MySQL]]></category>
		<category><![CDATA[WordPress Plugins]]></category>
		<category><![CDATA[WordPress Theme]]></category>

		<guid isPermaLink="false">http://bradt.ca/?p=9480</guid>
		<description><![CDATA[STAT Search Analytics is a startup that facilitates the monitoring of search keywords and gives you additional intelligent feedback. Collaborating with fulscrn, I helped build a web site to showcase STAT&#8217;s product. My role involved converting the design mockups into a WordPress theme. Visit the site »]]></description>
			<content:encoded><![CDATA[<p>STAT Search Analytics is a startup that facilitates the monitoring of search keywords and gives you additional intelligent feedback. Collaborating with <a href="http://fulscrn.com/">fulscrn</a>, I helped build a web site to showcase STAT&#8217;s product. My role involved converting the design mockups into a WordPress theme.</p>
<p><a class="read-more" href="http://getstat.com/">Visit the site »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bradt.ca/archives/stat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://bradt.ca/archives/stat/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=stat</feedburner:origLink></item>
		<item>
		<title>What’s involved in building a web site?</title>
		<link>http://feedproxy.google.com/~r/bradtca/posts/~3/aRPagUiOxGI/</link>
		<comments>http://bradt.ca/archives/whats-involved-in-building-a-web-site/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 16:54:04 +0000</pubDate>
		<dc:creator>bradt</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Branding]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[client tips]]></category>
		<category><![CDATA[content strategy]]></category>
		<category><![CDATA[copywriting]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[frontend development]]></category>
		<category><![CDATA[information architecture]]></category>
		<category><![CDATA[mockups]]></category>
		<category><![CDATA[quality assurance]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[web-design]]></category>
		<category><![CDATA[web-development]]></category>
		<category><![CDATA[Wireframes]]></category>

		<guid isPermaLink="false">http://bradt.ca/?p=2526</guid>
		<description><![CDATA[In my previous article on the cost of building a web site, I mention that with a larger budget you can afford to hire a professional or a team of professionals to build your web site. But what do these people do? What are the steps involved to produce a web site? Here I describe [...]]]></description>
			<content:encoded><![CDATA[<p>In my previous article on <a href="http://bradt.ca/archives/what-does-it-cost-to-build-a-web-site/">the <strong>cost</strong> of building a web site</a>, I mention that with a larger budget you can afford to hire a professional or a team of professionals to build your web site. But what do these people do? What are the steps involved to produce a web site?</p>
<p>Here I describe some of the most common steps taken to produce a web site. That is not to say that every web site build requires all of these steps. Depending on the project some of these steps may not be necessary. The client may also wish to skip some of the steps in an effort to drive down cost. It&#8217;s true that skipping a step will lower the cost, but usually not by much. Because each step lends itself to the next, skipping one step often just adds extra effort to the next. For example, if you were to skip wireframing and get right into designing the mockups, it would most likely take longer to produce the mockups. All the considerations that would have been sorted out in the wireframing would have to be considered while doing the mockups.<span id="more-2526"></span></p>
<p><span class="Apple-style-span" style="font-weight: bold;">Project Brief</span></p>
<p>First, the project needs to be defined. Sometimes the details are nicely laid out in a project brief document, other times it&#8217;s a few scribbles on a dirty napkin. I often receive emails to the tune of, &#8220;I&#8217;d like to build a web site similar to abcxyz.com ASAP. How much would that cost?&#8221; It&#8217;s difficult to take these requests seriously. On the flip side, when a designer or agency contacts me, they&#8217;ve almost always already helped the client hash out a detailed project brief.</p>
<p>A project brief saves time and money for both parties involved. And anyone can write it. You don&#8217;t need to know the technical details. And it doesn&#8217;t need to have an executive summary and appendix. A project brief consists of a description of the business, organization, product, or whatever the web site will be about. It details why the web site is being built, the goals it is meant to achieve. It points out similar web sites and basic descriptions of important features (for example, maybe a blog is required).</p>
<p>Depending on the project, sometimes a project brief still isn&#8217;t enough detail. If the project involves a lot of programming and some complex workflows, a requirements analysis may also be necessary.</p>
<h4>Requirements Analysis</h4>
<p>The product of a requirements analysis is a detailed document explaining precisely what needs to be built and how it works. It&#8217;s sort of a blue print of the site&#8217;s functionality and how users will interact with it. The document may contain &#8220;use case&#8221; analysis, describing what users with different roles can do in the system. For example, an auction site may allow an Administrator user to cancel any auctions but a Subscriber user can only cancel auctions they create.</p>
<p>Complex web sites (auction sites like eBay or social networking sites like Facebook) are referred to as web applications, or web apps for short. If you&#8217;re developing a complex web site or a web app, you should definitely go through the process of defining the requirements. A requirements analysis will help you identify the essential features and discard those not needed (or push them to a later phase of the project). Without this exercise now, you will undoubtedly be wasting time during design and programming working on features you will discover aren&#8217;t necessary for launch.</p>
<h4>Content Strategy</h4>
<p>So you have a bunch of content. That&#8217;s good enough, right? Wrong. Someone needs to sort through it and separate the useful stuff from the junk. If you were putting together slides for a presentation, you wouldn&#8217;t just throw in everything you have, would you? What if it was a 5-minute presentation? Content needs to be chosen. You need to constantly ask the question, &#8220;Why?&#8221; Why should this content be presented? This is content strategy.</p>
<h4>Information Architecture</h4>
<p>It is vital to the user experience that you take the time to organize your content, decide which pages are most important and how each page is related. Done properly, it ensures that users will easily be able to find what you want them to find. The product of this exercise, a graph showing a hierarchy of content and their relationship is called an Information Architecture (IA).</p>
<p>Of course, if the site is small and simple the IA should be quick and easy to do. Large web sites that were built without any forethought of the IA are almost always poorly structured and organized and can be very frustrating to use. Developing an IA shapes the way your web site flows, helps navigation and shows how your users will find content on your site. Many university and college web sites could benefit from a proper IA during their next redesign.</p>
<h4>Copywriting</h4>
<p>Are you a good speller? Why not write your own copy then, right? No. There are other things to consider when it comes to copy and the web, number one being Search Engine Optimization (SEO). Professional copywriters who specialize in writing for the web have an understanding of SEO practices and will make special efforts to write copy that targets the keywords your intended visitors will be searching for. Search engines love to snack on these keywords, especially when they are titles. Coming up with titles that contain search keywords but are still readable and relevant can be a challenge. If your copy doesn&#8217;t contain the right keywords people won&#8217;t find your site but if your copy contains too many keywords people won&#8217;t read it (and search engines may figure out it&#8217;s just a dump of keywords and ignore it). Writing good copy for the web is a bit of a dark art.</p>
<h4>Branding</h4>
<p>Branding can be complex when you start getting into evoking emotions, brand associations, etc. In its basic form branding involves designing a logo, choosing/developing typography, selecting colours, and coming up with different treatments. Typically you might have a black and white treatment and a colour treatment for your logo. Maybe also a treatment where the logo sits above the company name and one where it sits to the left of the company name. In Canada, we often require different treatments for French and English.</p>
<p>A brand guide document is often a product of branding. It details all of the different treatments and provides a reference document for anyone who works with the brand. This helps maintain consistency across print, television, web and other media.</p>
<p>The large companies and organizations I&#8217;ve worked with have always outsourced their branding to an agency who specializes in brand development. When Future Shop rebranded they had a typographer develop a special font just for their brand. Many companies get their branding done with the design of their other print materials before the web site is built, but others do ask for branding with the building of their web site.</p>
<p>If you&#8217;re interested in branding, check out <a href="http://www.underconsideration.com/brandnew/">Brand New</a>, an excellent critique of brand designs.</p>
<p><span class="Apple-style-span" style="font-weight: bold;">Wireframes</span></p>
<p><a href="http://bradt.ca/wp/wp-content/uploads/2010/10/xploredive_wireframe-e1294097893326.gif"><img class="alignright" style="float: right; padding: 0 0 20px 20px;" title="Wireframe" src="/wp/wp-content/uploads/2010/10/xploredive_wireframe-300x380.gif" alt="" width="300" height="380" /></a>Some web designers like to do detailed sketches with paper and pencil. Others like to use thick markers to ensure minimal detail. Others again like to start in a vector drawing program like Visio or Omnigraffle. No matter what the method, wireframes set the structure of pages and how your users will interact with them without the distraction of colours, shadows, and other aesthetic elements.</p>
<p>Currently I use Omnigraffle to trace the layout of pages, header, footer, navigation, sidebars, tables, forms, and other elements. I also describe how users will interact with the pages, for instance what happens when a form is submitted or a button is clicked (<a href="http://bradt.ca/wp/wp-content/uploads/2010/10/xploredive_wireframe-e1294097893326.gif">see example</a>).</p>
<p>Having a solid set of wireframes to work from not only saves designers and developers time in subsequent phases of the project, it allows them to better focus and produce a product of the best possible quality. Wireframes gets you involved early, allowing you to provide feedback before design and development get started.</p>
<h4>Mockups</h4>
<p>Usually web designers work in some Adobe product (Photoshop, Illustrator, Fireworks, InDesign, etc) or some other graphic software. They craft an image of each page (or each distinct page template) approximately how it will look in a web browser. These images are often called mockups (though I&#8217;ve heard them called comps, screens and designs as well).</p>
<p>There has recently been a small movement of designers who are skipping this step and doing mockups right in the browser with HTML and CSS. The advantage being that you (the client) view the mockup in your web browser of choice and are not aware of any features that a different browser might have. For example, if the client is viewing the page in Internet Explorer 8 they would see square corners, unaware that in Firefox, Chrome, and Safari users see subtle rounded corners on certain elements.</p>
<h4><strong>Frontend Development</strong></h4>
<p>When we say &#8216;frontend&#8217;, we are really talking about the web browser. It&#8217;s the technologies that the web browser uses to display a web page and allow you to interact with it: HTML, CSS, and Javascript. However, a frontend developer also needs to understand semantics, SEO, and accessibility issues. Designers are often frontend developers as well, so your designer may be the one doing this work.</p>
<p>The frontend developer uses the previously produced mockups as a guide for dimensions, colours, typography, etc. When necessary they will &#8220;cut&#8221; out a piece of the mockup and create an image that will be loaded into the page. For example, a grainy texture that sits behind the content would be cut out of a mockup and saved for use as a background image in the web page.</p>
<p>Sometimes the HTML and CSS is done by one frontend developer and another who is better at programming handles the Javascript coding. The backend developer may actually do the Javascript work.</p>
<h4>Backend Development</h4>
<p>Also referred to as &#8220;coding&#8221; or &#8220;programming&#8221;, backend development involves writing code to handle processing of actions taken by someone using the web site. For example, when you submit a contact form the submission is checked for validity, and if valid, emailed to the site owner. If invalid, an error message is shown. The validating and emailing is done on the backend. Another example of backend development would be writing a new plugin for WordPress or another CMS.</p>
<p>Coding can be quite simple (like the form example above) or very complex and challenging. I recently completed a project that involved development of a recommendation engine (a simpler version of Amazon&#8217;s &#8220;You may also like&#8230;&#8221; feature). This involved research and implementation of an algorithm that guesses what you might like based on your previous ratings and other users&#8217; ratings. In addition to a tough implementation, there were performance issues that also had to be resolved. (This type of recommendation algorithm is actually an area of study in Computer Science know as <em>collaborative filtering</em>. There was even a competition called the <a href="http://en.wikipedia.org/wiki/Netflix_prize">Netflix Prize</a> awarding $1M to anyone that bested their algorithm by 10%.)</p>
<h4>Quality Assurance &amp; Testing</h4>
<p>When building the site is done, it is necessary to go through all the components, test them, and fix any bugs that crop up. For example, if the site contains a form, you would submit it empty to see if all the validation works, fill it with non-typical information to see how it handles it, and see if the email message is sent after submission and is properly formatted. If someone finds a bug, they need to submit a bug report describing what is happening, what is supposed to happen, and the steps to take to reproduce the bug.</p>
<p>For a small project, the QA team may just be the client and a designer and/or developer. With larger, more complex projects, the QA team may be a dedicated group whose sole responsibility is to test the site for bugs and report them to the designers and developers.</p>
<h4>Documentation</h4>
<p>Very few developers will produce documentation unless you explicitly request it. Most developers see documentation as a waste of time because they don&#8217;t need it. They already know how everything works. You don&#8217;t.</p>
<p>Some developers do not enjoy writing documentation, so they avoid it like the plague. They don&#8217;t mention it and may even try to talk you out of it. They may be right however. If you&#8217;re developing a small site, just taking notes during a training session would probably be enough documentation. If you&#8217;re developing a large, complex web site or web application, documentation is absolutely necessary. Especially if it&#8217;s only one developer working on it. (&#8220;We need documentation in case you get hit by a bus.&#8221;) Unfortunately, of the many times I&#8217;ve heard clients express legitimate concern for a lack of documentation, there are very few times that the resources were committed to producing it.</p>
<p>Ideally, get on this right from the beginning. Work documentation into your budget and ensure that it is a project deliverable that you can ask for in the end.</p>
<h4>Training</h4>
<p>Unless this is a simple site built on a CMS you&#8217;re already familiar with, some kind of training is going to be necessary. Generally, training involves walking through the site, exposing you to all the features, and teaching you how to manage it. Many developers use WordPress or some other CMS which has standard features that many people are already familiar with. If they aren&#8217;t familiar with the CMS, there&#8217;s usually lots of tutorials and help readily available.</p>
]]></content:encoded>
			<wfw:commentRss>http://bradt.ca/archives/whats-involved-in-building-a-web-site/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://bradt.ca/archives/whats-involved-in-building-a-web-site/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=whats-involved-in-building-a-web-site</feedburner:origLink></item>
	</channel>
</rss>

