<?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>Optimalworks Ltd</title>
	<atom:link href="http://www.optimalworks.net/feed" rel="self" type="application/rss+xml" />
	<link>http://www.optimalworks.net</link>
	<description>web design, SEO, training and consultancy</description>
	<lastBuildDate>Mon, 14 May 2012 16:15:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Webbots, Spiders, and Screen Scrapers: book review</title>
		<link>http://www.optimalworks.net/blog/2012/web-development/php/webbots-spiders-and-screen-scrapers-book-review</link>
		<comments>http://www.optimalworks.net/blog/2012/web-development/php/webbots-spiders-and-screen-scrapers-book-review#comments</comments>
		<pubDate>Mon, 14 May 2012 16:15:57 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.optimalworks.net/?p=184</guid>
		<description><![CDATA[A review of 'Webbots, Spiders, and Screen Scrapers: A Guide to Developing Internet Agents with PHP/CURL' by Michael Schrenk and published by No Starch Press.]]></description>
			<content:encoded><![CDATA[<div class="review">
<p><a href="http://www.amazon.com/exec/obidos/ASIN/1593273975/optimalworks-21"><strong>Webbots, Spiders, and Screen Scrapers <span>A Guide to Developing Internet Agents with PHP/CURL</span> <span>Michael Schrenk</span></strong><img src="/images/books/webbots-spiders-screen-scrapers.png" width="210" height="290" alt="Webbots, Spiders, and Screen Scrapers" /></a></p>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/1593273975/optimalworks-21"><span>Amazon.com:</span> $22.19</a></p>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/B007HBH72O/optimalworks-21"><span>US Kindle Edition:</span> $26.19</a></p>
<p><a href="http://www.amazon.co.uk/exec/obidos/ASIN/1593273975/optimalworks-21"><span>Amazon.co.uk:</span> &pound;24.56</a></p>
<p><a href="http://www.amazon.co.uk/exec/obidos/ASIN/B007HBH72O/optimalworks-21"><span>UK Kindle Edition:</span> &pound;16.30</a></p>
</div>
<p>I was initially surprised to discover this title. <a href="http://www.amazon.com/exec/obidos/ASIN/1593273975/optimalworks-21">&#8220;Webbots, Spiders, and Screen Scrapers&#8221;</a> is a niche topic which the majority of web developers never consider. Michael Schrenk apparently does little else and his enthusiasm is evident throughout the book.</p>
<p>While browsers are great, they are general purpose tools which display web pages and have no concept of the underlying information. Schrenk will inspire you to use your web skills in a different context and achieve a lot given a small investment. It certainly inspired me to write a small PHP program to check several thousand pages for holiday availability &#8212; it saved hours of hunting.</p>
<p>The 362 pages are split into four main sections. The first introduces fundamental concepts such as PHP&#8217;s cURL functions, fopen and fget. The author provides a downloadable library which is used to simplify most of the example code.</p>
<p>Part two provides a number of sample projects such as link verifiers, image capture bots, FTP downloaders and email analysers. The chapters are concise but provide enough information to get you started.</p>
<p>Part three covers more advanced topics such as spiders, procurement, SSL, authentication, cookies, scheduling (in Windows) and browser macros. Part four describes larger considerations such as proxy servers, fault tolerance, redirection handling and legal implications. The author gives good suggestions and useful pointers. There&#8217;s little practical code, but that&#8217;s not unexpected given the wide scope of the topics.</p>
<p>Finally, there are a number of useful appendices including a good cURL reference, email to SMS gateways, HTTP and NNTP status codes. The 18-page index illustrates just how many topics Schrenk had to cover.</p>
<p>There are a number of issues which concerned me&hellip;</p>
<p>The author dislikes regular expressions. He admits it&#8217;s controversial but states they are hard to use and don&#8217;t show information context. <em>My opinion:</em> if regular expressions are useful for anything, it&#8217;s web page parsing. I accept they can be difficult to comprehend but it&#8217;s possible to create a series of simpler expressions if that becomes an issue. I&#8217;m not convinced by the &#8216;lack of context&#8217; argument either; a single regular expression can extract titles and associated data.</p>
<p>There is also a chapter dedicated to reverse-engineering HTML forms. It recommends using an online form parser provided by the developer but makes no mention of HTTP analysis tools such as <a href="http://www.fiddler2.com/">Fiddler</a>, <a href="http://getfirebug.com/">Firebug</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/httpfox/">HttpFox</a> or <a href="https://addons.mozilla.org/en-US/firefox/addon/live-http-headers/">Live HTTP Headers</a> which make the process immeasurably easier.</p>
<p>I was also surprised that hashes or checksums weren&#8217;t described in the chapters about data storage. File compression is covered, but there may be no need to store or compress a file if a previously-generated checksum indicates it hasn&#8217;t changed.</p>
<p>Finally, my biggest concern is the use of the author&#8217;s own libraries &#8212; which he states are not particularly elegant. The samples describe how to use his code rather than the lower-level PHP and cURL instruction sets. That&#8217;s a shame; the book covers a heavy-duty topic and is aimed at an advanced audience but Schrenk abstracts the technicalities away from curious developers.</p>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/1593273975/optimalworks-21">&#8220;Webbots, Spiders, and Screen Scrapers&#8221;</a> is well-written and easy to read. Schrenk will encourage you to look at the web as a data resource and inspire you to write useful code which saves time and money. It&#8217;s ideal for those new to the subject, but is a little too lightweight for experienced developers.</p>
<p><em>Note for Amazon: you really should look at your prices for paper and Kindle versions in the US!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.optimalworks.net/blog/2012/web-development/php/webbots-spiders-and-screen-scrapers-book-review/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Book of Ruby: A Hands-On Guide for the Adventurous book review</title>
		<link>http://www.optimalworks.net/blog/2011/web-development/the-book-of-ruby</link>
		<comments>http://www.optimalworks.net/blog/2011/web-development/the-book-of-ruby#comments</comments>
		<pubDate>Fri, 26 Aug 2011 16:23:21 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[web development]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.optimalworks.net/?p=179</guid>
		<description><![CDATA[A review of 'The Book of Ruby: A Hands-On Guide for the Adventurous' by Huw Collingbourne and published by No Starch Press.]]></description>
			<content:encoded><![CDATA[<div class="review">
<p><a href="http://www.amazon.com/exec/obidos/ASIN/1593272944/optimalworks-21"><strong>The Book of Ruby <span>A Hands-On Guide for the Adventurous</span> <span>Huw Collingbourne</span></strong><img src="/images/books/book-of-ruby.png" width="210" height="290" alt="The Book of Ruby" /></a></p>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/1593272944/optimalworks-21"><span>Amazon.com:</span> $26.50</a></p>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/B005EI84QA/optimalworks-21"><span>US Kindle Edition:</span> $29.02</a></p>
<p><a href="http://www.amazon.co.uk/exec/obidos/ASIN/1593272944/optimalworks-21"><span>Amazon.co.uk:</span> &pound;19.60</a> </p>
<p><a href="http://www.amazon.co.uk/exec/obidos/ASIN/B005EI84QA/optimalworks-21"><span>UK Kindle Edition:</span> &pound;17.64</a></p>
</div>
<p>I&#8217;m a total Ruby newbie. Having developed in PHP, .NET and JavaScript for more than a decade, it&#8217;ll take a lot to persuade me to drop my favoured languages. But Ruby interests me &#8212; <em>perhaps because its developers are earning astronomical salaries?</em></p>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/1593272944/optimalworks-21">&#8220;The Book of Ruby&#8221;</a> is aimed at novices like me. It&#8217;s 373 pages and published by <em>No Starch Press</em> so it has a lot to live up to following their excellent <a href="/blog/2011/web-development/css/the-book-of-css3">Book of CSS3</a>. </p>
<p>I should point out that The Book of Ruby is not an introduction to programming. The reader will benefit from some development knowledge, but there&#8217;s no need to be familiar with Ruby syntax or concepts.</p>
<p>The chapters are logically ordered and start easily with variable types, classes, loops, conditional statements, and exception handling before moving on to more advanced topics such as modules, mixins, threads and dynamic programming. The writing style is friendly, chatty and easy to read. Most chapters end with a &#8220;Digging Deeper&#8221; section which provides useful advanced information.</p>
<p>It&#8217;s difficult to fault the first half of the book, but the final chapters are more challenging. This was possibly my limited experience with Ruby, but I found several sections difficult to follow. I suspect most developers would benefit by reading it from start to finish: it&#8217;s not necessarily a book you can dip into.</p>
<p>A few aspects struck me as odd. For example, most books of this type dedicate a chapter to installation of the language on various OS or server combinations. Collingbourne give us a single paragraph and a couple of links. Perhaps Ruby is easy to install so that&#8217;s all we need? So is MySQL, yet he provides a four-page appendix about installing the database.</p>
<p>Despite the niggles, &#8220;The Book of Ruby&#8221; is an excellent introduction to the language. I&#8217;ve seen a few negative comments from Ruby experts but the majority of points seem minor and, besides, the book isn&#8217;t aimed at them.</p>
<p>Have I been persuaded to drop PHP? Not quite, but I&#8217;m no longer afraid of the Ruby or daunted by its syntax. If you&#8217;re looking for a good introduction to the language <a href="http://www.amazon.com/exec/obidos/ASIN/1593272944/optimalworks-21">&#8220;The Book of Ruby&#8221;</a> should be on your buying list.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.optimalworks.net/blog/2011/web-development/the-book-of-ruby/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Book of CSS3: A Developer&#8217;s Guide to the Future of Web Design book review</title>
		<link>http://www.optimalworks.net/blog/2011/web-development/css/the-book-of-css3</link>
		<comments>http://www.optimalworks.net/blog/2011/web-development/css/the-book-of-css3#comments</comments>
		<pubDate>Fri, 03 Jun 2011 15:06:43 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.optimalworks.net/?p=170</guid>
		<description><![CDATA[A review of 'The Book of CSS3: A Developer's Guide to the Future of Web Design' by Peter Gasston and published by No Starch Press.]]></description>
			<content:encoded><![CDATA[<div class="review">
<p><a href="http://www.amazon.com/exec/obidos/ASIN/1593272863/optimalworks-21"><strong>The Book of CSS3 <span>A Developer&#8217;s Guide to the Future of Web Design</span> <span>Peter Gasston</span></strong><img src="/images/books/book-of-css3.png" width="250" height="334" alt="The Book of CSS3" /></a></p>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/1593272863/optimalworks-21"><span>Amazon.com:</span> $20.87</a></p>
<p><a href="http://www.amazon.co.uk/exec/obidos/ASIN/1593272863/optimalworks-21"><span>Amazon.co.uk:</span> &pound;14.06</a></p>
</div>
<p>If you&#8217;ve been avoiding CSS3, perhaps it&#8217;s time to re-evaluate that policy. If Peter Gasston&#8217;s book doesn&#8217;t tempt you to delve into the murky waters, nothing will.</p>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/1593272863/optimalworks-21"><em>&#8220;The Book of CSS3&#8243;</em></a> is the culmination of 5 years effort writing about the technology. Unlike other titles, this isn&#8217;t a book about Cascading Style Sheets with a little CSS3 tagged on &#8212; it&#8217;s a complete overview of the latest techniques. It won&#8217;t teach you CSS, but it gives existing web developers an insight into new possibilities.</p>
<p>The CSS3 specifications are in flux but the majority of browsers support some of the properties &#8212; abet with vendor prefixes. The book was completed shortly before the release of IE9 and Firefox 4, but those browsers are included in the support summary provided for every module.</p>
<p>Peter eases the reader in gently with a little history <em>(were you aware that work on CSS3<br />
started in 1998?)</em> and a light-hearted rant about HTML5 confusion caused by the media. The remainder of the 278 pages covers specific modules; those with the most reliable and consistent support come first.</p>
<p>Chapter 2 starts with media queries: the basis of responsive design for mobile and desktop devices. Peter recommends creating your basic mobile site first then applying larger layouts and assets for desktop browsers. It&#8217;s a sensible approach which is gaining more traction in the industry.</p>
<p>Chapters 3 and 4 describe CSS3 selectors, pseudo-classes and pseudo-elements. These can cause confusion, but Peter adequately covers the basics and more advanced techniques. It&#8217;s a section you&#8217;ll return to again and again.</p>
<p>Chapter 5 is dedicated to web fonts. If you rarely consider the implications of fonts on the web, Peter delves into the issues, problems and workarounds in fine detail. A bulletproof CSS3 syntax is provided for the widest possible browser support.</p>
<p>Text effects and typographic styles are described in chapter 6. If you were expecting an easy-going section about text shadows, you&#8217;ll be amazed to find great information about resizing, wrapping, kerning, rendering, and smoothing.</p>
<p>Chapter 7 is dedicated to multiple columns: a concept CSS developers have struggled with for many years. Fortunately, CSS3 will make our lives easier; Peter describes how the Mozilla and webkit browsers support the standard and the differences you&#8217;ll encounter.</p>
<p>Midway through the book, chapter 8 explains background images and other decorative properties. Multiple backgrounds, repeating, resizing, clipping, masks and related topics are succinctly explained.</p>
<p>Chapter 9 reveals border and box effects such as rounded corners, border images, and drop shadows. Chapters 10 and 11 follow this with the new colour definition methods, gradients and opacity.</p>
<p>If you&#8217;ve forgotten everything you learnt about trigonometry, chapter 12 will bring it flooding back as Peter covers 2D transformations. Rotating, scaling and skewing soon give way to scary concepts such as matrix transformations.</p>
<p>Chapter 13 introduces transitions and animations. Peter shares my view that they&#8217;ve blurred the distinction between presentation (defined in CSS) and behaviour (JavaScript). But let&#8217;s not worry too much &#8212; they&#8217;re fun! </p>
<p>Chapter 14 will strain your brain as Peter describes 3D transformations and geometric manipulation concepts. It&#8217;s early days for the techniques and the properties are only supported by the latest webkit browsers. I doubt anyone will mind if you skip a few pages!</p>
<p>Flexible box layouts are described in chapter 15. Peter admits that implementation remains patchy, but it provides a solution to several common website layout problems.</p>
<p>Chapter 16 describes the CSS3 template layout: a module which is so new, no browser offers native support! In essence, it allows developers to resurrect some useful table layout concepts without resorting to HTML tables. Peter provides information about a JavaScript shim which allows you to use the techniques today.</p>
<p>Finally, chapter 17 discusses the future of CSS with some great ideas which could become commonplace within a few years. This is followed by appendices containing browser support information, online resources and the all-important index.</p>
<p>The book benefits from Peter Gasston&#8217;s natural writing style. It&#8217;s informal, relaxed, well written and attractively laid out. Complex technical details are explained concisely without relying on jargon or glossing over details.</p>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/1593272863/optimalworks-21"><em>&#8220;The Book of CSS3&#8243;</em></a> is one of the best technology books I&#8217;ve read. I&#8217;d recommend it to any web developer who&#8217;s itching to experiment with the new techniques. At this price, it&#8217;s an absolute bargain.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.optimalworks.net/blog/2011/web-development/css/the-book-of-css3/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Eloquent JavaScript: A Modern Introduction to Programming book review</title>
		<link>http://www.optimalworks.net/blog/2011/web-development/javascript/eloquent-javascript-a-modern-introduction-to-programming-book</link>
		<comments>http://www.optimalworks.net/blog/2011/web-development/javascript/eloquent-javascript-a-modern-introduction-to-programming-book#comments</comments>
		<pubDate>Thu, 14 Apr 2011 15:57:00 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.optimalworks.net/?p=165</guid>
		<description><![CDATA[A review of 'Eloquent JavaScript: A Modern Introduction to Programming' by Marijn Haverbeke.]]></description>
			<content:encoded><![CDATA[<div class="review">
<p><a href="http://www.amazon.com/exec/obidos/ASIN/1593272820/optimalworks-21"><strong>Eloquent JavaScript <span>A Modern Introduction to Programming</span> <span>Marijn Haverbeke</span></strong><img src="/images/books/eloquent-javascript.png" width="250" height="334" alt="Eloquent JavaScript" /></a></p>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/1593272820/optimalworks-21"><span>Amazon.com:</span> $17.97</a></p>
<p><a href="http://www.amazon.co.uk/exec/obidos/ASIN/1593272820/optimalworks-21"><span>Amazon.co.uk:</span> &pound;13.92</a></p>
</div>
<p>On first glance, you might expect &#8220;Eloquent JavaScript&#8221; to be just another code book. There are few diagrams; just 196 pages of text and code samples. Don&#8217;t let that put you off.</p>
<p>Despite being the most-used programming language on the planet, JavaScript is the most misunderstood. Desktop and server-side developers used to sneer at JavaScript but it&#8217;s finally being recognised as a flexible language which can be used to build full-scale applications.</p>
<p>The author, Marijn Haverbeke, admits to despising JavaScript but came to love its liberal style and flexibility. Eloquent JavaScript has been written for those who are new to programming or perhaps taking their first steps in the language. There are 12 chapters:</p>
<ol>
<li>A good introduction to variable value types and control flow statements. Nothing too scary for programming novices.</li>
<li>Functions. While many development books might keep this simple, Haverbeke delves into more advanced topics such as closures and recursion. I suspect it might be a little confusing for some, but they&#8217;re succinctly explained.</li>
<li>Data structures such as arrays and object literals. An amusing example which extracts cat information from emails is provided.</li>
<li>Error handling. A useful chapter since many experienced developers never consider JavaScript errors. Exceptions and automated tests are explained.</li>
<li>Functional programming. Stories such as the split-pea soup recipe and the semi-autobiographical &#8220;recluse writing a technical book&#8221; are used to explain concepts such as abstraction.</li>
<li>Object Orientated Programming. This is a long chapter which delves into the intricacies of JavaScript objects and prototypal inheritance. Good example code is provided which creates a terrarium simulation with animated insects.</li>
<li>Modularity. The author explains how modules can be used to separate code.</li>
<li>Regular expressions. A solid and concise explanation is provided.</li>
<li>Web programming crash course. The chapter provides a brief overview of browsers, forms and associated technologies. Leaving this toward the end of the book may seem odd, but it&#8217;s logical.</li>
<li>The Document Object Model and</li>
<li>Events are two areas which confuse the most skilled browser developers. The concepts are well covered and the author uses the new techniques to convert the terrarium code into a working version of Sokoban!</li>
<li>HTTP requests are explained with reference to Ajax using both XML and JSON message formats.</li>
</ol>
<p>Eloquent JavaScript is well written, and uses a chatty, informal style which is easy to read. The stories and code samples are genuinely amusing without becoming silly.</p>
<p>My only reservation concerns the audience. Is JavaScript a good first language to learn? Most new developers will be writing it in their browser &#8212; a fairly hostile and unforgiving programming environment. I also suspect the OOP chapter, although well explained, could terrify new developers.</p>
<p>Overall, Eloquent JavaScript is a great book if you&#8217;re learning JavaScript. More experienced developers are likely to skip a few chapters, but even they&#8217;ll still find something of interest. Recommended.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.optimalworks.net/blog/2011/web-development/javascript/eloquent-javascript-a-modern-introduction-to-programming-book/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Analytics, Understanding Visitor Behaviour book review</title>
		<link>http://www.optimalworks.net/blog/2010/web-development/google-analytics-book-review</link>
		<comments>http://www.optimalworks.net/blog/2010/web-development/google-analytics-book-review#comments</comments>
		<pubDate>Tue, 28 Sep 2010 17:59:32 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[web development]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.optimalworks.net/?p=158</guid>
		<description><![CDATA[A review of O'Reilly’s 'Google Analytics, Understanding Visitor Behaviour' book by Justin Cutroni.]]></description>
			<content:encoded><![CDATA[<div class="review">
<p><a href="http://www.amazon.com/exec/obidos/ASIN/0596158009/optimalworks-21"><strong>Google Analytics <span>Understanding Visitor Behaviour</span> <span>By Justin Cutroni</span></strong><img src="/images/books/google-analytics.png" width="250" height="328" alt="Google Analytics" /></a></p>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/0596158009/optimalworks-21"><span>Amazon.com:</span> $19.79</a></p>
<p><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0596158009/optimalworks-21"><span>Amazon.co.uk:</span> &pound;11.70</a></p>
</div>
<p>Google Analytics revolutionised the web tracking industry. Before it&#8217;s launch in 2005, organisations could spend thousands on log analysis software. Few systems offered (near) real-time reporting or in-depth visitor information. Amazingly, Analytics is free and almost everyone uses it. It doesn&#8217;t matter whether you have a single-page hobbyist site or a large-scale corporate operation: Google Analytics is the tracking tool of choice.</p>
<p>Few programmers have an interest in conversion analysis or marketing reports. Many add the basic tracking code and think no further about it. Similarly, few marketing experts have the technical knowledge to exploit behavioural analysis. <a href="http://www.amazon.com/exec/obidos/ASIN/0596158009/optimalworks-21">&#8220;Google Analytics&#8221;</a> from O&#8217;Reilly is a 190-page book which could help those from either discipline.</p>
<p>The first couple of chapters introduce the process of measurement, analysis, change and creating an implementation plan for your company. The reader is forced to jump in at the deep end; there is too much jargon, too many assumptions, and several off-hand references without further explanation. It&#8217;s tough going, but persevere &#8212; the content improves and becomes easier to understand.</p>
<p>Chapters 3 and 4 describe how Analytics works with the standard JavaScript and mobile tracking code. I&#8217;m not convinced many people will need or care about those details, but I found it interesting background material.</p>
<p>For many, chapter 5 offers the first practical hand-ons advice and it describes how to configure your Analytics account, profiles and users. The author recommends creating multiple profiles for the same website. It&#8217;s an interesting thought, although potential benefits are not discussed in detail. Integration with ecommerce and search were facilities I&#8217;d not appreciated and the book encouraged me to adopt them immediately.</p>
<p>Chapter 6 provides details about a much misunderstood topic: filters. Filters allow you to alter incoming data, e.g. removing traffic generated by internal employees. Cutroni describes the options with an in-depth explanation of strings and regular expressions. I suspect many filters will be defined by programmers who already understand the concepts, but some will appreciate the detail.</p>
<p>Chapters 7, 8 and 9 explain campaigns, funnels and goals. For me, this was the core content and the author explains the concepts and usage clearly. However, further real-world examples would have been appreciated.</p>
<p>One quarter of the book is devoted to chapter 10 &#8212; advanced tracking techniques. It&#8217;s essential reading for web developers who need to monitor users across domains, sub-domains, frames, or when client-side events occur.</p>
<p>The final three chapters finish with enterprise considerations, CRM integration and tools. Few developers will be affected by these issues, but they are explained quickly and concisely. Two appendices follow which list Web Analytics Association (WAA) metric definitions and regular expression syntax.</p>
<p>I have a few complaints about &#8220;Google Analytics&#8221;. It can be incomprehensible to new readers, AdSense integration is glossed over, there&#8217;s little about comprehending statistics, and the chapters would benefit from real-world implementation examples. However, Cutroni is obviously passionate about the topic, the book is well-written, and it reveals facilities and best-practise techniques which few organisations have successfully adopted.</p>
<p>If you&#8217;ve only scratched the surface of Google Analytics, this book will change your understanding of visitor behaviour. Developers can master implementation and marketeers can leverage the data. Ultimately, it&#8217;s a low price to pay for the potential improvement in your conversion rates. Recommended.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.optimalworks.net/blog/2010/web-development/google-analytics-book-review/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>High Performance JavaScript book review</title>
		<link>http://www.optimalworks.net/blog/2010/web-development/javascript/high-performance-javascript-review</link>
		<comments>http://www.optimalworks.net/blog/2010/web-development/javascript/high-performance-javascript-review#comments</comments>
		<pubDate>Mon, 13 Sep 2010 14:23:39 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[javascript]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.optimalworks.net/?p=154</guid>
		<description><![CDATA[A review of O'Reilly's 'High Performance JavaScript' book by Nicholas C Zakas.]]></description>
			<content:encoded><![CDATA[<div class="review">
<p><a href="http://www.amazon.com/exec/obidos/ASIN/059680279X/optimalworks-21"><strong>High Performance JavaScript <span>Build Faster Web Application Interfaces</span> <span>By Nicholas C Zakas</span></strong><img src="/images/books/high-performance-javascript.png" width="250" height="328" alt="High Performance JavaScript" /></a></p>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/059680279X/optimalworks-21"><span>Amazon.com:</span> $23.09</a></p>
<p><a href="http://www.amazon.co.uk/exec/obidos/ASIN/059680279X/optimalworks-21"><span>Amazon.co.uk:</span> &pound;14.58</a></p>
</div>
<p><em>&#8220;High Performance JavaScript&#8221;</em> is a 202-page book aimed at intermediate to advanced JavaScript developers. However, everyone will learn something no matter what their programming background.</p>
<p>JavaScript has evolved. Ten years ago it was ridiculed as a kiddies scripting language (it&#8217;s name did much damage) but primarily because browsers were a hostile development environment. The rise of Ajax and Web2.0 applications led to a rediscovery of the language. Many developers, including myself, love JavaScript but it&#8217;s still widely misunderstood and misused.</p>
<p>Large web applications now contain many megabytes of JavaScript code. Engines are improving, but performance and optimisation remain a concern for every front-end developer. Could Nicholas C Zakas&#8217;s book be the answer?</p>
<p>Chapter 1 provides an important overview of how JavaScript is loaded and when scripts are run. Standard end-of-page techniques are discussed and Zakas recommends several non-blocking patterns to ensure the browser remains responsive while code loads in the background.</p>
<p>The second chapter throws the reader into complex areas such as scope, identifier resolution, closures, prototype chains and memory management. I suspect many will skip the section, but it provides useful background information.</p>
<p>Chapter 3 discusses DOM methods, innerHTML, node access, modification, HTML collections, events and animation. For me, this was the most interesting and useful section of the book. For example, did you realise that standard DOM methods are catching innerHTML and can be faster in webkit browsers?</p>
<p>The fourth chapter covers standard programming methodology including algorithms, loops, conditions, iteration and recursion. Efficient, good-practise techniques are discussed and many will apply to any programming language.</p>
<p>Chapter 5 delves the reader into string manipulation and includes an 18-page in-depth analysis of regular expressions. Like many, I often use the force when creating complex regexs and rarely consider operational efficiency. Zakas describes how they work and what you can do to improve their speed &#8212; again, essential reading for any web developer.</p>
<p>Chapter 6 is titled &#8220;Responsive Interfaces&#8221; and discusses browser UI threads, timers, split processing and the new HTML5 web workers API. Application developers will find the information increasingly useful as the processing burden moves from the server to the client.</p>
<p>The following chapter is dedicated to Ajax and compares the various techniques and data transport options such as HTML, XML, JSON, and custom formats. Although I found little new, there were still nuggets of information which will change the way I approach Ajax-powered applications.</p>
<p>The book finishes with Programming Practices &#8212; another informative section which could apply to any discipline. The final chapters (written by other contributers) cover building, deployment, pre-processing, minification, caching, CDNs, and profiling tools.</p>
<p>High Performance JavaScript is an excellent book. It&#8217;s concise, well-written, and matched &#8212; if not exceeded &#8212; my expectations. JavaScript optimisation is a hot-topic and I&#8217;d recommend it to all front-end developers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.optimalworks.net/blog/2010/web-development/javascript/high-performance-javascript-review/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TACS v1.3.1 update – free PHP template system</title>
		<link>http://www.optimalworks.net/blog/2010/software/free-download/tacs-v131-released</link>
		<comments>http://www.optimalworks.net/blog/2010/software/free-download/tacs-v131-released#comments</comments>
		<pubDate>Sun, 01 Aug 2010 11:51:25 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[free download]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.optimalworks.net/?p=149</guid>
		<description><![CDATA[TACS, the free OptimalWorks Templating and Caching System for PHP has been updated to version 1.3.1.]]></description>
			<content:encoded><![CDATA[<p>TACS is our free web site Templating and Caching System for PHP. It&#8217;s not a replacement for Smarty, but it&#8217;s far simpler and can be used by any developer within minutes.</p>
<p>TACS allows PHP code to be run either:</p>
<ol>
<li>At render time when the page is cached. Typically, a menu could be generated once so all subsequent visits return static HTML.</li>
<li>At runtime when the user accesses the page, e.g. for a form submission.</li>
</ol>
<p>The cached page therefore contains the minimum of PHP code. It allows you to use PHP as-is rather than forcing you to learn another API or syntax.</p>
<p>What&#8217;s more, TACS is free. Use it, abuse it, copy it, or do whatever you like with the code. We don&#8217;t mind &#8212; but a link to this website or <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&#038;business=%70%61%79ment%40%6fptimal%77ork%73%2e%6e%65%74&#038;item_name=Optimalworks%20TACS&#038;no_shipping=1&#038;no_note=1&#038;tax=0&#038;currency_code=USD&#038;lc=GB&#038;bn=PP%2dDonationsBF&#038;charset=UTF%2d8">PayPal donations</a> are gratefully received!</p>
<p>TACS v1.3.1 fixes a path resolution bug and allows you to use permalink-like URLs.</p>
<p><a href="/resources/downloads/tacs.zip">Download TACS</a> (12 Kb)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.optimalworks.net/blog/2010/software/free-download/tacs-v131-released/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PHP The Good Parts book review</title>
		<link>http://www.optimalworks.net/blog/2010/web-development/php/php-the-good-parts-review</link>
		<comments>http://www.optimalworks.net/blog/2010/web-development/php/php-the-good-parts-review#comments</comments>
		<pubDate>Wed, 28 Apr 2010 11:28:42 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.optimalworks.net/?p=146</guid>
		<description><![CDATA[A review of O'Reilly's 'PHP The Good Parts' book by Peter B MacIntyre.]]></description>
			<content:encoded><![CDATA[<div class="review">
<p><a href="http://www.amazon.com/exec/obidos/ASIN/0596804377/optimalworks-21"><strong>PHP The Good Parts <span>Delivering the Best of PHP</span> <span>By Peter B MacIntyre</span></strong><img src="/images/books/php-good-parts.png" width="250" height="328" alt="PHP The Good Parts" /></a></p>
<p><a href="http://www.amazon.com/exec/obidos/ASIN/0596804377/optimalworks-21"><span>Amazon.com:</span> $19.79</a></p>
<p><a href="http://www.amazon.co.uk/exec/obidos/ASIN/0596804377/optimalworks-21"><span>Amazon.co.uk:</span> &pound;14.94</a></p>
</div>
<p>O&#8217;Reilly set a high standard for their <em>&#8220;Good Parts&#8221;</em> series. Douglas Crockford&#8217;s outstanding <a href="http://www.amazon.com/exec/obidos/ASIN/0596517742/optimalworks-21">JavaScript: The Good Parts</a> (<a href="http://www.amazon.com/exec/obidos/ASIN/0596517742/optimalworks-21">Amazon.com: $19.79</a>, <a href="http://www.amazon.co.uk/exec/obidos/ASIN/0596517742/optimalworks-21">Amazon.co.uk: &pound;11.82</a>) changed the way developers thought about JavaScript. The language was misunderstood and misused, but Crockford&#8217;s book helped shift its perception as toy-town script to a professional programming discipline.</p>
<p>Peter B MacIntyre&#8217;s PHP work had a lot to live up to. Few PHP developers adhere to solid development practices, and many will purchase this book on the strength of the title. However, the first shock is that it contains fewer than 150 pages &#8212; <em>are there so few good parts to PHP</em>?</p>
<p>The forward makes it clear that the book is aimed at developers who are new to PHP programming. The first 5 chapters cover installation, basic syntax, functions, strings and arrays. It&#8217;s a good introduction to the language, although those with some PHP experience will find little new.</p>
<p>I was more hopeful for chapter 6 &#8212; Objects. Unfortunately, just 12 pages are devoted to the topic, and 4 of those are dry code with little explanation or real-world application. The author recommends Peter Lavin&#8217;s <a href="http://www.amazon.com/exec/obidos/ASIN/1593270771/optimalworks-21">Object-Oriented PHP</a> (<a href="http://www.amazon.com/exec/obidos/ASIN/1593270771/optimalworks-21">Amazon.com: $22.76</a>, <a href="http://www.amazon.co.uk/exec/obidos/ASIN/1593270771/optimalworks-21">Amazon.co.uk: &pound;23.99</a>), but it&#8217;s disappointing not to have deeper analysis of the subject.</p>
<p>Chapter 7 covers database interaction using MySQLi and PDO. Bizarrely, 11 pages are devoted to SQLite and flat-file alternatives. Although these might be appreciated in a larger book, I wouldn&#8217;t consider them to be the &#8216;best parts&#8217; of PHP, especially for large web applications.</p>
<p>Chapter 8 introduces us to PHP&#8217;s friends: email, PDF and graphic generation. The author devotes another 12 pages to dynamically-generated PDFs &#8212; useful, but not something PHP developers encounter on a daily basis.</p>
<p>The following chapters provide some reasonable security information and new PHP 5.3 features such as namespaces and closures. The goto statement also receives 2 pages, even though the author denounces it as a bad part of PHP?</p>
<p>The final chapter wraps up with brief details of regular expressions, string functions, SimpleXML, IDEs and websites. It&#8217;s useful, but there&#8217;s little you couldn&#8217;t find in greater depth within the <a href="http://www.php.net/docs.php">PHP manual</a>.</p>
<p>An appendix, named &#8220;The Bad Parts&#8221;, finishes the book. Another couple of pages are wasted on the goto statement and the register_globals directive &#8212; which has been disabled by default since v4.2.</p>
<p>On the plus side, &#8220;PHP The Good Parts&#8221; is well-written and easy to understand. It&#8217;s a concise introduction to the language which may be appreciated by developers with experience of other languages. </p>
<p>Unfortunately, PHP developers expect more and will feel misled by the title. O&#8217;Reilly has diluted <em>&#8220;The Good Parts&#8221;</em> brand.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.optimalworks.net/blog/2010/web-development/php/php-the-good-parts-review/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BetterInnerHTML v1.2 update &#8211; the best innerHTML alternative</title>
		<link>http://www.optimalworks.net/blog/2009/web-development/javascript/betterinnerhtml-innerhtml-replacement</link>
		<comments>http://www.optimalworks.net/blog/2009/web-development/javascript/betterinnerhtml-innerhtml-replacement#comments</comments>
		<pubDate>Tue, 21 Jul 2009 09:17:17 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[free download]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.optimalworks.net/?p=137</guid>
		<description><![CDATA[BetterInnerHTML v1.2, the innerHTML alternative, has been released. This version now allows multiple inline event handlers to be defined for any HTML tag.]]></description>
			<content:encoded><![CDATA[<p>BetterInnerHTML v1.2 has just been released. The update now allows multiple inline event handlers (onclick, onmouseover, onmouseout, etc.) to be attached to the same tag. Previous versions only allowed one handler per tag.</p>
<p><a href="http://www.optimalworks.net/resources/betterinnerhtml/"><strong>Visit the BetterInnerHTML download page&#8230;</strong></a></p>
<h2>What is BetterInnerHTML?</h2>
<p>BetterInnerHTML is a replacement for innerHTML. Like innerHTML, you can pass a string of HTML and have it rendered somewhere on the page. However, it uses standard DOM node insertion methods that prevents the problems.</p>
<p>Did we mention that <strong>it’s free</strong>? However, we do accept donations toward future updates and support.</p>
<p>For more information and technical details, please refer to <a href="http://www.optimalworks.net/blog/2007/web-development/javascript/innerhtml-alternative">innerHTML: the ultimate alternative solution</a>.</p>
<p>We hope you find it useful and appreciate your feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.optimalworks.net/blog/2009/web-development/javascript/betterinnerhtml-innerhtml-replacement/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Now blogging at SitePoint.com&#8230;</title>
		<link>http://www.optimalworks.net/blog/2009/general/blogging-at-sitepoint</link>
		<comments>http://www.optimalworks.net/blog/2009/general/blogging-at-sitepoint#comments</comments>
		<pubDate>Mon, 02 Mar 2009 12:08:44 +0000</pubDate>
		<dc:creator>craig</dc:creator>
				<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://www.optimalworks.net/?p=126</guid>
		<description><![CDATA[Craig is now blogging at SitePoint.com - the best technology resource on the web. The Optimalworks blog is still going, but you can find more of my articles there.]]></description>
			<content:encoded><![CDATA[<p>You may have noticed that things have been a little quiet on the Optimalworks blog recently. I am still around, but I have recently started writing articles for <a href="http://www.sitepoint.com/">SitePoint.com</a>.</p>
<p>SitePoint is one of the biggest and best resources on the Internet for web developers, graphic designers, technology evangelists and just about anyone who has an interest in the web. I&#8217;ve been visiting SitePoint for over 10 years and I&#8217;d suggest you take a look too.</p>
<p><a href="http://www.sitepoint.com/articlelist/560/">View my latest SitePoint blog posts&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.optimalworks.net/blog/2009/general/blogging-at-sitepoint/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

