<?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>SitePoint &#187; Tech</title>
	<atom:link href="http://www.sitepoint.com/blogs/category/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sitepoint.com/blogs</link>
	<description>News, opinion, and fresh thinking for web developers and designers. The official podcast of sitepoint.com.</description>
	<lastBuildDate>Sat, 21 Nov 2009 19:00:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google Launch Chrome OS (Next Year)</title>
		<link>http://www.sitepoint.com/blogs/2009/11/21/google-launch-chrome-os-next-year/</link>
		<comments>http://www.sitepoint.com/blogs/2009/11/21/google-launch-chrome-os-next-year/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 17:25:50 +0000</pubDate>
		<dc:creator>Craig Buckler</dc:creator>
				<category><![CDATA[Web Tech]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Chromium]]></category>
		<category><![CDATA[google]]></category>
<category>Chrome</category><category>Chromium</category><category>Google</category>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=15932</guid>
		<description><![CDATA[The media has been wildly speculating about Google's Chrome OS launch this week. Craig takes a close look at what has actually been released.


Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2008/12/12/google-chrome-leaves-beta/' rel='bookmark' title='Permanent Link: Google Chrome Leaves Beta'>Google Chrome Leaves Beta</a> <small>Just 100 days after launching their Chrome browser, Google has...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/02/10/chrome-extensions-likely-by-may/' rel='bookmark' title='Permanent Link: Chrome Extensions Likely by May'>Chrome Extensions Likely by May</a> <small>The number one most requested feature for Google's Chrome web...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/11/19/google-chrome-go-plugin/' rel='bookmark' title='Permanent Link: Why Google Should Not Give Chrome the Go-Ahead'>Why Google Should Not Give Chrome the Go-Ahead</a> <small>Google has ambitious plans for Go and are considering implementation...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogs.sitepointstatic.com/images/tech/204-chromium-os.jpg" width="220" height="220" alt="Chromium OS" class="imgright" />You&#8217;ve got to love Google&#8217;s marketing machine. Despite having little new to say about Chrome OS, the media has been eagerly reporting this week&#8217;s <em>&#8220;launch&#8221;</em>. You can&#8217;t open a newspaper without reading something from an excited journalist who&#8217;s obviously confused by the difference between an OS and a browser.</p>
<p>If, like me, you were expecting to download a fully bootable ISO, you&#8217;re going to be disappointed. The launch consists of:</p>
<ol>
<li>A name change from &#8220;Chrome OS&#8221; to &#8220;Chromium OS&#8221;.</li>
<li>A new <a href="http://www.chromium.org/chromium-os">Chromium.org</a> website containing information for UI designers and developers.</li>
<li>An early version of the source code.</li>
</ol>
<p>Google has stated that the OS is a full 12-months away from release. The source code is not a beta or even a pre-alpha. It&#8217;s possible to <a href="http://www.chromium.org/chromium-os/building-chromium-os">create a build</a> but few people will bother: you need Linux, various developer packages, and a lot of patience.</p>
<div id="adz" class="vertical"></div><p>Screenshots and videos are available, but they&#8217;re mostly conceptual line drawings rather than actual footage of real-world use. This video is one of the more informative:</p>
<div style="clear:both;width:425px;margin:20px auto;"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/hJ57xzo287U&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/hJ57xzo287U&#038;color1=0xb1b1b1&#038;color2=0xcfcfcf&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object></div>
<p>So have we discovered anything that <a href="http://www.sitepoint.com/blogs/2009/07/16/google-chrome-operating-system/">we didn&#8217;t know before</a>?</p>
<ul>
<li>It&#8217;s a pure browser-based OS. It&#8217;s essentially the Google Chrome browser with additional pop-up management. Even simple applications such as the calculator appear to be web-based rather than an OS executable.</li>
<li>The left-most tab shows the Chrome menu which links to standard applications like GMail or panels.</li>
<li>Small panels can be opened which overlay the main window or can be docked at the side of the screen.</li>
</ul>
<p>The OS is mostly what I expected, but I&#8217;d really hoped to be booting a virtual machine today. It&#8217;s great that Google has released the code and is asking for developer contributions, but whipping up frenzied media excitement wasn&#8217;t the best move. I can&#8217;t help feeling a little underwhelmed.</p>
<p>Have you built or tried Chromium OS?</p>
<script src="http://ads.aws.sitepoint.com/adjs.php?region=136&amp;did=adz&amp;adtype=vertical" type="text/javascript"></script>

<p>Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2008/12/12/google-chrome-leaves-beta/' rel='bookmark' title='Permanent Link: Google Chrome Leaves Beta'>Google Chrome Leaves Beta</a> <small>Just 100 days after launching their Chrome browser, Google has...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/02/10/chrome-extensions-likely-by-may/' rel='bookmark' title='Permanent Link: Chrome Extensions Likely by May'>Chrome Extensions Likely by May</a> <small>The number one most requested feature for Google's Chrome web...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/11/19/google-chrome-go-plugin/' rel='bookmark' title='Permanent Link: Why Google Should Not Give Chrome the Go-Ahead'>Why Google Should Not Give Chrome the Go-Ahead</a> <small>Google has ambitious plans for Go and are considering implementation...</small></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sitepoint.com/blogs/2009/11/21/google-launch-chrome-os-next-year/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>How to Run IE6, IE7 and IE8 on Windows 7 HOME</title>
		<link>http://www.sitepoint.com/blogs/2009/11/20/ie6-ie7-ie8-windows-7-home/</link>
		<comments>http://www.sitepoint.com/blogs/2009/11/20/ie6-ie7-ie8-windows-7-home/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 14:39:30 +0000</pubDate>
		<dc:creator>Craig Buckler</dc:creator>
				<category><![CDATA[Web Tech]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[IE7]]></category>
		<category><![CDATA[ie8]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[xp]]></category>
<category>windows</category><category>xp mode</category>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=15799</guid>
		<description><![CDATA[The excellent XP Mode is only available for Windows 7 Professional, Enterprise and Ultimate. Are Windows 7 Home users left out in the cold? Not any more...


Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/09/29/windows-7-browser-testing/' rel='bookmark' title='Permanent Link: Why Windows 7 Will Revolutionize Your Browser Testing'>Why Windows 7 Will Revolutionize Your Browser Testing</a> <small>Finally, we can run IE6, IE7, IE8 and any other...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/07/17/windows-7-sold-out/' rel='bookmark' title='Permanent Link: Windows 7 Pre-Orders Sell Out on Day 1'>Windows 7 Pre-Orders Sell Out on Day 1</a> <small>Pre-orders for Microsoft Windows 7 have sold out on day...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/04/14/ie8-automatic-update/' rel='bookmark' title='Permanent Link: IE8 Automatic Update Starting Soon'>IE8 Automatic Update Starting Soon</a> <small>Internet Explorer 8.0 will shortly be rolled out to IE6...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogs.sitepointstatic.com/images/tech/193-ie678-xpmode.png" width="240" height="240" alt="IE6, IE7 and IE8 on Windows 7" class="imgright" style="border: 1px solid #333;" />My recent article, <a href="http://articles.sitepoint.com/article/ie6-ie7-ie8-win7-xp-mode">Run IE6, IE7, and IE8 on the Same Machine Using Windows 7 XP Mode</a>, provided instructions for installing Virtual PC and XP Mode on a Windows 7 PC. Unfortunately, it only worked on the Professional, Ultimate or Enterprise versions of Windows 7.</p>
<p>Windows 7 Home Basic and Premium users are unable to use XP Mode. This is unfortunate since the vast majority of new PCs have those editions installed. However, there is a workaround that allows Windows 7 Home developers to use XP Mode integration.</p>
<p><strong>1. Check your PC&#8217;s compatibility</strong></p>
<p>XP Mode requires hardware-assisted virtualization (HAV). This is supported by most modern processors, but it may need to be enabled in your BIOS. The BIOS menu is normally accessed by pressing DEL, F2, or ESC immediately after switching on your PC. Microsoft provide a useful <a href="http://go.microsoft.com/fwlink/?LinkId=163321">HAV detection tool</a> which can help you with BIOS configuration.</p>
<p><strong>2. Download Virtual PC</strong></p>
<p>You must download Virtual PC for Windows 7 from the following location rather than the Microsoft Virtual PC website:</p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2b6d5c18-1441-47ea-8309-2545b08e11dd">http://www.microsoft.com/downloads/details.aspx?FamilyID=2b6d5c18-1441-47ea-8309-2545b08e11dd</a></p>
<div id="adz" class="vertical"></div><p>You might be prompted to install Genuine Windows Validation Component in your browser if you&#8217;ve not installed it before.</p>
<p><strong>3. Create a new Virtual Machine</strong></p>
<p>Start Virtual PC from <strong>Start</strong> &gt; <strong>Programs</strong> &gt; <strong>Windows Virtual PC</strong> &gt; <strong>Virtual Machines</strong> then click <strong>Create virtual machine</strong> on the toolbar.</p>
<p>You will be prompted to enter the name, location, RAM (256MB is enough) and create a new virtual hard disk.</p>
<p><strong>4. Install Windows XP in the VM</strong></p>
<p>You will now need to start your VM and install Windows XP using an original CD or disk image. You will also require an XP licence &#8212; you may have one if you&#8217;ve scrapped or upgraded a PC.</p>
<p>Alternatively, you&#8217;ll need to buy a copy of Windows XP. The OEM versions generally cost less and you might be able to grab a copy on eBay &#8212; but ensure it&#8217;s legitimate.</p>
<p>You will also need to install the latest updates including SP3. However, do not install IE7 or IE8 just yet!</p>
<p><strong>5. Enable integration</strong></p>
<p>From the VM <strong>Tools</strong> menu, choose to install the <strong>Integration Components</strong>. Once installed, click <strong>Tools</strong> &gt; <strong>Enable Integration</strong>.</p>
<p><strong>6. Install the Windows XP SP3 RemoteApp upgrade</strong></p>
<p>Within your XP VM guest (NOT the Windows 7 host), you should download and install the RemoteApp upgrade from:</p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=2f376f53-83cf-4e5b-9515-2cb70662a81b">http://www.microsoft.com/downloads/details.aspx?FamilyID=2f376f53-83cf-4e5b-9515-2cb70662a81b</a></p>
<p><strong>7. Configure the VM resolution and color depth (optional)</strong></p>
<p>By default, IE6 and IE7 will run in 16-bit color mode and your subtly-shaded web application can look a little strange. To fix it, refer to step 3 of <em>Running XP Mode for the First Time</em> at the bottom of the <a href="http://articles.sitepoint.com/article/ie6-ie7-ie8-win7-xp-mode">original XP Mode article</a>.</p>
<p><strong>8. Create IE6 and IE7 VMs and desktop shortcuts</strong></p>
<p>You can now follow the instructions on <a href="http://articles.sitepoint.com/article/ie6-ie7-ie8-win7-xp-mode/2">page 2 of the original XP Mode article</a> to create two cloned VMs and Windows 7 desktop shortcuts for IE6 and IE7.</p>
<p><a href="http://blogs.sitepointstatic.com/images/tech/193-ie678-xpmode-ie-fullscreen.png"><img src="http://blogs.sitepointstatic.com/images/tech/193-ie678-xpmode-ie-screen.png" width="450" height="359" alt="IE6, IE7 and IE8 on the same Windows 7 desktop" style="display:block;margin:20px auto 0 auto;" /><em style="display:block;text-align:center;margin:0 0 20px 0;">click to enlarge</em><br />
</a></p>
<p>Many thanks to <a href="http://www.sitepoint.com/forums/member.php?u=92236"><strong>logic_earth</strong></a> on the <a href="http://www.sitepoint.com/forums/showthread.php?t=646482">SitePoint forums</a> for providing a great solution for Windows 7 Home users.</p>
<h2>Are You Considering a Windows 7 Upgrade?</h2>
<p>The solution above is ideal if you&#8217;re already using Windows 7 Home and have a spare XP licence. However, if you&#8217;re considering a Windows 7 upgrade, purchasing the Professional edition may save you time and money. </p>
<p>Prices appear to have reduced a little in the US:</p>
<ul>
<li><a href="http://www.amazon.com/exec/obidos/ASIN/B002DHGM50/mswindows7-21">US Microsoft Windows 7 Professional Upgrade &#8212; $175</a></li>
<li><a href="http://www.amazon.com/exec/obidos/ASIN/B002DHLVII/mswindows7-21">US Microsoft Windows 7 Professional (full version) &#8212; $265</a></li>
<li><a href="http://www.amazon.com/exec/obidos/ASIN/B002DHLV8S/mswindows7-21">US Microsoft Windows 7 Ultimate Upgrade &#8212; $200</a></li>
<li><a href="http://www.amazon.com/exec/obidos/ASIN/B002DHGMVY/mswindows7-21">US Microsoft Windows 7 Ultimate (full version) &#8212; $292</a></li>
</ul>
<p>UK prices have not altered significantly, but the full version price is confusingly similar to the upgrade and less expensive than the US:</p>
<ul>
<li><a href="http://www.amazon.co.uk/exec/obidos/ASIN/B002DGS82G/mswindows7-21">UK Microsoft Windows 7 Professional Upgrade &#8212; &pound;150</a></li>
<li><a href="http://www.amazon.co.uk/exec/obidos/ASIN/B002DUCMTC/mswindows7-21">UK Microsoft Windows 7 Professional (full version) &#8212; &pound;150</a></li>
<li><a href="http://www.amazon.co.uk/exec/obidos/ASIN/B002DGS83K/mswindows7-21">UK Microsoft Windows 7 Ultimate Upgrade &#8212; &pound;167</a></li>
<li><a href="http://www.amazon.co.uk/exec/obidos/ASIN/B001XCWGII/mswindows7-21">UK Microsoft Windows 7 Ultimate (full version) &#8212; &pound;170</a></li>
</ul>
<p>Has Windows 7 XP Mode reduced your IE testing time?</p>
<script src="http://ads.aws.sitepoint.com/adjs.php?region=136&amp;did=adz&amp;adtype=vertical" type="text/javascript"></script>

<p>Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/09/29/windows-7-browser-testing/' rel='bookmark' title='Permanent Link: Why Windows 7 Will Revolutionize Your Browser Testing'>Why Windows 7 Will Revolutionize Your Browser Testing</a> <small>Finally, we can run IE6, IE7, IE8 and any other...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/07/17/windows-7-sold-out/' rel='bookmark' title='Permanent Link: Windows 7 Pre-Orders Sell Out on Day 1'>Windows 7 Pre-Orders Sell Out on Day 1</a> <small>Pre-orders for Microsoft Windows 7 have sold out on day...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/04/14/ie8-automatic-update/' rel='bookmark' title='Permanent Link: IE8 Automatic Update Starting Soon'>IE8 Automatic Update Starting Soon</a> <small>Internet Explorer 8.0 will shortly be rolled out to IE6...</small></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sitepoint.com/blogs/2009/11/20/ie6-ie7-ie8-windows-7-home/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Show Me the Data!</title>
		<link>http://www.sitepoint.com/blogs/2009/11/19/show-me-the-data/</link>
		<comments>http://www.sitepoint.com/blogs/2009/11/19/show-me-the-data/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 01:25:46 +0000</pubDate>
		<dc:creator>Louis Simoneau</dc:creator>
				<category><![CDATA[Web Tech]]></category>

		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=15897</guid>
		<description><![CDATA[No one wants to read through thousands and thousands of lines of data looking for a trend. But what's the best way to condense all that data into a simple visual representation? Read our latest tutorial to find out!


Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/06/12/find-out-whats-new-and-cool-in-flex-4-and-win/' rel='bookmark' title='Permanent Link: Find Out What&#8217;s New and Cool in Flex 4&#8230; and Win!'>Find Out What&#8217;s New and Cool in Flex 4&#8230; and Win!</a> <small>Read our brand new article, What’s New in Flex 4?...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/06/23/announcing-the-winners-of-our-flash-builder-giveaway/' rel='bookmark' title='Permanent Link: Announcing The Winners of our Flash Builder Giveaway'>Announcing The Winners of our Flash Builder Giveaway</a> <small>When we published "What's New and Cool in Flex 4?"...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/01/29/its-quiz-time-again-with-a-brand-new-prize/' rel='bookmark' title='Permanent Link: It&#8217;s Quiz Time Again, With a Brand New Prize!'>It&#8217;s Quiz Time Again, With a Brand New Prize!</a> <small>It&#8217;s quiz time again and this around we&#8217;ve got a...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.sitepoint.com/blogs/wp-content/uploads/2009/11/dataviz.png" alt="dataviz" title="dataviz" width="200" height="170" class="imgright" />No one wants to read through thousands and thousands of lines of data looking for a trend. But what&#8217;s the best way to condense all that data into a simple visual representation? Read our latest tutorial to find out!</p>
<p><a href="http://articles.sitepoint.com/article/flex-data-visualization-part-1/">Data Visualization with Flex, Part I</a> is the first in a three part series in which Toby Tremayne will show us how to use Adobe&#8217;s Flex Builder to develop sophisticated data visualizations. In Part I, he focuses on extracting a useful subset of data from a huge dataset, and importing it into Flex in a format we can use. </p>
<p>Here&#8217;s the cool part: the dataset he&#8217;s using is a collection of posts from our very own <a href="http://www.sitepoint.com/forums/">SitePoint forums</a>! By the time Part III rolls around, we&#8217;ll have the tool running live so you can take a look at how different technologies are discussed in the forums. And if you haven&#8217;t been to the forums before, this is the perfect opportunity to drop by and <a href="http://www.sitepoint.com/forums/forumdisplay.php?f=51">introduce yourself</a>!</p>
<p>We&#8217;d like to thank Adobe, who are our sponsors for the <a href="http://www.sitepoint.com/quiz/flex3/flex-data-visualization-part-1/">multiple choice article quiz</a>—if you find the article interesting, be sure to check how closely you paid attention!</p>
<div id="adz" class="horizontal"></div><p><strong>Article:</strong> <a href="http://articles.sitepoint.com/article/flex-data-visualization-part-1/"><em>Flex Data Visualization Part I</em></a><br />
<strong>Quiz: </strong><a href="http://www.sitepoint.com/quiz/flex3/flex-data-visualization-part-1/"><em>Flex Data Visualization Part I Quiz</em></a></p>
<script src="http://ads.aws.sitepoint.com/adjs.php?region=137&amp;did=adz&amp;adtype=horizontal" type="text/javascript"></script>

<p>Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/06/12/find-out-whats-new-and-cool-in-flex-4-and-win/' rel='bookmark' title='Permanent Link: Find Out What&#8217;s New and Cool in Flex 4&#8230; and Win!'>Find Out What&#8217;s New and Cool in Flex 4&#8230; and Win!</a> <small>Read our brand new article, What’s New in Flex 4?...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/06/23/announcing-the-winners-of-our-flash-builder-giveaway/' rel='bookmark' title='Permanent Link: Announcing The Winners of our Flash Builder Giveaway'>Announcing The Winners of our Flash Builder Giveaway</a> <small>When we published "What's New and Cool in Flex 4?"...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/01/29/its-quiz-time-again-with-a-brand-new-prize/' rel='bookmark' title='Permanent Link: It&#8217;s Quiz Time Again, With a Brand New Prize!'>It&#8217;s Quiz Time Again, With a Brand New Prize!</a> <small>It&#8217;s quiz time again and this around we&#8217;ve got a...</small></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sitepoint.com/blogs/2009/11/19/show-me-the-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Google Should Not Give Chrome the Go-Ahead</title>
		<link>http://www.sitepoint.com/blogs/2009/11/19/google-chrome-go-plugin/</link>
		<comments>http://www.sitepoint.com/blogs/2009/11/19/google-chrome-go-plugin/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 14:07:51 +0000</pubDate>
		<dc:creator>Craig Buckler</dc:creator>
				<category><![CDATA[Web Tech]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[plugin]]></category>
<category>browser</category><category>go</category><category>google</category><category>plugin</category>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=15855</guid>
		<description><![CDATA[Google has ambitious plans for Go and are considering implementation as a new client-side development language. Craig expresses his concern at the plans and browser plugins in general.


Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/09/28/google-chrome-frame-technical-details/' rel='bookmark' title='Permanent Link: Google Chrome Frame: the Technical Details'>Google Chrome Frame: the Technical Details</a> <small>Google's Chrome Frame announcement has been surrounded by hype, fabrication,...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/10/13/mozilla-microsoft-slam-google-chrome-frame/' rel='bookmark' title='Permanent Link: Mozilla Joins Microsoft in Slamming Google Chrome Frame'>Mozilla Joins Microsoft in Slamming Google Chrome Frame</a> <small>Mozilla has criticized Google's Chrome Frame plugin for fragmenting the...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/10/01/microsoft-google-chrome-frame-security/' rel='bookmark' title='Permanent Link: Microsoft Slams Google Chrome Frame'>Microsoft Slams Google Chrome Frame</a> <small>It's hardly surprising, but Microsoft is advising IE users not...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogs.sitepointstatic.com/images/tech/202-google-go-chrome.jpg" width="240" height="240" alt="Google Go Gopher mascot" class="imgright" /><em>(Sorry &#8212; I could not resist another &#8216;Go&#8217; pun in the title!)</em></p>
<p>I recently looked at <a href="http://www.sitepoint.com/blogs/2009/11/17/its-all-go-for-google/">Google&#8217;s Go programming language</a>. At first glance, it seems to be a good option for desktop or server-side web development, but it appears that Google has more ambitious plans.</p>
<p>According to source code comments and interviews with the development team, Go may be integrated within the Google Native Client (NaCl). NaCl is an open-source plugin which allows native 32-bit x86 code to run directly within a web browser. The code is sandboxed, verified, and restricted to ensure it cannot cause any damage to the browser, other applications, or the underlying OS. Although NaCl is experimental, it is already included (but disabled) in the Chrome web browser and Quake has been converted to demonstrate the technology.</p>
<p>Potentially, Go could be a good fit for NaCl. Developers could deploy compiled executables, or even the raw source code, which would run quickly within the browser. Complex games and processor-intensive applications would be possible.</p>
<div id="adz" class="vertical"></div><h2>Do We Need More Plugins?</h2>
<p>How many plugins do you have installed? Most people will have Flash, Java, Adobe Reader, and perhaps Silverlight or Google Gears. Novice users who click &#8220;Yes&#8221; to every prompt probably have dozens.</p>
<p>The web&#8217;s main attractions are platform independence and instant deployment. Yet the industry&#8217;s obsession with moving every desktop application online is provoking plugin development which negates the advantages:</p>
<ol>
<li>Relying on a plugin violates platform independence. Creating a Go-based client-side application will almost certainly tie you to Google Chrome since NaCl will never be available for all OS and browser combinations. Many web applications still rely on IE because ActiveX was used &#8212; even though Chrome and Firefox have ActiveX implementations.</li>
<li>NaCl and Go will offer raw speed so games, graphic, and video applications are logical choices. However, complex applications can be hundreds of megabytes in size &#8212; instant deployment is unlikely. While I accept NaCl is very clever, processor-intensive applications will certainly run better <em>outside</em> the browser.</li>
</ol>
<p>Mozilla expressed similar concerns in their <a href="http://www.sitepoint.com/blogs/2009/10/13/mozilla-microsoft-slam-google-chrome-frame/">recent criticism of Google Chrome Frame</a>. Although Chrome Frame is a niche solution to a known problem, Mozilla is worried that the web could become fragmented if companies eschew web standards in favor of plugin-based solutions.</p>
<p>I&#8217;m not saying all plugins are necessarily bad and, in some cases, they provide facilities that will eventually become a browser standard. For example, Flash allows us to view a video today rather than wait a few years for HTML5&#8217;s <code>video</code> tag. However, the web and the desktop are different platforms with their own strengths and weaknesses. Although the boundaries are increasingly blurred, is it sensible to use plugins to shoehorn a desktop application into the browser?</p>
<p>If you find yourself becoming increasingly reliant on plugins, perhaps you should consider a redesign so your application exploits web technology. Alternatively, release a desktop application that utilizes web connectivity when necessary.</p>
<p>Google &#8212; have fun with NaCl, but please don&#8217;t turn the web into a distribution platform for Go-based binary applications!</p>
<p>What do you think? Is NaCl and Go a great idea? Do we have too many plugins or do they improve the browser experience? Should web browsers be used as an application platform if they continually need bespoke improvement?</p>
<script src="http://ads.aws.sitepoint.com/adjs.php?region=136&amp;did=adz&amp;adtype=vertical" type="text/javascript"></script>

<p>Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/09/28/google-chrome-frame-technical-details/' rel='bookmark' title='Permanent Link: Google Chrome Frame: the Technical Details'>Google Chrome Frame: the Technical Details</a> <small>Google's Chrome Frame announcement has been surrounded by hype, fabrication,...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/10/13/mozilla-microsoft-slam-google-chrome-frame/' rel='bookmark' title='Permanent Link: Mozilla Joins Microsoft in Slamming Google Chrome Frame'>Mozilla Joins Microsoft in Slamming Google Chrome Frame</a> <small>Mozilla has criticized Google's Chrome Frame plugin for fragmenting the...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/10/01/microsoft-google-chrome-frame-security/' rel='bookmark' title='Permanent Link: Microsoft Slams Google Chrome Frame'>Microsoft Slams Google Chrome Frame</a> <small>It's hardly surprising, but Microsoft is advising IE users not...</small></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sitepoint.com/blogs/2009/11/19/google-chrome-go-plugin/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>It&#8217;s All Go for Google</title>
		<link>http://www.sitepoint.com/blogs/2009/11/17/its-all-go-for-google/</link>
		<comments>http://www.sitepoint.com/blogs/2009/11/17/its-all-go-for-google/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 11:33:36 +0000</pubDate>
		<dc:creator>Craig Buckler</dc:creator>
				<category><![CDATA[Web Tech]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[go]]></category>
		<category><![CDATA[google]]></category>
<category>development</category><category>go</category><category>google</category>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=15852</guid>
		<description><![CDATA[Google is concerned that developers do not have enough choice when it comes to picking the perfect programming language. Craig looks at "Go" - a new language from the internet giant.


Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/11/12/google-open-source-javascript-closure-library/' rel='bookmark' title='Permanent Link: Google Releases its JavaScript Closure Tools'>Google Releases its JavaScript Closure Tools</a> <small>Do we need more JavaScript libraries and tools? Perhaps not,...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/02/26/server-side-javascript/' rel='bookmark' title='Permanent Link: Will Server-Side JavaScript ever catch on?'>Will Server-Side JavaScript ever catch on?</a> <small>Server-side JavaScript appears to be a logical choice for web...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/05/07/google-3d-browser-plugin/' rel='bookmark' title='Permanent Link: Google Offers 3D Rendering in the Browser'>Google Offers 3D Rendering in the Browser</a> <small>Google's new O3D project provides a plugin that allows developers...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogs.sitepointstatic.com/images/tech/201-google-go.png" width="220" height="220" alt="Google Go Gopher mascot" class="imgright" />It&#8217;s incredible to think how far web development has evolved since the mid-1990s. Attempting server-side application development back in those dark times generally involved nasty <acronym title="Common Gateway Interface">CGI</acronym>, a dash of Perl, Notepad editing, and a lot of luck.</p>
<p>Today, developers are spoiled for choice with PHP, Java, C#, VB, Ruby, Python and a multitude of other platforms and languages. Evidently, Google did not consider that to be enough and have created their own new programming language named <em>&#8216;Go&#8217;</em>.</p>
<p>Go started as one of Google&#8217;s 20% projects. Google developers are permitted to spend one day per week on a project of their choice &#8212; that idea has led to GMail, AdSense and other successful systems. The Go team&#8217;s objective was to build a fast, fun and productive development language. It had to offer the performance and security of compiled programs with the ease and speed of interpreted language development.</p>
<p>Syntactically, the language is reminiscent of Object Orientated C. Here&#8217;s the usual &#8220;Hello, world&#8221; example:</p>
<pre><code>
package main
import fmt "fmt" // package implementing formatted I/O.

func main() {
	fmt.Printf("Hello, world\n");
} 
</code></pre>
<p>Go offers functions, loops, conditional expressions, pointers (without arithmetic) and all the other structures you would expect. There are a few interesting features:</p>
<div id="adz" class="vertical"></div><ul>
<li>End-of-line semi-colons are optional.</li>
<li>JavaScript-like anonymous / lambda functions and closures.</li>
<li>Python-like array slices and mapping.</li>
<li>Support for parallelism (concurrent execution) using &#8220;goroutines&#8221;. This alone could be an attractive option; few developers delve into multi-threaded coding and Go appears to make it easy.</li>
</ul>
<h2>Compiling</h2>
<p>Google provide two compilers: 6g for 64-bit and 8g for x86 systems. Both are designed to be fast and moderately-large applications will compile in under one second. Even the whole package library containing 120,000 lines of code compiles on a standard laptop in less than 10 seconds. There is also an alternative compiler based on <acronym title="GNU Compiler Collection">GCC</acronym> called Gccgo.</p>
<p>Unlike Java and .NET, Go compiles to a native binary rather than managed or intermediate code. That&#8217;s an unusual decision and many will argue it&#8217;s a backward step. In theory, managed code is safer, more portable, and potentially faster because it can be optimized for the processor it&#8217;s running on. In practice, few Java and .NET applications are known for their speed.</p>
<h2>Does Go Have a Future?</h2>
<p>Google are releasing the Go source code under the BSD license and hope an eager development community will evolve.</p>
<p>The language is experimental and is not recommended for production environments &#8212; there is no IDE integration, standard libraries are sparse, and there are few code examples. However, the project appears to be mature and the developers used it to build the web server which runs the project&#8217;s official website, <a href="http://golang.org/">golang.org</a>.</p>
<p>With Google&#8217;s backing and resources, you can be assured Go has a future. Personally, I think the language has potential but it will be some time before it can lure developers away from their current platform of choice. There&#8217;s also one option Google are considering which is a little more dubious &hellip; see <a href="http://www.sitepoint.com/blogs/2009/11/19/google-chrome-go-plugin/">Why Google Should Not Give Chrome the Go-Ahead</a>.</p>
<p>Will you try Go? Is it the future or another minority development language?</p>
<p>Link: <a href="http://golang.org/">The Go Programming Language</a>.</p>
<script src="http://ads.aws.sitepoint.com/adjs.php?region=136&amp;did=adz&amp;adtype=vertical" type="text/javascript"></script>

<p>Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/11/12/google-open-source-javascript-closure-library/' rel='bookmark' title='Permanent Link: Google Releases its JavaScript Closure Tools'>Google Releases its JavaScript Closure Tools</a> <small>Do we need more JavaScript libraries and tools? Perhaps not,...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/02/26/server-side-javascript/' rel='bookmark' title='Permanent Link: Will Server-Side JavaScript ever catch on?'>Will Server-Side JavaScript ever catch on?</a> <small>Server-side JavaScript appears to be a logical choice for web...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/05/07/google-3d-browser-plugin/' rel='bookmark' title='Permanent Link: Google Offers 3D Rendering in the Browser'>Google Offers 3D Rendering in the Browser</a> <small>Google's new O3D project provides a plugin that allows developers...</small></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sitepoint.com/blogs/2009/11/17/its-all-go-for-google/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Google Releases its JavaScript Closure Tools</title>
		<link>http://www.sitepoint.com/blogs/2009/11/12/google-open-source-javascript-closure-library/</link>
		<comments>http://www.sitepoint.com/blogs/2009/11/12/google-open-source-javascript-closure-library/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 07:52:52 +0000</pubDate>
		<dc:creator>Craig Buckler</dc:creator>
				<category><![CDATA[JavaScript & CSS]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[library]]></category>

		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=15743</guid>
		<description><![CDATA[Do we need more JavaScript libraries and tools? Perhaps not, but since these power Google Search, GMail, Docs and Maps, they're worth another look.


Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/11/12/google-closure-how-not-to-write-javascript/' rel='bookmark' title='Permanent Link: Google Closure: How not to write JavaScript'>Google Closure: How not to write JavaScript</a> <small>What if Google released a JavaScript library that sucked, and...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/02/26/server-side-javascript/' rel='bookmark' title='Permanent Link: Will Server-Side JavaScript ever catch on?'>Will Server-Side JavaScript ever catch on?</a> <small>Server-side JavaScript appears to be a logical choice for web...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/03/10/server-side-javascript-will-be-as-common-as-php/' rel='bookmark' title='Permanent Link: Server-side JavaScript Will Be as Common as PHP'>Server-side JavaScript Will Be as Common as PHP</a> <small>Despite the fact that JavaScript has been typecast as the...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogs.sitepointstatic.com/images/tech/197-google-closure-tools.png" width="125" height="125" alt="Google Closure" class="imgright" />New JavaScript libraries and frameworks appear all the time, but it&#8217;s not every day that Google release the client-side code that powers Search, GMail, Google Maps, Google Docs, and more. The company has open-sourced their Closure Tools and they are now available to download from <a href="http://code.google.com/closure/">Google Code Labs</a>.</p>
<p>Three systems are provided for eager client-side developers:</p>
<h2>1. The Google Closure Compiler</h2>
<p>&#8220;Compiler&#8221; is a confusing term &#8212; this is a Java-powered JavaScript optimizer that reduces file sizes by removing dead code, renaming variables, and removing whitespace and comments. </p>
<div id="adz" class="vertical"></div><p>You can either:</p>
<ol>
<li><a href="http://code.google.com/p/closure-compiler/downloads/list">download the Closure Compiler</a>, or</li>
<li><a href="http://closure-compiler.appspot.com/">use the online Closure Compiler tool</a>.</li>
</ol>
<p>In my brief tests, a 28Kb JavaScript file was reduced to 15Kb (46% reduction) using &#8220;Simple&#8221; compression to remove white-space and comments. The reduction factor was almost identical to <a href="http://developer.yahoo.com/yui/compressor/">Yahoo&#8217;s YUI Compressor</a>. </p>
<p>&#8220;Advanced&#8221; compression with variable and function renaming reduced the file size to a little under 10Kb (64% reduction). The code continued to work correctly, although a couple JavaScript warnings were generated about uninitialized variables which were not evident in the uncompressed version.</p>
<p>The Closure Compiler is certainly worth trying if you want to speed up your web page&#8217;s download speeds. However, be careful to fully test the resulting JavaScript code.</p>
<h2>2. The Google Closure Library</h2>
<p>The <a href="http://code.google.com/closure/library/">Closure library</a> is an alternative to <a href="http://jquery.com/">jQuery</a> or the <a href="http://developer.yahoo.com/yui/">YUI Library</a>. The usual features are available, e.g. helper functions, Ajax, DOM manipulation, event handlers, CSS control, animation, effects, etc.</p>
<p>The code, comments, and <a href="http://closure-library.googlecode.com/svn/trunk/closure/goog/docs/index.html">documentation</a> are generally good, although I could not find information about browser support. Some of the examples are a little basic but I suspect they will be improved over time.</p>
<p><a href="http://www.sitepoint.com/blogs/2009/11/12/google-closure-how-not-to-write-javascript/">Kevin Yank&#8217;s recent article</a> features comments from Dmitry Baranovskiy who has expressed concerns about the quality of the code. They are valid criticisms and I doubt the Closure will win over many jQuery aficionados, but choice is always a good thing and the library is will improve now it&#8217;s in the public domain.</p>
<h2>3. Google Closure Templates</h2>
<p><a href="http://code.google.com/closure/templates/">Closure Templates</a> is a templating system for client-side JavaScript and server-side Java. It&#8217;s a system that allows you to add small language-neutral components that create a full user interface.</p>
<p>Documentation is sparse and there are few examples. Server-side Java developers may adopt the system, but I&#8217;m not convinced it will appeal to ASP.NET or PHP developers.</p>
<p>Will you try Google&#8217;s Closure Tools? Or has the choice of tools become so bewildering you&#8217;ll stick with what you know?</p>
<p>See also: <a href="http://www.sitepoint.com/blogs/2009/11/12/google-closure-how-not-to-write-javascript/">Google Closure: How not to write JavaScript</a></p>
<script src="http://ads.aws.sitepoint.com/adjs.php?region=136&amp;did=adz&amp;adtype=vertical" type="text/javascript"></script>

<p>Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/11/12/google-closure-how-not-to-write-javascript/' rel='bookmark' title='Permanent Link: Google Closure: How not to write JavaScript'>Google Closure: How not to write JavaScript</a> <small>What if Google released a JavaScript library that sucked, and...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/02/26/server-side-javascript/' rel='bookmark' title='Permanent Link: Will Server-Side JavaScript ever catch on?'>Will Server-Side JavaScript ever catch on?</a> <small>Server-side JavaScript appears to be a logical choice for web...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/03/10/server-side-javascript-will-be-as-common-as-php/' rel='bookmark' title='Permanent Link: Server-side JavaScript Will Be as Common as PHP'>Server-side JavaScript Will Be as Common as PHP</a> <small>Despite the fact that JavaScript has been typecast as the...</small></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sitepoint.com/blogs/2009/11/12/google-open-source-javascript-closure-library/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Google Closure: How not to write JavaScript</title>
		<link>http://www.sitepoint.com/blogs/2009/11/12/google-closure-how-not-to-write-javascript/</link>
		<comments>http://www.sitepoint.com/blogs/2009/11/12/google-closure-how-not-to-write-javascript/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 03:38:19 +0000</pubDate>
		<dc:creator>Kevin Yank</dc:creator>
				<category><![CDATA[JavaScript & CSS]]></category>
<category>development</category><category>Google</category><category>JavaScript</category>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=15780</guid>
		<description><![CDATA[What if Google released a JavaScript library that sucked, and no one noticed? JavaScript expert Dmitry Baranovskiy has peeked under the hood of Google’s new Closure Library, and he doesn’t like what he sees. Follow along as he points out a few of the library’s many failings, and why the Web deserves better from Google.


Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/11/12/google-open-source-javascript-closure-library/' rel='bookmark' title='Permanent Link: Google Releases its JavaScript Closure Tools'>Google Releases its JavaScript Closure Tools</a> <small>Do we need more JavaScript libraries and tools? Perhaps not,...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/09/03/javascript-session-variable-library/' rel='bookmark' title='Permanent Link: How to Write a Cookie-less Session Library for JavaScript'>How to Write a Cookie-less Session Library for JavaScript</a> <small>Craig provides the code for a stand-alone JavaScript session variable...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/10/21/javascript-object-instances/' rel='bookmark' title='Permanent Link: Fixing Object Instances in JavaScript'>Fixing Object Instances in JavaScript</a> <small>Even experienced coders can get caught out by object handling...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p>At the <a href="http://www.edgeoftheweb.org.au/">Edge of the Web</a> conference in Perth last week I got to catch up with <a href="http://dmitry.baranovskiy.com/">Dmitry Baranovskiy</a>, the creator of the <a href="http://raphaeljs.com/">Raphaël</a> and <a href="http://g.raphaeljs.com/">gRaphaël</a> JavaScript libraries. Perhaps the most important thing these libraries do is make sophisticated vector graphics possible in Internet Explorer, where JavaScript performance is relatively poor. Dmitry, therefore, has little patience for poorly-written JavaScript like the code he found in Google’s just-released <a href="http://googlecode.blogspot.com/2009/11/introducing-closure-tools.html">Closure Library</a>.</p>
<p>Having delivered a talk on <a href="http://www.slideshare.net/Dmitry.Baranovskiy/your-javascript-library">how to write your own JavaScript library</a> (<a href="http://passingcuriosity.com/2009/notes-on-dmitry-baranovskiys-talk-on-your-javascript-library/">detailed notes</a>) at the conference, Dmitry shared his thoughts on the new library over breakfast the next morning. “Just what the world needs—another sucky JavaScript library,” he said. When I asked him what made it ‘sucky’, he elaborated. “It’s a JavaScript library written by Java developers who clearly don’t <em>get</em> JavaScript.”</p>
<p>For the rest of the day, to anyone who would listen, Dmitry cited example after example of the terrible code he had found when he went digging through Closure. His biggest fear, he told me, was that people would switch from truly excellent JavaScript libraries like <a href="http://jquery.com/">jQuery</a> to Closure on the strength of the Google name.</p>
<p>“I’ll make you a deal,” I told him. “Send me some examples of this terrible code and I’ll publish it on SitePoint.”</p>
<h2>The Slow Loop</h2>
<p>From <a href="http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/array/array.js?r=2">array.js</a>, line 63:</p>
<pre><code class="javascript">for (var i = fromIndex; i &lt; arr.length; i++) {</code></pre>
<p>This <code>for</code> loop looks up the <code>.length</code> property of the array (<code>arr</code>) each time through the loop. Simply by setting a variable to store this number at the start of the loop, you can make the loop run much faster:</p>
<pre><code class="javascript">for (var i = fromIndex, ii = arr.length; i &lt; ii; i++) {</code></pre>
<p>Google’s developers seem to have figured this trick out later on in the same file. From <a href="http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/array/array.js?r=2">array.js</a>, line 153:</p>
<pre><code class="javascript">var l = arr.length;  // must be fixed during loop... see docs
⋮
for (var i = l - 1; i >= 0; --i) {</code></pre>
<p>This loop is better in that it avoids a property lookup each time through the loop, but this particular <code>for</code> loop is so simple that it could be further simplified into a <code>while</code> loop, which will run much faster again:</p>
<pre><code class="javascript">var i = arr.length;
⋮
while (i--) {</code></pre>
<p>But not all of Closure Library’s performance woes are due to poorly optimized loops. From <a href="http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/dom/dom.js?r=2">dom.js</a>, line 797:</p>
<pre><code class="javascript">switch (node.tagName) {
  case goog.dom.TagName.APPLET:
  case goog.dom.TagName.AREA:
  case goog.dom.TagName.BR:
  case goog.dom.TagName.COL:
  case goog.dom.TagName.FRAME:
  case goog.dom.TagName.HR:
  case goog.dom.TagName.IMG:
  case goog.dom.TagName.INPUT:
  case goog.dom.TagName.IFRAME:
  case goog.dom.TagName.ISINDEX:
  case goog.dom.TagName.LINK:
  case goog.dom.TagName.NOFRAMES:
  case goog.dom.TagName.NOSCRIPT:
  case goog.dom.TagName.META:
  case goog.dom.TagName.OBJECT:
  case goog.dom.TagName.PARAM:
  case goog.dom.TagName.SCRIPT:
  case goog.dom.TagName.STYLE:
    return false;
}
return true;</code></pre>
<p>This kind of code is actually pretty common in Java, and will perform just fine there. In JavaScript, however, this <code>switch</code> statement will perform like a dog each and every time a developer checks if a particular HTML element is allowed to have children.</p>
<p>Experienced JavaScript developers know that it’s much quicker to create an object to encapsulate this logic:</p>
<pre><code class="javascript">var takesChildren = {}
takesChildren[goog.dom.TagName.APPLET] = 1;
takesChildren[goog.dom.TagName.AREA] = 1;
⋮</code></pre>
<p>With that object set up, the function to check if a tag accepts children can run much quicker:</p>
<pre><code class="javascript">return !takesChildren[node.tagName];</code></pre>
<p>This code can be further bulletproofed against outside interference using <code>hasOwnProperty</code> (see below for a full explanation of this).</p>
<pre><code class="javascript">return !takesChildren.hasOwnProperty(node.tagName);</code></pre>
<p>If there’s one thing we expect from Google it’s a focus on performance. Heck, Google released its own browser, Google Chrome, primarily to take JavaScript performance to the next level!</p>
<p>Seeing code like this, one has to wonder if Google could have achieved the same thing by teaching its engineers to write better JavaScript code.</p>
<h2>Six Months in a Leaky Boat</h2>
<p>It would be unfair to suggest that Google has <em>ignored</em> performance in building Closure. In fact, the library provides a generic method for caching the results of functions that run slowly, but which will always return the same result for a given set of arguments. From <a href="http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/memoize/memoize.js?r=2">memoize.js</a>, line 39:</p>
<pre><code class="javascript">goog.memoize = function(f, opt_serializer) {
  var functionHash = goog.getHashCode(f);
  var serializer = opt_serializer || goog.memoize.simpleSerializer;
  
  return function() {
    // Maps the serialized list of args to the corresponding return value.
    var cache = this[goog.memoize.CACHE_PROPERTY_];
    if (!cache) {
      cache = this[goog.memoize.CACHE_PROPERTY_] = {};
    }
    var key = serializer(functionHash, arguments);
    if (!(key in cache)) {
      cache[key] = f.apply(this, arguments);
    }
    return cache[key];
  };
};</code></pre>
<p>This is a clever performance trick employed in a number of major JavaScript libraries; the problem is, Google has not provided any means of limiting the size of the cache! This is fine if a cached function is only ever called with a small collection of different arguments, but this is a dangerous assumption to make in general.</p>
<div id="adz" class="vertical"></div><p>Used to cache a function’s results based on, say, the coordinates of the mouse pointer, this code’s memory footprint will rapidly grow out of control, and slow the browser to a crawl.</p>
<p>In Dmitry’s words, “I’m not sure what this pattern is called in Java, but in JavaScript it’s called a ‘memory leak’.”</p>
<h2>Code in a Vacuum</h2>
<p>In his talk on building JavaScript libraries, Dmitry compared JavaScript’s global scope to a public toilet. “You can’t avoid going in there,” he said. “But try to limit your contact with surfaces when you do.”</p>
<p>For a general-purpose JavaScript library to be reliable, it must not only avoid interfering with any other JavaScript code that might be running alongside it, but it must also protect itself from other scripts that aren’t so polite. </p>
<p>From <a href="http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/object/object.js?r=2">object.js</a>, line 31:</p>
<pre><code class="javascript">goog.object.forEach = function(obj, f, opt_obj) {
  for (var key in obj) {
    f.call(opt_obj, obj[key], key, obj);
  }
};</code></pre>
<p><code>for</code>-<code>in</code> loops like this one are inherently dangerous in JavaScript libraries, because you never know what other JavaScript code might be running in the page, and what it might have added to JavaScript’s standard <code>Object.prototype</code>.</p>
<p><code>Object.prototype</code> is the JavaScript object that contains the properties shared by all JavaScript objects. Add a new function to <code>Object.prototype</code>, and every JavaScript object running in the page will have that function added to it—even if it was created beforehand! Early JavaScript libraries like <a href="http://www.prototypejs.org/">Prototype</a> made a big deal of adding all sorts of convenience features to <code>Object.prototype</code>.</p>
<p>Unfortunately, unlike the built-in properties supplied by <code>Object.prototype</code>, custom properties added to <code>Object.prototype</code> will show up as an object property in any <code>for</code>-<code>in</code> loop in the page.</p>
<p>In short, Closure Library cannot coexist with any JavaScript code that adds features to <code>Object.prototype</code>.</p>
<p>Google could have made its code more robust by using <code>hasOwnProperty</code> to check each item in the <code>for</code>-<code>in</code> loop to be sure it belongs to the object itself:</p>
<pre><code class="javascript">goog.object.forEach = function(obj, f, opt_obj) {
  for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
      f.call(opt_obj, obj[key], key, obj);
    }
  }
};</code></pre>
<p>Here’s another especially fragile bit of Closure Library. From <a href="http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/base.js?r=2">base.js</a>, line 677:</p>
<pre><code class="javascript">goog.isDef = function(val) {
 return val !== undefined;
};</code></pre>
<p>This function checks if a particular variable has a value defined. Or it does, unless a 3rd party script sets the global <code>undefined</code> variable to something else. This single line of code anywhere in the page will bring Closure Library crashing down:</p>
<pre><code class="javascript">var undefined = 5;</code></pre>
<p>Relying on the global <code>undefined</code> variable is another rookie mistake for JavaScript library authors.</p>
<p>You might think that anyone who assigns a value to <code>undefined</code> deserves what they get, but the fix in this case is trivial: simply declare a local <code>undefined</code> variable for use within the function!</p>
<pre><code class="javascript">goog.isDef = function(val) {
  var undefined;
  return val !== undefined;
};</code></pre>
<h2>Typical Confusion</h2>
<p>One of the most confusing aspects of JavaScript for developers coming from other languages is its system of data types. Closure Library contains plenty of bloopers that further reveal that its authors lack extensive experience with the finer points of JavaScript.</p>
<p>From <a href="http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/string/string.js?r=2">string.js</a>, line 97:</p>
<pre><code class="javascript">// We cast to String in case an argument is a Function. …
var replacement = String(arguments[i]).replace(…);</code></pre>
<p>This code converts <code>arguments[i]</code> to a string object using the <code>String</code> conversion function. This is possibly the slowest way to perform such a conversion, although it would be the most obvious to many developers coming from other languages.</p>
<p>Much quicker is to add an empty string (<code>""</code>) to the value you wish to convert:</p>
<pre><code class="javascript">var replacement = (arguments[i] + "").replace(…);</code></pre>
<p>Here’s some more string-related type confusion. From <a href="http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/base.js?r=2">base.js</a>, line 742:</p>
<pre><code class="javascript">goog.isString = function(val) {
  return typeof val == 'string';
};</code></pre>
<p>JavaScript actually represents text strings in two different ways—as primitive string values, and as string objects:</p>
<pre><code class="javascript">var a = "I am a string!";
alert(typeof a); // Will output "string"
var b = new String("I am also a string!");
alert(typeof b); // Will output "object"</code></pre>
<p>Most of the time strings are efficiently represented as primitive values (<code>a</code> above), but to call any of the built-in methods on a string (e.g. <code>toLowerCase</code>) it must first be converted to a string object (<code>b</code> above). JavaScript converts strings back and forth between these two representations automatically as needed. This feature is called “autoboxing”, and appears in many other languages.</p>
<p>Unfortunately for Google’s Java-savvy developers, Java only ever represents strings as objects. That’s my best guess for why Closure Library overlooks the second type of string in JavaScript:</p>
<pre><code class="javascript">var b = new String("I am also a string!");
alert(goog.isString(b)); // Will output FALSE</code></pre>
<p>Here’s another example of Java-inspired type confusion. From <a href="http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/color/color.js?r=2">color.js</a>, line 633:</p>
<pre><code class="javascript">return [
  Math.round(factor * rgb1[0] + (1.0 - factor) * rgb2[0]),
  Math.round(factor * rgb1[1] + (1.0 - factor) * rgb2[1]),
  Math.round(factor * rgb1[2] + (1.0 - factor) * rgb2[2])
];</code></pre>
<p>Those <code>1.0</code>s are telling. Languages like Java represent integers (<code>1</code>) differently from floating point numbers (<code>1.0</code>). In JavaScript, however, numbers are numbers. <code>(1 - factor)</code> would have worked just as well.</p>
<p>Yet another example of JavaScript code with a whiff of Java about it can be seen in <a href="http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/fx/fx.js?r=2">fx.js</a>, line 465:</p>
<pre><code class="javascript">goog.fx.Animation.prototype.updateCoords_ = function(t) {
  this.coords = new Array(this.startPoint.length);
  for (var i = 0; i < this.startPoint.length; i++) {
    this.coords[i] = (this.endPoint[i] - this.startPoint[i]) * t +
        this.startPoint[i];
  }
};</code></code></pre>
<p>See how they create an array on the second line?</p>
<pre><code class="javascript">this.coords = new Array(this.startPoint.length);</code></pre>
<p>Although it is necessary in Java, it is entirely pointless to specify the length of an array ahead of time in JavaScript. It would make just as much sense to create a new variable for storing numbers with <code>var i = new Number(0);</code> instead of <code>var i = 0;</code>.</p>
<p>Rather, you can just set up an empty array and allow it to grow as you fill it in. Not only is the code shorter, but it runs faster too:</p>
<pre><code class="javascript">this.coords = [];</code></pre>
<p>Oh, and did you spot yet another inefficient <code>for</code> loop in that function?</p>
<h2>API Design</h2>
<p>If all the low-level code quality nitpicks above don’t convince you, I defy you to try using some of the APIs Google has built into Closure Library.</p>
<p>Closure’s <a href="http://closure-library.googlecode.com/svn/trunk/closure/goog/docs/closure_goog_graphics_graphics.js.html">graphics classes</a>, for example, are modeled around the <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html">HTML5 canvas API</a>, which is about what you’d expect from a JavaScript API designed by an HTML standards body. In short, it’s repetitive, inefficient, and downright unpleasant to code against.</p>
<p>As the author of <a href="http://raphaeljs.com/">Raphaël</a> and <a href="http://g.raphaeljs.com/">gRaphaël</a>, Dmitry has plenty of experience designing usable JavaScript APIs. If you want to grasp the full horror of the canvas API (and by extension, Closure’s graphics API), check out the audio and slides from <a href="http://www.webdirections.org/resources/dmitry-baranovskiy-canvas/">Dmitry’s Web Directions South 2009 talk</a> on the subject.</p>
<h2>Google’s Responsibility to Code Quality</h2>
<p>By this point I hope you’re convinced that Closure Library is not a shining example of the best JavaScript code the Web has to offer. If you’re looking for that, might I recommend more established players like <a href="http://jquery.com/">jQuery</a>?</p>
<p>But you might be thinking “So what? Google can release crappy code if it wants to—nobody’s forcing <em>you</em> to use it.” And if this were a personal project released by some googler on the side under his or her own name, I’d agree with you, but Google has endorsed Closure Library by stamping it with the Google brand.</p>
<p>The truth is, developers <em>will</em> switch to Closure because it bears the Google name, and that’s the real tragedy here. Like it or not, Google is a trusted name in the development community, and it has a responsibility to that community to do a little homework before deciding a library like Closure deserves public exposure.</p>
<script src="http://ads.aws.sitepoint.com/adjs.php?region=136&amp;did=adz&amp;adtype=vertical" type="text/javascript"></script>

<p>Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/11/12/google-open-source-javascript-closure-library/' rel='bookmark' title='Permanent Link: Google Releases its JavaScript Closure Tools'>Google Releases its JavaScript Closure Tools</a> <small>Do we need more JavaScript libraries and tools? Perhaps not,...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/09/03/javascript-session-variable-library/' rel='bookmark' title='Permanent Link: How to Write a Cookie-less Session Library for JavaScript'>How to Write a Cookie-less Session Library for JavaScript</a> <small>Craig provides the code for a stand-alone JavaScript session variable...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/10/21/javascript-object-instances/' rel='bookmark' title='Permanent Link: Fixing Object Instances in JavaScript'>Fixing Object Instances in JavaScript</a> <small>Even experienced coders can get caught out by object handling...</small></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sitepoint.com/blogs/2009/11/12/google-closure-how-not-to-write-javascript/feed/</wfw:commentRss>
		<slash:comments>113</slash:comments>
		</item>
		<item>
		<title>Video: CSS Frameworks – Make the Right Choice</title>
		<link>http://www.sitepoint.com/blogs/2009/11/10/video-css-frameworks-%e2%80%93-make-the-right-choice/</link>
		<comments>http://www.sitepoint.com/blogs/2009/11/10/video-css-frameworks-%e2%80%93-make-the-right-choice/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 08:11:00 +0000</pubDate>
		<dc:creator>Kevin Yank</dc:creator>
				<category><![CDATA[JavaScript & CSS]]></category>
<category>CSS</category><category>video</category>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=15746</guid>
		<description><![CDATA[Choose the right framework and you’ll save yourself a lot of work. Choose the wrong one, and you’ll find your projects weighed down by restrictive assumptions and masses of code that you don’t understand. When it comes to CSS frameworks, making the right choice is everything.


Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/02/17/whats-so-bad-about-css-frameworks/' rel='bookmark' title='Permanent Link: What&#8217;s So Bad About CSS Frameworks?'>What&#8217;s So Bad About CSS Frameworks?</a> <small>Standards-aware web developers often feel conflicted about using CSS frameworks....</small></li><li><a href='http://www.sitepoint.com/blogs/2009/10/06/css-frameworks-semantic-class-names/' rel='bookmark' title='Permanent Link: CSS Frameworks and Semantic Class Names'>CSS Frameworks and Semantic Class Names</a> <small>CSS frameworks often contain crufty, non-semantic code. Does it have...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/10/09/win-signed-sitepoint-books-at-web-directions-south/' rel='bookmark' title='Permanent Link: Win Signed SitePoint Books at Web Directions South'>Win Signed SitePoint Books at Web Directions South</a> <small>If you're at the Web Directions South conference in Sydney...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p>In the past couple of months, I have had the great pleasure of presenting a talk entitled “CSS Frameworks: Make the Right Choice” at both of Australia’s premier web design conferences: <a href="http://south09.webdirections.org/">Web Directions South 2009</a> and <a href="http://www.edgeoftheweb.org.au/">Edge of the Web 2009</a>.</p>
<p>Of course, even the most dedicated SitePoint fan could find it hard to justify a trip to Australia to see me speak; thankfully, the folks at Web Directions were kind enough to share the audio recorded at the event under a Creative Commons license that enables me to share it with you in a richer format.</p>
<p>I am delighted, therefore, to present this video re-creation of the talk including my animated slides, a screencast video demo, and the audio recorded live at Web Directions South 2009. Be sure to visit <a href="http://www.webdirections.org/">the Web Directions site</a> for the accumulated audio and slides from the entire conference series!</p>
<p><object width="640" height="480"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7530607&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7530607&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="480"></embed></object>
<p><a href="http://vimeo.com/7530607">CSS Frameworks: Make the Right Choice (WDS09)</a> from <a href="http://vimeo.com/sitepoint">SitePoint Staff</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<div id="adz" class="vertical"></div><blockquote>
<p>SitePoint CTO Kevin Yank presented this talk at Web Directions South 2009 in Sydney, Australia on Friday, October 9th, 2009.</p>
<p>With the proliferation and widespread adoption of JavaScript frameworks, smart developers have wondered if a similar approach to smoothing over the rough spots of CSS might work. Thus, CSS frameworks like Blueprint, YUI Library CSS Tools, Boilerplate, and many others were born. In this session, we will survey the landscape of CSS frameworks and consider how each of them deals with the unique challenge of creating generalised, reusable CSS styles.</p>
<p>There are a number of different approaches, and some are better than others. Choose the right framework and you’ll save yourself a lot of work. Choose the wrong one, and you’ll find your projects weighed down by restrictive assumptions and masses of code that you don’t understand. When it comes to CSS frameworks, making the right choice is everything. By the end of this session, you might just decide that the right framework for you is no framework at all.</p>
</blockquote>
<script src="http://ads.aws.sitepoint.com/adjs.php?region=136&amp;did=adz&amp;adtype=vertical" type="text/javascript"></script>

<p>Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/02/17/whats-so-bad-about-css-frameworks/' rel='bookmark' title='Permanent Link: What&#8217;s So Bad About CSS Frameworks?'>What&#8217;s So Bad About CSS Frameworks?</a> <small>Standards-aware web developers often feel conflicted about using CSS frameworks....</small></li><li><a href='http://www.sitepoint.com/blogs/2009/10/06/css-frameworks-semantic-class-names/' rel='bookmark' title='Permanent Link: CSS Frameworks and Semantic Class Names'>CSS Frameworks and Semantic Class Names</a> <small>CSS frameworks often contain crufty, non-semantic code. Does it have...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/10/09/win-signed-sitepoint-books-at-web-directions-south/' rel='bookmark' title='Permanent Link: Win Signed SitePoint Books at Web Directions South'>Win Signed SitePoint Books at Web Directions South</a> <small>If you're at the Web Directions South conference in Sydney...</small></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sitepoint.com/blogs/2009/11/10/video-css-frameworks-%e2%80%93-make-the-right-choice/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Are You Violating the Eolas Ajax Patent?</title>
		<link>http://www.sitepoint.com/blogs/2009/11/05/violating-eolas-ajax-patent/</link>
		<comments>http://www.sitepoint.com/blogs/2009/11/05/violating-eolas-ajax-patent/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 09:27:51 +0000</pubDate>
		<dc:creator>Craig Buckler</dc:creator>
				<category><![CDATA[Web Tech]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[eolas]]></category>
		<category><![CDATA[patent]]></category>
<category>ajax</category><category>eolas</category><category>patent</category>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=15616</guid>
		<description><![CDATA[It's true: Eolas has an Ajax patent and is filing infringement lawsuits against a long list of US corporations. Should we return to static web sites to avoid a visit from their lawyers?


Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2008/12/11/did-google-just-patent-gears-why/' rel='bookmark' title='Permanent Link: Did Google Just Patent Gears? Why?'>Did Google Just Patent Gears? Why?</a> <small>Gears is the Google-led open source browser plugin that lets...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/10/19/csiro-185-million-wifi-patent/' rel='bookmark' title='Permanent Link: CSIRO Receives $185 Million for Wi-Fi Patent'>CSIRO Receives $185 Million for Wi-Fi Patent</a> <small>It's official: wi-fi is a patented technology. Several large companies...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/05/31/why-browser-sniffing-stinks/' rel='bookmark' title='Permanent Link: 5 Reasons Why Browser Sniffing Stinks'>5 Reasons Why Browser Sniffing Stinks</a> <small>Opera's recent problem with version 10's user agent has brought...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogs.sitepointstatic.com/images/tech/190-eolas-ajax-patent.jpg" width="250" height="250" alt="Eolas AJAX patent" class="imgright" />Is your website using Ajax? Are you calling a server process from a client-side application? If so, prepare yourself for a visit from Eolas&#8217; lawyers. The company filed a US patent in 2002 and they are actively progressing infringement cases against a long list of companies including Adobe, Amazon, Apple, Blockbuster, Citigroup, eBay, Pepsi, Go Daddy, Google, JC Penney, JP Morgan Chase, Office Depot, Perot Systems, Playboy Enterprises, Staples, Sun Microsystems, Texas Instruments, Yahoo, and YouTube.</p>
<h2>A Brief History of Ajax</h2>
<p>Ajax is a conceptual technique. The technologies have been available for over 10 years, but Ajax adoption became widespread after <a href="http://www.adaptivepath.com/ideas/essays/archives/000385.php">Jesse James Garrett&#8217;s article in February 2005</a> which described the techniques and provided a great acronym: Asynchronous JavaScript and XML.</p>
<p>Despite its name, Ajax does not necessarily depend on asynchronous calls, JavaScript or XML. Today, Ajax is a useful term applied to any system that communicates with a back-end web server to update content without requiring a full web page refresh <em>(although many marketing departments confusingly refer to Ajax when describing any type of animation or interactivity!)</em></p>
<div id="adz" class="vertical"></div><p>Most Ajax systems utilize the XMLHttpRequest object which permits programmatic server communication. It was introduced by Microsoft in March 1999 when Internet Explorer 5.0 was released. The original implementation was an ActiveX object devised specifically for the Outlook Web Access system. Most browser vendors followed Microsoft&#8217;s lead and implemented XMLHttpRequest as a native browser object.</p>
<p>Many of the dynamic web applications we rely on today would not be possible without Ajax techniques.</p>
<h2>Does Eolas Have a Valid Ajax Patent?</h2>
<p>Eolas Technologies is the company that fought Microsoft over the use of embedded browser applets, such as Flash. Eolas won that case and were awarded over $500 million in 2003. For several years, IE had to show a ridiculous alert box whenever an embedded object was encountered in the HTML.</p>
<p>Eolas 7,599,985 is a continuation of the original patent and has the snappy title <em>&#8220;Distributed hypermedia method and system for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document&#8221;</em>. It was filed on 9 August 2002 and describes Ajax-like systems. Here&#8217;s an excerpt:</p>
<blockquote><p>
A system allowing user of a browser program on a computer connected to an open distributed hypermedia [web page] to access and execute an embedded programming object. The program object is embedded into a hypermedia document much like data objects.</p>
<p>The user may select the program object from the screen. Once selected the program executes on the user&#8217;s (client&#8217;s) computer or may execute on a remote server or additional remote computers in a distributed processing arrangement.</p>
<p>After launching the program object, the user is able to interact with the object as the invention provides for ongoing interprocess communication between the application object (program) and the browser program.</p>
<p>The present invention allows a user at a client computer connected to a network to locate, retrieve, and manipulate objects in an interactive way. The invention not only allows the user to use a hypermedia format to locate and retrieve program objects, but also allows the user to interact with an application program located at a remote computer.</p>
<p>Interprocess communication between the hypermedia browser and the embedded application program is ongoing after the program object has been launched. The use is able to use a vast amount of computing power beyond that which is contained in the user&#8217;s client computer.
</p></blockquote>
<p>To most developers, the Eolas claim is absurd:</p>
<ul>
<li>Ajax is a programming technique &#8212; not a technology.</li>
<li>Eolas did not define the name &#8216;Ajax&#8217; or provide technical implementation details.</li>
<li>Ajax technologies and techniques existed before the patent was filed. Microsoft&#8217;s first implementation of XMLHttpRequest was developed 40 months before the Eolas patent was filed, although it took several years for developers to realize its power. Prior to XMLHttpRequest, on-page server communication was still achieved using more rudimentary techniques such as IFrames or dynamic script injections.</li>
<li>Ajax has been adopted by millions of websites &#8212; can Eolas file lawsuits against them all?</li>
<li>The patent is vague and could be applied to a wide range of web page interactions.</li>
</ul>
<p>However, it has been ruled as valid by the US Patent Office on three separate occasions. If Eolas win their infringement case, there is nothing to stop them taking out a lawsuit against &hellip; <em>everyone</em>.</p>
<h2>Will Common Sense Prevail?</h2>
<p>Who knows what will happen once the lawyers become involved.</p>
<p>I&#8217;m no legal expert, but it appears that Eolas have filed a US patent &#8212; which does not <em>necessarily</em> apply worldwide. Could we see a situation where US companies hand their web development and hosting to offshore providers to avoid a lawsuit? If that&#8217;s the case, perhaps Eolas should consider their impact on the US economy?</p>
<p>Does Eolas have a valid Ajax patent? Is this another good reason to abolish software patents? Read the <a href="http://sev.prnewswire.com/banking-financial-services/20091006/DA8775006102009-1.html">Eolas Lawsuit press release</a> and decide for yourself.</p>
<script src="http://ads.aws.sitepoint.com/adjs.php?region=136&amp;did=adz&amp;adtype=vertical" type="text/javascript"></script>

<p>Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2008/12/11/did-google-just-patent-gears-why/' rel='bookmark' title='Permanent Link: Did Google Just Patent Gears? Why?'>Did Google Just Patent Gears? Why?</a> <small>Gears is the Google-led open source browser plugin that lets...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/10/19/csiro-185-million-wifi-patent/' rel='bookmark' title='Permanent Link: CSIRO Receives $185 Million for Wi-Fi Patent'>CSIRO Receives $185 Million for Wi-Fi Patent</a> <small>It's official: wi-fi is a patented technology. Several large companies...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/05/31/why-browser-sniffing-stinks/' rel='bookmark' title='Permanent Link: 5 Reasons Why Browser Sniffing Stinks'>5 Reasons Why Browser Sniffing Stinks</a> <small>Opera's recent problem with version 10's user agent has brought...</small></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sitepoint.com/blogs/2009/11/05/violating-eolas-ajax-patent/feed/</wfw:commentRss>
		<slash:comments>58</slash:comments>
		</item>
		<item>
		<title>Installing PHP on Windows Just Got Easier</title>
		<link>http://www.sitepoint.com/blogs/2009/11/05/php-windows-web-platform-installer/</link>
		<comments>http://www.sitepoint.com/blogs/2009/11/05/php-windows-web-platform-installer/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 04:38:14 +0000</pubDate>
		<dc:creator>Andrew Gardner</dc:creator>
				<category><![CDATA[Web Tech]]></category>
<category>iis</category><category>microsoft</category><category>mysql</category><category>php</category><category>Web PI</category><category>windows</category>
		<guid isPermaLink="false">http://www.sitepoint.com/blogs/?p=15621</guid>
		<description><![CDATA[Have you ever felt frustrated when setting up a PHP/MySQL development environment on Windows? A new all-in-one installer makes the process easier than ever. Perhaps surprisingly, the package comes from Microsoft.


Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/04/13/how-to-install-php-on-windows/' rel='bookmark' title='Permanent Link: How to Install PHP on Windows'>How to Install PHP on Windows</a> <small>In his final installation tutorial, Craig provides a step-by-step guide...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/07/07/install-php53-windows/' rel='bookmark' title='Permanent Link: How to Install PHP 5.3 on Windows'>How to Install PHP 5.3 on Windows</a> <small>PHP 5.3 is the most significant update since version 5.0....</small></li><li><a href='http://www.sitepoint.com/blogs/2009/04/21/free-php-webinar/' rel='bookmark' title='Permanent Link: Free PHP Webinar: How to Increase Performance with Caching'>Free PHP Webinar: How to Increase Performance with Caching</a> <small>Zend are running a free webinar today, with a live...</small></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img src="http://articles.sitepoint.com/articleresources/2009-11-MS-web-platform-louis-simoneau/figures/wpi_feature.jpg" alt="Web Platform Installer" class="imgright"/>Have you ever felt frustrated when setting up a PHP/MySQL development environment on Windows? A new all-in-one installer makes the process easier than ever. Perhaps surprisingly, the package comes from Microsoft.</p>
<p>Our latest tutorial, <a href="http://articles.sitepoint.com/article/php-windows-web-platform-installer/"><em>The Easy Way to Install PHP on Windows</em></a> sees SitePoint’s own Louis Simoneau putting version 2 of Microsoft’s Web Platform Installer (Web PI) through its paces.</p>
<p>Louis will demonstrate how to install PHP with the Web Platform Installer, and along the way will show how conveniently this tool can pull in different open source software packages and install them for you.  You’ll learn, for example, how to grab MySQL, WordPress, and Drupal, and watch the Web PI install them all automatically.  And therein lies the beauty of the Web PI—you don’t have to dither around configuring stuff yourself.</p>
<p>Louis also gives us a heads up about some of the other cool features, such as the excellent SEO tool, which can analyze your site or application.  It’ll check for broken links and provide recommendations to improve the site’s search engine friendliness and overall performance.</p>
<div id="adz" class="horizontal"></div><p>The Web PI also has a caching extension for IIS, which improves web server performance and makes it a serious competitor to Apache for hosting PHP applications. Take a look and see what you think.</p>
<p>A huge thank you to Microsoft, who are our sponsors for the <a href="http://www.sitepoint.com/quiz/microsoft/php-windows-web-platform-installer/">multiple choice quiz</a> for this article—if you find the article interesting, be sure to check how closely you paid attention!</p>
<p><strong>Article:</strong> <a href="http://articles.sitepoint.com/article/php-windows-web-platform-installer/"><em>The Easy Way to Install PHP on Windows</em></a><br />
<strong>Quiz: </strong><a href="http://www.sitepoint.com/quiz/microsoft/php-windows-web-platform-installer/"><em>Web Platform Installer Quiz</em></a></p>
<script src="http://ads.aws.sitepoint.com/adjs.php?region=137&amp;did=adz&amp;adtype=horizontal" type="text/javascript"></script>

<p>Related posts:<ol><li><a href='http://www.sitepoint.com/blogs/2009/04/13/how-to-install-php-on-windows/' rel='bookmark' title='Permanent Link: How to Install PHP on Windows'>How to Install PHP on Windows</a> <small>In his final installation tutorial, Craig provides a step-by-step guide...</small></li><li><a href='http://www.sitepoint.com/blogs/2009/07/07/install-php53-windows/' rel='bookmark' title='Permanent Link: How to Install PHP 5.3 on Windows'>How to Install PHP 5.3 on Windows</a> <small>PHP 5.3 is the most significant update since version 5.0....</small></li><li><a href='http://www.sitepoint.com/blogs/2009/04/21/free-php-webinar/' rel='bookmark' title='Permanent Link: Free PHP Webinar: How to Increase Performance with Caching'>Free PHP Webinar: How to Increase Performance with Caching</a> <small>Zend are running a free webinar today, with a live...</small></li></ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.sitepoint.com/blogs/2009/11/05/php-windows-web-platform-installer/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 3.132 seconds -->
<!-- Cached page served by WP-Cache -->
