<?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>bitwalker.nl</title>
	<atom:link href="http://www.bitwalker.nl/feed" rel="self" type="application/rss+xml" />
	<link>http://www.bitwalker.nl</link>
	<description>agile software development</description>
	<lastBuildDate>Sat, 05 Sep 2009 20:27:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Using Yahoo Pipes and Tripolis Dialogue to aggregate news in a weekly newsletter</title>
		<link>http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter</link>
		<comments>http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter#comments</comments>
		<pubDate>Sat, 05 Sep 2009 20:24:22 +0000</pubDate>
		<dc:creator>Harald Walker</dc:creator>
				<category><![CDATA[email]]></category>
		<category><![CDATA[pipes]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://www.bitwalker.nl/?p=252</guid>
		<description><![CDATA[In my last post about the Vegalicious Weekly newsletter I demonstrated how to use RSS feeds from my blog to populate the content of my newsletter in Tripolis Dialogue. Later I also added news items to the newsletter and wanted to combine news from multiple sites. So I had to find a way to aggregate [...]]]></description>
			<content:encoded><![CDATA[<p>In my last post about the Vegalicious Weekly newsletter I demonstrated how to use RSS feeds from my blog to populate the content of my newsletter in <a href="http://www.tripolis.com">Tripolis Dialogue</a>. Later I also added news items to the newsletter and wanted to combine news from multiple sites. So I had to find a way to aggregate news items of RSS feeds and limit the results to those of the past week.<br />
The solution came with <a href="http://pipes.yahoo.com/pipes/">Yahoo Pipes</a>, a visual tool to aggregate, manipulate, and mashup content from around the web. With Pipes I was able to combine two feeds, filter out only those news items of last week and sort them all by date again. The result is a regular RSS feed, which can be used in Tripolis Dialogue as described previously.</p>
<p><object width="480" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6446155&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=6446155&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="480" height="300"></embed></object>
<p><a href="http://vimeo.com/6446155">Using Yahoo Pipes and Tripolis Dialogue to aggregate news in a weekly newsletter</a> from <a href="http://vimeo.com/haraldwalker">Harald Walker</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d252').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark It</em></strong></a>
<br />
<div class="d252" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter" rel="nofollow" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter&amp;title=Using+Yahoo+Pipes+and+Tripolis+Dialogue+to+aggregate+news+in+a+weekly+newsletter" rel="nofollow" title="Add to&nbsp;Blogmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bmarks.png" title="Add to&nbsp;Blogmarks" alt="Add to&nbsp;Blogmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter&amp;title=Using+Yahoo+Pipes+and+Tripolis+Dialogue+to+aggregate+news+in+a+weekly+newsletter" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter&amp;title=Using+Yahoo+Pipes+and+Tripolis+Dialogue+to+aggregate+news+in+a+weekly+newsletter" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Using+Yahoo+Pipes+and+Tripolis+Dialogue+to+aggregate+news+in+a+weekly+newsletter&amp;url=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter&amp;title=Using+Yahoo+Pipes+and+Tripolis+Dialogue+to+aggregate+news+in+a+weekly+newsletter" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://fleck.com/litebookmarklet.php?url=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter&amp;title=Using+Yahoo+Pipes+and+Tripolis+Dialogue+to+aggregate+news+in+a+weekly+newsletter" rel="nofollow" title="Add to&nbsp;Fleck"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/fleck.png" title="Add to&nbsp;Fleck" alt="Add to&nbsp;Fleck" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter&amp;title=Using+Yahoo+Pipes+and+Tripolis+Dialogue+to+aggregate+news+in+a+weekly+newsletter" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://netvouz.com/action/submitBookmark?url=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter&amp;title=Using+Yahoo+Pipes+and+Tripolis+Dialogue+to+aggregate+news+in+a+weekly+newsletter&amp;popup=no" rel="nofollow" title="Add to&nbsp;Netvouz"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/netvouz.png" title="Add to&nbsp;Netvouz" alt="Add to&nbsp;Netvouz" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter&amp;title=Using+Yahoo+Pipes+and+Tripolis+Dialogue+to+aggregate+news+in+a+weekly+newsletter" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter&amp;title=Using+Yahoo+Pipes+and+Tripolis+Dialogue+to+aggregate+news+in+a+weekly+newsletter" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter&amp;title=Using+Yahoo+Pipes+and+Tripolis+Dialogue+to+aggregate+news+in+a+weekly+newsletter" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter&amp;title=Using+Yahoo+Pipes+and+Tripolis+Dialogue+to+aggregate+news+in+a+weekly+newsletter" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter&amp;t=Using+Yahoo+Pipes+and+Tripolis+Dialogue+to+aggregate+news+in+a+weekly+newsletter" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d252').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d252').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.bitwalker.nl/blog/using-yahoo-pipes-and-tripolis-dialogue-to-aggregate-news-in-a-weekly-newsletter/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>From blog to newsletter and back</title>
		<link>http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back</link>
		<comments>http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back#comments</comments>
		<pubDate>Mon, 16 Mar 2009 22:37:45 +0000</pubDate>
		<dc:creator>Harald Walker</dc:creator>
				<category><![CDATA[email]]></category>
		<category><![CDATA[freemarker]]></category>

		<guid isPermaLink="false">http://www.bitwalker.nl/?p=170</guid>
		<description><![CDATA[It is often being said, that software developers should be using their own software, so after many years it was about time for me to get going with my own newsletter. Since I also have a food blog called Vegalicious, the idea was born to send a weekly newsletter with the summary of the posts [...]]]></description>
			<content:encoded><![CDATA[<p>It is often being said, that software developers should be using their own software, so after many years it was about time for me to get going with my own newsletter. Since I also have a food blog called <a href="http://www.vegalicious.org">Vegalicious</a>, the idea was born to send a weekly newsletter with the summary of the posts and comments of the past week.</p>
<p><strong>Managing subscribers</strong><br />
In order to get subscribers for the newsletter I used the new web-forms module in <a href="http://www.tripolis.com/en/index.php">Tripolis Dialogue</a>, which we just released last month. After specifying the database fields and the form details, I only had to add a bit of html with a subscribe form as widget in Wordpress.</p>
<p><a href="http://www.bitwalker.nl/wp-content/uploads/2009/03/widget_and_form.gif" rel="lightbox"><img src="http://www.bitwalker.nl/wp-content/uploads/2009/03/widget_and_form-300x214.gif" alt="Widget and form" title="Widget and form" width="300" height="214" class="alignnone size-medium wp-image-196" /></a></p>
<p>For the confirmation mails during the registration process I used my own customized design, similar to the final newsletter design.  </p>
<p><a href="http://www.bitwalker.nl/wp-content/uploads/2009/03/confirm_mail.gif" rel="lightbox"><img src="http://www.bitwalker.nl/wp-content/uploads/2009/03/confirm_mail-300x185.gif" alt="confirm mail" title="confirm mail" width="300" height="185" class="alignnone size-medium wp-image-198" /></a></p>
<p>In the last mail we send to confirm the successful registration I included a link to the last sent newsletter. This link appears to be very popular. 89% of the subscribers who opened the confirmation mail also clicked on this link since it was added.</p>
<p><strong>Content syndication</strong><br />
Since the purpose of the newsletter was a weekly digest without causing too much extra work, I wanted to automate the process as much as possible and pull in the content directly from Wordpress. In <a href="http://www.tripolis.com/en/index.php">Tripolis Dialogue</a> we can create articles based on a RSS or ATOM feed or include any kind of XML feed, and process it directly in the newsletter template. As I didn&#8217;t want to duplicate our blog posts I choose the second option. The newsletter has 3 sections: an introduction area, a main area for new recipes and reviews and a sidebar for comments.</p>
<p>Handling the comments was the easiest. Wordpress offers comments on blog post as RSS feed, which can be imported directly in the newsletter template:</p>
<pre>&lt;#assign commentfeed = xmlImporter("http://www.vegalicious.org/comments/feed/")&gt;</pre>
<p>Next I only wanted to display a maximum of 7 comments and in case of a very long comment trim it to 100 characters using standard Freemarker (the templating language we use in Tripolis Dialogue) functions for <a href="http://freemarker.org/docs/ref_directive_list.html">lists</a> and <a href="http://freemarker.org/docs/ref_builtins_string.html">strings</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;#list commentfeed.rss.channel.item as item&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;${item.link}&quot;</span>&gt;</span>${item.title}<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span>
<span style="color: #009900;">&lt;#if item.description?length &amp;gt; <span style="color: #cc66cc;">100</span>&gt;</span>
   ${item.description?substring(0,100)} (...)
<span style="color: #009900;">&lt;#else&gt;</span>
   ${item.description}
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span>#if&gt;</span>
<span style="color: #009900;">&lt;#if <span style="color: #66cc66;">&#40;</span>item_index+<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">=</span> <span style="color: #cc66cc;">7</span>&gt;&lt;#break&gt;&lt;<span style="color: #66cc66;">/</span>#if&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">hr</span> <span style="color: #000066;">size</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">noshade</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;noshade&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span>#list&gt;</span></pre></div></div>

<p>Dealing with the recipe and review posts was a bit more challenging. Wordpress can supply a feed per month, but not per week. So I had to use the category feeds, which include the 10 most recent posts (this is a Wordpress setting). In order to fetch only the posts of the last week I turned the number of feed items to display into a variable parameter of an article, which I can easily change per newsletter. The header and feed URL can also be customized in the same way.</p>
<p><a href="http://www.bitwalker.nl/wp-content/uploads/2009/03/feed-article-settings.gif" rel="lightbox"><img src="http://www.bitwalker.nl/wp-content/uploads/2009/03/feed-article-settings-300x112.gif" alt="feed-article-settings" title="feed-article-settings" width="300" height="112" class="alignnone size-medium wp-image-192" /></a></p>
<p>Next I had to deal with the limitations of the RSS format. Our blog posts usually use one or more photos, an introduction, a list of ingredients, cooking instructions etc. An RSS item has a description with the summary of the post excluding any styling and the content of the post with the full html. For the newsletter I only wanted the text of the introduction and a thumbnail image. The images of the blog post are not available as individual elements in the RSS feed, so I extracted the image urls from the html using a regular expression. As sometimes the blog post already uses the thumbnail version of an image, an extra check was necessary.</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;#ftl ns_prefixes<span style="color: #66cc66;">=</span><span style="color: #66cc66;">&#123;</span><span style="color: #ff0000;">&quot;e&quot;</span>:<span style="color: #ff0000;">&quot;http://purl.org/rss/1.0/modules/content/&quot;</span><span style="color: #66cc66;">&#125;</span>&gt;</span>
<span style="color: #009900;">&lt;#assign htmlcontent <span style="color: #66cc66;">=</span> item<span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;e:encoded&quot;</span><span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>&gt;</span>
<span style="color: #009900;">&lt;#assign images <span style="color: #66cc66;">=</span> htmlcontent?matches<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;(&lt;img[^&gt;</span></span>]*?src=\&quot;)(.*?)(.jpg\&quot;.*?&gt;)&quot;)&gt;
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;${item.link}&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;#assign firstImage <span style="color: #66cc66;">=</span> images<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>?groups<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#93;</span>&gt;</span>
<span style="color: #009900;">&lt;#if firstImage?index_of<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;150x150&quot;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">==</span> -<span style="color: #cc66cc;">1</span>&gt;</span>
   <span style="color: #009900;">&lt;#assign thumbnail <span style="color: #66cc66;">=</span> firstImage + <span style="color: #ff0000;">&quot;-150x150.jpg&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;#else&gt;</span>
   <span style="color: #009900;">&lt;#assign thumbnail <span style="color: #66cc66;">=</span> firstImage + <span style="color: #ff0000;">&quot;.jpg&quot;</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span>#if&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">img</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;${thumbnail}&quot;</span> <span style="color: #000066;">border</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;0&quot;</span> </span>
<span style="color: #009900;"><span style="color: #000066;">width</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;150&quot;</span> <span style="color: #000066;">height</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;150&quot;</span> <span style="color: #000066;">title</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;${item.title}&quot;</span> <span style="color: #000066;">alt</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;${item.title}&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;</span></pre></div></div>

<p><a href="http://www.bitwalker.nl/wp-content/uploads/2009/03/email-test-vegalicious-weekly-gmail-50.png" rel="lightbox"><img src="http://www.bitwalker.nl/wp-content/uploads/2009/03/email-test-vegalicious-weekly-gmail-50-145x300.png" alt="Vegalicious Weekly in Gmail" title="Vegalicious Weekly in Gmail" width="145" height="300" class="alignright size-medium wp-image-212" /></a>For the trimming the text after the introduction I wrote a small function in Freemarker which looks for the position of certain keywords in the post (&#8221;Yield&#8221;, &#8220;Servings&#8221;, &#8220;Ingredients&#8221;).<br />
The publishing date of a blog post can be formatted with the built-in Freemarker functions for <a href="http://freemarker.org/docs/ref_builtins_date.html">dates</a>: ${item.pubDate?date(&#8221;EEE, dd MMM yyyy&#8221;)}</p>
<p>The final version of the newsletter uses 3 RSS feeds (more can be added) and has a custom article for an introduction.</p>
<p><strong>The way back</strong><br />
For outgoing links back from the email newsletter to our food blog I used the Google Analytics support which is integrated in <a href="http://www.tripolis.com/en/index.php">Tripolis Dialogue</a>. This way I can relate web-site visitors directly to our weekly newsletter. The newsletter has been sent 3 times now, twice Saturday night and once on Sunday. Below you can see how this resulted in additional visits on the site. Looks like I have to experiment a bit more with the best moment for sending it.</p>
<p><a title="google analytics campaign results" href="http://www.bitwalker.nl/wp-content/uploads/2009/03/google_analytics_campaign_result.gif" rel="lightbox"><img src="http://www.bitwalker.nl/wp-content/uploads/2009/03/google_analytics_campaign_result-300x84.gif" alt="google analytics campaign results" title="google analytics campaign results" width="300" height="84" class="alignnone size-medium wp-image-226" /></a></p>
<p>In total this has been an interesting exercise for me. Although I&#8217;ve been working on implementations with customers for many years, that is still different from actually being in the customer role yourself. It gave me some new ideas for our product and it would be great if Wordpress would have more flexible content syndication like the blog posts of the last 7 days and images as RSS enclosure element.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d170').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark It</em></strong></a>
<br />
<div class="d170" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back" rel="nofollow" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back&amp;title=From+blog+to+newsletter+and+back" rel="nofollow" title="Add to&nbsp;Blogmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bmarks.png" title="Add to&nbsp;Blogmarks" alt="Add to&nbsp;Blogmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back&amp;title=From+blog+to+newsletter+and+back" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back&amp;title=From+blog+to+newsletter+and+back" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=From+blog+to+newsletter+and+back&amp;url=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back&amp;title=From+blog+to+newsletter+and+back" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://fleck.com/litebookmarklet.php?url=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back&amp;title=From+blog+to+newsletter+and+back" rel="nofollow" title="Add to&nbsp;Fleck"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/fleck.png" title="Add to&nbsp;Fleck" alt="Add to&nbsp;Fleck" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back&amp;title=From+blog+to+newsletter+and+back" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://netvouz.com/action/submitBookmark?url=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back&amp;title=From+blog+to+newsletter+and+back&amp;popup=no" rel="nofollow" title="Add to&nbsp;Netvouz"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/netvouz.png" title="Add to&nbsp;Netvouz" alt="Add to&nbsp;Netvouz" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back&amp;title=From+blog+to+newsletter+and+back" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back&amp;title=From+blog+to+newsletter+and+back" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back&amp;title=From+blog+to+newsletter+and+back" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back&amp;title=From+blog+to+newsletter+and+back" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back&amp;t=From+blog+to+newsletter+and+back" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d170').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d170').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.bitwalker.nl/blog/from-blog-to-newsletter-and-back/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile traveling</title>
		<link>http://www.bitwalker.nl/blog/agile-traveling</link>
		<comments>http://www.bitwalker.nl/blog/agile-traveling#comments</comments>
		<pubDate>Fri, 02 Jan 2009 19:39:08 +0000</pubDate>
		<dc:creator>Harald Walker</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.bitwalker.nl/?p=165</guid>
		<description><![CDATA[My wife and I just returned from our winter vacation, and this time I noticed some parallels with agile software development that I haven’t been aware of before. We travel by motor home and usually only have the first days and the general route planned. Often there is also a theme or a goal as [...]]]></description>
			<content:encoded><![CDATA[<p>My wife and I just returned from our winter vacation,<a href="http://www.bitwalker.nl/wp-content/uploads/2009/01/2008-12-28-at-15-01-33.jpg" rel="lightbox"><img class="alignright size-thumbnail wp-image-166" title="2008-12-28-at-15-01-33" src="http://www.bitwalker.nl/wp-content/uploads/2009/01/2008-12-28-at-15-01-33-150x150.jpg" alt="" width="150" height="150" /></a> and this time I noticed some parallels with agile software development that I haven’t been aware of before. We travel by motor home and usually only have the first days and the general route planned.<span> </span>Often there is also a theme or a goal as profane has to be warm and have sunshine.</p>
<p>Each day we decide what to do next based on factors like the weather prediction and interesting places to visit, which we often discover while we are traveling.<span> </span>The nights we spend at special motor home parking lots or campgrounds, depending on availability and our needs like electricity or a hot shower. We usually only spend one day at a place, sometimes two if we have to do the laundry or are tired of driving. This all reminds me a lot of agile software development. When we travel we have a general road-map, one or two day iterations, retrospectives in the evening and the presentation you can soon see on our <a href="http://www.walker-online.com">travel blog</a> and <a href="http://www.flickr.com/photos/sonicwalker/">Flickr</a>. If necessary we completely adjust our plans and change course. During this vacation we switched from the Mediterranean to the Atlantic coast because of the weather prediction. A drastic change in course but it also gave us the chance to see new interesting areas where we have not been before.</p>
<p>The flexibility also has a price. The unexpected is often positive and a surprise but sometimes also negative and one has to deal regularly with uncertainty and problems. <span> </span>The alternative would be a fully planned and organized vacation, as so many tour operators are offering them for a lot of money. In the past we have rented an apartment somewhere for the length of the vacation and explored the region around it. Sometimes we returned early as the weather turned bad, or we had seen everything and didn’t feel like staying in the apartment, which was not as nice as our own home.</p>
<p>In spite of some nasty problems on the last tour, I prefer agile traveling, just as I still believe in agile software development. It is not always easy and fun but in the end the result is likely to be better.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d165').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark It</em></strong></a>
<br />
<div class="d165" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://www.bitwalker.nl/blog/agile-traveling" rel="nofollow" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://www.bitwalker.nl/blog/agile-traveling&amp;title=Agile+traveling" rel="nofollow" title="Add to&nbsp;Blogmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bmarks.png" title="Add to&nbsp;Blogmarks" alt="Add to&nbsp;Blogmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.bitwalker.nl/blog/agile-traveling&amp;title=Agile+traveling" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.bitwalker.nl/blog/agile-traveling&amp;title=Agile+traveling" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Agile+traveling&amp;url=http://www.bitwalker.nl/blog/agile-traveling&amp;title=Agile+traveling" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.bitwalker.nl/blog/agile-traveling" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://fleck.com/litebookmarklet.php?url=http://www.bitwalker.nl/blog/agile-traveling&amp;title=Agile+traveling" rel="nofollow" title="Add to&nbsp;Fleck"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/fleck.png" title="Add to&nbsp;Fleck" alt="Add to&nbsp;Fleck" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://www.bitwalker.nl/blog/agile-traveling&amp;title=Agile+traveling" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://netvouz.com/action/submitBookmark?url=http://www.bitwalker.nl/blog/agile-traveling&amp;title=Agile+traveling&amp;popup=no" rel="nofollow" title="Add to&nbsp;Netvouz"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/netvouz.png" title="Add to&nbsp;Netvouz" alt="Add to&nbsp;Netvouz" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.bitwalker.nl/blog/agile-traveling&amp;title=Agile+traveling" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://www.bitwalker.nl/blog/agile-traveling&amp;title=Agile+traveling" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://www.bitwalker.nl/blog/agile-traveling&amp;title=Agile+traveling" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http://www.bitwalker.nl/blog/agile-traveling&amp;title=Agile+traveling" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.bitwalker.nl/blog/agile-traveling" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.bitwalker.nl/blog/agile-traveling&amp;t=Agile+traveling" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d165').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d165').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.bitwalker.nl/blog/agile-traveling/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tripolis scores again in the Emerce 100</title>
		<link>http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100</link>
		<comments>http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100#comments</comments>
		<pubDate>Fri, 12 Dec 2008 20:38:26 +0000</pubDate>
		<dc:creator>Harald Walker</dc:creator>
				<category><![CDATA[email]]></category>

		<guid isPermaLink="false">http://www.bitwalker.nl/?p=148</guid>
		<description><![CDATA[The Emerce 100 is a list of companies with the best reputation in the Dutch e-business, based on market research conducted by TNS Nipo.
Last year our company Tripolis Solutions finished 4th in the software category, which was good for number 40 in the total top 100. This year there isn&#8217;t a top 100 but instead [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-161" title="emerce-100" src="http://www.bitwalker.nl/wp-content/uploads/2008/12/emerce-100.jpg" alt="" width="150" height="150" />The Emerce 100 is a list of companies with the best reputation in the Dutch e-business, based on market research conducted by <a href="http://www.tns-nipo.com">TNS Nipo</a>.<br />
Last year our company <a href="http://www.tripolis.com/">Tripolis Solutions</a> finished 4th in the <a href="http://www.emerce.nl/artikel.jsp?id=2258363">software category</a>, which was good for number 40 in the total <a href="http://www.emerce.nl/artikel.jsp?id=2256960">top 100</a>. This year there isn&#8217;t a top 100 but instead 20 categories each with a top 5 and now <a href="http://www.tripolis.com/">our company</a> scored the first place in the <a href="http://www.emerce.nl/artikel.jsp?rubriek=404797&amp;id=2806407">e-mail marketing category</a>. The 4th place in this category went to The People’s Valley, who is a partner of us and uses our e-mail marketing software.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d148').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark It</em></strong></a>
<br />
<div class="d148" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100" rel="nofollow" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100&amp;title=Tripolis+scores+again+in+the+Emerce+100" rel="nofollow" title="Add to&nbsp;Blogmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bmarks.png" title="Add to&nbsp;Blogmarks" alt="Add to&nbsp;Blogmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100&amp;title=Tripolis+scores+again+in+the+Emerce+100" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100&amp;title=Tripolis+scores+again+in+the+Emerce+100" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Tripolis+scores+again+in+the+Emerce+100&amp;url=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100&amp;title=Tripolis+scores+again+in+the+Emerce+100" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://fleck.com/litebookmarklet.php?url=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100&amp;title=Tripolis+scores+again+in+the+Emerce+100" rel="nofollow" title="Add to&nbsp;Fleck"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/fleck.png" title="Add to&nbsp;Fleck" alt="Add to&nbsp;Fleck" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100&amp;title=Tripolis+scores+again+in+the+Emerce+100" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://netvouz.com/action/submitBookmark?url=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100&amp;title=Tripolis+scores+again+in+the+Emerce+100&amp;popup=no" rel="nofollow" title="Add to&nbsp;Netvouz"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/netvouz.png" title="Add to&nbsp;Netvouz" alt="Add to&nbsp;Netvouz" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100&amp;title=Tripolis+scores+again+in+the+Emerce+100" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100&amp;title=Tripolis+scores+again+in+the+Emerce+100" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100&amp;title=Tripolis+scores+again+in+the+Emerce+100" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100&amp;title=Tripolis+scores+again+in+the+Emerce+100" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100&amp;t=Tripolis+scores+again+in+the+Emerce+100" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d148').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d148').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.bitwalker.nl/blog/tripolis-scores-again-in-the-emerce-100/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Filtering mail attachments with maildrop and python</title>
		<link>http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python</link>
		<comments>http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python#comments</comments>
		<pubDate>Fri, 14 Nov 2008 12:55:27 +0000</pubDate>
		<dc:creator>Harald Walker</dc:creator>
				<category><![CDATA[python]]></category>
		<category><![CDATA[maildrop]]></category>

		<guid isPermaLink="false">http://www.bitwalker.nl/?p=127</guid>
		<description><![CDATA[For a new feature of our application we had to filter incoming emails based on header values in attached emails. As I could not find examples on how to filter on attachments directly with maildropfilter, I decided to handle the attachments with an external script. In the solution described below, the script returns a value [...]]]></description>
			<content:encoded><![CDATA[<p>For a new feature of our application we had to filter incoming emails based on header values in attached emails. As I could not find examples on how to filter on attachments directly with maildropfilter, I decided to handle the attachments with an external script. In the solution described below, the script returns a value but instead it could also modify the incoming mail and then one would use the <em>xfilter</em> instruction of <a href="http://www.courier-mta.org/maildropfilter.html">maildropfilter</a>.<span id="more-127"></span></p>
<p>The python script reads the email from stdin using the <a href="http://www.python.org/doc/2.5.2/lib/module-email.html">email package</a> and then iterates over all the parts and subparts of the message object tree. In our example we are looking for a header called &#8216;x-mailer&#8217; and if the value is BigMailer, we return a value to the maildrop filter.</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">email</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
&nbsp;
msg = <span style="color: #dc143c;">email</span>.<span style="color: black;">message_from_file</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">stdin</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">for</span> part <span style="color: #ff7700;font-weight:bold;">in</span> msg.<span style="color: black;">walk</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #483d8b;">'x-mailer'</span> <span style="color: #ff7700;font-weight:bold;">in</span> part:
                <span style="color: #ff7700;font-weight:bold;">if</span> part<span style="color: black;">&#91;</span><span style="color: #483d8b;">'x-mailer'</span><span style="color: black;">&#93;</span> == <span style="color: #483d8b;">'BigMailer'</span>:
                        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;BigMailer&quot;</span>
                        <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span></pre></div></div>

<p>From <em>maildroprc</em> the python script is being executed when there is a match for a certain subject and in case the script returns &#8216;BigMailer&#8217;, the email is being delivered to the <em>mybigmailer</em> mailbox.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">/</span>^Subject:.<span style="color: #000000; font-weight: bold;">*</span>Mail with attachment mail<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
    <span style="color: #007800;">SOURCE</span>=<span style="color: #000000; font-weight: bold;">`/</span>opt<span style="color: #000000; font-weight: bold;">/</span>csw<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>python <span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>csw<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>maildrop<span style="color: #000000; font-weight: bold;">/</span>myfilter.py<span style="color: #000000; font-weight: bold;">`</span>
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$SOURCE</span> eq <span style="color: #ff0000;">&quot;BigMailer&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
    <span style="color: #7a0874; font-weight: bold;">&#123;</span>
     to <span style="color: #000000; font-weight: bold;">/</span>vmail<span style="color: #000000; font-weight: bold;">/</span>mybigmailer<span style="color: #000000; font-weight: bold;">/</span>
     <span style="color: #7a0874; font-weight: bold;">exit</span>
    <span style="color: #7a0874; font-weight: bold;">&#125;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d127').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark It</em></strong></a>
<br />
<div class="d127" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python" rel="nofollow" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python&amp;title=Filtering+mail+attachments+with+maildrop+and+python" rel="nofollow" title="Add to&nbsp;Blogmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bmarks.png" title="Add to&nbsp;Blogmarks" alt="Add to&nbsp;Blogmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python&amp;title=Filtering+mail+attachments+with+maildrop+and+python" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python&amp;title=Filtering+mail+attachments+with+maildrop+and+python" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Filtering+mail+attachments+with+maildrop+and+python&amp;url=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python&amp;title=Filtering+mail+attachments+with+maildrop+and+python" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://fleck.com/litebookmarklet.php?url=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python&amp;title=Filtering+mail+attachments+with+maildrop+and+python" rel="nofollow" title="Add to&nbsp;Fleck"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/fleck.png" title="Add to&nbsp;Fleck" alt="Add to&nbsp;Fleck" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python&amp;title=Filtering+mail+attachments+with+maildrop+and+python" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://netvouz.com/action/submitBookmark?url=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python&amp;title=Filtering+mail+attachments+with+maildrop+and+python&amp;popup=no" rel="nofollow" title="Add to&nbsp;Netvouz"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/netvouz.png" title="Add to&nbsp;Netvouz" alt="Add to&nbsp;Netvouz" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python&amp;title=Filtering+mail+attachments+with+maildrop+and+python" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python&amp;title=Filtering+mail+attachments+with+maildrop+and+python" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python&amp;title=Filtering+mail+attachments+with+maildrop+and+python" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python&amp;title=Filtering+mail+attachments+with+maildrop+and+python" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python&amp;t=Filtering+mail+attachments+with+maildrop+and+python" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d127').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d127').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.bitwalker.nl/blog/filtering-mail-attachments-with-maildrop-and-python/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatic application deployment with Maven and Luntbuild</title>
		<link>http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild</link>
		<comments>http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild#comments</comments>
		<pubDate>Sat, 01 Nov 2008 18:40:24 +0000</pubDate>
		<dc:creator>Harald Walker</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.bitwalker.nl/?p=56</guid>
		<description><![CDATA[When we started the Tripolis Dialogue project years ago, we directly created a continuous integration environment with a build server periodically running tests. For a long time, the missing part has been the deployment to test servers. Test server deployments had to be done manually, which was time consuming and error prone. It also meant, [...]]]></description>
			<content:encoded><![CDATA[<p>When we started the Tripolis Dialogue project years ago, we directly created a continuous integration environment with a build server periodically running tests. For a long time, the missing part has been the deployment to test servers. Test server deployments had to be done manually, which was time consuming and error prone. It also meant, that testers did not always have the most current version directly available, leading to a waterfall style of development and testing. It was clear, that we really had to shorten the development/testing cycle and make it easier to support multiple versions of our application.<br />
Part of the technical challenge was, that we had to deploy 5 web-applications (running on <a href="http://caucho.com/resin-3.1/doc/">Resin</a> as application server) and 4 daemon processes (all Java).</p>
<p>We found a working solution in a combination of a custom Ant plugin for <a href="http://maven.apache.org">Maven</a>, Maven as build tool, shell scripts and Luntbuild. It took us quiet a while to figure it all out and get it right, but now we are deploying multiple versions each night and can also trigger deployments manually. In this post I am going to show how we solved it.<span id="more-56"></span></p>
<p><strong>1. Ant Plugin for Maven</strong><br />
We were not able to find existing Maven plugins for the tasks of copying, unpacking and remotely managing applications, so we decided to write our own <a href="http://maven.apache.org/guides/plugin/guide-ant-plugin-development.html">Ant Plugin for Maven</a>, which allowed us to use tasks like <a href="http://ant.apache.org/manual/OptionalTasks/sshexec.html">sshexec</a> and <a href="http://ant.apache.org/manual/OptionalTasks/scp.html">scp</a>.<br />
The plugin basically only needs 3 files: an  ant build script, a mapping document and of course Maven&#8217;s POM. The image below shows the Eclipse project for the plugin.</p>
<p><a href="http://www.bitwalker.nl/wp-content/uploads/2008/11/maven-plugin.png" rel="lightbox"><img class="size-full wp-image-57" title="Ant Plugin for Maven project in Eclipse" src="http://www.bitwalker.nl/wp-content/uploads/2008/11/maven-plugin.png" alt="" width="388" height="201" /></a></p>
<p>The ant script <em>rollout.build.xml</em> performs tasks like SSH commands and SCP and accepts various parameters, which allow us to use it in a very flexible way. In the code example below, you can see two targets, one for the web applications and one for the daemon processes.</p>
<p><a href="http://www.bitwalker.nl/wp-content/uploads/2008/11/rolloutbuild.png" rel="lightbox"><img class="alignnone size-medium wp-image-74" title="rollout.build.xml" src="http://www.bitwalker.nl/wp-content/uploads/2008/11/rolloutbuild-300x180.png" alt="" width="300" height="180" /></a></p>
<p>In order to use the ant script, a mapping document has to be created to tell Maven how to use our plugin.</p>
<p><a href="http://www.bitwalker.nl/wp-content/uploads/2008/11/mojo-xml.png" rel="lightbox"><img class="alignnone size-thumbnail wp-image-76" title="rollout.mojos.xml" src="http://www.bitwalker.nl/wp-content/uploads/2008/11/mojo-xml-150x150.png" alt="" width="150" height="150" /></a></p>
<p>Because we use SSH/SCP, ant-jsch and jsch have to be added as dependencies to the pom.xml of the plugin. Here we also specified the more user-friendly prefix &#8216;rollout&#8217;, so that we can reference our new plugin with rollout:daemon and rollout:webapp. Don&#8217;t forget to update settings.xml when using the prefix.</p>
<p><a href="http://www.bitwalker.nl/wp-content/uploads/2008/11/pom-xml.png" rel="lightbox"><img class="alignnone size-thumbnail wp-image-80" title="Part of the pom.xml of the plugin" src="http://www.bitwalker.nl/wp-content/uploads/2008/11/pom-xml-150x150.png" alt="Part of the pom.xml of the plugin" width="150" height="150" /></a></p>
<p>If you want to to execute the script automatically as part of one of the Maven lifecycles, you can add the plugin to the pom.xml of your project as described in the <a href="http://maven.apache.org/guides/plugin/guide-ant-plugin-development.html">Guide to Developing Ant Plugins</a>. Originally we used the &#8217;site&#8217; lifecycle to create the project sites and deploy the application as well but that slowed the deployment process down too much. Sometime you want to be able to release a new version as fast as possible.</p>
<p><strong>2. Shell scripts for starting/stopping applications</strong><br />
On the test server we are using standard shell scripts to manage the applications. Just as the ant script, these shell scripts accept various parameters, so we can use them for multiple deployments.</p>
<p><a href="http://www.bitwalker.nl/wp-content/uploads/2008/11/parameterized-shell-script.png" rel="lightbox"><img class="alignnone size-thumbnail wp-image-85" title="parameterized shell script" src="http://www.bitwalker.nl/wp-content/uploads/2008/11/parameterized-shell-script-150x150.png" alt="" width="150" height="150" /></a></p>
<p><strong>3. Luntbuild</strong></p>
<p>In <a href="http://luntbuild.javaforge.com/">Luntbuild</a> &#8211; an open source build automation and management tool &#8211; we bring the loose ends together and configure the dynamic parameters for the build and deployment process. The project/scheduler concept of Luntbuild combined with a series of builders make it easy to handle multiple versions of our software.</p>
<p>For the nightly deployment on trunk we use a schedule (screenshot below), which first builds the project (clean install) and then post-build process will setup a database on the test server and deploy all 9 applications.</p>
<p><a href="http://www.bitwalker.nl/wp-content/uploads/2008/11/deploy-schedule.png" rel="lightbox"><img class="alignnone size-thumbnail wp-image-99" title="deploy-schedule" src="http://www.bitwalker.nl/wp-content/uploads/2008/11/deploy-schedule-150x150.png" alt="" width="150" height="150" /></a></p>
<p>The builder then uses Maven to execute the deployment goal of our plugin and provides the necessary parameters. As you can see, it is possible to pass parameters from the schedule to the builder and this way it is possible to re-use the builder in many ways. Unfortunately it is not possible to share builders between projects in Luntbuild.</p>
<p><a href="http://www.bitwalker.nl/wp-content/uploads/2008/11/deployment-builder.png" rel="lightbox"><img class="alignnone size-thumbnail wp-image-101" title="deployment-builder" src="http://www.bitwalker.nl/wp-content/uploads/2008/11/deployment-builder-150x150.png" alt="" width="150" height="150" /></a></p>
<p><strong>Conclusion</strong></p>
<p>With this workflow we were able to achieve our goal. Deployment is now part of our continuous integration system. Every night each release which is in development is automatically being deployed to our test servers and if necessary we can manually start deployments during the day. All of this saved a lot of time and trouble. It is a very flexible and expandable solutions but the flexibility also added some complexity.</p>
<p>What is missing now are the setup and configuration steps for the test systems and databases. At the moment there are still some manual steps necessary to get a new deployment environment ready.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d56').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark It</em></strong></a>
<br />
<div class="d56" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild" rel="nofollow" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild&amp;title=Automatic+application+deployment+with+Maven+and+Luntbuild" rel="nofollow" title="Add to&nbsp;Blogmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bmarks.png" title="Add to&nbsp;Blogmarks" alt="Add to&nbsp;Blogmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild&amp;title=Automatic+application+deployment+with+Maven+and+Luntbuild" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild&amp;title=Automatic+application+deployment+with+Maven+and+Luntbuild" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Automatic+application+deployment+with+Maven+and+Luntbuild&amp;url=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild&amp;title=Automatic+application+deployment+with+Maven+and+Luntbuild" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://fleck.com/litebookmarklet.php?url=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild&amp;title=Automatic+application+deployment+with+Maven+and+Luntbuild" rel="nofollow" title="Add to&nbsp;Fleck"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/fleck.png" title="Add to&nbsp;Fleck" alt="Add to&nbsp;Fleck" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild&amp;title=Automatic+application+deployment+with+Maven+and+Luntbuild" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://netvouz.com/action/submitBookmark?url=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild&amp;title=Automatic+application+deployment+with+Maven+and+Luntbuild&amp;popup=no" rel="nofollow" title="Add to&nbsp;Netvouz"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/netvouz.png" title="Add to&nbsp;Netvouz" alt="Add to&nbsp;Netvouz" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild&amp;title=Automatic+application+deployment+with+Maven+and+Luntbuild" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild&amp;title=Automatic+application+deployment+with+Maven+and+Luntbuild" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild&amp;title=Automatic+application+deployment+with+Maven+and+Luntbuild" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild&amp;title=Automatic+application+deployment+with+Maven+and+Luntbuild" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild&amp;t=Automatic+application+deployment+with+Maven+and+Luntbuild" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d56').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d56').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.bitwalker.nl/blog/automatic-application-deployment-with-maven-and-luntbuild/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AppleScript with Groovy</title>
		<link>http://www.bitwalker.nl/blog/applescript-with-groovy</link>
		<comments>http://www.bitwalker.nl/blog/applescript-with-groovy#comments</comments>
		<pubDate>Thu, 16 Oct 2008 16:08:56 +0000</pubDate>
		<dc:creator>Harald Walker</dc:creator>
				<category><![CDATA[groovy]]></category>

		<guid isPermaLink="false">http://www.bitwalker.nl/?p=55</guid>
		<description><![CDATA[Today I was looking into Java and AppleScript to see what is possible. But since Java has this nice little brother called Groovy, I wanted to try to execute AppleScript from within a Groovy script. With Java SE 6 AppleScript has been provided as a ScriptEngine to the javax.script API, which makes using it much [...]]]></description>
			<content:encoded><![CDATA[<p>Today I was looking into Java and AppleScript to see what is possible. But since Java has this nice little brother called Groovy, I wanted to try to execute AppleScript from within a Groovy script. With Java SE 6 AppleScript has been provided as a ScriptEngine to the javax.script API, which makes using it much easier. My little example script opens an URL in the default browser, takes a screenshot and notifies the user.</p>

<div class="wp_syntax"><div class="code"><pre class="groovy" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #a1a100;">javax.script.*</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">def</span> takeScreenshot <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;&quot;&quot;<span style="color: #000099; font-weight: bold;">\</span>
open location <span style="color: #000099; font-weight: bold;">\&quot;</span>http://www.bitwalker.nl<span style="color: #000099; font-weight: bold;">\&quot;</span>
delay 5
do shell script <span style="color: #000099; font-weight: bold;">\&quot;</span>screencapture screenshot.pdf<span style="color: #000099; font-weight: bold;">\&quot;</span>
&quot;&quot;&quot;</span>
&nbsp;
ScriptEngineManager mgr <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ScriptEngineManager<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
ScriptEngine engine <span style="color: #66cc66;">=</span> mgr.<span style="color: #006600;">getEngineByName</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;AppleScript&quot;</span><span style="color: #66cc66;">&#41;</span>
engine.<span style="color: #006600;">eval</span><span style="color: #66cc66;">&#40;</span>takeScreenshot<span style="color: #66cc66;">&#41;</span>
engine.<span style="color: #006600;">eval</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;say <span style="color: #000099; font-weight: bold;">\&quot;</span>Your screenshot is ready<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span><span style="color: #66cc66;">&#41;</span></pre></div></div>

<p>You can run this directly in the GroovyConsole or as regular Groovy script. Don&#8217;t forget to set JAVA_HOME to 1.6.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d55').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark It</em></strong></a>
<br />
<div class="d55" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://www.bitwalker.nl/blog/applescript-with-groovy" rel="nofollow" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://www.bitwalker.nl/blog/applescript-with-groovy&amp;title=AppleScript+with+Groovy" rel="nofollow" title="Add to&nbsp;Blogmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bmarks.png" title="Add to&nbsp;Blogmarks" alt="Add to&nbsp;Blogmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.bitwalker.nl/blog/applescript-with-groovy&amp;title=AppleScript+with+Groovy" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.bitwalker.nl/blog/applescript-with-groovy&amp;title=AppleScript+with+Groovy" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=AppleScript+with+Groovy&amp;url=http://www.bitwalker.nl/blog/applescript-with-groovy&amp;title=AppleScript+with+Groovy" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.bitwalker.nl/blog/applescript-with-groovy" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://fleck.com/litebookmarklet.php?url=http://www.bitwalker.nl/blog/applescript-with-groovy&amp;title=AppleScript+with+Groovy" rel="nofollow" title="Add to&nbsp;Fleck"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/fleck.png" title="Add to&nbsp;Fleck" alt="Add to&nbsp;Fleck" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://www.bitwalker.nl/blog/applescript-with-groovy&amp;title=AppleScript+with+Groovy" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://netvouz.com/action/submitBookmark?url=http://www.bitwalker.nl/blog/applescript-with-groovy&amp;title=AppleScript+with+Groovy&amp;popup=no" rel="nofollow" title="Add to&nbsp;Netvouz"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/netvouz.png" title="Add to&nbsp;Netvouz" alt="Add to&nbsp;Netvouz" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.bitwalker.nl/blog/applescript-with-groovy&amp;title=AppleScript+with+Groovy" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://www.bitwalker.nl/blog/applescript-with-groovy&amp;title=AppleScript+with+Groovy" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://www.bitwalker.nl/blog/applescript-with-groovy&amp;title=AppleScript+with+Groovy" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http://www.bitwalker.nl/blog/applescript-with-groovy&amp;title=AppleScript+with+Groovy" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.bitwalker.nl/blog/applescript-with-groovy" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.bitwalker.nl/blog/applescript-with-groovy&amp;t=AppleScript+with+Groovy" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d55').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d55').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.bitwalker.nl/blog/applescript-with-groovy/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CITCON Europe 2008 – Less is more</title>
		<link>http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more</link>
		<comments>http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more#comments</comments>
		<pubDate>Sat, 04 Oct 2008 18:56:23 +0000</pubDate>
		<dc:creator>Harald Walker</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[openspace]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.bitwalker.nl/?p=54</guid>
		<description><![CDATA[The CITCON Europe 2008 conference this weekend has been my 3rd open space conference. It was also the largest so far. I wasn’t able to get as much out of it as last time and partly I think this had to do with the size. More participants meant more proposed topics (ca. 60), while at [...]]]></description>
			<content:encoded><![CDATA[<p><a title="2008-10-03 at 19-50-28 by sonicwalker, on Flickr" href="http://www.flickr.com/photos/sonicwalker/2909967807/"><img src="http://farm4.static.flickr.com/3251/2909967807_dea27e19c4_m.jpg" alt="2008-10-03 at 19-50-28" width="240" height="160" align="right" /></a>The <a href="http://citconf.com/amsterdam2008/index.php">CITCON Europe 2008</a> conference this weekend has been my 3rd <a href="http://www.openspaceworld.org/">open space</a> conference. It was also the largest so far. I wasn’t able to get as much out of it as last time and partly I think this had to do with the size. More participants meant more proposed topics (ca. 60), while at the same time the available space and time slots for topics did not increase (5 x 5). This resulted in most topics being moved around a lot and being combined with others in one time slot. According to the open space principles the person who suggested a topic is responsible to steer the talk but once topics are being combined, it is then up to the topic owners to combine and coordinate their talks, often without any time to prepare.</p>
<p>Also many talks were quiet full, which according to my experience doesn’t contribute to deep discussions and exchange of thoughts. In large groups typically some and often the same people stand out and dominate the discussion with their opinion, while in a smaller group it is usually more balanced.</p>
<p>So my conclusion is, that also here less is more. A smaller conference might make it more difficult to find sponsors but on the other hand costs would also be much lower. The alternative could be to expand the conference in space and time but then costs would go up. Personally I would rather have a small conference each quarter than one or two large ones per year. 50-60 seems to be a good number of participants for open space conferences.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d54').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark It</em></strong></a>
<br />
<div class="d54" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more" rel="nofollow" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more&amp;title=CITCON+Europe+2008+%E2%80%93+Less+is+more" rel="nofollow" title="Add to&nbsp;Blogmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bmarks.png" title="Add to&nbsp;Blogmarks" alt="Add to&nbsp;Blogmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more&amp;title=CITCON+Europe+2008+%E2%80%93+Less+is+more" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more&amp;title=CITCON+Europe+2008+%E2%80%93+Less+is+more" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=CITCON+Europe+2008+%E2%80%93+Less+is+more&amp;url=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more&amp;title=CITCON+Europe+2008+%E2%80%93+Less+is+more" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://fleck.com/litebookmarklet.php?url=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more&amp;title=CITCON+Europe+2008+%E2%80%93+Less+is+more" rel="nofollow" title="Add to&nbsp;Fleck"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/fleck.png" title="Add to&nbsp;Fleck" alt="Add to&nbsp;Fleck" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more&amp;title=CITCON+Europe+2008+%E2%80%93+Less+is+more" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://netvouz.com/action/submitBookmark?url=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more&amp;title=CITCON+Europe+2008+%E2%80%93+Less+is+more&amp;popup=no" rel="nofollow" title="Add to&nbsp;Netvouz"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/netvouz.png" title="Add to&nbsp;Netvouz" alt="Add to&nbsp;Netvouz" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more&amp;title=CITCON+Europe+2008+%E2%80%93+Less+is+more" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more&amp;title=CITCON+Europe+2008+%E2%80%93+Less+is+more" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more&amp;title=CITCON+Europe+2008+%E2%80%93+Less+is+more" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more&amp;title=CITCON+Europe+2008+%E2%80%93+Less+is+more" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more&amp;t=CITCON+Europe+2008+%E2%80%93+Less+is+more" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d54').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d54').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.bitwalker.nl/blog/citcon-europe-2008-%e2%80%93-less-is-more/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CITCON Europe 2008 started</title>
		<link>http://www.bitwalker.nl/blog/citcon-europe-2008-started</link>
		<comments>http://www.bitwalker.nl/blog/citcon-europe-2008-started#comments</comments>
		<pubDate>Fri, 03 Oct 2008 22:27:56 +0000</pubDate>
		<dc:creator>Harald Walker</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.bitwalker.nl/?p=53</guid>
		<description><![CDATA[Today CITCON Europe 2008 started in Amsterdam. CITCON is the Continuous Integration and Testing Conference, which brings together people from every corner of the software development industry to discuss Continuous Integration and the type of Testing that goes along with it. This year CITCON Europe had much more registrations than last year in Brussels and [...]]]></description>
			<content:encoded><![CDATA[<p><a title="2008-10-03 at 19-29-08 by sonicwalker, on Flickr" href="http://www.flickr.com/photos/sonicwalker/2909967625/"><img class="alignright" src="http://farm4.static.flickr.com/3241/2909967625_58699b4522_m.jpg" alt="2008-10-03 at 19-29-08" width="240" height="159" /></a>Today CITCON Europe 2008 started in Amsterdam. <a href="http://citconf.com/">CITCON</a> is the Continuous Integration and Testing Conference, which brings together people from every corner of the software development industry to discuss Continuous Integration and the type of Testing that goes along with it. This year CITCON Europe had much more registrations than last year in Brussels and was it was interesting to hear how people heard about it when we did the introduction round. Many heard about CITCON from friends and colleagues. That really seems to be the key success factor.<br />
After the introductions round, session ideas for tomorrow were presented. For the first time at an open space conference I also suggested a session. I would like to talk about automatic deployment and release management. I can share the experience of our software project and am looking forward to learn how other teams are doing it.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d53').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark It</em></strong></a>
<br />
<div class="d53" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://www.bitwalker.nl/blog/citcon-europe-2008-started" rel="nofollow" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://www.bitwalker.nl/blog/citcon-europe-2008-started&amp;title=CITCON+Europe+2008+started" rel="nofollow" title="Add to&nbsp;Blogmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bmarks.png" title="Add to&nbsp;Blogmarks" alt="Add to&nbsp;Blogmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.bitwalker.nl/blog/citcon-europe-2008-started&amp;title=CITCON+Europe+2008+started" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.bitwalker.nl/blog/citcon-europe-2008-started&amp;title=CITCON+Europe+2008+started" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=CITCON+Europe+2008+started&amp;url=http://www.bitwalker.nl/blog/citcon-europe-2008-started&amp;title=CITCON+Europe+2008+started" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.bitwalker.nl/blog/citcon-europe-2008-started" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://fleck.com/litebookmarklet.php?url=http://www.bitwalker.nl/blog/citcon-europe-2008-started&amp;title=CITCON+Europe+2008+started" rel="nofollow" title="Add to&nbsp;Fleck"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/fleck.png" title="Add to&nbsp;Fleck" alt="Add to&nbsp;Fleck" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://www.bitwalker.nl/blog/citcon-europe-2008-started&amp;title=CITCON+Europe+2008+started" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://netvouz.com/action/submitBookmark?url=http://www.bitwalker.nl/blog/citcon-europe-2008-started&amp;title=CITCON+Europe+2008+started&amp;popup=no" rel="nofollow" title="Add to&nbsp;Netvouz"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/netvouz.png" title="Add to&nbsp;Netvouz" alt="Add to&nbsp;Netvouz" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.bitwalker.nl/blog/citcon-europe-2008-started&amp;title=CITCON+Europe+2008+started" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://www.bitwalker.nl/blog/citcon-europe-2008-started&amp;title=CITCON+Europe+2008+started" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://www.bitwalker.nl/blog/citcon-europe-2008-started&amp;title=CITCON+Europe+2008+started" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http://www.bitwalker.nl/blog/citcon-europe-2008-started&amp;title=CITCON+Europe+2008+started" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.bitwalker.nl/blog/citcon-europe-2008-started" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.bitwalker.nl/blog/citcon-europe-2008-started&amp;t=CITCON+Europe+2008+started" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d53').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d53').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.bitwalker.nl/blog/citcon-europe-2008-started/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Email trends in August</title>
		<link>http://www.bitwalker.nl/blog/email-trends-in-august</link>
		<comments>http://www.bitwalker.nl/blog/email-trends-in-august#comments</comments>
		<pubDate>Sun, 10 Aug 2008 19:16:04 +0000</pubDate>
		<dc:creator>Harald Walker</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[hotmail]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://www.bitwalker.nl/?p=50</guid>
		<description><![CDATA[After updating the user-agent utility library today, I analyzed the first week of August and compared it with the first week of July. I was curious about the impact of the of the recent iPhone introduction here in the Netherlands. One month since the sale of the 3G iPhone has started, the iPhone clearly is [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="lightbox" href="http://www.bitwalker.nl/wp-content/uploads/2008/08/mobile_devices_july_vs_august.png" rel="lightbox"><img class="size-medium wp-image-51 alignright" title="mobile devices july vs. august" src="http://www.bitwalker.nl/wp-content/uploads/2008/08/mobile_devices_july_vs_august-300x180.png" alt="" width="300" height="180" /></a>After updating the user-agent utility library today, I analyzed the first week of August and compared it with the first week of July. I was curious about the impact of the of the recent iPhone introduction here in the Netherlands. One month since the sale of the 3G iPhone has started, the iPhone clearly is being used more often as mobile device to read email with. The decline of the other platforms could possibly also be explained by the vacation time, as business people probably read their email less frequently.</p>
<p><a rel="lightbox" href="http://www.bitwalker.nl/wp-content/uploads/2008/08/webmail_clients_aug08.png" rel="lightbox"><img class="size-medium wp-image-52 alignright" title="webmail clients august 2008" src="http://www.bitwalker.nl/wp-content/uploads/2008/08/webmail_clients_aug08-300x157.png" alt="" width="300" height="157" /></a>Next, I was looking at the usage of webmail clients like Hotmail and Gmail. About 17% of the email is being read online with a webmail client. Here Windows Live Hotmail is still dominating. Since Google&#8217;s Gmail was opened to the general public on April 1, 2004, it has gained a market share of 7.4%. Good old Yahoo Mail finished as 3rd with 6.2%.</p>
<!-- Social Bookmarks BEGIN -->
<div class="social_bookmark">
<a title="Click me to see the sites." href="#" onclick="$$('div.d50').each( function(e) { e.visualEffect('slide_down',{duration:2.5}) }); return false;"><strong><em>Bookmark It</em></strong></a>
<br />
<div class="d50" style="overflow:hidden">
<br />
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.bloglines.com/sub/http://www.bitwalker.nl/blog/email-trends-in-august" rel="nofollow" title="Add to&nbsp;Bloglines"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bloglines.png" title="Add to&nbsp;Bloglines" alt="Add to&nbsp;Bloglines" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://blogmarks.net/my/new.php?mini=1&amp;simple=1&amp;url=http://www.bitwalker.nl/blog/email-trends-in-august&amp;title=Email+trends+in+August" rel="nofollow" title="Add to&nbsp;Blogmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/bmarks.png" title="Add to&nbsp;Blogmarks" alt="Add to&nbsp;Blogmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.bitwalker.nl/blog/email-trends-in-august&amp;title=Email+trends+in+August" rel="nofollow" title="Add to&nbsp;Del.icio.us"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/delicious.png" title="Add to&nbsp;Del.icio.us" alt="Add to&nbsp;Del.icio.us" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.bitwalker.nl/blog/email-trends-in-august&amp;title=Email+trends+in+August" rel="nofollow" title="Add to&nbsp;digg"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/digg.png" title="Add to&nbsp;digg" alt="Add to&nbsp;digg" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.dzone.com/links/add.html?description=Email+trends+in+August&amp;url=http://www.bitwalker.nl/blog/email-trends-in-august&amp;title=Email+trends+in+August" rel="nofollow" title="Add to&nbsp;DZone"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/dzone.png" title="Add to&nbsp;DZone" alt="Add to&nbsp;DZone" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.facebook.com/sharer.php?u=http://www.bitwalker.nl/blog/email-trends-in-august" rel="nofollow" title="Add to&nbsp;Facebook"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/facebook.png" title="Add to&nbsp;Facebook" alt="Add to&nbsp;Facebook" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://fleck.com/litebookmarklet.php?url=http://www.bitwalker.nl/blog/email-trends-in-august&amp;title=Email+trends+in+August" rel="nofollow" title="Add to&nbsp;Fleck"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/fleck.png" title="Add to&nbsp;Fleck" alt="Add to&nbsp;Fleck" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http://www.bitwalker.nl/blog/email-trends-in-august&amp;title=Email+trends+in+August" rel="nofollow" title="Add to&nbsp;Google Bookmarks"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/google.png" title="Add to&nbsp;Google Bookmarks" alt="Add to&nbsp;Google Bookmarks" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://netvouz.com/action/submitBookmark?url=http://www.bitwalker.nl/blog/email-trends-in-august&amp;title=Email+trends+in+August&amp;popup=no" rel="nofollow" title="Add to&nbsp;Netvouz"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/netvouz.png" title="Add to&nbsp;Netvouz" alt="Add to&nbsp;Netvouz" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.bitwalker.nl/blog/email-trends-in-august&amp;title=Email+trends+in+August" rel="nofollow" title="Add to&nbsp;reddit"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/reddit.png" title="Add to&nbsp;reddit" alt="Add to&nbsp;reddit" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://slashdot.org/bookmark.pl?url=http://www.bitwalker.nl/blog/email-trends-in-august&amp;title=Email+trends+in+August" rel="nofollow" title="Add to&nbsp;Slashdot"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/slashdot.png" title="Add to&nbsp;Slashdot" alt="Add to&nbsp;Slashdot" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/submit.php?url=http://www.bitwalker.nl/blog/email-trends-in-august&amp;title=Email+trends+in+August" rel="nofollow" title="Add to&nbsp;Stumble Upon"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/stumbleupon.png" title="Add to&nbsp;Stumble Upon" alt="Add to&nbsp;Stumble Upon" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.spurl.net/spurl.php?url=http://www.bitwalker.nl/blog/email-trends-in-august&amp;title=Email+trends+in+August" rel="nofollow" title="Add to&nbsp;Spurl"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/spurl.png" title="Add to&nbsp;Spurl" alt="Add to&nbsp;Spurl" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.bitwalker.nl/blog/email-trends-in-august" rel="nofollow" title="Add to&nbsp;Technorati"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/technorati.png" title="Add to&nbsp;Technorati" alt="Add to&nbsp;Technorati" /></a>
<a onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.bitwalker.nl/blog/email-trends-in-august&amp;t=Email+trends+in+August" rel="nofollow" title="Add to&nbsp;Yahoo My Web"><img class="social_img" src="http://www.bitwalker.nl/wp-content/plugins/social-bookmarks/images/yahoo.png" title="Add to&nbsp;Yahoo My Web" alt="Add to&nbsp;Yahoo My Web" /></a>
<br />
<a style="font-size:90%;text-align: right; " title="Click me to hide the sites." href="#" onclick="$$('div.d50').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); return false;">Hide Sites</a>
</div>
</div>
<!-- Social Bookmarks END -->
<script type="text/javascript">$$('div.d50').each( function(e) { e.visualEffect('slide_up',{duration:0.5}) }); </script>]]></content:encoded>
			<wfw:commentRss>http://www.bitwalker.nl/blog/email-trends-in-august/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.656 seconds -->
