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

<channel>
	<title>Labix Blog</title>
	<atom:link href="http://blog.labix.org/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.labix.org</link>
	<description>by Gustavo Niemeyer</description>
	<pubDate>Fri, 15 Aug 2008 00:24:50 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Smart Package Manager 1.0</title>
		<link>http://blog.labix.org/2008/08/14/smart-package-manager-10</link>
		<comments>http://blog.labix.org/2008/08/14/smart-package-manager-10#comments</comments>
		<pubDate>Fri, 15 Aug 2008 00:24:50 +0000</pubDate>
		<dc:creator>Gustavo Niemeyer</dc:creator>
		
		<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://blog.labix.org/?p=97</guid>
		<description><![CDATA[After 4.5 years in development, Smart has been branded as 1.0. A big Thank You to everyone who contributed along the years.
]]></description>
			<content:encoded><![CDATA[<p>After 4.5 years in development, <a href="http://lists.labix.org/pipermail/smart-labix.org/2008-August/003703.html" >Smart has been branded as 1.0</a>. A big Thank You to everyone who contributed along the years.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.labix.org/2008/08/14/smart-package-manager-10/feed</wfw:commentRss>
		</item>
		<item>
		<title>Wiki + Spreadsheet</title>
		<link>http://blog.labix.org/2008/08/12/wiki-spreadsheet</link>
		<comments>http://blog.labix.org/2008/08/12/wiki-spreadsheet#comments</comments>
		<pubDate>Tue, 12 Aug 2008 07:46:17 +0000</pubDate>
		<dc:creator>Gustavo Niemeyer</dc:creator>
		
		<category><![CDATA[Math]]></category>

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

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

		<guid isPermaLink="false">http://blog.labix.org/?p=96</guid>
		<description><![CDATA[The underlying concept is very simple: spreadsheets are a way to organize text, numbers and formulas into what might be seen as a natively numeric environment: a matrix.  So what would happen if we loosed some of the bolts of the numeric-oriented organization, and tried to reuse the same concepts into a more formatting-oriented [...]]]></description>
			<content:encoded><![CDATA[<p>The underlying concept is very simple: spreadsheets are a way to organize text, numbers and formulas into what might be seen as a natively numeric environment: a matrix.  So what would happen if we loosed some of the bolts of the numeric-oriented organization, and tried to reuse the same concepts into a more formatting-oriented environment which is naturally collaborative: a wiki.</p>
<p>While I do encourage you to answer this with some fantastic new online service (please provide me with an account and the best e-book reader device available once you&#8217;re rich) I had a try at answering this question myself a while ago by writing <a href="http://labix.org/calc" >the Calc macro for Moin</a>.</p>
<p>Basically, the Calc macro allows extracting values found in a wiki page into lists (think columns or rows), and applying formulas and further formatting as wanted.</p>
<p>I believe there&#8217;s a lot of potential on the basic concept, and the prototype, even though functional and useful, surely has a lot to evolve, so I&#8217;ve <a href="https://launchpad.net/moin-calc" onclick="javascript:pageTracker._trackPageview('/outbound/article/https://launchpad.net/moin-calc');">published the project in Launchpad</a> to make contributions easier. I actually apologize for not publishing it earlier.  There was hope that more features would be implemented before releasing, but now it&#8217;s clear that it won&#8217;t get many improvements from me anytime soon. If you do decide to improve it, please try to prepare patches which are mostly ready for integration, including full testing, since I can&#8217;t dedicate much time for it myself in the foreseeable future.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.labix.org/2008/08/12/wiki-spreadsheet/feed</wfw:commentRss>
		</item>
		<item>
		<title>Write more to write better</title>
		<link>http://blog.labix.org/2008/08/04/write-more-to-write-better</link>
		<comments>http://blog.labix.org/2008/08/04/write-more-to-write-better#comments</comments>
		<pubDate>Mon, 04 Aug 2008 09:48:24 +0000</pubDate>
		<dc:creator>Gustavo Niemeyer</dc:creator>
		
		<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://blog.labix.org/?p=95</guid>
		<description><![CDATA[In his post Quantity Always Trumps Quality, Jeff Atwood made a very interesting reference to an arts-related book:
The ceramics teacher announced on opening day that he was dividing the class into two groups. All those on the left side of the studio, he said, would be graded solely on the quantity of work they produced, [...]]]></description>
			<content:encoded><![CDATA[<p>In his post <a href="http://www.codinghorror.com/blog/archives/001160.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.codinghorror.com/blog/archives/001160.html');">Quantity Always Trumps Quality</a>, Jeff Atwood made a very interesting reference to an arts-related book:</p>
<blockquote><p>The ceramics teacher announced on opening day that he was dividing the class into two groups. All those on the left side of the studio, he said, would be graded solely on the quantity of work they produced, all those on the right solely on its quality. His procedure was simple: on the final day of class he would bring in his bathroom scales and weigh the work of the &#8220;quantity&#8221; group: fifty pound of pots rated an &#8220;A&#8221;, forty pounds a &#8220;B&#8221;, and so on. Those being graded on &#8220;quality&#8221;, however, needed to produce only one pot - albeit a perfect one - to get an &#8220;A&#8221;.</p>
<p>Well, came grading time and a curious fact emerged: the works of highest quality were all produced by the group being graded for quantity. It seems that while the &#8220;quantity&#8221; group was busily churning out piles of work - and learning from their mistakes - the &#8220;quality&#8221; group had sat theorizing about perfection, and in the end had little more to show for their efforts than grandiose theories and a pile of dead clay.</p></blockquote>
<p>If I tell you that you&#8217;ll get better at doing something if you do it repeatedly you&#8217;ll probably stare at me with a look of obviousness, but even then the correlation made above still feels a bit surprising to a lot of people.  Why is that so?</p>
<p>I have a guess. In our society we tend to believe that art and innovation is something for the gifted, rather than the product of hard work.  Just think of any great famous painter or musician and you&#8217;ll likely have in your mind the concept of a uniquely gifted genius, rather than someone that worked uniquely hard after a goal.</p>
<p>Perhaps that&#8217;s why we tend to forget long learned lessons. Some 23 years ago Frederick Brooks already pointed out in <i>The Mythical Man-month</i> that we should plan to throw away the first version of the software, because it most likely will be a poorly designed prototype that provides insight into the problem for the actual production version.  Even then, it&#8217;s still rare to see the practice <i>intentionally</i> in use nowadays.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.labix.org/2008/08/04/write-more-to-write-better/feed</wfw:commentRss>
		</item>
		<item>
		<title>Watch out for list(dict.keys()) in Python 3</title>
		<link>http://blog.labix.org/2008/06/27/watch-out-for-listdictkeys-in-python-3</link>
		<comments>http://blog.labix.org/2008/06/27/watch-out-for-listdictkeys-in-python-3#comments</comments>
		<pubDate>Fri, 27 Jun 2008 21:57:20 +0000</pubDate>
		<dc:creator>Gustavo Niemeyer</dc:creator>
		
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.labix.org/?p=94</guid>
		<description><![CDATA[As everyone is probably aware by now, in Python 3 dict.keys(), dict.values() and dict.items() will all return iterable views instead of lists.  The standard way being suggested to overcome the difference, when the original behavior was actually intended, is to simply use list(dict.keys()).  This should be usually fine, but not in all cases.
One [...]]]></description>
			<content:encoded><![CDATA[<p>As everyone is probably aware by now, in Python 3 dict.keys(), dict.values() and dict.items() will all return iterable <em>views</em> instead of lists.  The standard way <a href="http://www.python.org/dev/peps/pep-3106/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.python.org/dev/peps/pep-3106/');">being suggested</a> to overcome the difference, when the original behavior was actually intended, is to simply use <code>list(dict.keys())</code>.  This should be usually fine, but not in all cases.</p>
<p>One of the reasons why someone might actually <em>opt</em> to perform a more expensive copying operation is because, with the pre-3.0 semantics, the <code>keys()</code> method is <em>atomic</em>, in the sense that the whole operation of converting all dictionary keys to a list is done while the global interpreter lock is held.  Thus, it&#8217;s thread-safe to run <code>dict.keys()</code> with Python 2.X.</p>
<p>The suggested replacement in Python 3, <code>list(dict.keys())</code>, is not.  There&#8217;s a chance that the interpreter will give another thread a chance to run before or during the iteration of the view, and this will cause an exception if the dictionary is modified at the same time.  To fix the problem, either a lock must protect the iteration, or a more expensive operation such as <code>dict.copy().keys()</code> must be used.</p>
<p>The 2to3 tool won&#8217;t help you there, unfortunately.  So, keep an eye on it!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.labix.org/2008/06/27/watch-out-for-listdictkeys-in-python-3/feed</wfw:commentRss>
		</item>
		<item>
		<title>MagLev and distributed VMs</title>
		<link>http://blog.labix.org/2008/06/01/maglev-and-distributed-vms</link>
		<comments>http://blog.labix.org/2008/06/01/maglev-and-distributed-vms#comments</comments>
		<pubDate>Mon, 02 Jun 2008 01:04:16 +0000</pubDate>
		<dc:creator>Gustavo Niemeyer</dc:creator>
		
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.labix.org/?p=93</guid>
		<description><![CDATA[Avi Bryant is working on MagLev, a Ruby interpreter, based on Gemstone&#8217;s Smalltalk VM, with some very amazing features, like transactioned objects distributed across several VMs:

The integrated VMs, cache, and storage conspire to create an illusion that global state is shared across all instances: no matter how many VMs you add, over however many machines, [...]]]></description>
			<content:encoded><![CDATA[<p>Avi Bryant is working on <a href="http://www.avibryant.com/2008/06/maglev-recap.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.avibryant.com/2008/06/maglev-recap.html');">MagLev</a>, a Ruby interpreter, based on Gemstone&#8217;s Smalltalk VM, with some very amazing features, like transactioned objects distributed across several VMs:</p>
<blockquote><p>
The integrated VMs, cache, and storage conspire to create an illusion that global state is shared across all instances: no matter how many VMs you add, over however many machines, they all see and work with the same set of Ruby objects.
</p></blockquote>
<p>My geek side finds this highly exciting, and eager to see it released to see how people will deal with it in practice.</p>
<p>At the same time, my <i>let&#8217;s-build-stable-and-maintainable-software</i> side is a bit skeptic.  As Joe Armstrong puts <a href="http://www.infoq.com/presentations/erlang-software-for-a-concurrent-world" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.infoq.com/presentations/erlang-software-for-a-concurrent-world');">so enthusiastically</a>, shared state is hard to manage correctly, global transactions reduce scalability, and transparent RPC is seductive, but <a href="http://armstrongonsoftware.blogspot.com/2008/05/road-we-didnt-go-down.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://armstrongonsoftware.blogspot.com/2008/05/road-we-didnt-go-down.html');">dangerous</a>.</p>
<p>I&#8217;m also curious about the speed gains pointed out.  It&#8217;s well known that the Ruby VM isn&#8217;t very fast, which means that there must be opportunities for speedups.  Even then, 100x faster is impressive, and <a href="http://www.sidhe.org/~dan/blog/archives/cat_piethon.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.sidhe.org/~dan/blog/archives/cat_piethon.html');">history shows</a> that sometimes the significant improvements are harder when the semantics are precisely the same.  Let&#8217;s hope Avi can manage to <a href="http://headius.blogspot.com/2008/06/maglev.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://headius.blogspot.com/2008/06/maglev.html');">run the Ruby tests successfully</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.labix.org/2008/06/01/maglev-and-distributed-vms/feed</wfw:commentRss>
		</item>
		<item>
		<title>Improving reading habits</title>
		<link>http://blog.labix.org/2008/06/01/improving-reading-habits</link>
		<comments>http://blog.labix.org/2008/06/01/improving-reading-habits#comments</comments>
		<pubDate>Sun, 01 Jun 2008 20:55:44 +0000</pubDate>
		<dc:creator>Gustavo Niemeyer</dc:creator>
		
		<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://blog.labix.org/?p=92</guid>
		<description><![CDATA[Today, Sunday, on the mailman day, I decided to change my reading habits.
You&#8217;d certainly laugh if I told you how many mailing lists, blogs, and IRC channels I try to follow (won&#8217;t include IM networks here as I don&#8217;t really read them asynchronously).  What I look for is pretty obvious: I want to exchange [...]]]></description>
			<content:encoded><![CDATA[<p>Today, Sunday, on the <a href="http://www.urbandictionary.com/define.php?term=mailman+day" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.urbandictionary.com/define.php?term=mailman+day');">mailman day</a>, I decided to change my reading habits.</p>
<p>You&#8217;d certainly laugh if I told you how many mailing lists, blogs, and IRC channels I try to follow (won&#8217;t include IM networks here as I don&#8217;t really <i>read</i> them asynchronously).  What I look for is pretty obvious: I want to exchange <i>volume</i> for <i>quality</i>.</p>
<p>The first thing I&#8217;m doing is unsubscribing from all high-traffic lists I&#8217;m part of.  The reason is clear: one hundred messages a day can&#8217;t possibly be all interesting.  I&#8217;m not saying there are no interesting posts among these, of course.  But with such a vibrant community of followers, a few smart readers usually bring up the most interesting discussions in more selective formats. I&#8217;ll track these instead.</p>
<p>For the same reason,  I&#8217;m unsubscribing from most feed aggregators.  <a href="http://en.wikipedia.org/wiki/Planet_aggregator" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://en.wikipedia.org/wiki/Planet_aggregator');">Planet</a> and similars are a great way to subscribe to many feeds quickly, but let&#8217;s face it.. how many posts in <a href="http://www.planetpython.org/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.planetpython.org/');">an aggregator with lots of feeds</a> are interesting to a single individual?  While getting off from them, I&#8217;m selectively peaking the feeds that interest me and subscribing to each.</p>
<p>Then, for the not-so-high volume sources, I&#8217;m checking the last 5 posts or so (or days, for IRC channels). Anything  that hasn&#8217;t had information worth tracking will be phased out too.  Interesting topics eventually will find their way to the sources I&#8217;ll still follow.</p>
<p> I want to read <i>less</i>, to read <i>more</i>.  I want to go faster through the queue of pending books, and also follow a wider variety of topics with less pain.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.labix.org/2008/06/01/improving-reading-habits/feed</wfw:commentRss>
		</item>
		<item>
		<title>Google using Geohash</title>
		<link>http://blog.labix.org/2008/05/20/google-using-geohash</link>
		<comments>http://blog.labix.org/2008/05/20/google-using-geohash#comments</comments>
		<pubDate>Wed, 21 May 2008 01:54:15 +0000</pubDate>
		<dc:creator>Gustavo Niemeyer</dc:creator>
		
		<category><![CDATA[Project]]></category>

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

		<guid isPermaLink="false">http://blog.labix.org/2008/05/20/google-using-geohash/</guid>
		<description><![CDATA[According to Dave Troy, Google seems to be using the Geohash algorithm:

Google is employing the GeoHash algorithm I’ve been pushing to do spatial searching using BigTable.  Since database schemes like BigTable don’t support traditional GIS extensions/spatial indexes, GeoHash allows for a simple bounding box search using truncated GeoHash substrings.  I will post separately [...]]]></description>
			<content:encoded><![CDATA[<p>According to Dave Troy, <a href="http://www.openlocation.org/?p=9" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.openlocation.org/?p=9');">Google seems to be using</a> the <a href="http://en.wikipedia.org/Geohash" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://en.wikipedia.org/Geohash');">Geohash algorithm</a>:</p>
<blockquote><p>
Google is employing the GeoHash algorithm I’ve been pushing to do spatial searching using BigTable.  Since database schemes like BigTable don’t support traditional GIS extensions/spatial indexes, GeoHash allows for a simple bounding box search using truncated GeoHash substrings.  I will post separately about this shortly, as I am working on some GeoHash tools to expand this functionality.  This is of particular interest to AppEngine developers.
</p></blockquote>
<p>Nice!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.labix.org/2008/05/20/google-using-geohash/feed</wfw:commentRss>
		</item>
		<item>
		<title>dateutil 1.4 is out</title>
		<link>http://blog.labix.org/2008/03/03/dateutil-14-is-out</link>
		<comments>http://blog.labix.org/2008/03/03/dateutil-14-is-out#comments</comments>
		<pubDate>Mon, 03 Mar 2008 03:49:08 +0000</pubDate>
		<dc:creator>Gustavo Niemeyer</dc:creator>
		
		<category><![CDATA[Project]]></category>

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

		<guid isPermaLink="false">http://blog.labix.org/2008/03/03/dateutil-14-is-out/</guid>
		<description><![CDATA[Friday I&#8217;ve released version 1.4 of dateutil.  There are some interesting fixes there, so please upgrade if you have the chance.
]]></description>
			<content:encoded><![CDATA[<p>Friday I&#8217;ve <a href="http://mail.python.org/pipermail/python-announce-list/2008-February/006455.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://mail.python.org/pipermail/python-announce-list/2008-February/006455.html');">released</a> version 1.4 of <a href="http://labix.org/python-dateutil" >dateutil</a>.  There are some interesting fixes there, so please upgrade if you have the chance.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.labix.org/2008/03/03/dateutil-14-is-out/feed</wfw:commentRss>
		</item>
		<item>
		<title>Enhancements on geohash.org</title>
		<link>http://blog.labix.org/2008/03/01/enhancements-on-geohashorg</link>
		<comments>http://blog.labix.org/2008/03/01/enhancements-on-geohashorg#comments</comments>
		<pubDate>Sat, 01 Mar 2008 21:27:21 +0000</pubDate>
		<dc:creator>Gustavo Niemeyer</dc:creator>
		
		<category><![CDATA[GPS]]></category>

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

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

		<guid isPermaLink="false">http://blog.labix.org/2008/03/01/enhancements-on-geohashorg/</guid>
		<description><![CDATA[Some improvements to geohash.org were made.  Some of them were
motivated by a conversation with Rodrigo Stulzer.

Support for geocoding addresses (city names, whatever).  E.g. http://geohash.org/?q=21&#160;Millbank,&#160;London
Support for moving the Geohash marker in the embedded map, so that modifying the position visually is easier.
Support for providing a &#8220;name&#8221; to Geohashes, by appending a colon and the [...]]]></description>
			<content:encoded><![CDATA[<p>Some improvements to <a href="geohash.org">geohash.org</a> were made.  Some of them were<br />
motivated by a conversation with <a href="http://stulzer.net" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://stulzer.net');">Rodrigo Stulzer</a>.</p>
<ul>
<li>Support for geocoding addresses (city names, whatever).  E.g. <a href="http://geohash.org/?q=21%20Millbank,%20London" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://geohash.org/?q=21%20Millbank,%20London');">http://geohash.org/?q=21&nbsp;Millbank,&nbsp;London</a></li>
<li>Support for moving the Geohash marker in the embedded map, so that modifying the position visually is easier.</li>
<li>Support for providing a &#8220;name&#8221; to Geohashes, by appending a colon and the name, in a nice format. E.g. <a href="http://geohash.org/c216ne:Mt_Hood" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://geohash.org/c216ne:Mt_Hood');">http://geohash.org/c216ne:Mt_Hood</a></li>
<li>Provided a <a href="http://geohash.org/site/tips.html#gmaps" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://geohash.org/site/tips.html#gmaps');">bookmark</a> to get a Geohash while <b>in</b> Google Maps.</li>
<li>Provided a <a href="http://geohash.org/site/tips.html#gmaps" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://geohash.org/site/tips.html#gmaps');">Google Maps Mapplet</a>.  When enabled, it adds a Geohash marker identifying the Geohash position in Google Maps, and it may be moved around.  Here is a screenshot:</li>
</ul>
<div style="text-align: center;"><img style="border: 1px solid #9999ff" src="http://geohash.org/static/mapplet.png" /></div>
<p>Check out the <a href="http://geohash.org/site/tips.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://geohash.org/site/tips.html');">Tips &amp; Tricks</a> page for details on these features.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.labix.org/2008/03/01/enhancements-on-geohashorg/feed</wfw:commentRss>
		</item>
		<item>
		<title>geohash.org is public!</title>
		<link>http://blog.labix.org/2008/02/26/geohashorg-is-public</link>
		<comments>http://blog.labix.org/2008/02/26/geohashorg-is-public#comments</comments>
		<pubDate>Wed, 27 Feb 2008 00:11:38 +0000</pubDate>
		<dc:creator>Gustavo Niemeyer</dc:creator>
		
		<category><![CDATA[Article]]></category>

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

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

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

		<guid isPermaLink="false">http://blog.labix.org/2008/02/26/geohashorg-is-public/</guid>
		<description><![CDATA[After about one year writing this service in my spare time, it&#8217;s finally out.
geohash.org offers short URLs which encode a latitude/longitude pair, so that referencing them in emails, forums, and websites is more convenient.
Geohashes offer properties like arbitrary precision, similar prefixes for nearby positions, and the possibility of gradually removing characters from the end of [...]]]></description>
			<content:encoded><![CDATA[<p>After about one year writing this service in my spare time, it&#8217;s finally out.</p>
<p><a href="http://geohash.org" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://geohash.org');">geohash.org</a> offers short URLs which encode a latitude/longitude pair, so that referencing them in emails, forums, and websites is more convenient.</p>
<p>Geohashes offer properties like arbitrary precision, similar prefixes for nearby positions, and the possibility of gradually removing characters from the end of the code to reduce its size (and gradually lose precision).  I&#8217;ve put the algorithm created in the <b>public domain</b>.  Some details may be seen in the <a href="http://en.wikipedia.org/wiki/Geohash" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://en.wikipedia.org/wiki/Geohash');">Wikipedia article</a> about it (hopefully that&#8217;ll help establishing prior art, and prevent Microsoft from <a href="http://www.freepatentsonline.com/20050023524.html" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.freepatentsonline.com/20050023524.html');">patenting it</a>).</p>
<p>To obtain the Geohash, the user provides latitude and longitude coordinates in a single input box (most commonly used formats for latitude and longitude pairs are accepted), and performs the request.</p>
<p>Besides showing the latitude and longitude corresponding to the given Geohash, users who navigate to a Geohash at geohash.org are also presented with an embedded map, and may download a GPX file, or transfer the waypoint directly to certain GPS receivers. Links are also provided to external sites that may provide further details around the specified location.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.labix.org/2008/02/26/geohashorg-is-public/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
