<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en-US">
  <title>schwarz - Home</title>
  <id>tag:germanforblack.com,2008:mephisto/</id>
  <generator uri="http://mephistoblog.com" version="0.7.3">Mephisto Noh-Varr</generator>
  
  <link href="http://germanforblack.com/" rel="alternate" type="text/html" />
  <updated>2008-01-18T11:14:23Z</updated>
  <link rel="self" href="http://feeds.feedburner.com/schwarz" type="application/atom+xml" /><entry xml:base="http://germanforblack.com/">
    <author>
      <name>ben</name>
    </author>
    <id>tag:germanforblack.com,2008-01-14:25</id>
    <published>2008-01-14T14:39:00Z</published>
    <updated>2008-01-18T11:14:23Z</updated>
    <category term="projects" />
    <category term="gem" />
    <category term="memcache" />
    <category term="memcached" />
    <category term="openuri" />
    <category term="ruby" />
    <category term="service" />
    <category term="web" />
    <link href="http://feedproxy.google.com/~r/schwarz/~3/DB-KriuH_AY/openuri-and-memcached-sitting-in-a-tree" rel="alternate" type="text/html" />
    <title>OpenURI and MemCached sitting in a tree</title>
<content type="html">
            &lt;p&gt;The &lt;em&gt;ultimate&lt;/em&gt; frankenstein-like experiment of harnessing OpenURI and MemCached has been completed!&lt;/p&gt;

&lt;p&gt;For a number of projects that used openuri, I needed a way to reduce hits on remote services or rest apis, or even speed up the experience on the client end.&lt;/p&gt;

&lt;h3&gt;Getting it&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;&lt;/p&gt;

&lt;pre&gt;
sudo gem install openuri_memcached
&lt;/pre&gt;

&lt;p&gt;&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;The beast is alive! (Usage, for those not on late hours right now)&lt;/h3&gt;

&lt;p&gt;Use exactly the same as you would openuri, only.. enable it.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/p&gt;

&lt;pre&gt;
  require 'openuri_memcached'
  OpenURI::Cache.enable!
  open("http://germanforblack.com").read # Slow as a wet week
&lt;/pre&gt;

&lt;p&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Quit your app (leave memcached running) and run the same example, it should now happen in less then … some time that is really fast.&lt;/p&gt;

&lt;h3&gt;Small print options&lt;/h3&gt;

&lt;p&gt;To get started run your memcached server&lt;/p&gt;

&lt;p&gt;&lt;code&gt;  $ memcached -d &lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The default address that this gem will terminate against is localhost:11211, you can change this using:&lt;/p&gt;  

&lt;p&gt;&lt;code&gt;OpenURI::Cache.host = ['serverone.com:11211', 'servertwo:11211']&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The cache defaults to 15 minutes, however this can be changed using:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;OpenURI::Cache.expiry = 60 * 10 # Ten long minutes&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Let me know if you have any issues with it, or if you have any use for it!&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/schwarz/~4/DB-KriuH_AY" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://germanforblack.com/2008/openuri-and-memcached-sitting-in-a-tree</feedburner:origLink></entry>
  <entry xml:base="http://germanforblack.com/">
    <author>
      <name>ben</name>
    </author>
    <id>tag:germanforblack.com,2007-12-06:17</id>
    <published>2007-12-06T22:24:00Z</published>
    <updated>2007-12-31T05:22:10Z</updated>
    <category term="adobe" />
    <category term="api" />
    <category term="hpricot" />
    <category term="kuler" />
    <category term="parser" />
    <category term="rss" />
    <category term="ruby" />
    <link href="http://feedproxy.google.com/~r/schwarz/~3/Hqh6YS5sAH0/ruby-adobe-kuler-parser" rel="alternate" type="text/html" />
    <title>A ruby Kuler parser</title>
<content type="html">
            &lt;p&gt;I wrote &lt;a href="http://pastie.textmate.org/125679"&gt;this little diddy&lt;/a&gt; a couple of weeks ago; Since then it has sat on my desktop as a constant reminder of the little time I have to do anything with the snippets of crap that I write on a regular basis.&lt;/p&gt;

&lt;p&gt;Due to this very reason, its probably better on the web for anyone who was interested in grabbing colours from &lt;a href="http://kuler.adobe.com/"&gt;Kuler&lt;/a&gt;, Adobe labs' user submitted colour... thing.&lt;/p&gt;

