<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>Scott Rutherford - Home</title>
  <id>tag:blog.caronsoftware.com,2008:mephisto/</id>
  <generator uri="http://mephistoblog.com" version="0.7.3">Mephisto Noh-Varr</generator>
  <link href="http://blog.caronsoftware.com/feed/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://blog.caronsoftware.com/" rel="alternate" type="text/html"/>
  <updated>2008-08-20T17:51:12Z</updated>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-08-20:9719</id>
    <published>2008-08-20T17:47:00Z</published>
    <updated>2008-08-20T17:51:12Z</updated>
    <category term="Rails"/>
    <link href="http://blog.caronsoftware.com/2008/8/20/exclude-records-with-ultrasphinx" rel="alternate" type="text/html"/>
    <title>Exclude Records With UltraSphinx</title>
<summary type="html">&lt;p&gt;So been using &lt;a href=&quot;http://www.sphinxsearch.com/&quot;&gt;Sphinx&lt;/a&gt; with the &lt;a href=&quot;http://blog.evanweaver.com/files/doc/fauna/ultrasphinx/files/README.html&quot;&gt;UltraSphinx&lt;/a&gt; plugin and I came across the requirement to use filters to reject records. Unfortunately in the plugin the filters are hardwired to submit the &#8216;exclude&#8217; parameter as &#8216;false&#8217; i.e include. Time for a quick hack I think&#8230;....&lt;/p&gt;


	&lt;p&gt;Very easy to fix, just open up the &#8216;internals.rb&#8217; file in the UltraSphinx plugin or include the gem using &#8216;rake gems:unpack &lt;span class=&quot;caps&quot;&gt;GEM&lt;/span&gt;=ultrasphinx&#8217; (need to have config.gem &#8220;ultrasphinx&#8221; set in envrinoment.rb) and then find that file.&lt;/p&gt;


	&lt;p&gt;Ok, so found the file? On line 97 is this loop:&lt;/p&gt;


&lt;pre&gt;
Array(opts['filters']).each do |field, value|          
  ....
 begin
     case value
     when Integer, Float, BigDecimal, NilClass, Array
       # XXX Hack to force floats to be floats
       value = value.to_f if type == 'float'
       # Just bomb the filter in there
       request.filters &amp;lt;&amp;lt; Riddle::Client::Filter.new(field, Array(value), false)
     when Range
     ....
end
&lt;/pre&gt;

	&lt;p&gt;The &#8216;Riddle::Client::Filter.new(field, Array(value), false)&#8217; call is the one we need to change (the &#8216;false&#8217; is the exclude param).&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;So been using &lt;a href=&quot;http://www.sphinxsearch.com/&quot;&gt;Sphinx&lt;/a&gt; with the &lt;a href=&quot;http://blog.evanweaver.com/files/doc/fauna/ultrasphinx/files/README.html&quot;&gt;UltraSphinx&lt;/a&gt; plugin and I came across the requirement to use filters to reject records. Unfortunately in the plugin the filters are hardwired to submit the &#8216;exclude&#8217; parameter as &#8216;false&#8217; i.e include. Time for a quick hack I think&#8230;....&lt;/p&gt;


	&lt;p&gt;Very easy to fix, just open up the &#8216;internals.rb&#8217; file in the UltraSphinx plugin or include the gem using &#8216;rake gems:unpack &lt;span class=&quot;caps&quot;&gt;GEM&lt;/span&gt;=ultrasphinx&#8217; (need to have config.gem &#8220;ultrasphinx&#8221; set in envrinoment.rb) and then find that file.&lt;/p&gt;


	&lt;p&gt;Ok, so found the file? On line 97 is this loop:&lt;/p&gt;


&lt;pre&gt;
Array(opts['filters']).each do |field, value|          
  ....
 begin
     case value
     when Integer, Float, BigDecimal, NilClass, Array
       # XXX Hack to force floats to be floats
       value = value.to_f if type == 'float'
       # Just bomb the filter in there
       request.filters &amp;lt;&amp;lt; Riddle::Client::Filter.new(field, Array(value), false)
     when Range
     ....
end
&lt;/pre&gt;

	&lt;p&gt;The &#8216;Riddle::Client::Filter.new(field, Array(value), false)&#8217; call is the one we need to change (the &#8216;false&#8217; is the exclude param).&lt;/p&gt;
&lt;p&gt;So what I did was to change that loop to:&lt;/p&gt;


