<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Dave Perrett</title>
    <link>https://www.daveperrett.com/</link>
    <description>Recent content on Dave Perrett</description>
    <image>
      <title>Dave Perrett</title>
      <url>https://www.daveperrett.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://www.daveperrett.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>hello@daveperrett.com (Dave Perrett)</managingEditor>
    <webMaster>hello@daveperrett.com (Dave Perrett)</webMaster>
    <lastBuildDate>Thu, 19 Aug 2021 00:00:00 +0000</lastBuildDate><atom:link href="https://www.daveperrett.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Nested for_each with Terraform</title>
      <link>https://www.daveperrett.com/articles/2021/08/19/nested-for-each-with-terraform/</link>
      <pubDate>Thu, 19 Aug 2021 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2021/08/19/nested-for-each-with-terraform/</guid>
      <description>Terraform provides a for_each iterator which allows you to loop over elements of a list, and perform an operation with each element. For example, to grant multiple permissions for myself on a Snowflake schema, I could do something like this:
resource &amp;#34;snowflake_schema_grant&amp;#34; &amp;#34;write_permissions&amp;#34; { for_each = toset([&amp;#34;CREATE TABLE&amp;#34;, &amp;#34;CREATE VIEW&amp;#34;, &amp;#34;USAGE&amp;#34;]) database_name = &amp;#34;MY_DATABASE&amp;#34; privilege = each.key roles = &amp;#34;DAVE&amp;#34; schema_name = &amp;#34;MY_SCHEMA&amp;#34; } This loops over each element in the for_each list, and substitutes it as the privilege using each.</description>
    </item>
    
    <item>
      <title>Working with local Terraform providers</title>
      <link>https://www.daveperrett.com/articles/2021/08/19/working-with-local-terraform-providers/</link>
      <pubDate>Thu, 19 Aug 2021 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2021/08/19/working-with-local-terraform-providers/</guid>
      <description>I recently submitted a small fix to @chronark&amp;rsquo;s Vercel provider. The fix itself was pretty trivial, but it took me quite a while to figure out how to actually run Terraform against a local copy of the provider in order to make sure it actually worked. I found the answer eventually in the Terraform CLI documentation.
As a convenience for provider development, Terraform supports a special additional block dev_overrides in provider_installation blocks.</description>
    </item>
    
    <item>
      <title>An update to exif-orientation-examples</title>
      <link>https://www.daveperrett.com/articles/2017/08/05/an-update-to-exif-orientation-examples/</link>
      <pubDate>Sat, 05 Aug 2017 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2017/08/05/an-update-to-exif-orientation-examples/</guid>
      <description>&lt;p&gt;I was surprised to discover recently that my &lt;a href=&#34;https://github.com/recurser/exif-orientation-examples&#34;&gt;exif-orientation-examples&lt;/a&gt; repository has quietly collected almost 300 stars on github. The sample images were created over 5 years ago now, and are pretty low-resolution and unsuitable for testing on modern displays and websites.&lt;/p&gt;
&lt;p&gt;With that in mind, I&amp;rsquo;ve replaced the sample images with 1200x1800 pixel images (previously they were 600x450 pixels), and automated the process of generating new images.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Importing a Pivotal Tracker project into Trello</title>
      <link>https://www.daveperrett.com/articles/2014/01/13/importing-a-pivotal-tracker-project-into-trello/</link>
      <pubDate>Mon, 13 Jan 2014 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2014/01/13/importing-a-pivotal-tracker-project-into-trello/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m currently in the middle of migrating a project from &lt;a href=&#34;https://www.pivotaltracker.com/&#34;&gt;Pivotal Tracker&lt;/a&gt; to &lt;a href=&#34;https://trello.com/&#34;&gt;Trello&lt;/a&gt;, and couldn&amp;rsquo;t find any easy method of importing the data, so I spent this morning putting together a gem to do exactly that.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Callback support and a version bump for jquery-simple-color</title>
      <link>https://www.daveperrett.com/articles/2013/04/08/callback-support-and-a-version-bump-for-jquery-simple-color/</link>
      <pubDate>Mon, 08 Apr 2013 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2013/04/08/callback-support-and-a-version-bump-for-jquery-simple-color/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://github.com/recurser/jquery-simple-color&#34;&gt;jquery-simple-color&lt;/a&gt; plugin has received a bunch of callback-related goodness thanks to &lt;a href=&#34;https://github.com/jbergen&#34;&gt;jbergen&lt;/a&gt;. He&amp;rsquo;s also added a &lt;em&gt;live preview&lt;/em&gt; option which displays the currently-hovered-on color.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Recreating the Reeder two-tone horizontal rule in pure CSS</title>
      <link>https://www.daveperrett.com/articles/2013/04/07/recreating-the-reeder-two-tone-horizontal-rule-in-pure-css/</link>
      <pubDate>Sun, 07 Apr 2013 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2013/04/07/recreating-the-reeder-two-tone-horizontal-rule-in-pure-css/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m a huge fan of the design of &lt;a href=&#34;http://reederapp.com/iphone/&#34;&gt;Reeder&lt;/a&gt;, and wanted to take a stab at recreating their fading two-tone horizontal rule in CSS for this blog.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Sending mail with SendGrid on Ubuntu</title>
      <link>https://www.daveperrett.com/articles/2013/03/19/setting-up-sendmail-with-sendgrid-on-ubuntu/</link>
      <pubDate>Tue, 19 Mar 2013 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2013/03/19/setting-up-sendmail-with-sendgrid-on-ubuntu/</guid>
      <description>&lt;p&gt;I keep forgetting how to do this, so purely for my own benefit - how to set up Ubuntu to send via &lt;a href=&#34;http://en.wikipedia.org/wiki/Sendmail&#34;&gt;sendmail&lt;/a&gt; and &lt;a href=&#34;http://sendgrid.com/&#34;&gt;SendGrid&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>A bit of digital house cleaning</title>
      <link>https://www.daveperrett.com/articles/2013/03/18/a-bit-of-digital-house-cleaning/</link>
      <pubDate>Mon, 18 Mar 2013 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2013/03/18/a-bit-of-digital-house-cleaning/</guid>
      <description>&lt;p&gt;My old &lt;a href=&#34;http://recursive-design.com/&#34;&gt;recursive-design.com&lt;/a&gt; site has served me well for a couple of years of contracting and consulting, but having jumped headfirst into a &lt;a href=&#34;https://www.shuttlerock.com/&#34;&gt;startup&lt;/a&gt;, my focus is now on reducing my workload rather than increasing it :)&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>EXIF orientation handling is a ghetto</title>
      <link>https://www.daveperrett.com/articles/2012/07/28/exif-orientation-handling-is-a-ghetto/</link>
      <pubDate>Sat, 28 Jul 2012 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2012/07/28/exif-orientation-handling-is-a-ghetto/</guid>
      <description>&lt;p&gt;One of my favourite services at the moment is &lt;a href=&#34;https://transloadit.com/&#34;&gt;Transloadit&lt;/a&gt;, who provide an image processing API that works a treat on top of platforms like &lt;a href=&#34;http://www.heroku.com/&#34;&gt;Heroku&lt;/a&gt;, where there are strict request timeout limits that make large uploads difficult. They handle auto-orientation of images automagically by default, and normally I&amp;rsquo;m not even aware of it happening during testing since my camera and OSX also handle auto-orientation transparently.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Messing around with ruby-processing, take 5</title>
      <link>https://www.daveperrett.com/articles/2012/05/31/experiments-with-ruby-processing-and-waveform-analysis/</link>
      <pubDate>Thu, 31 May 2012 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2012/05/31/experiments-with-ruby-processing-and-waveform-analysis/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been spending quite a bit of time playing with &lt;a href=&#34;https://github.com/jashkenas/ruby-processing/&#34;&gt;ruby-processing&lt;/a&gt; (and &lt;a href=&#34;http://processing.org/&#34;&gt;processing&lt;/a&gt; in general) recently. It&amp;rsquo;s also been my first exposure to &lt;a href=&#34;http://jruby.org/&#34;&gt;JRuby&lt;/a&gt; which has been a bit of an eye-opener, in terms of the sheer number of Java libraries that it makes available in Ruby.&lt;/p&gt;
&lt;p&gt;All the fun stuff in processing seems to be &lt;a href=&#34;https://www.opengl.org/&#34;&gt;OpenGL&lt;/a&gt;-related, and after a lot of research the easiest way to dig in ended up being the &lt;a href=&#34;http://glgraphics.sourceforge.net/&#34;&gt;GLGraphics&lt;/a&gt; Java library, which was made specifically for use in processing.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Underscores are stupid? Get a Japanese keyboard</title>
      <link>https://www.daveperrett.com/articles/2012/05/16/underscores-are-stupid-get-a-japanese-keyboard/</link>
      <pubDate>Wed, 16 May 2012 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2012/05/16/underscores-are-stupid-get-a-japanese-keyboard/</guid>
      <description>&lt;p&gt;There was a surprising amount of &lt;a href=&#34;http://news.ycombinator.com/item?id=3976669&#34;&gt;discussion&lt;/a&gt; on Hacker News today on whether or not &lt;a href=&#34;http://devblog.avdi.org/2012/05/15/underscores-are-stupid/&#34;&gt;underscores are stupid&lt;/a&gt;, with suggestions ranging from changing &lt;a href=&#34;http://news.ycombinator.com/item?id=3976790&#34;&gt;key&lt;/a&gt; &lt;a href=&#34;http://news.ycombinator.com/item?id=3977047&#34;&gt;bindings&lt;/a&gt; to using the &lt;a href=&#34;http://news.ycombinator.com/item?id=3976963&#34;&gt;Dvorak&lt;/a&gt; &lt;a href=&#34;http://news.ycombinator.com/item?id=3976813&#34;&gt;layout&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s an alternative (although possibly slightly drastic) solution - get a Japanese keyboard:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Back from blogging hiatus</title>
      <link>https://www.daveperrett.com/articles/2012/05/14/back-from-blogging-hiatus/</link>
      <pubDate>Mon, 14 May 2012 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2012/05/14/back-from-blogging-hiatus/</guid>
      <description>&lt;p&gt;The last year has been a bit of a whirlwind, and saw Emi and I leave Tokyo, travel Asia, Russia and Europe for a couple of months, spend some time back in Australia catching up with family, and eventually take up an offer we couldn&amp;rsquo;t refuse to co-found a startup in Christchurch, New Zealand.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Hiding ruby gem &#39;is deprecated with no replacement&#39; messages</title>
      <link>https://www.daveperrett.com/articles/2011/05/21/hiding-ruby-gem-is-deprecated-with-no-replacement-messages/</link>
      <pubDate>Sat, 21 May 2011 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2011/05/21/hiding-ruby-gem-is-deprecated-with-no-replacement-messages/</guid>
      <description>&lt;p&gt;I recently installed ruby 1.9.2 via &lt;a href=&#34;https://rvm.beginrescueend.com/&#34;&gt;rvm&lt;/a&gt;, and suddenly every command started spitting out hundreds of line of deprecation messages :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>&#39;405 Not Allowed&#39; error serving Facebook apps with nginx</title>
      <link>https://www.daveperrett.com/articles/2011/05/20/not-allowed-error-serving-facebook-apps-with-nginx/</link>
      <pubDate>Fri, 20 May 2011 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2011/05/20/not-allowed-error-serving-facebook-apps-with-nginx/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve spent the last couple of evenings playing around with some &lt;em&gt;Hello World&lt;/em&gt;-type stuff for Facebook app development in preparation for an up-coming Facebook/Rails gig.&lt;/p&gt;
&lt;p&gt;After creating a new app on Facebook, you are presented with the code for a basic starter-page for the app:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Continuous integration for PHP with phpUnderControl</title>
      <link>https://www.daveperrett.com/articles/2011/05/13/continuous-integration-for-php-with-php-under-control/</link>
      <pubDate>Fri, 13 May 2011 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2011/05/13/continuous-integration-for-php-with-php-under-control/</guid>
      <description>&lt;p&gt;Whenever I start a new PHP project for a client, one of the first things I set up is usually &lt;a href=&#34;http://phpundercontrol.org&#34;&gt;phpUnderControl&lt;/a&gt; - a CI (&lt;a href=&#34;http://en.wikipedia.org/wiki/Continuous_integration&#34;&gt;continuous integration&lt;/a&gt;) server specifically for PHP built on top of &lt;a href=&#34;http://cruisecontrol.sourceforge.net/&#34;&gt;CruiseControl&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Time Out In NZ</title>
      <link>https://www.daveperrett.com/articles/2011/05/04/time-out-in-nz/</link>
      <pubDate>Wed, 04 May 2011 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2011/05/04/time-out-in-nz/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been flat out with a couple of contracting projects recently - apologies for the four-month blogging hiatus!&lt;/p&gt;
