<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>PABCAS, Thoughts, links, pictures on music, food, wine, film, tech etc.</title>
  <id>tag:www.pabcas.com,2009:feelings/</id>
  <generator version="1" uri="http://github.com/paulca/feelings">Feelings</generator>
  <link href="http://www.pabcas.com/feed/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://www.pabcas.com/" rel="alternate" type="text/html"/>
  <updated>2009-11-06T08:53:31Z</updated>
  
    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:85</id>
      <published>2009-11-06T08:53:31Z</published>
      <updated>2009-11-06T08:53:31Z</updated>
      <link href="http://www.pabcas.com/feeling/building-a-better-web" rel="alternate" type="text/html"/>
      <title>Building a Better Web</title>
      <content type="html">
        <p>I got back from <a href="http://www.buildconference.com">Build</a> on a high that I've not felt since ... gee, since I started going to these tech event things.</p>

<p>It was a pleasure to be at a conference so chock full of fantastic speakers. <a href="http://meyerweb.com/">Meyer</a>, <a href="http://www.wilsonminer.com/">Miner</a>, <a href="http://thebignoob.com/soldiers/ryan/">Sims</a>, <a href="http://www.andybudd.com/">Budd</a>, <a href="http://www.markboulton.co.uk/">Boulton</a> and <a href="http://timvandamme.com/">Van Damme</a> — these guys are a good cross section of the kind of guys leading the web today.</p>

<p>Not only that, but I was so proud that the event was hosted by <a href="http://goodonpaper.org/">Andy McMillan</a>. Andy's work to raise the profile of himself and his peers in Ireland is relentless and admirable. Build 2010 is already announced, but I'm hoping his eye will turn to the international scene, because it's obvious that he has what it takes. It's all the more pleasing that Andy's not a social media witch doctor nor is he an SEO magnate, nor does he list his number one skill as "connecting like-minded people".</p>

<p>Andy's a down to earth, honest to goodness, passionate web designer. And it shows. Build is probably the most relevant web conference ever held in Ireland. Others, take note.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:84</id>
      <published>2009-11-04T14:21:57Z</published>
      <updated>2009-11-04T14:21:57Z</updated>
      <link href="http://www.pabcas.com/feeling/push-the-limits" rel="alternate" type="text/html"/>
      <title>Push the Limits</title>
      <content type="html">
        <p>I just had an awesome latté. I don't think it was too different from other lattés I've had. It's a rotten day in Dublin, so that might have added to it, but I think the real reason is this:</p>

<p>I've been drinking a lot of black coffee lately. I've found that black coffee is quite difficult to drink. Like any fine food or drink though, the more you drink, the more you appreciate it.</p>

<p>I enjoyed the latté more because I've been pushing my palate with stronger, ultimately more rewarding, but harder to drink stuff. I remember when I didn't enjoy lattés but kept drinking them until I did.</p>

<p>I've found that this is a common theme. Something that's tough at the beginning gets easier, and it's really easy to appreciate how far you've come by doing the things you used to find hard. It's important to keep pushing the limits.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:83</id>
      <published>2009-11-03T10:07:57Z</published>
      <updated>2009-11-03T10:07:57Z</updated>
      <link href="http://www.pabcas.com/feeling/pacing-yourself" rel="alternate" type="text/html"/>
      <title>Pacing Yourself</title>
      <content type="html">
        <p>I decided to sign up for the <a href="http://www.rubyconf5k.com/">RubyConf 5k</a> as I'll be there in November and I wanted a way to motivate myself to run more.</p>

<p>I told a friend yesterday that I was doing it, and I mentioned to him that early on I was having difficulty running long distances, because I'd get really tired out after just a few minutes. But then one day I started out real slow, increasing the pace bit by bit and now I find that I can go on much longer without stopping.</p>

<p>"Paul", he said, "It's called 'Pacing Yourself'"</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:82</id>
      <published>2009-09-29T10:57:25Z</published>
      <updated>2009-09-29T10:57:25Z</updated>
      <link href="http://www.pabcas.com/feeling/checking-blank-form-inputs-with-jquery" rel="alternate" type="text/html"/>
      <title>Checking blank form inputs with jQuery</title>
      <content type="html">
        <p>I've been checking lots of form fields for a blank value (eg. they contain nothing, or just whitespace) lately, and I wanted to emulate Rails' String#blank? to check this in jQuery.</p>

<p>I had been doing something like this:</p>

<p><blockquote><code><pre>if($.trim($(this).val()) == '') ... </pre></code></blockquote></p>

<p>But that's so ugly I felt there must be a better way. Of course, there is:</p>

<p><blockquote><code><pre>if($(this).is(':blank')) ...</pre></code></blockquote></p>

<p>Simple, clear, and jQuery-ish.</p>

<p><strong>Update</strong> This technique, while awesome, isn't bundled with jQuery and requires the <a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">jQuery validation plugin</a> (<a href="http://docs.jquery.com/Plugins/Validation">docs</a>).
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:81</id>
      <published>2009-09-29T08:08:50Z</published>
      <updated>2009-09-29T08:08:50Z</updated>
      <link href="http://www.pabcas.com/feeling/merlin-mann-on-adobe-needing-to-sit-up-and-shape-up" rel="alternate" type="text/html"/>
      <title>Merlin Mann on Adobe Needing to Sit Up and Shape Up</title>
      <content type="html">
        <p><blockquote>It installed dozens of crufty extensions, looked just awful, and ran with the pluck and elegance of an incontinent grizzly bear with the gout.</blockquote></p>

<p>Great piece using Adobe's growing path into unreliable bloatware, and the elegance of small apps that do one or a few things really well.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:80</id>
      <published>2009-09-22T17:00:42Z</published>
      <updated>2009-09-22T17:00:42Z</updated>
      <link href="http://www.pabcas.com/feeling/obie-s-reasons-why-pair-programming-won-t-work-n-conventional-companies" rel="alternate" type="text/html"/>
      <title>Obie's Reasons Why Pair Programming Won't Work n Conventional Companies</title>
      <content type="html">
        <p><blockquote>most software managers are under-staffed (see below), overworked and/or under-qualified. They would rather let the group deal with Asshole Architect, Mr. Stinky or Jimmy the office jerk than to go around provoking difficult conversations and making more work themselves</blockquote></p>

<p>Say what you like about Obie Fernandez, he knows the industry inside out. Entertaining and insightful.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:79</id>
      <published>2009-09-15T17:38:53Z</published>
      <updated>2009-09-15T17:38:53Z</updated>
      <link href="http://www.pabcas.com/feeling/like-crying-by-danny-kirwan-early-fleetwood-mac" rel="alternate" type="text/html"/>
      <title>Like Crying (by Danny Kirwan, early Fleetwood Mac)</title>
      <content type="html">
        <p>Danny Kirwan didn't last much longer in Fleetwood Mac, but I think this song will be with me for a long time</p>

<p></p>

<p>Watch, and shiver</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:78</id>
      <published>2009-09-04T20:18:43Z</published>
      <updated>2009-09-04T20:18:43Z</updated>
      <link href="http://www.pabcas.com/feeling/1252095523" rel="alternate" type="text/html"/>
      <title>I love this</title>
      <content type="html">
        <p>ActiveRecord string interpolation. Nom.</p>

<p>Post.all(:conditions => ['date &lt;= :today', {:today => Date.today}])</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:77</id>
      <published>2009-08-30T20:01:06Z</published>
      <updated>2009-08-30T20:01:06Z</updated>
      <link href="http://www.pabcas.com/feeling/the-hdad-pattern-for-organising-controllers-in-rails" rel="alternate" type="text/html"/>
      <title>The HDAD Pattern for organising controllers in Rails</title>
      <content type="html">
        <p>I've been following a really simple pattern for organising controllers in Rails lately and it's helped me to simplify my controllers and write code that's nice and specific to certain contexts. I refer to it as the "Home / Dashboard / Admin Dashboard" pattern.</p>

