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

<channel>
	<title>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>
	<lastBuildDate>Sun, 08 Jan 2012 23:21:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Google Street View finally comes to Canada</title>
		<link>http://unitstep.net/blog/2009/10/17/google-street-view-finally-comes-to-canada/</link>
		<comments>http://unitstep.net/blog/2009/10/17/google-street-view-finally-comes-to-canada/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 17:45:43 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
				<category><![CDATA[canada]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[street-view]]></category>

		<guid isPermaLink="false">http://unitstep.net/?p=1031</guid>
		<description><![CDATA[After much delay, possibly due to government meddling, Google Street View finally went live in select Canadian cities last week! Most of the GTA is covered, along with Kitchener/Waterloo, Ottawa, Montreal, Quebec City, Halifax, Calgary and Vancouver. This likely ensures coverage for a majority of Canada&#8217;s population, if only a very small minority of its [...]]]></description>
			<content:encoded><![CDATA[<p class="image align-right"><a href="http://unitstep.net/wordpress/wp-content/uploads/2009/10/google-street-view-canada.jpg"><img src="http://unitstep.net/wordpress/wp-content/uploads/2009/10/google-street-view-canada-150x150.jpg" alt="google-street-view-canada" title="google-street-view-canada" width="150" height="150" class="alignnone size-thumbnail wp-image-1049" /></a></p>
<p>After much delay, possibly due to government meddling, Google Street View <a href="http://www.cbc.ca/technology/story/2009/10/07/tech-internet-google-street-view-toronto.html">finally went live in select Canadian cities</a> last week! Most of the GTA is covered, along with Kitchener/Waterloo, Ottawa, Montreal, Quebec City, Halifax, Calgary and Vancouver.  This likely ensures coverage for a majority of Canada&#8217;s population, if only a very small minority of its geographical area.</p>
<p>This is a welcome move, since street view has been available for our neighbours to the south for the past two years.</p>
<p>According to some reports, Street View was <a href="http://network.nationalpost.com/np/blogs/toronto/archive/2009/04/09/toronto-s-google-street-view-goes-live-within-weeks.aspx">supposed to launch in Canada earlier this year</a>, and some of the imagery was collected as early as 2007. (Though the images around my area seem to be from early this year) Oh well, this is better late than never!</p>
<p>I&#8217;m speculating that the government&#8217;s concern with Google Street View may have slowed deployment, as in 2007 the privacy commissioner <a href="http://www.cbc.ca/canada/story/2007/09/11/streetview-commissioner-privacy.html">voiced strong concerns against the technology</a>.  I&#8217;ve never believed any of that FUD, but it seems that their concerns have been addressed with Google&#8217;s automatic detection and blurring of faces and license plates, along with new straightforwards processes to request that your image be removed from the service.</p>
<p>But it&#8217;s still been much ado about nothing, not really like the <a href="http://mashable.com/2009/07/17/canada-facebook-privacy/">conflict between the government and Facebook</a> earlier this year, which was also <a href="http://www.thestar.com/news/canada/article/682182">subsequently resolved</a>.  In the case with Facebook, privacy settings were often complicated and unclear; with Google Street view, they&#8217;re merely providing public views of public places, so I don&#8217;t see what the problem with that is.</p>
<h2>Also available on the iPhone/iPod Touch</h2>
<p>You can also use Street View on the built in Maps app for the iPhone OS, though it&#8217;s a <a href="http://googlesightseeing.com/2008/11/24/google-street-view-on-iphone/">bit convoluted</a> since there&#8217;s no &#8220;Street View&#8221; button to toggle.  Instead, you must first drop a pin (click on the &#8220;layer peel back&#8221; icon in the lower right corner) and then bring up the dialog box for that pin.  If it&#8217;s in an area with Street View present, the little guy icon on the left will be lit up and you should be able to click it to <a href="http://mashable.com/2009/10/07/google-street-view-canada/">bring up Street View</a>.</p>
<p>Street View only works in landscape mode but it&#8217;s still pretty useful for getting to know an area before you visit it for the first time.  Sometimes an actual image can convey sense better than just a map.</p>
<h2>Competition?</h2>
<p>It remains to be seen how the launch of Street View in Canada will fare for the similar service launched by Canpages in BC.  That service only covers <a href="http://communities.canada.com/vancouversun/blogs/techsense/archive/2009/10/07/google-street-view-launches-in-canada-today.aspx">Vancouver, Whistler and Squamish</a> but was launched back in March.</p>
<p>Nonetheless, it&#8217;s very neat technology, even if it was originally unveiled over two years ago.  Witness this by the fact that reporters are still drooling over it by embedding the service in <a href="http://www.theglobeandmail.com/news/technology/google-street-view-comes-to-canada/article1315242/">every article covering the launch</a>.</p>
<hr/>Copyright &copy; 2012 <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/2009/10/17/google-street-view-finally-comes-to-canada/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google App Engine for Java: First thoughts</title>
		<link>http://unitstep.net/blog/2009/04/15/google-app-engine-for-java-first-thoughts/</link>
		<comments>http://unitstep.net/blog/2009/04/15/google-app-engine-for-java-first-thoughts/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 23:29:22 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
				<category><![CDATA[app engine]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web2.0]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[web applications]]></category>

		<guid isPermaLink="false">http://unitstep.net/?p=866</guid>
		<description><![CDATA[When Google launched App Engine about one year ago, many were excited about their expected move into the cloud computing space, but at the same time, dismayed that it only supported Python, a language seemingly favoured at the Mountain View-headquartered company. However, Google was adamant that they would begin supporting new languages and began taking [...]]]></description>
			<content:encoded><![CDATA[<p class="image align-right"><img src="http://unitstep.net/wordpress/wp-content/uploads/2009/04/google-app-engine-java.jpg" alt="google-app-engine-java" title="google-app-engine-java" width="175" height="154" class="alignnone size-full wp-image-873" /></p>
<p>When Google <a href="http://www.readwriteweb.com/archives/google_cloud_control.php">launched App Engine about one year ago</a>, many were excited about their expected move into the cloud computing space, but at the same time, dismayed that it only supported Python, a language seemingly favoured at the Mountain View-headquartered company.</p>
<p>However, Google was adamant that they would begin supporting new languages and <a href="http://code.google.com/p/googleappengine/issues/list">began taking requests on their issue tracker</a> for what language to support next.  So, it was no surprise that <a href="http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html">support for Java was announced last week</a> as part of an <a href="http://code.google.com/appengine/docs/java/overview.html">&#8220;Early Look&#8221;</a> at the feature. </p>
<h2>I qualified for signup!</h2>
<p>The <a href="http://code.google.com/appengine/">Google App Engine page</a> indicated that access would be limited to the first 10,000 developers who signed up, but I was able to get approved for access after signing up over the weekend, even though Java support was launched last Wednesday on April 8th.  Google has since expanded the &#8220;early Look&#8221; <a href="http://googleappengine.blogspot.com/2009/04/early-look-at-java-language-support.html">to accommodate a total of 25,000 developers</a>, so be sure to sign up if you can!</p>
<p>The choice of Java as the next language to support was no big surprise, as indicated by <a href="http://java.dzone.com/news/will-google-app-engine-ever-su">many</a> <a href="http://news.cnet.com/8301-17939_109-10074158-2.html">articles</a> speculating on the matter.</p>
<p>Furthermore, Java is one of the most popular languages out there, both outside and inside Google, making it a logical choice.  This is seen by the numerous Java projects Google has created/supported, such as <a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a> and <a href="http://code.google.com/p/google-guice/">Google Guice</a>.  Additionally, Java is second to none when it comes to a viable developer ecosystem, which has resulted in great open source projects such as <a href="http://www.jboss.com/">JBoss</a>, the <a href="http://commons.apache.org/">Apache Commons</a> collections, and other libraries/frameworks that have provided great tools to any Java developer, allowing them focus on developing their application instead of worrying about lower-level problems.  There are also a great many websites out there running on J2EE, such as <a href="http://www.linkedin.com/">LinkedIn</a> and numerous corporate websites.</p>
<h2>App Engine as a enabler for free/cheap Java hosting</h2>
<p>However, this hasn&#8217;t translated into the availability of cheap web hosting for J2EE/Java development.  Typically, web hosting for a shared-server solution will be only a few dollars per month if you&#8217;re using a scripting/interpreted language like <acronym class="uttInitialism" title="PHP: Hypertext Preprocessor">PHP</acronym>, Python or Perl.  If you want to develop Java web applications though, you&#8217;ll likely have to pay much more due to the complexity and overhead of the hosting provider having to run a Java VM.</p>
<p>As outlined in <a href="http://newfoo.net/2009/04/08/google-app-engine-will-change-java-web-development.html">this somewhat overly optimistic article</a>, Google&#8217;s support for Java in App Engine has the potential to change the game by offering a cheap/low-cost, or in most cases, a free solution to allow developers to begin creating J2EE/Java-based web applications.  This will have the effect of encouraging greater adoption of J2EE as a server-side solution.  In my opinion, the high cost of Java web hosting has indeed hampered its adoption by the community, as compared to alternatives like <acronym class="uttInitialism" title="PHP: Hypertext Preprocessor">PHP</acronym>, Python and Ruby.</p>
<h2>Hello, World</h2>
<p>As for me, I&#8217;m currently devoting my free time to experimenting on App Engine using Java.  So far, the <a href="http://code.google.com/appengine/docs/java/runtime.html">documention</a> and <a href="http://code.google.com/appengine/docs/java/gettingstarted/creating.html">tutorial</a> seem to be fairly well-written and easy to follow, and for the most part App Engine is using the standard Java APIs for providing most of their service functionality.  Furthermore, Google has made an <a href="http://code.google.com/appengine/docs/java/tools/eclipse.html">excellent Eclipse plugin</a> for App Engine Java support, which provides not only the SDK, but also a built-in development server/Jetty-based servlet container for local testing, but also the tools necessary to upload your application to Google&#8217;s servers directly from the IDE.  Another reason why <a href="/blog/2008/02/10/eclipse-the-best-and-only-ide-youll-ever-need/">Eclipse is the best IDE</a> out there.</p>
<p>I hope to have something working within a few days, at least to test the service and play around with its capabilities.  Overall, I&#8217;m very impressed!</p>
<hr/>Copyright &copy; 2012 <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/2009/04/15/google-app-engine-for-java-first-thoughts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Google Chrome to work with Hotmail</title>
		<link>http://unitstep.net/blog/2009/01/17/getting-google-chrome-to-work-with-hotmail/</link>
		<comments>http://unitstep.net/blog/2009/01/17/getting-google-chrome-to-work-with-hotmail/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 00:12:02 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
				<category><![CDATA[browsers]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[hotmail]]></category>
		<category><![CDATA[webmail]]></category>

		<guid isPermaLink="false">http://unitstep.net/?p=654</guid>
		<description><![CDATA[Like many, I&#8217;ve been using Chrome occasionally ever since it came out back in September. I never really had any problems with any sites, and was impressed with how fast it left the &#8220;Beta&#8221; stage, considering Google&#8217;s affinity for the term. Initially, I had no problem using Hotmail with Chrome. (Yes, I still have a [...]]]></description>
			<content:encoded><![CDATA[<p class="image align-right"><img src="http://unitstep.net/wordpress/wp-content/uploads/2009/01/chrome.jpg" alt="chrome" title="chrome" width="230" height="150" class="alignnone size-full wp-image-657" /></p>
<p>Like many, I&#8217;ve been using Chrome occasionally ever since it <a href="http://unitstep.net/blog/2008/09/02/google-chrome-what-it-offers/">came out back in September</a>.<br />
I never really had any problems with any sites, and was impressed with how <a href="http://www.sitepoint.com/blogs/2008/12/12/google-chrome-leaves-beta/">fast it left the &#8220;Beta&#8221; stage</a>, considering Google&#8217;s affinity for the term.  </p>
<p>Initially, I had no problem using Hotmail with Chrome.  (Yes, I still have a Hotmail account from years ago, even after switching to Gmail for almost all of my needs) But recently, it stopped working for me &#8211; basically, I could go to the Inbox, but clicking on any of the messages or trying to compose a new email would not working.  Basically, none of the links worked.  I can&#8217;t pinpoint the exact date that this occurred, but it was likely after an update to the Hotmail site.</p>
<p>The fix is really quite simple, which I found on the <a href="http://www.google.com/support/forum/p/Chrome/thread?tid=2310ae4a53724ea5&#038;hl=en">Chrome Help Forums</a>.  You just need to alter your shortcut to Chrome to add an option/parameter when it&#8217;s run.  If you right-click the icon/shortcut that&#8217;s used to launch Chrome, you should see something like this in the &#8220;Target&#8221; field:</p>
<pre><code>"C:\Documents and Settings\&lt;user name&gt;\Local Settings\Application Data\Google\Chrome\Application\chrome.exe"</code></pre>
<p>Change it to this, adding the <code>--user-agent</code> option to the end.</p>
<pre><code>"C:\Documents and Settings\&lt;user name&gt;\Local Settings\Application Data\Google\Chrome\Application\chrome.exe" --user-agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1 Safari/525.1"</code></pre>
<p>Note that in the above two examples, <code>user name</code> is meant to be the folder of the currently-logged in user.  Change as appropriate.  Note that even though the help forum is talking about the 2.0 Developer Beta version, I found that this fix worked with the latest 1.0.154.43 release.</p>
<p>From what I gather, this &#8220;fix&#8221; just makes Chrome identify itself as another type of browser, which apparently makes Hotmail serve up the proper pages to Chrome.  If this is true, this would mean Microsoft deliberately disabled Hotmail for Chrome users.  This would not be surprising, as Google has been trying to <a href="http://www.lifehacker.com.au/tips/2008/12/27/firefox_and_chrome_run_gmail_twice_as_fast_as_ie_says_google-2.html">sway users away from Internet Explorer</a> (especially 6.0) by recommending other browsers (such as Chrome) when using Gmail.  </p>
<p>It appears that the Browser Wars are again moving into webmail as a sort of proxy battle.</p>
<hr/>Copyright &copy; 2012 <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/2009/01/17/getting-google-chrome-to-work-with-hotmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google&#8217;s SearchWiki: Promote Search Results!</title>
		<link>http://unitstep.net/blog/2008/11/21/googles-searchwiki-promote-search-results/</link>
		<comments>http://unitstep.net/blog/2008/11/21/googles-searchwiki-promote-search-results/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 01:13:01 +0000</pubDate>
		<dc:creator>Peter Chng</dc:creator>
				<category><![CDATA[google]]></category>
		<category><![CDATA[search engine]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[digg]]></category>
		<category><![CDATA[promote]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[searchwiki]]></category>

		<guid isPermaLink="false">http://unitstep.net/?p=570</guid>
		<description><![CDATA[Yesterday, Google launched its SearchWiki tools, which allows registered users to promote or remove entries from a Google search to further personalize results. This will allow users to customize and tailor the results to what they&#8217;re interested in, but it&#8217;s worthwhile to note that Google has probably done something similar with their personalized search histories, [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, Google launched its <a href="http://googleblog.blogspot.com/2008/11/searchwiki-make-search-your-own.html">SearchWiki tools</a>, which allows registered users to promote or remove entries from a Google search to further personalize results. This will allow users to customize and tailor the results to what they&#8217;re interested in, but it&#8217;s worthwhile to note that Google has probably done something similar with their personalized search histories, already offered to registered users.</p>
<p>A few things to note: Firstly, while the act of promoting or removing a search result seems very akin to Digg, the result is not the same.  The changes you make only affect your own search results, and Google is very clear on this.  However, it would be madness to believe that Google would not use the data gathered from this social experiment to further improve their algorithms.  You also have the option of adding your own results to further personalize your searches and there is an option for seeing what <em>others</em> have recommended/promoted or removed, providing for an interesting social experiment.</p>
<p class="image">
<a href="http://unitstep.net/wordpress/wp-content/uploads/2008/11/google-promote.jpg"><img src="http://unitstep.net/wordpress/wp-content/uploads/2008/11/google-promote.jpg" alt="" title="google-promote" width="417" height="288" class="alignnone size-full wp-image-571" /></a>
</p>
<p>Secondly, as this <a href="http://blogs.wsj.com/biztech/2008/11/21/google-no-longer-the-same-search-results/">WSJ blog notes</a>, this ability may annoy people who have used SEO tactics to improve their site&#8217;s placement in Google&#8217;s search rankings.  However, I find this complaint misses the point: Search is supposed to simplify people&#8217;s lives, and if they&#8217;ve promoted or removed a link it was because they found something to be more useful or irrelevant.  </p>
<p>This isn&#8217;t yet a &#8220;wisdom of the crowds&#8221; approach to search results, but its undoubtedly a step forward towards a hybrid approach that takes in more human input to determine the quality of results and their placement.  One can only hope it will improve with time!</p>
<hr/>Copyright &copy; 2012 <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/21/googles-searchwiki-promote-search-results/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<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 a [...]]]></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 &#8211; 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://unitstep.net/wordpress/wp-content/uploads/2008/11/chart1.png" 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://unitstep.net/wordpress/wp-content/uploads/2008/11/chart2.png" 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://unitstep.net/wordpress/wp-content/uploads/2008/11/chart3.png"></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&amp;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>
<p class="note less">Note: The information and graph images here reflect the state of the Google Chart API as of the date of publication. (2008-11-06)</p>
<hr/>Copyright &copy; 2012 <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>
		<slash:comments>18</slash:comments>
		</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 to the [...]]]></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 &#8211; 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 &#8211; 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; 2012 <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>
		<slash:comments>0</slash:comments>
		</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[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[JavaScript]]></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 [...]]]></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; 2012 <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>
		<slash:comments>3</slash:comments>
		</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[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[JavaScript]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[reviews]]></category>
		<category><![CDATA[web2.0]]></category>
		<category><![CDATA[XHTML]]></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 [...]]]></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 &#8211; 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 &#8211; 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 &#8211; 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 &#8211; the combined address bar/search bar is very much like Firefox 3&#8242;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 &#8211; 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; 2012 <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>
		<slash:comments>6</slash:comments>
		</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[development]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[maps]]></category>
		<category><![CDATA[PHP]]></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 create [...]]]></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>
<h4>Projects using this</h4>
<ul>
<li><a href="http://www.willemstoker.nl/VOR/">VORG Tool</a></li>
</ul>
<hr/>Copyright &copy; 2012 <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>
		<slash:comments>17</slash:comments>
		</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 a non-interactive [...]]]></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 &#8211; 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 &#8211; 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 &#8211; even if it doesn&#8217;t match <code>localhost</code> &#8211; 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; 2012 <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>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

