<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>unitstep.net &#187; google</title>
	<atom:link href="http://unitstep.net/blog/category/google/feed/" rel="self" type="application/rss+xml" />
	<link>http://unitstep.net</link>
	<description>the home of peter chng</description>
	<pubDate>Tue, 18 Nov 2008 02:09:57 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Properly setting Axis Ranges and Data Scaling using the Google Chart API</title>
		<link>http://unitstep.net/blog/2008/11/06/properly-setting-axis-ranges-and-data-scaling-using-the-google-chart-api/</link>
		<comments>http://unitstep.net/blog/2008/11/06/properly-setting-axis-ranges-and-data-scaling-using-the-google-chart-api/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 01:00:08 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
		
		<category><![CDATA[charts]]></category>

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

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

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

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

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

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

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

		<guid isPermaLink="false">http://unitstep.net/?p=531</guid>
		<description><![CDATA[
The Google Chart API is a great way to dynamically create chart and graph images for any non-static data you might want to display to your visitors, such as stats for a runner&#8217;s training log.  
Although you can use your own server-side solution for generating charts, using PHP&#8217;s GD Image Processing Library or even [...]]]></description>
			<content:encoded><![CDATA[<p class="image align-right"><a href="http://code.google.com/apis/chart/"><img src="http://unitstep.net/wordpress/wp-content/uploads/2008/11/google-chart-api.png" alt="" title="google-chart-api" /></a></p>
<p>The <a href="http://code.google.com/apis/chart/">Google Chart API</a> is a great way to dynamically create chart and graph images for any non-static data you might want to display to your visitors, such as <a href="http://runtrackr.uservoice.com/pages/general/suggestions/39633">stats for a runner&#8217;s training log</a>.  </p>
<p>Although you can use your own server-side solution for generating charts, using <a href="http://php.net/gd"><acronym class="uttInitialism" title="PHP: Hypertext Preprocessor">PHP</acronym>&#8217;s GD Image Processing Library</a> or even a fancy chart library like <a href="http://pchart.sourceforge.net/">pChart</a>, this can increase the drain on your server&#8217;s resources.  Client-side solutions that utilize <a href="http://www.filamentgroup.com/lab/creating_accessible_charts_using_canvas_and_jquery/">the <code>canvas</code> element and jQuery</a> or <a href="http://www.maani.us/xml_charts/">Flash</a> can be very nice and easy to use, but may slow down the browser if there are a lot of charts.</p>
<p>Google Charts offers a nice trade-off; by using their service you offload the processing and bandwidth and get back a simple <a href="http://www.w3.org/Graphics/PNG/" class="ubernym uttInitialism"><acronym class="uttInitialism" title="Portable Network Graphics">PNG</acronym></a> image, but you must learn to use the API.  Additionally, there&#8217;s also the risk that the service may throttle you, even if there&#8217;s no current usage limit.</p>
<h3>Problems specifying Axis Ranges - Data points are not changed!</h3>
<p>The API for Google Charts essentially consists of passing different query string parameters and their values and getting back a <a href="http://www.w3.org/Graphics/PNG/" class="ubernym uttInitialism"><acronym class="uttInitialism" title="Portable Network Graphics">PNG</acronym></a>-format image.  As a result of this, passing in parameters is a bit quirky, and information in the API guide is a bit sketchy in this respect.</p>
<p>One such example with quirky behaviour is properly setting the <a href="http://code.google.com/apis/chart/labels.html#axis_range">axis&#8217; ranges</a>, or scales, of a chart.  By default, all charts are set up on a 100&#215;100 grid.  It would seem that by changing the axis range, these values will be adjusted accordingly, affecting the position of any data points you&#8217;ve plotted.</p>
<p>But this isn&#8217;t the case; instead, changing the axis range with the <code>chxr</code> parameter <strong>only</strong> adjusts the position of any <em>axis labels</em> you might have, and <strong>does not</strong> affect the position of data points. Instead, data points will continue to be plotted as if they were on a 100&#215;100 grid.</p>
<h3>Illustrating the problem</h3>
<p>The following examples illustrate this point.  We plot a set of points, <code>{(10,40),(30,60),(50,70),(70,20),(90,40)}</code> using an <a href="http://code.google.com/apis/chart/types.html#line_charts">X-Y line chart</a>.  The first chart illustrates the points on the default grid of 100&#215;100. Because axis labels/positions have not been specified, the chart has been filled with default axis labels, which are values in the respective positions.</p>
<p class="image"><a href="http://chart.apis.google.com/chart?chs=500x500&amp;cht=lxy&amp;chd=t:10,30,50,70,90%7C40,60,70,20,40&amp;chxt=x,y&amp;chg=10,10&amp;chm=o,0000FF,0,-1,5,0"><img src="http://chart.apis.google.com/chart?chs=200x200&amp;cht=lxy&amp;chd=t:10,30,50,70,90%7C40,60,70,20,40&amp;chxt=x,y&amp;chg=10,10&amp;chm=o,0000FF,0,-1,5,0" alt="chart on default 100x100 grid" /></a></p>
<pre><code>URL: http://chart.apis.google.com/chart?chs=200x200&amp;cht=lxy&amp;chd=t:10,30,50,70,90|40,60,70,20,40&amp;chxt=x,y&amp;chg=10,10&amp;chm=o,0000FF,0,-1,5,0</code></pre>
<p>In this case, the points are plotted in the correct positions.  (Points have been highlighted with <a href="http://code.google.com/apis/chart/styles.html#shape_markers">markers</a> for clarity and grid lines spaced 10 units apart)</p>
<p>However, if we simply change the axis ranges by specifying the <code>chxr</code> parameter to be <code>chxr=0,0,200|1,0,200</code>, the axis labels change, but the data points are not properly scaled:</p>
<p class="image"><a href="http://chart.apis.google.com/chart?chs=500x500&amp;cht=lxy&amp;chd=t:10,30,50,70,90%7C40,60,70,20,40&amp;chxt=x,y&amp;chg=10,10&amp;chm=o,0000FF,0,-1,5,0&amp;chxr=0,0,200%7C1,0,200"><img src="http://chart.apis.google.com/chart?chs=200x200&amp;cht=lxy&amp;chd=t:10,30,50,70,90%7C40,60,70,20,40&amp;chxt=x,y&amp;chg=10,10&amp;chm=o,0000FF,0,-1,5,0&amp;chxr=0,0,200%7C1,0,200" alt="chart without data scaling"></a></p>
<pre><code>URL: http://chart.apis.google.com/chart?chs=200x200&amp;cht=lxy&amp;chd=t:10,30,50,70,90|40,60,70,20,40&amp;chxt=x,y&amp;chg=10,10&amp;chm=o,0000FF,0,-1,5,0&amp;chxr=0,0,200|1,0,200</code></pre>
<p>This is further evidenced by the grid line spacing; though it&#8217;s still set to 10 units, the lines would appear to be 20 units apart in the above graph.  This means that internally, the chart is still using a 100&#215;100 grid.  So, how do we fix that?</p>
<h3>Plotting data properly with axis ranges</h3>
<p>The <a href="http://code.google.com/apis/chart/labels.html#multiple_axes_labels">documentation</a> would benefit from being clearer in this respect.  </p>
<p>In order to properly scale data, <strong>you must use <a href="http://code.google.com/apis/chart/formats.html#data_scaling">data scaling</a> whenever you adjust the axis ranges to non-default values.</strong></p>
<p>For the above example, since we have set both axis ranges to 0-200, we must set the data scale of both data sets (X and Y values) to 0-200 as well.  We accomplish this by setting the <code>chds</code> like so:</p>
<pre><code>chds=0,200,0,200</code></pre>
<p>The resultant graph is now as expected for the given data points:</p>
<p class="image"><a href="http://chart.apis.google.com/chart?chs=500x500&amp;cht=lxy&amp;chd=t:10,30,50,70,90%7C40,60,70,20,40&amp;chxt=x,y&amp;chg=10,10&amp;chm=o,0000FF,0,-1,5,0&amp;chxr=0,0,200%7C1,0,200&amp;chds=0,200,0,200"><img src="http://chart.apis.google.com/chart?chs=200x200&amp;cht=lxy&amp;chd=t:10,30,50,70,90%7C40,60,70,20,40&amp;chxt=x,y&amp;chg=10,10&amp;chm=o,0000FF,0,-1,5,0&amp;chxr=0,0,200%7C1,0,200&amp;chds=0,200,0,200"></a></p>
<pre><code>URL: http://chart.apis.google.com/chart?chs=200x200&#038;cht=lxy&#038;chd=t:10,30,50,70,90|40,60,70,20,40&#038;chxt=x,y&#038;chg=10,10&#038;chm=o,0000FF,0,-1,5,0&#038;chxr=0,0,200|1,0,200&#038;chds=0,200,0,200</code</pre>
<p>(Curiously, grid lines are still placed 10 units apart according to an &#8220;internal&#8221; 100&#215;100 grid.)</p>
<p>I couldn&#8217;t find anything clear in the documentation about this, but instead found some <a href="http://groups.google.com/group/google-chart-api/browse_thread/thread/4c3783b3a0dabe8/02842878d286f0c8?lnk=gst&#038;q=axis+range#02842878d286f0c8">helpful threads</a> on the Google Groups for their Charts API that aided me in figuring out exactly how this all works.</p>
<h3>Clear as mud?</h3>
<p>There are still some things I&#8217;m not clear about, such as what <em><a href="http://code.google.com/apis/chart/formats.html#data_scaling">data scaling</a></em> is actually supposed to mean, and why simply changing axis ranges does not properly scale data in the first place.  Additionally, the <a href="http://code.google.com/apis/chart/formats.html">data formats page</a> specifies numerous other ways of specifying data in more compact, encoded forms, but these formats do not seem to support data scaling.  Does that mean these formats are confined to a 100&#215;100 grid?  </p>
<p>I haven&#8217;t had the time to fully experiment with the API, but hopefully will have time to learn.  In the meantime, I hope you found this information useful.  If you have some information I haven&#8217;t presented here, please don&#8217;t hesitate to comment below!</p>
<hr/>Copyright &copy; 2008 <strong><a href="http://unitstep.net">unitstep.net</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact <strong><a href="mailto:webmaster@unitstep.net">webmaster@unitstep.net</a></strong> for more information.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://unitstep.net/blog/2008/11/06/properly-setting-axis-ranges-and-data-scaling-using-the-google-chart-api/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google changes iGoogle, making gadget development more profitable</title>
		<link>http://unitstep.net/blog/2008/10/20/google-changes-igoogle-making-gadget-development-more-profitable/</link>
		<comments>http://unitstep.net/blog/2008/10/20/google-changes-igoogle-making-gadget-development-more-profitable/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 02:48:45 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
		
		<category><![CDATA[advertising]]></category>

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

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

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

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

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

		<category><![CDATA[user interface]]></category>

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

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

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

		<guid isPermaLink="false">http://unitstep.net/?p=475</guid>
		<description><![CDATA[
On Thursday, Google rolled out an update to its personalized home page service, iGoogle.  Among other UI updates, the major new features were increased flexibility in what &#8220;gadgets&#8221;, the personalized &#8220;chunks&#8221; that make up an iGoogle start page, can do.  This, in turn, allows developers much more freedom with what they can provide [...]]]></description>
			<content:encoded><![CDATA[<p class="image align-right"><img src="http://unitstep.net/wordpress/wp-content/uploads/2008/10/igoogle.jpg" alt="" title="igoogle" width="167" height="55" class="alignnone size-full wp-image-481" /></p>
<p>On Thursday, Google <a href="http://googleblog.blogspot.com/2008/10/whats-new-with-igoogle.html">rolled out an update</a> to its personalized home page service, <a href="http://www.google.com/ig">iGoogle</a>.  Among other UI updates, the major new features were increased flexibility in what &#8220;gadgets&#8221;, the personalized &#8220;chunks&#8221; that make up an iGoogle start page, can do.  This, in turn, allows developers much more freedom with what they can provide to the user through an iGoogle gadget.</p>
<p>Previously, gadgets could only occupy a small box that took up only a third of the screen.  While this was okay for reading headlines or perhaps glancing at stock prices, it limited the usefulness of gadgets and the information that could be provided.  For more detail, users would often have to click a link in the gadget that would take them away from iGoogle.  While this is perhaps the proper use of a &#8220;start page&#8221;, Google may now see things differently.</p>
<h3>Life is a great big canvas</h3>
<p>Gadgets now offer a near full-size &#8220;canvas&#8221; mode, where the gadget is expanded to take up most of the screen.  This allows more information to be displayed and makes the iGoogle page less of a start page and more of an aggregator - like an <acronym class="uttInitialism" title="Really Simple Syndication">RSS</acronym> reader, but with much more.</p>
<p>Speaking of <acronym class="uttInitialism" title="Really Simple Syndication">RSS</acronym> readers, any <acronym class="uttInitialism" title="Really Simple Syndication">RSS</acronym> feeds on iGoogle can now be expanded into a full-feed view, using a layout/interface not unlike that of Google Reader, their specialized <acronym class="uttInitialism" title="Really Simple Syndication">RSS</acronym> reader product.  All of these enhancements are designed to help you get the information you want, <strong>without</strong> having to leave iGoogle.  </p>
<p>Some good examples of gadgets taking full advantage of the new functionality offered by the new iGoogle include the <a href="http://www.gasbuddy.com/">GasBuddy</a> gadget, which display a small labeled map of local gas prices in the &#8220;mini&#8221; mode, which expands to a fully-searchable map complete with a clickable legend in the full-screen canvas mode.</p>
<p>Google&#8217;s own products, such as the Gmail and Google Calendar gadgets, have also been updated to nicely take advantage of the new abilities.  In canvas mode, each gadget expands to fill the screen with pretty much the same UI as their respective web applications.  This makes accessing your various Google Account services easier and decreases load times.</p>
<h3>Content and Money</h3>
<p>Others include the Wall Street Journal&#8217;s gadget, which in canvas mode looks similar to a start page of its own.  Interestingly, ads are shown in this mode, presumably from the WSJ itself.  This highlights another important aspect of gadget development: Income.  </p>
<p>This is really the crux of the iGoogle update, in my opinion.  By allowing <a href="http://igoogledeveloper.blogspot.com/2008/10/big-canvas-big-opportunity.html">giving more power to developers</a> and allowing more content to be shown on iGoogle, developers can have more flexibility with their creations.  In return, Google is apparently willing to allow them to show ads so they can make money off of their creations, which clearly add value to iGoogle.</p>
<p>It&#8217;s hardly an original idea.  Facebook has had their own <a href="/blog/2007/06/03/facebooks-platform-adds-integration-to-applications/">applications platform</a> for well over a year, with much of the same ideas.  Facebook Apps are made by third party developers, and mostly run &#8220;within&#8221; the confines of the main Facebook site, keeping users on the site.  In return, developers can also choose to run ads in their application to generate revenue.  It&#8217;s a very similar model.  (Facebook recently <a href="http://www.readwriteweb.com/archives/facebook_fbfund_awards_25_new.php">awarded some of the best apps</a> through their fbFund initiative, with the promise of more money to come - perhaps Google will do the same? They&#8217;ve already done something similar with Android in order to spurn development)</p>
<h3>Not so fast</h3>
<p>Unfortunately, the changes were not all good.  For one thing, the vast majority of existing gadgets haven&#8217;t been rewritten to take advantage of the full canvas mode.  In all likelihood, many will not, since third party developers may do as they like.  Gadgets that haven&#8217;t been updated will merely be displayed besides a huge &#8220;You might also like&#8230;&#8221; list of recommended/related gadgets when displayed in full-screen canvas mode.</p>
<p>Furthermore, some users have complained about the UI updates.  In particular, the mandatory left sidebar now in place has caused some to lament the loss in screen real-estate.  Previously, tabs were only shown on top if you had defined more than one; now the list of tabs, along with the iGoogle gadgets in each one, are shown in the sidebar no matter what.</p>
<p>Indeed, such a display might be superfluous if there&#8217;s only one tab.  At the very least, Google should have allowed the sidebar to be collapsed or tucked away.  (I won&#8217;t be surprised if they implement this change in the next few days, or already have it planned)</p>
<p>Also surprising is how Google rolled out the new version so suddenly, effectively forcing all users to adopt it.  A better approach would have been to roll out a &#8220;beta&#8221; version (we all know how much Google is <a href="http://royal.pingdom.com/2008/09/24/why-is-almost-half-of-google-in-beta/">in love with beta</a>) and allow users to preview it and optionally switch.  This would allow them to get more feedback before switching everyone over, like Facebook did with their new redesign, which effectively took months to take effect.</p>
<p>However, given that iGoogle&#8217;s user base is likely a very small percentage of all the users who have Google as their start page (with most just preferring the stripped-down original search page as their starting point), perhaps Google believed that rolling out the updated site would affect so few that a beta period wasn&#8217;t really needed.  In any event, the changes are not so ground breaking to warrant serious concern.</p>
<hr/>Copyright &copy; 2008 <strong><a href="http://unitstep.net">unitstep.net</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact <strong><a href="mailto:webmaster@unitstep.net">webmaster@unitstep.net</a></strong> for more information.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://unitstep.net/blog/2008/10/20/google-changes-igoogle-making-gadget-development-more-profitable/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Chrome fallout</title>
		<link>http://unitstep.net/blog/2008/09/04/chrome-fallout/</link>
		<comments>http://unitstep.net/blog/2008/09/04/chrome-fallout/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 23:56:02 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

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

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

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

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

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

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

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

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

		<guid isPermaLink="false">http://unitstep.net/?p=435</guid>
		<description><![CDATA[Since Chrome&#8217;s official release some two days ago it certainly has gotten a lot of press, both positive and negative.
What&#8217;s good
On the positive side, there are some reports that Chrome&#8217;s market share has already surpassed that of Opera, coming in at close to 2.5% when I last checked.  These results should be taken with [...]]]></description>
			<content:encoded><![CDATA[<p>Since Chrome&#8217;s <a href="http://googleblog.blogspot.com/2008/09/google-chrome-now-live.html">official release</a> some two days ago it certainly has gotten a lot of press, both positive and negative.</p>
<h3>What&#8217;s good</h3>
<p>On the positive side, there are <a href="http://getclicky.com/global-marketshare-statistics">some reports</a> that Chrome&#8217;s market share has already surpassed that of Opera, coming in at close to 2.5% when I last checked.  These results should be taken with a grain of salt, as Clicky&#8217;s web analytics might only be used by websites that tend to be visited by those more technically-inclined and thus more likely to try out something like Chrome.  (Though Chrome&#8217;s visibility on Google&#8217;s main page no doubt has some small part in its fast growth)</p>
<p>For what it&#8217;s worth, Google Analytics on my lowly-trafficked site amounted to over 4% of hits in the past five days.  (Google Analytics has since <a href="http://analytics.blogspot.com/2008/09/chrome-now-showing-as-browser-type.html">started identifying Chrome</a> as a specific browser type, no surprise)</p>
<p class="image">
<a href="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-fallout-1.jpg"><img src="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-fallout-1-300x46.jpg" alt="Chrome browser share" title="google-chrome-fallout-1" width="300" height="46" class="size-medium wp-image-437" /></a><br />
Chrome browser share on my site
</p>
<h3>What&#8217;s iffy</h3>
<p>While the V8 JavaScript engine of Chrome was reported to be fast (myself included) Mozilla has fired back with <a href="http://arstechnica.com/journals/linux.ars/2008/09/03/new-firefox-javascript-engine-is-faster-than-chromes-v8">their own results</a> when compared to the upcoming Firefox 3.1, which also features a newer, faster JavaScript engine dubbed <a href="http://ejohn.org/blog/tracemonkey/">TraceMonkey</a>.</p>
<p>Even if this only manages to bring Firefox 3.1 to within striking distance of Chrome for JavaScript performance, it&#8217;ll still easily hand the win over to Firefox 3.1 considering its much larger established base and support for extensions/addons.</p>
<p>Microsoft, meanwhile, still seems to have their <a href="http://arstechnica.com/journals/microsoft.ars/2008/09/04/microsoft-in-response-to-chrome-users-will-still-want-ie8">heads in the sand</a> when it comes to IE.  True, IE7 still have a substantial margin on any other browser but that lead has been steadily sinking.  Though IE8 will likely be a vast improvement over IE7 and seeks to erase all memories of the abomination that was IE6, it looks like Microsoft will have its work cut out with the stiff competition from Firefox and Chrome.</p>
<h3>Problems</h3>
<p>The release was not without controversy, as since this product was from Google, many privacy concerns were voiced.  There were concerns about the &#8220;GoogleUpdate.exe&#8221; process that is installed with Chrome, which apparently allows for <a href="http://tech.slashdot.org/comments.pl?sid=952157&#038;threshold=1&#038;commentsort=1&#038;mode=thread&#038;cid=24859505">higher privileges to install software</a>, which understandably freaked out some users.  Generally, unwanted processes running in the background are just the thing the tinfoil-hat wearers are looking for.</p>
<p>Additionally, some keen-eyed users who perused the EULA discovered that Google had apparently tried to <a href="http://arstechnica.com/news.ars/post/20080903-google-on-chrome-eula-controversy-our-bad-well-change-it.html">claim ownership of all content posted</a> through Chrome.  (Who <em>actually</em> reads a EULA?)  Evidently, it was all a mishap, as Google quickly moved to <a href="http://googleblog.blogspot.com/2008/09/update-to-google-chromes-terms-of.html">correct the errors in the TOS</a>.  Apparently, in the rush to release Chrome, a &#8220;standard&#8221; TOS was used as the basis for the EULA, most likely similar to the ones covering services like Blogger, etc.</p>
<h3>My own experiences</h3>
<p>Personally, I&#8217;m very pleased with the browser.  The &#8220;application shortcut&#8221; feature is very nice as it makes web apps like Gmail integrate very nicely with the desktop.  I can&#8217;t wait to setup my Mom&#8217;s computer with shortcuts to things like Gmail that will undoubtedly make her life easier.</p>
<p>The JavaScript performance <em>is</em> very fast compared to other browsers, but some things like Flash are still buggy at times.  This has caused problems with sites like Google Finance (which uses Flash for the charts) and YouTube, which are ironically Google&#8217;s own services.</p>
<p>I guess the &#8220;Beta&#8221; tag and the lack of a full version number excuse these problems, though it looks as if the list of bugs is already quite extensive.  <a href="http://code.google.com/p/chromium/issues/list">Google&#8217;s bug tracker</a> for Chrome lists over a thousand bugs/feature requests currently, though likely many of them are duplicates.  (Google is, however, following the trend of using the &#8220;Beta&#8221; moniker in an increasingly loose manner)</p>
<hr/>Copyright &copy; 2008 <strong><a href="http://unitstep.net">unitstep.net</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact <strong><a href="mailto:webmaster@unitstep.net">webmaster@unitstep.net</a></strong> for more information.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://unitstep.net/blog/2008/09/04/chrome-fallout/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Chrome: What it offers</title>
		<link>http://unitstep.net/blog/2008/09/02/google-chrome-what-it-offers/</link>
		<comments>http://unitstep.net/blog/2008/09/02/google-chrome-what-it-offers/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 01:03:15 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

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

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

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

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

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

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

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

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

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

		<category><![CDATA[web2.0]]></category>

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

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

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

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

		<guid isPermaLink="false">http://unitstep.net/?p=411</guid>
		<description><![CDATA[
After much speculation yesterday, marked by a leaked web comic and finally an acknowledgment by Google, Google Chrome, the much anticipated web browser, is here.
I encourage you to download it and give it a try, as I did as soon as it came out.  Here are some of my initial impressions.
Overview
Google released a fairly [...]]]></description>
			<content:encoded><![CDATA[<p class="image align-right"><img src="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome.jpg" alt="Google Chrome" /></p>
<p>After much <a href="http://blogoscoped.com/archive/2008-09-01-n47.html">speculation yesterday</a>, marked by a <a href="http://www.google.com/googlebooks/chrome/index.html">leaked web comic</a> and finally an <a href="http://googleblog.blogspot.com/2008/09/fresh-take-on-browser.html">acknowledgment by Google</a>, <a href="http://www.google.com/chrome/intl/en/features.html">Google Chrome</a>, the much anticipated web browser, <a href="http://googleblog.blogspot.com/2008/09/google-chrome-now-live.html">is here</a>.</p>
<p>I encourage you to <a href="http://www.google.com/chrome/index.html">download it</a> and give it a try, as I did as soon as it came out.  Here are some of my initial impressions.</p>
<h3>Overview</h3>
<p>Google released a fairly long <a href="http://www.google.com/googlebooks/chrome/">web comic</a> that delves into quite a bit of detail about Chrome - it&#8217;s not your typical comic!  Touted as being built &#8220;from scratch&#8221;, Chrome uses the WebKit rendering engine, the same one that powers Safari and Konqueror.</p>
<p class="image"><a href="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-2.jpg"><img src="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-2-300x207.jpg" alt="" title="google-chrome-2" width="300" height="207" class="alignnone size-medium wp-image-420" /></a></p>
<p>The first thing you notice is how minimal the &#8220;Chrome&#8221; or UI of Chrome is.  If you&#8217;re used to a half-dozen toolbars, buttons and widgets all over the place, Chrome will seem like a greenfield to you.  By default, there is only a tab bar and then an address bar containing back, forward, a combined reload-stop button and the address bar.  There are also buttons for bookmarking a site and for page and browser settings.  The bookmarks bar is not displayed unless you specifically change that setting.</p>
<p>Keyboard shortcuts are also present so that you don&#8217;t have to click through context menus.  If you&#8217;re used to the keyboard shortcuts of Firefox and IE7 you&#8217;ll be pleased to know that most of them transfer over without change: Ctrl-T opens a new Tab, Ctrl-W/Ctrl-F4 closes a tab, Alt-D focuses the address bar and Ctrl-J opens Downloaded Files.</p>
<p>The address bar also functions as a search bar, and this combination just makes sense.  It&#8217;s something I&#8217;ve always been doing using <a href="http://lifehacker.com/software/geek-to-live/geek-to-live-fifteen-firefox-quick-searches-129658.php">Firefox Quick Searches</a></p>
<p>By default the home/start page is set to set to show an Opera-style &#8220;<a href="http://www.opera.com/support/tutorials/flash/speeddial/">Speed Dial</a>&#8221; page containing most recently-accessed pages/bookmarks.  You can also configure Chrome to restore the previous tabs/websites on startup, which is my personal preference ever since I started using Firefox.</p>
<h3>Features</h3>
<p>Chrome integrates Google Gears to speed up supporting web applications and is an obvious effort by Google to self-promote. This is substantial since the download link for Chrome is on the main Google search page - no small feat considering only the most popular/important services get that sort of attention and furthermore the link is positioned dead center beneath the search field.</p>
<p class="image">
<a href="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-3.jpg"><img src="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-3-300x210.jpg" alt="" title="google-chrome-3" width="300" height="210" class="alignnone size-medium wp-image-422" /></a><br />
The address/search bar
</p>
<p>Chrome allows for quasi-<a href="http://en.wikipedia.org/wiki/Site_Specific_Browser">Site-Specific Browsers</a> by use of &#8220;Application Shortcuts&#8221;, which can be set for any website but are meant to be used mainly with web applications.  These allow you to open the target <acronym class="uttInitialism" title="Uniform Resource Locator">URL</acronym> in a browser window that does not have the menu or address bars and essentially serves as a blank canvas upon which the web application&#8217;s own UI can be displayed.  </p>
<p>This is similar to other SSBs such as <a href="https://wiki.mozilla.org/Prism">Mozilla Prism</a> or <a href="http://fluidapp.com/">Fluid</a> for the Mac, as they aim to bridge the gap between desktop and web applications to make their integration more seamless.</p>
<p>However, like <a href="http://blogoscoped.com/archive/2008-09-01-n47.html">Google Blogoscoped points out</a>, using such non-browser interfaces may condition the user to be more lax when entering their credentials and makes phishing attempts more viable since no <acronym class="uttInitialism" title="Uniform Resource Locator">URL</acronym> is displayed.  This is curious since security, &#8220;sandboxing&#8221; and general safe browsing were so high on Chrome&#8217;s feature list - this feature seems to help undo some good user practices of always confirming the <acronym class="uttInitialism" title="Uniform Resource Locator">URL</acronym> before entering credentials. </p>
<p>There are also some nice little enhancements as well - the combined address bar/search bar is very much like Firefox 3&#8217;s &#8220;awesome bar&#8221;.  Chrome also allows you to dynamically resize any <code>textarea</code> element, without the site designer having to code this specifically in JavaScript or some other client-side technology.</p>
<h3>Performance</h3>
<p>Each tab/window is a separate process and thus will show up separately in Task Manager; Chrome also offers its own Task Manager but the memory usage reported here differs from that in the Windows Task Manager.  To get the full picture, you have to click on the &#8220;Stats for nerds&#8221; link, which takes you to <code>about:memory</code></p>
<p class="image">
<a href="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-4.jpg"><img src="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-4-300x192.jpg" alt="" title="google-chrome-4" width="300" height="192" class="alignnone size-medium wp-image-424" /></a>
</p>
<p>This page displays the full memory usage details, and also, surprisingly, displays memory usage for any other web browsers also currently running! (I have confirmed that it will display Firefox 2/3, IE7 and Opera 9)</p>
<p class="image">
<a href="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-5.jpg"><img src="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-5-300x208.jpg" alt="" title="google-chrome-5" width="300" height="208" class="alignnone size-medium wp-image-425" /></a>
</p>
<p>Much talk has been made of this feature; indeed while it does use more resources, it also prevents a single site from bringing down the entire browser as only that tab/window will be affected.  To test this out, just terminate one of the instances of chrome.exe and you will see that tab&#8217;s screen into a &#8220;sad tab of death&#8221; with an amusing message.</p>
<p class="image">
<a href="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-1.jpg"><img src="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-1.jpg" alt="" title="google-chrome-1" width="346" height="313" class="alignnone size-full wp-image-415" /></a>
</p>
<h3>JavaScript</h3>
<p>Though JavaScript falls under the category of `Performance` I felt it deserves its own section because of the importance of JavaScript in web applications.  Chrome uses the Google-developed V8 JavaScript engine, which has also been <a href="http://code.google.com/apis/v8/">released as open source</a>.</p>
<p>The <a href="http://code.google.com/apis/v8/design.html">main points</a> of V8 are outlined at the Google Code page for the project, and are quite interesting.  One of the main improvements in performance is the use of a Virtual Machine (VM) for processing JavaScript.</p>
<p>The V8 Virtual Machine is different from say, the JVM (Java Virtual Machine) in that it compiles JavaScript source <em>directly to machine code</em>; there is no intermediate byte-code representation used and hence no interpreter is needed for this.  This seems to indicate that JavaScript performance might be faster on Chrome since there&#8217;s no intermediary. Google provides some <a href="http://code.google.com/apis/v8/benchmarks.html">benchmarks</a> to confirm this.</p>
<p>From some informal/unscientific preliminary testing, the V8 JavaScript engine in Chrome <em>does</em> appear to be quite fast; loading the same Digg topic in Firefox took longer than it did in Chrome. (Roughly 14 secs vs. 8 seconds over a few trials - and Chrome did not have the benefit of AdBlock Plus) I&#8217;d be <em>very</em> interested to see how Chrome stacks up against Firefox 3.1, considering the rumoured <a href="http://arstechnica.com/news.ars/post/20080822-firefox-to-get-massive-javascript-performance-boost.html">performance boosts</a> coming with it.</p>
<p>If Chrome has anything going for it, it&#8217;s definitely the lightning fast JavaScript performance.  Coupled with the crash-proofing this makes it ideal for use in web applications.</p>
<h3>Development</h3>
<p>Chrome comes with a nice DOM inspector reminiscent of Firebug.  Using it is dead simple; you just right click and select &#8220;Inspect Element&#8221; and the inspection window will pop up with the element highlighted.  Here you can see the full DOM tree as well as the computed <acronym class="uttInitialism" title="Cascading Style Sheets">CSS</acronym> styles for the element.  </p>
<p class="image">
<a href="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-6.jpg"><img src="http://unitstep.net/wordpress/wp-content/uploads/2008/09/google-chrome-6-300x231.jpg" alt="" title="google-chrome-6" width="300" height="231" class="alignnone size-medium wp-image-427" /></a>
</p>
<p>There&#8217;s an included JavaScript console for executing code/commands/expressions on-the-fly and while there is a JavaScript debugger included, it seems at this time to be a command-line only tool, far less user-friendly than Firebug.</p>
<h3>Not ready for prime time yet?</h3>
<p>Of course, Chrome is marked as Beta by Google, something we&#8217;ve come to expect since Gmail has been in beta for longer than the company has been publicly traded.  Nonetheless, there are still some features that are sorely missed.</p>
<p>The one thing I absolutely love about Firefox is the vibrant developer community and subsequent widespread availability of quality, useful extensions.  This has produced such gems as the aforementioned <a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a> and <a href="http://adblockplus.org/en/">Adblock Plus</a>.  </p>
<p>For now, extensions/addons are not part of Chrome but may be added in a later version.  In the meantime I don&#8217;t think I&#8217;ll be even close to ready to switch, as I&#8217;m very stubborn.  I don&#8217;t use that many extensions but the few that I do are &#8220;must-haves&#8221; and I just can&#8217;t browse without them.  </p>
<p>Lastly, there are always privacy concerns, especially from a company as big an involved as Google.  Though you can turn off the sending of usage statistics, there will always be some with their tinfoil hats on.</p>
<h3>Conclusions</h3>
<p>All things considered, Chrome is a very good entry into the browser market.  While I don&#8217;t think it&#8217;s ready to take on Firefox or IE yet, it does provide competition.  So as long as Chrome continues to support standards (which I think it will, since it uses the WebKit renderer and Google has also been forthcoming with their <a href="http://www.google.com/chrome/intl/en/webmasters.html">support for web developers</a>), I won&#8217;t have a problem with it.  I won&#8217;t be switching over to it anytime soon, but at the very least it&#8217;ll be a useful development tool to verify/test my websites on to make sure they look proper in Safari/Konqueror/Chrome.</p>
<hr/>Copyright &copy; 2008 <strong><a href="http://unitstep.net">unitstep.net</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact <strong><a href="mailto:webmaster@unitstep.net">webmaster@unitstep.net</a></strong> for more information.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://unitstep.net/blog/2008/09/02/google-chrome-what-it-offers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Decoding Google Maps Encoded Polylines using PHP</title>
		<link>http://unitstep.net/blog/2008/08/02/decoding-google-maps-encoded-polylines-using-php/</link>
		<comments>http://unitstep.net/blog/2008/08/02/decoding-google-maps-encoded-polylines-using-php/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 20:32:39 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
		
		<category><![CDATA[PHP]]></category>

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

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

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

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

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

		<guid isPermaLink="false">http://unitstep.net/?p=361</guid>
		<description><![CDATA[I&#8217;ve talked about the Google Maps encoded polyline format before. While there&#8217;s some nice utilities for encoding polylines that take the work out of implementing it yourself, I couldn&#8217;t find many polyline decoders.  
This made it somewhat tedious to decode them, as the only way to get the original list of points was to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve talked about the <a href="http://code.google.com/apis/maps/documentation/polylinealgorithm.html">Google Maps encoded polyline format</a> <a href="/blog/2008/05/11/playing-with-google-maps-and-encoded-polylines/">before</a>. While there&#8217;s some nice utilities for <a href="http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/">encoding polylines</a> that take the work out of implementing it yourself, I couldn&#8217;t find many polyline <em>decoders</em>.  </p>
<p>This made it somewhat tedious to decode them, as the only way to get the original list of points was to create a <a href="http://code.google.com/apis/maps/documentation/overlays.html#Encoded_Polylines"><code>GPolyline</code></a> and then pull out the points from that object.  This is not ideal since the work must always be done on the client side with JavaScript and using Google Maps.</p>
<p>To solve this, I quickly ported the algorithm over to <acronym class="uttInitialism" title="PHP: Hypertext Preprocessor">PHP</acronym> from the JavaScript source.  Please feel free to download/modify/use this script.</p>
<div class="download">
<a class="icon" href="http://unitstep.net/wordpress/wp-content/uploads/2008/08/decodepolylinetoarray.zip">Google Maps Polyline Decoder in <acronym class="uttInitialism" title="PHP: Hypertext Preprocessor">PHP</acronym></a>
</div>
<p>Since the encoded polyline format offers numerous benefits (and because I had data already stored in this format) I did not want to move away from it. At the same time, I needed access to the points for working with things like <a href="http://code.google.com/apis/maps/documentation/staticmaps/">Google Static Maps</a>, which curiously does not accept the encoded polyline format for displaying paths. (Probably to reduce resource usage on their end, since decoding takes CPU time)</p>
<p>Thankfully the polyline decoding algorithm was <a href="http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/decode.js">already available</a> at Mark McClure&#8217;s site.  I spent a few minutes understanding the process and porting it over to <acronym class="uttInitialism" title="PHP: Hypertext Preprocessor">PHP</acronym>.  The source is attached above and is released under an MIT license.  Basically, the only change I had to make was to use some <acronym class="uttInitialism" title="PHP: Hypertext Preprocessor">PHP</acronym> functions to convert characters to their ASCII code, since <acronym class="uttInitialism" title="PHP: Hypertext Preprocessor">PHP</acronym> doesn&#8217;t have a <code>charCodeAt()</code> function.</p>
<p>Please let me know if you find it to be useful.</p>
<hr/>Copyright &copy; 2008 <strong><a href="http://unitstep.net">unitstep.net</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact <strong><a href="mailto:webmaster@unitstep.net">webmaster@unitstep.net</a></strong> for more information.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://unitstep.net/blog/2008/08/02/decoding-google-maps-encoded-polylines-using-php/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Static Maps API key issues</title>
		<link>http://unitstep.net/blog/2008/06/28/google-static-maps-api-key-issues/</link>
		<comments>http://unitstep.net/blog/2008/06/28/google-static-maps-api-key-issues/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 16:10:36 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
		
		<category><![CDATA[google]]></category>

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

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

		<category><![CDATA[google maps]]></category>

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

		<guid isPermaLink="false">http://unitstep.net/?p=337</guid>
		<description><![CDATA[
I&#8217;ve just starting playing around with the Google Static Maps API as a complement to the regular Google Maps API, which as you probably know, is for JavaScript.  The Static Maps API, on the other hand, provides a way to display static map images.  This is useful in situations where you just need [...]]]></description>
			<content:encoded><![CDATA[<p class="image align-right"><img src="http://unitstep.net/wordpress/wp-content/uploads/2008/05/google-maps.gif" alt="" title="google-maps" /></p>
<p>I&#8217;ve just starting playing around with the <a href="http://code.google.com/apis/maps/">Google Static Maps API</a> as a complement to the regular <a href="http://code.google.com/apis/maps/">Google Maps API</a>, which as you probably know, is for JavaScript.  The Static Maps API, on the other hand, provides a way to display static map images.  This is useful in situations where you just need a non-interactive map and don&#8217;t want the overhead of an Ajax/JavaScript-based one.</p>
<p>However, I ran into some minor problems related to the <a href="http://code.google.com/apis/maps/signup.html">API key</a> usage with the Static Maps.  Basically, an API key is tied to a certain domain name so that Google can keep track of your site&#8217;s usage.  This means that the API key is tied to the domain name of the web site where you&#8217;re using the Google Maps API.</p>
<p>As in most development situations, I maintain a production server (with a real domain name) and a test/sandbox/development machine, which is just running off of my <code>localhost</code>.  Thus, I had to get two API keys - one for the real domain name, and one for <code>localhost</code> and then switch between the two depending on the host name.  (In <acronym class="uttInitialism" title="PHP: Hypertext Preprocessor">PHP</acronym> it&#8217;s fairly easy to check, using something like <code>$_SERVER['SERVER_NAME']</code>)</p>
<p>However, with the regular JavaScript-based Google Maps, it appears that if you&#8217;re running off of <code>localhost</code> (<em>not</em> 127.0.0.1) the service doesn&#8217;t check if you have a valid API key - this was probably done because many people are probably running test servers off of <code>localhost</code> and trying enforce usage limits would be counter-productive. (You do, however, need to have a valid API key - even if it doesn&#8217;t match <code>localhost</code> - if you want to use <code>GClientGeocoder</code> to resolve locations)</p>
<p>Because of this, at one point or another, I decided just to stick with using the production API key in all situations; after all, things continued to work even on the development server and in general, I don&#8217;t like making changes just for testing purposes.  </p>
<p>This ended up causing problems when I started using the Static Maps API though.  It turns out that this API <strong>does</strong> require you to have a valid API key matched to the host name in all circumstances, even if it&#8217;s <code>localhost</code>.  This, of course, is the proper behaviour, but it differs somewhat from the behaviour of the standards Google Maps API.</p>
<p>Guess it pays to be correct in all situations, even if you don&#8217;t need to be!</p>
<hr/>Copyright &copy; 2008 <strong><a href="http://unitstep.net">unitstep.net</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact <strong><a href="mailto:webmaster@unitstep.net">webmaster@unitstep.net</a></strong> for more information.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://unitstep.net/blog/2008/06/28/google-static-maps-api-key-issues/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Playing with Google Maps and encoded polylines</title>
		<link>http://unitstep.net/blog/2008/05/11/playing-with-google-maps-and-encoded-polylines/</link>
		<comments>http://unitstep.net/blog/2008/05/11/playing-with-google-maps-and-encoded-polylines/#comments</comments>
		<pubDate>Mon, 12 May 2008 01:35:59 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

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

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

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

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

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

		<category><![CDATA[google maps]]></category>

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

		<guid isPermaLink="false">http://unitstep.net/?p=324</guid>
		<description><![CDATA[
I&#8217;ve been playing around with the Google Maps API for a bit and it&#8217;s turned out to be a great way to get started with &#8220;mashups&#8221; and the like.  One of the best uses of the API is the ability to create paths or routes on the map.
This is done by creating GPolyline object [...]]]></description>
			<content:encoded><![CDATA[<p class="image align-right"><img src="http://unitstep.net/wordpress/wp-content/uploads/2008/05/google-maps.gif" alt="" title="google-maps" /></p>
<p>I&#8217;ve been playing around with the <a href="http://code.google.com/apis/maps/documentation/index.html">Google Maps API</a> for a bit and it&#8217;s turned out to be a great way to get started with &#8220;mashups&#8221; and the like.  One of the best uses of the API is the ability to create paths or routes on the map.</p>
<p>This is done by creating <a href="http://code.google.com/apis/maps/documentation/overlays.html#Polylines_Overview"><code>GPolyline</code></a> object and then adding it as an overlay to the map.  Basically, a polyline is just an ordered list of geographical points/coordinates on the map, each of which is a <a href="http://code.google.com/apis/maps/documentation/reference.html#GLatLng"><code>GLatLng</code></a> object.  For serialization/storage of polylines, there is an <a href="http://code.google.com/apis/maps/documentation/polylinealgorithm.html">algorithm you can use</a> to Base64-encode a series of points; the resultant string can later be passed directly into a factory method to regenerate the <code>GPolyline</code>.  By using encoded polylines, you also get access to a few more interesting and useful options related to rendering and performance issues.</p>
<h3>Encoded Polylines</h3>
<p>Despite the <a href="http://code.google.com/apis/maps/documentation/polylinealgorithm.html">algorithm for encoding polylines</a> being readily available on the Google Maps API documentation site, there is no built-in functionality within the API for generating the encoded polyline string from an existing <code>GPolyline</code> object.  This might be a bit strange, but it&#8217;s probably because the encoding process requires some extra values that aren&#8217;t available in the typical polyline.</p>
<p>As specified on the algorithm page, you also need to specify a list of encoded &#8220;levels&#8221; in addition to the points themselves.  These levels tell the the Google Maps renderer when certain points can be omitted from the polyline depending on the zoom level.  For example, with a polyline with <em>n</em> points, you&#8217;ll <strong>always</strong> want to show the first and last point, no matter what the zoom level.  However, intermediate points can potentially be omitted at low zoom levels and only shown when the map has been sufficiently zoomed in to warrant the detail.  This sort of optimization cannot be done with the typical <code>GPolyline</code> constructor that just takes an array of points. (<code>GLatLng</code> objects)</p>
<h3>Making things easy</h3>
<p>If you&#8217;ve looked at the <a href="http://code.google.com/apis/maps/documentation/polylinealgorithm.html">polyline encoding algorithm</a>, you&#8217;ll probably notice that it&#8217;s a bit tricky unless you&#8217;ve taken course in CS or done a lot of this stuff before. (At least it was tricky for me)  Google has an <a href="http://code.google.com/apis/maps/documentation/polylineutility.html">interactive utility</a> for generating the encoded polyline format for you.  The results can then be stored and later fed into a call to the factory method <a href="http://code.google.com/apis/maps/documentation/reference.html#GPolyline"><code>GPolyline.fromEncoded()</code></a> to regenerate the polyline.</p>
<p>However if you want to generate the encoded polyline format on-the-fly as part of your application, the interactive utility is not really an option.  Instead of coding the algorithm from the ground-up, there&#8217;s a much better way of doing things, thanks to the <a href="http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/">PolylineEncoder class</a> and other utilities provided by <a href="http://facstaff.unca.edu/mcmcclur/">Mark McClure</a>.</p>
<p>The <a href="http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/PolylineEncoderClass.html">PolylineEncoder class</a> is written in JavaScript and is very straightforward in its usage.  (It has been ported to several other languages as listed on <a href="http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/">his site</a>, in case you need to use it in different contexts)</p>
<p>Using this class allows you to quickly and easily convert a <code>GPolyline</code> into a compact encoded format useful for serialization or storage.  You can also use the class to convert arrays of points into encoded polylines, thus gaining the benefit of optimized rendering at different zoom levels.  McClure goes into an in-depth, but easy to understand <a href="http://facstaff.unca.edu/mcmcclur/GoogleMaps/EncodePolyline/algorithm.html">explanation of the encoding algorithm used</a> complete with animations that show exactly how the polyline approximations work.</p>
<p>I highly recommend the usage of his polyline encoder as it saves you the headache of implementing it yourself.  It&#8217;s well-written, thoroughly documented and is free for usage. (It isn&#8217;t licensed under open-source terms but has instead been placed in the public domain - which is perhaps even more &#8220;free&#8221;) McClure also has a few other <a href="http://facstaff.unca.edu/mcmcclur/GoogleMaps/">interesing Google Maps projects</a> that you may want to check out.</p>
<h3>Some documentation warnings</h3>
<p>The Google Maps API documentation is fairly thorough, but it&#8217;s out of date in some places, as <a href="http://groups.google.com/group/Google-Maps-API/browse_thread/thread/e0861bacc7531b08/b5e504771ebb12c4">some people have found</a>.  Indeed, in this case, it appears that the <code>GPolyline.fromEncoded()</code> is documented somewhat wrongly in the API reference, though curiously, is used properly in their <a href="http://code.google.com/apis/maps/documentation/overlays.html#Polylines_Overview">examples page</a>.  </p>
<p>Specifically, you <strong>should not</strong> use:</p>
<pre><code>GPolyline.fromEncoded(color?,  weight?,  opacity?,  latlngs,  zoomFactor,  levels,  numLevels)</code></pre>
<p>if you want to generate a polyline from the encoded format.  Instead, you should use something like:</p>
<pre><code>GPolyline.fromEncoded({
    color: "#FF0000",
    weight: 10,
    points: "yzocFzynhVq}@n}@o}@nzD",
    levels: "BBB",
    zoomFactor: 32,
    numLevels: 4
});</code></pre>
<p>This is because the API has been updated to accept an object of options instead of separate parameters.  This, in my opinion, is better for readability and takes advantage of JavaScript&#8217;s ability to define inline anonymous object literals.  </p>
<p>As a side note, the example actually calls something like <code>new GPolyline.fromEncoded</code>, but I&#8217;ve found that you don&#8217;t need the <code>new</code> keyword, and in fact, it&#8217;s a bit confusing that the example has it and that it would work - after all, you are calling a factory method that returns a type of <code>GPolyline</code>, and not directly instantiating an object. (At least as far as <a href="/blog/2008/01/24/javascript-and-inheritance/">JavaScript uses the <code>new</code> keyword</a>)</p>
<hr/>Copyright &copy; 2008 <strong><a href="http://unitstep.net">unitstep.net</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact <strong><a href="mailto:webmaster@unitstep.net">webmaster@unitstep.net</a></strong> for more information.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://unitstep.net/blog/2008/05/11/playing-with-google-maps-and-encoded-polylines/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google moves to monetize YouTube</title>
		<link>http://unitstep.net/blog/2007/10/10/google-moves-to-monetize-youtube/</link>
		<comments>http://unitstep.net/blog/2007/10/10/google-moves-to-monetize-youtube/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 01:25:17 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
		
		<category><![CDATA[advertising]]></category>

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

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

		<guid isPermaLink="false">http://unitstep.net/blog/2007/10/10/google-moves-to-monetize-youtube/</guid>
		<description><![CDATA[
You knew it was coming, but perhaps just never figured that it would take this long.  Just about a year after Google bought YouTube, it has announced plans to integrate AdSense with the popular video site.  Many analysts questioned Google&#8217;s acquisition of YouTube, since at the time they were not yet profitable.  [...]]]></description>
			<content:encoded><![CDATA[<p class="image align-right"><img src='http://unitstep.net/wordpress/wp-content/uploads/2007/10/google-youtube-adsense.jpg' alt='Google, YouTube and AdSense' /></p>
<p>You knew it was coming, but perhaps just never figured that it would take <em>this long</em>.  Just about a year after <a href="/blog/2006/10/09/google-buys-youtube/">Google bought YouTube</a>, it has announced plans to <a href="http://www.readwriteweb.com/archives/youtube_in_adsense.php">integrate AdSense</a> with the popular video site.  Many analysts questioned Google&#8217;s acquisition of YouTube, since at the time they were not yet profitable.  However, with Google&#8217;s large cash reserves, they could afford to buy the dominant video-sharing site (after failing to take over the market with their own <a href="http://video.google.com">offering</a>) and let it incubate while thinking up a game plan.</p>
<h3>Killer Ads?</h3>
<p>The ads won&#8217;t be forced onto the beginning of videos as some had feared, nor will they be tacked onto the end where most probably won&#8217;t bother to watch.  Instead, select videos will be available to AdSense publishers to have ads placed alongside the videos.  From the <a href="http://adsense.blogspot.com/2007/10/introducing-video-units.html">official Google AdSense blog</a>, it appears that both banner ads and the text-ads that Google popularized will be available, and both will be integrated into the flash content with the YouTube video.</p>
<p>This is a fairly significant move by Google, and though they&#8217;ve experimented with ads, they have don&#8217;t anything close to this scale with respect to video.  It remains to be seen what effect this will have on viewership levels.  YouTube is a widely-accessed website, and its users are more representative of the average Internet user.  This contrasts with a site like Digg, which is dominated by enthusiasts who have significant disdain for online advertising.  Thus, if these video ads are placed on sites with audiences similar to YouTube, they may not cause as much of an uproar as expected.  </p>
<p>On the other hand, the ads can be somewhat intrusive.  Looking at them reminded me somewhat of the scene from <cite>Idiocracy</cite>, where the guy from the future is watching an episode of <cite>Ow! My Balls!</cite> on what appears to be a 12&#8242; wide plasma screen dominated with advertising around the borders.  Sites that choose to opt-in to this program may receive a backlash in the form of decreased readers annoyed at the new media.  Another thing that remains to be seen is whether extensions like <a href="https://addons.mozilla.org/en-US/firefox/addon/1865">AdBlock Plus</a> will be able to successfully filter out these new ads.</p>
<p>In any event, publishers will receive feedback from their readers (whether they like it or not), and will adjust their usage of these new ads accordingly.  Most likely, it&#8217;ll be &#8220;more of the same&#8221;.</p>
<hr/>Copyright &copy; 2008 <strong><a href="http://unitstep.net">unitstep.net</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact <strong><a href="mailto:webmaster@unitstep.net">webmaster@unitstep.net</a></strong> for more information.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://unitstep.net/blog/2007/10/10/google-moves-to-monetize-youtube/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Docs updates its interface, sort of</title>
		<link>http://unitstep.net/blog/2007/06/28/google-docs-updates-its-interface-sort-of/</link>
		<comments>http://unitstep.net/blog/2007/06/28/google-docs-updates-its-interface-sort-of/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 17:40:13 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[docs &amp; spreadsheets]]></category>

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

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

		<category><![CDATA[word processors]]></category>

		<guid isPermaLink="false">http://unitstep.net/blog/2007/06/28/google-docs-updates-its-interface-sort-of/</guid>
		<description><![CDATA[
Google has updated its interface for their Docs &#038; Spreadsheets application.  Besides the visual improvements, they&#8217;ve also &#8220;replaced&#8221; tags with folders, and added a &#8220;Google Suggest&#8221; function to the search box, that finds matches as you type. (Neat!)  
While some may consider the move from tags back to folders a step backwards, the [...]]]></description>
			<content:encoded><![CDATA[<p class="image align-right"><img src='/wordpress/wp-content/uploads/2007/06/google-docs.thumbnail.png' alt='Google Docs &#038; Spreadsheets' /></p>
<p>Google has <a href="http://google-d-s.blogspot.com/2007/06/entirely-new-way-to-stay-organized.html">updated its interface</a> for their <a href="http://docs.google.com/">Docs &#038; Spreadsheets</a> application.  Besides the visual improvements, they&#8217;ve also &#8220;replaced&#8221; tags with folders, and added a &#8220;<a href="http://www.google.com/webhp?complete=1">Google Suggest</a>&#8221; function to the search box, that finds matches as you type. (Neat!)  </p>
<p>While some may consider the move from tags back to folders a step backwards, the change is really superficial - under the hood, it&#8217;s still the same old tagging system.  The only difference is how most users will interpret it.  </p>
<p class="image align-right"><a rel="lightbox" href='/wordpress/wp-content/uploads/2007/06/google-docs-screenshot.jpg' title='Screenshot copyright Google, 2007'><img src='/wordpress/wp-content/uploads/2007/06/google-docs-screenshot.thumbnail.jpg' alt='Screenshot copyright Google, 2007' /></a></p>
<h3>The old ways</h3>
<p>As <a href="http://www.techcrunch.com/2007/06/26/google-docs-gets-folders-now-what-about-gmail/">TechCrunch</a> indicates, there are still many people who prefer the traditional folder model over the tagging model.  Tagging is a more recent phenomenon, made popular by sites like <a href="http://del.icio.us/">Del.icio.us</a> at the growing crowd of &#8220;Web 2.0&#8243; sites.  Most people are familiar with folders for organization, since it&#8217;s a feature the user would have gotten used to in using a computer&#8217;s file system.  Even though tags, (or &#8220;labels&#8221;, as Google calls them) are preferred by <a href="http://www.kinggary.com/archives/google-docs-gets-an-overhaul/">some</a>, including myself, clearly Google has had research indicate to them that folders would work well for more people.</p>
<p>However, the change to folders wasn&#8217;t really a total overhaul - as you can tell from this quote from their announcement:</p>
<blockquote cite="http://google-d-s.blogspot.com/2007/06/entirely-new-way-to-stay-organized.html"><p>
Even cooler, our new folders continue to work like the tags they&#8217;ve replaced - your old tags are automatically converted to folders and documents can live in more than one folder at a time.
</p></blockquote>
<p>This is confirmed by using the new Docs &#038; Spreadsheets - though the icons look like folders, they can be made to behave like tags.  They&#8217;ve tried to make some aspects like traditional folders; for example, when you&#8217;re in folder view and you drag a file to another folder, it is &#8220;moved&#8221; to that new folder - but what&#8217;s really happened is that the first folder/tag is dropped, and replaced by the new one.  (In the &#8220;All Items&#8221; view, dragging an item to a folder merely adds the item to the new folder, without removing it from other folders it was in - just like tagging)</p>
<p>Folders in the application do not operate in the traditional sense, since you cannot create sub-folders, at least not at present.  (I got a &#8220;server error&#8221; when trying to move a folder into another one) This betrays the true nature of the folders - they&#8217;re just tags in folder&#8217;s clothing. The interface has merely been re-designed to promote a folder-centric view of tags.</p>
<p>This isn&#8217;t something I&#8217;m against, as since I&#8217;ve indicated I prefer tags over folders.  In fact, I think that this is a good move for Google, since they can accommodate both types of users - those who prefer the old folder organization, and those who prefer organization by tags.  The present system gives a good illusion of folders (albeit without sub-folder support), but can easily be made to work as a tagging system.  Some have also speculated that this change could be a harbinger of things to come for Gmail.  Perhaps they&#8217;re rolling out this system to see how it does with the smaller Docs &#038; Spreadsheets crowd before moving it into big-time action with the Gmail userbase. </p>
<h3>Pretty sights</h3>
<p>The visual side of the interface has also been given a facelift.  With this, it looks and operates more like a traditional desktop application.  This contrast with Google&#8217;s approach to Gmail, and resembles more Yahoo!&#8217;s approach to their mail client.  Could this be another indication of Google wanting to make interface changes to Gmail, perhaps making it more like a desktop mail client in order to <a href="http://unitstep.net/blog/2007/06/27/web-based-e-mail-providers-the-big-three/">compete with Yahoo! Mail</a> better?  They&#8217;ve certainly done a good job with Docs &#038; Spreadsheets, as the interface is pretty but not overdone.  Furthermore, the &#8220;Back&#8221; button functionality is not broken and drag &#038; drop works like a charm </p>
<p>One improvement they could make would be taken from Gmail&#8217;s interface - allow adding of items to folders/tags on-the-fly, without having to create the folder beforehand. </p>
<h3>Security and Privacy concerns</h3>
<p>Docs &#038; Spreadsheets is undoubtedly very useful for collaboration across distances, or really for any project work in general.  The prospect of no longer having to physically bring files between computers using <a href="http://en.wikipedia.org/wiki/Sneakernet">sneakernet</a> is a compelling enough reason, and I believe most people, especially students, would use this service, so as long as they knew about it.  (I still think Google has to get out more knowledge of this service)</p>
<p>However, I&#8217;m less excited about this service when it comes to business use.  So far, companies have been reluctant to store sensitive information with third parties, and for good reason - you may just never know who has access to your data, and furthermore, the risks of data loss may not be known.  For personal use, these concerns also have merit.  For businesses, something like <a href="http://www.google.com/a/enterprise/">Google Apps Premier Edition</a>, a paid service with guarantees, would probably be better.  Some of their services may even allow you to host the data <a href="http://www.mindthis.net/mindthis/2006/12/the_most_mature.html">behind your firewall</a>. </p>
<h3>A competitor to Microsoft Office?</h3>
<p>While Google Docs is a great tool, I hardly think it&#8217;s a competitor to Microsoft Office.  The two are really in separate markets.  So far, online word processors can&#8217;t match the functionality of desktop ones, but are still good for a lot of what you&#8217;d need to do with documents.  A closer competitor to Google Docs would probably be Microsoft&#8217;s <a href="http://www.officelive.com/">Office Live</a>, another suite of online tools.  This service also has free and paid subscriptions.  The service still has some way to go before it can be considered a serious contender in the office/work productivity arena, that is, if Google ever intends it to be.</p>
<hr/>Copyright &copy; 2008 <strong><a href="http://unitstep.net">unitstep.net</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact <strong><a href="mailto:webmaster@unitstep.net">webmaster@unitstep.net</a></strong> for more information.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://unitstep.net/blog/2007/06/28/google-docs-updates-its-interface-sort-of/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Web-based e-mail providers: The big three reviewed</title>
		<link>http://unitstep.net/blog/2007/06/27/web-based-e-mail-providers-the-big-three/</link>
		<comments>http://unitstep.net/blog/2007/06/27/web-based-e-mail-providers-the-big-three/#comments</comments>
		<pubDate>Wed, 27 Jun 2007 21:14:24 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
		
		<category><![CDATA[comparison]]></category>

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

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

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

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

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

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

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

		<guid isPermaLink="false">http://unitstep.net/blog/2007/06/27/web-based-e-mail-providers-the-big-three/</guid>
		<description><![CDATA[
If you are using a web-based e-mail provider, chances are you&#8217;re using either Google&#8217;s Gmail, Microsoft&#8217;s Windows Live Hotmail or Yahoo!&#8217;s Mail, or a combination of the three.  These are the &#8220;big three&#8221; when it comes to web-based e-mail services.  Microsoft and Yahoo&#8217;s offerings have been around for about 10 years or so, [...]]]></description>
			<content:encoded><![CDATA[<p class="image align-right"><img src='http://unitstep.net/wordpress/wp-content/uploads/2007/06/webmail.png' alt='Web-based e-mail providers' /></p>
<p>If you are using a web-based e-mail provider, chances are you&#8217;re using either Google&#8217;s <a href="http://gmail.com">Gmail</a>, Microsoft&#8217;s <a href="http://hotmail.com">Windows Live Hotmail</a> or <a href="http://mail.yahoo.com">Yahoo!&#8217;s Mail</a>, or a combination of the three.  These are the &#8220;big three&#8221; when it comes to web-based e-mail services.  Microsoft and Yahoo&#8217;s offerings have been around for about 10 years or so, with Gmail, the upstart, only being about three years old.  Together, these services boast millions of users and bring in huge advertising revenue for their respective companies.  But which one is the best for you?</p>
<p>Before Gmail, web-based e-mail was anemic: storage was limited to only a few MBs, and functionality was limited.  Indeed, you probably couldn&#8217;t get by just using a web-based service, and probably just used it for temporary stuff, relying on your trusty desktop e-mail client and POP3 service for most stuff.  Gmail spurned innovation with its announcement of 1 GB of storage, later <a href="http://en.wikinews.org/wiki/Gmail_1st_Birthday%3B_Storage_capacity_increased_to_2GB">upgraded to 2 GB</a> and beyond, and made web-based e-mail a viable alternative to desktop clients.  There was no question at the time that Gmail was far superior to both Microsoft and Yahoo!&#8217;s offerings.  However, things have changed in the three years since then, and Microsoft and Yahoo! have both fired back with new and feature-filled web-based e-mail services that offer serious competition to Gmail.  How do they stack up against the young champ?</p>
<h3>Gmail</h3>
<p class="image align-right"><a rel="lightbox" href='http://unitstep.net/wordpress/wp-content/uploads/2007/06/webmail-gmail.jpg' title='Gmail'><img src='http://unitstep.net/wordpress/wp-content/uploads/2007/06/webmail-gmail.thumbnail.jpg' alt='Gmail' /></a></p>
<p>Before we start, I&#8217;ll admit that I&#8217;m just a little biased.  I&#8217;ve been using Gmail for close to three years, and it has served me well.  I forward most of my POP3 accounts to it, since they have low limits on how much e-mail can be stored server-side, and this has the added benefit of allowing me to access my e-mail anywhere.  (Though this can be said of any web-based e-mail account)  Gmail, for me, offered a quick, clean interface that was refreshing.</p>
<h4>Ease-of-use</h4>
<p>Having said that, there are some true benefits to Gmail beyond the fact that I like it.  Firstly, ease-of-use - Gmail excels in this area.  As mentioned before, the interface is clean and to-the-point.  When you log in, there&#8217;s no &#8220;Today&#8221; screen that forces you to click another link to get to your inbox; your inbox appears right away.  Gmail also supports <a href="http://mail.google.com/support/bin/answer.py?answer=6594&#038;query=shortcut&#038;topic=&#038;type=f&#038;ctx=search">keyboard shortcuts</a>, to make things easier.</p>
<p>The one shortcut I <em>really</em> liked was CTRL-S saving your composed e-mail as a draft.  Since this is such a common shortcut in desktop apps, it only makes sense that it should work with web-based e-mail as well.  Furthermore, Gmail also will automatically save your e-mail while you are typing, so even if you forget, you&#8217;ll be safe.  Another protection built in prevents you from accidentally navigating away from the page while you&#8217;re composing an e-mail.  This is pretty much a necessary feature for e-mail services, as it&#8217;s all too common to accidentally hit the &#8220;Back&#8221; button or click a link.</p>
<p>One fundamental difference that Gmail implements is the use of &#8220;Conversations&#8221; rather than just listing all the e-mails you&#8217;ve received.  Basically, e-mails you&#8217;ve sent and replies you&#8217;ve received from a particular person, originating from a particular e-mail are grouped together, very much like a threaded conversation on a forum.  This takes some time getting used to, since all other e-mail clients do not organize mail messages like this, but the learning curve isn&#8217;t that steep, and it is a superior method of organizing e-mail since it reduces clutter. </p>
<p>Another different aspect is the use of labels.  Gmail doesn&#8217;t support folders, but rather allows you to &#8220;label&#8221; each e-mail with a different tag.  While you lose the ability to have a folder hierarchy, labeling works just as well for most purposes.  Additionally, mail messages can be assigned more than just one label - something that can&#8217;t be done in a traditional folder model.  This allows you to group messages in a dynamic way - for example, a mail message might fall under the label of both &#8220;work&#8221; and &#8220;bills&#8221;.</p>
<h4>Interface - Look &#038; Feel</h4>
<p>Gmail is fairly spartan, and while it may not super pretty, it&#8217;s very usable.  The colours are all pastel and light on the eyes, and selected messages are highlighted.  The background colour also changes depending whether you&#8217;re viewing all e-mails or just ones that fall under a certain label.  Searching is easy, and so is the action of adding labels to messages - you don&#8217;t have to create the label before adding it, as once you add a label to a message it will be automatically created.  Furthermore, messages that you&#8217;ve selected stay selected even if you navigate to a different page.  This saves you the headache of having to re-select a bunch of messages because you accidentally clicked &#8220;Back&#8221;.  </p>
<p>And, while we&#8217;re talking about the &#8220;Back&#8221; button, Gmail does a great job of preserving its functionality.  While this seems like a minor point, it&#8217;s actually a <a href="http://www.fieldexpert.com/2006/01/03/ajax-best-practices-dont-break-back/">big problem</a> with Ajax application, and furthermore, an impediment to usability.  Remember, all of these clients operate within the confines of a web-browser, and in a web-browser, the Back button has certain functionality that&#8217;s expected of it.  Breaking this functionality will only confuse users and is a big no-no.</p>
<h4>Space</h4>
<p>Gmail currently offers something ~2.8 GB of space.  I think this is somewhat of a mute point, since how many of us will actually accumulate that much e-mail?  Just for reference: I have kept <em>every</em> single e-mail I&#8217;ve every received through any POP3 account since I started using the Internet, probably back around 1995-96.  The size of all of this e-mail? (Measured by the size of <a href="http://www.mozilla.com/en-US/thunderbird/">Thunderbird&#8217;s</a> database files) A paltry 800 MB or so.  That is over 10 years of e-mail.  Mind you, some people receiver more e-mail than I do, but I have found that e-mail correspondence usually becomes irrelevant a few weeks or so after it&#8217;s been received and read.  After that, it&#8217;s just good for a nostalgic trip down memory lane. </p>
<h4>Ads</h4>
<p>Gmail is probably the best for this, since the ads are textual and non-intrusive.  I&#8217;ve also found them to be the most relevant to me, which may or may not creep you out.  Despite all the <a href="http://www.privacyrights.org/ar/GmailLetter.htm">concerns</a>, I&#8217;m really <a href="http://www.oreillynet.com/pub/wlg/4707">not worried</a>.  If you&#8217;re really concerned about privacy, you should not be using a web-based e-mail provider, period.  In fact, you should not be using e-mail for communication, unless you&#8217;re using something like <a href="http://en.wikipedia.org/wiki/Pretty_Good_Privacy">PGP</a> for encryption. </p>
<h4>Security - Spam</h4>
<p>Gmail automatically blocks and prevents images from showing up in e-mails so that spammers cannot confirm your e-mail address exists.  This is a good practice, and I&#8217;m happy to report the other two providers also do this.  Gmail&#8217;s spam protection also seems to be quite good - I rarely get a spam e-mail showing up in my inbox.  Instead, most of it automatically diverted to the spam folder, where it can all be deleted in one click.  Gmail also has a nice &#8220;Report Spam&#8221; and &#8220;Report Phishing&#8221; feature, to allow it to improve its service.</p>
<h4>Other features</h4>
<p>Gmail allows you POP3 access to your account, without any workarounds or hacks.  This is a big plus, since the other providers don&#8217;t offer this since they want you visiting their site for access, so that they gain advertising revenue.  POP3 access also allows you to backup your e-mail locally, and still keep the original on Gmail - a great idea!</p>
<p>Gmail unofficially &#8220;supports&#8221; extensions such as <a href="http://www.viksoe.dk/code/gmail.htm">Gmail Drive</a>, allowing you to use it as an online storage medium.  Here&#8217;s where the extra space might actually be useful.  It also has a <a href="http://labnol.blogspot.com/2006/08/google-mp3-player-found-in-gmail.html">built in MP3 player</a>, so you can e-mail yourself MP3s and then play them at work, or wherever you might be.  I consider these to be minor additions, since there are <a href="http://www.box.net">other services</a> if you&#8217;re really into online storage.   </p>
<h4>Conclusion</h4>
<p>Though it sounds like I&#8217;m a Gmail fanboy, it&#8217;s really just because I&#8217;ve been using it for so long and am used to it.  Gmail hasn&#8217;t been perfect, of course.  There have been some <a href="http://blog.outer-court.com/forum/22209.html">horror stories</a>, and if you learn anything from this, it&#8217;s that you can never truly trust a third-party provider to keep your e-mail safe.  After all, it&#8217;s a free service, right?  The best practice would be to use the POP3 access to backup e-mail locally, periodically.</p>
<h3>Windows Live Hotmail</h3>
<p class="image align-right"><a rel="lightbox" href='http://unitstep.net/wordpress/wp-content/uploads/2007/06/webmail-wlm.jpg' title='Windows Live Hotmail'><img src='http://unitstep.net/wordpress/wp-content/uploads/2007/06/webmail-wlm.thumbnail.jpg' alt='Windows Live Hotmail' /></a></p>
<p>Microsoft&#8217;s e-mail service has had somewhat of an identity crisis.  When Microsoft acquired Hotmail, they just added &#8220;MSN&#8221; to beginning of the name since Hotmail already had such a huge user base.  However, with its <a href="http://en.wikipedia.org/wiki/Windows_Live">Windows Live Initiative</a>, Microsoft renamed the service to &#8220;Windows Live Mail&#8221;.  Apparently, this created somewhat of a confusion amongst users, so Microsoft reneged somewhat, and renamed it again, this time to Windows Live Hotmail - again keeping the &#8220;Hotmail&#8221; term that has been around since 1995. </p>
<p>If you remember, I <a href="http://unitstep.net/blog/2006/07/26/windows-live-mail-slow-bloated-and-not-very-usable/">wasn&#8217;t too impressed</a> with Windows Live Mail (back when it was called that), but that was almost a year ago, so let&#8217;s see how it&#8217;s doing right now.</p>
<h4>Ease of use</h4>
<p>Thankfully, the checkbox-problem I complained about in my original review of the service has been fixed.  Checkboxes now behave like normal checkboxes.  All normal e-mail functions are within easy reach, but keyboard shortcuts are nowhere to be found.  CTRL-S does not save a message when your composing it, and instead you must click a button to do this.  I also did not note any form of auto-saving.  Furthermore, while Hotmail does protect against lost composed messages if you click on another link, it doesn&#8217;t prevent you from accidentally closing the browser window.  </p>
<p>A nice feature is that the interface is very much like a desktop client, so for most users, there won&#8217;t be any time to &#8220;get used&#8221; to it.  </p>
<h4>Interface - Look &#038; Feel</h4>
<p>The interface is fairly easy to use, and much more responsive than before.  It doesn&#8217;t feel too slow.  There are many colour schemes, and they are all good for readability.  Windows Live Hotmail chooses to use the old folder model, which isn&#8217;t bad, but after using labels, I find it just to be a bit outdated.  </p>
<p>One big problem is that the &#8220;Back&#8221; button&#8217;s functionality is broken by Hotmail.  Using the &#8220;Back&#8221; button will give weird and unpredictable results.  This will unfortunately make it harder for users to adapt to the system.</p>
<h4>Space</h4>
<p>You get 2 GB of space, which again, is way more than enough.  Users who are still using the &#8216;old&#8217; MSN Hotmail, with its old interface, only get 1 GB, to give some incentive for people to voluntarily upgrade to the newer service.  Microsoft is not forcing the upgrade on people, for obvious reasons - any huge forced change in interface would surely confuse and upset too many people and potentially cause Microsoft to lose advertising revenue if people were to leave.</p>
<h4>Ads</h4>
<p>When you first log in, you&#8217;re brought to a useless &#8220;Today&#8221; screen, and you must click your inbox to get access to the &#8220;real&#8221; e-mail part of the site.  This is all in an effort to generate more ad views, as there are two big flash ads on this page.  When browsing messages, or anything else, there is always a big flash ad at the top of the page.  These are distracting, and often not very relevant, from my experience.  </p>
<h4>Security - Spam</h4>
<p>I haven&#8217;t used this service enough to truly get an idea of it&#8217;s spam-block capability, but it seems on-par with the other two.  Disabling of images and scanning of attachments in messages is also done, so there&#8217;s not really any danger in using Hotmail.</p>
<h4>Other features</h4>
<p>Like Gmail, and Yahoo! Mail, you get access to you instant messenger contacts from within the service, so this will be helpful when you&#8217;re at a computer that doesn&#8217;t have the desktop IM client.  There&#8217;s no POP3 access, however, unless you use Outlook, or a <a href="http://sourceforge.net/projects/hotpop3">clever software tool</a>.</p>
<h4>Conclusion</h4>
<p>Windows Live Hotmail is much better than before, and I applaud the efforts of Microsoft.  However, it&#8217;s not enough for me to recommend it - in fact, if you&#8217;re using it and are heavily entrenched, I&#8217;d even go as far to say that you should consider moving away from it to Gmail.  The ads and sub-par interface may make the trouble of switching web-mail providers worthwhile.</p>
<h3>Yahoo! Mail</h3>
<p class="image align-right"><a rel="lightbox" href='http://unitstep.net/wordpress/wp-content/uploads/2007/06/webmail-yahoo.jpg' title='Yahoo! Mail'><img src='http://unitstep.net/wordpress/wp-content/uploads/2007/06/webmail-yahoo.thumbnail.jpg' alt='Yahoo! Mail' /></a></p>
<p>Like Google&#8217;s Gmail, Yahoo!&#8217;s Mail service is also branded with the &#8220;Beta&#8221; tag.  It seems that nowadays, &#8220;Beta&#8221; means available for widespread voluntary use, and that we could add/remove features at any time, basically allowing for a service to be in perpetual development while people are still actively using it.  This isn&#8217;t necessarily a bad thing, but it&#8217;s a change from what &#8220;Beta&#8221; software original entailed. </p>
<h4>Ease of use</h4>
<p>Yahoo&#8217;s client is very easy to use.  Part of this is due to its interface, which is probably the closest of the three to resembling a desktop client.  Everything pretty much operates as it would in a desktop client, and this functionality has been accomplished with JavaScript - quite an achievement.  Keyboard <a href="http://help.yahoo.com/l/us/yahoo/mail/yahoomail/whatsnew/whatsnew-14.html">shortcuts</a> are nicely supported, as is CTRL-S for saving a message that you&#8217;re composing.  Furthermore, there is robust protection against losing an e-mail you&#8217;re composing - if you try to close the window on an unsaved message, you&#8217;ll get a prompt to ensure this is what you want to do.</p>
<p>Folders are used for organization, and messages can&#8217;t be tagged.  (Though they can be &#8220;flagged&#8221; for follow-up, like in traditional desktop clients) It&#8217;s easy to select messages, and search for them.  All of the buttons to perform actions are large enough to be easily clicked, and the preview pane is a nice feature present in most desktop clients, but missing from Gmail.  You can also open messages for a full-view by double-clicking on them in the message list - another nice feature copied from desktop clients.  Overall, Yahoo!&#8217;s mail client is very easy to use.</p>
<h4>Interface - Look &#038; Feel</h4>
<p>With the client emulating the look &#038; feel of a desktop one very well, there isn&#8217;t much to dislike here.  If you&#8217;re familiar with using a desktop client and are reluctant to move away from that, Yahoo!&#8217;s client does a great job of maintaining the continuity of a desktop client in the environment of a web browser.  Opening a message or composing a new e-mail will create a new tab at the top of the screen in a sort of <a href="http://en.wikipedia.org/wiki/Multiple_document_interface">multiple document interface</a>.  Thus, you&#8217;re not forced to navigate away from your inbox while you&#8217;re composing a message or reading one - a deficiency with Gmail.  If you find yourself reading multiple e-mails at a time, Yahoo!&#8217;s client will excel in this area.  Though, some might <a href="/blog/2007/05/10/constant-partial-attention-as-multitasking/">frown upon</a> this multitasking. </p>
<p>As expected, organizing e-mail is as easy as clicking the column headers at the top.  You can even right click on messages or folders to bring up a context menu of actions that you can perform on the item - just like in a real desktop client.  With all these JavaScript enhancements, you might expect things to be slow or sluggish - but on the contrary, I found the client, in its current version, to be quite fast.  I guess that all the experience Yahoo! has gained from developing their <a href="http://developer.yahoo.com/yui/">User Interface Library</a> in JavaScript has paid off.</p>
<p>Yahoo! has also gone to great lengths to preserve back-button functionality.  Though you might expect the &#8220;Back&#8221; button to have a somewhat ambiguous function in a traditional desktop e-mail client, it worked well in Yahoo!&#8217;s client and didn&#8217;t do anything unwanted, like navigating away from the mail site.  </p>
<h4>Space</h4>
<p>Yahoo! somewhat surprised everyone by announcing <a href="http://yodel.yahoo.com/2007/05/14/unlimited-storage-its-coming/">unlimited e-mail storage</a> back in May.  (It&#8217;ll be rolling out to all users soon enough)  While this may seem like a &#8220;one-up&#8221; on Gmail&#8217;s previously-leading capacity of near 3 GB, for me, it&#8217;s not really that big of a deal.  Again, I just don&#8217;t see the need for so much e-mail storage, when a digital pack-rat such as myself has only managed to accumulate 800 MB of e-mail over > 10 years. </p>
<h4>Ads</h4>
<p>There&#8217;s basically one big image ad on the right-hand side.  From my experience, it was a static image, and not a flash animated ad.  This is less intrusive than Hotmail&#8217;s, which is usually a flash-animated horror at the top of the page, but still not as peaceful as Gmail&#8217;s textual ads, which also seem to be more relevant.  (I only saw eBay ads at Yahoo! Mail)  Also, Yahoo! forces you to view a &#8220;Today&#8221; screen after you login - you must click on your inbox to open it, as it&#8217;s not displayed automatically.</p>
<h4>Security - Spam</h4>
<p>Again, though I&#8217;ve had my Yahoo! Mail account for some time, I haven&#8217;t really used it enough to come up with a good conclusion.  From my experience though, the spam detection is pretty darn good.  Images aren&#8217;t automatically displaced in e-mails, and you&#8217;re pretty much safe while using the site.  </p>
<h4>Other features</h4>
<p>You get access to Yahoo! Messenger, and so you can IM your people on your contact list from the mail client.  An <acronym class="uttInitialism" title="Really Simple Syndication">RSS</acronym> reader is nicely integrated with the client as well, and since it&#8217;s <a href="/blog/2006/07/25/rss-not-just-for-geeks-anymore/">more and more relevant</a> nowadays, you&#8217;ll be able take advantage of these services from any computer that has Internet access.  A calendar is also nicely integrated with the service. </p>
<p>Like Hotmail, you cannot access the service through a POP3 client, if for example you wanted to backup your e-mail locally.  There are <a href="http://ypopsemail.com/">workarounds</a>, of course, but having native support for it like Gmail would&#8217;ve been preferable.</p>
<h4>Conclusion</h4>
<p>Yahoo!&#8217;s Mail is a great service.  They&#8217;ve put a considerable effort into making it as close to a desktop client as possible.  While some people may not like that within the confines of a web browser, I think it&#8217;s great - especially when it&#8217;s executed as great as Yahoo!&#8217;s implementation.  Things are fast, and there isn&#8217;t really any sluggishness like with some poorly-implemented Ajax web-apps out there.  If you&#8217;re thinking about moving over to a web-based e-mail service, and are too familiar with a desktop client to abandon it, Yahoo!&#8217;s Mail service is for you.  This, combined with the ease-of-use and unlimited space pretty much make it a serious competitor to Gmail.</p>
<h3>The verdict</h3>
<p>As I&#8217;ve said before, I&#8217;m a bit biased.  Gmail has been my client of choice for many years, so I&#8217;m not keen on switching anytime soon.  Having said that, Yahoo!&#8217;s client is a great alternative - but the two take different approaches.  Yahoo!&#8217;s tries to emulate the desktop experience as much as possible - this can have its pros and cons.  Though it&#8217;s easier to adapt to using it from a desktop client, it doesn&#8217;t feel as &#8220;simple&#8221; as Gmail&#8217;s.  Gmail aims for a slick, clean, and new approach to web e-mail as, it does away with folders and the traditional message list in favour of labels and a conversation (threaded-messages) approach.</p>
<p>My advice would be this - if you&#8217;re heavily entrenched into Gmail, stay with it.  Same goes for Yahoo! Mail.  However, if you&#8217;re using Windows Live Hotmail, you may want to consider your alternatives, however painful switching e-mail addresses might be.  I just can&#8217;t recommend it, at least not when compared to the alternatives.  If you&#8217;re not heavily using a webmail client and would like to, take a spin with both Gmail and Yahoo! Mail and see which one works best for you.</p>
<hr/>Copyright &copy; 2008 <strong><a href="http://unitstep.net">unitstep.net</a></strong>. This Feed is for personal non-commercial use only. If you are not reading this material in your news aggregator, the site you are looking at is guilty of copyright infringement. Please contact <strong><a href="mailto:webmaster@unitstep.net">webmaster@unitstep.net</a></strong> for more information.<br/><span style="float: right;font-size: 7pt"><a href="http://blog.taragana.com/index.php/archive/wordpress-plugins-provided-by-taraganacom/">Plugin</a> by <a href="http://www.taragana.com/">Taragana</a></span>]]></content:encoded>
			<wfw:commentRss>http://unitstep.net/blog/2007/06/27/web-based-e-mail-providers-the-big-three/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