<p>The pattern basically follows from the question "Who's looking at this controller?" ... and typically there will be three main users: anonymous users, logged in users and admin users. Given that their concerns when using an app and the various resources in that app will all be different, the trick is to create three namespaces.</p>

<p>Basically, the first page that an anonymous user will see, and subsequently the map.root, will be a singleton resource "home" ... mapped to home_controller. Next, when a user logs in, they get their own area, within their own namespace, something like "my" and they get their logged in singleton resource "dashboard" ... mapped to dashboard_controller. Finally, an admin user will have the option to log in to an "/admin" area and their own dashboard.</p>

<p>Following this, I now have logical namespaces to put any further controllers. If, for example, I have a model named "Post", I put a posts_controller in each of the namespaces, "/", "/my" and "/admin". This leaves me with three distinct areas that have their own permissions, context and views. I find it a really neat way to keep my controllers lean within particular context. It also helps me to only write code specific to those contexts in views.</p>

<p>Here's the routes file that would make this happen:</p>

<blockquote><pre>ActionController::Routing::Routes.draw do |map|
  
  map.root :controller => "home", :action => "show"

  map.resources :posts
  
  # Logged in user routes
  map.namespace :my do |my|
    my.dashboard :controller => "dashboard", :action => "show"
    my.root :controller => "dashboard", :action => "show"
  end
  
  # Admin Routes
  map.namespace :admin do |admin|
    admin.dashboard :controller => "dashboard", :action => "show
    admin.root :controller => "dashboard", :action => "show"
    admin.resources :posts
  end
end</pre></blockquote>

<p>With the pattern, each of the posts_controllers only need to have actions and code specific to each context: eg. the anonymous one need only have index and show code, because anonymous users will never be updating posts.</p>

<p>On the flipside, the admin version can have full permissions, and the logged in user can have granular access control. Cool, clean separation of intent in each context.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:76</id>
      <published>2009-08-05T12:32:34Z</published>
      <updated>2009-08-05T12:32:34Z</updated>
      <link href="http://www.pabcas.com/feeling/passing-controller-arguments-to-to-xml-coming-in-rails-3" rel="alternate" type="text/html"/>
      <title>Passing controller arguments to to_xml - coming in Rails 3!</title>
      <content type="html">
        <p>What if, in Rails, when building an XML API you wanted to output something like this:</p>

<blockquote><code><pre>&lt;posts&gt;
  &lt;post&gt;
    &lt;id&gt;1&lt;/id&gt;
    &lt;url&gt;http://www.pabcas.com/posts/1&lt;/url&gt;
  &lt;/post&gt;
&lt;/posts&gt;</pre></code></blockquote>

<p>As of Rails 2.3, there's not really a neat way to do this, using ActiveRecord's to_xml serialization. I needed this functionality today and stumbled across a patch that's been accepted for Rails 3. It will allow something like:</p>

<blockquote><code><pre>wants.xml { render :xml => @posts.to_xml(:procs => [Proc.new {|options,post| post_url(post) }]) }
</pre></code></blockquote>

<p>Delicious! Bring on Rails 3!</p>

<p><a href="https://rails.lighthouseapp.com/projects/8994/tickets/2373-record-sensitive-procs-for-to_xml">Check out the Lighthouse ticket</a> and <a href="http://github.com/rails/rails/commit/c39151a84768397d3bb025c6e8f877eac59ebbf9">the patch</a>.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:75</id>
      <published>2009-08-02T12:53:46Z</published>
      <updated>2009-08-02T12:53:46Z</updated>
      <link href="http://www.pabcas.com/feeling/1249217626" rel="alternate" type="text/html"/>
      <title>I can't get enough of this</title>
      <content type="html">
        We cannot be useful to ourselves unless we are also useful to others. Whether we like it or not, we are all connected, and it is unthinkable to be happy all by oneself. Anyone who is only concerned by his own well-being will suffer eventually. Anyone who is only concerned with the well-being of others takes care of himself without even thinking about it. Even if we decide to remain selfish, let us be intelligently selfish – let us help others!
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:74</id>
      <published>2009-07-26T21:52:33Z</published>
      <updated>2009-07-26T21:52:33Z</updated>
      <link href="http://www.pabcas.com/feeling/a-group-of-hairy-hippies-most-of-whom-look-like-robinson-crusoe-at-day-405-on-treasure-island" rel="alternate" type="text/html"/>
      <title>"a group of hairy hippies, most of whom look like Robinson Crusoe at Day 405 on Treasure Island"</title>
      <content type="html">
        <p>Great piece from the Times in 2005 reflecting on Disney's purchase of the rights to Henson's Muppets. I've been watching the show lately and am completely enamoured. I love the hidden imagery of what you don't see: the muppeteers themselves:</p>

<blockquote>Of course, the possibility of a culture clash between Disney and the Muppets always seemed quite obvious. Until recently, let us not forget, Disney would not employ anyone with a beard at its theme-parks. One look at any picture of Jim Henson and the 1970s creative nebulous of The Muppet Show, on the other hand, reveals a group of hairy hippies, most of whom look like Robinson Crusoe at Day 405 on Treasure Island</blockquote>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:73</id>
      <published>2009-07-16T07:57:39Z</published>
      <updated>2009-07-16T07:57:39Z</updated>
      <link href="http://www.pabcas.com/feeling/dustin-curtis" rel="alternate" type="text/html"/>
      <title>Dustin Curtis</title>
      <content type="html">
        <p>Jaw droppingly beautiful "blogazine" with magazine like typesetting and compelling content.</p>

<p>You should follow me on twitter <a href="http://www.twitter.com/paulca">here</a> and check out Dustin's site <a href="http://www.dustincurtis.com/">here</a>.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:72</id>
      <published>2009-07-09T12:14:07Z</published>
      <updated>2009-07-09T12:14:07Z</updated>
      <link href="http://www.pabcas.com/feeling/1247141647" rel="alternate" type="text/html"/>
      <title>I often ponder this this</title>
      <content type="html">
        Attitude is more important than the past, than education, than money, than circumstances, than what people do or say. It is more important than appearance, giftedness, or skill.
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:71</id>
      <published>2009-07-06T08:15:07Z</published>
      <updated>2009-07-06T08:15:07Z</updated>
      <link href="http://www.pabcas.com/feeling/charles-aznavour-performing-inchworm-on-the-muppet-show" rel="alternate" type="text/html"/>
      <title>Charles Aznavour performing "Inchworm" on the Muppet Show</title>
      <content type="html">
        <p>I've been watching "The Muppet Show" season one lately, and found it to be a stellar education in show business. I've only known about two of the first nine stars, but upon Googling, they certainly are mega-stars.</p>

<p>I was particularly taken by Charles Aznavour's <a href="http://www.youtube.com/watch?v=xZivb3zjlo0#t=2m26s">performance of Inchworm</a>, from the Hans Christian Andersson movie. Moving stuff.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:70</id>
      <published>2009-06-29T08:21:33Z</published>
      <updated>2009-06-29T08:21:33Z</updated>
      <link href="http://www.pabcas.com/feeling/the-kinks-tired-of-waiting" rel="alternate" type="text/html"/>
      <title>The Kinks — Tired of Waiting</title>
      <content type="html">
        
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:69</id>
      <published>2009-06-25T14:19:18Z</published>
      <updated>2009-06-25T14:19:18Z</updated>
      <link href="http://www.pabcas.com/feeling/o2-ireland-and-iphone-upgrades-before-an-upgrade-is-due" rel="alternate" type="text/html"/>
      <title>O2 Ireland and iPhone upgrades before an upgrade is due</title>
      <content type="html">
        <p>Strict rules around phone upgrades have never really bothered me in the past, as I'm usually due an upgrade around the time I go looking for a new phone.</p>

