<?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>BadPopcorn &#187; Google</title>
	<atom:link href="http://badpopcorn.com/blog/category/technology/google/feed/" rel="self" type="application/rss+xml" />
	<link>http://badpopcorn.com/blog</link>
	<description>Solutions for anything... except popcorn.</description>
	<lastBuildDate>Mon, 12 Apr 2010 15:38:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google Charts in Rails, gchartrb</title>
		<link>http://badpopcorn.com/blog/2008/09/08/rails-google-charts-gchartrb/</link>
		<comments>http://badpopcorn.com/blog/2008/09/08/rails-google-charts-gchartrb/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 17:00:19 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://badpopcorn.com/blog/?p=943</guid>
		<description><![CDATA[This week I was playing around with Google Charts, a wonderful API for creating charts via a URL. While I developed a helper class to create charts more easily in Rails, I did a little research and realized the RubyGem gchartrb has a great API for creating these charts. Here&#8217;s a quick tutorial on using [...]]]></description>
			<content:encoded><![CDATA[<p>This week I was playing around with <a href="http://code.google.com/apis/chart/">Google Charts</a>, a wonderful API for creating charts via a URL. While I developed a helper class to create charts more easily in Rails, I did a little research and realized the RubyGem <a href="http://code.google.com/p/gchartrb/">gchartrb</a> has a great API for creating these charts. Here&#8217;s a quick tutorial on using gchartrb from the ground up.</p>
<p><strong>Installing gchartrb</strong><br />
To install gchartrb, simply use the command <code>gem install gchartrb</code> from your command prompt. Check out these <a href="http://code.google.com/p/gchartrb/">instructions</a> for additional help and to access the gchartrb packages (Downloadable <a href="http://code.google.com/p/gchartrb/downloads/list">here</a>).</p>
<p><strong>Quick Examples</strong><br />
Now that we have our gem installed, we can create graphs right away. First, remember to require the gem at the top of your code. Notice how the gchartrb gem is actually called &#8220;google_chart&#8221;:</p>
<div class="CodeRay">
<pre><code>1 require 'rubygems'
2 require 'google_chart'</code></pre>
</div>
<p>There are a couple ways that you can create a chart. You can instantiate the graph and then add attributes to it:</p>
<div class="CodeRay">
<pre><code>1 lc = GoogleChart::LineChart.new("400x200", "My Results", false)</code></pre>
</div>
<p>Alternatively, you can create the graph and add the attributes within a block:</p>
<div class="CodeRay">
<pre><code>1 GoogleChart::LineChart.new("400x200", "My Results", false) do |lc|
2 # Put lc data here
3 # ...
4 puts lc.to_url
5 end</code></pre>
</div>
<p>I personally prefer the latter method, as the creation of the graph and its attributes are kept together in a modular fashion.</p>
<p>Here are some examples of line, bar, and pie charts:</p>
<p><strong>Line Chart</strong></p>
<div class="CodeRay">
<pre><code>1 lc = GoogleChart::LineChart.new("400x200", "My Results", false)
2 lc.data "Line green", [3,5,1,9,0,2], '00ff00'
3 lc.data "Line red", [2,4,0,6,9,3], 'ff0000'
4 lc.axis :y, :range =&amp;gt; [0,10], :font_size =&amp;gt; 10, :alignment =&amp;gt; :center
5 lc.show_legend = false
6 lc.shape_marker :circle, :color =&amp;gt; '0000ff', :data_set_index =&amp;gt; 0, :data_point_index =&amp;gt; -1, :pixel_size =&amp;gt; 10
7 puts lc.to_url</code></pre>
</div>
<p><img src="http://chart.apis.google.com/chart?chxt=y&#038;cht=lc&#038;chd=s:UhG9AN,NbAo9U&#038;chs=400x200&#038;chxr=0,0,10&#038;chco=00ff00,ff0000&#038;chtt=My+Results&#038;chxs=0,10,0&#038;chm=o,0000ff,0,-1,10" /></p>
<p>Notice that each lc.data call will create a new data line for you. The second parameter accepts a integer or float array, which can be anything you like. Lets say you have a <code>WeighIn</code> model that has <code>weight</code> as an attribute and belongs to some <code>Person</code>. If a person weighs himself/herself once a month for a year, then we can collect that data and show your trend via a line graph. Collecting that data and using it would look like this:</p>
<div class="CodeRay">
<pre><code># In the controller Person
def show
@person = Person.find(params[:id])
weigh_ins = @person.weigh_ins.collect(&amp;amp;:weight)

lc = GoogleChart::LineChart.new("#{width}x200", "My Results", false)
lc.data "Weigh ins", weigh_ins, green
# etc, etc...
puts lc.to_url # Or @line_graph = lc.to_url
end</code></pre>
</div>
<p>Another useful function, <code>lc.axis</code>, can be used to specify your own data range labels, but it is not required to create a chart (default ranges and labels will be used). The last function, <code>lc.to_url</code>, takes the information specified for the line chart and puts it into the Google charts url.</p>
<p><strong>Bar Chart</strong></p>
<div class="CodeRay">
<pre><code>1 bar_1_data = [350,110,700]
2 bar_2_data = [200,800,50]
3 color_1 = 'c53711'
4 color_2 = '0000ff'
5 names_array = ["Bob","Stella","Foo"]
6 GoogleChart::BarChart.new("600x300", "Horizontal Bar Graph", :horizontal, false) do |bc|
7 bc.data "FirstResultBar", bar_1_data, color_1
8 bc.data "SecondResultBar", bar_2_data, color_2
9 bc.axis :y, :labels =&amp;gt; names_array, :font_size =&amp;gt; 10
10 bc.axis :x, :range =&amp;gt; [0,1000]
11 bc.show_legend = false
12 bc.stacked = true
13 bc.data_encoding = :extended
14 bc.shape_marker :circle, :color =&amp;gt; '00ff00', :data_set_index =&amp;gt; 0, :data_point_index =&amp;gt; -1, :pixel_size =&amp;gt; 10
15 puts bc.to_url
16 end</code></pre>
</div>
<p><img src = "http://chart.apis.google.com/chart?chxt=y,x&#038;chxl=0:|Bob|Stella|Foo&#038;cht=bhg&#038;chd=e:b.Iz3.,P...D.&#038;chs=450x220&#038;chxr=1,0,1000&#038;chco=c53711,0000ff&#038;chtt=Horizontal+Bar+Graph&#038;chxs=0,10&#038;chm=o,00ff00,0,-1,10"/></p>
<p>An interesting attribute to pay attention to is <code>bc.stacked</code>, which gives you the ability to stack bar data, or to create separate bars together. When <code>bc.stacked = false</code>, the chart above is what is shown.</p>
<p>If <code>bc.stacked = true</code>, the same data will look like this:</p>
<p><img src = "http://chart.apis.google.com/chart?chxt=y,x&#038;chxl=0:|Bob|Stella|Foo&#038;cht=bhs&#038;chd=e:YnHvxO,OE4QDh&#038;chs=450x130&#038;chxr=1,0,1000&#038;chco=c53711,0000ff&#038;chtt=Horizontal+Bar+Graph&#038;chxs=0,10&#038;chm=o,00ff00,0,-1,10"/></p>
<p>Also, if you wanted to use this code in one of your controllers, and then display the graph in a template (view) file, you would set the graph&#8217;s url in the controller: <code>@graph = bc.to_url</code> Then within the view, you can simple show the graph as an image like this: </p>
<div class="CodeRay">
<pre><code>&lt;!-- From within the view file --&gt; 
&lt;img src="&lt;%= @graph %&gt;"/&gt;</code>
</pre>
</div>
<p><strong>Pie Chart</strong></p>
<div class="CodeRay">
<pre><code>1 GoogleChart::PieChart.new('320x200', "Pie Chart",false) do |pc| 
2 pc.data "Apples", 40 
3 pc.data "Banana", 20 
4 pc.data "Peach", 30 
5 pc.data "Orange", 60 
6 puts "\nPie Chart" 
7 puts pc.to_url 
8 # Pie Chart with no labels 
9 pc.show_labels = false 
10 puts "\nPie Chart (with no labels)" 
11 puts pc.to_url 
12 end</code></pre>
</div>
<p><img src = "http://chart.apis.google.com/chart?chl=Apples|Banana|Peach|Orange&#038;cht=p&#038;chd=s:oUe9&#038;chs=320x200&#038;chtt=Pie+Chart"/></p>
<p><img src = "http://chart.apis.google.com/chart?cht=p&#038;chd=s:oUe9&#038;chs=320x200&#038;chtt=Pie+Chart"/></p>
<p>This last example was taken from <a href="http://gchartrb.rubyforge.org/files/README_txt.html"> gchartrb&#8217;s readme</a> file, which has an example for each kind of chart you can create (including Venn diagrams, Scatter charts, XY Line charts, etc). Notice that the data does not need to be within 0 to 100 (like percents on the pie chart) &#8211; the data will be added together and scaled appropriately by gchartrb. If you want to make the chart 3d, either set the 3rd parameter on <code>PieChart.new</code> to <code>true</code>, or you can set the attribute manually: <code>pc.is_3d = true</code></p>
<p><strong>Useful parameters</strong></p>
<p>Google charts, by default, works with the data range between 0 and 100. Most of the time, your values will not work with this same scale. Instead of converting your data to the default scale, you can specify the data range with the <code>:range</code> parameter in <a href="http://gchartrb.rubyforge.org/classes/GoogleChart/Base.html#M000017"><code>bc.axis</code></a>. So if you data was between 1 and 12 on the x_axis (like months in a year), then you could specify that range like so:<br />
<code>lc.axis :x, :range =&amp;gt; [1,12], :labels =&amp;gt; month_names_array</code></p>
<p>If you&#8217;re working with large data sets/numbers, then you may have chart data that is slightly off the mark. The default encoding that gchartrb uses is called <a href="http://code.google.com/apis/chart/#simple">Simple Encoding</a>, which only has 62 points of resolution. We can easily expand this resolution (to 4096 points of resolution) by using <a href="http://code.google.com/apis/chart/#extended">Extended encoding</a>, which a chart can select by changing the <code>data_encoding</code> attribute with <code>:extended</code>. For a line graph <code>lc</code>, it would look like this: <code>lc.data_encoding = :extended</code>. See <a href="http://code.google.com/apis/chart/#chart_data">Chart data</a> for an explanation for all the encodings Google charts uses.</p>
<p><strong>gchartrb subtlities</strong></p>
<p>While gchartrb provides a great API for create charts in Rails, there are some subtle details about gcharts that you should be aware of. First of all, all charts derive from the base class <a href="http://gchartrb.rubyforge.org/classes/GoogleChart/Base.html">GoogleChart::Base</a> &#8211; check it out to see all the methods and attributes that apply to all charts. Secondly, gchartrb encodes all of the data values in <code>some_chart.data</code> from numeric form into a string representation of the data. This conversion doesn&#8217;t effect the final output of your chart, and helps make the chart url shorter in length. Again, if your working with large values, make sure the use the extended coding by using <code>lc.data_encoding :extended</code>.</p>
<p><strong>Other Resources</strong><br />
Now that you have a taste of Google Charts with gchartrb, check out the API documentation <a href="http://gchartrb.rubyforge.org/">here</a>. If gchartrb doesn&#8217;t suit your tastes, you can go directly to the <a href="http://code.google.com/apis/chart/">Google Charts API</a> &#8211; it is thorough and self-explanatory. Ajaxian shows a number of quick examples of Google Charts <a href="http://ajaxian.com/archives/use-the-google-chart-api-to-create-charts-for-your-web-applications">here</a>, and Matthew Bass gives a solid introduction to Google Charts and a few examples with gchartrb <a href="http://www.infoq.com/articles/bass-google-charts-gchartrb">here</a>. Lastly, here is a great link for <a href="http://www.collegeathome.com/blog/2008/06/05/50-cool-things-you-can-do-with-google-charts-api/">50 Cool Things You Can Do with Google Charts</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://badpopcorn.com/blog/2008/09/08/rails-google-charts-gchartrb/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google Health</title>
		<link>http://badpopcorn.com/blog/2008/05/20/google-health/</link>
		<comments>http://badpopcorn.com/blog/2008/05/20/google-health/#comments</comments>
		<pubDate>Tue, 20 May 2008 21:55:57 +0000</pubDate>
		<dc:creator>Moe</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Life Stuff]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://badpopcorn.com/blog/?p=938</guid>
		<description><![CDATA[Google health launched today and could be really big. The new Google product will let you store and manage all of your health information in one central place. I think this is a great step forward for the online medical community. Sites like webmd are very informative but not personal. I can only imagine the [...]]]></description>
			<content:encoded><![CDATA[<p>Google health launched today and could be really big. The new Google product will let you store and manage all of your health information in one central place. I think this is a great step forward for the online medical community. Sites like <a href="http://www.webmd.com">webmd</a> are very informative but not personal. I can only imagine the amount of data Google will be able to index now. But hey, it&#8217;s free.</p>
<p>I hope Google doesn&#8217;t drop the ball on the social side, because it could be really helpful to a lot of people. Let users rate and comment on doctors and perhaps even view your friend&#8217;s doctors. Let users exchange medical treatments they tried out and give first hand accounts of medications. I&#8217;m tired of going to sites that pretend to be informative when, in actuality, are trying to push a certain new medication or treatment process on you.</p>
<ul>
<li>Start tracking a medical history and learn about your conditions</li>
<li>Import your medical records</li>
<li>View your medical history</li>
<li>Find out how medications might interact</li>
<li>Make your health information work for you</li>
<li>Search for doctors and hospitals</li>
</ul>
<p>Find out more information <a href="https://www.google.com/health/html/tour/index.html">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://badpopcorn.com/blog/2008/05/20/google-health/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Charts API, examples.</title>
		<link>http://badpopcorn.com/blog/2008/04/07/google-charts-api-examples/</link>
		<comments>http://badpopcorn.com/blog/2008/04/07/google-charts-api-examples/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 23:12:56 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://badpopcorn.com/blog/2008/04/07/google-charts-api-examples/</guid>
		<description><![CDATA[I was finally playing with the Google Charts API so I could learn it&#8230; I will forgo the hurdles and issues I have with it&#8230; I just wanted to dump out the examples I made while learning it&#8211; for future reference.
A simple line chart.


Line XY chart with two lines. The first line has Circle markers [...]]]></description>
			<content:encoded><![CDATA[<p>I was finally playing with the Google Charts API so I could learn it&#8230; I will forgo the hurdles and issues I have with it&#8230; I just wanted to dump out the examples I made while learning it&#8211; for future reference.</p>
<p>A simple line chart.<br />
<img src="http://chart.apis.google.com/chart?cht=lc&#038;chs=300x300&#038;chd=t:-10,5,0,5,10,80&#038;chds=-10,80&#038;chg=5,5" /></p>
<p><span id="more-936"></span></p>
<p>Line XY chart with two lines. The first line has Circle markers at each point.<br />
<img src="http://chart.apis.google.com/chart?cht=lxy&#038;chs=300x300&#038;chd=t:0,5,15,80|0,5,10,0|5,10|10,5&#038;chg=5,5&#038;chm=o,FF0000,0,-1,10" /></p>
<p>A Sparkline, which uses Line Chart parameters<br />
<img src="http://chart.apis.google.com/chart?cht=ls&#038;chs=30x30&#038;chd=t:0,5,15,80&#038;chm=o,FF0000,0,-1,10" /></p>
<p>Horizontal Bar Chart<br />
<img src="http://chart.apis.google.com/chart?cht=bhs&#038;chs=300x300&#038;chd=t:0,5,15,80&#038;chm=o,FF0000,0,-1,10" /></p>
<p>Vertical Bar Chart<br />
<img src="http://chart.apis.google.com/chart?cht=bvs&#038;chs=300x300&#038;chd=t:0,5,15,80&#038;chm=o,FF0000,0,-1,10" /></p>
<p>Vertical Bar Chart with TWO sets of data.<br />
<img src="http://chart.apis.google.com/chart?cht=bvs&#038;chs=300x300&#038;chd=t:0,5,15,80|5,10,20,100&#038;chm=o,FF0000,0,-1,10&#038;chco=4d89f9,c6d9fd" /></p>
<p>A pie chart.<br />
<img src="http://chart.apis.google.com/chart?cht=p&#038;chs=300x300&#038;chd=t:10,5,15,80&#038;chm=o,FF0000,0,-1,10&#038;chco=4d89f9,c6d9fd" /></p>
<p>Scatter chart<br />
<img src="http://chart.apis.google.com/chart?cht=s&#038;chs=300x300&#038;chd=t:10,5,15,80|10,20,30,40&#038;chm=o,FF0000,0,-1,10&#038;chco=4d89f9,c6d9fd" /></p>
<p>LineXy chart with 2 colored lines&#8230; colored points. and with legend<br />
<img src="http://chart.apis.google.com/chart?cht=lxy&#038;chs=300x300&#038;chd=t:10,5,15,80|1,20,30,40|10,20,30|10,20,30&#038;chm=o,FF0000,0,-1,10|o,00FF00,1,-1,10&#038;chdl=hi|bye&#038;chco=4d89f9,c6d9fd" /></p>
]]></content:encoded>
			<wfw:commentRss>http://badpopcorn.com/blog/2008/04/07/google-charts-api-examples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A New Way to look at Networking</title>
		<link>http://badpopcorn.com/blog/2006/09/05/a-new-way-to-look-at-networking/</link>
		<comments>http://badpopcorn.com/blog/2006/09/05/a-new-way-to-look-at-networking/#comments</comments>
		<pubDate>Tue, 05 Sep 2006 22:04:34 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://badpopcorn.com/2006/09/05/a-new-way-to-look-at-networking/</guid>
		<description><![CDATA[Van Jacobson has, in his Google TechTalk, many good quotes&#8230; my two favorite:
&#8220;Data&#8217;s got a name, not a location.&#8221; &#8212; Van Jacobson
&#8220;Data doesn&#8217;t live anywhere; where ever it is, it&#8217;s great.&#8221; &#8212; Van Jacobson
]]></description>
			<content:encoded><![CDATA[<p>Van Jacobson has, in his <a href="http://video.google.com/videoplay?docid=-6972678839686672840">Google TechTalk</a>, many good quotes&#8230; my two favorite:</p>
<blockquote><p>&#8220;Data&#8217;s got a name, not a location.&#8221; &#8212; Van Jacobson</p></blockquote>
<blockquote><p>&#8220;Data doesn&#8217;t live anywhere; where ever it is, it&#8217;s great.&#8221; &#8212; Van Jacobson</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://badpopcorn.com/blog/2006/09/05/a-new-way-to-look-at-networking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tunnel to Gmail</title>
		<link>http://badpopcorn.com/blog/2006/07/17/tunnel-to-gmail/</link>
		<comments>http://badpopcorn.com/blog/2006/07/17/tunnel-to-gmail/#comments</comments>
		<pubDate>Mon, 17 Jul 2006 22:01:58 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://badpopcorn.com/2006/07/17/tunnel-to-gmail/</guid>
		<description><![CDATA[I am in Venezia, Italia and my host has graciously let me use her computer to check email. There&#8217;s only one problem&#8230; Google&#8217;s services (email, reader, hosted, analytics, etc) have been unavailable to me for the past five hours. There&#8217;s a problem upstream, somewhere, that prevents me from getting to GMail. A friend, in the [...]]]></description>
			<content:encoded><![CDATA[<p>I am in <a href="http://en.wikipedia.org/wiki/Venice">Venezia, Italia</a> and my host has graciously let me use her computer to check email. There&#8217;s only one problem&#8230; Google&#8217;s services (email, reader, hosted, analytics, etc) have been unavailable to me for the past five hours. There&#8217;s a problem upstream, somewhere, that prevents me from getting to GMail. A friend, in the Bay Area, tells me&#8211; over IM chat&#8211; that he has perfect access to GMail. All this tells me that it&#8217;s just a regional access thing.</p>
<p>Anyways, I really needed to check my email and couldn&#8217;t wait for the problem to get resolved. So I just worked up a quick hack.</p>
<p>First, I edited the laptop&#8217;s hosts file (c:/windows/system32/drivers/etc/hosts) to add the following lines:</p>
<blockquote><p>127.0.0.1 google.com<br />
127.0.0.1 www.google.com<br />
127.0.0.1 mail.google.com</p></blockquote>
<p>Second, I launched the signed-jar copy of <a href="http://www.appgate.com/products/80_MindTerm/">Mindterm</a> that I have sitting on my website; I logged in to my dreamhost shell account (in the States) and set up a couple of ssh tunnels that redirected web traffic from the local loopback address to google.com:</p>
<blockquote><p>
127.0.0.1 port 80 -> google.com port 80<br />
127.0.0.1 port 443 -> google.com port 443
</p></blockquote>
<p>Finally, launched IE (she doesn&#8217;t have Firefox installed) for immediate access to GMail. <img src='http://badpopcorn.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>What did that really do?</p>
<p>Normal Case: IE talks directly to GMail. IE -> GMail.</p>
<p>But the Normal Case is broken.</p>
<p>My Workaround: IE talks to GMail through a third party. IE -> Dreamhost Server -> GMail.</p>
]]></content:encoded>
			<wfw:commentRss>http://badpopcorn.com/blog/2006/07/17/tunnel-to-gmail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Future Google Appliances</title>
		<link>http://badpopcorn.com/blog/2006/06/08/future-google-appliances/</link>
		<comments>http://badpopcorn.com/blog/2006/06/08/future-google-appliances/#comments</comments>
		<pubDate>Thu, 08 Jun 2006 09:34:11 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://badpopcorn.com/2006/06/08/future-google-appliances/</guid>
		<description><![CDATA[Kevin Dangoor suggests that we may eventually see Google provide an appliance for all our office needs.
Then I remember Cringley&#8217;s article suggesting a Google home entertainment appliance.
I would enjoy having nice simple, affordable, appliances to make my life easier. Heck, even though I love mucking with computer tech, I hate to spend all my time [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.blueskyonmars.com/2006/06/07/the-business-behind-google-spreadsheet/">Kevin Dangoor suggests</a> that we may eventually see Google provide an appliance for all our office needs.</p>
<p>Then I remember Cringley&#8217;s <a href="http://www.pbs.org/cringely/pulpit/pulpit20060105.html">article</a> suggesting a Google home entertainment appliance.</p>
<p>I would enjoy having nice simple, affordable, appliances to make my life easier. Heck, even though I love mucking with computer tech, I hate to spend all my time doing it. IT takes a lot of time to deal with, especially if one&#8217;s plans involve maintaining other locations (eg other family member&#8217;s homes). So if Google can come out with an appliance (all-in-one) that services all my office, entertainment and IT management needs, I would be all over it. But a message to Google: I just want something nice&#8211; and would appeal to my geek aesthetics&#8211; to just work, without it encumbering upon my freedoms (open integration, avoid lock-in).</p>
]]></content:encoded>
			<wfw:commentRss>http://badpopcorn.com/blog/2006/06/08/future-google-appliances/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Atom Publish Protocol and GData</title>
		<link>http://badpopcorn.com/blog/2006/04/20/atom-publish-protocol-and-gdata/</link>
		<comments>http://badpopcorn.com/blog/2006/04/20/atom-publish-protocol-and-gdata/#comments</comments>
		<pubDate>Fri, 21 Apr 2006 07:21:33 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://badpopcorn.com/2006/04/20/atom-publish-protocol-and-gdata/</guid>
		<description><![CDATA[The GData protocol introduced an optimistic locking convention, for resource editing, to the Atom Publish Protocol. The introduced method is quite simple: An Atom Entry&#8217;s edit URL is unique by version of the resource. Although the Google team&#8217;s method just added a version number to the end of the URL, the URL itself can be [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://code.google.com/">GData</a> protocol introduced an optimistic locking convention, for resource editing, to the <a href="http://ietfreport.isoc.org/idref/draft-ietf-atompub-protocol/">Atom Publish Protocol</a>. The introduced method is quite simple: An Atom Entry&#8217;s edit URL is unique by version of the resource. Although the Google team&#8217;s method just added a version number to the end of the URL, the URL itself can be random and is opaque of semantic meaning. This versioned URL method allows the server to know if a client is trying to update a resource based on stale information.</p>
<p>After some pause, I had a question: Would it be better to have such versioned URLs or would it be better to add meta information in the Atom entry?</p>
<p>The APP draft spec states:</p>
<blockquote><p>8.2.1  Editing entries with foreign markup<br />
   To avoid unintentional loss of data when editing entry collection<br />
   members, Atom Protocol clients SHOULD preserve all metadata,<br />
   including unknown foreign markup, that has not been intentionally<br />
   modified.</p></blockquote>
<p>This means that an APP client will send back the version information even if it doesn&#8217;t know anything about versioning, which would allow for the server to detect version conflicts.</p>
<p>However, the metadata method&#8217;s one weakness is in that it only works with Atom Entries and will not work for other Media. Besides this, I have not found any compelling evidence to support one method or another when ignoring the metadata weakness. And I can&#8217;t see either method breaking the REST model, so maybe it&#8217;s up to the APP Service API designer.</p>
<p>Then my brain took a tangent:</p>
<p>Doesn&#8217;t having version based edit URLs (http://example.com/pic.jpg/1/ and http://example.com/pic.jpg/2/) imply that there are two separate resources as opposed to a single resource? In general, should different versions of a resource be modeled as separated resources? Yet aren&#8217;t we talking about editing a resource published at a single URL: http://example.com/pic.jpg ? If we have two separate resources, then shouldn&#8217;t the published (linked to in a blog entry) URL be the latest versioned URL (http://example.com/pic.jpg/2/)? Or can we say that http://example.com/pic.jpg represents the lastest version in the &#8216;trunk&#8217;? Or am I splitting hairs since they may just be two sides of the same coin?</p>
<p>Ah that&#8217;s it for thinking out loud&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://badpopcorn.com/blog/2006/04/20/atom-publish-protocol-and-gdata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Reader Tag Delete</title>
		<link>http://badpopcorn.com/blog/2006/04/20/google-reader-tag-delete/</link>
		<comments>http://badpopcorn.com/blog/2006/04/20/google-reader-tag-delete/#comments</comments>
		<pubDate>Thu, 20 Apr 2006 18:58:07 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://badpopcorn.com/2006/04/20/google-reader-tag-delete/</guid>
		<description><![CDATA[I guess I was asleep when the Google Reader team pushed out better management changes. I can easily delete labels now   .

]]></description>
			<content:encoded><![CDATA[<p>I guess I was asleep when the Google Reader team pushed out better management changes. I can easily delete labels now <img src='http://badpopcorn.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .<br />
<a id="p157" rel="attachment" class="imagelink" href="http://badpopcorn.com/2006/04/20/google-reader-tag-delete/google-reader-editjpg/" title="google-reader-edit.jpg"><img id="image157" src="http://badpopcorn.com/wp-content/uploads/2006/04/google-reader-edit.jpg" alt="google-reader-edit.jpg" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://badpopcorn.com/blog/2006/04/20/google-reader-tag-delete/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Talk and AIM</title>
		<link>http://badpopcorn.com/blog/2005/12/21/google-talk-and-aim/</link>
		<comments>http://badpopcorn.com/blog/2005/12/21/google-talk-and-aim/#comments</comments>
		<pubDate>Wed, 21 Dec 2005 18:03:00 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://badpopcorn.com/?p=85</guid>
		<description><![CDATA[A press release announced the following:
Enabling Google Talk and AIM instant messaging users to communicate with each other, provided certain conditions are met
A nice first step. Let&#8217;s just hope that we can get AIM to use the open Jabber/XMPP protocol that Google uses. But I doubt that will happen anytime soon, if at all.
At the [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://www.google.com/intl/en/press/pressrel/twaol_expanded.html">press release</a> announced the following:</p>
<blockquote><p>Enabling Google Talk and AIM instant messaging users to communicate with each other, provided certain conditions are met</p></blockquote>
<p>A nice first step. Let&#8217;s just hope that we can get AIM to use the open <a href="http://en.wikipedia.org/wiki/XMPP">Jabber/XMPP protocol</a> that Google uses. But I doubt that will happen anytime soon, if at all.</p>
<p>At the very least, I think I&#8217;ll be able to stop using my AIM account and just use <a href="http://talk.google.com/">Google Talk</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://badpopcorn.com/blog/2005/12/21/google-talk-and-aim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google&#8217;s Internet</title>
		<link>http://badpopcorn.com/blog/2005/11/19/googles-internet/</link>
		<comments>http://badpopcorn.com/blog/2005/11/19/googles-internet/#comments</comments>
		<pubDate>Sat, 19 Nov 2005 17:57:44 +0000</pubDate>
		<dc:creator>Ben</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://badpopcorn.com/?p=56</guid>
		<description><![CDATA[Cringley&#8217;s latest post about Google focuses on a mystery shipping container found in a Google garage:
This shipping container is a prototype data center. Google hired a pair of very bright industrial designers to figure out how to cram the greatest number of CPUs, the most storage, memory and power support into a 20- or 40-foot [...]]]></description>
			<content:encoded><![CDATA[<p>Cringley&#8217;s latest <a href="http://www.pbs.org/cringely/pulpit/pulpit20051117.html">post</a> about Google focuses on a mystery shipping container found in a Google garage:</p>
<blockquote><p>This shipping container is a prototype data center. Google hired a pair of very bright industrial designers to figure out how to cram the greatest number of CPUs, the most storage, memory and power support into a 20- or 40-foot box. We&#8217;re talking about 5000 Opteron processors and 3.5 petabytes of disk storage that can be dropped-off overnight by a tractor-trailer rig. The idea is to plant one of these puppies anywhere Google owns access to fiber, basically turning the entire Internet into a giant processing and storage grid.
</p></blockquote>
<p>He then explores what (and how) Google might make use of this grid (World Internet Domination). I&#8217;m still digesting what he has said for my own take, but my own gut reactions are:</p>
<ul>
<li>It&#8217;s not only a Data Center itself, but can be <b>the key future</b> building block for even larger Data Centers.</li>
<li>Google may truely bring <a href="http://en.wikipedia.org/wiki/Grid_computing">grid computing</a> capabilities to the masses, something I don&#8217;t see Sun or IBM doing well.</li>
<li>This is one big fun geek toy that I want to get my hands on. <img src='http://badpopcorn.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://badpopcorn.com/blog/2005/11/19/googles-internet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
