<?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>Pixel Acres &#187; Web Design</title>
	<atom:link href="http://f6design.com/journal/category/web-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://f6design.com/journal</link>
	<description>Adventures in web and graphic design</description>
	<lastBuildDate>Thu, 11 Mar 2010 02:37:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Subversion for web development: Part 3</title>
		<link>http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-3/</link>
		<comments>http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-3/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 09:48:46 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=975</guid>
		<description><![CDATA[ In the final article of the series I will talk about configuring a local Apache webserver to integrate smoothly with your development working copy, and how to deploy a version controlled website to a live webserver.]]></description>
			<content:encoded><![CDATA[<p>In the <a href="http://f6design.com/journal/2009/12/23/subversion-for-web-development-part-1/">first</a> and <a href="http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-2/">second</a> parts of this series you learned what version control is, and how to put a place a website under version control using Subversion. In this final article I will talk about configuring a local Apache webserver to integrate smoothly with your development working copy, and how to deploy a version controlled website to a live webserver.</p>
<h3>Working with a local web server</h3>
<p>Except for the very simplest sites, my web projects require PHP and therefore must run on a webserver with PHP installed. For testing purposes I have an Apache webserver installed on my local computer &#8211; I use <a href="http://www.apachefriends.org/en/xampp.html">XAMPP</a>, which is a free Apache/MySQL/PHP distribution for Linux, Windows, Mac OS X and Solaris.</p>
<p>For each project I create an Apache virtual host, which allows the website to have its own domain root. This is configured in Apache&#8217;s <em>httpd-vhosts.conf</em> file:</p>
<pre><code>&lt;VirtualHost *:80&gt;
    DocumentRoot "D:/jobs/my_project/dev/_svn_working_copy/www"
    ServerName myproject.local
    ServerAlias www.myproject.local
    ErrorLog "logs/error.log"
    CustomLog "logs/access.log" combined
    &lt;Directory "D:/jobs/my_project/dev/_svn_working_copy/www"&gt;
	Options Indexes FollowSymLinks Includes ExecCGI
	AllowOverride All
	Order allow,deny
	Allow from all
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;</code></pre>
<p>The important thing to note here is that the DocumentRoot points at the <em>www</em> directory of my Subversion working copy, not at a sub-directory of my XAMPP installation, as would usually be the case. This allows me to keep the development version of the site in the same location as all my other project files, in this case: <em>D:/jobs/my_project</em>.</p>
<p>The job folder also contains Photoshop mockups, wireframes, image assets and any other files related to the project. Keeping these files all in the one spot makes it easy to backup the project &#8211; I simply burn the entire job folder to disc or an external hard drive.</p>
<h3>Version control is not backup</h3>
<p>While we are on the topic of backup, I think it is important to point out that your should never rely on Subversion alone as a backup solution.</p>
<p>It is tempting to think of a Subversion repository as an alternative to conventional backup strategies, since in many respects a repository seems like the perfect backup: it is stored off site, it is well commented, and it has a history of every change ever made to your project. But by relying on the repository for backup you are putting all of your eggs in one basket. If the repository is ever corrupted you will lose your entire development history! Sure, you still have your local working copy of the site, but the ability to roll back to a previous website state or refer to old code is lost forever.</p>
<p>To guard against this possibility it is important to perform regular exports of your working copy, and archive these copies using your regular backup method. Subversion has an <a href="http://svnbook.red-bean.com/nightly/en/svn.ref.svn.c.export.html">export command</a> for this purpose.</p>
<h3>Deploying to a live server</h3>
<p>When it comes time to deploy your website to a production webserver, the simplest approach is to simply upload your working copy via FTP or SFTP. This method should require no major changes from your existing workflow, and has the advantage of working with any webserver. If your site resides on a shared hosting account then this is probably your only option.</p>
<p>There is just one gotcha: Subversion creates a bunch of <em>.svn</em> folders inside the working copy, which it requires to work. They contain sensitive information such as your repository URL, which you probably don&#8217;t want to broadcast to the whole world, so it is important to make sure that these files are omitted from the upload process. Any decent FTP client can be configured to filter out particular files or folders, so make sure to create a filter that ignores <em>.svn</em> directories. I use <a href="http://filezilla-project.org/">Filezilla</a>, which <a href="http://allthingsmarked.com/2009/07/20/avoid-transferring-svn-cvs-folders-in-filezilla/">does the job nicely</a>.</p>
<p><img src="http://f6design.com/journal/wp-content/uploads/2009/12/server_diagram_ftp.jpg" alt="Server diagram - upload via FTP" title="Server diagram - upload via FTP" width="450" height="384"  /></p>
<p>If Subversion is already installed on your production web server (or you are able to install it yourself) and have shell access to the server, then you have another option available to you.</p>
<p>Instead of uploading files to the server from your working copy, you can checkout a working copy of your repository trunk to the production server. When you are ready to publish to the live site you just need to update the server&#8217;s working copy and any modified files and folders will be deleted/renamed/downloaded automatically.</p>
<p><img src="http://f6design.com/journal/wp-content/uploads/2009/12/server_diagram_subversion_on_live_server.jpg" alt="Server diagram - live server is a working copy" title="Server diagram - live server is a working copy" width="450" height="414" /></p>
<p>The advantage of this approach is that it is largely free from human error &#8211; there is no chance you might forget to upload a modified file, or that one developer will accidentally upload an old file over a newer one.</p>
<p>Explaining how to work with Subversion on your production server is beyond the scope of this article (plus, I&#8217;ve never done it before!), but if you dig a little you will find tutorials online.</p>
<p><em><strong>Update 11 March 2010:</strong> A couple of readers have pointed out that the alternative deployment approach mentioned above requires additional steps to hide the .svn directories on your production server. Please read the comments below for further information.</em></p>
<h3>Making friends with Subversion</h3>
<p>As I mentioned at the outset of this series, it took a couple of goes before I had an &#8220;aha!&#8221; moment and realised how Subversion could improve my workflow, but once everything clicked into place I didn&#8217;t look back. Hopefully this article has given you some pointers about integrating version control into your own web development process.</p>
<p>There is plenty of technical detail I haven&#8217;t covered, and for that I recommend checking out the free <a href="http://svnbook.red-bean.com/"><em>Version Control with Subversion</em></a> book, and the excellent <a href="http://tortoisesvn.net/support">TortoiseSVN documentation</a>. If you have any questions about my approach, or suggestions based on your own experiences with Subversion, please leave a comment below.</p>
<p><em>Icons in this article are courtesy of <a href="http://www.visualpharm.com/">Visual Pharm</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-3/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Subversion for web development: Part 2</title>
		<link>http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-2/</link>
		<comments>http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-2/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 09:47:23 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=973</guid>
		<description><![CDATA[In the second article of the series I will give specific detail about establishing a Subversion workflow.]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://f6design.com/journal/2009/12/23/subversion-for-web-development-part-1/">part 1</a> of this series you learned what version control is, and how it can be useful for website development. In this second article I will give specific detail about establishing a Subversion workflow.</p>
<h3>Structuring your repository</h3>
<p>Before you import any data to your Subversion repository you will need some top-level directories to help organise your project. There are no set rules dictating how you approach this, but the <a href="http://svnbook.red-bean.com/en/1.5/svn.tour.importing.html#svn.tour.importing.layout">recommended repository layout</a> is to create <em>trunk</em>, <em>branches</em> and <em>tags</em> directories:</p>
<pre><code>/trunk
/branches
/tags</code></pre>
<p><strong>Trunk:</strong> This is where you store the &#8220;main line&#8221; of development. It is a snapshot of the current state of the project.</p>
<p><strong>Branches:</strong> A &#8220;branch&#8221; is a copy of the project, and allows you to carry out a separate line of development without breaking the trunk. Once you are happy with your changes they can be merged back into the main code base.</p>
<p><strong>Tags:</strong> A &#8220;tag&#8221; is an archival snapshot of the project at a given point in time.</p>
<p>Whether or not you create branches and tags entirely depends on your own approach to version control.</p>
<p>Tags are commonly used in software development to capture a snapshot of a stable release of an application, but are not necessarily applicable to websites, where changes tend to be pushed live as soon as they are made.</p>
<p>Branching is useful when multiple developers are working on the project, but may be a redundant concept for a solo developer. Two scenarios where I can see branching would be useful are during a website redesign, or when adding a major new feature to a site. Development of the live site continues in the trunk whilst the upgrades are carried out in a branch.</p>
<p>Even if you don&#8217;t plan on creating branches or tags I still recommend sticking with this conventional directory naming structure. If another developer ever needs to access your repository the <em>trunk/branches/tags</em> structure will probably be one they are already familiar with, and it also gives you the flexibility to create branches and tags should the need ever arise.</p>
<h3>What files to keep under version control</h3>
<p>The only files I keep under version control are those that are required to compile and deploy the site: the source files, any files that are required on the live web server, and a copy of the site&#8217;s database.</p>
<p>For a typical website I create two additional folders inside the trunk:</p>
<pre><code>/trunk
    /db
    /www
/branches
/tags</code></pre>
<p>The <em>www</em> directory represents a web server&#8217;s public http directory. This is where most of the project files and folders live. The <em>db</em> directory is where I store a dump of the site&#8217;s MySQL database (more on this in <a href="http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-3/">part 3 of this series</a>).</p>
<p>If I was working on a Flash project then I would have additional directories for my Actionscript and FLA source files:</p>
<pre><code>/trunk
    /db
    /www
    /src
    /lib
/branches
/tags</code></pre>
<p>None of these folder names are set in stone, and you should choose a structure that suits your work methodology.</p>
<h3>Creating a working copy</h3>
<p>To begin working with your repository you need to checkout a working copy. To do this, create a folder somewhere on your local computer, and give it a name that makes its purpose obvious. I call mine <em>_svn_working_copy</em>, and create it inside the job folder for the particular project it relates to. For instance, my folder might reside at <em>D:/jobs/my_project/dev/_svn_working_copy</em>.</p>
<p>Right-click on the directory you created, and choose <em>SVN Checkout</em> from TortoiseSVN&#8217;s context menu. In the Checkout dialog that appears, enter the URL of your repository trunk.</p>
<p><img src="http://f6design.com/journal/wp-content/uploads/2009/12/tortoisesvn_checkout_dialog.gif" alt="TortoiseSVN checkout dialog" title="TortoiseSVN checkout dialog" width="450" height="356" /></p>
<p>Once the checkout is complete your working copy should now contain the <em>db</em>, <em>www</em>, and any other directories you created in the trunk.</p>
<p>(You might notice that each directory in your project contains a folder named <em>.svn</em>. TortoiseSVN requires these folders to do its job so make sure not to delete or edit them!)</p>
<p>Now you can start to add files to your project, and edit them as you would usually. Remember that the <em>www</em> directory represents the site&#8217;s root level, so your index file should be stored here, along with any other files and folders required for the site to function.</p>
<p>You might be wondering <em>&#8220;What if I need run my project in my local web server? Shouldn&#8217;t I check out the working copy to my Apache webroot?&#8221;</em>. That&#8217;s what I initially thought too, until I realised that Apache could be configured to read files from any directory on my computer. I&#8217;ll explain how (and why) I do this in <a href="http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-3/">part 3 of this series</a>.</p>
<h3>Keeping a database under version control</h3>
<p>If your site relies on a database then you need to keep that under version control too, otherwise you lose synchronisation if you ever need to roll back to a previous website state. But because the database is stored outside of a website’s public html directory it needs special consideration to ensure it is included with Subversion commits.</p>
<p>I mentioned earlier that my SVN trunk includes a directory named <em>db</em>. This is where I place a dump of the site’s MySQL database. In my case this is a manual process: I use PHPMyAdmin to export a .sql file which I copy into my trunk’s <em>db</em> directory, overwriting the previous version.</p>
<p>I suspect it is possible to automate the process of exporting the database from MySQL into the <em>db</em> folder, but for now I&#8217;m happy enough to do it manually. Like the other steps in the version control workflow it quickly becomes second nature.</p>
<h3>Making commits</h3>
<p>When you have finished editing the files in your working copy it is time to commit them to the repository. In TortoiseSVN this is accomplished by right-clicking the folder in which your working copy resides (or any sub-folder or individual file) and choosing <em>SVN Commit</em> from the context menu.</p>
<p>At this point you have the option to add any non-versioned files to the repository, after which any new or modified files are uploaded to your Subversion server and stored in the repository. The next time anyone browses or checks out the trunk they will be able to view your changes.</p>
<h3>Commenting your commits</h3>
<p>It is good practice to accompany each commit with a descriptive message explaining the changes you have made. In a team environment commit log messages are a vital means of communicating with the rest of the team, but they are just as important for the solo developer. Well documented commits help you recall every change you make to your project, when you made it, and why. </p>
<blockquote><p>Trust me, you don’t want to be the dunce, who commits with blank messages, or with meaningless ones like “Fixes”. Your team will hate you. You will hate yourself after a month, when trying to discover what the hell this code does in your brilliant project.<br />
<cite>&ndash;Petyo Ivanov, <a href="http://wildbit.com/blog/2008/11/11/the-importance-of-commit-messages/">The importance of commit messages</a></cite></p></blockquote>
<h3>Commit frequency</h3>
<p>How often you choose to commit changes to the repository is a matter of personal preference. Once a day, twice a day, ten times a day &#8211; it&#8217;s entirely up to you.</p>
<p>I like to make my commits fairly frequently. This makes it easier to review the changes that I&#8217;ve made, and also keeps me focussed on the task at hand: the commit message acts as a goal for the coding session. Also, I get a small glow of satisfaction each time I make it commit, like ticking off an item on a to-do list!</p>
<p>In the final part in this series I will talk about working with a local Apache development server, and deploying a version controlled website to a live webserver.</p>
<p><strong><a href="http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-3/">Read part 3 &raquo;</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Subversion for web development: Part 1</title>
		<link>http://f6design.com/journal/2009/12/23/subversion-for-web-development-part-1/</link>
		<comments>http://f6design.com/journal/2009/12/23/subversion-for-web-development-part-1/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 06:09:35 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=764</guid>
		<description><![CDATA[In this three part series of articles I will explain my approach to using Subversion, the open-source version control software, for web development.
For a long time I steered clear of version control, dismissing it as too complex, or something that was only useful for large development teams. I took Subversion for a test drive, but [...]]]></description>
			<content:encoded><![CDATA[<p>In this three part series of articles I will explain my approach to using <a href="http://subversion.tigris.org/">Subversion</a>, the open-source version control software, for web development.</p>
<p>For a long time I steered clear of version control, dismissing it as too complex, or something that was only useful for large development teams. I took Subversion for a test drive, but didn&#8217;t really &#8220;get it&#8221;, and decided version control wasn&#8217;t for me.</p>
<p>I changed my tune earlier this year when I was employed to work on a project that was already under version control. I had no choice but to get up to speed with Subversion, and once I got the hang of it I was excited to discover that version control streamlined my entire workflow. I now use Subversion for all of my web projects and consider it an integral part of my development process.</p>
<p>My approach to Subversion is geared towards solo web developers like myself, and is fairly easy to grasp. I won&#8217;t delve too deeply into the inner workings of Subversion and its commands &#8211; this will be more of a conceptual overview of setting up a version control workflow:</p>
<p>Part 1: Getting started with version control<br />
<a href="http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-2/">Part 2: Working with Subversion repositories</a><br />
<a href="http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-3/">Part 3: Servers and deployment</a></p>
<h3>What is version control?</h3>
<p>In a nutshell, version control allows you to track changes made to a file over time, and roll back to a previous state when you mess up. This might not sound too different to the traditional <em>&#8220;save as&#8230;&#8221;</em> technique offered by virtually every software application, but a <a href="http://en.wikipedia.org/wiki/Revision_control">Version Control System</a> offers considerably more functionality than simply appending <em>&#8220;_v01&#8243;</em> or <em>&#8220;_v02&#8243;</em> to your file names. Some of the advantages of a Version Control System are:</p>
<ul>
<li><strong>Roll back.</strong> Jump back in time and revert a file, folder, or even the whole project to a specific historic state. If you make a mistake in your code you can simply revert to the last good version of the file you are working on.</li>
<li><strong>Revision messaging.</strong> File revisions can be accompanied by messages explaining what changes were made, and why. This makes it possible to track the evolution of a project over time.</li>
<li><strong>Branching.</strong> If you need to test out new features in your project without disturbing the main line of development, you can &#8220;branch&#8221; your code and continue development in a separate sandbox. Later, you can merge changes back into the main code base.</li>
<li><strong>Work with a team.</strong> If several people are working on the same project, version control helps to synchronise changes so that one team member doesn&#8217;t accidentally overwrite another&#8217;s work.</li>
<li><strong>Work remotely.</strong> A version controlled project can be accessed from anywhere, any time. This is perfect for geographically remote team members or developers who work from multiple locations.</li>
</ul>
<h3>Why use version control?</h3>
<p>In my pre-Subversion days I relied on an ad-hoc backup system whereby I would periodically create a manual snapshot of the project I was currently working on by copying the entire project source to a new directory. I might make a backup once a day, or perhaps every two days. If the changes were small, I might not make a backup at all.</p>
<p>This approach worked well enough, but left me wide open to data loss. Reverting to a previous project state could be a tedious task, requiring that I backtrack further than was strictly necessary.</p>
<p>I also lacked comprehensive metadata about the changes I was making. I did keep brief notes with each backup, describing the changes I had made since the last snapshot, but these notes provided only &#8220;broad brush strokes&#8221; information about my edits, and lacked detail about which specific files had been modified.</p>
<p>A Version Control System helps to address these problems: snapshots are taken of revisions much more frequently, code changes are easier to document and track, and recovering from coding mistakes is much easier.</p>
<h3>Version control for web development</h3>
<p>When setting up a Version Control System my initial challenge was to find a workflow that worked for me as a solo web developer. Most of the explanations of version control I read were aimed at software programming teams, and it wasn&#8217;t immediately obvious to me how I fitted into the picture. To help me choose a version control approach that suited my own requirements, I began by listing the key components of my web development process:</p>
<ul>
<li>Most of the time I work alone on projects, not as part of a team</li>
<li>I work on projects from the office and from home, using two different computers</li>
<li>During the development phase of a project I work from an Apache web server, hosted on my local computer</li>
<li>Most of my websites rely on a MySQL database</li>
<li>My websites are hosted on a range of web servers, usually in a shared hosting environment, and in many cases I am not free to choose the hosting solution</li>
</ul>
<p>With those considerations in mind, I needed an approach to version control that allowed for:</p>
<ul>
<li>Remote access to the Subversion repository</li>
<li>A working copy of the repository that could be accessed by my local web server</li>
<li>The website&#8217;s database to be under version control along with the source files</li>
<li>A deployment process that would work in a typical shared hosting environment</li>
</ul>
<h3>Creating a Subversion repository</h3>
<p>The first step in working with Subversion is to create a repository. A repository is a store of data, which holds all of your project files, much like a standard file-system. A repository does a lot more than that though:</p>
<blockquote><p>What makes the Subversion repository special is that it <em>remembers every change</em> ever written to it: every change to every file, and even changes to the directory tree itself, such as the addition, deletion, and rearrangement of files and directories.<br />
<cite>&ndash;<a href="http://svnbook.red-bean.com/">Version Control with Subversion</a></cite></p></blockquote>
<p>The simplest way to create a repository is on your local machine, a task that is made extremely easy by <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a> (a Subversion client). A local repository is perfect for cutting your teeth with Subversion, but has a major drawback: it can only be accessed from one computer. A remotely hosted repository is a far more powerful and flexible option.</p>
<p>To create a remote Subversion repository you are going to need a web server with Subversion installed. This is not as daunting as it may sound. Many web hosting companies offer Subversion with their plans (I use <a href="http://dreamhost.com/">Dreamhost</a>), or you can choose a Subversion hosting specialists such as <a href="http://unfuddle.com/">Unfuddle</a>, <a href="http://www.springloops.com/">Springloops</a> and <a href="http://beanstalkapp.com/">Beanstalk</a>.</p>
<p>It is important to note that your Subversion repository needn&#8217;t be on the same server as your website. In the development environment I describe in this article there is never any direct communication between the repository and the live web server.</p>
<h3>Choosing a Subversion client</h3>
<p>Once your Subversion repository is up and running, you need a way to access it. A Subversion client allows you to to read data from your repository (&#8220;check out&#8221;, in Subversion parlance), write data to the repository (&#8220;commit&#8221;), and perform other useful actions such as branching, tagging, and merging.</p>
<p>I work in a Windows environment, so <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a> was an obvious choice for my Subversion client. TortoiseSVN installs as a Windows shell extension, and all of its functionality is accessed via the Explorer context menu &#8211; in other words, by right-clicking on a file or folder. This approach is very unobtrusive, and soon becomes second nature.</p>
<p><img src="http://f6design.com/journal/wp-content/uploads/2009/12/tortoisesvn_context_menu.jpg" alt="TortoiseSVN context menu" title="TortoiseSVN context menu" width="450" height="541" /></p>
<p>I won&#8217;t go into detail about how to install and use TortoiseSVN. The program is very <a href="http://tortoisesvn.net/support">well documented</a> and there are stacks of <a href="http://www.google.com/search?q=tortoisesvn+tutorial">online tutorials</a> if you get stuck.</p>
<p>In <a href="http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-2/">part 2</a> and <a href="http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-3/">part 3</a> of this series I will refer to TortoiseSVN when explaining some of my processes. For other Subversion clients the process will be slightly different from what I describe, but the basic principles remain the same. Apple users will find that there are plenty of Subversion clients for the Mac, though I haven&#8217;t used any of them and can&#8217;t make a personal recommendation &#8211; if you have a favourite you can leave a comment below.</p>
<p>In the second part of this series I will explain how I structure my subversion repository, how to create a working copy of your repository, and how to commit changes to the repository.</p>
<p><strong><a href="http://f6design.com/journal/2009/12/27/subversion-for-web-development-part-2/">Read part 2  &raquo;</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2009/12/23/subversion-for-web-development-part-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Font Squirrel&#8217;s @font-face kit generator</title>
		<link>http://f6design.com/journal/2009/10/18/font-squirrel-font-face-generator/</link>
		<comments>http://f6design.com/journal/2009/10/18/font-squirrel-font-face-generator/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 02:25:29 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[News & Reviews]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Typography]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=749</guid>
		<description><![CDATA[If you want to create your own @font-face kits, you absolutely must check out Font Squirrel&#8217;s new @font-face generator tool. All you have to do is upload a TrueType or OpenType format font, and the generator spits out a zip file containing:

The original typeface for Safari and Firefox 3.5
A WOFF font for Firefox 3.6+
An SVG [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to create your own <code>@font-face</code> kits, you absolutely must check out Font Squirrel&#8217;s new <a href="http://www.fontsquirrel.com/fontface/generator"><code>@font-face</code> generator tool</a>. All you have to do is upload a TrueType or OpenType format font, and the generator spits out a zip file containing:</p>
<ul>
<li>The original typeface for Safari and Firefox 3.5</li>
<li>A WOFF font for Firefox 3.6+</li>
<li>An SVG font for Opera, Chrome, and iPhone</li>
<li>An EOT font for Internet Explorer</li>
<li>A sample HTML page</li>
<li>A sample CSS stylesheet</li>
</ul>
<p>The generator also features options to reduce file size by subsetting the font, cleanup font outlines, and auto-hint glyphs to improve rendering.</p>
<p><img src="http://f6design.com/journal/wp-content/uploads/2009/10/font_squirrel_generator.jpg" alt="Font Squirrel Generator" title="Font Squirrel Generator"  width="450" height="550" class="" /></p>
<p>Sweet!</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2009/10/18/font-squirrel-font-face-generator/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Typekit and the future of web fonts</title>
		<link>http://f6design.com/journal/2009/10/17/typekit-and-the-future-of-web-fonts/</link>
		<comments>http://f6design.com/journal/2009/10/17/typekit-and-the-future-of-web-fonts/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 09:51:08 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Typography]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=575</guid>
		<description><![CDATA[Now that all major web browsers finally support the CSS @font-face declaration, embedding fonts in a web page is possible with just a few lines of CSS. In theory this means that web designers no longer need to limit their font choices to a handful of system fonts, and are free to use any typeface [...]]]></description>
			<content:encoded><![CDATA[<p>Now that all major web browsers <a href="http://webfonts.info/wiki/index.php?title=@font-face_browser_support">finally support</a> the CSS <a href="http://www.w3.org/TR/css3-fonts/#the-font-face-rule"><code>@font-face</code></a> declaration, embedding fonts in a web page is possible with just a few lines of CSS. In theory this means that web designers no longer need to limit their font choices to a handful of system fonts, and are free to use any typeface they please. In practice that freedom comes with a caveat: we are only allowed to use fonts with a license agreement that allows web embedding.</p>
<p>The trouble is that digital fonts have no provision for <a href="http://en.wikipedia.org/wiki/Digital_rights_management">DRM</a>, and pirating a copy of an embedded web font is a trivial exercise for anyone with the mind to do so. That&#8217;s obviously not a prospect type foundries are too keen on, and consequently no major foundry offers a licensing option for embedding their fonts in a web page. If you link to a commercial font from your CSS stylesheet the chances are that you are breaking your license agreement. Even the number of free fonts with an EULA that <a href="http://www.webfonts.info/wiki/index.php?title=Fonts_available_for_%40font-face_embedding">condones <code>@font-face</code> embedding</a> is pitifully small.</p>
<p>That&#8217;s where <a href="http://typekit.com/">Typekit</a> comes into the picture. Typekit is a new font delivery service devised by <a href="http://www.veen.com/jeff/">Jeffrey Veen</a> that promises to take the pain out of licensing fonts for web embedding. In their <a href="http://blog.typekit.com/2009/05/27/introducing-typekit/">own words</a>:</p>
<blockquote><p>We&#8217;ve been working with foundries to develop a consistent web-only font linking license. We’ve built a technology platform that lets us to host both free and commercial fonts in a way that is incredibly fast, smoothes out differences in how browsers handle type, and offers the level of protection that type designers need without resorting to annoying and ineffective DRM.</p></blockquote>
<p>Here&#8217;s how it works:</p>
<ul>
<li>Typekit strike up agreements with type foundries allowing fonts to be licensed for CSS linking.</li>
<li>Web designers subscribe to Typekit, and pay a monthly fee to embed typefaces on their websites using an <code>@font-face</code> declaration.</li>
<li>Would-be font pirates are deterred from stealing embedded Typekit&#8217;s fonts by security measures including: allowing only authorised domains to link to their fonts; source code obfuscation; and splitting fonts into multiple files.</li>
</ul>
<p>Problem solved, right? Well, perhaps.</p>
<p>Typekit&#8217;s font-as-a-service model navigates a clever path through the legal minefield of web font licensing, but I am not convinced that it is a perfect solution. In particular there are two aspects of Typekit&#8217;s approach that strike me as problematic: the fact that their pricing model is based around renting fonts rather than owning them, and the need to rely on remote servers for the delivery of fonts.</p>
<h3>Renting vs buying</h3>
<p>Because Typekit is still in beta <a href="http://twitpic.com/ekj82">details of its pricing</a> are sketchy, but it is clear that customers will pay a monthly or annual subscription fee to access Typekit&#8217;s font library. This pricing model is significantly different to the traditional one-off payment required to license fonts for offline applications.</p>
<p>Will website owners be prepared to continue paying for a font month after month, year after year? Over time Typekit subscription fees could conceivably exceed the cost of a standard font license, despite the fact that Typekit&#8217;s fonts cannot be reused in any other medium, or potentially even on another website. And if you ever cancel your Typekit subscription, the fonts vanish into thin air. This is a radical departure from the current font licensing model, which grants customers the right to perpetually reuse any fonts they purchase.</p>
<h3>Purchasing fonts twice</h3>
<p>In addition to the fact that font subscription models require designers to pay for fonts they can&#8217;t reuse, in most cases it will also be necessary to purchase a regular installable version of each typeface.</p>
<p>To produce mockups and work on a production version of a website, a web designer needs to work with the same typefaces that will feature in the final live site. Typekit only offer web embedding of fonts, so to install a typeface on their local computer a web designer would have to purchase a separate font from another vendor. It&#8217;s not going to cut the mustard to produce mockups set in Arial and tell the client to &#8220;imagine that the headings are actually Avant Garde&#8221;!</p>
<p>When you also consider that many websites have multiple domain aliases (mysite.com, mysite.com.au, etc), and Typekit uses a per-domain pricing model, it is clear that the potential exists to pay many times over for the same font.</p>
<h3>Network reliability</h3>
<p>Another potential problem with Typekit is network downtime.</p>
<p>I can&#8217;t imagine many designers would trust their CSS files to a remote delivery network, and I think we need to accord fonts a similar importance. If major players like Google and Amazon suffer network interruption from time to time, then it is reasonable to assume that Typekit will too.</p>
<p>Admittedly, occasional network outages may not be a deal breaker, what happens if Typekit goes out of business, or a foundry retracts the right for Typekit to distribute their fonts? In either of these scenarios it seems probable that Typekit subscribers would have the fonts rudely stripped from their websites. In a best case scenario subscribers could turn to a Typekit competitor such as Fontdeck to revive their font links, but what if no competitor offered the same typefaces? The design of countless websites could be irrevocably ruined due to their dependence on remotely hosted fonts.</p>
<h3>The future of font embedding</h3>
<p>Despite the reservations I have outlined above, I have to agree with <a href="http://www.stuffandnonsense.co.uk/">Andy Clarke</a> when he predicts that <a href="http://forabeautifulweb.com/blog/about/why_typekit_will_change_everything/">Typekit will change everything.</a></p>
<p>By coming up with a practical answer to the problem of <code>@font-face</code> licensing, Typekit has paved the way for alternative font embedding approaches. Clearleft and OmniTI have joined forces to create <a href="http://fontdeck.com/">Fontdeck</a>, and at least one foundry, <a href="http://www.typotheque.com/site/index.php">Typotheque</a>, has a web font service <a href="http://www.typotheque.com/news/typotheque_web_font_service_screencast_demo">under development</a>.</p>
<p>Soon there will be a number of services vying with Typekit to win the hearts (and wallets) of web designers, however I suspect the deciding vote will ultimately be cast by large font foundries such as Linotype and Adobe.</p>
<p>The type industry&#8217;s major players will need to decide where they stand on the issue of font embedding, or they risk being left behind while smaller type foundries reap the benefits of web font licensing. If they follow the lead of their counterparts in the music industry it might be years before our <code>@font-face</code> woes are sorted out. On the other hand they might choose to take the bull the horns and launch their own font hosting services to compete with Typekit.</p>
<p>Whatever the response of large type foundries and vendors turns out to be, it will very likely determine the future of typography on the web. Hopefully we end up with a solution that is fair to web designers, website owners and font foundries alike.</p>
<h3>Further reading</h3>
<h4><a href="http://blog.typekit.com/2009/05/27/introducing-typekit/">Introducing Typekit</a></h4>
<p>Jeffrey Veen announces the arrival of Typekit, and explains the basics of how the service will work.</p>
<h4><a href="http://www.webdirections.org/blog/ubiquitous-web-font-embedding-just-got-a-step-closer/">Ubiquitous web font embedding just got a step closer</a></h4>
<p>John Allsopp argues the case for more liberal font licensing. Recommended reading.</p>
<h4><a href="http://forabeautifulweb.com/blog/about/first_impressions_of_typekit">First impressions of Typekit</a></h4>
<p>A step-by-step tour of the Typekit beta.</p>
<h4><a href="http://designintellection.com/on-typekit/">On Typekit</a></h4>
<p>David Yeiser shares some of my reservations about Typekit.</p>
<h4><a href="http://ilovetypography.com/2009/08/07/the-font-as-service/">The Font-as-Service</a></h4>
<p>Jay Elliot Stocks gives an overview of Typekit and its competitors.</p>
<h4><a href="http://forabeautifulweb.com/blog/about/testing_typotheque_font-face_embedding/">Testing Typotheque @font-face embedding</a></h4>
<p>Andy Clarke takes Typotheque&#8217;s new web license for a spin. It is interesting to note that Typotheque requires a one-off payment rather than a subscription like Typekit.</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2009/10/17/typekit-and-the-future-of-web-fonts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scaffold: A CSS framework with a difference</title>
		<link>http://f6design.com/journal/2009/10/06/scaffold-a-css-framework-with-a-difference/</link>
		<comments>http://f6design.com/journal/2009/10/06/scaffold-a-css-framework-with-a-difference/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 23:48:54 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=528</guid>
		<description><![CDATA[I have always been slightly wary of CSS frameworks, put off by non-semantic class names, and a nagging feeling that CSS simply isn&#8217;t complex enough to require the hand-holding a framework offers.
But today I came across Scaffold, a CSS framework that made me rethink my position.

Scaffold differs from traditional static CSS frameworks in that it [...]]]></description>
			<content:encoded><![CDATA[<p>I have always been slightly wary of CSS frameworks, put off by non-semantic class names, and a nagging feeling that CSS simply isn&#8217;t complex enough to require the hand-holding a framework offers.</p>
<p>But today I came across <a href="http://wiki.github.com/anthonyshort/csscaffold">Scaffold</a>, a CSS framework that made me rethink my position.</p>
<p><a href="http://wiki.github.com/anthonyshort/csscaffold"><img src="http://f6design.com/journal/wp-content/uploads/2009/10/scaffold_logo.jpg" alt="Scaffold logo" title="Scaffold logo" width="300" height="133" class="" /></a></p>
<p>Scaffold differs from traditional static CSS frameworks in that it runs on a web server, and acts as a compiler. Scaffold extends the power and functionality of CSS by parsing each of your CSS files using PHP and generating browser-readable stylesheets on-the-fly. Some practical benefits of this approach are:</p>
<ul>
<li>Automatically cache and compress CSS files</li>
<li>Declare constants in your CSS file and reuse them later in the stylesheet</li>
<li>Call <a href="http://wiki.github.com/anthonyshort/csscaffold/built-in-mixins">mixins</a> (functions) from your CSS selectors</li>
<li>Evaluate portions of your CSS as PHP</li>
<li>Nest CSS selectors</li>
</ul>
<p>Ruby users will be familiar with many of these features from <a href="http://compass-style.org/">Compass</a> and <a href="http://sass-lang.com/">Sass</a>, but Scaffold brings server-side CSS to the Apache/PHP user base.</p>
<h3>Extending scaffold using plugins</h3>
<p>Scaffold&#8217;s feature set can be extended using plugins. In addition to bundled plugins for compression, image replacement and generating human readable output, there are plugins for targeting specific browsers, creating <a href="http://wiki.github.com/anthonyshort/csscaffold/layout-plugin">grid layouts</a>, and extending selectors (<em>true</em> OO CSS!).</p>
<h3>How it works</h3>
<p>Scaffold works by routing your CSS files though its PHP library, parsing your Scaffold code, and generating a standard CSS styleheet which is returned to the browser. <a href="http://wiki.github.com/anthonyshort/csscaffold/installation">Installation</a> is a matter of dropping scaffold into your CSS directory, modifying a few settings in a PHP config file, and setting Apache folder permissions for the directories that Scaffold needs to write to.</p>
<p><img src="http://f6design.com/journal/wp-content/uploads/2009/10/scaffold_diagram.jpg" alt="Scaffold diagram" title="Scaffold diagram" width="450" height="380" class="" /></p>
<p>You have two options for passing files to Scaffold: route all CSS requests to Scaffold via .htacess, or change the CSS links in your HTML so that they point to Scaffold.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;scaffold/index.php?request=screen.css&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></div></div>

<p>Scaffold is definitely a CSS framework I could learn to love, and I&#8217;m really looking forward to using it in a project. Compared to the current batch of static CSS frameworks Scaffold looks like a big step forward.</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2009/10/06/scaffold-a-css-framework-with-a-difference/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Reconsidering Arial</title>
		<link>http://f6design.com/journal/2009/09/30/reconsidering-arial/</link>
		<comments>http://f6design.com/journal/2009/09/30/reconsidering-arial/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 04:27:40 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Graphic Design]]></category>
		<category><![CDATA[Typography]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/?p=464</guid>
		<description><![CDATA[My friend John Gillespie recently wrote about the inauspicious origins of the Arial typeface, namely that it is a blatant copy of Helvetica. While I agree with the general thrust of John&#8217;s argument (I&#8217;m a self confessed Helvetica fanboy) I do think that Arial has one redeeming feature that deserves mention, especially in the context [...]]]></description>
			<content:encoded><![CDATA[<p>My friend <a href="http://www.specialops.co.nz/blog/">John Gillespie</a> recently wrote about the <a href="http://www.specialops.co.nz/blog/arial-vs-helvetica/">inauspicious origins</a> of the <a href="http://www.microsoft.com/typography/fonts/font.aspx?FMID=1705">Arial</a> typeface, namely that it is a blatant copy of <a href="http://en.wikipedia.org/wiki/Helvetica">Helvetica</a>. While I agree with the general thrust of John&#8217;s argument (I&#8217;m a self confessed Helvetica fanboy) I do think that Arial has one redeeming feature that deserves mention, especially in the context of web design: Arial renders better at small point sizes on Windows systems than Helvetica does.</p>
<h3>Hinting</h3>
<p>The reason Arial looks good at small point sizes is because Microsoft pay a lot of attention to the <a href="http://www.microsoft.com/typography/TrueTypeHintingHow.mspx">hinting of their web fonts</a> so that they render well on screen.</p>
<p>To quote Wikipedia&#8217;s article on <a href="http://en.wikipedia.org/wiki/Font_hinting">Font Hinting</a>:</p>
<blockquote><p>Font hinting is the use of mathematical instructions to adjust the display of an outline font so that it lines up with a rasterized grid. At small screen sizes, with or without antialiasing, hinting is critical for producing a clear, legible text for human readers.</p></blockquote>
<p>Fonts that have not undergone a rigorous hinting process tend to look fuzzy or poorly spaced when forced to align to a computer monitor&#8217;s pixel grid. Helvetica is a case in point: it renders very well on Mac systems even at small point sizes, but on Windows systems it looks, frankly, crappy.</p>
<h3>Arial vs Helvetica</h3>
<p>To demonstrate, here is a comparison between Arial and Helvetica on a Windows system. You will notice that Arial&#8217;s anti-aliasing is much crisper than Helvetica&#8217;s at larger sizes, and that Helvetica&#8217;s kerning falls to pieces at sizes smaller than 12px. These defects are especially evident when viewing an entire webpage set in Helvetica.</p>
<p><img src="http://f6design.com/journal/wp-content/uploads/2009/09/arial_vs_helvetica.jpg" alt="arial_vs_helvetica" title="arial_vs_helvetica" width="450" height="305" class="contentImg matte" /></p>
<p>I performed the test above in Firefox 3.5 and Internet Explorer 8 on Windows Vista, using both Adobe&#8217;s OpenType Helvetica LT Std and a Linotype PostScript version of Helvetica, with identical results.</p>
<h3>Arial on the Mac</h3>
<p>On a Mac the story is quite different. Arial and Helvetica look virtually identical (as they should), and both remain perfectly legible at 8px. This might be because Apple&#8217;s font rendering engine is superior to Microsoft&#8217;s ClearType, or perhaps the version of Helvetica that ships with Mac OSX has been hinted to retain legibility at low resolutions.</p>
<p>Whatever the case, the fact remains that Arial looks better on Windows than Helvetica does. Does this make Arial a superior font than Helvetica? Not by a long shot. But it does serve to illustrate Arial&#8217;s suitability for the Windows environment, which still accounts for over 90% of all web traffic.</p>
<h3>Does Arial deserve reconsideration?</h3>
<p>So what do you think &#8211; does Arial&#8217;s superior hinting on Windows systems elevate it beyond the status of a substandard Helvetica clone, or is it beyond redemption?</p>
<h3>A note about Win/Safari</h3>
<p>If you use Safari on a PC you may have noticed that Arial renders differently than than in the screenshot I provided. In fact, it renders exactly as it would on a Mac. That is because Safari offers the option to use Apple&#8217;s font rendering engine rather than Microsoft&#8217;s ClearType. Sadly I couldn&#8217;t test whether Helvetica&#8217;s rendering was similarly improved in Win/Safari, because Safari refuses to recognise any of my non-system fonts. If anyone can shed light on this issue, please leave a comment below. I&#8217;m very curious to know if Helvetica&#8217;s substandard appearance on Windows can be attributed to a deficiency in ClearType rather than a deficiency in the font (I suspect the former).</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2009/09/30/reconsidering-arial/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>My run-in with the Great Firewall of China</title>
		<link>http://f6design.com/journal/2008/07/06/my-run-in-with-the-great-firewall-of-china/</link>
		<comments>http://f6design.com/journal/2008/07/06/my-run-in-with-the-great-firewall-of-china/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 05:45:24 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/2008/07/06/my-run-in-with-the-great-firewall-of-china/</guid>
		<description><![CDATA[Recently I was developing a website for a client whose primary export market is in China. Needless to say I was a little alarmed when my client&#8217;s representatives in China reported that they couldn&#8217;t access their new site.
My client has reps in both Shanghai and Beijing, neither of who could see the website, so I [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I was developing a website for a client whose primary export market is in China. Needless to say I was a little alarmed when my client&#8217;s representatives in China reported that they couldn&#8217;t access their new site.</p>
<p>My client has reps in both Shanghai and Beijing, neither of who could see the website, so I knew it wasn&#8217;t a localized issue. My immediate suspicion was that the infamous &#8220;Great Firewall of China&#8221; was to blame. Thankfully I was able to take a few simple steps to diagnose the problem and get the site up and running.</p>
<h3>What is the Great Firewall of China?</h3>
<p>For anyone who doesn&#8217;t already know, the &#8220;Great Firewall of China&#8221; is the informal name given to the vast <a href="http://en.wikipedia.org/wiki/Internet_censorship_in_the_People%27s_Republic_of_China">Internet censorship apparatus</a> of the Chinese government. Sites considered injurous to the public good are blocked on a massive scale, so that they are innaccessible to Internet users within China.</p>
<h3>How to test if your site is blocked</h3>
<p>For foreign businesses and web designers who need to ensure their website reaches a Chinese audience, there are several tools which test a site&#8217;s availability from servers within China.</p>
<h4>WebSitePulse</h4>
<p>Website monitoring company <a href="http://www.websitepulse.com/help/testtools.china-test.html">WebSitePulse</a> offer a free service to check if a website makes it past the Great Firewall of China. You can test your site using servers in Beijing, Shanghai and Hong Kong. WebSitePulse also do a side by side comparion with servers in the US, Germany or Australia, so you can compare the responses.</p>
<h4>WatchMouse</h4>
<p><a href="http://www.watchmouse.com/en/ping.php">WatchMouse</a> offer a free service which pings your website from a number of servers worldwide, including one in Shanghai. If your website is being blocked, the Shanghai server will report 100% packet loss.</p>
<h3>Why me?</h3>
<p>One of the common methods of censoring a site is by IP blocking. Unfortunately, if the banned site is on a shared web host, all sites that share the same IP address are also blocked. This is what I believe happened in my case.</p>
<h3>The fix</h3>
<p>Luckily there is a simple workaround to sidestep issues with using a shared IP address: buy a static IP address. If your website has a unique IP address then it can&#8217;t be blocked simply because it shares a server with a banned site.</p>
<p>Within an hour of purchasing a static IP adress, my client&#8217;s website could be reached from within China. WebSitePulse and WatchMouse&#8217;s Chinese servers could see the site, and more importantly, my client&#8217;s reps in Shanghai and Beijing could too.</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2008/07/06/my-run-in-with-the-great-firewall-of-china/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IETester: an all-in-one Internet Explorer testing suite</title>
		<link>http://f6design.com/journal/2008/06/05/ietester-an-all-in-one-internet-explorer-testing-suite/</link>
		<comments>http://f6design.com/journal/2008/06/05/ietester-an-all-in-one-internet-explorer-testing-suite/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 02:27:58 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/2008/06/05/ietester-an-all-in-one-internet-explorer-testing-suite/</guid>
		<description><![CDATA[It seems as if someone has finally cracked the problem of running multiple standalone versions of Internet Explorer under Vista.

IETester is a web browser that can run the IE5.5, IE6, IE7, and IE8.1beta rendering engines in the same process. It has a tabbed interface which makes switching between different IE versions a snap, and although [...]]]></description>
			<content:encoded><![CDATA[<p>It seems as if someone has finally cracked the problem of running multiple standalone versions of Internet Explorer under Vista.</p>
<p><img class='contentImg matte' src='http://f6design.com/journal/wp-content/uploads/2008/06/ietester.jpg' alt='IETester' /></p>
<p><a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a> is a web browser that can run the IE5.5, IE6, IE7, and IE8.1beta rendering engines in the same process. It has a tabbed interface which makes switching between different IE versions a snap, and although it is only an alpha release it seems to work fairly well.</p>
<p>Personally, I&#8217;m still a fan of <a href="http://f6design.com/journal/2006/12/10/virtual-pc-for-ie6-testing/">running IE6 in VirtualPC</a>, using the virtual machine provided by Microsoft specifically for this purpose. No quirks or bugs, just the real IE6 running within a real Windows XP installation. But if for some reason you can&#8217;t or won&#8217;t run VPC, IETester provides a workable approach to testing in IE6 &#038; 7 side-by-side.</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2008/06/05/ietester-an-all-in-one-internet-explorer-testing-suite/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Version targeting lessons from Flash</title>
		<link>http://f6design.com/journal/2008/02/08/version-targeting-lessons-from-flash/</link>
		<comments>http://f6design.com/journal/2008/02/08/version-targeting-lessons-from-flash/#comments</comments>
		<pubDate>Fri, 08 Feb 2008 22:55:34 +0000</pubDate>
		<dc:creator>Jonathan</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[News & Reviews]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[backwards compatibility]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[version targeting]]></category>

		<guid isPermaLink="false">http://f6design.com/journal/2008/02/08/version-targeting-lessons-from-flash/</guid>
		<description><![CDATA[In my last post I outlined some of the problems that might arise from the proposed version targeting changes to Internet Explorer 8. My major concern was that by removing the motivation for web authors to update legacy sites, version targeting might hamper the adoption of modern web development techniques. During the week I have [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://f6design.com/journal/2008/02/01/breaking-the-web/">last post</a> I outlined some of the problems that might arise from the proposed version targeting changes to Internet Explorer 8. My major concern was that by removing the motivation for web authors to update legacy sites, version targeting might hamper the adoption of modern web development techniques. During the week I have given some more thought to this issue, and it occurred to me that in Adobe Flash we have a fantastic real-world test case from which we might learn if version targeting is a viable strategy for a web browser.</p>
<h3>Version targeting in Flash</h3>
<p>Version targeting in Flash works in much the same way as it will in Internet Explorer: each Flash movie contains embedded information telling the Flash Player which version of Flash it was created for, and the Flash Player itself contains multiple rendering engines to handle legacy content.</p>
<p>This approach to backwards compatibility has been a feature of the Flash Player since its earliest incarnations. The latest version, Flash Player 9, supports content produced for FLV (Flash video), SWF9, SWF8, SWF7, SWF6, SWF5, SWF4, SWF3, SWF2, and FutureSplash. That means that Flash content created in 1995 still renders perfectly in 2008. Flash developers can have a great deal of confidence that an application they create today will continue to work in the future without any need to revisit it*.</p>
<p>Why have Adobe worked so hard to ensure the Flash Player is compatible with legacy content? I think the answer lies in the commercial nature of Flash. Because Adobe relies for its livelihood on the continued patronage of website developers, they need to keep that customer base happy. Flash would never have gained traction if developers were forced to rework their legacy websites every time a new Flash Player version is released &#8211; I can&#8217;t imagine anyone paying $700 for software that generates code that breaks every eighteen months!</p>
<h3>Does backwards compatibility hamper progress?</h3>
<p>Let us consider my concerns about version targeting, and see if they have been borne out in Flash: Has backwards compatibility hampered progress in the Flash industry? Has it slowed adoption of the Flash Player? Has it stalled advances in Flash technology? I think the answer to these questions is &#8220;no&#8221;.</p>
<p>One metric we can use to gauge the rate at which advances in Flash are taking place is to look at <a href="http://www.adobe.com/devnet/logged_in/ehuang_flashplayer9.html">Flash Player adoption rates</a>. A fast adoption rate by end users is a sign that users are encountering Flash content targeting the latest Flash version, and are upgrading their player in response. Even before the introduction of an automatic update feature, adoption rates for the Flash Player were very high. From the time a new Player was released, it would achieve 55%-65% market penetration within 6 months. This is a good indication that Flash developers are quick to take advantage of new features in Flash.</p>
<p>Another measure of technical progress is the rate at which new features are added to the Flash Player (as opposed to the Flash authoring tool, where some changes will be merely cosmetic). During the past four releases there have been three complete overhauls of the Flash programming language, the introduction of powerful video functionality, bitmap effects (motion blur, dropshadows, etc) and filters, to name just a few new features. Because version targeting ensures there is no pressing need for Flash developers to upgrade, Adobe needs to continually improve Flash&#8217;s feature set to give its customers a compelling reason to purchase an upgrade license. Rather than stymieing progress, version targeting actually encourages technical advances in Flash.</p>
<h3>A personal perspective</h3>
<p>I worked as a full-time Flash developer for four years, and Flash development still accounts for about half the work I do. Until this week I hadn&#8217;t given much thought to the impact of version targeting in Flash, but on reflection I see that it has compelling benefits for end-users, seasoned developers, and Flash novices alike.</p>
<p>Flash has a very healthy development community keen to push the boundaries of their medium, and even though version targeting enables many developers to work at a lower level, I don&#8217;t see any evidence that this skill gap impedes advances in the field. I myself still publish content targeting Flash Player 8, and am familiarizing myself with the new ActionScript 3 programming language in the meantime. I certainly don&#8217;t feel that I am holding anyone back by learning at my own pace!</p>
<p>I also consider that version targeting goes a long way towards easing the Flash developer&#8217;s workload. If I build a site targeting Flash Player 8, I know without testing that it works in Flash Player 9 too, and vice versa. I know too that I will never need to &#8220;fix&#8221; that site to comply with a future Flash Player release. This forward compatibility is something that I take for granted when I develop a Flash site, and the idea of &#8216;fixing&#8217; my legacy projects every couple of years seems totally absurd. Yet for some reason this &#8220;break and fix&#8221; cycle is considered perfectly normal for HTML websites.</p>
<h3>What&#8217;s good for the goose</h3>
<p>Of course, comparing Flash Player with a web browser is not like comparing apples with apples: Flash and Internet Explorer have very different business models; Flash has no serious competition whereas Internet Explorer is part of a busy browser ecosystem; Adobe is free to introduce new features to Flash as it sees fit whereas Microsoft is beholden to various working groups; the upgrade cycle of Flash is driven by web developers rather than software vendors. What works for Flash may not necessarily work for Internet Explorer.</p>
<p>Yet I believe there are enough similarities to draw a comparison. Flash shows us that under the right conditions version targeting can actually be beneficial for everyone involved in the development, delivery, and consumption of content for the web.</p>
<h3>Footnotes</h3>
<p>* There is only once exception I can think of: new &#8217;sandbox security&#8217; restrictions introduced in Flash Player 7 caused some older Flash applications to break.</p>
]]></content:encoded>
			<wfw:commentRss>http://f6design.com/journal/2008/02/08/version-targeting-lessons-from-flash/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