<p>Not so with the iPhone on O2 Ireland. I started a thread on their "discussion" forum and after initially being shot down by "support" staff, <a href="http://forums.o2online.ie/forums/showthread.php?t=4405">the thread</a> got some good replies, particularly in relation to just how many operational "rules" a customer must "break" just to get an iPhone at all.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:68</id>
      <published>2009-06-22T12:32:46Z</published>
      <updated>2009-06-22T12:32:46Z</updated>
      <link href="http://www.pabcas.com/feeling/1245673966" rel="alternate" type="text/html"/>
      <title>I think Leo has the right idea about this</title>
      <content type="html">
        Everyone thinks of changing the world, but no one thinks of changing himself/herself.
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:67</id>
      <published>2009-06-06T20:21:07Z</published>
      <updated>2009-06-06T20:21:07Z</updated>
      <link href="http://www.pabcas.com/feeling/rails-plugin-accepting-http-or-not-on-a-url-field" rel="alternate" type="text/html"/>
      <title>Rails plugin: Accepting "http://" or not on a URL field</title>
      <content type="html">
        <p>Sometimes, you have a field on an ActiveRecord Rails model that stores a URL. The user might enter "http://" or they might not. I had this problem, solved it for one model, then needed it for another one. It's plugin baby time!</p>

<p>So I made the world's simplest <a href="http://github.com/paulca/url_field">URL field</a> plugin</p>

<p>Just throw the "url_field" into your class:</p>

<pre><code>
class Company
  url_field :website
end

@company = Company.new
@company.website = "www.example.com"
@company.save
@company.website #=> "http://www.example.com"
</code></pre>

<p>Available now, free <a href="http://github.com/paulca/url_field">on Github</a></p>

<p>Update: <a href="http://www.destraynor.com">Des</a> and <a href="http://www.tripleodeon.com/">James</a> were quick to point out that my initial release would incorrectly add "http://" to "https://" URLs. Quick patch!</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:66</id>
      <published>2009-06-03T09:01:15Z</published>
      <updated>2009-06-03T09:01:34Z</updated>
      <link href="http://www.pabcas.com/feeling/flaming-lips-do-you-realize" rel="alternate" type="text/html"/>
      <title>Flaming Lips — Do you Realize??</title>
      <content type="html">
        <p> Do You Realize - that you have the most beautiful face
Do You Realize - we're floating in space -
Do You Realize - that happiness makes you cry
Do You Realize - that everyone you know someday will die</p>

<p>And instead of saying all of your goodbyes - let them know
You realize that life goes fast
It's hard to make the good things last
You realize the sun doesn't go down
It's just an illusion caused by the world spinning round</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:65</id>
      <published>2009-05-26T10:48:22Z</published>
      <updated>2009-05-26T10:48:22Z</updated>
      <link href="http://www.pabcas.com/feeling/1243334902" rel="alternate" type="text/html"/>
      <title>I shiver at this</title>
      <content type="html">
        Most people are other people. Their thoughts are someone else's opinions, their lives a mimicry, their passions a quotation.
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:64</id>
      <published>2009-05-19T21:35:59Z</published>
      <updated>2009-07-09T12:12:23Z</updated>
      <link href="http://www.pabcas.com/feeling/there-s-no-such-thing-as-stuff-you-should-know-only-stuff-you-know-and-stuff-you-don-t" rel="alternate" type="text/html"/>
      <title>There's no such thing as "stuff you should know" - only "stuff you know" and "stuff you don't"</title>
      <content type="html">
        <p>I met an interesting guy in San Francisco last week who shared some of his experiences trying to get a job in tech there. When he described the people in San Francisco and their attitude, he bowled me over with this line:</p>

<p>"People here don't expect you to know everything. There's no such thing as "stuff you should know" ... just "stuff you know" and "stuff you don't"</p>

<p>It's such an accepting attitude, and one of the wisest things I've heard in a while. I'm often blown away by how people haven't heard of this thing or that thing that I've known for a long time. Equally, I appreciate how much I can learn from others.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:62</id>
      <published>2009-05-19T21:31:31Z</published>
      <updated>2009-05-19T21:31:31Z</updated>
      <link href="http://www.pabcas.com/feeling/virtues-of-good-ceos" rel="alternate" type="text/html"/>
      <title>Virtues of good CEOs</title>
      <content type="html">
        <p>"In 2001, Jim Collins published a best-selling study called “Good to Great.” He found that the best C.E.O.’s were not the flamboyant visionaries. They were humble, self-effacing, diligent and resolute souls who found one thing they were really good at and did it over and over again."</p>

<p>Find one thing you're good at and do it over and over again. The one true path to success?</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:60</id>
      <published>2009-05-11T16:52:02Z</published>
      <updated>2009-05-11T16:52:02Z</updated>
      <link href="http://www.pabcas.com/feeling/1242060722" rel="alternate" type="text/html"/>
      <title>I believe this</title>
      <content type="html">
        Beware of the barrenness of a busy life.
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:59</id>
      <published>2009-04-29T19:18:17Z</published>
      <updated>2009-04-29T19:18:17Z</updated>
      <link href="http://www.pabcas.com/feeling/1241032697" rel="alternate" type="text/html"/>
      <title>I pondered this</title>
      <content type="html">
        Life is an experience of ripening. The green fruit has but small resemblance to that which is matured.
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:58</id>
      <published>2009-04-27T07:25:11Z</published>
      <updated>2009-04-27T07:25:11Z</updated>
      <link href="http://www.pabcas.com/feeling/1240817111" rel="alternate" type="text/html"/>
      <title>I 'm free to post this</title>
      <content type="html">
        "Freedom is the right to be wrong, not the right to do wrong."
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:57</id>
      <published>2009-04-22T21:23:49Z</published>
      <updated>2009-04-22T21:23:49Z</updated>
      <link href="http://www.pabcas.com/feeling/pet-sounds-a-capella" rel="alternate" type="text/html"/>
      <title>Pet Sounds — A Capella</title>
      <content type="html">
        <p>Pet Sounds with all the orchestration removed. Just the vocals. Shows just how good the songs were before Brian Wilson got into the producer's seat.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:56</id>
      <published>2009-04-22T11:35:36Z</published>
      <updated>2009-04-22T11:35:36Z</updated>
      <link href="http://www.pabcas.com/feeling/why-programmers-suck-at-css-design" rel="alternate" type="text/html"/>
      <title>Why Programmers Suck at CSS Design</title>
      <content type="html">
        <p>Long, interesting and useful piece chock full of tips to help developers make their work a bit more palatable to humans</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:55</id>
      <published>2009-04-20T17:05:27Z</published>
      <updated>2009-04-20T17:05:27Z</updated>
      <link href="http://www.pabcas.com/feeling/1240247127" rel="alternate" type="text/html"/>
      <title>I took a deep breath, then read this</title>
      <content type="html">
        <p>There was never yet an uninteresting life. Such a thing is an impossibility. Inside of the dullest exterior there is a drama, a comedy, and a tragedy.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:54</id>
      <published>2009-04-20T09:27:10Z</published>
      <updated>2009-04-20T09:27:10Z</updated>
      <link href="http://www.pabcas.com/feeling/notion-by-the-kings-of-leon" rel="alternate" type="text/html"/>
      <title>Notion by the Kings of Leon</title>
      <content type="html">
        <p></p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:53</id>
      <published>2009-04-17T11:46:32Z</published>
      <updated>2009-04-17T11:46:32Z</updated>
      <link href="http://www.pabcas.com/feeling/bruce-springsteen-thunder-road" rel="alternate" type="text/html"/>
      <title>Bruce Springsteen — Thunder Road</title>
      <content type="html">
        <p></p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:52</id>
      <published>2009-04-14T10:52:35Z</published>
      <updated>2009-04-14T10:52:35Z</updated>
      <link href="http://www.pabcas.com/feeling/my-local-shower-and-toilet-store" rel="alternate" type="text/html"/>
      <title>My local shower and toilet store</title>
      <content type="html">
        <p>This is about five or six doors down from where I live. He's since been removed from service!</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:51</id>
      <published>2009-04-14T09:16:29Z</published>
      <updated>2009-04-14T09:16:29Z</updated>
      <link href="http://www.pabcas.com/feeling/chad-fowler-s-survey-of-rails-development-no-no-s" rel="alternate" type="text/html"/>
      <title>Chad Fowler's survey of Rails Development no-no's</title>
      <content type="html">
        <p>Maintaining best practices is <em>hard</em>, but it helps to look at it in the context of the smells you leave behind when you don't adhere to them.</p>

