<?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>Straw Dogs &#187; Straw Dogs</title>
	<atom:link href="http://www.straw-dogs.co.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.straw-dogs.co.uk</link>
	<description>The Tao of Ruby, Python, and....Straw Dogs?</description>
	<pubDate>Mon, 21 Jul 2008 04:34:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Google App Engine Frustrations</title>
		<link>http://www.straw-dogs.co.uk/07/20/google-app-engine-frustrations/</link>
		<comments>http://www.straw-dogs.co.uk/07/20/google-app-engine-frustrations/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 02:30:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

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

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

		<category><![CDATA[web technologies]]></category>

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

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

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

		<guid isPermaLink="false">http://www.straw-dogs.co.uk/?p=149</guid>
		<description><![CDATA[I've tried more than once to jump onto the Google App Engine bandwagon to no avail.  Unfortunately it's preview nature is acting to frustrate any attempt I make build something I'm happy with.  Just some thoughts so far:
No Direction - It's been dumped into the ether with no solid direction.  No recommended [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.straw-dogs.co.uk/wp-content/uploads/2008/04/appengine_lowres.jpg"><img class="alignleft size-medium wp-image-130" style="float: left;" title="Google App Engine" src="http://www.straw-dogs.co.uk/wp-content/uploads/2008/04/appengine_lowres.jpg" alt="Google App Engine Logo" width="100" height="79" /></a>I've tried more than once to jump onto the Google App Engine bandwagon to no avail.  Unfortunately it's preview nature is acting to frustrate any attempt I make build something I'm happy with.  Just some thoughts so far:</p>
<p><strong>No Direction</strong> - It's been dumped into the ether with no solid direction.  No recommended method or path to building your web app is given or hinted at.  I'm all for choice and its great Google allow you to use Django, CherryPy, WebPy, etc. but it'd be helpful if a consistent and solid method was given.  Unfortunately you're left with the feeling that the GAE has been thrown together with no real thought of making a web app out of it.</p>
<p><strong>Disorganised Documentation</strong> - This doesn't help the problem mentioned above as the docs provide 3 or 4 ways of producing a web app from the start.  It first tells you how to do it using basic CGI and printing directly to the browser.  Then it shows you using the RequestHandler and WSGI app.  At which point it doesn't say URLs are now handled by the  WSGIApp instead of the app.yaml.  Then it brings Django templates into the mix.  How about pretty URLs?  Oh well we can do that in app.yaml, or using matched groups in the WSGI app.  For the love of all thats holy can't we just have a single nice solution?  A recommended method?  An idea?  A guide?</p>
<p><strong>Restrictions</strong> - So it gives you all that wonderful choice as mentioned above so you think you're going to make the best of it but oh no.  Now you have to put up with the restrictions.  No MySQL, no Django admin, restricted URL retrival, restricted security, no file uploading.</p>
<p><strong>So you have to ask the question: Why?</strong></p>
<p>What, ultimately, is the point in it when there's far better out there - Django, Merb, etc.  It has no purpose other than to faff with and so I shall be avoiding it for the forseeable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.straw-dogs.co.uk/07/20/google-app-engine-frustrations/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using the Asterisk Manager PHP API</title>
		<link>http://www.straw-dogs.co.uk/07/19/using-the-asterisk-manager-php-api/</link>
		<comments>http://www.straw-dogs.co.uk/07/19/using-the-asterisk-manager-php-api/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 14:47:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[asterisk]]></category>

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

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

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

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

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

		<guid isPermaLink="false">http://www.straw-dogs.co.uk/?p=148</guid>
		<description><![CDATA[Well it's been a while since the PHP Asterisk Manager API was released and I've yet to produce a clear and definitive example of its use.  So here goes.
Prerequisites
Your Asterisk server must be set up correctly before this API can 'speak' to the server.

 First you'll need to ensure the Manager interface is active and [...]]]></description>
			<content:encoded><![CDATA[<p>Well it's been a while since the <a href="http://code.google.com/p/asterisk-php-api/">PHP Asterisk Manager API</a> was released and I've yet to produce a clear and definitive example of its use.  So here goes.</p>
<h2>Prerequisites</h2>
<p>Your Asterisk server must be set up correctly before this API can 'speak' to the server.</p>
<ul>
<li> First you'll need to ensure the Manager interface is active and you've set the correct permissions (If you'd like this explaining please leave a comment).</li>
<li>Secondly make sure you are setup with the ability for two endpoints to call each other.  This won't work if you have one phone on the server.</li>
</ul>
<h2>Install</h2>
<p>Firstly you'll need to get hold of the library and there's two routes to take.  You can either install via <a href="http://pear.php.net">PEAR</a> or simply checkout the source from the <a href="http://code.google.com/p/asterisk-php-api/">Google Project</a>:</p>
<p><tt>svn checkout <strong><em>http</em></strong>://asterisk-php-api.googlecode.com/svn/trunk/ asterisk-php-api</tt></p>
<h2>Originating a Call</h2>
<p>Once you've got it all ready you need to start your new file thats going to make use of it.  In this example I'm creating a simple dialler called: "call.php" which will take two GET variables, with one being the callee and one the caller.</p>
<pre class="php">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #808080; font-style: italic;">/**
* To use this simply call it directly or via an Ajax call.  E.g.
* http://192.168.1.5/call.php?no=07943233397&amp;from=229
*/</span>
&nbsp;
<span style="color: #b1b100;">require</span> <span style="color: #ff0000;">'AsteriskManager.php'</span>;
&nbsp;
<span style="color: #0000ff;">$number</span>   = <a href="http://www.php.net/str_replace"><span style="color: #000066;">str_replace</span></a><span style="color: #66cc66;">&#40;</span><a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">' '</span>, <span style="color: #ff0000;">'('</span>, <span style="color: #ff0000;">')'</span>, <span style="color: #ff0000;">'.'</span>, <span style="color: #ff0000;">','</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #ff0000;">''</span>, <span style="color: #0000ff;">$_GET</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'no'</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>;  <span style="color: #808080; font-style: italic;">//I'm just cleaning the input here.</span>
<span style="color: #0000ff;">$from</span>      = <span style="color: #ff0000;">'SIP/'</span>.<span style="color: #0000ff;">$_GET</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">'from'</span><span style="color: #66cc66;">&#93;</span>; <span style="color: #808080; font-style: italic;">//The SIP handset of who's dialling the outside line</span>
<span style="color: #0000ff;">$context</span>  = <span style="color: #ff0000;">'asteriskcontent'</span>; <span style="color: #808080; font-style: italic;">//This is the context in your Asterisk dial plan that this call is made to</span>
<span style="color: #0000ff;">$cid</span>        = <span style="color: #0000ff;">$number</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//Setup basic parameters for the connection</span>
<span style="color: #0000ff;">$params</span> = <a href="http://www.php.net/array"><span style="color: #000066;">array</span></a><span style="color: #66cc66;">&#40;</span>
  <span style="color: #ff0000;">'server'</span> =&gt; <span style="color: #ff0000;">'192.168.1.5'</span>,
  <span style="color: #ff0000;">'port'</span> =&gt; <span style="color: #ff0000;">'5038'</span>,
  <span style="color: #ff0000;">'auto_connect'</span> =&gt; <span style="color: #000000; font-weight: bold;">true</span>
<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//Initialise</span>
<span style="color: #0000ff;">$am</span> = <span style="color: #000000; font-weight: bold;">new</span> Net_AsteriskManager<span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$params</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//Login to the Asterisk Manager interface</span>
<span style="color: #0000ff;">$am</span>-&gt;<span style="color: #006600;">login</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'user'</span>, <span style="color: #ff0000;">'pass'</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">//Originate Call is one of the commands available and it causes a call to be made and connected between two endpoints.</span>
<span style="color: #0000ff;">$am</span>-&gt;<span style="color: #006600;">originateCall</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$number</span>, <span style="color: #0000ff;">$from</span>, <span style="color: #0000ff;">$context</span>, <span style="color: #0000ff;">$cid</span>, <span style="color: #cc66cc;">1</span>, <span style="color: #cc66cc;">30000</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;</pre>
<p>By looking at the comments above you should see how this works and the steps required.  If not then leave any comments and I'll build on the above.  It's sometimes difficult to know what people already know so apologies if this is too simple or complex.  <img src='http://www.straw-dogs.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Later on I'll show how to work with queues - adding, removing, listing, etc.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.straw-dogs.co.uk/07/19/using-the-asterisk-manager-php-api/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Programmer Competency Matrix</title>
		<link>http://www.straw-dogs.co.uk/07/02/programmer-competency-matrix/</link>
		<comments>http://www.straw-dogs.co.uk/07/02/programmer-competency-matrix/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 07:35:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[general]]></category>

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

		<guid isPermaLink="false">http://www.straw-dogs.co.uk/?p=147</guid>
		<description><![CDATA[Where are you on this matrix?
]]></description>
			<content:encoded><![CDATA[<p>Where are you on this <a href="http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm">matrix</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.straw-dogs.co.uk/07/02/programmer-competency-matrix/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Twitter Green</title>
		<link>http://www.straw-dogs.co.uk/06/30/twitter-green/</link>
		<comments>http://www.straw-dogs.co.uk/06/30/twitter-green/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 07:09:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[general]]></category>

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

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

		<guid isPermaLink="false">http://www.straw-dogs.co.uk/?p=138</guid>
		<description><![CDATA[I've just taken up using Twitter.  So far so good.  Two points though, one of which isn't the fault of Twitter but:
1. DowningStreet doesn't bloody shut up!!
2. The site has complained about being snowed under 3 times so far.  They could sort this easily by using Django instead of Rails.  
Other than that it [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.straw-dogs.co.uk/wp-content/uploads/2008/06/twitter.png"><img class="alignleft alignnone size-medium wp-image-141" style="float: left;" title="twitter" src="http://www.straw-dogs.co.uk/wp-content/uploads/2008/06/twitter.png" alt="" width="210" height="49" /></a>I've just taken up using <a href="http://www.twitter.com/Ashiro">Twitter</a>.  So far so good.  Two points though, one of which isn't the fault of Twitter but:</p>
<p>1. <a href="http://twitter.com/DowningStreet">DowningStreet</a> doesn't bloody shut up!!</p>
<p>2. The site has complained about being snowed under 3 times so far.  They could sort this easily by using Django instead of Rails. <img src='http://www.straw-dogs.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Other than that it seems alright.  For Rubyists you may be interested in the Twitter Rubygem by John Nunemaker: <a href="http://twitter.rubyforge.org/">Twitter</a>.</p>
<p><code><br />
gem install twitter<br />
</code></p>
<p><em>P.S. Green as in: new, rookie, etc</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.straw-dogs.co.uk/06/30/twitter-green/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Realistic Load Tests</title>
		<link>http://www.straw-dogs.co.uk/06/21/realistic-load-tests/</link>
		<comments>http://www.straw-dogs.co.uk/06/21/realistic-load-tests/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 15:31:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.straw-dogs.co.uk/06/21/realistic-load-tests/</guid>
		<description><![CDATA[I've always been a bit uncomfortable with the claims of 250 req/sec for this and 500 req/sec for that. It's never felt quite....right.  Or real.  After all how many sites truly get that many concurrent requests?  How many visitors a day would you need to get spikes of 500 req/sec hitting your server?
Well it seems [...]]]></description>
			<content:encoded><![CDATA[<p>I've always been a bit uncomfortable with the claims of 250 req/sec for this and 500 req/sec for that. It's never felt quite....right.  Or real.  After all how many sites truly get that many concurrent requests?  How many visitors a day would you need to get spikes of 500 req/sec hitting your server?</p>
<p>Well it seems the metric is flawed and so sayeth one of the developers of the <a href="http://code.google.com/appengine/">Google App Engine</a> during one of the <a href="http://sites.google.com/site/io/">IO talks</a> done in May.</p>
<p>In that talk he mentions that people have been trying to run load tests on the GAE that simply throw hundreds of concurrent requests and conclude the test after one second.  Unfortunately this isn't realisitic and so the optimisations that are built into the system don't have time to kick in.</p>
<p>I'd say this isn't just an issue for GAE - its an issue with this benchmarking method full-stop.  Because as he says - its unrealistic.</p>
<p>Take the following example numbers from the slides:</p>
<blockquote><p><span style="font-weight: bold;">Realistic values</span><br />
• 50,000 users / day<br />
• 2 pageviews / user<br />
• 100,000 pageviews / day<br />
• 5 requests / pageview<br />
• 500,000 requests / day<br />
• 5.8 requests / second</p></blockquote>
<p>To some people 50k users may not seem much but irrespective I'd say its certainly a sizable chunk for the majority of readers here.  As you can see if a site is being hit by 50,000 users per day they can expect a realistic hit rate of 5.8 concurrent requests per second.</p>
<p><span style="font-weight: bold;">Let me say that again:</span> <span style="font-weight: bold; text-decoration: underline;">A site that gets 50,000 user per day can expect just 5.8 average concurrent requests per second.</span></p>
<p>Thats a realistic number and it blows out of the water the benchmarking methods that hammer a server for one second with <span style="font-weight: bold; font-style: italic;">hundreds</span> of requests.  People using those benchmarks have two flaws:</p>
<ol>
<li>If they get a low number they may be unfairly assuming a poor service based on a spurious and unrealistic testing methodology.</li>
<li>If they get a high number they'll assume that their server can take sustained heavy load which is certainly not the case.</li>
</ol>
<p>What the speaker then recommends is performing more realistic load tests spread over time.  This not only provides a more realistic basis for conclusions but also enables servers to adapt to the increasing load.</p>
<p>You can see the video which is about making production ready apps on Google App Engine by <a href="http://sites.google.com/site/io/best-practices---building-a-production-quality-application-on-google-app-engine">visiting its IO page here.</a></p>
<p><span style="text-decoration: underline;"><strong>UPDATE</strong></span></p>
<p><strong>Digg Effect / Slashdotting</strong></p>
<p><em>One of the obvious counters to this criticism which is also expressed at the end of this talk is that the Digg Effect or Slashdotting is indeed something that requires high 'per second' load testing.  However, thats not the case as these phenomena actually occur over a period of minutes and even hours and not a vertical spike.  The number of concurrent hits is still relatively low and so these hundreds per/sec tests don't fit here either.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.straw-dogs.co.uk/06/21/realistic-load-tests/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Django Found&#8217;s&#8230;.</title>
		<link>http://www.straw-dogs.co.uk/06/17/django-founds/</link>
		<comments>http://www.straw-dogs.co.uk/06/17/django-founds/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 21:58:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.straw-dogs.co.uk/06/17/django-founds/</guid>
		<description><![CDATA[A Foundation!!
Putting aside my grammatically dodgy statement the Django Project (the b3zt framework evaz!) has created the Django Foundation.&#160; A non-profit organisation in the same vein as Mozilla, Apache, etc it aims to oversee the development, direction and future of the Django project.
You can find out more about the groups goals at the Foundation page [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.djangoproject.com/"><img src="http://media.djangoproject.com/img/badges/djangowish126x70.gif" alt="A Django site." title="I wish this site was powered by Django." align="left" border="0" /></a>A Foundation!!</p>
<p>Putting aside my grammatically dodgy statement the Django Project (<span style="font-style: italic;">the b3zt framework evaz!</span>) has created the Django Foundation.&nbsp; A non-profit organisation in the same vein as Mozilla, Apache, etc it aims to oversee the development, direction and future of the Django project.</p>
<p>You can find out more about the groups goals at the <a href="http://www.djangoproject.com/foundation/">Foundation page on Django Project</a>.</p>
<p>Lots of warm fuzzy snuggles to the community too:</p>
<blockquote><p>We certainly couldn't have gotten here without the amazing support  and contributions from our community of users and developers. To everyone  who's used or contributed to Django: thanks!</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.straw-dogs.co.uk/06/17/django-founds/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rails 2.1 eBook</title>
		<link>http://www.straw-dogs.co.uk/06/17/rails-21-ebook/</link>
		<comments>http://www.straw-dogs.co.uk/06/17/rails-21-ebook/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 20:58:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[rails]]></category>

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

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

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

		<guid isPermaLink="false">http://www.straw-dogs.co.uk/?p=143</guid>
		<description><![CDATA[I'm getting bored of Rails now but if you're interested in an eBook detailing the changes in the latest 2.1 release then you can't go far wrong with this one:
Free Rails Ebook
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.straw-dogs.co.uk/wp-content/uploads/2008/04/ruby-4001.png"><img class="alignleft size-medium wp-image-115" style="float: left;" title="Ruby Logo" src="http://www.straw-dogs.co.uk/wp-content/uploads/2008/04/ruby-4001.png" alt="" width="90" height="90" /></a>I'm getting bored of Rails now but if you're interested in an eBook detailing the changes in the latest 2.1 release then you can't go far wrong with this one:</p>
<p><a href="http://www.nomedojogo.com/2008/06/09/new-free-book-ruby-on-rails-21-whats-new/">Free Rails Ebook</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.straw-dogs.co.uk/06/17/rails-21-ebook/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Latest Django Site</title>
		<link>http://www.straw-dogs.co.uk/06/16/latest-django-site/</link>
		<comments>http://www.straw-dogs.co.uk/06/16/latest-django-site/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 17:40:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[python]]></category>

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

		<guid isPermaLink="false">http://www.straw-dogs.co.uk/?p=137</guid>
		<description><![CDATA[I recently completed a Django-based site for a friend which you can view here.  It's a simple affair but with some interesting features (its very pink!):
Shop - Plugs into Amazon feed to get products and revenue generation from Associates tag (not quite finished as it needs to be styled better).
Gallery - The front end of [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="border: 0; float: left;" src="http://www.imagefreelancehair.co.uk/web/images/logo.png" alt="New Django Site - Image Freelance Hair" width="227" height="121" />I recently completed a <a href="http://www.djangoproject.com">Django-based</a> site for a <a href="http://www.imagefreelancehair.co.uk">friend</a> which you can view <a href="http://www.imagefreelancehair.co.uk">here</a>.  It's a simple affair but with some interesting features (its very pink!):</p>
<p><strong>Shop</strong> - Plugs into Amazon feed to get products and revenue generation from Associates tag (not quite finished as it needs to be styled better).</p>
<p><strong>Gallery</strong> - The front end of this is all MooTools based <a href="http://smoothgallery.jondesign.net/">SmoothGallery2.0</a> with a nifty backend providing uploading, tagging, etc.  I think the SmoothGallery is great but I can see it struggling with anymore pics in it.</p>
<p><strong>Contact</strong> - Simple email on sending.  Also embedded MSN Live maps - it looks so much nicer than Google's and its easier to use.</p>
<p><strong>XML Sitemap</strong> - Using Djangos built-in Sitemap generator.</p>
<p><strong>Blog</strong> - Basic blog with the FreeComments plugin.</p>
<p>Some of the pages can be edited much like a CMS.  This is standard in Django when you use something called Flat Pages.</p>
<p>As a first proper released project of Django I'm chuffed.  Its come out nicely and its immensely fast compared to my Rails sites. <img src='http://www.straw-dogs.co.uk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>I plan on doing a few more in Django before moving onto MERB in the not to distant future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.straw-dogs.co.uk/06/16/latest-django-site/feed/</wfw:commentRss>
		</item>
		<item>
		<title>YALA: Yet Another Language As comparison&#8230;</title>
		<link>http://www.straw-dogs.co.uk/05/25/yala-yet-another-language-as-comparison/</link>
		<comments>http://www.straw-dogs.co.uk/05/25/yala-yet-another-language-as-comparison/#comments</comments>
		<pubDate>Sun, 25 May 2008 15:24:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[general]]></category>

		<guid isPermaLink="false">http://www.straw-dogs.co.uk/?p=136</guid>
		<description><![CDATA[I was going to do a post that we've all seen plenty of by now.  Something along the lines of: "If programming languages were...".  It would be full of wit and merryment and people would giggle inside - or at least I'd hope they would.
Then I realised its been done a million times before:

Programming Languages [...]]]></description>
			<content:encoded><![CDATA[<p>I was going to do a post that we've all seen plenty of by now.  Something along the lines of: "If programming languages were...".  It would be full of wit and merryment and people would giggle inside - or at least I'd hope they would.</p>
<p>Then I realised its been done a million times before:</p>
<ul>
<li><a href="http://www.cs.caltech.edu/~mvanier/hacking/rants/cars.html">Programming Languages as Cars</a></li>
<li><a href="http://compsci.ca/blog/if-a-programming-language-was-a-boat/">Programming Languages as Boats</a></li>
<li>Programming Languages as Women <a href="http://www.sucs.swan.ac.uk/~cmckenna/humour/computer/women.html">1</a> &amp; <a href="http://amix.dk/blog/viewEntry/152">2</a></li>
</ul>
<p>So what is my answer to all of this?</p>
<p>To create a brand new <strong><a href="http://en.wikipedia.org/wiki/Yet_Another">Yet Another</a></strong>!!!  "<strong>Yet Another Language As</strong>"</p>
]]></content:encoded>
			<wfw:commentRss>http://www.straw-dogs.co.uk/05/25/yala-yet-another-language-as-comparison/feed/</wfw:commentRss>
		</item>
		<item>
		<title>&#8230;but Mercurial is even better</title>
		<link>http://www.straw-dogs.co.uk/05/10/but-mercurial-is-even-better/</link>
		<comments>http://www.straw-dogs.co.uk/05/10/but-mercurial-is-even-better/#comments</comments>
		<pubDate>Sat, 10 May 2008 10:40:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[subversion]]></category>

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

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

		<guid isPermaLink="false">http://www.straw-dogs.co.uk/?p=135</guid>
		<description><![CDATA[I posted the other week about how great Git is - It took a while for me to get the point.  I'm generally the last to figure this stuff out so forgive me if I'm preaching to the converted.  For anyone still unconvinced this video presentation by Linus about Git helped a lot.  It was [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="float: left; border: 0;" src="http://www.straw-dogs.co.uk/wp-content/logo-droplets-200.png" alt="Mercurial Logo" width="200" height="240" />I <a href="http://www.straw-dogs.co.uk/04/27/git-sold/">posted the other week about how great Git is</a> - It took a while for me to get the point.  I'm generally the last to figure this stuff out so forgive me if I'm preaching to the converted.  For anyone still unconvinced <a href="http://www.youtube.com/watch?v=4XpnKHJAok8">this video presentation by Linus</a> about Git helped a lot.  It was the point at which he said: "no politics, no access rights".  Sweet, sweet freedom.  It suddenly dawned on me how simple and easy it's been to manage my Git repos.</p>
<p>This was again compounded when I had to implement a patch in my <a href="http://www.straw-dogs.co.uk/asterisk-api-php/">Asterisk PHP API</a> which is Subversion hosted.  As the current version was out of date the patch failed so needed to be done manually.  If on the other hand we'd been using Git or Mercurial I could simply Pull the contributors changes.  Nice and simple!  No fuss, no bother, just get on with it.</p>
<p>So now to the point of my post: <a href="http://www.selenic.com/mercurial/wiki/index.cgi/Mercurial">Mercurial</a>.</p>
<p>Now Git was great but I think I've found a new friend in Mercurial.  Although Mercurial is still lacking in some areas (named branches still can't be deleted nicely) I think it's future is much brighter.  For starters its ported to more platforms.  This is an advantage gleaned form it being developed in Python.  Which is my major point here - being in Python makes it nicer, easier and cleaner to deal with.  Writing extensions to Hg is a snap with a nice built-in API.  So its immaturity in features is more than made up for its potential.</p>
<p>It has all the advantages of Gits distributed methodology but with the flexibility to grow beyond its existing state easily and rapidly.</p>
<p><strong>Free Mercurial Hosting</strong></p>
<ul>
<li><a href="http://mercurial.intuxication.org/">Intuxication</a></li>
<li><a href="http://freehg.org/">FreeHG</a></li>
<li><a href="http://sharesource.org/">ShareSource</a></li>
<li><a href="http://www.assembla.com/">Assembla</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.straw-dogs.co.uk/05/10/but-mercurial-is-even-better/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