&lt;h3&gt;Usage&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;
require 'kuler'
include Kuler
Kuler::recent
=&gt; ["0E2F32", "C1E6B7", "006A69", "AAC593", "236555"]
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;This will give you an Array of recently posted colours' in hex values, other options are &lt;code&gt;Kuler::rating&lt;/code&gt; and &lt;code&gt;Kuler::popular&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Having a poke around the Kuler site should show you that no decent API exits, however you can send some query strings to their awfully formatted RSS feed.&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/schwarz/~4/Hqh6YS5sAH0" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://germanforblack.com/2007/ruby-adobe-kuler-parser</feedburner:origLink></entry>
  <entry xml:base="http://germanforblack.com/">
    <author>
      <name>ben</name>
    </author>
    <id>tag:germanforblack.com,2007-10-20:15</id>
    <published>2007-10-20T22:41:00Z</published>
    <updated>2008-01-08T23:34:19Z</updated>
    <category term="ajax" />
    <category term="function" />
    <category term="javascript" />
    <category term="jquery" />
    <category term="js" />
    <category term="keypress" />
    <category term="onkeypress" />
    <category term="scalability" />
    <category term="server" />
    <category term="sleep" />
    <category term="xmlhttprequest" />
    <link href="http://feedproxy.google.com/~r/schwarz/~3/EkcatpCaFFE/javascript-sleeping-keypress-delays-and-bashing-bad-articles" rel="alternate" type="text/html" />
    <title>Javascript: Sleep, keypress delays and bashing bad articles</title>
<content type="html">
            &lt;p&gt;Today I read the &lt;a href="http://www.highscalability.com/strategy-send-xhr-request-lost-focus-instead-every-character"&gt;high scalability article&lt;/a&gt; aimed to reduce the amount of requests to your server by not sending XMLHttpRequests for every keystroke. &lt;/p&gt;
&lt;p&gt;It was suggested that a &lt;code&gt;onblur&lt;/code&gt; event was used to measure when the user had stopped typing.&lt;/p&gt;

&lt;p&gt;Will your users expect to have to tab out of a field before something else happens? Will it confuse them if they've started typing in another text area? &lt;strong&gt;Probably.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At &lt;a href="http://sct.com.au/"&gt;work&lt;/a&gt;, I'd whipped up something elegant to handle this very same paradigm for validating or searching user input.&lt;/p&gt;

&lt;h3&gt;Example&lt;/h3&gt;
&lt;p&gt;(using jquery to make those events really easy)&lt;/p&gt;
&lt;pre&gt;
&lt;code&gt;
$('input.search').keyup(function () {
	// Lets have a clean version of the search string, you could really do more there though
	var search_term = new RegExp(this.value.replace(/\\/g, ''), "i");
	var search_execution = function () {
		// Expensive server queries here - buy some real servers guys! (what on earth are you requesting?)
	}.sleep(175);
});
&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;175 milliseconds delay before the method is executed is a good typing rate. Maybe you want to change this to something that you're more comfortable with though.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Hold on&lt;/em&gt;, last time I checked, &lt;code&gt;sleep()&lt;/code&gt; wasn't a part of the standard JavaScript language.
Rather than using a simple &lt;code&gt;setTimeout()&lt;/code&gt;, I decided that the ajax'd method shouldn't be executed again until it had  finished the last time it ran.&lt;/p&gt;

&lt;h3&gt;The sleep method&lt;/h3&gt;
&lt;pre&gt;
&lt;code&gt;
Function.prototype.sleep = function (millisecond_delay) {
	if(window.sleep_delay != undefined) clearTimeout(window.sleep_delay);
	var function_object = this;
	window.sleep_delay = setTimeout(function_object, millisecond_delay);
};
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;er, yeah.. thats about it. I just really wanted to post the sleep method. I'd written it over a year ago now, but it's still used on a pretty regular basis. I use it for searching conducted in the DOM by hiding elements that don't match a simple regex.&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/schwarz/~4/EkcatpCaFFE" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://germanforblack.com/2007/javascript-sleeping-keypress-delays-and-bashing-bad-articles</feedburner:origLink></entry>
  <entry xml:base="http://germanforblack.com/">
    <author>
      <name>ben</name>
    </author>
    <id>tag:germanforblack.com,2007-10-05:14</id>
    <published>2007-10-05T17:06:00Z</published>
    <updated>2007-10-06T01:16:43Z</updated>
    <category term="database" />
    <category term="mysql" />
    <category term="rake" />
    <category term="ruby" />
    <link href="http://feedproxy.google.com/~r/schwarz/~3/vkC9YB8p0bI/grabbing-mysql-production-databases-to-your-local-system-with-rake" rel="alternate" type="text/html" />
    <title>Grabbing mysql production databases to your local system with rake</title>