<p>I particularly like the format of putting out a tweet and bringing them together in a blog post.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:50</id>
      <published>2009-04-09T09:08:21Z</published>
      <updated>2009-04-09T09:08:21Z</updated>
      <link href="http://www.pabcas.com/feeling/huge-names-on-the-web-coming-to-belfast" rel="alternate" type="text/html"/>
      <title>Huge names on the web coming to Belfast</title>
      <content type="html">
        <p>Eric Meyer, Wilson Miner, Ryan Sims, Tim Van Damme, Andy Budd and Sam Brown, coming to Belfast in November. <a href="http://www.goodonpaper.com/">Andy McMillan</a> is <em>definitely</em> one to watch.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:49</id>
      <published>2009-04-03T22:01:24Z</published>
      <updated>2009-04-03T22:01:24Z</updated>
      <link href="http://www.pabcas.com/feeling/my-personal-coding-guidelines-for-where-to-put-stuff-in-rails-activerecord-models" rel="alternate" type="text/html"/>
      <title>My personal coding guidelines for where to put stuff in Rails ActiveRecord models</title>
      <content type="html">
        <p>While working with Rails ActiveRecord models recently, I've found that I'm never sure where to put things. Should validations go before relationships? Should class methods come before instance methods? I've started keeping a coding guideline for myself to keep things nice and consistent. It doesn't follow much of a rational order, but it's something, and I've gone with my gut and my gut is happy. Here's what I've come up with:</p>

<ul>
 <li>includes</li>
<li>validations</li>

<li>called class methods</li>
<li>relationships</li>
<li>callbacks</li>

<li>named scopes</li>
<li>class method definitions</li>
<li>public method definitions</li>
<li>private method definitions</li>
<li>callback method definitions</li>
</ul>

<p>
So, for example, here's how a Post class would look:

<code><pre>
class Post &lt; ActiveRecord::Base
  # includes
  include SpecialPostMethods
  
  # validations
  validates_presence_of :title
  validates_uniqueness_of :slug
  
  # called class methods
  acts_as_textiled :body
  
  # relationships
  belongs_to :site
  has_many :comments
  
  # callbacks
  after_create :save_slug
  after_save :ping_technorati
  
  # named scopes
  named_scope :most_popular, :order => 'votes DESC'
  
  # class method definitions
  def self.post_types
    ['post', 'page']
  end
  
  # public method definitions
  def permalink
    ...
  end
  
private
  # private method definitions
  def flush_cache_entry
    ...
  end
  
  # callback method definitions
  def ping_technorati
    ...
  end
  
end
</pre></code>
</p>

<p>Your mileage may vary with this, but I've found that it's really helped me not have to think about where I'm putting stuff. Everything now has a place, so I know I can consistently put things where they should be, or tidy things up when I'm using old code.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:48</id>
      <published>2009-03-31T08:57:41Z</published>
      <updated>2009-03-31T08:57:41Z</updated>
      <link href="http://www.pabcas.com/feeling/dave-winer-and-ideas" rel="alternate" type="text/html"/>
      <title>Dave Winer and ideas</title>
      <content type="html">
        <p>I like catching up on <a href="http://www.scripting.com/">Dave Winer</a>'s blog every so often. It's definitely a whole lot more than scripting news.</p>

<p>I like his thoughts on <a href="http://www.scripting.com/stories/2009/03/30/iGetIdeasDrivingInSnowStor.html">ideas in snowstorms</a> ... the kind of moments I guess that James Webb Young promotes in "A technique for producing ideas" ... the snow storm (or whatever) jolts the subconcious mind to look at old ideas in a new light.</p>

<p>I also like the idea of <a href="http://www.scripting.com/stories/2009/03/27/productIdeaDiggForAds.html">Digg for ads</a> ... I love being advertised to when <strong>a)</strong> it's a really exciting ad and/or <strong>b)</strong> I really want the product. I really hate it when <strong>a)</strong> The ad is awesome but it's some crummy product like fat-free yoghurt or <strong>b)</strong> it's some crappy thing and it's on the TV because the guy's cousin knew the station manager and a bit of Final Cut pro.</p>

<p>I also hate those crappy musical Halifax ads.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:47</id>
      <published>2009-03-30T23:33:08Z</published>
      <updated>2009-03-30T23:33:08Z</updated>
      <link href="http://www.pabcas.com/feeling/nightmare-killing" rel="alternate" type="text/html"/>
      <title>Nightmare killing</title>
      <content type="html">
        <p>Terrifying to think that this is real life, that it's probably just a cross-section of what's out there.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:46</id>
      <published>2009-03-25T16:27:51Z</published>
      <updated>2009-03-25T16:27:51Z</updated>
      <link href="http://www.pabcas.com/feeling/nouvelle-vague-i-ll-melt-with-you" rel="alternate" type="text/html"/>
      <title>Nouvelle Vague — I'll melt with you</title>
      <content type="html">
        

<p>Your whole world could be falling down around you and you'd have a hard time not living up to the title of this song.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:45</id>
      <published>2009-03-24T13:24:06Z</published>
      <updated>2009-03-24T13:24:06Z</updated>
      <link href="http://www.pabcas.com/feeling/phallic-rooftop" rel="alternate" type="text/html"/>
      <title>Phallic rooftop</title>
      <content type="html">
        <p>I like how they don't mention anything about what the drawing is in the caption.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:44</id>
      <published>2009-03-24T10:55:29Z</published>
      <updated>2009-03-24T10:55:29Z</updated>
      <link href="http://www.pabcas.com/feeling/automated-testing-is-the-warmest-blanket-for-an-ocd-person-that-you-could-possibly-wrap-yourself-in" rel="alternate" type="text/html"/>
      <title>"Automated testing is the warmest blanket for an OCD person that you could possibly wrap yourself in"</title>
      <content type="html">
        <p><br /><a href="http://vimeo.com/2031437">Hampton Hates Automated Testing</a> from <a href="http://vimeo.com/user852875">Hampton Catlin</a> on <a href="http://vimeo.com">Vimeo</a>.</p>

<p>I don't necessarily agree with this, but I do believe that one should always have a good healthy balance in life! My stance is that testing code is one of many disciplines to help you reflect on the work that you've done. As well as the obvious benefit of helping you out when you break stuff later!</p>

<p>My favourite comment: "whoa, your hair! obviously i have nothing productive to say about automated testing. ps. nice shirt!"</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:43</id>
      <published>2009-03-24T08:48:05Z</published>
      <updated>2009-03-24T08:48:05Z</updated>
      <link href="http://www.pabcas.com/feeling/using-twitter-s-api-to-sort-friends-followers-alphabetically" rel="alternate" type="text/html"/>
      <title>Using Twitter's API to sort friends / followers alphabetically</title>
      <content type="html">
        <p>One of the reasons I set up this tumble-loggy blog, rather than stick with a regular blog, was so that I could share little snippets of code every so often, related to the stuff I was working on.</p>

<p>That's why I was delighted when <a href="http://joncrawford.com/">Jon Crawford</a> (<a href="http://twitter.com/newmonarch">NewMonarch</a>) on Twitter asked me this:</p>

