<?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/"
	>

<channel>
	<title>Wendbaar.nl &#187; Development</title>
	<atom:link href="http://wendbaar.nl/blog/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://wendbaar.nl/blog</link>
	<description></description>
	<lastBuildDate>Thu, 06 May 2010 13:50:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Automagically tagging releases in github</title>
		<link>http://wendbaar.nl/blog/2010/04/automagically-tagging-releases-in-github/</link>
		<comments>http://wendbaar.nl/blog/2010/04/automagically-tagging-releases-in-github/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 17:24:46 +0000</pubDate>
		<dc:creator>berl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://wendbaar.nl/blog/?p=198</guid>
		<description><![CDATA[(update: now available as a gem for capistrano)
Today at work we were discussing branching and tagging etc. to keep track of the currently deployed release on various servers. We&#8217;re working with Capistrano to do deploys.
This is a script I came up with:

Edit: refactored some errors out of it
]]></description>
			<content:encoded><![CDATA[<p><strong>(update: now available as a <a href="http://rubygems.org/gems/capistrano-git-tags">gem</a> for capistrano)</strong></p>
<p>Today at work we were discussing branching and tagging etc. to keep track of the currently deployed release on various servers. We&#8217;re working with <a href="http:///capify.org">Capistrano</a> to do deploys.</p>
<p>This is a script I came up with:</p>
<p><script src="http://gist.github.com/381852.js?file=capistrano_git.rb"></script></p>
<p>Edit: refactored some errors out of it</p>
]]></content:encoded>
			<wfw:commentRss>http://wendbaar.nl/blog/2010/04/automagically-tagging-releases-in-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ralf: S3 logfile downloader and merger</title>
		<link>http://wendbaar.nl/blog/2010/02/ralf-s3-logfile-downloader-and-merger/</link>
		<comments>http://wendbaar.nl/blog/2010/02/ralf-s3-logfile-downloader-and-merger/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 18:47:56 +0000</pubDate>
		<dc:creator>berl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Freelance]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://wendbaar.nl/blog/?p=192</guid>
		<description><![CDATA[
	Today we released a new gem called Ralf, it stands for Retreive Amazon LogFiles


	Download the gem at http://gemcutter.org/gems/ralf or browse the source at http://github.com/kjwierenga/ralf

Usage
Prerequirements:

An S3 account (duh)
Enable logging on S3 (use cyberduck for example)

Execution:
r = Ralf.new(:config =&#62; '/my/config.yaml', :date =&#62; '2010-02-01')
r.run

Or run it in one go:
Ralf.run(:config =&#62; '/my/config.yaml', :date =&#62; '2010-02-01')

Parameters:
:config   a YAML [...]]]></description>
			<content:encoded><![CDATA[<p>
	Today we released a new gem called <strong>Ralf</strong>, it stands for <strong>Retreive Amazon LogFiles</strong>
</p>
<p>
	Download the gem at <a href="http://gemcutter.org/gems/ralf">http://gemcutter.org/gems/ralf</a> or browse the source at <a href="http://github.com/kjwierenga/ralf">http://github.com/kjwierenga/ralf</a>
</p>
<h3>Usage</h3>
<p>Prerequirements:</p>
<ul>
<li>An S3 account (duh)</li>
<li>Enable logging on S3 (use <a href="http://cyberduck.ch/">cyberduck</a> for example)</li>
</ul>
<p>Execution:</p>
<pre><code>r = Ralf.new(:config =&gt; '/my/config.yaml', :date =&gt; '2010-02-01')
r.run
</code></pre>
<p>Or run it in one go:</p>
<pre><code>Ralf.run(:config =&gt; '/my/config.yaml', :date =&gt; '2010-02-01')
</code></pre>
<h4>Parameters:</h4>
<pre><code>:config   a YAML config file, if none given it tries to open /etc/ralf.yaml or ~/.ralf.yaml
:date     the date to parse

:aws_access_key_id      (required in config)
:aws_secret_access_key  (required in config)
:out_path               (required in config)
:out_prefix             (optional, defaults to 's3_combined') Prefix the output file
</code></pre>
<p>You can ommit a configuration file when you supply the required parameters <strong>:aws_access_key_id</strong>_, <strong>:aws_secret_access_key</strong> and <strong>:out_path</strong><br />
They take precedence over the config file</p>
<h3>Caveats</h3>
<ul>
<li>There is no logrotation as we know it like on regular unix machines</li>
</ul>
<p>More info: <a href="http://docs.amazonwebservices.com/AmazonS3/latest/ServerLogs.html">S3 Server Access Logging</a></p>
<h3>TODO</3></p>
<ul>
<li>CLI executable</li>
<li>Grouping/combinig on week/month</li>
</ul>
<h3>Credits:</h3>
<p>This plugin is created for <a href="http://kerkdienstgemist.nl" title="Kerkdienst Gemist"><em>kerkdienstgemist.nl</em></a> for processing the logfiles generated by <a href="http://aws.amazon.com/s3/"><em>S3</em></a>.</p>
<p>Authors: <a href="http://github.com/LeipeLeon">Leon Berenschot</a> and <a href="http://github.com/kjwierenga">K.J. Wierenga</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wendbaar.nl/blog/2010/02/ralf-s3-logfile-downloader-and-merger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sending prawn documents with ActionMailer</title>
		<link>http://wendbaar.nl/blog/2009/12/sending-prawn-documents-with-actionmailer/</link>
		<comments>http://wendbaar.nl/blog/2009/12/sending-prawn-documents-with-actionmailer/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 08:32:18 +0000</pubDate>
		<dc:creator>berl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://beriedata.nl/blog/?p=106</guid>
		<description><![CDATA[Problem: How to send a prawn pdf wich normally is generated by a controller.
and keeping it DRY
Required: Prawn &#038; prawnto

first: Make your prawnto settings global with an initializer

?Download prawnto_globals.rbPRAWN_DEFAULT_STYLES = &#123;
  :page_size   =&#62; 'A4',
  :inline      =&#62; true,
  :left_margin =&#62; 50
&#125;

second: create a ActionMailer
./script/generate mailer recipient_mailer [...]]]></description>
			<content:encoded><![CDATA[<h2>Problem: How to send a prawn pdf wich normally is generated by a controller.</h2>
<p>and keeping it DRY</p>
<p>Required: Prawn &#038; prawnto</p>
<p><span id="more-106"></span></p>
<p>first: Make your prawnto settings global with an initializer</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://wendbaar.nl/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=106&amp;download=prawnto_globals.rb">prawnto_globals.rb</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1063"><td class="code" id="p106code3"><pre class="ruby" style="font-family:monospace;">PRAWN_DEFAULT_STYLES = <span style="color:#006600; font-weight:bold;">&#123;</span>
  <span style="color:#ff3333; font-weight:bold;">:page_size</span>   <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'A4'</span>,
  <span style="color:#ff3333; font-weight:bold;">:inline</span>      <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#0000FF; font-weight:bold;">true</span>,
  <span style="color:#ff3333; font-weight:bold;">:left_margin</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006666;">50</span>
<span style="color:#006600; font-weight:bold;">&#125;</span></pre></td></tr></table></div>

<p>second: create a ActionMailer</p>
<pre>./script/generate mailer recipient_mailer invoice</pre>
<p>third: edit the generated recipient mailer (note: because I&#8217;m using the views from the controller I&#8217;ve removed the autogenerated invoice.erb. Otherwise these will be included as well)</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://wendbaar.nl/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=106&amp;download=recipient_mailer.rb">recipient_mailer.rb</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p1064"><td class="code" id="p106code4"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Include (optional) controller helpers</span>
<span style="color:#9966CC; font-weight:bold;">class</span> <span style="color:#6666ff; font-weight:bold;">Prawn::Document</span>
  <span style="color:#9966CC; font-weight:bold;">include</span> PdfHelper
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">class</span> RecipientMailer <span style="color:#006600; font-weight:bold;">&lt;</span> <span style="color:#6666ff; font-weight:bold;">ActionMailer::Base</span>
  <span style="color:#008000; font-style:italic;"># explicitly require prawn, so we get all the goodieness</span>
  <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'prawn'</span>
  <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;prawn/format&quot;</span>
  <span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;prawn/layout&quot;</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> invoice<span style="color:#006600; font-weight:bold;">&#40;</span>ledger_item<span style="color:#006600; font-weight:bold;">&#41;</span>
    subject    <span style="color:#996600;">&quot;The subject&quot;</span>
    recipients <span style="color:#996600;">'&quot;Name&quot; &lt;info@example.com&gt;'</span>
    from       <span style="color:#996600;">'&quot;Name&quot; &lt;info@example.com&gt;'</span>
    sent_on    <span style="color:#CC00FF; font-weight:bold;">Time</span>.<span style="color:#9900CC;">now</span>
    content_type    <span style="color:#996600;">&quot;multipart/mixed&quot;</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># the templates live in RAILSROOT/app/views/documents</span>
    <span style="color:#008000; font-style:italic;"># these are views normally generated by the DocumentsController</span>
    part<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:content_type</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">&quot;multipart/alternative&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>alternative<span style="color:#006600; font-weight:bold;">|</span>
      alternative.<span style="color:#9900CC;">part</span> <span style="color:#996600;">&quot;text/plain&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>p<span style="color:#006600; font-weight:bold;">|</span>
        <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">body</span> = render_message<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;documents/show.txt&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:ledger_item</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> ledger_item<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
      alternative.<span style="color:#9900CC;">part</span> <span style="color:#996600;">&quot;text/html&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>p<span style="color:#006600; font-weight:bold;">|</span>
        <span style="color:#CC0066; font-weight:bold;">p</span>.<span style="color:#9900CC;">body</span> = render_message<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;documents/show.html&quot;</span>, <span style="color:#ff3333; font-weight:bold;">:ledger_item</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> ledger_item<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
    <span style="color:#008000; font-style:italic;"># And here is the magic:</span>
    <span style="color:#008000; font-style:italic;"># probably could be refactored, but it's working!</span>
    attachment <span style="color:#996600;">&quot;application/pdf&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>a<span style="color:#006600; font-weight:bold;">|</span>
      a.<span style="color:#9900CC;">filename</span> = <span style="color:#996600;">&quot;#{ledger_item.period}.pdf&quot;</span>
&nbsp;
      template = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span>Rails.<span style="color:#9900CC;">root</span>, <span style="color:#996600;">'app'</span>, <span style="color:#996600;">'views'</span>, <span style="color:#996600;">'documents'</span>, <span style="color:#996600;">'show.pdf.prawn'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">read</span>
&nbsp;
      pdf = <span style="color:#6666ff; font-weight:bold;">Prawn::Document</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>PRAWN_DEFAULT_STYLES<span style="color:#006600; font-weight:bold;">&#41;</span>;
      pdf.<span style="color:#9900CC;">instance_eval</span> <span style="color:#9966CC; font-weight:bold;">do</span>
        <span style="color:#0066ff; font-weight:bold;">@ledger_item</span> = ledger_item
        <span style="color:#CC0066; font-weight:bold;">eval</span><span style="color:#006600; font-weight:bold;">&#40;</span>template<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
      a.<span style="color:#9900CC;">body</span> = pdf.<span style="color:#9900CC;">render</span>
    <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://wendbaar.nl/blog/2009/12/sending-prawn-documents-with-actionmailer/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>RER2009 Rumble</title>
		<link>http://wendbaar.nl/blog/2009/11/rer2009-rumble/</link>
		<comments>http://wendbaar.nl/blog/2009/11/rer2009-rumble/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 11:55:20 +0000</pubDate>
		<dc:creator>berl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://wendbaar.nl/blog/?p=149</guid>
		<description><![CDATA[We (@kjw and @leipeleon) participated in the RubyEnRails Rumble last weekend. It was a blast!
]]></description>
			<content:encoded><![CDATA[<p>We (<a href="http://twitter.com/kjw">@kjw</a> and <a href="http://twitter.com/leipeleon">@leipeleon</a>) participated in the <a href="http://2009.rubyenrails.nl/">RubyEnRails</a> Rumble last weekend. It was a blast!</p>
]]></content:encoded>
			<wfw:commentRss>http://wendbaar.nl/blog/2009/11/rer2009-rumble/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using github on the mac for non-programmers</title>
		<link>http://wendbaar.nl/blog/2009/06/using-github-on-the-mac-for-non-programmers/</link>
		<comments>http://wendbaar.nl/blog/2009/06/using-github-on-the-mac-for-non-programmers/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 13:30:20 +0000</pubDate>
		<dc:creator>berl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[github]]></category>

		<guid isPermaLink="false">http://beriedata.nl/blog/?p=92</guid>
		<description><![CDATA[A quick and dirty tutorial for some friends of mine.
Needed software:

git-osx-installer: Full native OSX git client.

Nice to have:

Textmate: text editor.
GitHub account (for push rights).
GitX: Grapichal tool for commiting to local repo (OSX 10.5+).

Create account on github
 Go to http://github.com for an account.

Optional: Provide an SSH key for pushing changes.
Clone a Repo

My advice is to generate [...]]]></description>
			<content:encoded><![CDATA[<p>A quick and dirty tutorial for some friends of mine.</p>
<h2>Needed software:</h2>
<ul>
<li><a href="http://code.google.com/p/git-osx-installer/downloads/list?can=3">git-osx-installer</a>: Full native OSX git client.</li>
</ul>
<h2>Nice to have:</h2>
<ul>
<li><a href="http://macromates.com/">Textmate</a>: text editor.</li>
<li><a href="https://github.com/">GitHub</a> account (for push rights).</li>
<li><a href="http://gitx.frim.nl/">GitX</a>: Grapichal tool for commiting to local repo (OSX 10.5+).</li>
</ul>
<h2>Create account on github</h2>
<p> Go to <a href="http://github.com">http://github.com</a> for an account.</p>
<p>
Optional: <a href="http://github.com/guides/providing-your-ssh-key">Provide an SSH</a> key for pushing changes.</p>
<h2>Clone a Repo</h2>
<p><img src="http://beriedata.nl/blog/wp-content/uploads/2009/06/GitHub.jpg"/><br />
My advice is to generate a special dir for the projects (mine is <code>Rails</code>).<br/><br />
Fire up the terminal and type:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p92code8'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p928"><td class="code" id="p92code8"><pre class="shell" style="font-family:monospace;">    # Goto the dir
cd ~/Rails
    # if the repo is read only:
git clone git://github.com/LeipeLeon/facebooker.git
    # if you have push rights:
git clone git@github.com:LeipeLeon/facebooker.git
    # if you installed GitX (as mentioned above)
gitx</pre></td></tr></table></div>

<h2>Adding changes</h2>
<p>With the gitx program it&#8217;s easy to commit thanges to your local repo. When these are ready to commit to the master you sync it first with the <code>HEAD</code> and then push your changes.

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p92code9'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p929"><td class="code" id="p92code9"><pre class="shell" style="font-family:monospace;">    # get changes from the master repo to your local repo
git pull
    # push your changes
git push</pre></td></tr></table></div>

<h3>Additional info:</h3>
<p>If it&#8217;s a rails application you&#8217;re cloning, startup the server with</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p92code10'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p9210"><td class="code" id="p92code10"><pre class="shell" style="font-family:monospace;">    # Copy database credentials, uses sqlite3 as default
cp config/database.yml.example config/database.yml
    # install required gems
rake gems:install
    # make tables
rake db:migrate
    # startup server at http://localhost:3000
script/server</pre></td></tr></table></div>

<p> and you will be able to use the application at http://localhost:3000</p>
]]></content:encoded>
			<wfw:commentRss>http://wendbaar.nl/blog/2009/06/using-github-on-the-mac-for-non-programmers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://beriedata.nl/blog/wp-content/uploads/2009/06/GitHub.jpg" length="24216" type="image/jpeg" />
<enclosure url="http://beriedata.nl/blog/wp-content/uploads/2009/06/GitHub.jpg" length="24216" type="image/jpeg" />
<enclosure url="http://beriedata.nl/blog/wp-content/uploads/2009/06/GitHub.jpg" length="24216" type="image/jpeg" />
<enclosure url="http://beriedata.nl/blog/wp-content/uploads/2009/06/GitHub.jpg" length="24216" type="image/jpeg" />
		</item>
		<item>
		<title>Burgerweeshuis Evenementen Kalender</title>
		<link>http://wendbaar.nl/blog/2009/05/burgerweeshuis-evenementen-kalender/</link>
		<comments>http://wendbaar.nl/blog/2009/05/burgerweeshuis-evenementen-kalender/#comments</comments>
		<pubDate>Wed, 13 May 2009 22:20:52 +0000</pubDate>
		<dc:creator>berl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://beriedata.nl/blog/?p=84</guid>
		<description><![CDATA[Bij het gebrek aan een RSS feed van de burgerweeshuis agenda heb ik zelf een (ruby) tooltje gebouwd om alle nieuwe evenementen in google calender te plaatsen.
Tevens wordt elk nieuw evenement automatisch geplaats in het twitter account @burgerweeshuis. Via @nuinhetbw alle evenementen een uur van te voren aangekondigd.
Get yours here:
  
Dit tooltje heeft de [...]]]></description>
			<content:encoded><![CDATA[<p>Bij het gebrek aan een RSS feed van de burgerweeshuis agenda heb ik zelf een (ruby) tooltje gebouwd om alle nieuwe evenementen in google calender te plaatsen.</p>
<p>Tevens wordt elk nieuw evenement automatisch geplaats in het twitter account <a href="http://twitter.com/burgerweeshuis">@burgerweeshuis</a>. Via <a href="http://twitter.com/nuinhetbw">@nuinhetbw</a> alle evenementen een uur van te voren aangekondigd.</p>
<p>Get yours here:<br />
<a href="http://www.google.com/calendar/feeds/e333349c9cothvqgmsfdqbuego%40group.calendar.google.com/public/basic"><img src="http://www.google.com/calendar/images/xml.gif" /></a> <a href="http://www.google.com/calendar/ical/e333349c9cothvqgmsfdqbuego%40group.calendar.google.com/public/basic.ics"><img src="http://www.google.com/calendar/images/ical.gif" /></a> <a href="http://www.google.com/calendar/embed?src=e333349c9cothvqgmsfdqbuego%40group.calendar.google.com&amp;ctz=Europe/Rome"><img src="http://www.google.com/calendar/images/html.gif" /></a></p>
<p>Dit tooltje heeft de aandacht getrokken van diverse andere organisaties en ben dan ook van plan om hier iets meer mee te gaan doen. I&#8217;ll keep you posted!</p>
]]></content:encoded>
			<wfw:commentRss>http://wendbaar.nl/blog/2009/05/burgerweeshuis-evenementen-kalender/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.google.com/calendar/images/html.gif" length="423" type="image/gif" />
<enclosure url="http://www.google.com/calendar/images/html.gif" length="423" type="image/gif" />
<enclosure url="http://www.google.com/calendar/images/html.gif" length="423" type="image/gif" />
<enclosure url="http://www.google.com/calendar/images/html.gif" length="423" type="image/gif" />
		</item>
		<item>
		<title>Textmate Comments doesn&#8217;t work anymore!</title>
		<link>http://wendbaar.nl/blog/2009/02/textmate-comments-doesnt-work-anymore/</link>
		<comments>http://wendbaar.nl/blog/2009/02/textmate-comments-doesnt-work-anymore/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 10:48:32 +0000</pubDate>
		<dc:creator>berl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[comment]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false">http://beriedata.nl/blog/?p=78</guid>
		<description><![CDATA[I like to stay on the edge of development so I&#8217;ve installed all the bundles available for TextMate in http://svn.textmate.org/trunk  to my ~/Library/Application Support/TextMate.
But then you get a lot of bundles you don&#8217;t need like Active4D and ASP, so I disabled all the bundles who&#8217;s name didn&#8217;t ring a bell to me. The menu [...]]]></description>
			<content:encoded><![CDATA[<p>I like to stay on the edge of development so I&#8217;ve installed all the bundles available for TextMate in <a href="http://svn.textmate.org/trunk" class="external">http://svn.textmate.org/trunk</a>  to my <code>~/Library/Application Support/TextMate</code>.</p>
<p>But then you get a lot of bundles you don&#8217;t need like Active4D and ASP, so I disabled all the bundles who&#8217;s name didn&#8217;t ring a bell to me. The menu is readable again! Little did I know it was going to bite me in the foot the next day.</p>
<p>I performed this action late at night, just before getting some shut-eye. The next morning I was happily coding away until I discovered the Comment (command + /) feature didn&#8217;t work anymore!</p>
<p>Damn!</p>
<p>At first I thought it was a corrupted bundle, so I disabled all bundles to no avail. Then I reinstalled TextMate, nothing&#8230;.</p>
<p>I have this plugin called <a href="http://ciaranwal.sh/2008/08/05/textmate-plug-in-projectplus" class="external">Project+</a>, updated it: nope, reinstall it: nope, disable it: nope.</p>
<p>With <a href="http://www.appzapper.com/" class="external">AppZapper</a> I deleted the caches: no joy.</p>
<p>So I was already an hour away and I got frustrated&#8230;.. So I enabled all plugins and Tada! IT WORKED AGAIN! By trail and error I found out: <br/></p>
<blockquote><p><span style="color: red;"><b>It&#8217;s all in the bundle called &#8220;Source&#8221;</b></span>.</p></blockquote>
<p>Re-enabling this plugin restores all functionality! Whoohoo!!</p>
<p>So, here we go again, coding happily away&#8230;. <span style="font:'arial unicode MS', arial, geneva, sans-serif bold;">&#9775;</span></p>
]]></content:encoded>
			<wfw:commentRss>http://wendbaar.nl/blog/2009/02/textmate-comments-doesnt-work-anymore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create a Facebook app with Rails</title>
		<link>http://wendbaar.nl/blog/2009/02/create-a-facebook-app-with-rails/</link>
		<comments>http://wendbaar.nl/blog/2009/02/create-a-facebook-app-with-rails/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 10:57:53 +0000</pubDate>
		<dc:creator>berl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://wendbaar.nl/blog/?p=179</guid>
		<description><![CDATA[In the beginning of this year I scored a programming gig for Wakoopa to spice up their Facebook app.
The original app was created in .NET by a third party and was buggy as hell. The goal was to recreate the app in Rails and have at least the same functionality.
Some befriended (PHP) developers warned me [...]]]></description>
			<content:encoded><![CDATA[<p>In the beginning of this year I scored a programming gig for <a href="http://wakoopa.com/" class="external">Wakoopa</a> to spice up their <a href="http://apps.facebook.com/wakoopatracker/" class="external">Facebook app</a>.</p>
<p>The original app was created in .NET by a third party and was buggy as hell. The goal was to recreate the app in Rails and have at least the same functionality.</p>
<p>Some befriended (PHP) developers warned me that facebook has some serious pitfalls so before I made an estimate for the project I bought a PDF called <a href="http://www.pragprog.com/titles/mmfacer/developing-facebook-platform-applications-with-rails" class="external">Developing Facebook Platform Applications with Rails</a> from <a href="http://www.pragprog.com/" class="external">The Pragmatic Programmers</a> and a PDF book from <a href="http://peepcode.com/products/rails-on-facebook">Peepcode</a>.</p>
<p>Thanks to this PDF and the <a href="http://github.com/mmangino/facebooker/tree/master" class="external">Facebooker plugin</a> it was doable. I made the sample application as described in the PDF and so I had enough knowledge to create the WakoopaFacebook app. My advice: buy it!</p>
<p><span id="more-179"></span><br />
<h3>Facebooker plugin</h3>
<p>The data that has to be shown on the Facebook page comes from the <a href="http://wakoopa.com/api/">Wakoopa API</a>. This has to be converted to FBML markup to be compatible with Facebook. You also have the choice to work with iframes but FBML has some advanced features like automatic substitution of id&#8217;s to user names and userdetails.</p>
<p>A big plus also is that you don&#8217;t need to store all that data (it&#8217;s not permitted by facebook to store data longer than 24 hours), Facebook takes care of it. Also it takes the user&#8217;s privacy setting in consideration.</p>
<p>The Facebooker plugin provides a lot of things for you to make development a breeze. Session handling is automaticly provided by adding <code>ensure_application_is_installed_by_facebook_user</code> to the controller. </p>
<h2>Facebook Caveats</h2>
<p>The <a href="http://wiki.developers.facebook.com/">Facebook Wiki</a> is a mess, so here are some tips that could save you some time. Also all requests from facebook are POST&#8217;s.</p>
<h3>Session Keys</h3>
<p>If the user hasn&#8217;t been to your application for a while (session timed out, 1 hour) or logged out (whichever comes first), the session_key becomes invalid. Costed me a few hours to find out, but you can get infinite session keys. </p>
<p>By asking the user for permission you can use offline_access, this will generate a infinite session key automaticly. (use
<pre>&lt;%= fb_prompt_permission :offline_access, "May we publish on your feeds?" %&gt;</pre>
<p> to ask for access).</p>
<p>There is a difference between timelimited and infinite keys:
<pre>Infinite key:
   83d89fd715ac900df4783a68-741234111111
Temporary key with expiration:
   2.8dDnBR2FKc6yOeN2hHISRw__.86400.1232319600-741234111111</pre>
<p> but I don&#8217;t know the exact scheme of this.
</p>
<p>See <a href="http://wiki.developers.facebook.com/index.php/Extended_permissions">Extended_permissions</a> and <a href="http://wiki.developers.facebook.com/index.php/New_Design_Platform_Changes#Changes_to_Session_Keys">Changes_to_Session_Keys</a> for more details.</p>
<h3>Updating the profile box/newsfeed</h3>
<p>This can take a while (sometimes several seconds!) so make sure you don&#8217;t do that every request cycle. Put it in a separate process. Also publising to the newsfeed requires a session key, use the infinite session key to update the newsfeed if the user is not logged in.</p>
<h3>Make your actions responsive</h3>
<p>Facebook is very tight on timeouts, so if you&#8217;re not responsive enough the user will get a error message. Keep those controllers fast!</p>
<p><span style="font:'arial unicode MS', arial, geneva, sans-serif bold;">☯</span></p>
]]></content:encoded>
			<wfw:commentRss>http://wendbaar.nl/blog/2009/02/create-a-facebook-app-with-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Time Tracking: In Analog Style</title>
		<link>http://wendbaar.nl/blog/2009/01/time-tracking-in-analog-style/</link>
		<comments>http://wendbaar.nl/blog/2009/01/time-tracking-in-analog-style/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 14:31:32 +0000</pubDate>
		<dc:creator>berl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Freelance]]></category>
		<category><![CDATA[analog]]></category>
		<category><![CDATA[gtd]]></category>
		<category><![CDATA[time tracking]]></category>

		<guid isPermaLink="false">http://beriedata.nl/blog/?p=64</guid>
		<description><![CDATA[As a freelancer you need to keep track of your time spend on a account. Blech! Not my favorite task, but it has to be done. I tried several web and desktop tools, but it didn&#8217;t satisfy me.
Reading David Allan&#8217;s &#8216;Getting Things Done&#8217; persueded me to follow a style of tracking items with OmniFocus but [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://beriedata.nl/blog/wp-content/uploads/2009/01/img-0228.jpg"><img src="http://beriedata.nl/blog/wp-content/uploads/2009/01/img-0228-300x225.jpg" border="0" alt="IMG_0228.JPG" width="300" height="225" align="right" /></a>As a freelancer you need to keep track of your time spend on a account. Blech! Not my favorite task, but it has to be done. I tried several web and desktop tools, but it didn&#8217;t satisfy me.</p>
<p>Reading David Allan&#8217;s <a href="http://www.bol.com/nl/p/boeken/getting-things-done/1001004005752454/" class="external">&#8216;Getting Things Done&#8217;</a> persueded me to follow a style of tracking items with OmniFocus but it doesn&#8217;t include any timetracking capabilities.</p>
<p>Searching around the web brought me to the website of <a href="http://davidseah.com/" class="external">David Seah</a> and specificaly the <a href="http://davidseah.com/blog/comments/emergent-task-timer-updates/" class="external"><strong>Emergent Time Tracker</strong></a>.</p>
<p><span id="more-64"></span>&#8216;Why&#8217; you might think, &#8216;It&#8217;s the digital Age! Use an App!&#8217;. Nope, won&#8217;t do that because <strong>it becomes a hassle to startup the program/website, switching application, etc&#8230;</strong></p>
<p>Just writing it down <strong>&#8216;analog style&#8217;</strong> it&#8217;s <strong>quick</strong> and <strong>easy, minimal effort</strong>, no program crashes and also applicable with other tasks not computer related.</p>
<p>Every morning I start with a fresh sheet, fill in the date/start time and look on the previous sheet for things I didn&#8217;t finish. Then I look in OmniFocus to sync the various items done/to be done. If a phonecall call comes in or just got an idea I jot it down directly. If I&#8217;m distracted I fill the box with a dash.</p>
<p>On the end of the week I&#8217;m flipping through all sheets of that week to summarize the spend time so I can bill my customer. Didn&#8217;t find a program that suites me yet to do the billing, but for now it&#8217;s doable.</p>
<p>On my previous job it also helped me to tell the mangement that, even I was assigned several tasks with a deadline, I couldn&#8217;t finish them because I was interrupted constantly with &#8216;Fire Fighting&#8217; tasks. Because I could now prove it, they realised it and altered procedures so I could <strong>Get Things Done™</strong>.</p>
<p>So it definitely helped me to focus on tasks, let me know what you think about it! <span style="font:'arial unicode MS', arial, geneva, sans-serif bold;">☯</span></p>
]]></content:encoded>
			<wfw:commentRss>http://wendbaar.nl/blog/2009/01/time-tracking-in-analog-style/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Target Priced Contracts.</title>
		<link>http://wendbaar.nl/blog/2009/01/target-priced-contracts/</link>
		<comments>http://wendbaar.nl/blog/2009/01/target-priced-contracts/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 10:03:13 +0000</pubDate>
		<dc:creator>berl</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Freelance]]></category>
		<category><![CDATA[estimate]]></category>

		<guid isPermaLink="false">http://blog.mmpreview.nl/?p=52</guid>
		<description><![CDATA[Found on Freelancing Tips via Rails Camp 4 in the comments an other way to calculate/estimate the costs to keep it fair.
Derek Winter said:
Anyway, last year when looking into how best to structure commerical agreements for Agile Development work, I came across the idea of Target Priced Contracts.
The concept is that fixed price contracts mean [...]]]></description>
			<content:encoded><![CDATA[<p>Found on <a href="http://freelancing-gods.com/posts/freelancing_tips_via_rails_camp_4">Freelancing Tips via Rails Camp 4</a> in the comments an other way to calculate/estimate the costs to keep it fair.</p>
<blockquote><p>Derek Winter said:</p>
<p>Anyway, last year when looking into how best to structure commerical agreements for Agile Development work, I came across the idea of Target Priced Contracts.</p>
<p>The concept is that fixed price contracts mean the developer wears all the risk and therefore will need to add a buffer to mitigate the risk (ie. 30% on top, or the other multipliers described above).</p>
<p>Rather than take that approach, this method shares the risk between the client and the developer</p>
<p>Once the work is scoped and an agreed set of deliverables defined, a price is set based on your reasonable estimate of durations (the target price, based on your daily rate). This price is signed off on by the customer. For the example, lets say 10 days, $750 per day, target price $7500.</p>
<p>During the project, rather than pay your full rate, they pay your &#8220;cost&#8221; along the way. In our situation, thats the salary of the developer plus a little to cover overheads. For freelancers, its the rent plus enough to feed yourself and cover general expenses. (for the example, lets say $300 per day)</p>
<p>This will naturally leave a gap between what you&#8217;re paid and what the target price is (10 x $300 = $3,000 :- final payment is $4,500). If the contract finishes on time, then this is the amount the client pays you at the end and we&#8217;re all happy.</p>
<p>If you are outstanding and find faster ways of completing the work and finish ahead of time (say 8 days), the client still pays that amount. They&#8217;re happy because they paid less overall for the project (8&#215;300 + 4,500 = $6,900) and you&#8217;re happy because you made the same amount of profit for less work ($4,500 for 8 days work instead of 10) and can get onto the next project</p>
<p>If however there is scope creep, things get tricky, something goes wrong and it takes longer than 10 days (say 12 days) then the client continues to pay your costs until you&#8217;re finished (an additional 2&#215;300), but only pays the same final payment ($4,500).</p>
<p>So, they pay more (12&#215;300 + 4,500 = 8,100) and your profit margin goes down (4,500 profit out of 8,100 total payment instead of 4,500 out of 7,500). So, you both feel some pain, but its not unfairly felt by either party.</p>
<p>This means that both parties are focussed on getting a good result &#8211; clear requirements, efficient delivery.</p></blockquote>
<p><span style="font:'arial unicode MS', arial, geneva, sans-serif bold;">&#9775;</span></p>
]]></content:encoded>
			<wfw:commentRss>http://wendbaar.nl/blog/2009/01/target-priced-contracts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
