<?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>OJ's rants &#187; Google</title>
	<atom:link href="http://buffered.io/category/google/feed/" rel="self" type="application/rss+xml" />
	<link>http://buffered.io</link>
	<description>What would OJ do?</description>
	<lastBuildDate>Tue, 06 Jul 2010 20:32:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>The Future is Erlang</title>
		<link>http://buffered.io/2009/10/31/the-future-is-erlang/</link>
		<comments>http://buffered.io/2009/10/31/the-future-is-erlang/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 10:28:10 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Functional Programming]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Mercurial]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Webmachine]]></category>

		<guid isPermaLink="false">http://buffered.io/?p=769</guid>
		<description><![CDATA[For quite a while I've been using my spare cycles to chew over a problem. This problem is not one that hasn't been solved before, but one that I feel can be solved in a much better way. From the bit of research that I've done, I can see at least three areas which can [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://buffered.io/wp-content/uploads/2009/10/erlang.png" alt="erlang" title="erlang" style="float:left;margin-right:5px;margin-bottom:5px;" />For quite a while I've been using my spare cycles to chew over a problem. This problem is not one that hasn't been solved before, but one that I feel can be solved in a much better way. From the bit of research that I've done, I can see at least three areas which can be improved on dramatically. So I've decided, after a long period of deliberation, to go ahead and build my solution and release it to the world as a service!</p>
<p>I know, this kind of thing happens thousands of times a day. Some arbitrary geek decided to build the next killer app and expects to make a crapload of cash out of it. While that would be nice, the ultimate goal isn't the cash. The goal for me is to build something that gets used, and for me to begin to master an area of technology that I've had a quiet passion for for a long period of time now.</p>
<p>My plan is simple. While learning the technologies that I will be using I'll be building another application and blogging about it so that all of you can learn with me. Meanwhile, I shall use my learnings to build this other application at the same time.</p>
<p>The final result should be a series of posts which help other people learn the technology stack, give better coverage and visibility to languages and technologies that a lot of the geek world doesn't know about (and really should!), and for me to carve myself a bit of a niche here on the East coast of Ozland. I am hoping to be able to consult my services out to other businesses as a result.</p>
<p>For those that are interested in following along, here is the full tech stack and toolset that I'll be using:</p>
<ul>
<li><a href="http://erlang.org/" title="Erlang">Erlang</a> - A fantastic cross-platform functional programming language that has some amazing features.</li>
<li><a href="http://bitbucket.org/justin/webmachine/" title="Webmachine HTTP toolkit">Webmachine</a> - A HTTP toolkit which sits on top of <a href="http://code.google.com/p/mochiweb/" title="Mochiweb">Mochiweb</a> that makes it easy to build well-behaved HTTP applications.</li>
<li><a href="http://nitrogenproject.com/" title="Nitrogen Framework">Nitrogen</a> - An Erlang-based framework that makes it easy to build websites.</li>
<li><a href="http://riak.basho.com/" title="Riak">Riak</a> or <a href="http://couchdb.apache.org/" title="CouchDB">CouchDB</a> - Both of these amazing pieces of tech are potential candidates for the back-end storage. I'm not yet sure which one I'll go with.</li>
<li><a href="http://jquery.com/" title="jQuery">jQuery</a> - A great JavaScript library for the front-end.</li>
<li><a href="http://vim.org/" title="VIM text editor">VIM</a> - My favourite text editor <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> </li>
<li><a href="http://www.xubuntu.org/" title="Xubuntu">Xubuntu</a> - Ubuntu <a href="http://ubuntu.com/" title="Ubuntu 9.10">Karmic Koala</a> with <a href="http://www.xfce.org/" title="XFCE">XFCE</a> as the window manager.</li>
<li><a href="http://mercurial-scm.org/" title="Mercurial SCM">Mercurial</a> - My favourite version control system.</li>
<li><a href="http://trac.edgewall.org/" title="The Trac Project">Trac</a> - A project tracking tool.</li>
<li><a href="http://www.virtualbox.org/" title="VirtualBox">VirtualBox</a> - My choice for virtualisation. I tend to run Windows 7 as my primary OS, so most of my dev will be in a VM. When I get my desktop machine back up and running (with all three monitors!) it'll most likely multiboot Win 7 and Xubuntu.
<li><a href="http://wave.google.com/" title="Google Wave">Google Wave</a> - I'll be using this for communications with some really switched on people in the Erlang community who have kindly offered to help me with questions and whatnot specific to some of the areas of tech I've mentioned above.</li>
</ul>
<p>During the course of my blogging/learning I'll be focussing on Webmachine, Riak/CouchDB, Erlang and Nitrogen. All the other tools will probably get mentioned along the way, but the primary goal is to focus on these things.</p>
<p>I'm really excited! I'm currently in the process of documenting my goals and the design for the main application. Once that's done, I'll get started with the fun stuff. I've got a lot to do and it should be a fun ride. I hope you enjoy following along!</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2009/10/31/the-future-is-erlang/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>An Interesting Little Problem</title>
		<link>http://buffered.io/2008/06/14/an-interesting-little-problem/</link>
		<comments>http://buffered.io/2008/06/14/an-interesting-little-problem/#comments</comments>
		<pubDate>Sat, 14 Jun 2008 10:39:38 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Challenges]]></category>
		<category><![CDATA[F#]]></category>
		<category><![CDATA[Functional Programming]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Haskell]]></category>
		<category><![CDATA[challenge]]></category>
		<category><![CDATA[functional]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://buffered.io/?p=365</guid>
		<description><![CDATA[This post was inspired by a recent interview question that was posted over at fsharp.it. It's one of those neat little questions which looks really simple on the surface but is quite tricky. The question apparently originates from an interview that someone had with Google, and goes something like this: There is an array A[N] [...]]]></description>
			<content:encoded><![CDATA[<p>This post was inspired by a recent interview question that was posted over at <a href="http://www.fsharp.it/2008/06/10/google-interview-question-product-of-other-elements-in-an-array-in-on/" title="Fsharp.it">fsharp.it</a>. It's one of those neat little questions which looks really simple on the surface but is quite tricky. </p>
<p>The question apparently originates from an interview that someone had with Google, and goes something like this:<br />
<blockquote>
<p>
There is an array A[N] of N integers. You have to compose an array Output[N] such that Output[i] will be equal to the product of all the elements of A[] except A[i].</p>
<p>Example:<br />
&nbsp;&nbsp;&nbsp;&nbsp;INPUT:[4, 3, 2, 1, 2]<br />
&nbsp;&nbsp;&nbsp;&nbsp;OUTPUT:[12, 16, 24, 48, 24]</p>
<p><strong>Note:</strong> Solve it <em>without</em> the division operator and in O(n).
</p>
</blockquote>
<p>Since I had a spare 10 minutes, I decided to give it a shot ... in Haskell.</p>
<p>I'll cut to the chase, here's the source to my solution:</p>

<div class="wp_syntax"><div class="code"><pre class="haskell" style="font-family:monospace;">vals <span style="color: #339933; font-weight: bold;">::</span> <span style="color: green;">&#91;</span><span style="color: #cccc00; font-weight: bold;">Int</span><span style="color: green;">&#93;</span>
vals <span style="color: #339933; font-weight: bold;">=</span> <span style="color: green;">&#91;</span> <span style="color: red;">4</span><span style="color: #339933; font-weight: bold;">,</span> <span style="color: red;">3</span><span style="color: #339933; font-weight: bold;">,</span> <span style="color: red;">2</span><span style="color: #339933; font-weight: bold;">,</span> <span style="color: red;">1</span><span style="color: #339933; font-weight: bold;">,</span> <span style="color: red;">2</span> <span style="color: green;">&#93;</span>
&nbsp;
answers <span style="color: #339933; font-weight: bold;">::</span> <span style="color: green;">&#91;</span><span style="color: #cccc00; font-weight: bold;">Int</span><span style="color: green;">&#93;</span>
answers <span style="color: #339933; font-weight: bold;">=</span> <span style="color: green;">&#91;</span> front <span style="color: #339933; font-weight: bold;">!!</span> <span style="color: green;">&#40;</span>x<span style="color: #339933; font-weight: bold;">-</span><span style="color: red;">1</span><span style="color: green;">&#41;</span> <span style="color: #339933; font-weight: bold;">*</span> back <span style="color: #339933; font-weight: bold;">!!</span> <span style="color: green;">&#40;</span>x<span style="color: #339933; font-weight: bold;">+</span><span style="color: red;">1</span><span style="color: green;">&#41;</span> <span style="color: #339933; font-weight: bold;">|</span> x <span style="color: #339933; font-weight: bold;">&lt;-</span> <span style="color: green;">&#91;</span>1<span style="color: #339933; font-weight: bold;">..</span><span style="font-weight: bold;">length</span> vals<span style="color: green;">&#93;</span> <span style="color: green;">&#93;</span>
  <span style="color: #06c; font-weight: bold;">where</span>
    front <span style="color: #339933; font-weight: bold;">=</span> <span style="font-weight: bold;">scanl1</span> <span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">*</span><span style="color: green;">&#41;</span> temp
    back <span style="color: #339933; font-weight: bold;">=</span> <span style="font-weight: bold;">scanr1</span> <span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">*</span><span style="color: green;">&#41;</span> temp
    temp <span style="color: #339933; font-weight: bold;">=</span> <span style="color: green;">&#91;</span><span style="color: red;">1</span><span style="color: green;">&#93;</span> <span style="color: #339933; font-weight: bold;">++</span> vals <span style="color: #339933; font-weight: bold;">++</span> <span style="color: green;">&#91;</span><span style="color: red;">1</span><span style="color: green;">&#93;</span></pre></div></div>

<p>I'm hoping that this is quite self-explanatory. But in case it's not, I'll cover some of the gory bits.</p>
<p>The core of the problem is coming up with a way of determining the value of the product of numbers from the start of the list up to a given index, and to do the same at the other end of the list from that given index.</p>
<p>I thought that the easiest way would be to create two lists: both of them containing the compounded products of the numbers in the list, but each of them in different directions. To generate those lists, I thought that I'd add the value of 1 to the list, both at the start and at the end, as it would allow me to do two things:
<ol>
<li>Generate the lists using the <a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v%3Ascanl1" title="scanl1">scanl1</a> and scanr1 functions.</li>
<li>Index into the list using a counter that's based on the size of the original values without having to worry about going past the bounds of the list.</li>
</ol>
<p>Yup, quite lazy, but very handy.</p>
<p>Here's the output when I execute <em>answers</em> in <a href="http://www.haskell.org/ghc/docs/latest/html/users_guide/ghci.html" title="GHCi">GHCi</a>:</p>
<pre lang="">Prelude> :l google.hs
[1 of 1] Compiling Main             ( google.hs, interpreted )
Ok, modules loaded: Main.
*Main> answers
[12,16,24,48,24]
*Main>
</pre>
<p>Problem solved in O(n). Neato! After feeling rather chuffed with myself I thought I'd go back to Fsharp.it and check out the answer posted there. The principle was similar, but the implementation listed was a little longer.</p>
<p>So I thought I'd have a go at writing up my solution using F#. It didn't seem like a stretch until I realised how little of the language I know (I'm currently reading through <a href="http://www.amazon.com/Expert-F-Experts-Voice-Net/dp/1590598504" title="Expert F#">Expert F#</a>, but I'm still far from being one myself). Here's what I came up with:</p>

<div class="wp_syntax"><div class="code"><pre class="ocaml" style="font-family:monospace;"><span style="color: #a52a2a;">#</span>light
&nbsp;
<span style="color: #06c; font-weight: bold;">let</span> vals <span style="color: #a52a2a;">=</span> <span style="color: #6c6;">&#91;</span> <span style="color: #c6c;">4</span><span style="color: #a52a2a;">;</span> <span style="color: #c6c;">3</span><span style="color: #a52a2a;">;</span> <span style="color: #c6c;">2</span><span style="color: #a52a2a;">;</span> <span style="color: #c6c;">1</span><span style="color: #a52a2a;">;</span> <span style="color: #c6c;">2</span><span style="color: #a52a2a;">;</span> <span style="color: #6c6;">&#93;</span>
&nbsp;
<span style="color: #06c; font-weight: bold;">let</span> mul a b <span style="color: #a52a2a;">=</span> a <span style="color: #a52a2a;">*</span> b
<span style="color: #06c; font-weight: bold;">let</span> <span style="color: #6c6;">&#40;</span><span style="color: #a52a2a;">++</span><span style="color: #6c6;">&#41;</span> <span style="color: #a52a2a;">=</span> <span style="color: #06c; font-weight: bold;">List</span><span style="color: #a52a2a;">.</span><span style="color: #060;">append</span>
&nbsp;
<span style="color: #06c; font-weight: bold;">let</span> answers <span style="color: #a52a2a;">=</span>
  <span style="color: #06c; font-weight: bold;">let</span> temp <span style="color: #a52a2a;">=</span> <span style="color: #6c6;">&#91;</span><span style="color: #c6c;">1</span><span style="color: #6c6;">&#93;</span> <span style="color: #a52a2a;">++</span> vals <span style="color: #a52a2a;">++</span> <span style="color: #6c6;">&#91;</span><span style="color: #c6c;">1</span><span style="color: #6c6;">&#93;</span>
  <span style="color: #06c; font-weight: bold;">let</span> front <span style="color: #a52a2a;">=</span> <span style="color: #06c; font-weight: bold;">List</span><span style="color: #a52a2a;">.</span><span style="color: #060;">scan1_left</span> mul temp <span style="color: #a52a2a;">|&gt;</span> <span style="color: #06c; font-weight: bold;">List</span><span style="color: #a52a2a;">.</span><span style="color: #060;">to_array</span>
  <span style="color: #06c; font-weight: bold;">let</span> back <span style="color: #a52a2a;">=</span> <span style="color: #06c; font-weight: bold;">List</span><span style="color: #a52a2a;">.</span><span style="color: #060;">scan1_right</span> mul temp <span style="color: #a52a2a;">|&gt;</span> <span style="color: #06c; font-weight: bold;">List</span><span style="color: #a52a2a;">.</span><span style="color: #060;">to_array</span>
  seq <span style="color: #6c6;">&#123;</span> <span style="color: #06c; font-weight: bold;">for</span> x <span style="color: #06c; font-weight: bold;">in</span> <span style="color: #6c6;">&#91;</span><span style="color: #c6c;">1</span> <span style="color: #a52a2a;">..</span> <span style="color: #060;">vals</span><span style="color: #a52a2a;">.</span><span style="color: #060;">Length</span><span style="color: #6c6;">&#93;</span> <span style="color: #a52a2a;">-&gt;</span> front<span style="color: #a52a2a;">.</span><span style="color: #6c6;">&#91;</span>x<span style="color: #a52a2a;">-</span><span style="color: #c6c;">1</span><span style="color: #6c6;">&#93;</span> <span style="color: #a52a2a;">*</span> back<span style="color: #a52a2a;">.</span><span style="color: #6c6;">&#91;</span>x<span style="color: #a52a2a;">+</span><span style="color: #c6c;">1</span><span style="color: #6c6;">&#93;</span> <span style="color: #6c6;">&#125;</span></pre></div></div>

<p>A few things you might notice:
<ol>
<li>My syntax highlighter plugin doesn't currently support F# <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> </li>
<li>I use a similar method to the Haskell solution, but ended up having to convert the <em>front</em> and <em>back</em> lists to arrays. The reason was because I need to be able to index into the resulting integer set, and I can't do that with lists (if I'm wrong, please let me know!)</li>
<li>I defined a function called <em>mul</em> which does a simple multiplication. I wanted to pass <em>(*)</em> as the first parameter to the scan1_* functions, but the interpreter took that as the start of a comment instead! So I had to resort to a dodgey hack. If you know a way around this, please let me know.</li>
<li>I wrote my own (++) operator because I didn't want to have to write List.append more than once <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> </li>
</ol>
<p>In other words, my F# version smells like n00b. I'm sure there are so many better ways to implement this using the built-in features of the language and supporting libraries, but I'm yet to get to the level when I can write it. I'd love for someone to show me how <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> </p>
<p>I did enjoy having a dabble with F# for the first time in ages, though I have to admit I much prefer using <a href="http://www.vim.org/" title="VIM">VIM</a> and <a href="http://research.microsoft.com/fsharp/manual/compiler.aspx" title="F# Interactive">fsi.exe</a> instead of <a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx" title="Visual Studio">Visual Studio</a> and the <a href="http://blogs.msdn.com/dsyme/archive/2006/02/19/534925.aspx" title="A Taste of F# Interactive in Visual Studio">interactive F# add-in</a>.</p>
<p>As always, feedback and criticism welcomed (and needed).</p>
<h2>Update</h2>
<p>After some great feedback (see below), I've come to realise that the !! operator in Haskell is actually O(n) itself. Hence it was a bad choice for inclusion. Back to the drawing board for me!</p>
<p>Here are a couple of submitted Haskell solutions.</p>

<div class="wp_syntax"><div class="code"><pre class="haskell" style="font-family:monospace;"><span style="color: #5d478b; font-style: italic;">-- by lf</span>
scanm f z xs <span style="color: #339933; font-weight: bold;">=</span> <span style="font-weight: bold;">zipWith</span> f <span style="color: green;">&#40;</span><span style="font-weight: bold;">scanl</span> f z xs<span style="color: green;">&#41;</span> <span style="color: green;">&#40;</span><span style="font-weight: bold;">tail</span> <span style="color: #339933; font-weight: bold;">$</span> <span style="font-weight: bold;">scanr</span> f z xs<span style="color: green;">&#41;</span>
main <span style="color: #339933; font-weight: bold;">=</span> <span style="font-weight: bold;">print</span> <span style="color: #339933; font-weight: bold;">$</span> scanm <span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">*</span><span style="color: green;">&#41;</span> <span style="color: red;">1</span> <span style="color: green;">&#91;</span><span style="color: red;">4</span><span style="color: #339933; font-weight: bold;">,</span><span style="color: red;">3</span><span style="color: #339933; font-weight: bold;">,</span><span style="color: red;">2</span><span style="color: #339933; font-weight: bold;">,</span><span style="color: red;">1</span><span style="color: #339933; font-weight: bold;">,</span><span style="color: red;">2</span><span style="color: green;">&#93;</span>
&nbsp;
<span style="color: #5d478b; font-style: italic;">-- by Henning</span>
answers <span style="color: #339933; font-weight: bold;">::</span> <span style="color: green;">&#91;</span><span style="color: #cccc00; font-weight: bold;">Int</span><span style="color: green;">&#93;</span> <span style="color: #339933; font-weight: bold;">-&gt;</span> <span style="color: green;">&#91;</span><span style="color: #cccc00; font-weight: bold;">Int</span><span style="color: green;">&#93;</span>
answers vals <span style="color: #339933; font-weight: bold;">=</span> <span style="font-weight: bold;">zipWith</span> <span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">*</span><span style="color: green;">&#41;</span> front <span style="color: green;">&#40;</span><span style="font-weight: bold;">drop</span> <span style="color: red;">1</span> back<span style="color: green;">&#41;</span>
	<span style="color: #06c; font-weight: bold;">where</span>
	front <span style="color: #339933; font-weight: bold;">=</span> <span style="font-weight: bold;">scanl</span> <span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">*</span><span style="color: green;">&#41;</span> <span style="color: red;">1</span> vals
	back <span style="color: #339933; font-weight: bold;">=</span> <span style="font-weight: bold;">scanr</span> <span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">*</span><span style="color: green;">&#41;</span> <span style="color: red;">1</span> vals
&nbsp;
<span style="color: #5d478b; font-style: italic;">-- by desp</span>
problem input <span style="color: #339933; font-weight: bold;">=</span> <span style="font-weight: bold;">zipWith</span> <span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">*</span><span style="color: green;">&#41;</span> front back <span style="color: #06c; font-weight: bold;">where</span>
  front <span style="color: #339933; font-weight: bold;">=</span> <span style="font-weight: bold;">init</span> <span style="color: green;">&#40;</span><span style="font-weight: bold;">scanl</span> <span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">*</span><span style="color: green;">&#41;</span> <span style="color: red;">1</span> input<span style="color: green;">&#41;</span>
  back <span style="color: #339933; font-weight: bold;">=</span> <span style="font-weight: bold;">tail</span> <span style="color: green;">&#40;</span><span style="font-weight: bold;">scanr</span> <span style="color: green;">&#40;</span><span style="color: #339933; font-weight: bold;">*</span><span style="color: green;">&#41;</span> <span style="color: red;">1</span> input<span style="color: green;">&#41;</span>
&nbsp;
<span style="color: #5d478b; font-style: italic;">-- by foobar</span>
foo <span style="color: green;">&#91;</span><span style="color: green;">&#93;</span> <span style="color: #339933; font-weight: bold;">_</span> <span style="color: #339933; font-weight: bold;">=</span> <span style="color: green;">&#40;</span><span style="color: green;">&#91;</span><span style="color: green;">&#93;</span><span style="color: #339933; font-weight: bold;">,</span> <span style="color: red;">1</span><span style="color: green;">&#41;</span>
foo <span style="color: green;">&#40;</span>x:xs<span style="color: green;">&#41;</span> acc <span style="color: #339933; font-weight: bold;">=</span> <span style="color: #06c; font-weight: bold;">let</span> <span style="color: green;">&#40;</span>l<span style="color: #339933; font-weight: bold;">,</span> m<span style="color: green;">&#41;</span> <span style="color: #339933; font-weight: bold;">=</span> foo xs <span style="color: green;">&#40;</span>acc<span style="color: #339933; font-weight: bold;">*</span>x<span style="color: green;">&#41;</span>
                 <span style="color: #06c; font-weight: bold;">in</span> <span style="color: green;">&#40;</span><span style="color: green;">&#40;</span>m<span style="color: #339933; font-weight: bold;">*</span>acc<span style="color: green;">&#41;</span>:l <span style="color: #339933; font-weight: bold;">,</span> m<span style="color: #339933; font-weight: bold;">*</span>x<span style="color: green;">&#41;</span></pre></div></div>

<p>Thanks for the submissions guys <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> Sorry for not including the imperative versions in the update.</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2008/06/14/an-interesting-little-problem/feed/</wfw:commentRss>
		<slash:comments>68</slash:comments>
		</item>
		<item>
		<title>Preview Feeds in Google Reader</title>
		<link>http://buffered.io/2008/05/25/preview-feeds-in-google-reader/</link>
		<comments>http://buffered.io/2008/05/25/preview-feeds-in-google-reader/#comments</comments>
		<pubDate>Sat, 24 May 2008 23:51:59 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Shortcuts]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tips/Tricks]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[reader]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://buffered.io/?p=358</guid>
		<description><![CDATA[Here's another reason why I find Google Reader a excellent choice for reading your RSS feeds. Most of us have a collection of feeds that contain similar subject matter. As a geek, most of my feeds are geek-related. As a geek who likes to stay up to speed, I also like to know what other [...]]]></description>
			<content:encoded><![CDATA[<p>Here's another reason why I find <a href="http://reader.google.com/" title="Google Reader">Google Reader</a> a excellent choice for reading your RSS feeds.</p>
<p>Most of us have a collection of feeds that contain similar subject matter. As a geek, <em>most</em> of my feeds are geek-related. As a geek who likes to stay up to speed, I also like to know what other blogs and feeds are good to read.</p>
<p>This is where Google Reader's <strong>Top Recommendations</strong> come in. Google do a great job of throwing other feeds in your face that you might like to read based on the kind of stuff that you've already subscribed to. </p>
<p><a href="http://buffered.io/wp-content/uploads/2008/05/reader_recommendations.png" rel="lightbox[rec_reader]" title="Recommended feeds"><img src="http://buffered.io/wp-content/uploads/2008/05/reader_recommendations-300x205.png" alt="A shortlist of recommended feeds" title="Recommended feeds" width="300" height="205" class="aligncenter size-medium wp-image-361" /></a></p>
<p>As you can see, it lists a few blogs that are of a similar nature to those that you read and gives you the option to view them. When you click on the <em>View all &gt;&gt;</em> button, you're presented with a rather extensive list:</p>
<p><a href="http://buffered.io/wp-content/uploads/2008/05/reader_rec_list.png" title="Detail list of recommended feeds" rel="lightbox[rec_reader]"><img src="http://buffered.io/wp-content/uploads/2008/05/reader_rec_list-300x205.png" alt="Detail list of recommended feeds" title="Detail list of recommended feeds" width="300" height="205" class="aligncenter size-medium wp-image-362" /></a></p>
<p>This next bit is something I really like. When I see a feed that I might be interested in (after weighing up how active the blog is and how many subscribers there are), I can click on the feed to preview it without having to subscribe to it first! Check it out:</p>
<p><a href="http://buffered.io/wp-content/uploads/2008/05/reader_rec_preview.png" rel="lightbox[rec_reader]" title="Feed preview"><img src="http://buffered.io/wp-content/uploads/2008/05/reader_rec_preview-300x205.png" alt="Feed preview" title="Feed preview" width="300" height="205" class="aligncenter size-medium wp-image-360" /></a></p>
<p>You can browse through the feed and interact with it as if it was part of your subscription list already. If you see some articles that take your fancy and the content appeals to you, you can easily subscribe by clicking on the profoundly obvious <em>Subscribe</em> button. If I don't like it, I can go back to the list, and I can even click on the "No thanks" link next to the feed so that it doesn't appear in my recommended list again.</p>
<p>Too easy. This is exactly the kind of "ease of use" feature that I want from my RSS reader. I'm sure a couple of other readers would provide similar features, but the simplicity of this really blows my skirt up.</p>
<p>+1 Google Reader (again).</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2008/05/25/preview-feeds-in-google-reader/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A Google App that Sucks</title>
		<link>http://buffered.io/2007/12/25/a-google-app-that-sucks/</link>
		<comments>http://buffered.io/2007/12/25/a-google-app-that-sucks/#comments</comments>
		<pubDate>Tue, 25 Dec 2007 06:29:05 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://buffered.io/2007/12/25/a-google-app-that-sucks/</guid>
		<description><![CDATA[Google Labs has a history of releasing some pretty amazing bits of software. Google Earth, Google Mail, Google Reader, Google Analytics, Google Maps and Google Docs are just a few of the graduates! It's an impressive list to say the least. All of those applications do a fantastic job. I'm a huge fan of all [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://labs.google.com/" title="Google Labs">Google Labs</a> has a history of releasing some pretty amazing bits of software. <a href="http://earth.google.com/" title="Google Earth">Google Earth</a>, <a href="http://mail.google.com/" title="Google Mail">Google Mail</a>, <a href="http://reader.google.com/" title="Google Reader">Google Reader</a>, <a href="http://analytics.google.com/" title="Google Analytics">Google Analytics</a>, <a href="http://maps.google.com/" title="Google Maps">Google Maps</a> and <a href="http://docs.google.com/" title="Google Docs">Google Docs</a> are just a few of the graduates! It's an impressive list to say the least. All of those applications do a fantastic job. I'm a huge fan of all of them and use them all regularly. So, Google, <a href="http://en.wikipedia.org/wiki/WTF">WTF</a> happened to <a href="http://talk.google.com/" title="Google Talk">Google Talk</a>?! </p>
<p>When GTalk was first released it was fantastic. It was simple, slick and quick. It even had built-in <a href="http://en.wikipedia.org/wiki/Voice_over_IP" title="Voice over IP">VOIP</a> support, and the quality was extremely impressive. I decided that this would be my IM of choice, and the one that I would try to get my friends and family to use.</p>
<p>The problem is that, other than a few really minor updates since its first release, GTalk's development has been stagnant. What appeared to be a really promising start to a new <a href="http://en.wikipedia.org/wiki/Instant_messaging_client" title="IM Client">IM client</a> has now become a non-advancing app that just takes up space on my hard drive. The development seems to have stalled. The quality of the voice hasn't improved. The features of the client haven't changed or increased. There has been absolutely <em>nothing</em> worthy added to GTalk for as long as I can remember.</p>
<p>In my view, GTalk is in dire need of the following features/improvements:
<ul>
<li><strong>A new interface.</strong> When it first came out, the lean client was something that was a pleasure to use. It's now in need of a makeover. A fresh look would do it the world of good.</li>
<li><strong>Tabbed chats.</strong> This is actually the reason why I use <a href="http://www.pidgin.im/" title="Pidgin">Pidgin</a> instead of the GTalk client these days. Not just that, but the Pidgin client is a lot more feature rich (shame it doesn't support GTalk VOIP).</li>
<li><strong>More emoticons.</strong> 'nuff said.</li>
<li><strong>Webcam support.</strong> How can they have not added webcam support by now? I know there's a plugin out there made by a third-party developer that provides it, but it should be part of the core. People don't want to have to search for plugins to get this functionality, it should just work out of the box.</li>
<li><strong>Encrypted chats.</strong> I want to be able to encrypt my conversations. Not because I'm talking about anything dodgey, but because I don't want my chats logged and data-mined without my permission.</li>
<li><strong>Cross-platform support.</strong> Why are there no versions for Linux or Mac? Even though I might not personally use them, I have friends who do! Let's give them a fair go too.</li>
<p></u>So I've now removed my GTalk install. I'll continue to use Pidgin for standard IM (tabbed chats, encryption plugins, cross-platform, multi-protocol), and I'll use <a href="http://www.skype.com/" title="Skype">Skype</a> for voice and video chats (voice <em>and</em> video out of the box, encryption, cross-platform). Until the GTalk team finally throw a bit of effort into their product it won't be making another appearance on my desktop.</p>
<p>PS. Merry Christmas everyone <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2007/12/25/a-google-app-that-sucks/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Moving to Google Apps</title>
		<link>http://buffered.io/2007/05/06/moving-to-google-apps/</link>
		<comments>http://buffered.io/2007/05/06/moving-to-google-apps/#comments</comments>
		<pubDate>Sat, 05 May 2007 23:04:20 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://buffered.io/2007/05/06/moving-to-google-apps/</guid>
		<description><![CDATA[As you all know, I recently moved the Blackapache site to a new server. We had some teething issues, as ya do when making the move, but all is now well. One of the things that I hadn't got round to fixing was my SpamAssassin installation. I'd already gone through the fun times of setting [...]]]></description>
			<content:encoded><![CDATA[<p>As you all know, I recently moved the Blackapache site to a new server. We had some teething issues, as ya do when making the move, but all is now well. One of the things that I hadn't got round to fixing was my <a href="http://www.spamassassin.org/" title="SpamAssassin" target="_blank">SpamAssassin</a> installation.</p>
<p>I'd already gone through the fun times of setting up email (POP3s, IMAP4s) with <a href="http://www.qmail.org/" target="_blank" title="Qmail">Qmail</a>, which after a bit of time (and a learning curve) was working fine (with SSL, hence the 's' at the end of the names <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_wink.png' alt=';)' class='wp-smiley' /> ) and all my users were able to send/receive without an issues. While trying to set it up, I was having issues getting both SpamAssassin and <a href="http://www.clamav.net/" title="Clam AV" target="_blank">Clam AntiVirus</a> working. Both of the daemons would run fine, but I just couldn't quite get the configuration right.</p>
<p>Thankfully, AV isn't so much of an issue as my users all have AV protection on their local machines. Spam, while annoying, can be lived with until I find the time to get the filters working properly - so I basically left these two things alone for a while until I found the time after doing all the other <em>urgent</em> bits.</p>
<p>I finally got round to making an attempt to fix the problem a weekend or so ago, but still couldn't get it to behave. I read forum upon forum, blog upon blog, and readme upon readme, but for some reason the bloody thing just refused to work. I got frustrated, reverted all the settings back to how they were before, and gave up for the day.</p>
<p>During the last week I was prepping myself for another attempt at getting it work, when I heard about <a href="http://www.google.com/a/" title="Google Apps" target="_blank">Google Apps</a>. I was a bit surprised when I first read all the details, because it was the first time I'd heard about it! Being a geek I thought I was pretty good with keeping up to speed, and I was a bit narked with myself for letting this golden nugget slip through the net.</p>
<p>I'm not going to go through the ins and outs of what Google Apps is all about as there are already a <a href="http://www.google.com.au/search?hl=en&#038;q=google+apps" title="Google Apps Search" target="_blank">stack</a> of pages out there already talking about it. What I will say is that I should have made the move earlier!</p>
<p>Not only do I no longer have to worry about keeping my entire email configuration (Qmail with vpopmail and courier imap, SpamAssassin, ClamAV, Horde/SquirrelMail) up to date and patched, I don't even have to have it running. The "precious" resources on the server can now be utilised for other things such as an <a href="http://subversion.tigris.org/" title="SubVersion" target="_blank">SVN</a> install. Each email user has 2GB of space, webmail comes for free and has the fantastic facilities that come with <a href="http://www.gmail.com/" target="_blank" title="Gmail">Gmail</a>. Users can easily configure their own accounts, handle their own password changes, etc. My administration of email has basically dropped to just above zero. The only thing I need to do as an administrator is get the account set up initially, the rest is up to the user.</p>
<p>You can probably tell that I'm quite excited about this. It's great that I don't have to worry about this any more, and I can put more time and effort into other things.  Of course, my excitement only extends as far as email for now, but I'm pretty sure that over time I'll also come to love the added features of <a href="http://calendar.google.com/" title="Google Calendar" target="_blank">Google Calendar</a> and <a href="http://docs.google.com/" title="Google Calendar" target="_blank">Google Calendar</a>.</p>
<p>This service does come with its limitations, and with the possibility of Google Datamining, but for a home server which I use for a blog, having this facility to lighten the admin load is just fantastic.</p>
<p>I highly recommend considering this as an option if you're looking to sort out an email host! Give it a trial, at least for a while, and you may find you're as happy as I am. If you don't like it, you can always revert back to your old setup.</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2007/05/06/moving-to-google-apps/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>The Art of Googling</title>
		<link>http://buffered.io/2007/04/28/the-art-of-googling/</link>
		<comments>http://buffered.io/2007/04/28/the-art-of-googling/#comments</comments>
		<pubDate>Fri, 27 Apr 2007 20:28:30 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://buffered.io/2007/04/28/the-art-of-googling/</guid>
		<description><![CDATA[Everyone who uses the web knows how to use Google to find stuff. Well, at least they think they do. Googling is pretty easy, but it's also a bit of an art form. Some people just seem to have the 'knack' of finding things quickly, others take a fair bit of time. So what makes [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone who uses the web knows how to use Google to find stuff. Well, at least they <em>think</em> they do. Googling is pretty easy, but it's also a bit of an art form. Some people just seem to have the 'knack' of finding things quickly, others take a fair bit of time.</p>
<p>So what makes a good Google search? How do you arrange your search string in such a way to allow the best hits to come up first? Or at least to help you find the info you're looking for quickly without wading through the besquillion results?</p>
<p>I consider myself to be a pretty good Googler. It doesn't take me long at all to find the bits of information I'm looking for. Here are some things to bear in mind while searching which may help you improve your hit rate while searching for things:
<ul>
<li><strong>Change the order of your search words.</strong>If you have a two word search term (say "OJ rant"), you'll get different sets of results if you search for <a href="http://www.google.com.au/search?q=oj+rant&#038;ie=utf-8&#038;oe=utf-8" title="Search: OJ rant" target="_blank">OJ rant</a> instead of <a href="http://www.google.com.au/search?q=rant+oj&#038;ie=utf-8&#038;oe=utf-8" title="Search: rant OJ" target="_blank">rant OJ</a>. Depending on the words in the search term, the results could be profoundly different. The best thing to do is start with words that better qualify what it is you're searching for. Let's say you're looking for information on Firefox errors, it'd be better to search for <strong>Firefox error</strong> as opposed to <strong>error firefox</strong> because the first term gives a better context and hence a more focussed set of search results. Errors are fairly broad and appear in stacks of places, but Firefox is quite specific.</li>
<li><strong>Use quotes to connect words together.</strong> When you're using a phrase or set of words which are linked together, and you know that they appear in a certain order, then use quotes to force a search for those words in that order. An example might be where you're searching for song lyrics and you don't know the artist or the song name.</li>
<li><strong>Don't be scared to use a long search term.</strong> It's quite surprising that lots of people for some reason feel that they can't stick in a really long search term. I've lost count of the amount of times I've come across a really long error which I've pasted directly into a Google search (with quotes <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_wink.png' alt=';)' class='wp-smiley' /> ) resulting in excellent results first time out. Chances are that if you're looking at something like that, Google's indexed some information on it, so why deprive it of all that criteria when you search? The information is there, so use it.</li>
<li><strong>Force the use of common words.</strong> Google strips out common words when you perform your search (examples are 'the', 'a', 'to', etc), so that it doesn't return every site on the Internet in every search result set. If you're not getting the information you need, and you feel that one of those terms is the key to that information, then force the word (or phrase) to be included by prefixing it with a '+' sign. A common one for me here is the use of <strong>com</strong>. The word 'com' appears in ever site that has a .com <a href="http://en.wikipedia.org/wiki/Top-level_domain" title="Top-level Domain" target="_blank">TLD</a>, and so Google strips it out. But in my geek travels I search for information on <a href="http://en.wikipedia.org/wiki/Component_object_model" title="Component Object Model" target="_blank">COM</a> fairly regularly. So I search for <strong>+COM</strong> to make sure the word 'com' is used without being removed.</li>
<li><strong>Give your searches extra context.</strong> If you're getting a stack of results which don't seem to relate to what you're looking for, then choose a few words which give more meaning to the item you're searching for and put them <em>before</em> your current search term.</li>
<li><strong>Cull words if needed.</strong> Sometimes you'll have a word or two in your search which actually help in muddying the waters. If you're not getting desired results using different ordering of the same search terms, then drop one or two off and see how that can affect it.</li>
<li><strong>Use a tabbed browser!</strong> I can't stress this enough <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> It's a bit different to the other points and is more focussed on going through the links that the search has returned, but trying to read a plethora of links without tabbing is just a nighmare. So get yourself a copy of <a href="http://www.getfirfox.com/" title="Get Firefox" target="_blank">Firefox</a> and utilise the CTRL key <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_wink.png' alt=';)' class='wp-smiley' /> </li>
</ul>
<p>Many of you will read this post and think "yeah well no sh*t Einstein!", and if you do, then it means you're already able to search for stuff yourself <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> But you'd be surprised how few people out there really know how to leverage the power of Google.</p>
<p>There are million sites out there with in-depth coverage of the features of the Google search engine, which isn't really the target of this post, and hence I'm not going to link them or discuss them. The idea is to get you going with smarter search terms while utilising a small subset of Google's search term power.  If you're looking for more information, you know where to find it <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2007/04/28/the-art-of-googling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Code Search</title>
		<link>http://buffered.io/2006/10/16/google-code-search/</link>
		<comments>http://buffered.io/2006/10/16/google-code-search/#comments</comments>
		<pubDate>Mon, 16 Oct 2006 08:22:36 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://buffered.io/2006/10/16/google-code-search/</guid>
		<description><![CDATA[The Search Kings have come up with another rippin' tool which allows you to crawl through source code for examples and whatnot. The Google Code Search is quite a cool utility - but it doesn't come without it's issues. I found an interesting link worthy of reading which talks about a few amusing results returned [...]]]></description>
			<content:encoded><![CDATA[<p>The Search Kings have come up with another rippin' tool which allows you to crawl through source code for examples and whatnot. The <a href="http://google.com/codesearch" title="Code Search" target="_blank">Google Code Search</a> is quite a cool utility - but it doesn't come without it's issues. I found an interesting link worthy of reading which talks about a few <a href="http://www.kottke.org/06/10/google-code-search" target="_blank">amusing results</a> returned from this facility, which I reckon lots of people should check out and be aware of.</p>
<p>So this begs the question: Is this going to be a tool which allows hackers to get acceess to bugs in software a heck of a lot quicker? I believe so. Is that a bad thing? No, I don't think so. In fact, it'll teach developers (the hard way) that they need to be aware of security issues well before they release the code - which can only be a good thing as it should have a positive affect on the software.</p>
<p>As a small side note, there can also be some <a href="http://www.theregister.co.uk/2006/10/13/code_outrage/" title="Apple in code search profanity outrage" target="_blank">embarrassing snippets</a> revealed which will make the big names cringe. So, maybe this will also teach developers to be a little more professional!</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2006/10/16/google-code-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GooTube</title>
		<link>http://buffered.io/2006/10/14/gootube/</link>
		<comments>http://buffered.io/2006/10/14/gootube/#comments</comments>
		<pubDate>Sat, 14 Oct 2006 00:56:15 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://buffered.io/2006/10/14/gootube/</guid>
		<description><![CDATA[Yes this is old news to anyone who reads any form of news But Google have bought YouTube! How exciting. Personally, I'm very happy for those lads who set YouTube up in the first place. The idea was based on the need to share some large homes videos of parties with mates who weren't there, [...]]]></description>
			<content:encoded><![CDATA[<p>Yes this is old news to anyone who reads any form of news <img src='http://buffered.io/wp-content/plugins/smilies-themer/Silk/emoticon_smile.png' alt=':)' class='wp-smiley' /> But Google have bought YouTube! How exciting. Personally, I'm very happy for those lads who set YouTube up in the first place. The idea was based on the need to share some large homes videos of parties with mates who weren't there, and it's turned into a multi-billion dollar empire. It's good to hear that there are people out there like this still making something big for themselves for having the balls to give it a go.</p>
<p>On a slightly more sour note, it looks like the <a href="http://www.theinquirer.net/default.aspx?article=35026" target="_blank">lawsuits</a> will start queuing up. Everyone with any connection to some of the "unauthorised" content on YouTube will probably join the long line of would-be beneficiaries from sueing Google/YouTube for breach of copyright. Let's hope that this kind of thing is nipped in the bud.</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2006/10/14/gootube/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Real-Time Flight Monitoring</title>
		<link>http://buffered.io/2006/10/05/real-time-flight-monitoring/</link>
		<comments>http://buffered.io/2006/10/05/real-time-flight-monitoring/#comments</comments>
		<pubDate>Thu, 05 Oct 2006 09:45:07 +0000</pubDate>
		<dc:creator>OJ</dc:creator>
				<category><![CDATA[Freeware]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://buffered.io/2006/10/05/real-time-flight-monitoring/</guid>
		<description><![CDATA[I had a read of Eastabrook's blog recently (see a link in the Blogroll) and noticed that he posted about an interesting link that he found. The link, entitled Flight Tracking in 3D, shows details of a few downloads that you can grab for Google Earth which actually show the current locations of flights that [...]]]></description>
			<content:encoded><![CDATA[<p>I had a read of Eastabrook's blog recently (see a link in the Blogroll) and noticed that he posted about an interesting link that he found.  The link, entitled <a href="http://www.fboweb.com/antest/ge/intro.aspx?old=1" title="Flight Tracking in 3D" target="_blank">Flight Tracking in 3D</a>, shows details of a few downloads that you can grab for <a href="http://earth.google.com/" title="Google Earth" target="_blank">Google Earth</a> which actually show the current locations of <strong>flights that are currently in progress all over the world!!!</strong></p>
<p>Unbelievable. Pretty amazing technology, and at the same time quite scary. What kind of possible security issues does this feature open up?  I know that Google Earth has had these kinds of questions asked in the past, but this to me seems like it's taking the issue to a whole new level.</p>
]]></content:encoded>
			<wfw:commentRss>http://buffered.io/2006/10/05/real-time-flight-monitoring/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