&lt;pre&gt;
        Array(opts['filters']).each do |field, value|          

          field = field.to_s          
          type = Fields.instance.types[field]             

          # Special derived attribute
          if field == 'distance' and options['location']
            field, type = '@geodist', 'float'
          end

          raise UsageError, &quot;field #{field.inspect} is invalid&quot; unless type

# ADDED FROM HERE
          exclude = false
          # check for exclude flag
          if value.is_a? Hash            
            exclude = value[:exclude]
            value = value[:value]
          end
# TO HERE

          begin
            case value
              when Integer, Float, BigDecimal, NilClass, Array
                # XXX Hack to force floats to be floats
                value = value.to_f if type == 'float'
                # Just bomb the filter in there

# CHANGE CALL HERE TO PASS THE exclude PARAMETER
                request.filters &amp;lt;&amp;lt; Riddle::Client::Filter.new(field, Array(value), exclude)
              when Range
                # Make sure ranges point in the right direction
                min, max = [value.begin, value.end].map {|x| x._to_numeric }
                raise NoMethodError unless min &amp;lt;=&amp;gt; max and max &amp;lt;=&amp;gt; min
                min, max = max, min if min &amp;gt; max
                # XXX Hack to force floats to be floats
                min, max = min.to_f, max.to_f if type == 'float'

# CHANGE CALL HERE TO PASS THE exclude PARAMETER
                request.filters &amp;lt;&amp;lt; Riddle::Client::Filter.new(field, min..max, exclude)
              when String
                # XXX Hack to move text filters into the query
                opts['parsed_query'] &amp;lt;&amp;lt; &quot; @#{field} #{value}&quot; 
              else
                raise NoMethodError
            end
          rescue NoMethodError =&amp;gt; e
            raise UsageError, &quot;Filter value #{value.inspect} for field #{field.inspect} is invalid&quot; 
          end
        end
&lt;/pre&gt;

	&lt;p&gt;Now I can do searches like&lt;/p&gt;


&lt;pre&gt;
    @search = Ultrasphinx::Search.new(
      :query =&amp;gt; params[:q], 
      :page =&amp;gt; page,
      :class_names =&amp;gt; [&quot;User&quot;], 
      :filters =&amp;gt; {:id =&amp;gt; {:value =&amp;gt; current_user.id, :exclude =&amp;gt; true}}
    )
&lt;/pre&gt;

	&lt;p&gt;And the current_user gets excluded, cool.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-08-20:9660</id>
    <published>2008-08-20T15:49:00Z</published>
    <updated>2008-08-20T15:49:54Z</updated>
    <category term="Rails"/>
    <link href="http://blog.caronsoftware.com/2008/8/20/hoptoad" rel="alternate" type="text/html"/>
    <title>Hop Toad</title>
<content type="html">
            &lt;p&gt;I've been using the &lt;a href=&quot;http://www.hoptoadapp.com&quot;&gt;Hop Toad&lt;/a&gt; web app for a while now to collect errors from my Rails apps and its been working out great. It drops in very simply and replaces the Exception Notifier plugin I was using.&lt;/p&gt;

&lt;p&gt;Big advantages are the archive of errors and the ability to mark them as dealt with. Of course I could do that with email folders and the like, but I'm lazy and this appears to do it all. Oh and its free!!!&lt;/p&gt;

&lt;img src=&quot;http://blog.caronsoftware.com/assets/2008/8/19/Picture_1.png&quot; width=&quot;500px&quot;&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-08-01:8147</id>
    <published>2008-08-01T01:13:00Z</published>
    <updated>2008-08-01T01:17:54Z</updated>
    <link href="http://blog.caronsoftware.com/2008/8/1/linux-just-say-no" rel="alternate" type="text/html"/>
    <title>Linux - Just say no.......</title>
<content type="html">
            More from the excellent &lt;a href=&quot;http://www.xkcd.com&quot;&gt;xkcd&lt;/a&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://imgs.xkcd.com/comics/cautionary.png&quot; width=&quot;510&quot;&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-07-30:8077</id>
    <published>2008-07-30T15:42:00Z</published>
    <updated>2008-07-30T15:56:30Z</updated>
    <link href="http://blog.caronsoftware.com/2008/7/30/mashup-of-the-day-tweetlists" rel="alternate" type="text/html"/>
    <title>Mashup of the Day - Tweetlists</title>
<content type="html">
            &lt;p&gt;So, I got a great email about an hour ago:&lt;/p&gt;