<blockquote>I need to grab a Twitter user’s followers on the fly. As you probably know, the friends list isn’t returned in alphabetical order. Instead it’s returned in the order of which you started following the user, 100 results as a time. I’d prefer that the results were returned in alphabetical order by screen_name.</blockquote>

<p>I like this kind of request, because it's one I know the answers to!</p>

<p>Since the beginning, Twitter has provided <a href="http://apiwiki.twitter.com/REST+API+Documentation#UserMethods">friends / followers</a> methods for getting a list of a Twitter user's friends or followers. These methods have been damned to hell though, because they only report back 100 users at a time. Worse, they send back all manner of extra data, such as the latest tweet and in depth profile information. This meant for a lot of wasteful traffic back and forth to the API, and crucially lots of requests, eating up your API limit.</p>

<p>This was a particular bone of contention for an app like <a href="http://useqwitter.com">Qwitter</a>. For someone like <a href="http://www.twitter.com/garyvee">Gary Vaynerchuk</a> for example, with tens of thousands of followers, we'd have to make hundreds of requests to the api just to get a list of Twitter follower IDs. A fun programming exercise, no doubt, but seriously inefficient.</p>

<p>At the beginning of February, Twitter released two methods that mark a change in the game for Twitter API developers: their <a href="http://apiwiki.twitter.com/REST+API+Documentation#SocialGraphMethods">social graph methods</a></p>

<p>Essentially, these methods let you download an entire friends list or followers list in a single API call:</p>

<p><pre><code>curl http://twitter.com/friends/ids.xml?user_id=1401881</code></pre></p>

<p>It just returns a list of IDs, but it's massively more efficient than making lots and lots of calls to the API, particularly for Qwitter.</p>

<p>For Jon Crawford's problem, it marks the beginnings of a solution. Because Qwitter compares the differences in two lists of IDs, we don't rely on associating usernames with IDs.</p>

<p>Here's a script that returns an array of friends sorted in alphabetical order. I've used <a href="http://addictedtonew.com/">John Nunemaker</a>'s excellent <a href="http://github.com/jnunemaker/twitter/tree/master">Twitter gem</a>.</p>

<p></p>

<p>The big problem with this script is that it's actually more inefficient than paging through 100 followers at a time, as it makes one API request per user. Perhaps for the first run of a user, something like this would be better:</p>

<p></p>

<p>Then keep a cache of usernames and associate them later. It all really depends on your needs.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:42</id>
      <published>2009-03-23T13:02:51Z</published>
      <updated>2009-03-23T13:02:51Z</updated>
      <link href="http://www.pabcas.com/feeling/m-m-smell-memory-live-clip-on-youtube" rel="alternate" type="text/html"/>
      <title>Múm — Smell Memory (live clip on Youtube)</title>
      <content type="html">
        <p>This occassionally pops in to my head and makes me smile. I love the simplicity but also the harshness of the melody.</p>


      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:41</id>
      <published>2009-03-12T21:18:47Z</published>
      <updated>2009-03-12T21:18:47Z</updated>
      <link href="http://www.pabcas.com/feeling/giant-tetris-or-tiny-tetris" rel="alternate" type="text/html"/>
      <title>Giant Tetris (or tiny Tetris)</title>
      <content type="html">
        <p>It took me 5 minutes to get an eighth of the way across. Fun though!</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:40</id>
      <published>2009-03-11T19:03:34Z</published>
      <updated>2009-03-11T19:03:34Z</updated>
      <link href="http://www.pabcas.com/feeling/my-screencasting-flow" rel="alternate" type="text/html"/>
      <title>My screencasting flow</title>
      <content type="html">
        <p>I've been using <a href="http://www.telestream.net/screen-flow/overview.htm">Screenflow</a> for the last few days to do some screen casts for a client. It's pretty good. Not perfect, but neater than Snapz Pro X.</p>

<p>I developed a pretty good flow, which I'd like to share. One thing I can't emphasise enough is the need to write a script. I tried doing voiceover and actions at the same time and it just ended up a mess trying to type and talk convincingly at the same time. Here's the flow:</p>

<p>
  <ul>
    <li>Write a script based on the client's requirements. Guess at how long the action will be on screen to decide on how wordy each explanation should be.</li>
    <li>Do the screen capture video with the script on screen. I kept mine in a narrow window along the right side of my screen. I glance at the script while I record the actions, trying to hear myself saying the words in my head, to keep pace.</li>
    <li>Save the video and record the voiceover on a new track. In Screenflow, you can hit Apple-Shift-R to add a recording. You have to manually hit play on the controls to play back the 'cast.</li>
    <li>You might need to tweak the script if it doesn't quite match the video. Try and keep the pace smooth, but don't be afraid of a gap every now and again.</li>
    <li>Rinse and repeat</li>
  </ul>
</p>

<p>I can't emphasise enough how important it is to have a script. I'm constantly tweaking, tweaking, making sure the words are just right.</p>

<p>This flow would probably make a good screencast itself. I might do that some time. It would also make for a very neat presentation. *Adding to my list*</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:38</id>
      <published>2009-03-10T09:51:13Z</published>
      <updated>2009-03-10T09:51:13Z</updated>
      <link href="http://www.pabcas.com/feeling/1236678673" rel="alternate" type="text/html"/>
      <title>I wish I could persuade more people about this</title>
      <content type="html">
        "It’s entirely your responsibility to make your dreams come through."
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:37</id>
      <published>2009-03-08T15:55:56Z</published>
      <updated>2009-03-08T15:57:52Z</updated>
      <link href="http://www.pabcas.com/feeling/1236527756" rel="alternate" type="text/html"/>
      <title>Talks I'd like to give</title>
      <content type="html">
        <p>This last week has been very conference heavy, but it's also been an indicator to me that there's lots of stuff inside my head that people could probably make use of. I'd be really interested in speaking more about my experiences with:</p>

<p>
  <ul>
    <li><a href="http://couchdb.apache.org">CouchDB</a> - I've dabbled a good bit and released <a href="http://github.com/paulca/stuffing/tree/master">Stuffing</a></li>
    <li><a href="http://www.amazonaws.com">Amazon Web Services</a> (particularly EC2 + EBS, S3 and SQS) - Lots of experience building and scaling <a href="http://www.getexceptional.com">Exceptional</a></li>
    <li>Customer service - I've manned the feedback email for Exceptional since we launched</li>
  </ul>
</p>

<p>The list is really for my own reference, but if you'd like to hear my thoughts on these, get in touch!</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:36</id>
      <published>2009-03-07T14:31:24Z</published>
      <updated>2009-03-07T14:31:24Z</updated>
      <link href="http://www.pabcas.com/feeling/my-twitter-api-talk" rel="alternate" type="text/html"/>
      <title>My Twitter API talk</title>
      <content type="html">
        <p>I gave a talk last Wednesday at "API wars", a <a href="http://www.web2ireland.org">Web2Ireland</a> event on APIs before the Facebook Developer Garage. It seemed to go down very well. I think the whole thing was filmed, so hopefully all the talks will be available online. It was my first talk in front of a sizeable audience and it went very well. My green-on-black Terminal screenshots didn't appear on the big screens, so with apologies to <a href="http://whytheluckystiff.net/">_Why</a>, I left the stage to show the crowd how the <a href="http://github.com/jnunemaker/twitter/tree/master">Ruby Twitter gem</a> works. A lot of fun.</p>

<p>I've <a href="http://contrast.ie/presentations/twitter-api-slides.pdf">made the slides available</a> as a PDF.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:35</id>
      <published>2009-03-04T16:09:47Z</published>
      <updated>2009-03-04T16:09:47Z</updated>
      <link href="http://www.pabcas.com/feeling/twitter-social-graph-methods" rel="alternate" type="text/html"/>
      <title>Twitter social graph methods</title>
      <content type="html">
        <p>Twitter's <a href="http://apiwiki.twitter.com/REST-API-Documentation#SocialGraphMethods">social graph methods</a>, launched last month, are the secret sauce behind <a href="http://www.useqwitter.com">Qwitter</a>.  Up until yesterday, when I implemented these methods in the app, I had been mocking them by using round robin to loop over the many thousands of Qwitter users, paginating through hoards of data just to extract the user IDs of followers.</p>