<content type="html">
            After reading the comments on &lt;a href="http://nateclark.com/articles/2007/02/23/rails-rake-tasks-to-sync-your-remote-database-to-your-local-development-environment" title="using rake to sync remote databases"&gt;Nate Clarke's article&lt;/a&gt; I decided it would be a good idea to republish the &amp;lt;strike&gt;stolen&amp;lt;/strike&gt; modified script that I found elsewhere (Honestly, I have no idea. If anyone can cite the original author I'll give credit where due)

&lt;code&gt;
&lt;pre&gt;
namespace :db do
desc "Sync your local database with a remote one REMOTE=name_of_database LOCAL=your_local_db"
  task :sync do
    `ssh domain.com "mysqldump --skip-extended-insert -u db_username -p #{ENV['REMOTE']} | bzip2 " | bzcat | mysql -u root #{ENV['LOCAL'] || "app_development"}`
  end
end
&lt;/pre&gt;
&lt;/code&gt;

&lt;h3&gt;The rundown&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sct.com.au" title="SCT"&gt;We&lt;/a&gt; use this almost daily&lt;/li&gt;
&lt;li&gt;Use RSA keys and you'll only need to auth once (for the database)&lt;/li&gt;
&lt;li&gt;I'm using --skip-extended-insert because it will write each query on a new line (for larger databases mysql can be known to crack the shits on a default setup when everything is inserted in a massive chunk)&lt;/li&gt;
&lt;li&gt;Its using bzip to compress it over the wire (sadly, this was the original authors smarts)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Usage&lt;/h3&gt;
&lt;code&gt;
&lt;pre&gt;
rake db:sync REMOTE=my_db_with_lots_of_data
&lt;/pre&gt;
&lt;/code&gt;


