<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Jan-Piet Mens</title>
	
	<link>http://blog.fupps.com</link>
	<description>my animals and other friends</description>
	<lastBuildDate>Tue, 16 Mar 2010 16:35:42 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/jpmens" /><feedburner:info uri="jpmens" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Sonos pause switch</title>
		<link>http://feedproxy.google.com/~r/jpmens/~3/h2PsiaraLkU/</link>
		<comments>http://blog.fupps.com/2010/03/16/sonos-pause-switch/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 08:59:14 +0000</pubDate>
		<dc:creator>Jan-Piet Mens</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[sonos]]></category>

		<guid isPermaLink="false">http://blog.fupps.com/?p=3395</guid>
		<description><![CDATA[The phone rings, and I grab for the nearest Sonos controller, power that up, wait a few seconds until the wireless connection is there and hit the pause button. If I can&#039;t find the iPod controller, I may have to start the Sonos desktop controller application to then hit pause. While I&#039;m trying to cut [...]]]></description>
			<content:encoded><![CDATA[<p>The phone rings, and I grab for the nearest Sonos controller, power that up, wait a few seconds until the wireless connection is there and hit the pause button. If I can&#039;t find the iPod controller, I may have to start the Sonos desktop controller application to then hit pause. While I&#039;m trying to cut off the music, the phone continues ringing. Not nice: I don&#039;t like answering the phone with music playing in the background.</p>
<p>Sonos zone players have a mute button, but I&#039;m not always near a Sonos player, and that wouldn&#039;t help anyway: the mute control on a zone player mutes just that one station &#8212; music keeps on blaring out of the other zones even when they are linked together, as is usually the case chez Mens. (I can mute all zone players in the house by holding the mute button down for 3 seconds, but that takes too long.)</p>
<p>A discussion on <a href="http://vowe.net/archives/011291.html">pause vs. mute</a> over at <a href="http://vowe.net/">Volker</a>&#039;s site got me thinking that it ought to be possible to &#034;talk&#034; to a Sonos zone player and request that it pause. These devices speak UPNP, so a bit of HTTP should do the trick. At least one person has been there and <a href="http://www.ip-symcon.de/forum/f39/einzelne-sonos-player-ansteuern-3541/">done that</a>, and the required SOAP packets are neatly laid out. </p>
<p>And so the idea of a <em>Sonos Pause Switch</em> was born: an intelligent yet small device that fires off a HTTP request to a Sonos zone player; an ideal task for an <a href="http://blog.fupps.com/2009/04/15/starting-with-arduino/">Arduino</a>. The zone player I contact determines which of the players are paused &#8212; all zones linked to it pause or play simultaneously.</p>
<p>The device proper is quickly implemented: an Arduino, one <a href="http://blog.fupps.com/2009/04/24/arduino-ethernet2-library/">Ethernet shield</a>, a resistor, a push button, and a LED.</p>
<p><img src="http://blog.fupps.com/wp-content/media/2010/ZZ4FA64209.jpg" width="500" height="356" alt="" /></p>
<p>The code is easy enough as well: the push button <a href="http://www.arduino.cc/en/Tutorial/Switch">acts as a switch</a> toggling the state to either of PLAY or PAUSE. Depending on the state when the button is pushed, I send out a SOAP request to the zone player to request it to PLAY or PAUSE respectively.</p>
<pre class="brush: cpp;">
#include &lt;Client.h&gt;
#include &lt;Ethernet.h&gt;

/* Sonos Pause Button
 * by Jan-Piet Mens, March 2010
 * based on packets crafted by http://www.ip-symcon.de/forum/f39/einzelne-sonos-player-ansteuern-3541/
  */

static uint8_t mac[6] = { 0xBE, 0xEF, 0xEE, 0x00, 0x20, 0x09 };
static uint8_t ip[4] = { 192, 168, 1, 209 };
byte sonosip[] = { 192, 168, 1, 132 };

int debug = 0;

#define SONOS_PAUSE &quot;&lt;s:Envelope xmlns:s=\&quot;http://schemas.xmlsoap.org/soap/envelope/\&quot; s:encodingStyle=\&quot;http://schemas.xmlsoap.org/soap/encoding/\&quot;&gt;&lt;s:Body&gt;&lt;u:Pause xmlns:u=\&quot;urn:schemas-upnp-org:service:AVTransport:1\&quot;&gt;&lt;InstanceID&gt;0&lt;/InstanceID&gt;&lt;/u:Pause&gt;&lt;/s:Body&gt;&lt;/s:Envelope&gt;&quot;
#define SONOS_PLAY  &quot;&lt;s:Envelope xmlns:s=\&quot;http://schemas.xmlsoap.org/soap/envelope/\&quot; s:encodingStyle=\&quot;http://schemas.xmlsoap.org/soap/encoding/\&quot;&gt;&lt;s:Body&gt;&lt;u:Play xmlns:u=\&quot;urn:schemas-upnp-org:service:AVTransport:1\&quot;&gt;&lt;InstanceID&gt;0&lt;/InstanceID&gt;&lt;Speed&gt;1&lt;/Speed&gt;&lt;/u:Play&gt;&lt;/s:Body&gt;&lt;/s:Envelope&gt;&quot;

#define PLAY 1
#define PAUSE 0

// Debounce code from http://arduino.cc/en/Tutorial/Debounce

const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  8;      // the number of the LED pin

int state = LOW;      // the current state of the output pin
int reading;           // the current reading from the input pin
int previous = LOW;    // the previous reading from the input pin

long time = 0;         // the last time the output pin was toggled
long debounce = 200;   // the debounce time, increase if the output flickers

Client client(sonosip, 1400);

void setup()
{
  delay(3000);
  Ethernet.begin(mac, ip);
  pinMode(buttonPin, INPUT);
  pinMode(ledPin, OUTPUT);

  if (debug) {
    Serial.begin(9600);
  }
}

void loop()
{

  http://www.arduino.cc/en/Tutorial/Switch

  reading = digitalRead(buttonPin);

  // if the input just went from LOW and HIGH and we've waited long enough
  // to ignore any noise on the circuit, toggle the output pin and remember
  // the time
  if (reading == HIGH &amp;&amp; previous == LOW &amp;&amp; millis() - time &gt; debounce) {
    if (state == HIGH) {
      state = LOW;
      if (debug) {
        Serial.println(&quot;play&quot;);
      }
      sonos(PLAY);
    }
    else {
      state = HIGH;
      if (debug) {
        Serial.println(&quot;pause&quot;);
      }
      sonos(PAUSE);
    }

    time = millis();
  }

  digitalWrite(ledPin, state);

  previous = reading;
}

void out(const char *s)
{
  client.println(s);
  if (debug) {
    Serial.println(s);
  }
}

void sonos(int cmd)
{
  char buf[512];

  if (client.connect()) {
    if (debug) {
      Serial.println(&quot;connected&quot;);
    }

    out(&quot;POST /MediaRenderer/AVTransport/Control HTTP/1.1&quot;);
    out(&quot;Connection: close&quot;);
    sprintf(buf, &quot;Host: %d.%d.%d.%d:1400&quot;, sonosip[0], sonosip[1], sonosip[2], sonosip[3]);
    out(buf);

    sprintf(buf, &quot;Content-Length: %d&quot;, (cmd == PLAY) ? strlen(SONOS_PLAY) : strlen(SONOS_PAUSE));
    out(buf);

    out(&quot;Content-Type: text/xml; charset=\&quot;utf-8\&quot;&quot;);

    sprintf(buf, &quot;Soapaction: \&quot;urn:schemas-upnp-org:service:AVTransport:1#%s\&quot;&quot;, (cmd == PLAY) ? &quot;Play&quot; : &quot;Pause&quot;);
    out(buf);

    out(&quot;&quot;);
    strcpy(buf, (cmd == PLAY) ? SONOS_PLAY : SONOS_PAUSE);
    out(buf);

    while (client.available()) {
      char c = client.read();
      if (debug) {
        Serial.print(c);
      }
    }

  } else {
    if (debug) {
      Serial.println(&quot;connection failed&quot;);
    }
  }
  client.stop();
}
</pre>
<p>So far the &#034;device&#034; has been working very well for me. Just once, I was able to &#034;confuse&#034; an <a href="http://blog.fupps.com/2009/12/03/all-you-want-for-christmas-is-a-sonos-s5/">S5</a> so much, that it continuously issued a UPNP Error code 701 when trying to pause it &#8212; a factory reset of the zone player cured that, and it hasn&#039;t happened since. Hmm.</p>
<p>This is a proof of concept, and it works well. The following (wobbly) video shows the result: when the LED lights up, the Sonos system is paused. (Turn the volume up to &#034;hear&#034; the result.)</p>
<p><object width="400" height="533"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10201490&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=10201490&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="400" height="533"></embed></object></p>
<p>There are, however, lots of ways to improve on this, for example</p>
<ul>
<li>The device must be smaller; an <a href="http://arduino.cc/en/Main/ArduinoBoardNano">Arduino Nano</a> would be a good starting point, but then there&#039;s the issue with the Ethernet connection &#8212; there&#039;s no Ethernet shield for the Nano.</li>
<li>As implemented above, the device needs an Ethernet cable attached to it. With a bit more intelligence, it could be made wireless &#8212;  with <a href="http://blog.fupps.com/2009/06/07/getting-arduino-to-talk-wirelessly-xbee/">XBee</a> or BlueTooth for example.</li>
<li>Ideally, the whole device is no larger than a car key; something like a wireless (WLAN) device that invokes a pre-defined CGI for on and for off.</li>
<li>An &#034;intelligent&#034; VOIP solution (Asterisk or FreeSwitch) could issue the UPNP requests itself upon receiving an incoming call, making the device obsolete.</li>
</ul>
<p>Of course I still need a sexy case for the Sonos Pause Button &#8212; that is always the hardest. <img src='http://blog.fupps.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/jpmens/~4/h2PsiaraLkU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.fupps.com/2010/03/16/sonos-pause-switch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.fupps.com/2010/03/16/sonos-pause-switch/</feedburner:origLink></item>
		<item>
		<title>Entertaining letter opener</title>
		<link>http://feedproxy.google.com/~r/jpmens/~3/Nq7XWC3oQG8/</link>
		<comments>http://blog.fupps.com/2010/03/15/entertaining-letter-opener/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 18:23:33 +0000</pubDate>
		<dc:creator>Jan-Piet Mens</dc:creator>
				<category><![CDATA[Entertainement]]></category>
		<category><![CDATA[animal]]></category>

		<guid isPermaLink="false">http://blog.fupps.com/?p=3394</guid>
		<description><![CDATA[
via.
]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/media/2010/rabitenvelope.gif" /></p>
<p><em><a href="http://blog.amygeek.com/2010/03/seriously-entertaining-letter-opener.html">via</a>.</em></p>
<img src="http://feeds.feedburner.com/~r/jpmens/~4/Nq7XWC3oQG8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.fupps.com/2010/03/15/entertaining-letter-opener/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.fupps.com/2010/03/15/entertaining-letter-opener/</feedburner:origLink></item>
		<item>
		<title>The OOF mechanism</title>
		<link>http://feedproxy.google.com/~r/jpmens/~3/8N1ZzveLG0U/</link>
		<comments>http://blog.fupps.com/2010/03/10/the-oof-mechanism/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 10:42:28 +0000</pubDate>
		<dc:creator>Jan-Piet Mens</dc:creator>
				<category><![CDATA[Entertainement]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[flying]]></category>

		<guid isPermaLink="false">http://blog.fupps.com/?p=3393</guid>
		<description><![CDATA[
An aircraft company discovered that it was cheaper to fly its planes with less fuel on board. The planes would be lighter and use less fuel and money was saved. On rare occasions however the amount of fuel was insufficient, and the plane would crash. This problem was solved by the engineers of the company [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>
An aircraft company discovered that it was cheaper to fly its planes with less fuel on board. The planes would be lighter and use less fuel and money was saved. On rare occasions however the amount of fuel was insufficient, and the plane would crash. This problem was solved by the engineers of the company by the development of a special OOF (out-of-fuel) mechanism. In emergency cases a passenger was selected and thrown out of the plane. (When necessary, the procedure was repeated.)  A large body of theory was developed and many publications were devoted to the problem of properly selecting the victim to be ejected.  Should the victim be chosen at random? Or should one choose the heaviest person? Or the oldest? Should passengers pay in order not to be ejected, so that the victim would be the poorest on board? And if for example the heaviest person was chosen, should there be a special exception in case that was the pilot? Should first class passengers be exempted?  Now that the OOF mechanism existed, it would be activated every now and then, and eject passengers even when there was no fuel shortage. The engineers are still studying precisely how this malfunction is caused.</p>
</blockquote>
<p><em>(<a href="http://lwn.net/Articles/104185/">from</a>.</em>)</p>
<img src="http://feeds.feedburner.com/~r/jpmens/~4/8N1ZzveLG0U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.fupps.com/2010/03/10/the-oof-mechanism/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.fupps.com/2010/03/10/the-oof-mechanism/</feedburner:origLink></item>
		<item>
		<title>Charlie is back</title>
		<link>http://feedproxy.google.com/~r/jpmens/~3/Yi89asvLmSc/</link>
		<comments>http://blog.fupps.com/2010/03/10/charlie-is-back/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 08:26:18 +0000</pubDate>
		<dc:creator>Jan-Piet Mens</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[fauna]]></category>

		<guid isPermaLink="false">http://blog.fupps.com/?p=3392</guid>
		<description><![CDATA[Charlie is finally back in the garden, after having been away for many weeks during the cold and the snow. He&#039;s getting ready to jump onto the roof.

He brought two friends with him, but unfortunately I couldn&#039;t get a shot of all three together. 
]]></description>
			<content:encoded><![CDATA[<p>Charlie is finally back in the garden, after having been away for many weeks during the cold and the snow. He&#039;s getting ready to jump onto the roof.</p>
<p><img src="http://blog.fupps.com/wp-content/media/2010/DSC_0874.jpg" width="500" height="388" alt="" /></p>
<p>He brought two friends with him, but unfortunately I couldn&#039;t get a shot of all three together. </p>
<img src="http://feeds.feedburner.com/~r/jpmens/~4/Yi89asvLmSc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.fupps.com/2010/03/10/charlie-is-back/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.fupps.com/2010/03/10/charlie-is-back/</feedburner:origLink></item>
		<item>
		<title>Picasso's Guernica</title>
		<link>http://feedproxy.google.com/~r/jpmens/~3/v2UinwPEwws/</link>
		<comments>http://blog.fupps.com/2010/03/09/picassos-guernica/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 18:45:22 +0000</pubDate>
		<dc:creator>Jan-Piet Mens</dc:creator>
				<category><![CDATA[Entertainement]]></category>
		<category><![CDATA[art]]></category>

		<guid isPermaLink="false">http://blog.fupps.com/?p=3391</guid>
		<description><![CDATA[
By Lena Gieseke. (Thanks, Nic.)
]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/I_65LYLzvvI&#038;hl=en_US&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/I_65LYLzvvI&#038;hl=en_US&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>By <a href="http://www.lena-gieseke.com/guernica/index.html">Lena Gieseke</a>. (<em>Thanks, Nic.</em>)</p>
<img src="http://feeds.feedburner.com/~r/jpmens/~4/v2UinwPEwws" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.fupps.com/2010/03/09/picassos-guernica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.fupps.com/2010/03/09/picassos-guernica/</feedburner:origLink></item>
		<item>
		<title>Life was much easier</title>
		<link>http://feedproxy.google.com/~r/jpmens/~3/fgoMQFvDhVs/</link>
		<comments>http://blog.fupps.com/2010/03/09/life-was-much-easier/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 06:45:16 +0000</pubDate>
		<dc:creator>Jan-Piet Mens</dc:creator>
				<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://blog.fupps.com/?p=3390</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a href="http://icanread.tumblr.com/post/432258488"><img src="http://blog.fupps.com/wp-content/media/2010/ZZ57733DE5.jpg" width="400" height="531" alt="" /></a></p>
<img src="http://feeds.feedburner.com/~r/jpmens/~4/fgoMQFvDhVs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.fupps.com/2010/03/09/life-was-much-easier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.fupps.com/2010/03/09/life-was-much-easier/</feedburner:origLink></item>
		<item>
		<title>NanoBSD article submitted</title>
		<link>http://feedproxy.google.com/~r/jpmens/~3/68xiOePD3jQ/</link>
		<comments>http://blog.fupps.com/2010/03/08/nanobsd-article-submitted/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 12:44:57 +0000</pubDate>
		<dc:creator>Jan-Piet Mens</dc:creator>
				<category><![CDATA[BSD]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[article]]></category>

		<guid isPermaLink="false">http://blog.fupps.com/?p=3389</guid>
		<description><![CDATA[I&#039;ve completed and submitted my article on NanoBSD, the &#034;miniature&#034; FreeBSD. At 3000+ words, turned out a bit longer than I had expected, so I hope they won&#039;t chop too much of it.
NanoBSD works wonders on PC Engines&#039;  ALIX series of boards, so I&#039;ve used some of those as examples for NanoBSD usage. I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#039;ve completed and submitted my article on <a href="http://www.freebsd.org/doc/en/articles/nanobsd/index.html">NanoBSD</a>, the &#034;miniature&#034; <a href="http://www.freebsd.org/">FreeBSD</a>. At 3000+ words, turned out a bit longer than I had expected, so I hope they won&#039;t chop too much of it.</p>
<p>NanoBSD works wonders on <a href="http://www.pcengines.ch/">PC Engines</a>&#039;  <a href="http://www.pcengines.ch/alix.htm">ALIX</a> series of boards, so I&#039;ve used some of those as examples for NanoBSD usage. I contacted PC Engines for permission to use one of their photos, and Pascal Dornier, founder of PC Engines, went a step further and shot some custom photos of their equipment for me. Much appreciated.</p>
<p><img src="http://blog.fupps.com/wp-content/media/2010/ZZ40B3780F.jpg" width="500" height="262" alt="" /></p>
<p>If all goes as planned, the article will appear in issue 5 of <a href="http://ix.de">iX magazine</a> end of April. I&#039;ll keep you posted.</p>
<img src="http://feeds.feedburner.com/~r/jpmens/~4/68xiOePD3jQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.fupps.com/2010/03/08/nanobsd-article-submitted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.fupps.com/2010/03/08/nanobsd-article-submitted/</feedburner:origLink></item>
		<item>
		<title>Cowboy up</title>
		<link>http://feedproxy.google.com/~r/jpmens/~3/9TyGkbBlmOM/</link>
		<comments>http://blog.fupps.com/2010/03/07/cowboy-up/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 09:43:10 +0000</pubDate>
		<dc:creator>Jan-Piet Mens</dc:creator>
				<category><![CDATA[Entertainement]]></category>
		<category><![CDATA[joke]]></category>

		<guid isPermaLink="false">http://blog.fupps.com/?p=3388</guid>
		<description><![CDATA[A cowboy appeared before St. Peter at the Pearly Gates.  
&#039;Have you ever done anything of particular merit?&#039; St. Peter asked. 
&#039;Well, I can think of one thing,&#039; the cowboy offered.  
&#039;On a trip to the Black Hills out in  South Dakota , I came upon a gang of bikers who were [...]]]></description>
			<content:encoded><![CDATA[<p>A cowboy appeared before St. Peter at the Pearly Gates.  </p>
<p>&#039;Have you ever done anything of particular merit?&#039; St. Peter asked. </p>
<p>&#039;Well, I can think of one thing,&#039; the cowboy offered.  </p>
<p>&#039;On a trip to the Black Hills out in  South Dakota , I came upon a gang of bikers who were threatening a young woman.  I directed them to leave her alone, but they wouldn&#039;t listen.  So, I approached the largest and most tattooed biker and smacked him in the face, kicked his bike over, ripped out his nose ring, and threw it on the ground.  I yelled, &#039;Now, back off or I&#039;ll kick the crap out of all of you!&#039; </p>
<p>St. Peter was impressed, &#039;When did this happen?&#039;</p>
<p>&#039;Couple of minutes ago.&#039; </p>
<img src="http://feeds.feedburner.com/~r/jpmens/~4/9TyGkbBlmOM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.fupps.com/2010/03/07/cowboy-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.fupps.com/2010/03/07/cowboy-up/</feedburner:origLink></item>
		<item>
		<title>7 books 1 shelf</title>
		<link>http://feedproxy.google.com/~r/jpmens/~3/OZ8DgVLHtRE/</link>
		<comments>http://blog.fupps.com/2010/03/05/7-books-1-shelf/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 18:35:34 +0000</pubDate>
		<dc:creator>Jan-Piet Mens</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[shelf]]></category>

		<guid isPermaLink="false">http://blog.fupps.com/?p=3387</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a href="http://blankblank.net/collection/mikeandmaaike/power/index.php"><img src="http://blog.fupps.com/wp-content/media/2010/ZZ54C36CFF.jpg" width="500" height="500" alt="" /></a></p>
<img src="http://feeds.feedburner.com/~r/jpmens/~4/OZ8DgVLHtRE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.fupps.com/2010/03/05/7-books-1-shelf/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.fupps.com/2010/03/05/7-books-1-shelf/</feedburner:origLink></item>
		<item>
		<title>You are invited to the IE6 funeral</title>
		<link>http://feedproxy.google.com/~r/jpmens/~3/aZiGWKurjM4/</link>
		<comments>http://blog.fupps.com/2010/03/04/you-are-invited-to-the-ie6-funeral/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 14:09:40 +0000</pubDate>
		<dc:creator>Jan-Piet Mens</dc:creator>
				<category><![CDATA[Entertainement]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[IE6]]></category>

		<guid isPermaLink="false">http://blog.fupps.com/?p=3386</guid>
		<description><![CDATA[Hated by many, and unfortunately still in widespread use, IE6 will be burried today. Web developers particularly hated IE6 because it was a tremendous mess. These two images show, on the left, how any normal browser works, and on the right, the car crash that IE6 produces:


A funeral will be held Thursday at the Forest [...]]]></description>
			<content:encoded><![CDATA[<p>Hated by many, and unfortunately still in widespread use, IE6 will be burried today. Web developers particularly hated IE6 because it was a tremendous mess. These two images show, on the left, how any normal browser works, and on the right, the car crash that IE6 produces:</p>
<p><a href="http://www.flickr.com/photos/atzu/4365152223/sizes/l/"><img src="http://blog.fupps.com/wp-content/media/2010/ZZ48F4AB13.jpg" width="500" height="254" alt="" /></a></p>
<p><a href="http://ie6funeral.com/"><img src="http://blog.fupps.com/wp-content/media/2010/ZZ2D7109FD.jpg" width="250" height="353" alt="" /></a></p>
<p>A funeral will be held Thursday at the Forest Room 5 bar in Denver. Services will be hosted by Aten Design Group. <a href="http://ie6funeral.com/">Click for the venue</a>. Please note, that funeral attire is encouraged.</p>
<img src="http://feeds.feedburner.com/~r/jpmens/~4/aZiGWKurjM4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.fupps.com/2010/03/04/you-are-invited-to-the-ie6-funeral/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.fupps.com/2010/03/04/you-are-invited-to-the-ie6-funeral/</feedburner:origLink></item>
	</channel>
</rss>
