<?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"
	>

<channel>
	<title>Jamie Thompson</title>
	<atom:link href="http://jamazon.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://jamazon.co.uk</link>
	<description>PHP, JavaScript Developer</description>
	<pubDate>Fri, 15 Jan 2010 10:33:27 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>PHPMailer Bug: Headers showing in message body</title>
		<link>http://jamazon.co.uk/web/2009/07/01/phpmailer-bug-headers-showing-in-message-body/</link>
		<comments>http://jamazon.co.uk/web/2009/07/01/phpmailer-bug-headers-showing-in-message-body/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 17:00:51 +0000</pubDate>
		<dc:creator>Jamie Thompson</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://jamazon.co.uk/?p=221</guid>
		<description><![CDATA[PHPMailer is a handy little class which smoothes out the minefiled that is sending email with PHP. Okay, it&#8217;s not exactly difficult, but it&#8217;s not always striaghtforward either.
I did come across a niggly little bug in the latest release (2.3 at time of writing) which causes a large number of mail clients to incorrectly parse [...]]]></description>
			<content:encoded><![CDATA[<p>PHPMailer is a handy little class which smoothes out the minefiled that is sending email with PHP. Okay, it&#8217;s not exactly difficult, but it&#8217;s not always striaghtforward either.</p>
<p>I did come across a niggly little bug in the latest release (2.3 at time of writing) which causes a large number of mail clients to incorrectly parse the generated email headers. The most obvious manifestation of this bug is that the headers are displayed in the body. Which probably isn&#8217;t what you want.</p>
<p>Fortunately the &#8216;fix&#8217; is simple. By default PHPMailer 2.3 defaults to using &#8220;\r\n&#8221; for linebreaks. This is what confuses a lot of mail clients as they&#8217;re expecting a &#8220;\n&#8221;.</p>
<h2>PHPMailer Class, line 259:</h2>
<p>change:<br />
<code>var $LE = "\r\n";</code></p>
<p>to:<br />
<code>var $LE = "\n";</code></p>
<p>That worked for me, although YMMV.</p>
]]></content:encoded>
			<wfw:commentRss>http://jamazon.co.uk/web/2009/07/01/phpmailer-bug-headers-showing-in-message-body/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New UK ISP Laws Effectively End Civil Liberties</title>
		<link>http://jamazon.co.uk/rants/2009/04/06/new-uk-isp-laws-effectively-end-civil-liberties/</link>
		<comments>http://jamazon.co.uk/rants/2009/04/06/new-uk-isp-laws-effectively-end-civil-liberties/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 10:35:16 +0000</pubDate>
		<dc:creator>Jamie Thompson</dc:creator>
		
		<category><![CDATA[Rants]]></category>

		<guid isPermaLink="false">http://jamazon.co.uk/?p=204</guid>
		<description><![CDATA[As of today ISPs in the UK are required by law to monitor and record all internet traffic. This includes the websites you visit and all your email and IM conversations. You know, private stuff.
ISPs are required by law to hand over any and all of this information to the security services, police and most [...]]]></description>
			<content:encoded><![CDATA[<p>As of today ISPs in the UK are required by law to monitor and record all internet traffic. This includes the websites you visit and all your email and IM conversations. You know, private stuff.</p>
<p>ISPs are required by law to hand over any and all of this information to the security services, police and most worryingly to your local council upon request. Quite apart for putting an intolerable strain on smaller independent ISPs this is a direct breach of our civil liberties.</p>
<p>This, along with other laws which restrict photography in public places are being pushed through under the imaginary umbrella of &#8220;The War on Terror&#8221;, but what it&#8217;s really about is protecting the stranglehold of and handful of media giants. How long will we continue to allow governments to strip us of our basic civil liberties in order to protect us from this imagined threat?</p>
<p>Wonder why you haven&#8217;t heard about this on the news? You&#8217;d think this would be front page stuff right? It&#8217;s funny how some stories seem to get buried isn&#8217;t it.</p>
<p>European Parliament members have already voted in favour of outlawing this kind of ISP disconnection policy. French MEP Guy Bono’s proposed bill on safeguarding cultural products, drafted in September, had made clear: “Criminalising consumers so as to combat digital piracy is not the right solution”</p>
<p>“The repressive measures are measures dictated by industries that have been unable to change their business models to meet the needs imposed by the information society. Switching off internet access is a powerful sanction which could have profound repercussions in a society where access to the internet is a mandatory law for social inclusion.”</p>
<p>So here&#8217;s how the new laws work:</p>
<p>First strike: Suspect is issued an email warning.<br />
Second strike: Internet access contract is suspended.<br />
Third Strike: Internet access contract is terminated and access is cut off.</p>
<p>Sounds fair right? Not really. So what is this really about? Is it about protecting us? Is it about protecting the profits of some very, very rich people? Or is it just another step towards a full police state? Let&#8217;s face it, we&#8217;re halfway there already.</p>
]]></content:encoded>
			<wfw:commentRss>http://jamazon.co.uk/rants/2009/04/06/new-uk-isp-laws-effectively-end-civil-liberties/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to Install cURL support under Uniform Server 3.5 Apollo</title>
		<link>http://jamazon.co.uk/web/2009/03/31/how-to-install-curl-support-under-uniform-server-35-apollo/</link>
		<comments>http://jamazon.co.uk/web/2009/03/31/how-to-install-curl-support-under-uniform-server-35-apollo/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 11:22:33 +0000</pubDate>
		<dc:creator>Jamie Thompson</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<category><![CDATA["uniform server"]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[curl]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[uniserver]]></category>

		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://jamazon.co.uk/?p=195</guid>
		<description><![CDATA[Uniform Server 3.5 Apollo is an excellent environment for those of us who, for whatever reason, use Windows for PHP development. Unforunately it comes without cURL support. After a bit of digging I figured out (i&#8217;m no linux sysadmin) how fairly simple it is to get cURL up and running with uniserver.
The following assumes that [...]]]></description>
			<content:encoded><![CDATA[<p>Uniform Server 3.5 Apollo is an excellent environment for those of us who, for whatever reason, use Windows for PHP development. Unforunately it comes without cURL support. After a bit of digging I figured out (i&#8217;m no linux sysadmin) how fairly simple it is to get cURL up and running with uniserver.</p>
<p>The following assumes that you have Uniform Server installed in &#8220;%ProgramFiles%\Uniform Server\&#8221;. If you have it somewhere different just modify the instuctions accordingly.</p>
<p>In the php.ini file located in &#8220;%ProgramFiles%\Uniform Server\udrive\usr\local\php&#8221;, search for the follwing line:<br />
<code>;extension=php_curl.dll</code>and enable curl by removing the semicolon as follows<br />
<code>extension=php_curl.dll</code></p>
<p>It&#8217;s not quite as simple as that. You&#8217;ll need three dll files for cURL to actually function. Luckily you can get them here.</p>
<p><a href="http://jamazon.co.uk/files/uniserver_curl.zip">http://jamazon.co.uk/files/uniserver_curl.zip</a></p>
<p>Download and unzip the file above. You should end up with three relevant looking dlls</p>
<p><strong>ssleay32.dll </strong><br />
copy into &#8220;%ProgramFiles%\Uniform Server\udrive\usr\local\apache2\bin&#8221;</p>
<p><strong>libeay32.dll</strong><br />
copy into &#8220;%ProgramFiles%\Uniform Server\udrive\usr\local\apache2\bin&#8221;</p>
<p><strong>php_curl.dll</strong><br />
copy into &#8220;%ProgramFiles%\Uniform Server\udrive\usr\local\php\extensions&#8221;</p>
<p>Then just start (or restart) Uniform Server for the changes to take effect.</p>
<p>You can take a look at the output of phpinfo() or run the following code to determine whether or not cURL is installed.</p>
<p><code>&lt;?<br />
if (!function_exists('curl_init')){<br />
die('Sorry, cURL support is not installed');<br />
}<br />
echo "Yay! cURL support is Installed!";<br />
?&gt;</code></p>
<p>Bob&#8217;s your uncle!</p>
]]></content:encoded>
			<wfw:commentRss>http://jamazon.co.uk/web/2009/03/31/how-to-install-curl-support-under-uniform-server-35-apollo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Protocol Relative URLs</title>
		<link>http://jamazon.co.uk/web/2009/03/24/protocol-relative-urls/</link>
		<comments>http://jamazon.co.uk/web/2009/03/24/protocol-relative-urls/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 11:19:03 +0000</pubDate>
		<dc:creator>Jamie Thompson</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://jamazon.co.uk/?p=187</guid>
		<description><![CDATA[Remember the first time you realised that URLs could be relative? Did you know that they can be protocol relative too. I&#8217;m not ashamed to say that I didn&#8217;t. But, what do I mean by protocol relative?
Essentially a protocol relative URL will request external resources such as images and scripts in the context of the [...]]]></description>
			<content:encoded><![CDATA[<p>Remember the first time you realised that URLs could be relative? Did you know that they can be protocol relative too. I&#8217;m not ashamed to say that I didn&#8217;t. But, what do I mean by protocol relative?</p>
<p>Essentially a protocol relative URL will request external resources such as images and scripts in the context of the current pages protocol http: or https:</p>
<p>If, like me, you&#8217;ve been &#8217;solving&#8217; the issue of <em>&#8220;mixed content&#8221;</em> warnings with a small chunk of server-side logic you&#8217;ll be pleased to hear that all you really needed to do was something like this:</p>
<p><code>&lt;script src="//www.example.org/script.js"&gt;&lt;/script&gt;</code></p>
<p>Looks broken doesn&#8217;t it. I can assure you that it&#8217;s entirely valid. Get into the habit of specifying all external resource URLs as protocol relative and you&#8217;ll banish mixed content warnings forever.</p>
<p>More about this on <a href="http://nedbatchelder.com/blog/200710.html#e20071017T215538">http://nedbatchelder.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jamazon.co.uk/web/2009/03/24/protocol-relative-urls/feed/</wfw:commentRss>
		</item>
		<item>
		<title>We Hate Internet Explorer</title>
		<link>http://jamazon.co.uk/projects/2008/11/07/we-hate-internet-explorer/</link>
		<comments>http://jamazon.co.uk/projects/2008/11/07/we-hate-internet-explorer/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 19:44:27 +0000</pubDate>
		<dc:creator>Jamie Thompson</dc:creator>
		
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://jamazon.co.uk/?p=173</guid>
		<description><![CDATA[
Partly because I wanted to make something using the Twitter Search API, and partly because I wanted to do something relatively easy in PHP after spending far too long working with ASP, and because I hate Internet Explorer, I created icanhazrealbrowser.com
The site uses Twitter&#8217;s Search API to keep track of anyone &#8216;hating on&#8217; Internet Explorer. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jamazon.co.uk/wp-content/uploads/2008/11/icanhazrealbrowser.jpg" alt="I can haz real browser?!" title="I can haz real browser?!" width="530" height="190" class="alignnone size-full wp-image-174" /></p>
<p>Partly because I wanted to make something using the <a href="http://apiwiki.twitter.com/Search+API+Documentation">Twitter Search API</a>, and partly because I wanted to do something relatively easy in PHP after spending far too long working with ASP, and because I hate Internet Explorer, I created <a href="http://icanhazrealbrowser.com">icanhazrealbrowser.com</a></p>
<p>The site uses Twitter&#8217;s Search API to keep track of anyone &#8216;hating on&#8217; Internet Explorer. These &#8216;disses&#8217; are collated into a real-time compendium of hate.</p>
<p>It&#8217;s far from perfect, and produces a few false positives here and there, but it&#8217;s just a bit of fun.</p>
<p>Maybe someone will enjoy it.</p>
]]></content:encoded>
			<wfw:commentRss>http://jamazon.co.uk/projects/2008/11/07/we-hate-internet-explorer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Encouraging IE6 Usage Trends</title>
		<link>http://jamazon.co.uk/web/2008/10/01/encouraging-ie6-usage-trends/</link>
		<comments>http://jamazon.co.uk/web/2008/10/01/encouraging-ie6-usage-trends/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 10:00:33 +0000</pubDate>
		<dc:creator>Jamie Thompson</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<category><![CDATA[browser]]></category>

		<category><![CDATA[ie]]></category>

		<category><![CDATA[ie6]]></category>

		<guid isPermaLink="false">http://jamazon.co.uk/?p=157</guid>
		<description><![CDATA[
By this time next year, if IE 6’s usage pattern continues to match that of IE5, IE6 will be around 13% - iedeathmarch.org
In my opinion a 13% market share is still too high to drop IE6 support completely for anything intended for consumption by the general public. Let&#8217;s not forget that the majority of computer [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://chart.apis.google.com/chart?cht=lc&#038;chs=530x190&#038;chd=s:xfX_____,xdVICBBA&#038;chco=ff9900,AEDC32&#038;chxt=x,y&#038;chxl=0:|0%20Years|1|2|3|4|5|6|7|1:|||20%25||40%25||60%25||80%25||100%25&#038;chf=c,ls,90,EEEEEE,0.20,FFFFFF,0.20&#038;chdl=IE6%20Usage%20after%20IE7%20Launched|IE5%20Usage%20After%20IE6%20Launched&#038;chtt=IE%20Trending:|%20Usage%20Since%20Launch%20of%20Replacement" alt="IE6 Usage Trends" /></p>
<blockquote><p>By this time next year, if IE 6’s usage pattern continues to match that of IE5, IE6 will be around 13% - <a href="http://iedeathmarch.org/2008/09/trending/">iedeathmarch.org</a></p></blockquote>
<p>In my opinion a 13% market share is still too high to drop IE6 support completely for anything intended for consumption by the general public. Let&#8217;s not forget that the majority of computer users do not know or care what a &#8220;browser&#8221; is. They just &#8220;click on the e&#8221; or &#8220;go onto the AOL internet&#8221;.</p>
<p>For closed system like admin interfaces or internal web apps I see no reason why system requirements which exclude ancient browsers cannot be enforced. That&#8217;s the distinction between a website and a web app. A web app is software, and software comes with system requirements. Obviously the decision to drop IE6 support depends heavily on your target audience. So the general rule of thumb should surely be if your site/app would not suffer from IE6 compatibility don&#8217;t bust your nuts making it IE6 compatible.</p>
<p>My preferred method is simple. If I&#8217;ve decided that an application I&#8217;m developing is not going to be ie6 compatible i will add in some simple browser detection either server-side or with a bit a JavaScript which disables the application and shows a friendly message informing the user that they are using a very old browser. I generally give them some upgrade options in the from of links to the Firefox and IE7 download pages.</p>
<p>If your site or application actually works okay in IE6 but has some quirks that you&#8217;re unable/unwilling to iron out another good approach, and one taken by Facebook is to display a friendly unobtrusive message to IE6 users again explaining that they&#8217;re using very old software and some parts of the site might look/behave oddly. It would be interesting to see figures on how many upgrades have occurred as a direct result of IE6 users of Facebook. I imagine it&#8217;s considerable.</p>
<p>All in the the trends look promising, but no sooner will we forget about IE6 like we did IE5 then we&#8217;ll start begging for IE7 and all it&#8217;s idiosyncrasies to bow out in the same way.</p>
]]></content:encoded>
			<wfw:commentRss>http://jamazon.co.uk/web/2008/10/01/encouraging-ie6-usage-trends/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Pages Redirecting to a 404 Error Only in Internet Explorer</title>
		<link>http://jamazon.co.uk/web/2008/09/23/pages-redirecting-to-a-404-error-only-in-internet-explorer/</link>
		<comments>http://jamazon.co.uk/web/2008/09/23/pages-redirecting-to-a-404-error-only-in-internet-explorer/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 13:00:15 +0000</pubDate>
		<dc:creator>Jamie Thompson</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<category><![CDATA[Bug]]></category>

		<category><![CDATA[CSS]]></category>

		<category><![CDATA[ie]]></category>

		<category><![CDATA[ie6]]></category>

		<category><![CDATA[ie7]]></category>

		<category><![CDATA[internet explorer]]></category>

		<category><![CDATA[wtf]]></category>

		<guid isPermaLink="false">http://jamazon.co.uk/?p=150</guid>
		<description><![CDATA[
This one had me stumped. The control panel for our CMS worked fine, just as it had been since, well since forever. The problem was that when visited with Internet Explorer users were now being presented with a brief flash of the login page followed by a 404 Not Found error.
After repeatedly pummeling my desk [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jamazon.co.uk/wp-content/uploads/2008/09/ie404-1.jpg" alt="" title="404 Error Occuring only in Internet Explorer" width="530" height="190" /></p>
<p>This one had me stumped. The control panel for our CMS worked fine, just as it had been since, well since forever. The problem was that when visited with Internet Explorer users were now being presented with a brief flash of the login page followed by a 404 Not Found error.</p>
<p>After repeatedly pummeling my desk with my head I noticed that turning off Internet Explorer&#8217;s  friendly HTTP errors allowed the control panel to be viewed as expected. So why was Internet Explorer in particular interpreting the server&#8217;s response as a 404 when it was clearly a 200? I already knew that the server wasn&#8217;t issuing a 404 response and the Live HTTP headers Firefox plugin confirmed this. </p>
<p>The HTTP headers displayed by <a href="http://www.blunck.se/iehttpheaders/download.html">ieHTTPHeaders</a> (Thanks for the tip <a href="http://www.lyalloldfield.co.uk">Lyallzord</a>) told a different story though.</p>
<p><img src="http://jamazon.co.uk/wp-content/uploads/2008/09/ie404-2.jpg" alt="" title="Incorrectly referenced IE behaviour causing a 404 Not Found Error" width="530" height="212" /></p>
<p>The problem was eventually traced to an incorrectly referenced pngfix behaviour pngbehaviour.htc in one of the control panel stylesheets. To be honest it was news to me that it even existed, but the path was incorrect following a restructuring of site assets hence the broken reference.</p>
<p>It seems that Internet Explorer on recieving a 404 response for referenced behaviour will helpfully 404 the entire document.</p>
<p>So that&#8217;s nice.</p>
]]></content:encoded>
			<wfw:commentRss>http://jamazon.co.uk/web/2008/09/23/pages-redirecting-to-a-404-error-only-in-internet-explorer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>G&#038;G Motorsport Contact Form</title>
		<link>http://jamazon.co.uk/projects/2008/09/23/gg-motorsport-contact-form/</link>
		<comments>http://jamazon.co.uk/projects/2008/09/23/gg-motorsport-contact-form/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 10:27:43 +0000</pubDate>
		<dc:creator>Jamie Thompson</dc:creator>
		
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://jamazon.co.uk/?p=116</guid>
		<description><![CDATA[
Rick  recently asked me help out with the redesign of the G&#038;G Motorsport site. The task? An Ajax powered drop-down inline contact form available from any page. The solution? jQuery.
G&#038;G Motorsports is an independent company specialising in the supply, fitting and calibration of engine control systems. The new site needed to serve up news, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jamazon.co.uk/wp-content/uploads/2008/09/headinggandg.jpg" alt="G&#038;G Motorsport" title="G&#038;G Motorsport" width="530" height="190" /></p>
<p><a href="http://www.ricknunn.com">Rick </a> recently asked me help out with the redesign of the <a href="http://www.ggmotorsort.co.uk/">G&#038;G Motorsport site</a>. The task? An Ajax powered drop-down inline contact form available from any page. The solution? <a href="http://www.jquery.com">jQuery</a>.</p>
<p>G&#038;G Motorsports is an independent company specialising in the supply, fitting and calibration of engine control systems. The new site needed to serve up news, event and product information in a slick and stylish way, so a clunky old-school contact form just wasn&#8217;t going to cut the mustard.</p>
<p>To progressively enhance Rick&#8217;s custom <a href="http://www.wordpress.org">Wordpress</a> install , yet at the same time keep things simple, the contact anchors begin as simple mailtos which will always be available in the absence of JavaScript. jQuery is then used to attach some onclick events which show the hidden contact form with a slideDown effect. </p>
<p><img src="http://jamazon.co.uk/wp-content/uploads/2008/09/gg2.jpg" alt="" title="G&#038;G Motorsport" width="530" height="324" /></p>
<p>The form itself is submitted via an Ajax callback to a standalone custom php script which receives and validates the form data, asynchronously serving a response back to the $.post callback which is then displayed in real-time to the user.</p>
<p>The new site can be seen on <a href="http://www.ggmotorsport.co.uk">ggmotorsport.co.uk</a>, or you can read more about the redesign over at <a href="http://ricknunn.com/blog/2008/09/23/gg-motorsport/">ricknunn.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jamazon.co.uk/projects/2008/09/23/gg-motorsport-contact-form/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How Today Has Gone: Expressed Via The Medium of Flowchart</title>
		<link>http://jamazon.co.uk/rants/2008/08/20/how-today-has-gone-expressed-via-the-medium-of-flowchart/</link>
		<comments>http://jamazon.co.uk/rants/2008/08/20/how-today-has-gone-expressed-via-the-medium-of-flowchart/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 15:14:46 +0000</pubDate>
		<dc:creator>Jamie Thompson</dc:creator>
		
		<category><![CDATA[Rants]]></category>

		<category><![CDATA[flowchart]]></category>

		<category><![CDATA[wasps]]></category>

		<guid isPermaLink="false">http://jamazon.co.uk/?p=108</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><img src="http://jamazon.co.uk/wp-content/uploads/2008/08/wasps-flowchart.jpg" alt="wasps in my head" title="oh my god i have wasps in my head" width="530" height="240" /></p>
]]></content:encoded>
			<wfw:commentRss>http://jamazon.co.uk/rants/2008/08/20/how-today-has-gone-expressed-via-the-medium-of-flowchart/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Advice for Budding Web Developers</title>
		<link>http://jamazon.co.uk/web/2008/08/18/advice-for-budding-web-developers/</link>
		<comments>http://jamazon.co.uk/web/2008/08/18/advice-for-budding-web-developers/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 17:00:38 +0000</pubDate>
		<dc:creator>Jamie Thompson</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<category><![CDATA[advice]]></category>

		<category><![CDATA[CSS]]></category>

		<category><![CDATA[guide]]></category>

		<category><![CDATA[html]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://jamazon.co.uk/?p=106</guid>
		<description><![CDATA[
The following guide came about after I was tasked with transferring my Web Development expertise into two VB developer colleagues. No mean feat in the one month I have left at my current place of work. Ultimately it&#8217;s possibly a futile task, but it&#8217;s worth a shot. 
Web Development is not just collection of related [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://jamazon.co.uk/wp-content/uploads/2008/08/webdeveloper.jpg" alt="Jamie Thompson - Web Developer" title="webdeveloper" width="530" height="190" /></p>
<p>The following guide came about after I was tasked with transferring my Web Development expertise into two VB developer colleagues. No mean feat in the one month I have left at my current place of work. Ultimately it&#8217;s possibly a futile task, but it&#8217;s worth a shot. </p>
<p>Web Development is not just collection of related technologies. It&#8217;s a state of mind, and in that respect it is very much like <a href="http://www.imdb.com/title/tt0416394/quotes#qt0089411">Yorkshire</a>.</p>
<p> What follows is aimed at existing developers (VB or otherwise) looking to move into Web Development. The advice I offer is that of best practice in the field of Web Development. The books suggested are generally those which I have read myself that or that come highly recommended by friends and colleagues of mine. </p>
<h2>What is a Web Developer?</h2>
<blockquote><p>A web developer is a software developer or software engineer who is specifically engaged in the development of World Wide Web applications, or distributed network applications that are run over the HTTP protocol from a web server to a web browser. Many web developers are also skilled in related areas such as web design, information architecture, usability engineering, web content management systems, web server administration, database administration, software engineering, project management, network security, and search engine optimization.</p>
<p>Developers often specialize in either front-end or back-end work. Frontend developers tend to focus on the client-side and typically work with technologies such as markup languages, ECMAscript and its variants (JavaScript, JScript, ActionScript), CSS, and the DOM. Backend developers usually focus on the interaction between server-side frameworks using Perl, Python, Ruby, PHP, JSP, or .NET and databases. Some back-end developers maintain databases directly on their web servers, while in other situations the backend developer calls data, managed by a database administrator, on an external system.  </p>
<p><em>- Wikipedia</em></p></blockquote>
<p>In my experience the statement about specialization comes into play more within larger organisations. Small to medium enterprises tend to look for generic web developers with a grounding in one or maybe two server-side frameworks as well as an understanding of (X)HTML / CSS and JavaScript. Generally speaking, most web developers begin their careers within smaller organisations, and while it is not always the case, you will tend to find a large degree of overlap between front-end and back-end web developers for this very reason.</p>
<h2>The Right Tools for The Job</h2>
<p>There was a time when the in thing was to use a WYSIWYG editor to design and develop websites. Those days have gone (Microsoft please pay attention! Visual Web Developer 2008? OMGWTFDONOTWANT!!*). Dreamweaver, whilst it&#8217;s design view should be used for nothing more than ridicule, is a perfectly adequate syntax highlighting code editor for web development. It also has the benefit of it&#8217;s built in FTP client which is very handy. What you use to edit your code is entirely a personal preference. Something with syntax highlighting and brace matching will save you time by helping you to work faster. Some options include:</p>
<ul>
<li><a href="http://notepad-plus.sourceforge.net">Notepad++</a>  - Windows  - Open source syntax highlighting code editor, many plugins available including an FTP client (compatible with Wine.. sort of)</li>
<li><a href="http://www.aptana.com/studio">Aptana Studio</a>  - Windows/Mac/Linux  - Eclipse based editor with an invaluable PHP debugger plugin as well as working nicely with html/css/javascript right out the box</li>
<li><a href="http://en.wikipedia.org/wiki/Notepad">Notepad</a> - Windows - included with any copy of Microsoft Windows (There&#8217;s no reason that, at a push you can&#8217;t ply your trade with this trusty tool)</li>
<li><a href="http://www.adobe.com/products/dreamweaver/">Dreamweaver</a> - You should be familiar with it if nothing else. For some reason your employer might INSIST that you use it.</li>
</ul>
<p>Mozilla Firefox is an excellent developer&#8217;s browser, and with the following plugins installed is close to a perfect development environment.</p>
<ul>
<li><a href="http://chrispederick.com/work/web-developer/">Web Developer Plugin</a></li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a></li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/6683">Firecookie</a></li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/271">ColorZilla</a></li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/249">HTML Validator</a></li>
</ul>
<p>For testing in multiple versions of Internet Explorer in Windows, <a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a> is an invaluable tool. <a href="http://www.tatanka.com.br/ies4linux/page/Main_Page">IEs4Linux</a> is handy for linux based development environments but there&#8217;s not substitute for running virtual machines with differing OS/Browser setups to cover all bases. It is also a good idea to invest in a Mac of some description for testing purposes.</p>
<p>* To avoid confusion, the budding Web Developer should attempt to learn <a href="http://en.wikipedia.org/wiki/Lolcat">lolcat</a></p>
<h2>First Things First</h2>
<p>Your first task is to forget everything you think you know about Web Development. Forget Dreamweaver (for now). Please forget Frontpage. Don&#8217;t even THINK about cranking up Visual Studio, it isn&#8217;t a web development tool despite what Microsoft might tell you. To be sucessful in web development whether you plan to move into front-end or back-end development or even if you just want to be a competent web designer you need to start from the ground up. That&#8217;s HTML and CSS.</p>
<p>Knowing (X)HTML inside out is not an option. You cannot skip this step. CSS guru status is possibly optional for those in a soley back-end role where presentation and layout are the consideration of a front-end developer. Even so, I would argue that there&#8217;s no excuse for not learning at least the basic principles of CSS.  Whether you&#8217;re a designer designing for the web, a front-end developer implementing the designs of others, or a back-end developer providing the business logic behind someone else&#8217;s front-end, you should always strive to fully understand the medium in which you&#8217;re working and the way in which your design patterns impact on others.</p>
<p>It is possible to grasp the fundamentals of designing for the web in XHTML and CSS in a fairly short space of time. I know this from experience after watching a colleague of mine, a talented graphic designer, learn web design from the ground up simply by reading and trial and error over the course of several months. Of course, it goes without saying that the intricacies of cross browser compatibility can take years to fully master, and in this respect there is no substitute for the wealth of experience gained over time fixing one mind numbing IE6 bug after another, over and over and over again, until your eyes start to bleed and what&#8217;s left of your brain trickles out of your nose. One year and a bit later <a href="http://ricknunn.com/blog/2008/08/14/advice-to-budding-web-designers-developers/">Rick</a> is still a talented graphic designer but one who makes my life all the more bearable by chopping up his own designs and turning them into perfectly semantic valid XHTML and CSS. All it takes is patience and a thirst for knowledge.</p>
<h2>The Fundamentals</h2>
<p>Broadly speaking a page on the World Wide Web consists of</p>
<ul>
<li><strong>Markup</strong> - HTML or XHMTL - The bare-bones of the page structure and it&#8217;s content</li>
<li><strong>Style </strong>- CSS - colors, fonts, layout etc</li>
<li><strong>Client-side logic</strong> - JavaScript - how the page deals with complex user interaction.</li>
</ul>
<h2>Marking it up</h2>
<p>The only possible starting point is to learn to write markup. Markup is what defines the structure of the pages which make up the web. A common misconception, and one that&#8217;s more commonly held by those already within the IT industry is that there are many different technologies for displaying pages on the web. Whether the url of your page ends in .html, .asp, .php or one of a multitude of other extensions, the page that you see is your web browsers interpretation of some (X)HTML markup (hopefully) in conjunction with some CSS. The important thing to remember is that no matter what technology is used on the server-side to generate a web page, the web page is self never amounts to anything more than some HTML and CSS. We&#8217;ll touch on JavaScript later on but for now we&#8217;ll pretend that it doesn&#8217;t exist. So I have to say sorry to all you .NET developers but I&#8217;m afraid that ASP.NET pages really aren&#8217;t some kind of magical in-browser .NET application. It&#8217;s an illusion created by Visual Studio, Some poorly auto-generated HTML forms and a heap of really bad old-school JavaScript.</p>
<p>The standards for (X)HTML markup are set out by the W3C (World Wide Web Consortium). As a Web Developer you should strive for as much as much of your (X)HTML to validate against the doctype you specify; and you should ALWAYS declare a doctype (or the sky catch fire). You should validate your markup regularly during development and before release. Having a HTML validator built into your browser (such as Firefox) saves a lot of time in this respect. One of the best resources for learning the fundamentals of HTML and CSS is <a href="http://www.htmldog.com">htmldog.com</a>, whether you&#8217;re a total n00b or you&#8217;re halfway proficient in the basics already they seem to have tutorials and reference to suit. <a href="http://www.w3schools.com">W3Schools</a> is also a very good (but ugly) source of quick reference for pretty much all web technologies including HTML, CSS, JavaScript and most major server-side languages.</p>
<p>If you&#8217;re planning on heading down the .NET route of Web Development (and there&#8217;s nothing wrong with that), it&#8217;s imperative that you fully understand the concepts of semantic, valid HTML, pure CSS layouts as well as good JavaScript practices before you even open Visual Studio. That way you&#8217;ll have a solid understanding of which features of ASP.NET to take advantage of and which you need to avoid like the plague.</p>
<p>It is one thing to understand HTML, it is quite another to write semantic HTML and express context and meaning through markup. I would suggest reading up on the subject of semantic markup before going any further as a solid understanding of these principles will make the transition into the dark world of CSS much less painful.</p>
<p><strong>Reference:</strong></p>
<p><a href="http://www.htmldog.com">www.htmldog.com</a> - HTML and CSS Tutorials<br />
<a href="http://www.W3Schools.com">www.W3Schools.com</a> - Web Technologies Reference Guides<br />
<a href="http://www.w3.org/Consortium">www.w3.org/Consortium</a> - About the W3C</p>
<p><strong>Books:</strong></p>
<p><a href="http://books.google.co.uk/books?id=wm0Yip3Zo78C">HTML Mastery</a></p>
<h2>Cascading Style Sheets</h2>
<p>Style on the web is achieved using Cascading Style Sheets. An in depth guide to CSS is beyond the scope of this article but if HTML is the cake then you can think of CSS as the icing. CSS allows you to take your plain, u-nstyled, semantic markup and skin it anyway you choose without affecting it&#8217;s content or structure. Every presentational element of a website design can be achieved using CSS and CSS should be your only method of styling markup.</p>
<p>CSS support across browsers is inconsistent. Different browsers will render valid CSS in wildly different ways to each other, and it is in dealing with these cross browser issues that the skill and experience of the front-end developer really comes into play. Be prepared for hours of nail-biting CSS debugging action. There is no substitute for learning from your mistakes. It takes time to smooth your way through the minefield of browser incompatibilities but resources like quirksmode.org are a godsend providing explanations of common CSS bugs, workarounds and accepted means of circumventing certain issues (Mostly Microsoft Internet Explorer ones).</p>
<p><strong>Reference:</strong></p>
<p><a href="http://www.quirksmode.org">www.quirksmode.org</a> - CSS Bugs and Hacks<br />
<a href="http://www.positioniseverything.net">www.positioniseverything.net </a>- More CSS Bugs and Hacks</p>
<p><strong>Books:</strong></p>
<p><a href="http://books.google.co.uk/books?id=Mp1KAAAACAAJ">CSS Mastery</a><br />
<a href="http://books.google.co.uk/books?id=xxOtAAAACAAJ">CSS The Definitive Guide</a></p>
<h2>Client-Side Logic</h2>
<p>It is almost impossible to develop a modern web application without employing at least a small amount of client-side code in the form of JavaScript. But what is JavaScript? JavaScript is not Java, and if you say it is I will hurt you. JavaScript is not like Java. It isn&#8217;t even a stripped down version of Java.</p>
<p>JavaScript is the name erroneously given to the implementation of the ECMAScript scripting language which is built into almost all modern web browsers.</p>
<p>JavaScript is what allows the developer to deal with complex user interaction. Broadly speaking, any kind of interaction between the user and the page which involves more than simply moving the user to another page is probably controlled by JavaScript.</p>
<p>Each web browser implementation of ECMAScript varies slightly and this can catch out even the most experienced JavaScript developer. Many open source projects have sought to level the playing field with comprehensive cross browser libraries which attempt to provide solid cross-browser APIs for common programming tasks. These libraries commonly referred to as as &#8216;frameworks&#8217; allow developers to focus on writing their application rather than on the multitude of cross-browser issues their application faces; and I cannot be more clear when i say that &#8220;You really really need to use a JavaScript framework of some description or you&#8217;ll go clinically insane&#8221;</p>
<h2>JavaScript Frameworks</h2>
<ul>
<li><a href="http://www.jquery.com">jQuery</a> - The Write Less, Do More JavaScript Library</li>
<li><a href="http://mootools.net/">MooTools</a> - a compact JavaScript Framework</li>
<li><a href="http://www.prototypejs.org/">Prototype</a> - Easy AJAX and DOM manipulation</li>
<li><a href="http://dojotoolkit.org/">Dojo</a>  - the JavaScript Toolkit</li>
</ul>
<p>Some of these JavaScript frameworks make it possible by means of plugins to work on client-side logic with very little in-depth understanding of JavaScript. jQuery for example has a simple enough basic usage that designers with little to no programming experience are often able to integrate fairly complex interface logic unaided via plugins. Should you wish to develop anything more complex than what is available as a plugin you will need to learn JavaScript. For this you will need books. JavaScript is often dismissed as a &#8216;toy&#8217; language or simply as a very basic scripting language but it is in fact a very powerful language in it&#8217;s own right and can take some effort to master.</p>
<p>One thing all these frameworks have in common is AJAX. AJAX is the acronym of Asynchronous JavaScript and XML. To an extent AJAX is little more than a marketing term, like &#8220;Web 2.0&#8243;. Generally speaking, AJAX is a term mostly misunderstood by the vast majority of people who use it. The term AJAX is commonly used to refer to any form of JavaScript based rich user interface (another acronym commonly banded about is RIA - Rich Internet Application). In essence AJAX is the name erroneously given to any means by which modern web applications communicate asynchronously with a web server to provide a rich user interface. This communication doesn&#8217;t have to be XML, in fact more often than not it isn&#8217;t XML. The underlying technologies behind an AJAX request are way beyond the scope of this article. The best way to learn more about AJAX is by choosing a JavaScript framework and using it.</p>
<p><strong>Reference:</strong></p>
<p><a href="http://en.wikipedia.org/wiki/ECMAScript#History">A concise history of ECMAScript</a><br />
<a href="http://www.w3schools.com/JS/">JavaScript Tutorials</a><br />
<a href="http://en.wikipedia.org/wiki/AJAX">en.wikipedia.org/wiki/AJAX</a> - Sums it up better than I ever could</p>
<p><strong>Books:</strong></p>
<p><a href="http://books.google.co.uk/books?id=d_EPxT-DyJ8C">Learning JavaScript</a></p>
<p><a href="http://books.google.co.uk/books?id=KUrT29GBK7cC">AJAX hacks</a> (never read but looks to be a great little primer)</p>
<h2>Server-Side Logic</h2>
<p>The Server-side is where your web applications get down to business. This is where you connect to databases, manipulate data and make decisions based on user input. You could say this is the &#8220;real programming&#8221;, but that would be to the detriment of all your hard work on the client-side. </p>
<p>A front-end developer need not learn a server-side language, though it is good practice to understand at least the basics of the server-side language of any project you&#8217;re working on. Back-end developers it goes without saying should be proficient in at least one server-side language as well as SQL and database design principles. There are as many choices of server-side framework as you care to choose but your best option is to pick one and learn it inside out. Popular frameworks include.</p>
<p><a href="http://www.php.net">PHP</a> - Arguably the most ubiquitous open source server-side language of all time - That doesn&#8217;t make it the best though<br />
<a href="http://www.rubyonrails.org/">Ruby on Rails</a> - Favoured by cool kids with slick hairdos<br />
<a href="http://java.sun.com/products/jsp/">JSP</a> - Favoured for &#8220;Enterprise Solutions&#8221; and by those with smart beards<br />
<a href="http://en.wikipedia.org/wiki/Active_Server_Pages">ASP</a> - Also known as Classic ASP - Most commonly VBScript or JScript - Although defunct as a language, many developers will find themselves supporting ASP web apps for many years to come. It&#8217;s a valuable skill to have<br />
<a href="http://www.asp.net/">ASP.NET</a> - ASP&#8217;s big brother - Most commonly VB.NET or C# - Very powerful yet most usually favoured by those who don&#8217;t know what they&#8217;re doing</p>
<h2>Databases</h2>
<p>As a back-end developer you will need to be proficient in SQL (structured query language) which is often but not always pronounced &#8220;sequel&#8221;. SQL is the language in which almost all Database systems accept queries. The basics of SQL are the same from system to system, but each database system has it&#8217;s own slightly varying syntax. Popular relational database systems include:</p>
<ul>
<li><a href="http://www.mysql.com/">MySQL</a> - Open Source - Most popularly partnered with PHP</li>
<li><a href="http://www.postgresql.org/">PostgreSQL</a> - Open Source - slightly less popular than MySQL</li>
<li><a href="http://www.microsoft.com/sqlserver/2008">Microsoft SQL Server</a> - Most commonly used with ASP(.NET)</li>
<li><a href="http://www.oracle.com">Oracle</a> - if you&#8217;ve got money to burn</li>
</ul>
<p><strong>Reference:</strong><br />
<a href="http://www.w3schools.com/sql">www.w3schools.com/sql</a> - Basic SQL tutorial</p>
<p><strong>Books:</strong><br />
<a href="http://books.google.co.uk/books?id=Y3uCOQppkUIC">SQL in a Nutshell</a></p>
<h2>Final Thoughts</h2>
<p>So hopefully this has given you some new directions to spin off in on your journey into web development. Hopefully it&#8217;ll help you avoid some time-consuming pitfalls, maybe it won&#8217;t, and maybe that&#8217;s half the fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://jamazon.co.uk/web/2008/08/18/advice-for-budding-web-developers/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