&lt;p&gt;To the creative genius[es] behind TweetLists,&lt;/p&gt;
&lt;p&gt;We'd like to congratulate you on being selected as our MASHUP OF THE DAY at MashupAwards.com for July 30, 2008.&lt;/p&gt;

&lt;a href=&quot;http://mashupawards.com/tweetlists&quot;&gt;&lt;img src=&quot;http://mashupawards.com/img/badges/motd.gif&quot; alt=&quot;Mashup of the Day&quot; /&gt;&lt;/a&gt;

&lt;br /&gt;
&lt;p&gt;So, not all that familiar with &lt;a href=&quot;http://mashupawards.com&quot;&gt;The Mashup Awards&lt;/a&gt;, but others clearly are as the resulting traffic killed the site (not that that would of been hard)! I would like to say thank you to them for the award and also take this opportunity to thank my manager, parents, producer, jesus, god, twitter!, Tim Berners Lee, Matz........&lt;/p&gt;
&lt;p&gt;Right then off to 'enjoy basking in the glow of my well deserved recognition' as suggested by 'The Mashup Awards Judging Panel'&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-07-28:7806</id>
    <published>2008-07-28T12:38:00Z</published>
    <updated>2008-07-28T12:56:57Z</updated>
    <category term="Rails"/>
    <link href="http://blog.caronsoftware.com/2008/7/28/parsing-rails-log-files-with-json" rel="alternate" type="text/html"/>
    <title>Parsing Rails log files with JSON</title>
<content type="html">
            &lt;p&gt;So I needed to parse the log files for &lt;a href=&quot;http://slimtimer.com&quot;&gt;SlimTimer&lt;/a&gt; this weekend to correct a data loss issue due to a small issue with implementing https for subscribers. The issue required looking for requests that had returned something other than &#8220;200 OK&#8221; collecting the parameters and entering any data that had got lost. After a bit of messing around it occured to me the the format of the parameters string in the Rail&#8217;s logs was not a million miles from the &lt;span class=&quot;caps&quot;&gt;JSON&lt;/span&gt; format, so I came up with this to turn the string into a useable hash:&lt;/p&gt;


&lt;pre&gt;
params =~ /.*: Parameters: (\{.*\})$/
str_hash = JSON.parse(params.gsub('=&amp;gt;',':'))
&lt;/pre&gt;

	&lt;p&gt;This provides a hash of the parameters used in the request. Of course the keys here are strings so to convert to symbols we can then use:&lt;/p&gt;


&lt;pre&gt;
def create_symbol_hash(input)
  ret = input
  if input.is_a? Hash
    ret = {}
    input.each do |k, v|
      ret[k.to_sym] = create_symbol_hash(v)
    end
    ret
  else
    ret
  end    
end
&lt;/pre&gt;

	&lt;p&gt;and simply pass in the output from the &lt;span class=&quot;caps&quot;&gt;JSON&lt;/span&gt; library. Seemed quite neat to me anyway.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-07-18:6931</id>
    <published>2008-07-18T08:22:00Z</published>
    <updated>2008-07-18T09:30:39Z</updated>
    <link href="http://blog.caronsoftware.com/2008/7/18/how-not-to-return-your-hire-car" rel="alternate" type="text/html"/>
    <title>How not to return your hire car!!!</title>
<content type="html">
            &lt;p&gt;So just got back from a great 2 weeks in California, went to Foo camp, Social Media Camp, Mashable and a couple of other meetups &#8211; all excellent. One slight hiccup with the hire car&#8230;..... I claim it was the taxi&#8217;s fault (of course), although its a bit of a blur to be honest.&lt;/p&gt;


	&lt;p&gt;&lt;img src=&quot;http://blog.caronsoftware.com/assets/2008/7/18/crash.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


	&lt;p&gt;On the up side I can highly recommend Enterprise (and taking out the full coverage), they were very helpful and polite. Even offered me a new car &#8211; which would of seemed like a better idea if I could move properly!! At least no one was badly hurt.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-06-22:6352</id>
    <published>2008-06-22T14:52:00Z</published>
    <updated>2008-06-22T14:58:02Z</updated>
    <category term="Links"/>
    <link href="http://blog.caronsoftware.com/2008/6/22/tweetlists-comedy" rel="alternate" type="text/html"/>
    <title>TweetLists Comedy</title>