This is great for testing your app with different versions of data (for ridiculous migrations and such
          &lt;img src="http://feeds.feedburner.com/~r/schwarz/~4/vkC9YB8p0bI" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://germanforblack.com/2007/grabbing-mysql-production-databases-to-your-local-system-with-rake</feedburner:origLink></entry>
  <entry xml:base="http://germanforblack.com/">
    <author>
      <name>ben</name>
    </author>
    <id>tag:germanforblack.com,2007-09-19:11</id>
    <published>2007-09-19T10:45:00Z</published>
    <updated>2007-12-31T05:36:37Z</updated>
    <category term="content expiry" />
    <category term="expires" />
    <category term="header" />
    <category term="http" />
    <category term="mongrel" />
    <category term="nginx" />
    <category term="rails" />
    <category term="server" />
    <link href="http://feedproxy.google.com/~r/schwarz/~3/NlzmtGN9Uow/extreme-expires-headers-for-nginx-and-mongrel" rel="alternate" type="text/html" />
    <title>Extreme expires headers for nginx and mongrel</title>
<content type="html">
            &lt;p&gt;&lt;a href="http://www.google.com/search?&amp;amp;q=nginx+rails+config"&gt;Like everyone else&lt;/a&gt;, I read &lt;a href="http://brainspl.at/articles/2007/01/03/new-nginx-conf-with-optimizations"&gt;ezra's&lt;/a&gt; nginx config and put it straight to use.&lt;/p&gt;

&lt;p&gt;After recently becoming addicted to &lt;a href="http://developer.yahoo.com/yslow/"&gt;yslow&lt;/a&gt;, tweaking configs day and night (well, it happened once. yslow is great though) I  decided to add expires headers to anything that isn't served by rails, your js, css, images etc. &lt;/p&gt;

&lt;p&gt;Without further ado, my config:&lt;/p&gt;

&lt;pre&gt;
&lt;code&gt;
worker_processes  2;
pid /var/run/nginx.pid;
events {
  worker_connections 1024;
}

http {
  include conf/mime.types;
  default_type  application/octet-stream;
  log_format main '$remote_addr - $remote_user [$time_local] '
                  '"$request" $status  $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

  access_log  /var/log/nginx_access.log  main;
  error_log  /var/log/nginx_error.log debug;
  sendfile on;

  tcp_nopush on;
  tcp_nodelay off;
  gzip on;
  gzip_http_version 1.0;
# More is heavier on the CPU
  gzip_comp_level 5;
  gzip_proxied any;
  gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

  upstream schwarz {
    server 127.0.0.1:4000;
    server 127.0.0.1:4001;
    server 127.0.0.1:4002;
  }
  
  server {
    listen 80;
    client_max_body_size 50M;
    server_name .germanforblack.com;
    root /var/www/public;

    access_log  /var/log/nginx.vhost.access.log  main;
    
    location / {
      proxy_set_header  X-Real-IP  $remote_addr;

      # needed for HTTPS
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Host $http_host;
      proxy_redirect false;
      proxy_max_temp_file_size 0;
      
      if (-f $request_filename) { 
	&lt;strong&gt;expires max;&lt;/strong&gt;
        break;
      }

      if (-f $request_filename/index.html) {
       rewrite (.*) $1/index.html break;
      }
      # Tasty caching
      if (-f $request_filename.html) {
        rewrite (.*) $1.html break;
      }

      if (!-f $request_filename) {
        proxy_pass http://schwarz;
        break;
      }
    }

    error_page   500 502 503 504  /500.html;
    location = /500.html {
      root   /var/www/public;
    }
  }
}
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;Note the expires method. You just sped up your app dramatically&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/schwarz/~4/NlzmtGN9Uow" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://germanforblack.com/2007/extreme-expires-headers-for-nginx-and-mongrel</feedburner:origLink></entry>
  <entry xml:base="http://germanforblack.com/">
    <author>
      <name>ben</name>
    </author>
    <id>tag:germanforblack.com,2007-09-18:10</id>
    <published>2007-09-18T13:50:00Z</published>
    <updated>2007-09-18T13:51:09Z</updated>
    <category term="development" />
    <category term="http" />
    <category term="lighttpd" />
    <category term="lighty" />
    <category term="server" />
    <category term="web" />
    <link href="http://feedproxy.google.com/~r/schwarz/~3/JZa6yIoEOuY/how-to-use-lighttpd-to-serve-a-static-site-for-development" rel="alternate" type="text/html" />
    <title>How to use lighttpd to serve a static site for development</title>
<content type="html">
            &lt;p&gt;Write the following into your /etc/lighttpd/lighttpd.conf&lt;/p&gt;

&lt;pre&gt;
&lt;code&gt;
server.bind = "0.0.0.0"
server.port = 3000
server.document-root = CWD
server.dir-listing = "enable"

mimetype.assign = (  
  ".css"        =&gt;  "text/css",
  ".gif"        =&gt;  "image/gif",
  ".htm"        =&gt;  "text/html",
  ".html"       =&gt;  "text/html",
  ".jpeg"       =&gt;  "image/jpeg",
  ".jpg"        =&gt;  "image/jpeg",
  ".js"         =&gt;  "text/javascript",
  ".png"        =&gt;  "image/png",
  ".swf"        =&gt;  "application/x-shockwave-flash",
  ".txt"        =&gt;  "text/plain"
)
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;Not bad, now, a really nice way to execute this, would be from the directory of where your sites' html &amp; assets are at.&lt;/p&gt;

&lt;p&gt;Place the folowing in to your ~/.bash_login or ~/.profile file.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;alias li="lighttpd -D -f /etc/lighttpd/lighttpd.conf"&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Proof is in the pudding: &lt;/p&gt;

&lt;pre&gt;
&lt;code&gt;
bens-pb:~/sites ben$ li
2007-09-18 23:44:55: (log.c.75) server started
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;Ctrl+c will quit the server&lt;/p&gt;

&lt;pre&gt;
&lt;code&gt;
2007-09-18 23:45:30: (server.c.1216) [note] graceful shutdown started 
2007-09-18 23:45:30: (log.c.135) server stopped
&lt;/code&gt;
&lt;/pre&gt;

Shazam! Easy.
          &lt;img src="http://feeds.feedburner.com/~r/schwarz/~4/JZa6yIoEOuY" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://germanforblack.com/2007/how-to-use-lighttpd-to-serve-a-static-site-for-development</feedburner:origLink></entry>
  <entry xml:base="http://germanforblack.com/">
    <author>
      <name>ben</name>
    </author>
    <id>tag:germanforblack.com,2007-08-30:9</id>
    <published>2007-08-30T11:52:00Z</published>
    <updated>2007-09-03T04:02:36Z</updated>
    <category term="javascript" />
    <category term="js" />
    <category term="ruby" />
    <category term="slides" />
    <link href="http://feedproxy.google.com/~r/schwarz/~3/6DTj_IH_CYs/modern-javascript-slides" rel="alternate" type="text/html" />
    <title>Modern javascript slides</title>
<content type="html">
            &lt;p&gt;My slides from the Melbourne Ruby User Group, &lt;a href="http://germanforblack.com/assets/2007/8/30/modern_javascript.pdf"&gt;“Modern Javascript”&lt;/a&gt; are available in PDF. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://germanforblack.com/assets/2007/8/30/modern_javascript.pdf"&gt;&lt;img src="http://germanforblack.com/assets/2007/8/30/Picture_1.png" alt="Modern javascript" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unfortunately no audio was recorded and the slides will make little sense without speech over the top. Hopefully a reference of the talk for those who wanted it.&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/schwarz/~4/6DTj_IH_CYs" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://germanforblack.com/2007/modern-javascript-slides</feedburner:origLink></entry>
  <entry xml:base="http://germanforblack.com/">
    <author>
      <name>ben</name>
    </author>
    <id>tag:germanforblack.com,2007-08-19:4</id>
    <published>2007-08-19T09:24:00Z</published>
    <updated>2007-10-04T12:46:11Z</updated>
    <category term="gem" />
    <category term="google" />
    <category term="hpricot" />
    <category term="open-uri" />
    <category term="ruby" />
    <link href="http://feedproxy.google.com/~r/schwarz/~3/_E-8ebawStk/googlequery" rel="alternate" type="text/html" />
    <title>Introducing GoogleQuery</title>
<summary type="html">&lt;p&gt;So, I love Hpricot because it feels like an extension of my hand.&lt;/p&gt;</summary><content type="html">
            &lt;p&gt;So, I love Hpricot because it feels like an extension of my hand.&lt;/p&gt;
&lt;h2&gt;So, I love Hpricot because it feels like an extension of my hand.&lt;/h2&gt;

&lt;p&gt;Google (and Yahoo) have awesome human searchable queries like “people in china”.&lt;/p&gt;

&lt;p&gt;The top most search result will show you the amount of people in china.&lt;/p&gt;

&lt;p&gt;I quickly decided that this would be useless; however incredible to show my &lt;em&gt;mad-ill flow&lt;/em&gt; with css selectors. &lt;/p&gt;

&lt;p&gt;First, grab the gem from Rubyforge using:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo gem install google_query&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Leap your ass into irb, require the gem and start screwing around&lt;/p&gt;

&lt;p&gt;&lt;em&gt;See how you get spanked by the pound&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GoogleQuery::Currency.get 'AUD to GBP'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=&amp;gt; 1 U.S. dollar = 0.490484599 British pounds&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Population in Melbourne&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GoogleQuery::Population.get 'melbourne'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=&amp;gt; Population: 3,850,000 (Est.) (2nd)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Current time in London&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GoogleQuery::Time.get 'london'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=&amp;gt; 2:26 PM on Monday, July 30&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;On the command line&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;bens-pb:~ ben$ gpop melbourne&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=&amp;gt; Population: 3,850,000 (Est.) (2nd)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;bens-pb:~ ben$ gtime london&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=&amp;gt; 2:26 PM on Monday, July 30&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I couldn’t resist naming it gmoney&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;bens-pb:~ ben$ gmoney AUD GBP&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=&amp;gt; 1 Australian dollar = 0.424269178 British pounds&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;There you have it, my first gem &lt;em&gt;ever&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Some queries may be broken, this could be due to google changing their search results screen or just no damn results.&lt;/p&gt;
          &lt;img src="http://feeds.feedburner.com/~r/schwarz/~4/_E-8ebawStk" height="1" width="1"/&gt;</content>  <feedburner:origLink>http://germanforblack.com/2007/googlequery</feedburner:origLink></entry>
</feed>