<p>Now I can get all the user IDs of someone's followers in just a single API call.</p>

<p>This is big news not only for Qwitter, but for any app that is doing things with followers lists. No more are we restricted to the 100 per page limit that was imposed before ( plus the unecessary bloat of getting latest status, screen name etc.</p>

<p>The good news is that I can now say that Qwitter should be able to maintain a decent bit of reliability, at least up until around 250k users. We're not quite there yet.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:34</id>
      <published>2009-03-02T14:27:47Z</published>
      <updated>2009-03-02T14:27:47Z</updated>
      <link href="http://www.pabcas.com/feeling/1236004067" rel="alternate" type="text/html"/>
      <title>I agree with this</title>
      <content type="html">
        "The best plan is to overload Google with a long tail of good stuff and to always act as if you're on Candid Camera, because you are."
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:33</id>
      <published>2009-03-01T19:35:04Z</published>
      <updated>2009-03-01T19:35:04Z</updated>
      <link href="http://www.pabcas.com/feeling/1235936104" rel="alternate" type="text/html"/>
      <title>I chuckled at this</title>
      <content type="html">
        "If not actually disgruntled, he was far from being gruntled."
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:32</id>
      <published>2009-02-27T10:24:52Z</published>
      <updated>2009-02-27T10:24:52Z</updated>
      <link href="http://www.pabcas.com/feeling/good-writeups-for-projects-i-m-involved-in" rel="alternate" type="text/html"/>
      <title>Good writeups for projects I'm involved in</title>
      <content type="html">
        <p>Two writeups in a week, awesome. <a href="http://www.getexceptional.com">Exceptional</a> was featured in <a href="http://www.smashingmagazine.com/2009/02/25/ruby-on-rails-tips/">Smashing Magazine's 10 Useful tips for Rails Developers</a> ... we got a really nice big screen plastered on the "Track application exceptions" section.</p>

<p>Also, to my delight, <a href="http://github.com/paulca/stuffing/tree/master">Stuffing</a> is <a href="http://www.railsinside.com/plugins/242-quickly-add-couchdb-to-existing-rails-models-with-stuffing.html">featured</a> on <a href="http://www.railsinside.com">Rails Inside</a>.  Proud to see my little experiment get attention. I think that <a href="http://www.couchdb.org">CouchDB</a> really is the next big thing.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:31</id>
      <published>2009-02-27T10:16:02Z</published>
      <updated>2009-02-27T10:31:40Z</updated>
      <link href="http://www.pabcas.com/feeling/1235729762" rel="alternate" type="text/html"/>
      <title>I swam a half-mile!</title>
      <content type="html">
        <p>As it turns out, my maths suck. I was informed yesterday that a mile is actually 64 lengths, not the 32 that I achieved... I was basing my figures on the pool being 50m in length, not 25m.</p>

<p>Still, I was actually happy enough to learn that, as the point of my post was less that I swam a mile and more that a definite goal is more easily achieved. I now have a new definite goal: 64 lengths. A mile!</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:30</id>
      <published>2009-02-26T10:13:10Z</published>
      <updated>2009-02-26T10:13:10Z</updated>
      <link href="http://www.pabcas.com/feeling/i-swam-a-mile" rel="alternate" type="text/html"/>
      <title>I swam a mile</title>
      <content type="html">
        <p>I started swimming a couple weeks ago as a way of relaxing / keeping fit in the morning. I've been going in about a half hour before I start working, so I only fit about 10 lengths in. Today I got in a bit earlier and when I got to 15, I realised that I'd swum about 750m. I realised that hey ... I could get to a thousand, and if I really wanted to, I could probably get up to 1.6k - the elusive mile! Well, it's surprising how easy those next 17 lengths came to me once I had that goal. A mile! There was something exciting about that last length, legs flailing, arms all over that place. Exciting, rewarding. A mile!</p>

<p><strong>Update:</strong> <a href="http://www.pabcas.com/feeling/1235729762">Actually, it was only a half-mile. Dang!</a></p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:29</id>
      <published>2009-02-25T17:49:27Z</published>
      <updated>2009-02-25T17:49:27Z</updated>
      <link href="http://www.pabcas.com/feeling/louis-ck-on-conan" rel="alternate" type="text/html"/>
      <title>Louis CK on Conan</title>
      <content type="html">
        <p>A client recommended this after a long day's work. Louis CK on counting your blessings ... "Maybe we need some time where we're walking around with a donkey with pots clanging on the sides"</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:28</id>
      <published>2009-02-25T12:45:35Z</published>
      <updated>2009-02-25T12:45:35Z</updated>
      <link href="http://www.pabcas.com/feeling/flippin-hell" rel="alternate" type="text/html"/>
      <title>Flippin' hell</title>
      <content type="html">
        
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:27</id>
      <published>2009-02-25T10:53:29Z</published>
      <updated>2009-02-25T10:53:29Z</updated>
      <link href="http://www.pabcas.com/feeling/1235559209" rel="alternate" type="text/html"/>
      <title>I firmly believe, but don't often enough abide by this</title>
      <content type="html">
        "In matters of style, swim with the current; in matters of principle, stand like a rock."
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:26</id>
      <published>2009-02-24T18:00:57Z</published>
      <updated>2009-02-24T18:00:57Z</updated>
      <link href="http://www.pabcas.com/feeling/neat-preview-of-new-u2-album-on-irishtimes-com" rel="alternate" type="text/html"/>
      <title>Neat preview of new U2 album on irishtimes.com</title>
      <content type="html">
        <p>Apparently one of the songs that I've been working on with some mates is very similar to one of these. Dang!</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:25</id>
      <published>2009-02-21T00:58:29Z</published>
      <updated>2009-02-21T00:58:29Z</updated>
      <link href="http://www.pabcas.com/feeling/google-web-history" rel="alternate" type="text/html"/>
      <title>Google web history</title>
      <content type="html">
        <p>Extraordinarily responsive breakdown of your own personal Google usage. Eerie, but useful!</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:24</id>
      <published>2009-02-21T00:01:55Z</published>
      <updated>2009-02-21T00:01:55Z</updated>
      <link href="http://www.pabcas.com/feeling/uk-companies-house" rel="alternate" type="text/html"/>
      <title>UK Companies House</title>
      <content type="html">
        <p>The <a href="http://wck2.companieshouse.gov.uk/">UK Companies House</a> company search shuts down after midnight. Doesn't this kind of miss the point of the internet?</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:23</id>
      <published>2009-02-20T23:58:38Z</published>
      <updated>2009-02-20T23:58:38Z</updated>
      <link href="http://www.pabcas.com/feeling/dan-benjamin-on-why-avatars-matter" rel="alternate" type="text/html"/>
      <title>Dan Benjamin on why avatars matter</title>
      <content type="html">
        <p>Some good insight from one of the smartest guys on the web</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:22</id>
      <published>2009-02-20T16:06:05Z</published>
      <updated>2009-02-20T16:06:05Z</updated>
      <link href="http://www.pabcas.com/feeling/handy-sample-rails-app-with-yui-uploader" rel="alternate" type="text/html"/>
      <title>Handy sample Rails app with YUI uploader</title>
      <content type="html">
        <p>So getting the Yahoo YUI uploader to work with Rails is a bit like voodoo. Cameron has published a concrete example using jQuery as well as YUI that works right out of the box.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:21</id>
      <published>2009-02-19T16:39:47Z</published>
      <updated>2009-02-19T16:39:47Z</updated>
      <link href="http://www.pabcas.com/feeling/the-pirate-bay-legal-story" rel="alternate" type="text/html"/>
      <title>The Pirate Bay legal story</title>
      <content type="html">
        <p>A description of the courtroom proceedings of the legal case against <a href="http://www.thepiratebay.org">The Pirate Bay</a>. A riveting, exciting read, an irony-fuelled good vs. evil battle</a>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:20</id>
      <published>2009-02-19T15:21:21Z</published>
      <updated>2009-02-19T15:21:21Z</updated>
      <link href="http://www.pabcas.com/feeling/yui-uploader" rel="alternate" type="text/html"/>
      <title>YUI Uploader</title>
      <content type="html">
        <p>The YUI uploader is an open source extraction used in the <a href="http://www.flickr.com">Flickr</a> web-based uploader. Cool stuff, and in theory more reliable than <a href="http://swfupload.org/">SWFUpload</a> if it's in production use on Flickr.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:19</id>
      <published>2009-02-18T10:46:43Z</published>
      <updated>2009-02-18T10:48:45Z</updated>
      <link href="http://www.pabcas.com/feeling/1234954003" rel="alternate" type="text/html"/>
      <title>'fd' tab trigger in TextMate for creating new Rails form fields</title>
      <content type="html">
        <p>
In my screencast below, I used an 'fd' tab trigger in Textmate to generate a div containing a field and a label. This isn't part of the <a href="http://drnicwilliams.com/2008/01/31/get-ready-for-the-textmate-trundle-to-rails-20-bundle/">Rails Textmate bundle</a>. Here's the code to generate a label and field inside a div:
</p>

<blockquote><pre><code>
&lt;div&gt;
  ${RAILS_TEMPLATE_START_RUBY_EXPR}f.label :${1:attribute}${2:, &quot;${3:${1/[[:alpha:]]+|(_)/(?1: :\u$0)/g}}&quot;}${RAILS_TEMPLATE_END_RUBY_EXPR}
  ${RAILS_TEMPLATE_START_RUBY_EXPR}f.text_field :${1:attribute}${RAILS_TEMPLATE_END_RUBY_EXPR}
&lt;/div&gt;
</pre></code></blockquote>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:18</id>
      <published>2009-02-18T10:02:14Z</published>
      <updated>2009-02-18T10:02:14Z</updated>
      <link href="http://www.pabcas.com/feeling/a-short-video-introduction-to-stuffing" rel="alternate" type="text/html"/>
      <title>A short video introduction to Stuffing</title>
      <content type="html">
        
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:17</id>
      <published>2009-02-17T11:37:04Z</published>
      <updated>2009-02-17T11:37:04Z</updated>
      <link href="http://www.pabcas.com/feeling/preventing-caching-in-rails-controllers" rel="alternate" type="text/html"/>
      <title>Preventing caching in Rails controllers</title>
      <content type="html">
        <p>Much as our <a href="http://getexceptional.com">Exceptional</a> competition is "healthy," <a href="http://www.thoughtbot.com">Thoughtbot</a> are a smart bunch. <a href="http://www.thoughtbot.com/projects/paperclip">Paperclip</a> is a top drawer attachments plugin and this post by Chad Pytel is an interesting read on how to prevent pages being cached in Rails controllers. Normally caching is a useful tool for improving the response of your webapps, but in many cases you want the data to be fresh on every request. Take home point: if you want your page to be 'cache-resistant' in Safari and IE, stick an empty iframe in it.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:16</id>
      <published>2009-02-13T18:28:52Z</published>
      <updated>2009-02-13T18:28:52Z</updated>
      <link href="http://www.pabcas.com/feeling/photos-from-the-dublin-twestival" rel="alternate" type="text/html"/>
      <title>Photos from the Dublin Twestival</title>
      <content type="html">
        <p>The Dublin Twestival was on last night. Lots of people, lots of fun. Cool to see a LOT of faces that I've not met before alongside a healthy dose of regulars. Bonus appearance from and photos of Twink, who showed up with an entourage from <a href="http://bscenetheagency.com/">BScene model agency</a>. Crazy. Hope you enjoy <a href="www.flickr.com/photos/paulmartincampbell/sets/72157613755154460/">my photos</a>. I got a good one of <a href="http://www.flickr.com/photos/paulmartincampbell/3276977420/in/set-72157613755154460/">Twink</a> and another good one of <a href="http://www.flickr.com/photos/paulmartincampbell/3276977752/in/set-72157613755154460/">Jason Byrne</a>.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:15</id>
      <published>2009-02-13T10:20:39Z</published>
      <updated>2009-02-13T10:20:39Z</updated>
      <link href="http://www.pabcas.com/feeling/twecipe" rel="alternate" type="text/html"/>
      <title>Twecipe</title>
      <content type="html">
        <p><a href="http://twitter.com">Niall Harbison</a> <a href="http://twitter.com/NiallHarbison/status/1186141569">tweeted</a> last Saturday that he had an idea for an app that he wanted done quickly. We got on board straight away. I hacked a prototype together, <a href="http://www.twitter.com/eoghanmccabe">Eoghan</a> did the design and <a href="http://www.twitter.com/destraynor">Des</a> helped with the all the projecty bits. Twecipe was born yesterday. I'm quite proud of how much we got done in just a few days, while keeping plenty of time for client work.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:14</id>
      <published>2009-02-12T14:48:38Z</published>
      <updated>2009-02-12T14:48:38Z</updated>
      <link href="http://www.pabcas.com/feeling/fix-for-when-apple-tab-not-working" rel="alternate" type="text/html"/>
      <title>Fix for when Apple-Tab not working</title>
      <content type="html">
        <p>My Apple-Tab key combo to switch apps wasn't working. <a href="http://www.destraynor.com/serendipity">Des</a> gave me a neat little one liner to fix it:</p>

<p><pre>killall Dock</pre></p>

<p>This stops the Dock, which gets automatically restarted by OS X, and very quickly Apple-Tab works again. Sweet</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:13</id>
      <published>2009-02-12T11:11:48Z</published>
      <updated>2009-02-12T11:11:48Z</updated>
      <link href="http://www.pabcas.com/feeling/1234437108" rel="alternate" type="text/html"/>
      <title>I totally, totally, totally agree with this</title>
      <content type="html">
        "The best part of building ‘as little as possible’ comes after launch. Every feature you skipped or held off on is free open space in the app for later development."
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:12</id>
      <published>2009-02-11T18:53:08Z</published>
      <updated>2009-02-11T18:53:08Z</updated>
      <link href="http://www.pabcas.com/feeling/doctor-millar-comeback-shows" rel="alternate" type="text/html"/>
      <title>Doctor Millar comeback shows</title>
      <content type="html">
        <p><a href="http://www.doctormillar.com">Doctor Millar</a> is playing Dublin tonight in <a href="http://www.bewleyscafetheatre.com">Bewley's Cafe Theatre</a>. I recommend the show. He's also playing next Wednesday, which is when I plan to go see him.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:11</id>
      <published>2009-02-11T13:15:08Z</published>
      <updated>2009-02-11T13:15:08Z</updated>
      <link href="http://www.pabcas.com/feeling/transparent-background-screen-effects" rel="alternate" type="text/html"/>
      <title>Transparent background screen effects</title>
      <content type="html">
        <p>Setting desktop backgrounds to mimic what's actually behind them. Very smart. Very creative. I really like <a href="http://www.flickr.com/photos/w00kie/11033741/in/set-180637/">the transparent one</a></p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:10</id>
      <published>2009-02-11T12:07:06Z</published>
      <updated>2009-02-11T12:07:06Z</updated>
      <link href="http://www.pabcas.com/feeling/mundy-july" rel="alternate" type="text/html"/>
      <title>Mundy - July</title>
      <content type="html">
        
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:9</id>
      <published>2009-02-11T10:50:39Z</published>
      <updated>2009-02-11T10:50:39Z</updated>
      <link href="http://www.pabcas.com/feeling/the-little-coder-s-predicament" rel="alternate" type="text/html"/>
      <title>The Little Coder's predicament</title>
      <content type="html">
        <p>"You’ve got to be able to write a single line of code and see a result." _why nails it.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:8</id>
      <published>2009-02-10T18:03:44Z</published>
      <updated>2009-02-10T18:03:44Z</updated>
      <link href="http://www.pabcas.com/feeling/1234289024" rel="alternate" type="text/html"/>
      <title>I empathised with this</title>
      <content type="html">
        "What should have been a one-line code fix is turning into another QuickBooks spelunking expedition."
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:7</id>
      <published>2009-02-10T14:25:08Z</published>
      <updated>2009-02-10T14:25:08Z</updated>
      <link href="http://www.pabcas.com/feeling/rilo-kiley-the-frug" rel="alternate" type="text/html"/>
      <title>Rilo Kiley "The Frug"</title>
      <content type="html">
        
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:6</id>
      <published>2009-02-09T15:43:01Z</published>
      <updated>2009-02-09T15:43:01Z</updated>
      <link href="http://www.pabcas.com/feeling/photos-from-the-innovate-europe-drinks-in-4-dame-lane" rel="alternate" type="text/html"/>
      <title>Photos from the Innovate Europe drinks in 4 Dame lane</title>
      <content type="html">
        <p>I went along for drinks with all the lads who had attended the Innovate Europe event with EI last week. As usual, I had my camera so I snapped a bunch of headshots. I think there are a few high-profile guys in there.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:5</id>
      <published>2009-02-09T11:21:07Z</published>
      <updated>2009-02-09T11:21:07Z</updated>
      <link href="http://www.pabcas.com/feeling/snowman" rel="alternate" type="text/html"/>
      <title>Snowman</title>
      <content type="html">
        My housemate built a snowman over the weekend. He looks kind of sinister, but it was really cool to get enough snow to build a snowman.
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:3</id>
      <published>2009-02-09T01:30:41Z</published>
      <updated>2009-02-09T02:24:23Z</updated>
      <link href="http://www.pabcas.com/feeling/stuffing-couchdb-into-rails" rel="alternate" type="text/html"/>
      <title>Stuffing CouchDB into Rails</title>
      <content type="html">
        <p><a href="http://github.com/paulca/stuffing/tree/master">Stuffing</a> is a Rails plugin that lets you add a CouchDB data store to an existing ActiveRecord model.</p>

<p><code>
class Post &lt; ActiveRecord::Base
  stuffing
end
</code></p>

<p>The Post model above is just an ordinary ActiveRecord model. It has a MySQL table called "posts" behind it. The fields in the posts table get mapped to methods in instances of Post. But it also has the meta-attribute: stuffing. You can assign a hash of arbitrary keys and values to the stuffing method and it will be persisted automatically to CouchDB.</p>

<p>It works like this:</p>
<p><code>@post = Post.new({:title => "Cake", :post_type => "recipe", 
:stuffing => {:ingredients => ['flour','sugar','eggs'],
:description => 'mix them all up'})
@post.save
@post.stuffing
=> {:ingredients => ['flour','sugar','eggs'],
:description => 'mix them all up'}
</code></p>

<p>When you save this, with @post.save, the :stuffing gets saved to CouchDB. You can retrieve the attributes by accessing the stuffing hash: @post.stuffing['ingredients'] or you can call them by prefixing stuffing_ : @post.stuffing_ingredients. The data gets updated when you update it. It's just like having a big mega-hash in the sky on top of regular old ActiveRecord.</p>

<p>What's the point? Why not just use a CouchDB wrapper like ActiveCouch, CouchRest::Model etc.? Well, CouchDB has a <em>lot</em> of features. It's got javascript views with map-reduce, crash-only design, schema-less documents, bi-directional replication. Lots of really cool stuff that one day we'll all have in our own living rooms. But right now, today, it's only really the schema-less design that appeals to me. I mean, I love the other stuff, but when I'm quickly prototyping an app (as I often am in Rails), I love the idea of just being able to add another field to a form and bam! I have a new attribute. But then I want to be able to quickly hook on all the tried and true ActiveRecord plugins that I'm used to. Hell, I want to be able to call Post.first, Post.last and Post.all.</p>

<p>Stuffing helps to gently add a CouchDB layer to your Rails app without completely removing you from ActiveRecord. Think of it like swimming in CouchDB with arm-bands. Or like a Couch, but without the covers, trimmings or fancy coasters. Just the stuffing.</p>

<p>The plugin is yours, available to enjoy on Github: <a href="http://github.com/paulca/stuffing">http://github.com/paulca/stuffing/</a> where there's a full documentation and some more examples. Feel free to contact me if you have any questions, or fork the project and patch back if you think I screwed something up, or if something can be improved.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:2</id>
      <published>2009-02-09T01:13:03Z</published>
      <updated>2009-02-09T02:05:59Z</updated>
      <link href="http://www.pabcas.com/feeling/playing-with-couchdb" rel="alternate" type="text/html"/>
      <title>Playing with CouchDB over the last few months</title>
      <content type="html">
        <p>I've had such a good amount of time with CouchDB over the last few months. I first read about CouchDB when I was back in college on <a href="http://blog.leetsoft.com/2007/9/2/futuretalk-couchdb">Tobias Luetke's blog</a>. It sounded awesome, but that was about that. At the time, it was quite complicated to get up and running, at least too complicated for me.</p>

<p>Then last year I met <a href="http://jan.prima.de">Jan Lehnardt</a> and the game changed a little for me. I <em>knew</em> someone connected directly with the project. It became exciting for me. Jan got me up and running with <a href="http://pix.ie/paulca/665496/in/album/326370">a masterclass</a> in CouchDB at RailsConf Europe last year. My appetite was squarely whetted.</p>

<p>My first foray into CouchDB was a little experiment called <a href="http://github.com/paulca/couchy/tree/master">"Couchy"</a>. Couchy uses a TemplateMap class to parse fields out of HTML and create a schema out of them. It was a fun little project and got me up and running with the basic concepts.</p>

<p>It was a while before I got to try anything else, but in the meantime, <a href="http://jchris.mfdz.com/">Chris Anderson</a> had published <a href="http://jchris.mfdz.com/posts/122">CouchRest::Model</a>, which was very interesting, because it attempted to create more ActiveRecord-like models out of CouchDB, including dynamic views. It was full of smart stuff.</p>

<p>I got my hands dirty with CouchRest::Model building the first iteration of this little tumble log. I wanted a dynamic data store so that I could post any kind of content - a post, a quote, a link whatever, but I wanted to add to these easily in the future. Not like create a new database field or fill out some crazy schematic. Like just add a new form and I'd have a new post type.</p>

<p>I got quite far with CouchRest::Model, but then a cascade of issues hit me. What about pagination? What about attachments? What about search. All of these things have been solved really well with will_paginate, Paperclip, ThinkingSphinx. There had to be another way.</p>

<p>Today, in about 20 minutes, I was able to take the cool schema-lessness of this little tumble-log and hook it into a couple of ActiveRecord models that I'll be able to use with the above plugins and ActiveRecord finders. I used "Stuffing" a little plugin I wrote to do just that. Stuffing is the subject of my next post.</p>
      </content>
    </entry>

    <entry xml:base="http://www.pabcas.com/">
      <author>
        <name>Paul Campbell</name>
      </author>
      <id>tag:www.pabcas.com,2009:1</id>
      <published>2009-02-09T00:48:09Z</published>
      <updated>2009-02-09T00:48:09Z</updated>
      <link href="http://www.pabcas.com/feeling/" rel="alternate" type="text/html"/>
      <title>My old blog</title>
      <content type="html">
        <p>This is my old blog. I used <a href="http://mephistoblog.com/">Mephisto</a>, which I quite liked, but I found that it ... wasn't just for me. So like any good hacker, I wrote my own blogging engine. And away I go.</p>
      </content>
    </entry>
</feed>