&lt;p&gt;One of these projects (albeit a quickie) was a weekend spent making a rails site for a couple of New Zealand organizations to help the victims of the Japanese quakes and tsunami relocate themselves and/or their children to New Zealand temporarily.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>A Christmas present from The Echo Nest</title>
      <link>https://www.daveperrett.com/articles/2011/01/05/a-christmas-present-from-the-echo-nest/</link>
      <pubDate>Wed, 05 Jan 2011 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2011/01/05/a-christmas-present-from-the-echo-nest/</guid>
      <description>&lt;p&gt;A couple of weeks before Christmas I got a mail from &lt;a href=&#34;http://the.echonest.com/&#34;&gt;The Echo Nest&lt;/a&gt; &lt;a href=&#34;http://developer.echonest.com/&#34;&gt;developer team&lt;/a&gt; promising a free T-shirt for filling out a survey :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Simple video remixes using The Echo Nest API</title>
      <link>https://www.daveperrett.com/articles/2011/01/05/simple-video-remixes-using-the-echo-nest-api/</link>
      <pubDate>Wed, 05 Jan 2011 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2011/01/05/simple-video-remixes-using-the-echo-nest-api/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a couple of remix videos I did earlier in the year using &lt;a href=&#34;http://developer.echonest.com/&#34;&gt;The Echo Nest API&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been meaning to post these for a while, but finally decided to get off my ass and put them up since the folks at Echo Nest were kind enough to &lt;a href=&#34;https://www.daveperrett.com/articles/2011/01/05/a-christmas-present-from-the-echo-nest&#34;&gt;send me a T-shirt&lt;/a&gt; :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Face detection with OSX and python</title>
      <link>https://www.daveperrett.com/articles/2010/12/14/face-detection-with-osx-and-python/</link>
      <pubDate>Tue, 14 Dec 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/12/14/face-detection-with-osx-and-python/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been messing about with &lt;a href=&#34;http://en.wikipedia.org/wiki/Face_detection&#34;&gt;face detection&lt;/a&gt; for a while, and was surprised how easy it is to get basic detection working out-of-the-box with open-source libraries.&lt;/p&gt;
&lt;p&gt;Today we&amp;rsquo;ll look at a simple way to get started with face detection on OSX using &lt;a href=&#34;http://www.python.org/&#34;&gt;python&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Jekyll plugins for categories, projects and sitemaps</title>
      <link>https://www.daveperrett.com/articles/2010/12/08/jekyll-plugins-for-categories-projects-and-sitemaps/</link>
      <pubDate>Wed, 08 Dec 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/12/08/jekyll-plugins-for-categories-projects-and-sitemaps/</guid>
      <description>&lt;p&gt;&lt;em&gt;2013-03-28 Update&lt;/em&gt; : These plugins are now &lt;a href=&#34;https://github.com/recurser/jekyll-plugins&#34;&gt;hosted on GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve finally gotten around to cleaning up and releasing the source for a couple of the Jekyll plugins used to build this site.&lt;/p&gt;
&lt;p&gt;You can find them all on the &lt;a href=&#34;https://github.com/recurser/jekyll-plugins&#34;&gt;Jekyll Plugins&lt;/a&gt; project page, or &lt;a href=&#34;https://github.com/recurser/jekyll-plugins&#34;&gt;browse the source&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As always, if you come across any problems please &lt;a href=&#34;https://github.com/recurser/jekyll-plugins/issues&#34;&gt;create a ticket&lt;/a&gt; and we&amp;rsquo;ll try to get it fixed as soon as possible.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>CompSci 101 - Big-O notation</title>
      <link>https://www.daveperrett.com/articles/2010/12/07/comp-sci-101-big-o-notation/</link>
      <pubDate>Tue, 07 Dec 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/12/07/comp-sci-101-big-o-notation/</guid>
      <description>&lt;p&gt;I recently had a couple of Google interviews in Tokyo, and while preparing for them I ended up with a huge list of things I wanted to brush up on before the interview.&lt;/p&gt;
&lt;p&gt;It turns out I didn&amp;rsquo;t get the job (next time!), but I thought I might be able to learn something anyway by working through the list and blogging about the main areas that companies like Google expect you to know.&lt;/p&gt;
&lt;p&gt;Without further ado, first on the list is Big-O notation:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>jQuery SimpleColor plugin hits version 1.0</title>
      <link>https://www.daveperrett.com/articles/2010/12/07/jquery-simple-color-plugin-hits-version-1-0/</link>
      <pubDate>Tue, 07 Dec 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/12/07/jquery-simple-color-plugin-hits-version-1-0/</guid>
      <description>&lt;p&gt;A couple of weeks ago someone commented on the SimpleColor plugin with a nice suggestion - adding the selected color as text inside the color selection button. I finally got around to implementing this last night, and added a couple of extra options to support this :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>A weekend project - fromthecache.com</title>
      <link>https://www.daveperrett.com/articles/2010/11/03/a-weekend-project-from-the-cache/</link>
      <pubDate>Wed, 03 Nov 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/11/03/a-weekend-project-from-the-cache/</guid>
      <description>&lt;p&gt;I was playing around on the weekend screen-scraping and analyzing word-frequencies for various sites (don&amp;rsquo;t ask), and was getting some slow responses (and accidentally got my IP blocked from one site when I hit them a few too many times).&lt;/p&gt;
&lt;p&gt;Eventually I hit upon the idea of hitting &lt;a href=&#34;http://webcache.googleusercontent.com/search?q=cache:recursive-design.com&#34;&gt;Google Cache&lt;/a&gt; for each URL (the pages I was scraping had sequential &lt;em&gt;?id=xxx&lt;/em&gt; URLs so it was easy to automate), with the aim of speeding things up a bit and taking some load off the target sites.&lt;/p&gt;
&lt;p&gt;With this in mind, I spent a few hours Saturday and Sunday developing &lt;a href=&#34;https://github.com/recurser/from-the-cache/&#34;&gt;fromthecache.com&lt;/a&gt; - it&amp;rsquo;s built on rails, and designed to provide transparent access to the Google cache, while fetching the original page as a fallback if necessary.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Introducing Rails Kitchen Sink</title>
      <link>https://www.daveperrett.com/articles/2010/10/21/introducing-rails-kitchen-sink/</link>
      <pubDate>Thu, 21 Oct 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/10/21/introducing-rails-kitchen-sink/</guid>
      <description>&lt;p&gt;&lt;em&gt;2013-03-28 Update&lt;/em&gt; : This project is &lt;em&gt;very&lt;/em&gt; dated, and I don&amp;rsquo;t recommend it&amp;rsquo;s use. It&amp;rsquo;s now &lt;a href=&#34;https://github.com/recurser/rails-kitchen-sink&#34;&gt;hosted on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m happy to announce the release of &lt;a href=&#34;https://github.com/recurser/rails-kitchen-sink&#34;&gt;Rails Kitchen Sink&lt;/a&gt; a rails-project-starter, which I&amp;rsquo;ll be building all future Rails apps off of.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Static blogging the Jekyll way</title>
      <link>https://www.daveperrett.com/articles/2010/10/12/static-blogging-the-jekyll-way/</link>
      <pubDate>Tue, 12 Oct 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/10/12/static-blogging-the-jekyll-way/</guid>
      <description>&lt;p&gt;In building the new site, I decided to take the opportunity to try out something new. I&amp;rsquo;ve been using &lt;a href=&#34;http://wordpress.org/&#34;&gt;WordPress&lt;/a&gt; to power my blog for about 5 years, and while it has served me well, I wanted to try out something different. The main criteria for choosing a new blogging platform were :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should serve true static pages, with no need for server-side processing.&lt;/li&gt;
