<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>mediapeers development blog</title>
	<atom:link href="http://mediapeers.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mediapeers.wordpress.com</link>
	<description>Where rails meets film market</description>
	<lastBuildDate>Tue, 05 May 2009 14:54:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mediapeers.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>mediapeers development blog</title>
		<link>http://mediapeers.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mediapeers.wordpress.com/osd.xml" title="mediapeers development blog" />
	<atom:link rel='hub' href='http://mediapeers.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Parse quicktime movies with ruby</title>
		<link>http://mediapeers.wordpress.com/2009/04/25/parse-quicktime-movies-with-ruby/</link>
		<comments>http://mediapeers.wordpress.com/2009/04/25/parse-quicktime-movies-with-ruby/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 11:25:37 +0000</pubDate>
		<dc:creator>anselmhelbig</dc:creator>
				<category><![CDATA[Funstuff]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://mediapeers.wordpress.com/?p=74</guid>
		<description><![CDATA[We had a problem with our flash movie player: most videos played fine, but for some files the whole video had to be transferred before it started to play. What was going on here? It turned out that the quicktime format&#8217;s header, the &#8220;moov&#8221; atom, can actually be at the end of the file &#8211; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=74&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We had a problem with our flash movie player: most videos played fine,<br />
but for some files the whole video had to be transferred before it started<br />
to play. What was going on here?</p>
<p>It turned out that the quicktime format&#8217;s header, the &#8220;moov&#8221; atom, can<br />
actually be at the end of the file &#8211; presumably because it is<br />
convenient for video editing software. There&#8217;s also a fix for this<br />
problem: newer ffmpeg distributions come with a small helper called<br />
qt-faststart that can fix this kind of problem. </p>
<p>Anyway, &#8220;qt-faststart&#8221; needs to copy the whole movie to do this, so<br />
how do we find out if it is really necessary? Furthermore, we&#8217;ve<br />
already got a decent number of video files on our platform we&#8217;d need to<br />
check for streamability. </p>
<p>One solution is to use a command line tool to check for this. Before I<br />
heard of qt-faststart and before I knew how to parse quicktime movies,<br />
I tried to (ab)use mplayer for this: </p>
<p><code>mplayer -msglevel all=7 -frames 1 -vo null -ao null $FILE | \<br />
    sed -n 's/^MOV: Movie header: start: \(.*\) end:.*/\1/p'</code></p>
<p>This starts playing a the movie file with mplayer, but just one frame,<br />
discarding the video and audio generated, with lots of debug output<br />
going to stdout. Another solution is to use qt-faststart, sending its<br />
output to /dev/null and parsing the messages it spits out.</p>
<p>On the other hand, &#8220;qt-faststart&#8221; is not such a complicated program:<br />
it&#8217;s just 316 lines of C code. So I thought this functionality should<br />
be easy to port to ruby. And it turned out that the quicktime format<br />
is not that difficult to parse, at least for the very basic<br />
information we need to get.</p>
<p>A quicktime movie is made up of blocks called &#8220;atoms&#8221;. Every atom<br />
begins with an 8 byte header, the first 4 bytes determine the size of<br />
the atom including the header, a 32 bit unsigned integer, while the<br />
second 4 bytes make up a 4 letter ASCII string for the atom type. As<br />
we only want to know where the &#8220;moov&#8221; atom is we don&#8217;t need to know<br />
what the contents of an atom look like. </p>
<p>So without further ado, here&#8217;s the method we use now to determine if a<br />
video file is streamable:</p>
<pre class="brush: ruby;">
def streamable?(file)
  atoms = %w(free junk mdat moov pnot skip wide PICT ftyp cmov stco co64)
  File.open(file) do |f|
    while !f.eof?
      # the size is an unsigned 32bit integer, big-endian AKA network byte order
      # the type is 4 ascii characters
      size, type = f.read(8).unpack(&quot;Na4&quot;)
      raise ArgumentError, &quot;unknown atom type #{type} in #{file} at #{f.pos}&quot; unless atoms.include?(type)
      return f.pos &lt; 0xff if type == &quot;moov&quot;
      f.seek(size - 8, IO::SEEK_CUR)
    end
    raise ArgumentError, &quot;no moov atom found&quot;
  end
rescue
  false
end
</pre>
<br />Posted in Funstuff, Ruby, video  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mediapeers.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mediapeers.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mediapeers.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mediapeers.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mediapeers.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mediapeers.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mediapeers.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mediapeers.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mediapeers.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mediapeers.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mediapeers.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mediapeers.wordpress.com/74/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mediapeers.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mediapeers.wordpress.com/74/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=74&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mediapeers.wordpress.com/2009/04/25/parse-quicktime-movies-with-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/8efe7fe5b661a72922fe18070a8422fd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">anselmhelbig</media:title>
		</media:content>
	</item>
		<item>
		<title>looking old with new</title>
		<link>http://mediapeers.wordpress.com/2009/04/24/looking-old-with-new/</link>
		<comments>http://mediapeers.wordpress.com/2009/04/24/looking-old-with-new/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 14:05:38 +0000</pubDate>
		<dc:creator>Matthias Grosser</dc:creator>
				<category><![CDATA[Pitfalls on Rails]]></category>

		<guid isPermaLink="false">http://mediapeers.wordpress.com/?p=78</guid>
		<description><![CDATA[Just spent the last few minutes figuring out what broke my tests, until I found what you can call a really bad idea: named_scope :new, :conditions =&#62; { :state =&#62; 'new' } Never thought that one could get TOO used to &#8220;expressing things naturally&#8221;&#8230; but of course, it&#8217;s just another example of the keyword trap. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=78&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just spent the last few minutes figuring out what broke my tests, until I found what you can call a really bad idea:</p>
<pre class="brush: ruby;">named_scope :new, :conditions =&gt; { :state =&gt; 'new' }</pre>
<p>Never thought that one could get TOO used to &#8220;expressing things naturally&#8221;&#8230; but of course, it&#8217;s just another example of the keyword trap.</p>
<br />Posted in Pitfalls on Rails  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mediapeers.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mediapeers.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mediapeers.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mediapeers.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mediapeers.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mediapeers.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mediapeers.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mediapeers.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mediapeers.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mediapeers.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mediapeers.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mediapeers.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mediapeers.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mediapeers.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=78&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mediapeers.wordpress.com/2009/04/24/looking-old-with-new/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9129256fe95d8cd65d63ac5d12eacc86?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matthias Grosser</media:title>
		</media:content>
	</item>
		<item>
		<title>Rendering from inside your models</title>
		<link>http://mediapeers.wordpress.com/2009/02/03/rendering-from-inside-your-models/</link>
		<comments>http://mediapeers.wordpress.com/2009/02/03/rendering-from-inside-your-models/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 09:47:02 +0000</pubDate>
		<dc:creator>Matthias Grosser</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://mediapeers.wordpress.com/?p=69</guid>
		<description><![CDATA[There are few, but special occasions when you want to render templates directly inside a ActiveRecord model, circumventing the usual model-controller-view process. For example, when a contract is closed on the MPX platform, the resulting contract PDFs have to be rendered and safely stored without user interaction. The following class demonstrates how this can be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=69&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There are few, but special occasions when you want to render templates directly inside a ActiveRecord model, circumventing the usual model-controller-view process. For example, when a contract is closed on the MPX platform, the resulting contract PDFs have to be rendered and safely stored without user interaction. The following class demonstrates how this can be accomplished.</p>
<pre class="brush: ruby;">
class Contract &lt; ActiveRecord::Base

  before_validation_on_create :create_pdf

  class ViewRenderer &lt; ActionView::Base
    include *helper_modules
    include ApplicationHelper, SomeOtherHelper

    include ActionController::UrlWriter
    default_url_options[:host] = 'www.example.com'

    def initialize(view_paths = [], assigns_for_first_render = {}, controller = nil)
      view_paths = Rails.configuration.view_path
      super
    end

    def render_contract(contract, format = :html)
      @contract = contract
      prev_format = @template_format
      @template_format = format
      output = render(:partial =&gt; 'contracts/show')
      @template_format = prev_format
      output
    end
  end

  def create_pdf
    self.contract_pdf = PDF::PDFGenerator.render(ViewRenderer.new.render_contract(self))
  end
end
</pre>
<br />Posted in Rails  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mediapeers.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mediapeers.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mediapeers.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mediapeers.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mediapeers.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mediapeers.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mediapeers.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mediapeers.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mediapeers.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mediapeers.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mediapeers.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mediapeers.wordpress.com/69/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mediapeers.wordpress.com/69/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mediapeers.wordpress.com/69/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=69&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mediapeers.wordpress.com/2009/02/03/rendering-from-inside-your-models/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9129256fe95d8cd65d63ac5d12eacc86?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matthias Grosser</media:title>
		</media:content>
	</item>
		<item>
		<title>Association type cast or: Building instances of a given class on polymorphic/STI collections</title>
		<link>http://mediapeers.wordpress.com/2009/01/20/association-type-cast/</link>
		<comments>http://mediapeers.wordpress.com/2009/01/20/association-type-cast/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 10:19:42 +0000</pubDate>
		<dc:creator>Matthias Grosser</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://mediapeers.wordpress.com/?p=56</guid>
		<description><![CDATA[In quite some cases you want to build items on a rails collection instead of appending them, especially when the parent object is already stored in the database and you do not want the new item being saved automatically. However, this approach does not work on polymorphic collections as you cannot specify the class of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=56&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In quite some cases you want to <code>build</code> items on a rails collection instead of appending them, especially when the parent object is already stored in the database and you do not want the new item being saved automatically. However, this approach does not work on polymorphic collections as you cannot specify the class of the item being built in the <code>build</code> call. You can find some solutions on the net interpreting the <code>type</code> attribute, however I consider this unsafe because attributes tend to be taken directly from the <code>params</code> hash (actually, <code>type</code> attributes are filtered by default on mass assignments which does certainly make sense). The following code snippet adds a <code>build_a</code> method to has_many collections which allows you to say</p>
<p><code>collection.build_a SomeModel, attributes</code></p>
<p>without changing the behaviour of the original <code>build</code> method.</p>
<pre class="brush: ruby;">
class ActiveRecord::Associations::AssociationCollection

  def build_a(klass, attributes = {}, &amp;block)
    if attributes.is_a?(Array)
      attributes.collect { |attr| build_a(klass, attr, &amp;block) }
    else
      build_record_with_type_cast(klass, attributes) do |record|
        block.call(record) if block_given?
        set_belongs_to_association_for(record)
      end
    end
  end

  def build_record_with_type_cast(klass, attrs)
    attrs.update(@reflection.options[:conditions]) if @reflection.options[:conditions].is_a?(Hash)
    record = @reflection.build_association_with_type_cast(klass, attrs)
    if block_given?
      add_record_to_target_with_callbacks(record) { |*block_args| yield(*block_args) }
    else
      add_record_to_target_with_callbacks(record)
    end
  end

end

class ActiveRecord::Reflection::AssociationReflection

  def build_association_with_type_cast(klass, *options)
    if klass &lt;= self.klass
      klass.new(*options)
    else
      raise ArgumentError, &quot;Expected #{self.klass} or subclass of #{self.klass}, got #{klass}&quot;
    end
  end

end
</pre>
<br />Posted in Rails  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mediapeers.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mediapeers.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mediapeers.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mediapeers.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mediapeers.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mediapeers.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mediapeers.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mediapeers.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mediapeers.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mediapeers.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mediapeers.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mediapeers.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mediapeers.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mediapeers.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=56&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mediapeers.wordpress.com/2009/01/20/association-type-cast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9129256fe95d8cd65d63ac5d12eacc86?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matthias Grosser</media:title>
		</media:content>
	</item>
		<item>
		<title>Logging your model with a custom log</title>
		<link>http://mediapeers.wordpress.com/2008/12/05/logging-your-model-with-a-custom-log/</link>
		<comments>http://mediapeers.wordpress.com/2008/12/05/logging-your-model-with-a-custom-log/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 11:59:48 +0000</pubDate>
		<dc:creator>Ingemar Edsborn</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[custom log]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[logging]]></category>

		<guid isPermaLink="false">http://mediapeers.wordpress.com/?p=51</guid>
		<description><![CDATA[Sometimes it can be handy to keep track what a model is doing in a separate log. Here&#8217;s an easy way to do it. class Article &#60; ActiveRecord::Base LOGFILE = File.join(RAILS_ROOT, '/log/', &#34;article_#{RAILS_ENV}.log&#34;) def validate log &#34;was validated!&#34; end def log(*args) args.size == 1 ? (message = args; severity = :info) : (severity, message = [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=51&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Sometimes it can be handy to keep track what a model is doing in a separate log. Here&#8217;s an easy way to do it.</p>
<pre class="brush: ruby;">
class Article &lt; ActiveRecord::Base

  LOGFILE = File.join(RAILS_ROOT, '/log/', &quot;article_#{RAILS_ENV}.log&quot;)

  def validate
    log &quot;was validated!&quot;
  end 

  def log(*args)
    args.size == 1 ? (message = args; severity = :info) : (severity, message = args)
    Article.logger severity, &quot;Article##{self.id}: #{message}&quot;
  end

  def self.logger(severity = nil, message = nil)
    @article_logger ||= Article.open_log
    if !severity.nil? &amp;&amp; !message.nil? &amp;&amp; @article_logger.respond_to?(severity)
      @article_logger.send severity, &quot;[#{Time.now.to_s(:db)}] [#{severity.to_s.capitalize}] #{message}\n&quot;
    end
    message or @article_logger
  end

  def self.open_log
    ActiveSupport::BufferedLogger.new(LOGFILE)
  end

end
</pre>
<br />Posted in Rails Tagged: custom log, log, logging, Rails <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mediapeers.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mediapeers.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mediapeers.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mediapeers.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mediapeers.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mediapeers.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mediapeers.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mediapeers.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mediapeers.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mediapeers.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mediapeers.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mediapeers.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mediapeers.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mediapeers.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=51&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mediapeers.wordpress.com/2008/12/05/logging-your-model-with-a-custom-log/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50e900bb235f219701f77b397d71f815?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Ingemar</media:title>
		</media:content>
	</item>
		<item>
		<title>Extracting symbols or keys with TextMate</title>
		<link>http://mediapeers.wordpress.com/2008/11/06/extracting-symbols-or-keys-with-textmate/</link>
		<comments>http://mediapeers.wordpress.com/2008/11/06/extracting-symbols-or-keys-with-textmate/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 15:01:02 +0000</pubDate>
		<dc:creator>Ingemar Edsborn</dc:creator>
				<category><![CDATA[Funstuff]]></category>
		<category><![CDATA[TextMate]]></category>
		<category><![CDATA[extract keys]]></category>
		<category><![CDATA[extract symbols]]></category>

		<guid isPermaLink="false">http://mediapeers.wordpress.com/?p=45</guid>
		<description><![CDATA[The times I&#8217;d like to get a bunch of symbols from other parts of code, like say, a migration, are plenty. Finally took some time to scribble down a script to do that. #!/usr/bin/env ruby EXCLUDED_WORDS = [&#34;option&#34;, &#34;options&#34;, &#34;default&#34;] selected_text = STDIN.read words = selected_text.gsub(',','').split(' ').each {&#124;s&#124; s.strip!}.select{&#124;s&#124; s.include?(&#34;:&#34;) }.reject{&#124;s&#124; EXCLUDED_WORDS.include?(s.gsub(':','')) } # Rails [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=45&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The times I&#8217;d like to get a bunch of symbols from other parts of code, like say, a migration, are plenty. Finally took some time to scribble down a script to do that.</p>
<pre class="brush: ruby;">
#!/usr/bin/env ruby
EXCLUDED_WORDS = [&quot;option&quot;, &quot;options&quot;, &quot;default&quot;]
selected_text = STDIN.read
words = selected_text.gsub(',','').split(' ').each {|s| s.strip!}.select{|s| s.include?(&quot;:&quot;) }.reject{|s| EXCLUDED_WORDS.include?(s.gsub(':','')) }
# Rails console output attributes for a model with the colon in the end of the name, so let's put it in front
words.each do |word|
  if  word.reverse[0].chr == ':'
    word.chop!
    word.insert(0, ':')
  end
end
print words.join(&quot;, &quot;)
</pre>
<p>Make sure you set the output to <em>create new document</em> otherwise you&#8217;ll replace your current code. I&#8217;d love to see TextMate have the feature to output straight into pastebin.</p>
<br />Posted in Funstuff, TextMate Tagged: extract keys, extract symbols, TextMate <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mediapeers.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mediapeers.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mediapeers.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mediapeers.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mediapeers.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mediapeers.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mediapeers.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mediapeers.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mediapeers.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mediapeers.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mediapeers.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mediapeers.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mediapeers.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mediapeers.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=45&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mediapeers.wordpress.com/2008/11/06/extracting-symbols-or-keys-with-textmate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50e900bb235f219701f77b397d71f815?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Ingemar</media:title>
		</media:content>
	</item>
		<item>
		<title>Sorting arrays and other things in TextMate</title>
		<link>http://mediapeers.wordpress.com/2008/10/09/sorting-arrays-and-other-things-in-textmate/</link>
		<comments>http://mediapeers.wordpress.com/2008/10/09/sorting-arrays-and-other-things-in-textmate/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 21:30:06 +0000</pubDate>
		<dc:creator>Ingemar Edsborn</dc:creator>
				<category><![CDATA[TextMate]]></category>

		<guid isPermaLink="false">http://mediapeers.wordpress.com/?p=28</guid>
		<description><![CDATA[You also have these stacked arrays or hashes in your code? Like when you have a pretty fat model with long attr_accessible statements? I&#8217;ve always been bugged they tend to take some time to eye through when they&#8217;re not sorted or just on a very long line. And sorting them by hand sure can take [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=28&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>You also have these stacked arrays or hashes in your code? Like when you have a pretty fat model with long <em>attr_accessible</em> statements?</p>
<p>I&#8217;ve always been bugged they tend to take some time to eye through when they&#8217;re not sorted or just on a very long line. And sorting them by hand sure can take it&#8217;s time.</p>
<p>I scribbled together a TextMate command to do that for you.</p>
<p>Open up the BundleEditor in Textmate, make a new command and paste following into it:</p>
<pre class="brush: ruby;">
#!/usr/bin/env ruby
selected_text = STDIN.read
text = selected_text.gsub(/\]|\[|\}|\{|\n|\t/,'').split(',').each {|s| s.strip!}.reject{|s| s.size.zero? }.sort
make_split = text.size &gt;= 6 ? true : false
text = text.join(&quot;, &quot;)
['{','['].each {|c| text.insert(0,c) if selected_text.include? c }
['}',']'].each {|c| text += c if selected_text.include? c }
unless make_split
  print text
else
  commas = 0
  intendation = ENV['TM_LINE_INDEX'].to_i - selected_text.length - 1
  text.each_byte do |b|
    print b.chr
    commas += 1 if b.chr == &quot;,&quot;
    if commas &gt;= 3
      print &quot;\n&quot;
      intendation.times { print &quot; &quot; }
      commas = 0
    end
  end
end
</pre>
<p>Now, assign it a hotkey, and following settings:</p>
<p><a href="http://mediapeers.files.wordpress.com/2008/10/textmate_sorting_command_settings.jpg"><img class="aligncenter size-full wp-image-29" title="textmate_sorting_command_settings" src="http://mediapeers.files.wordpress.com/2008/10/textmate_sorting_command_settings.jpg?w=655&#038;h=466" alt="" width="655" height="466" /></a></p>
<p>The code splits on commas, sort each element, line break and auto-intendent according your selection.</p>
<br />Posted in TextMate Tagged: TextMate <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mediapeers.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mediapeers.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mediapeers.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mediapeers.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mediapeers.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mediapeers.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mediapeers.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mediapeers.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mediapeers.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mediapeers.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mediapeers.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mediapeers.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mediapeers.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mediapeers.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=28&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mediapeers.wordpress.com/2008/10/09/sorting-arrays-and-other-things-in-textmate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/50e900bb235f219701f77b397d71f815?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Ingemar</media:title>
		</media:content>

		<media:content url="http://mediapeers.files.wordpress.com/2008/10/textmate_sorting_command_settings.jpg" medium="image">
			<media:title type="html">textmate_sorting_command_settings</media:title>
		</media:content>
	</item>
		<item>
		<title>Greeting all media peers from Ireland&#8230;</title>
		<link>http://mediapeers.wordpress.com/2008/09/21/greeting-all-media-peers-from-ireland/</link>
		<comments>http://mediapeers.wordpress.com/2008/09/21/greeting-all-media-peers-from-ireland/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 19:11:19 +0000</pubDate>
		<dc:creator>Matthias Grosser</dc:creator>
				<category><![CDATA[Funstuff]]></category>

		<guid isPermaLink="false">http://mediapeers.wordpress.com/?p=22</guid>
		<description><![CDATA[&#8230;where you can yield, even if no block is given :) Posted in Funstuff<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=22&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8230;where you can yield, even if no block is given :)</p>
<p><a href="http://mediapeers.files.wordpress.com/2008/09/yield.jpg"><img class="alignnone size-medium wp-image-23" title="yield" src="http://mediapeers.files.wordpress.com/2008/09/yield.jpg?w=300&#038;h=226" alt="" width="300" height="226" /></a></p>
<br />Posted in Funstuff  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mediapeers.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mediapeers.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mediapeers.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mediapeers.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mediapeers.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mediapeers.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mediapeers.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mediapeers.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mediapeers.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mediapeers.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mediapeers.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mediapeers.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mediapeers.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mediapeers.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=22&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mediapeers.wordpress.com/2008/09/21/greeting-all-media-peers-from-ireland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9129256fe95d8cd65d63ac5d12eacc86?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matthias Grosser</media:title>
		</media:content>

		<media:content url="http://mediapeers.files.wordpress.com/2008/09/yield.jpg?w=300" medium="image">
			<media:title type="html">yield</media:title>
		</media:content>
	</item>
		<item>
		<title>giving &amp;it a shot</title>
		<link>http://mediapeers.wordpress.com/2008/07/22/giving-it-a-shot/</link>
		<comments>http://mediapeers.wordpress.com/2008/07/22/giving-it-a-shot/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 16:19:30 +0000</pubDate>
		<dc:creator>Matthias Grosser</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://mediapeers.wordpress.com/?p=18</guid>
		<description><![CDATA[Ruby 1.9 has Enumerable#reduce, while we&#8217;ve got Symbol#to_proc &#8230; which enables us to give enumerables some nifty method injections, right between the eyes, erm, elements:<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=18&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ruby 1.9 has <a href="http://www.ruby-doc.org/core/classes/Enumerable.html#M001148">Enumerable#reduce</a>, while we&#8217;ve got Symbol#to_proc &#8230; which enables us to give enumerables some nifty method injections, right between the eyes, erm, elements:</p>
<p><a href="http://mediapeers.files.wordpress.com/2008/07/reduce-inject.png"><img src="http://mediapeers.files.wordpress.com/2008/07/reduce-inject.png?w=375&#038;h=69" alt="" width="375" height="69" class="alignnone size-full wp-image-19" /></a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mediapeers.wordpress.com/18/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mediapeers.wordpress.com/18/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mediapeers.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mediapeers.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mediapeers.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mediapeers.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mediapeers.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mediapeers.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mediapeers.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mediapeers.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mediapeers.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mediapeers.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mediapeers.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mediapeers.wordpress.com/18/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mediapeers.wordpress.com/18/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mediapeers.wordpress.com/18/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=18&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mediapeers.wordpress.com/2008/07/22/giving-it-a-shot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9129256fe95d8cd65d63ac5d12eacc86?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matthias Grosser</media:title>
		</media:content>

		<media:content url="http://mediapeers.files.wordpress.com/2008/07/reduce-inject.png" medium="image" />
	</item>
		<item>
		<title>A Means To An End</title>
		<link>http://mediapeers.wordpress.com/2008/07/02/a-means-to-an-end/</link>
		<comments>http://mediapeers.wordpress.com/2008/07/02/a-means-to-an-end/#comments</comments>
		<pubDate>Wed, 02 Jul 2008 13:46:04 +0000</pubDate>
		<dc:creator>Matthias Grosser</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[firefox home end keys keyboard]]></category>

		<guid isPermaLink="false">http://mediapeers.wordpress.com/?p=17</guid>
		<description><![CDATA[Most regrettably, Firefox on Mac OS X ignores your DefaultKeyBinding.dict file if you installed one to get Home and End keys working like you&#8217;re used to. Here Matt Ball comes to the rescue. With Firefox Keyfixer for FF3, you can finally forget Ctrl-A and Ctrl-E!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=17&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Most regrettably, Firefox on Mac OS X ignores your DefaultKeyBinding.dict file if you installed one to get Home and End keys working like you&#8217;re used to. Here <a href="http://blog.mvballtech.com/2008/05/fixing-home-and-end-keys-on-firefox-3.html">Matt Ball</a> comes to the rescue. With <a href="http://matthew.v.ball.googlepages.com/keyfixer_firefox_0.3.dmg">Firefox Keyfixer</a> for FF3, you can finally forget Ctrl-A and Ctrl-E!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mediapeers.wordpress.com/17/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mediapeers.wordpress.com/17/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mediapeers.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mediapeers.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mediapeers.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mediapeers.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mediapeers.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mediapeers.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mediapeers.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mediapeers.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mediapeers.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mediapeers.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mediapeers.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mediapeers.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mediapeers.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mediapeers.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mediapeers.wordpress.com&amp;blog=3599543&amp;post=17&amp;subd=mediapeers&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mediapeers.wordpress.com/2008/07/02/a-means-to-an-end/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9129256fe95d8cd65d63ac5d12eacc86?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Matthias Grosser</media:title>
		</media:content>
	</item>
	</channel>
</rss>