<content type="html">
            &lt;p&gt;So, couple of pretty funny links creeping up the popular chart over at &lt;a href=&quot;http://www.tweetlists.com&quot;&gt;TweetLists&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;1) &lt;a href=&quot;http://yahoorezinr.com/&quot;&gt;Yahoo Resigner&lt;/a&gt; (by Mat Honan)&lt;/p&gt;


	&lt;p&gt;2) &lt;a href=&quot;http://www.instantrimshot.com/&quot;&gt;Instant Rim Shot&lt;/a&gt; (by &lt;a href=&quot;http://scottcarver.info/&quot;&gt;Scott Carver&lt;/a&gt;)&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-06-21:6332</id>
    <published>2008-06-21T22:10:00Z</published>
    <updated>2008-06-21T22:18:17Z</updated>
    <category term="Links"/>
    <link href="http://blog.caronsoftware.com/2008/6/21/goosh" rel="alternate" type="text/html"/>
    <title>Goosh</title>
<content type="html">
            &lt;p&gt;One of the top links that came from &lt;a href=&quot;http://www.tweetlists.com&quot;&gt;Tweetlists&lt;/a&gt; over the past couple of weeks is &lt;a href=&quot;http://www.goosh.org&quot;&gt;Goosh&lt;/a&gt;, an online google shell. Its great, well worth checking out. I really like the &#8220;translate&#8221; mode.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-06-21:6331</id>
    <published>2008-06-21T22:04:00Z</published>
    <updated>2008-06-21T22:07:37Z</updated>
    <category term="FCKeditor"/>
    <link href="http://blog.caronsoftware.com/2008/6/21/fckeditor-plugin-0-5-1-released" rel="alternate" type="text/html"/>
    <title>FCKeditor Plugin 0.5.1 Released</title>
<content type="html">
            &lt;p&gt;Thanks to &lt;a href=&quot;http://www.fortytwo.gr/&quot;&gt;George Chatzigeorgiou&lt;/a&gt; there is now a version of the FCKeditor plugin that works with Rails 2.1. I have put the packages on Ruby Forge and updated the repository. If you are interested as to what the issue was check out George&#8217;s comments on the previous &lt;a href=&quot;http://blog.caronsoftware.com/2008/6/4/fckeditor-plugin-0-5-0&quot;&gt;post&lt;/a&gt;.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-06-19:6300</id>
    <published>2008-06-19T15:55:00Z</published>
    <updated>2008-06-19T15:55:42Z</updated>
    <link href="http://blog.caronsoftware.com/2008/6/19/wordle" rel="alternate" type="text/html"/>
    <title>Wordle</title>
<content type="html">
            My Delicious tag cloud from &lt;a href=&quot;http://www.wordle.net&quot;&gt;Wordle&lt;/a&gt; very cool 

&lt;br /&gt;
&lt;img src=&quot;http://blog.caronsoftware.com/assets/2008/6/19/Picture_1.png&quot; width=&quot;500px&quot;&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-06-04:6138</id>
    <published>2008-06-04T16:53:00Z</published>
    <updated>2008-06-04T16:57:51Z</updated>
    <category term="FCKeditor"/>
    <link href="http://blog.caronsoftware.com/2008/6/4/fckeditor-plugin-0-5-0" rel="alternate" type="text/html"/>
    <title>FCKeditor Plugin 0.5.0</title>
<content type="html">
            &lt;p&gt;I created a new release for the fckeditor plugin today. It upgrades the version of the editor to the lastest 2.6 and also fixes the SanitizeHelper include issue which was causing problems with the spell check.&lt;/p&gt;


	&lt;p&gt;Other than that, little has changed. I think it is all still working ok, although I have only had time to complete a cursory check on the editor&#8217;s functionality.&lt;/p&gt;


	&lt;p&gt;The plugin is available from &lt;a href=&quot;http://rubyforge.org/projects/fckeditorp/&quot;&gt;Ruby Forge&lt;/a&gt; or by doing this:&lt;/p&gt;


&lt;pre&gt;
ruby script/plugin install svn://rubyforge.org//var/svn/fckeditorp/trunk/fckeditor
&lt;/pre&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-05-29:6036</id>
    <published>2008-05-29T15:31:00Z</published>
    <updated>2008-05-29T15:33:44Z</updated>
    <category term="Rails"/>
    <link href="http://blog.caronsoftware.com/2008/5/29/twitter-api-user-ids" rel="alternate" type="text/html"/>
    <title>Twitter API: User IDs</title>