&lt;li&gt;It should be easy to store the entire site in &lt;a href=&#34;http://git-scm.com/&#34;&gt;Git&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;It should support the concept of &lt;em&gt;layouts&lt;/em&gt; - I wanted to have a single &amp;rsquo;template&amp;rsquo; file that blog posts could easily inherit from.&lt;/li&gt;
&lt;li&gt;It should support &lt;a href=&#34;http://daringfireball.net/projects/markdown/&#34;&gt;MarkDown&lt;/a&gt; or &lt;a href=&#34;http://www.textism.com/tools/textile/&#34;&gt;Textile&lt;/a&gt; for formatting posts, since I want to keep away from posting raw HTML as much as possible.&lt;/li&gt;
&lt;li&gt;It should support comments.&lt;/li&gt;
&lt;li&gt;I should be able to deploy updates to the site with a single command.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By patching together a few different open-source technologies, I&amp;rsquo;ve been able to achieve the above and more.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Excluding fields from rails json and xml output</title>
      <link>https://www.daveperrett.com/articles/2010/10/03/excluding-fields-from-rails-json-and-xml-output/</link>
      <pubDate>Sun, 03 Oct 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/10/03/excluding-fields-from-rails-json-and-xml-output/</guid>
      <description>&lt;p&gt;Rails has a very handy &amp;lsquo;respond_to&amp;rsquo; feature to render your pages in different formats :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;respond_to &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;format&lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  format&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;json { render &lt;span style=&#34;color:#e6db74&#34;&gt;:json&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; @user }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  format&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;xml  { render &lt;span style=&#34;color:#e6db74&#34;&gt;:xml&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; @user }
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  format&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;html
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;However, by default it outputs every field in the model, which exposes some data (&lt;em&gt;encrypted-password&lt;/em&gt; and &lt;em&gt;password-salt&lt;/em&gt;) that I&amp;rsquo;d rather keep to myself :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>HABTM before_filter in rails models</title>
      <link>https://www.daveperrett.com/articles/2010/10/03/habtm-before-filter-in-rails-models/</link>
      <pubDate>Sun, 03 Oct 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/10/03/habtm-before-filter-in-rails-models/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been playing about with &lt;a href=&#34;http://github.com/plataformatec/devise&#34;&gt;Devise&lt;/a&gt; and &lt;a href=&#34;http://github.com/ryanb/cancan&#34;&gt;CanCan&lt;/a&gt; for rails authentication and authorization recently - this great &lt;a href=&#34;http://www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-and-cancan-customizing-devise-controllers/&#34;&gt;pair&lt;/a&gt; of &lt;a href=&#34;http://www.tonyamoyal.com/2010/09/29/rails-authentication-with-devise-and-cancan-part-2-restful-resources-for-administrators//&#34;&gt;posts&lt;/a&gt; from &lt;a href=&#34;http://www.tonyamoyal.com/&#34;&gt;Tony Amoyal&lt;/a&gt; have helped a great deal.&lt;/p&gt;
&lt;p&gt;I have a &lt;em&gt;User&lt;/em&gt; model and a &lt;em&gt;Role&lt;/em&gt; model, and wanted to automatically add the &lt;em&gt;:user&lt;/em&gt; role to each user whenever roles are assigned. The roles were set in the controller as follows:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>How to create a TextMate bundle</title>
      <link>https://www.daveperrett.com/articles/2010/09/30/how-to-create-a-textmate-bundle/</link>
      <pubDate>Thu, 30 Sep 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/09/30/how-to-create-a-textmate-bundle/</guid>
      <description>&lt;p&gt;If you find yourself repeating the same commands over and over in &lt;a href=&#34;http://macromates.com/&#34;&gt;TextMate&lt;/a&gt;, it&amp;rsquo;s relatively straightforward to create your own bundle. Recently I&amp;rsquo;ve been migrating a bunch of blog posts from &lt;a href=&#34;http://wordpress.org/&#34;&gt;WordPress&lt;/a&gt; to &lt;a href=&#34;http://github.com/mojombo/jekyll&#34;&gt;Jekyll&lt;/a&gt;, and found myself repeating the same tasks again and again :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>New &#39;projects&#39; section launched</title>
      <link>https://www.daveperrett.com/articles/2010/09/29/new-projects-section-launched/</link>
      <pubDate>Wed, 29 Sep 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/09/29/new-projects-section-launched/</guid>
      <description>&lt;p&gt;&lt;em&gt;2013-03-28 Update&lt;/em&gt; : All projects are now &lt;a href=&#34;https://github.com/recurser&#34;&gt;hosted on GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m pleased to announce my new &lt;a href=&#34;https://github.com/recurser&#34;&gt;projects&lt;/a&gt; section, where I&amp;rsquo;ll be consolidating the various open-source projects I&amp;rsquo;ve released.&lt;/p&gt;
&lt;p&gt;Until now these projects have usually only been released via blog posts, but from now on each project will have a dedicated project page, with git repository information, issue tracking, and a link to a downloadable zip bundle of the latest release.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Security testing with Google&#39;s ratproxy</title>
      <link>https://www.daveperrett.com/articles/2010/09/24/security-testing-with-googles-ratproxy/</link>
      <pubDate>Fri, 24 Sep 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/09/24/security-testing-with-googles-ratproxy/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;http://code.google.com/p/ratproxy/&#34;&gt;Ratproxy&lt;/a&gt; is a &lt;a href=&#34;http://googleonlinesecurity.blogspot.com/2008/07/meet-ratproxy-our-passive-web-security.html&#34;&gt;passive web application security assessment tool&lt;/a&gt; released by Google. Basically you set it up as a proxy server between yourself and the target site, and then click around in the target site doing whatever it is you normally do, while ratproxy analyzes your activity in the background and looks for security holes.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>recurser.com has a new home - update your feeds please!</title>
      <link>https://www.daveperrett.com/articles/2010/09/23/recurser-has-a-new-home/</link>
      <pubDate>Thu, 23 Sep 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/09/23/recurser-has-a-new-home/</guid>
      <description>All of the content from recurser.com (blog posts, static pages, code repositories, git/svn etc) has been migrated over to the main &amp;ldquo;recursive-design.com&amp;rdquo;:/ site.
If you&amp;rsquo;re reading this from the old recurser.com RSS feed, please update the feed address - sorry for the inconvenience! You can find the new feed at recursive-design.com/feed/ . The old feed will continue for a few weeks, but will eventually be turned off.
I&amp;rsquo;m planning on posting a lot more regularly from now on, so if you aren&amp;rsquo;t a subscriber yet now would be a great time to start !</description>
    </item>
    
    <item>
      <title>Integrating Jekyll with FeedBurner</title>
      <link>https://www.daveperrett.com/articles/2010/09/14/integrating-jekyll-with-feedburner/</link>
      <pubDate>Tue, 14 Sep 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/09/14/integrating-jekyll-with-feedburner/</guid>
      <description>&lt;p&gt;It&amp;rsquo;s relatively easy to get the feed for your &lt;a href=&#34;http://github.com/mojombo/jekyll&#34;&gt;Jekyll&lt;/a&gt; site running on &lt;a href=&#34;http://feedburner.google.com/&#34;&gt;FeedBurner&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Firstly, you need to choose a subdirectory to host your feed on. Calling it &lt;a href=&#34;https://www.daveperrett.com/feed/&#34;&gt;feed&lt;/a&gt; seems to be a fairly popular choice, so I decided to follow the crowd. Create a folder called &lt;em&gt;feed&lt;/em&gt; at the base of your Jekyll site, and create an &lt;!-- raw HTML omitted --&gt;index.xml&lt;!-- raw HTML omitted --&gt; file inside with the following contents (obviously swapping the references to &lt;em&gt;Recursive&lt;/em&gt; for your own site details) :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>SSH Authentication refused: bad ownership or modes for directory</title>
      <link>https://www.daveperrett.com/articles/2010/09/14/ssh-authentication-refused/</link>
      <pubDate>Tue, 14 Sep 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/09/14/ssh-authentication-refused/</guid>
      <description>&lt;p&gt;I just spent 30 minutes trying to get login via public key working on a new server, and here&amp;rsquo;s a few tips that I wish I knew earlier :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>New site launched!</title>
      <link>https://www.daveperrett.com/articles/2010/09/13/new-site-launched/</link>
      <pubDate>Mon, 13 Sep 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/09/13/new-site-launched/</guid>
      <description>Today I&amp;rsquo;m very happy to announce the launch of my new site
Previously my open-source code, company information and blog posts had been spread over several different sites. All this various content will be consolidated into a single site here over the next couple of months, which will hopefully allow me to focus more on doing what I love - building beautiful apps, and hacking on open-source code.
I&amp;rsquo;m also hoping to set a regular blogging schedule, so stay tuned for more posts and announcements!</description>
    </item>
    
    <item>
      <title>Push and delete remote git branches</title>
      <link>https://www.daveperrett.com/articles/2010/03/17/push-and-delete-remote-git-branches/</link>
      <pubDate>Wed, 17 Mar 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/03/17/push-and-delete-remote-git-branches/</guid>
      <description>&lt;p&gt;This is easy to do, but I always forget how to do it, so this is more a reminder to myself than anything else.&lt;/p&gt;
&lt;p&gt;To create and checkout a branch in git :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Compiling and running red5 flash server on OSX</title>
      <link>https://www.daveperrett.com/articles/2010/03/16/compiling-and-running-red5-flash-server-on-osx/</link>
      <pubDate>Tue, 16 Mar 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/03/16/compiling-and-running-red5-flash-server-on-osx/</guid>
      <description>&lt;p&gt;First, you need to make sure you are using java 1.6. I&amp;rsquo;m told this method will only work on 64-bit leopard machines, so your mileage may vary. In the finder, browse to /Applications/Utilities and open &lt;em&gt;Java Preferences.app&lt;/em&gt; .&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Compiling Nginx with flv streaming support on Ubuntu</title>
      <link>https://www.daveperrett.com/articles/2010/03/16/compiling-nginx-with-flv-streaming-support-on-ubuntu/</link>
      <pubDate>Tue, 16 Mar 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/03/16/compiling-nginx-with-flv-streaming-support-on-ubuntu/</guid>
      <description>&lt;p&gt;First, we need to get the latest version of nginx :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; wget http://nginx.org/download/nginx-0.8.34.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; tar xvzf nginx-0.8.34.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; cd nginx-0.8.34
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Next, configure it to support ssl, gzip, flv streaming and real-ip. I generally compile it to &lt;em&gt;/opt/nginx-YYMMDD&lt;/em&gt; (change the &lt;em&gt;&amp;ndash;prefix&lt;/em&gt; setting if you want to put it somewhere else) :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Installing Flex 4 (Gumbo) SDK on OS X</title>
      <link>https://www.daveperrett.com/articles/2010/03/14/installing-flex-4-gumbo-sdk-on-os-x/</link>
      <pubDate>Sun, 14 Mar 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/03/14/installing-flex-4-gumbo-sdk-on-os-x/</guid>
      <description></description>
    </item>
    
    <item>
      <title>How to find out if Ubuntu is 32 bit or 64 bit</title>
      <link>https://www.daveperrett.com/articles/2010/03/06/how-to-find-out-if-ubuntu-is-32-bit-or-64-bit/</link>
      <pubDate>Sat, 06 Mar 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/03/06/how-to-find-out-if-ubuntu-is-32-bit-or-64-bit/</guid>
      <description>To find out if Ubuntu is 32 bit or 64 bit, run uname :
uname -m x86_64 = 64 bit
i686 = 32 bit</description>
    </item>
    
    <item>
      <title>sources.list For Ubuntu Hardy Heron 8.04</title>
      <link>https://www.daveperrett.com/articles/2010/03/06/sources-list-for-ubuntu-hardy-heron-8-04/</link>
      <pubDate>Sat, 06 Mar 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/03/06/sources-list-for-ubuntu-hardy-heron-8-04/</guid>
      <description>&lt;p&gt;I keep having to look this up to add multiverse repositories (courtesy of &lt;a href=&#34;http://tuxicity.wordpress.com/sourceslist-for-ubuntu-hardy-heron-810/&#34;&gt;tuxicity&lt;/a&gt;).&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Installing git-up on Ubuntu 8.10</title>
      <link>https://www.daveperrett.com/articles/2010/02/14/installing-git-up-on-ubuntu-8-10/</link>
      <pubDate>Sun, 14 Feb 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/02/14/installing-git-up-on-ubuntu-8-10/</guid>
      <description>&lt;p&gt;Recently I had a bit of trouble getting {{ &amp;ldquo;github.com/aanand/git-up&amp;rdquo; | ext_link: &amp;ldquo;git-up&amp;rdquo;}} to work on Ubuntu (or &lt;a href=&#34;https://www.daveperrett.com/articles/2010/02/14/updating-rubygems-on-mac-os-x-10-5-leopard/&#34;&gt;anywhere else&lt;/a&gt; for that matter), so here&amp;rsquo;s some of the steps I had to go through.&lt;/p&gt;
&lt;p&gt;Initially ubuntu seems to have &lt;a href=&#34;http://rubyforge.org/projects/rubygems/&#34;&gt;RubyGems&lt;/a&gt; 1.01 and 1.2.0 installed :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; gem --version
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1.2.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;/usr/bin/gem1.8 --version
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1.2.0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt;/usr/bin/gem1.9 --version
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;1.0.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Updating RubyGems on Mac OS X 10.5 Leopard</title>
      <link>https://www.daveperrett.com/articles/2010/02/14/updating-rubygems-on-mac-os-x-10-5-leopard/</link>
      <pubDate>Sun, 14 Feb 2010 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2010/02/14/updating-rubygems-on-mac-os-x-10-5-leopard/</guid>
      <description>&lt;p&gt;I haven&amp;rsquo;t used ruby for a while, but recently wanted to try out {{ &amp;ldquo;github.com/aanand/git-up&amp;rdquo; | ext_link: &amp;ldquo;git-up&amp;rdquo;}} on OSX. According to the {{ &amp;ldquo;github.com/aanand/git-up/blob/master/README.md&amp;rdquo; | ext_link: &amp;ldquo;instructions&amp;rdquo;}}, a simple &lt;em&gt;gem install git-up&lt;/em&gt; should work :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; sudo gem install git-up
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Updating metadata &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; gems from http://gems.rubyforge.org
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;complete
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ERROR:  could not find git-up locally or in a repository
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;I assume this is something to do with gem hosting moving to github or something&amp;hellip; I haven&amp;rsquo;t really been following ruby for a year or so so I&amp;rsquo;m not sure exactly what&amp;rsquo;s going on. It seems i&amp;rsquo;m running a pretty old version of &lt;a href=&#34;http://rubyforge.org/projects/rubygems/&#34;&gt;RubyGems&lt;/a&gt;, so I tried to update :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>nginx error - 413 Request Entity Too Large</title>
      <link>https://www.daveperrett.com/articles/2009/11/18/nginx-error-413-request-entity-too-large/</link>
      <pubDate>Wed, 18 Nov 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/11/18/nginx-error-413-request-entity-too-large/</guid>
      <description>If you&amp;rsquo;re getting 413 Request Entity Too Large errors trying to upload with {{ &amp;ldquo;nginx.net/&amp;rdquo; | ext_link: &amp;ldquo;Nginx&amp;rdquo;}}, you need to increase the size limit in nginx.conf . Add &amp;lsquo;client_max_body_size xxM&amp;rsquo; inside the server section, where xx is the size (in megabytes) that you want to allow.
http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { client_max_body_size 20M; listen 80; server_name localhost; # Main location location / { proxy_pass http://127.</description>
    </item>
    
    <item>
      <title>Makefile - missing separator. Stop.</title>
      <link>https://www.daveperrett.com/articles/2009/11/12/makefile-missing-separator-stop/</link>
      <pubDate>Thu, 12 Nov 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/11/12/makefile-missing-separator-stop/</guid>
      <description>If you&amp;rsquo;re getting missing separator errors in your makefile, similar to the following :
Makefile:22: *** missing separator. Stop. &amp;hellip; make sure you are using real tabs instead of spaces. A global search and replace for four-spaces should fix things up.</description>
    </item>
    
    <item>
      <title>NoReverseMatch : custom registration templates break django unit tests</title>
      <link>https://www.daveperrett.com/articles/2009/11/10/noreversematch-custom-registration-templates-break-django-unit-tests/</link>
      <pubDate>Tue, 10 Nov 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/11/10/noreversematch-custom-registration-templates-break-django-unit-tests/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve over-ridden several of the built-in &lt;a href=&#34;http://www.djangoproject.com/&#34;&gt;django&lt;/a&gt; auth and {{ &amp;ldquo;bitbucket.org/ubernostrum/django-registration/&amp;rdquo; | ext_link: &amp;ldquo;django-registration&amp;rdquo;}} templates so I can have my own custom-styled login and registration pages. This all worked fine until i tried to run the built-in django and django_registration test suites, when everything fell apart :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Sending Django email with Gmail</title>
      <link>https://www.daveperrett.com/articles/2009/10/16/sending-django-email-with-gmail/</link>
      <pubDate>Fri, 16 Oct 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/10/16/sending-django-email-with-gmail/</guid>
      <description>&lt;p&gt;After spending a few hours struggling to get &lt;a href=&#34;http://www.postfix.org/&#34;&gt;postfix&lt;/a&gt; to work with &lt;a href=&#34;http://www.djangoproject.com/&#34;&gt;django&lt;/a&gt; on my local dev machine, I gave up and decided to use &lt;a href=&#34;http://mail.google.com/&#34;&gt;Gmail&lt;/a&gt; . To do it, add the following to your &lt;em&gt;settings.py&lt;/em&gt; :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Compiling mysql-python on OS X leopard</title>
      <link>https://www.daveperrett.com/articles/2009/08/18/compiling-mysql-python-on-os-x-leopard/</link>
      <pubDate>Tue, 18 Aug 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/08/18/compiling-mysql-python-on-os-x-leopard/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve just finished trying to install &lt;a href=&#34;http://sourceforge.net/projects/mysql-python/&#34;&gt;mysql-python&lt;/a&gt; on OSX Leopard, and had quite a few problems. This is the procedure that finally ended up working for me.&lt;/p&gt;
&lt;p&gt;First, download mysql-python from &lt;a href=&#34;http://downloads.sourceforge.net/sourceforge/mysql-python/MySQL-python-1.2.3c1.tar.gz&#34;&gt;here&lt;/a&gt;.
Unzip and try to build it :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>&#39;Hello World&#39; with Scala and Lift on OSX</title>
      <link>https://www.daveperrett.com/articles/2009/08/17/hello-world-with-scala-and-lift-on-osx/</link>
      <pubDate>Mon, 17 Aug 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/08/17/hello-world-with-scala-and-lift-on-osx/</guid>
      <description>&lt;p&gt;Obviously we&amp;rsquo;re going to need scala before we can do anything useful; the easiest way to install it is via &lt;a href=&#34;http://www.macports.org/&#34;&gt;macports&lt;/a&gt; . We&amp;rsquo;re also going to need maven.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; sudo port install scala
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; sudo port install maven2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Scala seems to have moved their repository to &lt;a href=&#34;http://github.com/dpp/liftweb/tree/master&#34;&gt;github&lt;/a&gt;, and the old &lt;a href=&#34;http://code.google.com/p/liftweb/&#34;&gt;google code repository&lt;/a&gt; no longer works. Assuming you have &lt;a href=&#34;http://git-scm.com/&#34;&gt;git&lt;/a&gt; installed (if not, there&amp;rsquo;s an &lt;a href=&#34;http://code.google.com/p/git-osx-installer/downloads/list?can=3&#34;&gt;OS X installer here&lt;/a&gt;) :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>mysql select random row with join</title>
      <link>https://www.daveperrett.com/articles/2009/08/11/mysql-select-random-row-with-join/</link>
      <pubDate>Tue, 11 Aug 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/08/11/mysql-select-random-row-with-join/</guid>
      <description>&lt;p&gt;I have a &lt;em&gt;users&lt;/em&gt; table and an &lt;em&gt;assets&lt;/em&gt; (basically just images) table, and I want to select and display a random &lt;em&gt;asset&lt;/em&gt; for each &lt;em&gt;user&lt;/em&gt;. I want to show a list of users, with a random thumbnail for each user from their assets.&lt;/p&gt;
&lt;p&gt;I could do this easily enough in code with multiple queries, but it seemed like a nice challenge to try and find a pure-sql alternative.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Customize the Nginx server header</title>
      <link>https://www.daveperrett.com/articles/2009/08/10/customize-the-nginx-server-header/</link>
      <pubDate>Mon, 10 Aug 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/08/10/customize-the-nginx-server-header/</guid>
      <description>&lt;p&gt;Unfortunately the only way to change the server header in &lt;a href=&#34;http://nginx.net/&#34;&gt;nginx&lt;/a&gt; is to actually recompile it from source. Luckily this is quite easy.&lt;/p&gt;
&lt;p&gt;First, download the latest version of nginx (0.7.61 at the time of writing) :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; wget http://sysoev.ru/nginx/nginx-0.7.61.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; tar xvzf nginx-0.7.61.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; cd nginx-0.7.61
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Passing IPs to apache with nginx proxy</title>
      <link>https://www.daveperrett.com/articles/2009/08/10/passing-ips-to-apache-with-nginx-proxy/</link>
      <pubDate>Mon, 10 Aug 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/08/10/passing-ips-to-apache-with-nginx-proxy/</guid>
      <description>&lt;p&gt;When you use &lt;a href=&#34;http://nginx.net&#34;&gt;nginx&lt;/a&gt; to proxy to &lt;a href=&#34;http://httpd.apache.org/&#34;&gt;apache&lt;/a&gt; , apache picks up the IP address of your nginx proxy as the client. A consequence of this is that apache log files, and any application running on the apache backend, will all receive the same IP address (for example 127.0.0.1 if apache and nginx are running the same server).&lt;/p&gt;
&lt;p&gt;Luckily, nginx provides a HTTP &lt;em&gt;X-Forwarded-For&lt;/em&gt; header containing the clients real IP address, although apache doesn&amp;rsquo;t pick it up by default. To allow apache to recognize the original client IP, we need to install the mod_rpaf module. On ubuntu, this is as simple as installing a package :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>InnoDB as default MySQL table type</title>
      <link>https://www.daveperrett.com/articles/2009/08/09/innodb-as-default-mysql-table-type/</link>
      <pubDate>Sun, 09 Aug 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/08/09/innodb-as-default-mysql-table-type/</guid>
      <description>&lt;p&gt;To change the default MySQL table type, edit your &lt;em&gt;my.cnf&lt;/em&gt; file (usually &lt;em&gt;/etc/mysql/my.cnf&lt;/em&gt; on ubuntu), and add the following line to the &lt;em&gt;[mysqld]&lt;/em&gt; section :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; default-table-type&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;innodb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The resulting config will look something like this :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Flushing the DNS cache on OS X</title>
      <link>https://www.daveperrett.com/articles/2009/08/05/flushing-the-dns-cache-on-os-x/</link>
      <pubDate>Wed, 05 Aug 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/08/05/flushing-the-dns-cache-on-os-x/</guid>
      <description>I often find that OS X refuses to obey my /etc/hosts file for some time after I change it. It seems that often you have to manually flush the DNS cache by hand to force host file changes to take effect.
Under pre-leopard systems, use lookupd :
&amp;gt; sudo lookupd -flushcache Starting with Leopard, lookupd has been replaced with dscacheutil :
&amp;gt; sudo dscacheutil -flushcache </description>
    </item>
    
    <item>
      <title>MySQL table &#39;is marked as crashed&#39;</title>
      <link>https://www.daveperrett.com/articles/2009/06/18/mysql-table-is-marked-as-crashed/</link>
      <pubDate>Thu, 18 Jun 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/06/18/mysql-table-is-marked-as-crashed/</guid>
      <description>&lt;p&gt;I recently had a problem trying to use &lt;em&gt;mysqldump&lt;/em&gt; where it was complaining that&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mysqldump: Got error: 145: Table &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;./recurser/wp_options&amp;#39;&lt;/span&gt; is marked as crashed and should be repaired when using LOCK TABLES
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This corrupted wp_options table actually caused wordpress to think it was a fresh install, and showed the interface to create the admin user to anyone who accessed &lt;a href=&#34;http://recurser.com&#34;&gt;recurser&lt;/a&gt; which is a little scary :)&lt;/p&gt;
&lt;p&gt;The solution was to go to the actual database directory, and run &lt;em&gt;myisamchk -r&lt;/em&gt; on the offending table :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>HTTPSHandler error using python 2.5 and GAE on OS X</title>
      <link>https://www.daveperrett.com/articles/2009/06/06/httpshandler-error-using-python-25-and-gae-on-os-x/</link>
      <pubDate>Sat, 06 Jun 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/06/06/httpshandler-error-using-python-25-and-gae-on-os-x/</guid>
      <description>&lt;p&gt;If you are getting an error complaining that &lt;em&gt;&amp;lsquo;module&amp;rsquo; object has no attribute &amp;lsquo;HTTPSHandler&amp;rsquo;&lt;/em&gt; running python 2.5 on OS X :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Python 2.5 &#34;ImportError: No module named _md5&#34; on OS X</title>
      <link>https://www.daveperrett.com/articles/2009/06/06/python-25-importerror-no-module-named-_md5-on-os-x/</link>
      <pubDate>Sat, 06 Jun 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/06/06/python-25-importerror-no-module-named-_md5-on-os-x/</guid>
      <description>If you are getting an error complaining about missing md5 running python 2.5 on OS X :
Traceback (most recent call last): File &amp;#34;&amp;lt;string&amp;gt;&amp;#34;, line 1, in &amp;lt;module&amp;gt; File &amp;#34;/Users/dave/Desktop/setuptools-0.6c9-py2.5.egg/setuptools/command/easy_install.py&amp;#34;, line 21, in &amp;lt;module&amp;gt; File &amp;#34;/Users/dave/Desktop/setuptools-0.6c9-py2.5.egg/setuptools/package_index.py&amp;#34;, line 2, in &amp;lt;module&amp;gt; File &amp;#34;/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/urllib2.py&amp;#34;, line 91, in &amp;lt;module&amp;gt; import hashlib File &amp;#34;/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/hashlib.py&amp;#34;, line 133, in &amp;lt;module&amp;gt; md5 = __get_builtin_constructor(&amp;#39;md5&amp;#39;) File &amp;#34;/opt/local/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/hashlib.py&amp;#34;, line 60, in __get_builtin_constructor import _md5 ImportError: No module named _md5 &amp;hellip; you need to install py25-hashlib :</description>
    </item>
    
    <item>
      <title>python 2.5 zipimport.ZipImportError on OS X</title>
      <link>https://www.daveperrett.com/articles/2009/06/06/python-25-zipimportzipimporterror-on-os-x/</link>
      <pubDate>Sat, 06 Jun 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/06/06/python-25-zipimportzipimporterror-on-os-x/</guid>
      <description>If you are getting an error similar to the following trying to run pythin2.5 on OS X :
zipimport.ZipImportError: can&amp;#39;t decompress data; zlib not available &amp;hellip; you need to install py25-zlib :
&amp;gt; sudo port install py25-zlib </description>
    </item>
    
    <item>
      <title>Exclude tables from mysqldump</title>
      <link>https://www.daveperrett.com/articles/2009/06/02/exclude-tables-from-mysqldump/</link>
      <pubDate>Tue, 02 Jun 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/06/02/exclude-tables-from-mysqldump/</guid>
      <description>Recently I was in a position where i wanted to exclude 2 large tables from mysqldump, without specifying every single table I wanted to back up. After a bit of searching, it seems you can easily exclude tables from mysqldump using the &amp;ndash;ignore-table option :
&amp;gt; mysqldump -u dave -ppassword -h localhost --ignore-table=my_db_name.my_table_name my_db_name &amp;hellip;obviously substituting your own username, password, db name and table name etc . As far as i can tell you can use this option multiple times to exclude multiple tables</description>
    </item>
    
    <item>
      <title>&#39;spec/rake/spectask&#39; errors doing rake db:migrate</title>
      <link>https://www.daveperrett.com/articles/2009/04/29/specrakespectask-errors-doing-rake-dbmigrate/</link>
      <pubDate>Wed, 29 Apr 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/04/29/specrakespectask-errors-doing-rake-dbmigrate/</guid>
      <description>If you get an error similar to the following while running rake db:migrate :
error no such file to load -- spec/rake/spectask &amp;hellip; you need to install the rspec gem :
&amp;gt; sudo gem install rspec </description>
    </item>
    
    <item>
      <title>Rename authors in a git repository</title>
      <link>https://www.daveperrett.com/articles/2009/04/29/rename-authors-in-a-git-repository/</link>
      <pubDate>Wed, 29 Apr 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/04/29/rename-authors-in-a-git-repository/</guid>
      <description>&lt;p&gt;I recently imported the old &lt;a href=&#34;https://www.daveperrett.com/code/p/clutch/page/About/&#34;&gt;Clutch&lt;/a&gt; code into &lt;a href=&#34;http://git-scm.com/&#34;&gt;git&lt;/a&gt; , but for some reason it ignored the &lt;em&gt;authors.txt&lt;/em&gt; file I provided, and used the original &lt;a href=&#34;http://subversion.tigris.org/&#34;&gt;svn&lt;/a&gt; user names.&lt;/p&gt;
&lt;p&gt;This info is based largely on &lt;a href=&#34;http://stackoverflow.com/questions/392332/retroactively-correct-authors-with-git-svn&#34;&gt;this stack overflow post&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;First, clone your repository locally :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>&#39;Can&#39;t find Magick-config&#39; error installing rmagick gem</title>
      <link>https://www.daveperrett.com/articles/2009/04/26/cant-find-magick-config-error-installing-rmagick-gem/</link>
      <pubDate>Sun, 26 Apr 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/04/26/cant-find-magick-config-error-installing-rmagick-gem/</guid>
      <description>If you are getting the error &amp;lsquo;Can&amp;rsquo;t find Magick-config&amp;rsquo; when installing the RMagick gem, chances are you&amp;rsquo;re missing the libmagick9-dev library.
/opt/ruby-enterprise-1.8.6-20090201/bin/ruby extconf.rb install rmagick checking for Ruby version &amp;gt;= 1.8.2... yes checking for gcc... yes checking for Magick-config... no Can&amp;#39;t install RMagick 2.9.1. Can&amp;#39;t find Magick-config in ..... To fix this on ubuntu, simply install libmagick :
apt-get install libmagick9-dev </description>
    </item>
    
    <item>
      <title>undefined method assert_valid_keys in Rails</title>
      <link>https://www.daveperrett.com/articles/2009/02/24/undefined-method-assert_valid_keys-in-rails/</link>
      <pubDate>Tue, 24 Feb 2009 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2009/02/24/undefined-method-assert_valid_keys-in-rails/</guid>
      <description>&lt;p&gt;If you are getting an error about &amp;lsquo;undefined method assert_valid_keys&amp;rsquo; in &lt;a href=&#34;http://rubyonrails.org/&#34;&gt;Rails&lt;/a&gt; :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;undefined method &lt;span style=&#34;color:#e6db74&#34;&gt;`assert_valid_keys&amp;#39; for :time_entry_product:Symbol
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&amp;hellip; it may be because you have two relationships specified on the same line in your model :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Styling Apache directory listings with mod_autoindex</title>
      <link>https://www.daveperrett.com/articles/2008/12/29/styling-apache-directory-listings-with-mod_autoindex/</link>
      <pubDate>Mon, 29 Dec 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/12/29/styling-apache-directory-listings-with-mod_autoindex/</guid>
      <description>&lt;p&gt;Index-Style is a set of html, css and image files designed to work together with the &lt;a href=&#34;http://httpd.apache.org/docs/2.0/mod/mod_autoindex.html&#34;&gt;mod_autoindex&lt;/a&gt; module to make the default &lt;a href=&#34;http://www.apache.org/&#34;&gt;Apache&lt;/a&gt; file listings look a little nicer. The UI design is based almost entirely on the great work done by the guys at &lt;a href=&#34;http://www.reposstyle.com/&#34;&gt;Repos-Style&lt;/a&gt;, although the code itself is largely done from scratch (as mod_autoindex doesn&amp;rsquo;t support XSLT).&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Nginx adds strange characters using rails/memcached_pass</title>
      <link>https://www.daveperrett.com/articles/2008/12/23/nginx-adds-strange-characters-using-railsmemcached_pass/</link>
      <pubDate>Tue, 23 Dec 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/12/23/nginx-adds-strange-characters-using-railsmemcached_pass/</guid>
      <description>&lt;p&gt;After upgrading a few gems recently, I found that the content returned from the &lt;a href=&#34;http://nginx.net/&#34;&gt;nginx&lt;/a&gt; &lt;a href=&#34;http://wiki.codemongers.com/NginxHttpMemcachedModule&#34;&gt;memcached_pass&lt;/a&gt; directive always had a few strange characters prepended.&lt;/p&gt;
&lt;p&gt;After some investigation it seems that this is caused by rails &amp;lsquo;marshalling&amp;rsquo; the data. If you&amp;rsquo;re using a memcached set command such as&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;Cache&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;set(key, content, time_to_live)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You need to add an extra argument to force rails to cache the raw data instead of marshalling it :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Phusion Passenger PassengerMaxPoolSize is ignored</title>
      <link>https://www.daveperrett.com/articles/2008/12/22/phusion-passenger-passengermaxpoolsize-is-ignored/</link>
      <pubDate>Mon, 22 Dec 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/12/22/phusion-passenger-passengermaxpoolsize-is-ignored/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve been wondering for a while why &lt;a href=&#34;http://www.modrails.com/&#34;&gt;Phusion Passenger&lt;/a&gt; seems to completely ignore the &lt;em&gt;PassengerMaxPoolSize&lt;/em&gt;, &lt;em&gt;PassengerMaxInstancesPerApp&lt;/em&gt; and  &lt;em&gt;PassengerPoolIdleTime&lt;/em&gt; directives. I recently discovered that they don&amp;rsquo;t work inside &lt;em&gt;VirtualHost&lt;/em&gt; blocks in apache config. The old (non-working) config was something like :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Pylons - LookupError: Entry point &#39;main&#39; not found in egg</title>
      <link>https://www.daveperrett.com/articles/2008/12/21/pylons-lookuperror-entry-point-main-not-found-in-egg/</link>
      <pubDate>Sun, 21 Dec 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/12/21/pylons-lookuperror-entry-point-main-not-found-in-egg/</guid>
      <description>&lt;p&gt;If you are getting a &lt;em&gt;LookupError&lt;/em&gt; in Pylons similar to the following :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>memcaches_page plugin for Rails</title>
      <link>https://www.daveperrett.com/articles/2008/12/03/memcaches_page-plugin-for-rails/</link>
      <pubDate>Wed, 03 Dec 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/12/03/memcaches_page-plugin-for-rails/</guid>
      <description>&lt;p&gt;This plugin is very similar to the built-in Rails &amp;lsquo;caches_page&amp;rsquo; functionality, except it caches to &lt;a href=&#34;http://www.danga.com/memcached/&#34;&gt;memcached&lt;/a&gt; rather than a file. It relies on the &amp;lsquo;memcached_pass&amp;rsquo; &lt;a href=&#34;http://nginx.net/&#34;&gt;nginx&lt;/a&gt; directive to serve pages directly from memory if possible, and only passes to rails if necessary. On my server I&amp;rsquo;ve seen a 75% reduction in Ruby memory usage using this technique.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Gantt Calendar plugin for Trac</title>
      <link>https://www.daveperrett.com/articles/2008/11/26/gantt-calendar-plugin-for-trac/</link>
      <pubDate>Wed, 26 Nov 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/11/26/gantt-calendar-plugin-for-trac/</guid>
      <description>&lt;p&gt;&lt;em&gt;2013-03-28 Update&lt;/em&gt; : This plugin is &lt;a href=&#34;https://github.com/recurser/gantt-calendar&#34;&gt;hosted on GitHub&lt;/a&gt; for historical reasons, but no longer supported. Please use the &lt;a href=&#34;http://svn.sourceforge.jp/svnroot/shibuya-trac/plugins/ganttcalendarplugin/trunk&#34;&gt;sibuya-trac version&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2010/12/16 Update&lt;/em&gt; : I&amp;rsquo;ve been in touch with the original author of this plugin, and his latest version (0.12) supports English now.&lt;/p&gt;
&lt;p&gt;I recommend you &lt;a href=&#34;http://svn.sourceforge.jp/svnroot/shibuya-trac/plugins/ganttcalendarplugin/trunk&#34;&gt;use his svn repository&lt;/a&gt; rather than this out-dated version :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;gt; svn co http://svn.sourceforge.jp/svnroot/shibuya-trac/plugins/ganttcalendarplugin/trunk ganttcalendarplugin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>iTerm Delete Key Config</title>
      <link>https://www.daveperrett.com/articles/2008/10/24/iterm-delete-key-config/</link>
      <pubDate>Fri, 24 Oct 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/10/24/iterm-delete-key-config/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve often found that after SSHing with iTerm, the delete key mappings are occasionally (well regularly) problematic. &lt;a href=&#34;http://akgeeks.net/node/83&#34;&gt;This post from Alaska Geeks&lt;/a&gt; sorted the problem out straight away in my case :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Styling subversion listings with xslt</title>
      <link>https://www.daveperrett.com/articles/2008/09/17/styling-subversion-listings-with-xslt/</link>
      <pubDate>Wed, 17 Sep 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/09/17/styling-subversion-listings-with-xslt/</guid>
      <description>&lt;p&gt;The default Apache &lt;a href=&#34;http://svnbook.red-bean.com/en/1.1/re58.html&#34;&gt;mod_dav_svn&lt;/a&gt; listings are a little bland, but luckily you can use the &lt;em&gt;SVNIndexXSLT&lt;/em&gt; Apache directive to spice things up a bit. I&amp;rsquo;ve been using a slightly modified version of the fantastic &lt;a href=&#34;http://www.reposstyle.com/&#34;&gt;ReposStyle&lt;/a&gt; XSLT styles.&lt;/p&gt;
&lt;p&gt;Assuming you&amp;rsquo;ve already &lt;a href=&#34;https://www.daveperrett.com/articles/2008/03/27/subversion-server-on-centos/&#34;&gt;set up subversion&lt;/a&gt; , &lt;a href=&#34;http://groups.google.com/group/reposstyle/files?pli=1&#34;&gt;download the latest ReposStyle from here&lt;/a&gt; and drop it in the document root, and configure Apache something like this :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Rewrite Trac links to Redmine with nginx </title>
      <link>https://www.daveperrett.com/articles/2008/09/11/rewrite-trac-links-to-redmine-with-nginx/</link>
      <pubDate>Thu, 11 Sep 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/09/11/rewrite-trac-links-to-redmine-with-nginx/</guid>
      <description>&lt;p&gt;I recently migrated from &lt;a href=&#34;http://trac.edgewall.org/&#34;&gt;Trac&lt;/a&gt; (at &lt;a href=&#34;http://recurser.com/trac/&#34;&gt;http://recurser.com/trac/&lt;/a&gt; ) to &lt;a href=&#34;http://www.redmine.org/&#34;&gt;Redmine&lt;/a&gt; (at &lt;a href=&#34;http://recurser.com/code/&#34;&gt;http://recurser.com/code/&lt;/a&gt; ), and wanted the Trac links to redirect to the right place if possible. The &lt;a href=&#34;http://nginx.net/&#34;&gt;nginx&lt;/a&gt; rules that follow achieve most of that. As always, there are a few catches:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Disable store links in iTunes 8</title>
      <link>https://www.daveperrett.com/articles/2008/08/17/disable-store-links-in-itunes-8/</link>
      <pubDate>Sun, 17 Aug 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/08/17/disable-store-links-in-itunes-8/</guid>
      <description>The preference to remove these links in iTunes 7 seems to have disappeared in version 8. You can turn them off, however, in the terminal :
$ defaults write com.apple.iTunes show-store-arrow-links -bool FALSE Restart iTunes, and the links should be gone.</description>
    </item>
    
    <item>
      <title>Filesystem path is neither a file nor a directory 160013 - SVN / Trac Error</title>
      <link>https://www.daveperrett.com/articles/2008/07/27/filesystem-path-is-neither-a-file-nor-a-directory-160013-svn-trac-error/</link>
      <pubDate>Sun, 27 Jul 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/07/27/filesystem-path-is-neither-a-file-nor-a-directory-160013-svn-trac-error/</guid>
      <description>&lt;p&gt;Recently I had an SVN repository with a couple of corrupt revisions that I couldn&amp;rsquo;t figure out how to fix, which caused Trac to stop displaying revisions after the corruption.&lt;/p&gt;
&lt;p&gt;Trying &lt;em&gt;trac-admin resync&lt;/em&gt; was no help, throwing this exception :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Installing Trac on CentOS</title>
      <link>https://www.daveperrett.com/articles/2008/07/27/installing-trac-on-centos/</link>
      <pubDate>Sun, 27 Jul 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/07/27/installing-trac-on-centos/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Before you do anything, &lt;a href=&#34;https://www.daveperrett.com/articles/2008/03/27/subversion-server-on-centos/&#34;&gt;go ahead and install subversion&lt;/a&gt; .&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Install the python &lt;em&gt;easy install&lt;/em&gt; tool:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    
    <item>
      <title>Simulate delayed-fade in jQuery</title>
      <link>https://www.daveperrett.com/articles/2008/07/15/simulate-delayed-fade-in-jquery/</link>
      <pubDate>Tue, 15 Jul 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/07/15/simulate-delayed-fade-in-jquery/</guid>
      <description>&lt;p&gt;Unfortunately there is no &lt;em&gt;.delay()&lt;/em&gt; function in jQuery. You can fake this, however, by using the &lt;em&gt;.fadeTo()&lt;/em&gt; function:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;$&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;#my_element&amp;#34;&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;fadeIn&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;fadeTo&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;5000&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;).&lt;span style=&#34;color:#a6e22e&#34;&gt;fadeOut&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>svn: Can&#39;t find a temporary directory: Internal error</title>
      <link>https://www.daveperrett.com/articles/2008/07/14/svn-cant-find-a-temporary-directory-internal-error/</link>
      <pubDate>Mon, 14 Jul 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/07/14/svn-cant-find-a-temporary-directory-internal-error/</guid>
      <description>If you&amp;rsquo;re getting a &amp;lsquo;svn: Can&amp;rsquo;t find a temporary directory: Internal error&amp;rsquo; error while using subversion, check the disk space on the server :
$ df You&amp;rsquo;re more than likely out of space.
[dave@dev2:~/]$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/vg0-rootvol 73608360 73605908 0 100% / </description>
    </item>
    
    <item>
      <title>Browser detection with PHP</title>
      <link>https://www.daveperrett.com/articles/2008/06/23/browser-detection-with-php/</link>
      <pubDate>Mon, 23 Jun 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/06/23/browser-detection-with-php/</guid>
      <description>&lt;p&gt;You can use PHP&amp;rsquo;s &lt;a href=&#34;http://jp2.php.net/get_browser&#34;&gt;get_browser()&lt;/a&gt; function to find out information about user&amp;rsquo;s browsers, but it takes a little setting up.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Force MySQL Encoding to UTF8</title>
      <link>https://www.daveperrett.com/articles/2008/06/23/force-mysql-encoding-to-utf8/</link>
      <pubDate>Mon, 23 Jun 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/06/23/force-mysql-encoding-to-utf8/</guid>
      <description>&lt;p&gt;Often MySQL will need to be forced to return results in UTF8 encoding. There are two ways to do this:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>PHP5 on OS X Leopard</title>
      <link>https://www.daveperrett.com/articles/2008/06/23/php5-on-os-x-leopard/</link>
      <pubDate>Mon, 23 Jun 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/06/23/php5-on-os-x-leopard/</guid>
      <description>&lt;p&gt;PHP5 is already installed on Leopard by default - all you have to do is turn it on.&lt;/p&gt;
&lt;p&gt;First, turn on web sharing - go to System Preferences-&amp;gt;Sharing and make sure the &amp;lsquo;Web Sharing&amp;rsquo; option is turned on.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Setup 64bit CentOS (PHP5, MySQL, memcached, ketama)</title>
      <link>https://www.daveperrett.com/articles/2008/06/23/setup-64bit-centos-php5-mysql-memcached-ketama/</link>
      <pubDate>Mon, 23 Jun 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/06/23/setup-64bit-centos-php5-mysql-memcached-ketama/</guid>
      <description>&lt;p&gt;I recently had to set up a few CentOS servers with &lt;a href=&#34;http://php.net/&#34;&gt;PHP&lt;/a&gt; , &lt;a href=&#34;http://www.mysql.com/&#34;&gt;MySQL&lt;/a&gt; , &lt;a href=&#34;http://www.danga.com/memcached/&#34;&gt;memcached&lt;/a&gt; and &lt;a href=&#34;http://www.audioscrobbler.net/development/ketama/&#34;&gt;ketama&lt;/a&gt;, and ended up writing this script to do it. You can &lt;a href=&#34;http://www.daveperrett.com/svn/misc/build/&#34;&gt;grab the whole thing from subversion&lt;/a&gt; (you&amp;rsquo;ll need the php folder as well).&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Subversion Server on CentOS</title>
      <link>https://www.daveperrett.com/articles/2008/03/27/subversion-server-on-centos/</link>
      <pubDate>Thu, 27 Mar 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/03/27/subversion-server-on-centos/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Install a couple of packages via yum :&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo yum install httpd subversion mod_dav_svn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Format JSON with PHP</title>
      <link>https://www.daveperrett.com/articles/2008/03/11/format-json-with-php/</link>
      <pubDate>Tue, 11 Mar 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/03/11/format-json-with-php/</guid>
      <description></description>
    </item>
    
    <item>
      <title>jQuery i18n Translation Plugin</title>
      <link>https://www.daveperrett.com/articles/2008/02/21/jquery-i18n-translation-plugin/</link>
      <pubDate>Thu, 21 Feb 2008 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2008/02/21/jquery-i18n-translation-plugin/</guid>
      <description>&lt;p&gt;&lt;em&gt;2013-03-28 Update&lt;/em&gt; : This plugin is now &lt;a href=&#34;https://github.com/recurser/jquery-i18n&#34;&gt;hosted on GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2010-09-29 Update&lt;/em&gt; : This plugin has been moved from subversion to git, and now has a &lt;a href=&#34;https://github.com/recurser/jquery-i18n&#34;&gt;dedicated project page&lt;/a&gt; . Subversion updates will be discontinued, so please update your links to point to the latest version!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>jQuery SimpleColor Color-Picker</title>
      <link>https://www.daveperrett.com/articles/2007/12/18/jquery-simplecolor-color-picker/</link>
      <pubDate>Tue, 18 Dec 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/12/18/jquery-simplecolor-color-picker/</guid>
      <description>&lt;p&gt;&lt;em&gt;2013-03-28 Update&lt;/em&gt; : This plugin is now &lt;a href=&#34;https://github.com/recurser/jquery-simple-color&#34;&gt;hosted on GitHub&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2010-09-29 Update&lt;/em&gt; : This plugin has been moved from subversion to git, and now has a &lt;a href=&#34;https://github.com/recurser/jquery-simple-color&#34;&gt;dedicated project page&lt;/a&gt;. Subversion updates will be discontinued, so please update your links to point to the latest version!&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Adding Appfuse Dependencies</title>
      <link>https://www.daveperrett.com/articles/2007/12/05/adding-appfuse-dependencies/</link>
      <pubDate>Wed, 05 Dec 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/12/05/adding-appfuse-dependencies/</guid>
      <description>&lt;p&gt;I recently had trouble importing the &lt;em&gt;com.sun.media.jai&lt;/em&gt; imaging library into &lt;a href=&#34;http://appfuse.org/&#34;&gt;appfuse&lt;/a&gt; :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;The import com.sun.media.jai cannot be resolved
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To add a dependency in your pom.xml, first add the new repository (may not be strictly necessary if the library is already in the default appfuse repositories) :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Complex Constants in Java</title>
      <link>https://www.daveperrett.com/articles/2007/12/05/complex-constants-in-java/</link>
      <pubDate>Wed, 05 Dec 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/12/05/complex-constants-in-java/</guid>
      <description>&lt;p&gt;If you want to assign a complex class (such as a HashMap / ArrayList etc) as a constant in Java, use the &lt;em&gt;static initializer block&lt;/em&gt; construct :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Default Values With Hibernate Annotations</title>
      <link>https://www.daveperrett.com/articles/2007/12/05/default-values-with-hibernate-annotations/</link>
      <pubDate>Wed, 05 Dec 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/12/05/default-values-with-hibernate-annotations/</guid>
      <description>&lt;p&gt;To set the default value of a field with Hibernate, you can use the &lt;em&gt;columnDefinition&lt;/em&gt; argument :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>MySQL Delete On Joined Tables</title>
      <link>https://www.daveperrett.com/articles/2007/12/02/mysql-delete-on-joined-tables/</link>
      <pubDate>Sun, 02 Dec 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/12/02/mysql-delete-on-joined-tables/</guid>
      <description>If you want to (for example) delete all users with the guest role from your database :
DELETE FROM user WHERE EXISTS ( SELECT * FROM role WHERE role.id = user.role_id AND role.name = &amp;#39;guest&amp;#39; ); </description>
    </item>
    
    <item>
      <title>Get complete AppFuse sources</title>
      <link>https://www.daveperrett.com/articles/2007/11/28/get-complete-appfuse-sources/</link>
      <pubDate>Wed, 28 Nov 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/11/28/get-complete-appfuse-sources/</guid>
      <description>To get the complete, exploded source of an AppFuse application, run :
$ mvn appfuse:full-source </description>
    </item>
    
    <item>
      <title>Appfuse &#34;failed to lazily initialize a collection of role&#34;</title>
      <link>https://www.daveperrett.com/articles/2007/11/27/appfuse-failed-to-lazily-initialize-a-collection-of-role/</link>
      <pubDate>Tue, 27 Nov 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/11/27/appfuse-failed-to-lazily-initialize-a-collection-of-role/</guid>
      <description>If you are getting a failed to lazily initialize a collection of role error in AppFuse , you need to un-comment the lazyLoadingFilter filter and associated filter-mapping in src/main/webapp/WEB-INF/web.xml .
&amp;lt;filter&amp;gt; &amp;lt;filter-name&amp;gt;lazyLoadingFilter&amp;lt;/filter-name&amp;gt; &amp;lt;filter-class&amp;gt;org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&amp;lt;/filter-class&amp;gt; &amp;lt;/filter&amp;gt; &amp;lt;filter-mapping&amp;gt; &amp;lt;filter-name&amp;gt;lazyLoadingFilter&amp;lt;/filter-name&amp;gt; &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt; &amp;lt;/filter-mapping&amp;gt; </description>
    </item>
    
    <item>
      <title>Skip AppFuse Tests</title>
      <link>https://www.daveperrett.com/articles/2007/11/27/skip-appfuse-tests/</link>
      <pubDate>Tue, 27 Nov 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/11/27/skip-appfuse-tests/</guid>
      <description>To skip tests when compiling/running AppFuse applications, add the -Dmaven.test.skip=true argument to your Maven call :
$ mvn jetty:run-war -Dmaven.test.skip=true </description>
    </item>
    
    <item>
      <title>Hibernate OneToMany Relationships</title>
      <link>https://www.daveperrett.com/articles/2007/11/26/hibernate-onetomany-relationships/</link>
      <pubDate>Mon, 26 Nov 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/11/26/hibernate-onetomany-relationships/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s an example of a one-to-many relationship using Spring MVC and Hibernate with annotations. The &lt;em&gt;Album&lt;/em&gt; class has many &lt;em&gt;Photo&lt;/em&gt; s, and each &lt;em&gt;Photo&lt;/em&gt; belongs to an &lt;em&gt;Album&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Hibernate &#39;TYPE=storage_engine is deprecated&#39;</title>
      <link>https://www.daveperrett.com/articles/2007/11/21/hibernate-typestorage_engine-is-deprecated/</link>
      <pubDate>Wed, 21 Nov 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/11/21/hibernate-typestorage_engine-is-deprecated/</guid>
      <description>If you are getting errors similar to
WARN [main] JDBCExceptionReporter.logWarnings(49) | &amp;#39;TYPE=storage_engine is deprecated; use ENGINE=storage_engine instead&amp;#39; in hibernate, it probably means you are using MySQL5 but have your application set up for MySQL4. In your applications database settings config file ( pom.xml in my case, otherwise might be in properties.xml or something) change the hibernate.dialect setting from MySQLInnoDBDialect to MySQL5InnoDBDialect :
&amp;lt;hibernate.dialect&amp;gt;org.hibernate.dialect.MySQL5InnoDBDialect&amp;lt;/hibernate.dialect&amp;gt; </description>
    </item>
    
    <item>
      <title>Multibyte-safe CSV Parser</title>
      <link>https://www.daveperrett.com/articles/2007/08/09/multibyte-safe-csv-parser/</link>
      <pubDate>Thu, 09 Aug 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/08/09/multibyte-safe-csv-parser/</guid>
      <description>&lt;p&gt;I recently had to write a PHP CSV parser for a project, and found the built-in &lt;a href=&#34;http://jp2.php.net/manual/en/function.fgetcsv.php&#34;&gt;fgetcsv&lt;/a&gt; function fairly useless for real-world CSVs (where some fields are quoted and some aren&amp;rsquo;t for example, or where escaped delimiters or quotes are present inside the field text). This function should handle :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lines where some fields are quoted and some aren&amp;rsquo;t&lt;/li&gt;
&lt;li&gt;Lines where quoted fields have &amp;rsquo;escaped&amp;rsquo; quotes inside them&lt;/li&gt;
&lt;li&gt;Lines where non-quoted fields have &amp;rsquo;escaped&amp;rsquo; delimiters inside them&lt;/li&gt;
&lt;li&gt;Lines where the quote is &amp;rsquo;escaped&amp;rsquo; by another quote (the default behaviour for Excel CSV exports)&lt;/li&gt;
&lt;li&gt;Lines containing multi-byte strings&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>JScript Debugger for IE</title>
      <link>https://www.daveperrett.com/articles/2007/07/26/jscript-debugger-for-ie/</link>
      <pubDate>Thu, 26 Jul 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/07/26/jscript-debugger-for-ie/</guid>
      <description>&lt;p&gt;First, &lt;a href=&#34;http://www.microsoft.com/downloads/details.aspx?FamilyID=2f465be0-94fd-4569-b3c4-dffdf19ccd99&amp;amp;displaylang=en&#34;&gt;download and install the debugger&lt;/a&gt; from the &lt;a href=&#34;http://blogs.msdn.com/ie/archive/2004/10/26/247912.aspx&#34;&gt;IE Blog&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next, you need to make sure that debugging is enabled in the IE options. Go to &lt;em&gt;Tools&lt;/em&gt;-&amp;gt;&lt;em&gt;Internet Options&lt;/em&gt;-&amp;gt;&lt;em&gt;Advanced&lt;/em&gt; and make sure these options are de-selected :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Javascript Hash Class</title>
      <link>https://www.daveperrett.com/articles/2007/07/25/javascript-hash-class/</link>
      <pubDate>Wed, 25 Jul 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/07/25/javascript-hash-class/</guid>
      <description>&lt;p&gt;After recently switching from &lt;a href=&#34;http://www.prototypejs.org/&#34;&gt;prototype&lt;/a&gt; to the incredible &lt;a href=&#34;http://jquery.com/&#34;&gt;jQuery&lt;/a&gt;, I had trouble finding an altermative for prototype&amp;rsquo;s &lt;em&gt;Hash&lt;/em&gt; class. I ended up writing one based on &lt;em&gt;MojaveLinux&lt;/em&gt; &amp;rsquo;s &lt;a href=&#34;http://www.mojavelinux.com/articles/javascript_hashes.html&#34;&gt;Javascript Hash Table&lt;/a&gt; article. It implements the &lt;em&gt;length&lt;/em&gt;, &lt;em&gt;first&lt;/em&gt;, &lt;em&gt;keys&lt;/em&gt;, &lt;em&gt;invoke&lt;/em&gt;, &lt;em&gt;each&lt;/em&gt;, &lt;em&gt;remove&lt;/em&gt;, &lt;em&gt;item&lt;/em&gt;, &lt;em&gt;itemByIndex&lt;/em&gt;, &lt;em&gt;set&lt;/em&gt; and &lt;em&gt;hasKey&lt;/em&gt; functions. You&amp;rsquo;ll need some extra &lt;a href=&#34;https://www.daveperrett.com/articles/2007/07/25/useful-javascript-array-functions/&#34;&gt;array functions&lt;/a&gt; to use this class.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>OS X zsh shell config</title>
      <link>https://www.daveperrett.com/articles/2007/07/25/os-x-zsh-shell-config/</link>
      <pubDate>Wed, 25 Jul 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/07/25/os-x-zsh-shell-config/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a zsh shell configuration file for OS X, based almost entirely on a post at &lt;a href=&#34;http://friedcpu.wordpress.com/2007/07/24/zsh-the-last-shell-youll-ever-need/&#34;&gt;Fried CPU&lt;/a&gt; . All i changed was the &lt;em&gt;ls&lt;/em&gt; and &lt;em&gt;ll&lt;/em&gt; aliases because Fried&amp;rsquo;s didn&amp;rsquo;t work for me. To use it, save it in a file called &lt;em&gt;.zshrc&lt;/em&gt; in your home directory. You might also want to &lt;a href=&#34;https://www.daveperrett.com/articles/2007/07/25/set-os-x-default-shell/&#34;&gt;set zsh as your default shell&lt;/a&gt; .&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Regex to reject an extension</title>
      <link>https://www.daveperrett.com/articles/2007/07/25/regex-to-reject-an-extension/</link>
      <pubDate>Wed, 25 Jul 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/07/25/regex-to-reject-an-extension/</guid>
      <description>If you want a regular expression to match anything except a certain extension (such as .png) :
^((?!\.png$).)*$ </description>
    </item>
    
    <item>
      <title>Set OS X Default Shell</title>
      <link>https://www.daveperrett.com/articles/2007/07/25/set-os-x-default-shell/</link>
      <pubDate>Wed, 25 Jul 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/07/25/set-os-x-default-shell/</guid>
      <description>&lt;p&gt;You need to use Niutl to change your shell. In the terminal :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo niutil -createprop . /users/dave shell /bin/zsh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Alternatively, you can use the &lt;em&gt;NetInfo Manager&lt;/em&gt; utility (in the &lt;em&gt;Utilities&lt;/em&gt; folder). Select your user in the navigator, and change the value of the &lt;em&gt;shell&lt;/em&gt; property.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Useful JScript Array Functions</title>
      <link>https://www.daveperrett.com/articles/2007/07/25/useful-javascript-array-functions/</link>
      <pubDate>Wed, 25 Jul 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/07/25/useful-javascript-array-functions/</guid>
      <description>&lt;p&gt;A couple of useful array manipulation functions: &lt;em&gt;clear&lt;/em&gt;, &lt;em&gt;inArray&lt;/em&gt; and &lt;em&gt;remove&lt;/em&gt;. Courtesy of &lt;a href=&#34;http://www.ditchnet.org/wp/2005/04/04/enhance-your-javascript-arrays/&#34;&gt;Todd Ditchendorf&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Add Dreamweaver Extensions</title>
      <link>https://www.daveperrett.com/articles/2007/06/04/add-dreamweaver-extensions/</link>
      <pubDate>Mon, 04 Jun 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/06/04/add-dreamweaver-extensions/</guid>
      <description>&lt;p&gt;To colour-code a new extension ( &lt;em&gt;.ctp&lt;/em&gt; CakePHP templates for example ), edit the file &lt;em&gt;C:\Program Files\Adobe\Adobe Dreamweaver CS3\configuration\Extensions.txt&lt;/em&gt; and add the &lt;em&gt;.ctp&lt;/em&gt; extension to the first line ( &lt;em&gt;All Documents&lt;/em&gt; ) and the &lt;em&gt;PHP Files&lt;/em&gt; section :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>External Sessions in CakePHP</title>
      <link>https://www.daveperrett.com/articles/2007/06/04/external-sessions-in-cakephp/</link>
      <pubDate>Mon, 04 Jun 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/06/04/external-sessions-in-cakephp/</guid>
      <description>&lt;p&gt;If you are using CakePHP in conjunction with an existing PHP application, chances are you need to import the normal application&amp;rsquo;s session into cake.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a file called session_import.php or something similar in your cake &lt;em&gt;app/config&lt;/em&gt; directory with the following contents :&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    
    <item>
      <title>Multiple DBs in CakePHP</title>
      <link>https://www.daveperrett.com/articles/2007/06/04/multiple-dbs-in-cakephp/</link>
      <pubDate>Mon, 04 Jun 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/06/04/multiple-dbs-in-cakephp/</guid>
      <description>&lt;p&gt;&lt;em&gt;Edit&lt;/em&gt; : To avoid confusion, cake has quite a nice mechanism for defining multiple DBs already (the database.php file), and if you only want to define a finite set of DBs, this is not the way to do it. This method is only useful  if you want to have multiple DBs with the same structure (a database for each customer, for example).&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Replacing text with sed</title>
      <link>https://www.daveperrett.com/articles/2007/05/16/replacing-text-with-sed/</link>
      <pubDate>Wed, 16 May 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/05/16/replacing-text-with-sed/</guid>
      <description>To replace all occurences of string1 in a file with string2 :
$ sed -ri &amp;#34;s|string1|string2|&amp;#34; some_file.txt </description>
    </item>
    
    <item>
      <title>Cocoa drag to dock to open</title>
      <link>https://www.daveperrett.com/articles/2007/04/13/cocoa-drag-to-dock-to-open/</link>
      <pubDate>Fri, 13 Apr 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/04/13/cocoa-drag-to-dock-to-open/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Go to Project-&amp;gt;Edit Active Target-&amp;gt;Properties (Tab) and enter the filetypes that you want your dock icon to respond to :&lt;/li&gt;
&lt;/ol&gt;</description>
    </item>
    
    <item>
      <title>Quit cocoa app on window close</title>
      <link>https://www.daveperrett.com/articles/2007/04/13/quit-cocoa-app-on-window-close/</link>
      <pubDate>Fri, 13 Apr 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/04/13/quit-cocoa-app-on-window-close/</guid>
      <description>Add this method to your NSWindowController :
-(BOOL) applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication { return YES; } </description>
    </item>
    
    <item>
      <title>Cocoa NSTextView setHidden</title>
      <link>https://www.daveperrett.com/articles/2007/04/05/cocoa-nstextview-sethidden/</link>
      <pubDate>Thu, 05 Apr 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/04/05/cocoa-nstextview-sethidden/</guid>
      <description>If you&amp;rsquo;re trying to hide an NSTextView without success, be aware that setHidden only hides the NSTextView itself - it doesn&amp;rsquo;t hide the enclosing NSScrollView. Instead of doing this :
[myTextView setHidden:YES]; you need to do :
[[myTextView enclosingScrollView] setHidden:YES]; </description>
    </item>
    
    <item>
      <title>Format XML with PHP</title>
      <link>https://www.daveperrett.com/articles/2007/04/05/format-xml-with-php/</link>
      <pubDate>Thu, 05 Apr 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/04/05/format-xml-with-php/</guid>
      <description>&lt;p&gt;Courtesy of &lt;a href=&#34;http://forums.devnetwork.net/viewtopic.php?p=213989&#34;&gt;TJ at devnet&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Compile LibTorrent on OSX</title>
      <link>https://www.daveperrett.com/articles/2007/04/02/compile-libtorrent-on-osx/</link>
      <pubDate>Mon, 02 Apr 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/04/02/compile-libtorrent-on-osx/</guid>
      <description>&lt;p&gt;Before you do anything, install &lt;a href=&#34;http://darwinports.com/&#34;&gt;darwinports&lt;/a&gt; , and then use it to  install &lt;a href=&#34;http://www.boost.org/&#34;&gt;boost&lt;/a&gt; :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Installing MySql/PDO for PHP</title>
      <link>https://www.daveperrett.com/articles/2007/04/02/installing-mysqlpdo-for-php/</link>
      <pubDate>Mon, 02 Apr 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/04/02/installing-mysqlpdo-for-php/</guid>
      <description>&lt;p&gt;I was getting something like this trying to run an application built on the &lt;a href=&#34;http://framework.zend.com/&#34;&gt;Zend Framework&lt;/a&gt; :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Change the SSH login message</title>
      <link>https://www.daveperrett.com/articles/2007/03/27/change-the-ssh-login-message/</link>
      <pubDate>Tue, 27 Mar 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/03/27/change-the-ssh-login-message/</guid>
      <description>&lt;p&gt;To change the message displayed &lt;em&gt;before&lt;/em&gt; login, edit /etc/ssh/sshd_config :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ sudo vi /etc/ssh/sshd_config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and add (or uncomment) the line&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Banner /etc/banner
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Stop cron emails</title>
      <link>https://www.daveperrett.com/articles/2007/03/22/stop-cron-emails/</link>
      <pubDate>Thu, 22 Mar 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/03/22/stop-cron-emails/</guid>
      <description>Dreamhost sends you an email by default every time you run a cron job. To turn this off, run
$ crontab -e and add this line to the top of your cron file:
MAILTO=&amp;#34;&amp;#34; </description>
    </item>
    
    <item>
      <title>Vi as default crontab editor</title>
      <link>https://www.daveperrett.com/articles/2007/03/22/vi-as-default-crontab-editor/</link>
      <pubDate>Thu, 22 Mar 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/03/22/vi-as-default-crontab-editor/</guid>
      <description>Dreamhost sets your default editor to pico. To change it to Vi, add the following line to the .bashrc file in your home directory :
export VISUAL=&amp;#34;vi&amp;#34; </description>
    </item>
    
    <item>
      <title>Configure Ubuntu w/ Static IP</title>
      <link>https://www.daveperrett.com/articles/2007/03/08/configure-ubuntu-w-static-ip/</link>
      <pubDate>Thu, 08 Mar 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/03/08/configure-ubuntu-w-static-ip/</guid>
      <description>&lt;p&gt;Ubuntu Enterprise 6 seems to install as DHCP out-of-the-box. To change to a static ip, open the file &lt;em&gt;/etc/network/interfaces&lt;/em&gt;. It should contain some lines like :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;auto eth0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iface eth0 inet dhcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Change this to something like :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Install Ubuntu SSH server</title>
      <link>https://www.daveperrett.com/articles/2007/03/08/install-ubuntu-ssh-server/</link>
      <pubDate>Thu, 08 Mar 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/03/08/install-ubuntu-ssh-server/</guid>
      <description>Ubuntu Enterprise 6 doesn&amp;rsquo;t seem to install sshd out-of-the-box. To install :
$ sudo apt-get install openssh-server </description>
    </item>
    
    <item>
      <title>Installing Trac</title>
      <link>https://www.daveperrett.com/articles/2007/02/19/installing-trac/</link>
      <pubDate>Mon, 19 Feb 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/02/19/installing-trac/</guid>
      <description>&lt;p&gt;Before you do anything, &lt;a href=&#34;https://www.daveperrett.com/articles/2007/02/18/svn-server-w-apache/&#34;&gt;Install Subversion&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;Install Python :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Svn server w/ Apache</title>
      <link>https://www.daveperrett.com/articles/2007/02/18/svn-server-w-apache/</link>
      <pubDate>Sun, 18 Feb 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/02/18/svn-server-w-apache/</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Make sure you have a newish version of libtool&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ wget http://ftp.gnu.org/gnu/libtool/libtool-1.5.22.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ tar xvzf libtool-1.5.22.tar.gz
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ cd libtool-1.5.22
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ ./configure
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ make
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    
    <item>
      <title>Cake actions from the terminal</title>
      <link>https://www.daveperrett.com/articles/2007/02/07/cake-actions-from-the-terminal/</link>
      <pubDate>Wed, 07 Feb 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/02/07/cake-actions-from-the-terminal/</guid>
      <description>&lt;p&gt;Edit &lt;em&gt;app/webroot/index.php&lt;/em&gt;  and change the lines that read like :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;isset&lt;/span&gt;($_GET[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;url&amp;#39;&lt;/span&gt;]) &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; $_GET[&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;url&amp;#39;&lt;/span&gt;] &lt;span style=&#34;color:#f92672&#34;&gt;===&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;favicon.ico&amp;#39;&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;} &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $Dispatcher&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Dispatcher&lt;/span&gt;();
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    $Dispatcher&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;dispatch&lt;/span&gt;($url);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;to something like :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Find large folders</title>
      <link>https://www.daveperrett.com/articles/2007/02/06/find-large-folders/</link>
      <pubDate>Tue, 06 Feb 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/02/06/find-large-folders/</guid>
      <description>To find the 10 largest folders in the home directory :
du -k /home/ | sort -n | tail -10 </description>
    </item>
    
    <item>
      <title>Delete files by extension</title>
      <link>https://www.daveperrett.com/articles/2007/01/02/delete-files-by-extension/</link>
      <pubDate>Tue, 02 Jan 2007 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2007/01/02/delete-files-by-extension/</guid>
      <description>To recursively delete all files with a given extension (eg all .pyc files in a django application), use :
find . -name &amp;#34;*.pyc&amp;#34; -exec rm &amp;#39;{}&amp;#39; &amp;#39;;&amp;#39; Change the &amp;ldquo;*.pyc&amp;rdquo; part to delete different file types.</description>
    </item>
    
    <item>
      <title>Splitting up Django models</title>
      <link>https://www.daveperrett.com/articles/2006/12/31/splitting-up-django-models/</link>
      <pubDate>Sun, 31 Dec 2006 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2006/12/31/splitting-up-django-models/</guid>
      <description>Create a models folder under myApp. Delete models.py and add a model_name.py file in the models folder for each model model_name. Add the following to each model file : class Meta: app_label = &amp;#39;myApp&amp;#39; Add a line in models/init.py for each model file : from myModelFile import myModel More information at djangoproject.com</description>
    </item>
    
    <item>
      <title>Shell coloring for iTerm</title>
      <link>https://www.daveperrett.com/articles/2006/10/04/shell-coloring-for-iterm/</link>
      <pubDate>Wed, 04 Oct 2006 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2006/10/04/shell-coloring-for-iterm/</guid>
      <description>Create a .bash_profile file in your home directory containing the following :
. ~/.bashrc ENV=$HOME/.bashrc export ENV export TERM=xterm-color alias ls=&amp;#39;ls -G&amp;#39; alias ll=&amp;#39;ls -hl&amp;#39; </description>
    </item>
    
    <item>
      <title>Recover Corrupted Svn DB</title>
      <link>https://www.daveperrett.com/articles/2006/09/28/recover-corrupted-svn-db/</link>
      <pubDate>Thu, 28 Sep 2006 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2006/09/28/recover-corrupted-svn-db/</guid>
      <description>To recover your repository if you&amp;rsquo;re getting Corrupted error messages :
$ sudo svnadmin recover /home/svn/repository/your_repository_name </description>
    </item>
    
    <item>
      <title>Flash Lite &#39;Out Of Memory&#39;</title>
      <link>https://www.daveperrett.com/articles/2006/09/27/flash-lite-out-of-memory/</link>
      <pubDate>Wed, 27 Sep 2006 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2006/09/27/flash-lite-out-of-memory/</guid>
      <description>Assuming you are using the Generic Phone, edit the following file :
C:\Program Files\Macromedia\Flash 8\en\Configuration\Mobile\Devices\Generic_Phone.xml and change the line
&amp;lt;device id=&amp;#34;8502&amp;#34; width=&amp;#34;176&amp;#34; height=&amp;#34;208&amp;#34; heap=&amp;#34;1024&amp;#34;&amp;gt; to
&amp;lt;device id=&amp;#34;8502&amp;#34; width=&amp;#34;176&amp;#34; height=&amp;#34;208&amp;#34; heap=&amp;#34;2048&amp;#34;&amp;gt; Increase the heap value as necessary.</description>
    </item>
    
    <item>
      <title>Get SVN Revision No.</title>
      <link>https://www.daveperrett.com/articles/2006/09/27/get-svn-revision-no/</link>
      <pubDate>Wed, 27 Sep 2006 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2006/09/27/get-svn-revision-no/</guid>
      <description>Simple one-liner for getting the svn revision number - useful for shell scripts :
svn log --revision &amp;#34;HEAD&amp;#34; | head -2 | tail -1 | awk &amp;#39;{print $1}&amp;#39; | cut -c 2- </description>
    </item>
    
    <item>
      <title>Installing Subversion</title>
      <link>https://www.daveperrett.com/articles/2006/09/27/installing-subversion/</link>
      <pubDate>Wed, 27 Sep 2006 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2006/09/27/installing-subversion/</guid>
      <description>&lt;p&gt;&lt;em&gt;Update&lt;/em&gt;
There is a better walk-through for installing subversion with apache &lt;a href=&#34;https://www.daveperrett.com/articles/2007/02/18/svn-server-w-apache/&#34;&gt;here&lt;/a&gt; .&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Useful .bashrc Functions</title>
      <link>https://www.daveperrett.com/articles/2006/09/27/useful-bashrc-functions/</link>
      <pubDate>Wed, 27 Sep 2006 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2006/09/27/useful-bashrc-functions/</guid>
      <description>&lt;p&gt;A couple of useful functions for .bashrc :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Turn On Vi Syntax Coloring</title>
      <link>https://www.daveperrett.com/articles/2006/09/26/turn-on-vi-syntax-coloring/</link>
      <pubDate>Tue, 26 Sep 2006 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2006/09/26/turn-on-vi-syntax-coloring/</guid>
      <description>&lt;p&gt;Firstly, check that the vim-enhanced package is installed :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rpm -qa | grep vim
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You should see something like :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Rails NameError</title>
      <link>https://www.daveperrett.com/articles/2006/08/20/rails-nameerror/</link>
      <pubDate>Sun, 20 Aug 2006 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2006/08/20/rails-nameerror/</guid>
      <description>&lt;p&gt;If you&amp;rsquo;re getting &lt;em&gt;NameError (uninitialized constant UnknownAction)&lt;/em&gt; using &lt;em&gt;UnknownAction&lt;/em&gt; in the &amp;lsquo;rescue_action_in_public&amp;rsquo; method, try
to use the full reference (&lt;em&gt;::ActionController::UnknownAction&lt;/em&gt;) instead of &lt;em&gt;ActionController::UnknownAction&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;For example :&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Useful Vi Commands</title>
      <link>https://www.daveperrett.com/articles/2006/08/18/useful-vi-commands/</link>
      <pubDate>Fri, 18 Aug 2006 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2006/08/18/useful-vi-commands/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Stop SSH and SFTP timeout</title>
      <link>https://www.daveperrett.com/articles/2006/08/17/stop-ssh-and-sftp-timeout/</link>
      <pubDate>Thu, 17 Aug 2006 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2006/08/17/stop-ssh-and-sftp-timeout/</guid>
      <description>Just add the following line to @/etc/ssh_config@ (on the machine you&amp;rsquo;re SSHing from) :
ServerAliveInterval 60 Next time you SSH of SFTP you&amp;rsquo;ll be sending &amp;lsquo;keepalive&amp;rsquo; packets every 60 seconds. No more Connection reset by peer! If you have root access on the remote server, you can also set
ClientAliveInterval 60 in @/etc/sshd_config@ to achieve the same effect.</description>
    </item>
    
    <item>
      <title>Opening a port on linux</title>
      <link>https://www.daveperrett.com/articles/2006/08/16/opening-a-port-on-linux/</link>
      <pubDate>Wed, 16 Aug 2006 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2006/08/16/opening-a-port-on-linux/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Check if the port is being used or not (testing port 3000 in this example):&lt;code&gt; bash$ netstat -na | grep 3000&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If the port is in use, then most likely it will be the software firewall blocking you. You can check by running:&lt;code&gt; bash$ sudo /sbin/iptables -L&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Check for the port. If it isn&amp;rsquo;t listed, you will need to add it:&lt;code&gt; bash$ sudo vi /etc/sysconfig/iptables&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Copy one of the other lines that is allowing a connection to (&amp;ndash;dport) a port, and edit to allow access to your new port.&lt;/li&gt;
&lt;li&gt;Save the file&lt;/li&gt;
&lt;li&gt;Restart iptables:&lt;code&gt; bash$ sudo /sbin/service iptables restart&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    
    <item>
      <title>Subversion Commands</title>
      <link>https://www.daveperrett.com/articles/2006/08/15/subversion-commands/</link>
      <pubDate>Tue, 15 Aug 2006 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/articles/2006/08/15/subversion-commands/</guid>
      <description></description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.daveperrett.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/about/</guid>
      <description>I&amp;rsquo;m a Ruby engineer with an interest in scaling large systems, and a sideline in interface design and music composition.
I&amp;rsquo;ve spent the better part of two decades working in Japan, holding lead architect positions at several multi-nationals. These days I occasionally swap the bright lights of Tokyo for New Zealand&amp;rsquo;s picturesque South Island while working on Shuttlerock.
I believe that the best software is simple, subtle and understated. I think that knowing when to cut features is just as important as knowing when to add them.</description>
    </item>
    
    <item>
      <title></title>
      <link>https://www.daveperrett.com/projects/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <author>hello@daveperrett.com (Dave Perrett)</author>
      <guid>https://www.daveperrett.com/projects/</guid>
      <description>Open-source projects .ts string.is string.is is an opinionated, web-based, privacy-friendly conversion tool for developers. img exif-orientation-examples A collection of sample images useful for testing and debugging EXIF orientation issues. See this post for more information. .rb pivotal-to-trello pivotal-to-trello is a command-line tool for importing a Pivotal Tracker project into Trello . .rb Jekyll Plugins A collection of Jekyll plugins and generators that I&#39;ve written for use on this site. Currently there are generators for creating sitemaps, category pages and project pages, with more to come.</description>
    </item>
    
  </channel>
</rss>