<content type="html">
            &lt;p&gt;So, next lesson from &lt;a href=&quot;http://www.tweetlists.com&quot;&gt;TweetLists&lt;/a&gt;: the user id given in the xml from the public timeline is not a unique identifier. The screen name is the only way to identify a user. I ended up with 17 different ids for one user!!! Hence, gave up fixed it and dropped the database &#8211; too much effort to fix when its only been running for 12 hours.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-05-29:6030</id>
    <published>2008-05-29T09:13:00Z</published>
    <updated>2008-05-29T15:08:17Z</updated>
    <category term="Rails"/>
    <link href="http://blog.caronsoftware.com/2008/5/29/tweetlists" rel="alternate" type="text/html"/>
    <title>TweetLists</title>
<content type="html">
            &lt;p&gt;&lt;img src=&quot;http://blog.caronsoftware.com/assets/2008/5/29/Picture_1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


	&lt;p&gt;I released &lt;a href=&quot;http://www.tweetlists.com&quot;&gt;TweetLists&lt;/a&gt; last night, well actually this morning (about 3am), the idea being to try and capture a little of the zeitgeist on &lt;a href=&quot;http://www.twitter.com&quot;&gt;Twitter&lt;/a&gt; by aggregating the links people are talking about. At the moment there are 3 lists, the live feed, a popular feed (the links ordered by the number of times they appeared) and one I have chosen to call Twitterati (quite proud of that!) which is the links ordered by the number of followers people have.&lt;/p&gt;


	&lt;p&gt;At the moment there is no time aspect to the Twitterati or Popular lists (not relevant on the live one) but I guess I will make them for the last 7 days?&lt;/p&gt;


	&lt;p&gt;Lesson one form this has been: don&#8217;t try and be clever with your scheduling &#8211; cron just works. I tried to use the Rufus Scheduler and it had stopped running by the time I got up again this morning.&lt;/p&gt;


	&lt;p&gt;Anyhoo, I&#8217;ve found it to be fun and interesting so far, any ideas for other lists?&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-05-27:6018</id>
    <published>2008-05-27T11:16:00Z</published>
    <updated>2008-05-27T11:22:09Z</updated>
    <link href="http://blog.caronsoftware.com/2008/5/27/plugin-of-the-day-gemsonrails" rel="alternate" type="text/html"/>
    <title>Plugin of the Day - GemsOnRails</title>
<content type="html">
            &lt;p&gt;So this plugin by Dr Nik Williams (no link available) does this:&lt;/p&gt;


	&lt;p&gt;Link or freeze RubyGems into your rails apps, instead of just plugins. This allows you to ‘vendor everything’ – pushing all dependent gems into your rails app thus ensuring your application will be guaranteed to work when deployed. Your application is no longer dependent on the gems that are/aren’t available on your target deployment environment.&lt;/p&gt;


	&lt;p&gt;I found this very useful, mainly because for some gems I want to see and maybe play with the code, usual I just copy the gem to lib. This provides a simple way of bringing in only one gem. I know there are features in 2.1 that deal with gem dependencies and do some cool stuff, but from what I know (from &lt;a href=&quot;http://railscasts.com&quot;&gt;Ryan Bates&lt;/a&gt;) I don&#8217;t think they provide this particular functionality.&lt;/p&gt;


	&lt;p&gt;Its available on &lt;a href=&quot;http://gemsonrails.rubyforge.org/&quot;&gt;RubyForge&lt;/a&gt;. Or just by using the &#8220;sudo gem install gemsonrails&#8221; command.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://blog.caronsoftware.com/">
    <author>
      <name>Scott</name>
    </author>
    <id>tag:blog.caronsoftware.com,2008-05-26:6005</id>
    <published>2008-05-26T00:37:00Z</published>
    <updated>2008-05-26T00:41:39Z</updated>
    <category term="Stuff"/>
    <link href="http://blog.caronsoftware.com/2008/5/26/xkcd" rel="alternate" type="text/html"/>
    <title>Xkcd: GeoHashing and Stuff  </title>
<content type="html">
            &lt;p&gt;Just been flicking through the cartoons at &lt;a href=&quot;http://www.xkcd.com&quot;&gt;xkcd.com&lt;/a&gt; again and came across this one which made me chuckle:&lt;/p&gt;


	&lt;p&gt;&lt;img src=&quot;http://imgs.xkcd.com/comics/in_ur_reality.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


	&lt;p&gt;Also found the &lt;a href=&quot;http://wiki.xkcd.com/geohashing/Main_Page&quot;&gt;GeoHashing, Spontaneous Adventure Generator&lt;/a&gt; to be very interesting idea. Check it out.&lt;/p&gt;
          </content>  </entry>
</feed>
