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

<channel>
	<title>Cooking and Coding</title>
	<atom:link href="http://cookingandcoding.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cookingandcoding.wordpress.com</link>
	<description>The two things I do the most...</description>
	<lastBuildDate>Thu, 12 Nov 2009 04:02:29 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='cookingandcoding.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/0e111b7f1e74d00720a5cc66798c736b?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Cooking and Coding</title>
		<link>http://cookingandcoding.wordpress.com</link>
	</image>
			<item>
		<title>Install Red5 + Xuggler on CentOS 5.x</title>
		<link>http://cookingandcoding.wordpress.com/2009/11/11/install-red5-xuggler-on-centos-5-x/</link>
		<comments>http://cookingandcoding.wordpress.com/2009/11/11/install-red5-xuggler-on-centos-5-x/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 04:02:29 +0000</pubDate>
		<dc:creator>Mike Reich</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[How-To]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[red5]]></category>
		<category><![CDATA[xuggler]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ant]]></category>

		<guid isPermaLink="false">http://cookingandcoding.wordpress.com/?p=237</guid>
		<description><![CDATA[A new project requires using Red5 and Xuggler on a CentOS virtual host.  Unfortunately, setting up both Xuggler and Red5 can be a bear on CentOS, because the default installation doesn&#8217;t come with Java.  So, I&#8217;ve put together a tutorial that should help you out if you&#8217;re trying to setup a Red5 system with Xuggler.
Step [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=237&subd=cookingandcoding&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A new project requires using Red5 and Xuggler on a CentOS virtual host.  Unfortunately, setting up both Xuggler and Red5 can be a bear on CentOS, because the default installation doesn&#8217;t come with Java.  So, I&#8217;ve put together a tutorial that should help you out if you&#8217;re trying to setup a Red5 system with Xuggler.</p>
<h3>Step 1: Setup Java</h3>
<p>CentOS will use the openJDK packages if you try to install java via YUM, but unfortunately, these packages have caused problems for a lot of users trying to install Red5.  I recommend using the Sun binaries, which now seem to work fine for CentOS.  First, you&#8217;ll want to download the most current JDK (<strong>note</strong>: it must be the JDK rather than JRE package) rpm binary package from <a href="http://java.sun.com/javase/downloads/index.jsp" target="_blank">this</a> site:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ cd /usr/src
$ wget $long_link_from_java_download_page$
</code></pre>
<p>Once its downloaded, make sure the filename looks something like &#8216;<em>jre-xxxx-linux-i586-rpm.bin</em>&#8216;.  Next, make sure the binary is executable, and run it:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ chmod a+x jre-6u17-linux-i586-rpm.bin
$ ./jre-6u17-linux-i586-rpm.bin
</code></pre>
<p>You&#8217;ll get a license agreement page, so hit the space bar until you get to the bottom, and type &#8216;yes&#8217; to agree.  Next, you&#8217;ll need to run the resulting rpm package:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ rpm -i jre-6u17-linux-i586.rpm
</code></pre>
<p>Now, confirm that java has been installed correctly to<em> /usr/local</em> by running the &#8216;java -version&#8217; command:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ java -version
java version "1.6.0_17"
Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
Java HotSpot(TM) Server VM (build 14.3-b01, mixed mode)
$
</code></pre>
<p>If the command runs successfully, you&#8217;re all done with Step 1.</p>
<h3>Step 2: Get ANT</h3>
<p>Apache ANT is a build system commonly used for java projects.  ANT is required by both Red5 and Xuggler, so we&#8217;ll go ahead and get it installed.  The setup is pretty easy; first, download and extract the latest ANT binary:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ cd /usr/src
$ wget http://archive.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.tar.gz
$ tar -xzf apache-ant-1.7.1-bin.tar.gz
$ mv apache-ant-1.7.1-bin /usr/local/ant
</code></pre>
<p>Now, you need to setup the ANT_HOME environment variable:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ export ANT_HOME=/usr/local/ant
$ export PATH=$PATH:/usr/local/ant/bin
</code></pre>
<h3>Step 3: Setup Xuggler</h3>
<p>The best way to get Xuggler is to download it via the current SVN trunk:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ cd /usr/src
$ svn checkout http://xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler xuggle-xuggler
</code></pre>
<p>Once everything has been checked out (which can take quite a while), move into the<em> xuggle-xuggler </em>directory and set the appropriate environment variables:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ cd /usr/src/xuggle-xuggler
$ export XUGGLE_HOME=/usr/local
$ export PATH=$XUGGLE_HOME/bin:$PATH
$ export LD_LIBRARY_PATH=$XUGGLE_HOME/lib:$LD_LIBRARY_PATH
</code></pre>
<p>Next, begin the build by running:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ ant run-tests
</code></pre>
<p>This will make all the native and java binaries and then run the appropriate unit tests on each.  This can take a while (10 minutes on my server), so be patient.  Ideally, all the tests should pass, but sometimes I&#8217;ve had certain MP3 tests fail.  If you don&#8217;t plan on using the MP3 transcoding features of Xuggler, you can ignore these errors.  Next, install Xuggler:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ sudo ant install
</code></pre>
<p>If everything went well, you should see a bunch of print outs indicating a successful install.</p>
<h3>Step 4: Install Red5</h3>
<p>Like Xuggler, the best place to get Red5 is the current SVN trunk:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ cd /usr/local
$ svn checkout http://red5.googlecode.com/svn/java/server/trunk/ red5
</code></pre>
<p>Next, use ANT to build and install Red5:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ ant prepare
$ ant dist
$ cp -r dist/conf .
</code></pre>
<p>If everything went well, Red5 should be installed and configured.  You can test your install by starting the server:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ ./red5.sh
</code></pre>
<p>and visiting &#8216;<em>http://yourserveraddres:5080/</em>&#8216;.  If you get the screenshot below, you are good to go with Red5.</p>
<h3><a href="http://cookingandcoding.files.wordpress.com/2009/11/red5.png"><img class="aligncenter size-medium wp-image-238" title="red5" src="http://cookingandcoding.files.wordpress.com/2009/11/red5.png?w=300&#038;h=212" alt="red5" width="300" height="212" /></a>Step 5: Copy Xuggler to Red5</h3>
<p>For Red5 to use the Xuggler library, you have to copy a compiled Jar to the <em>red5/lib</em> directory:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>$ cp /usr/src/xuggle-xuggler/dist/lib/xuggle-xuggler.jar /usr/local/red5/lib
</code></pre>
<p>And with that, you should be all set to go!  Just copy your Red5 app into the webapps directory and you&#8217;re ready to do some cool stuff with video.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookingandcoding.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookingandcoding.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookingandcoding.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookingandcoding.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookingandcoding.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookingandcoding.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookingandcoding.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookingandcoding.wordpress.com/237/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookingandcoding.wordpress.com/237/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookingandcoding.wordpress.com/237/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=237&subd=cookingandcoding&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cookingandcoding.wordpress.com/2009/11/11/install-red5-xuggler-on-centos-5-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb586819079933bfd8f867eaf53674e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Mike Reich</media:title>
		</media:content>

		<media:content url="http://cookingandcoding.files.wordpress.com/2009/11/red5.png?w=300" medium="image">
			<media:title type="html">red5</media:title>
		</media:content>
	</item>
		<item>
		<title>TCP Speed Tuning</title>
		<link>http://cookingandcoding.wordpress.com/2009/10/03/tcp-speed-tuning/</link>
		<comments>http://cookingandcoding.wordpress.com/2009/10/03/tcp-speed-tuning/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 22:48:12 +0000</pubDate>
		<dc:creator>Mike Reich</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[buffer size]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[latency]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[sockets]]></category>
		<category><![CDATA[tcp]]></category>

		<guid isPermaLink="false">http://cookingandcoding.wordpress.com/?p=235</guid>
		<description><![CDATA[I&#8217;m working on a project that has required me to do some Java socket programming.  All was going well until I uploaded my code to the VPS I&#8217;m using, and suddenly the upload speeds I was able to attain posting data to the server sucked.  I mean really sucked, like 4 KB/Sec bad.  My first [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=235&subd=cookingandcoding&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;m working on a project that has required me to do some Java socket programming.  All was going well until I uploaded my code to the VPS I&#8217;m using, and suddenly the upload speeds I was able to attain posting data to the server sucked.  I mean really sucked, like 4 KB/Sec bad.  My first thought was the connection my hosting company uses, but I was able to upload files via FTP at more than 100 KB/sec, so it must have been something to do with my application.  After a little Googling, I came across this great article that describes the problem I ran into and potential fixes.</p>
<p><a href="http://onlamp.com/pub/a/onlamp/2005/11/17/tcp_tuning.html">http://onlamp.com/pub/a/onlamp/2005/11/17/tcp_tuning.html</a></p>
<p>The short of it was that the toolkit I was using had a ridiculously low default buffer size set on the socket, so I was basically limited to about 32000 bits per second coming in.  The solution was simple: specify a higher buffer size when setting up the socket, and I was back in business at over 100KB/sec!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookingandcoding.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookingandcoding.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookingandcoding.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookingandcoding.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookingandcoding.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookingandcoding.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookingandcoding.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookingandcoding.wordpress.com/235/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookingandcoding.wordpress.com/235/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookingandcoding.wordpress.com/235/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=235&subd=cookingandcoding&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cookingandcoding.wordpress.com/2009/10/03/tcp-speed-tuning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb586819079933bfd8f867eaf53674e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Mike Reich</media:title>
		</media:content>
	</item>
		<item>
		<title>Dynamically Generating Embedded Google Calendars with GCal4Ruby</title>
		<link>http://cookingandcoding.wordpress.com/2009/08/31/dynamically-generating-embedded-google-calendars-with-gcal4ruby/</link>
		<comments>http://cookingandcoding.wordpress.com/2009/08/31/dynamically-generating-embedded-google-calendars-with-gcal4ruby/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 03:15:07 +0000</pubDate>
		<dc:creator>Mike Reich</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[embedded google calendar]]></category>
		<category><![CDATA[gcal4ruby]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[Google Calendar]]></category>
		<category><![CDATA[iframe]]></category>

		<guid isPermaLink="false">http://cookingandcoding.wordpress.com/?p=229</guid>
		<description><![CDATA[One of the great features of Google Calendar is the ability to embed a calendar view into any webpage using the &#60;iframe&#62; tag.  Google makes this especially simple by providing a great tool that allows you to choose formatting options, which calendar you want to display, color, etc.  This is great, however it only generates [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=229&subd=cookingandcoding&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>One of the great features of Google Calendar is the ability to embed a calendar view into any webpage using the &lt;iframe&gt; tag.  Google makes this especially simple by providing a great tool that allows you to choose formatting options, which calendar you want to display, color, etc.  This is great, however it only generates the static tag, and there is no easy way to dynamically produce the correct &lt;iframe&gt; tag.</p>
<p>With the latest release of <a href="http://cookingandcoding.wordpress.com/2009/06/08/new-ruby-google-calendar-api-gem-gcal4ruby/">GCal4Ruby</a>, I&#8217;ve included three helper methods for producing a dynamically generated &lt;iframe&gt; tag on demand.  This is great for AJAX applications where you want to create your own user interface for the calendar, say to select different calendars to show in one combined calendar view.  GCal4Ruby makes this impressively easy:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>service = Service.new()
service.authenticate('account', 'password')
cal = service.calendars.first
cal.to_iframe
</code></pre>
<p>Which outputs the following&lt;iframe&gt; tag:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>&lt;iframe src='http://www.google.com/calendar/embed?&amp;amp;height=600&amp;amp;bgcolor=%23FFFFFF&amp;amp;width=600&amp;amp;color=%232952A3&amp;amp;src=iowacity1%40seabourneconsulting.com&amp;amp;' style='0 px solid;' width='600' height='600' frameborder='0' scrolling='no'&gt;&lt;/iframe&gt;
</code></pre>
<p>You also have the ability to specify all the standard formatting features using GCal4Ruby.  The following code produces a calendar with no navigation controls in the agenda view:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>cal.to_iframe({:showTitle =&gt; false,
               :showNav =&gt; false,
               :showPrint =&gt; false,
               :showTabs =&gt; false,
               :showCalendars =&gt; false,
               :showTimezone =&gt; false,
               :viewMode =&gt; 'AGENDA'})
</code></pre>
<p>You can also include multiple calendars in one embedded view by using the Service#to_iframe method.  You can display all calendars in the service using the :all token, or you can pass an array of calendar ids:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:95%;padding:5px;"><code>cals = ['calendarid@gmail.com', '23209384lkjdf9lakdjd@gmail.com']
service.to_iframe(cals)
</code></pre>
<p>You can use the same options to choose which calendar elements to display.</p>
<p>Lastly, if you already know the calendar id, and don&#8217;t want to authenticate, you can use the to_iframe class method, which looks like this:</p>
<pre style="border:1px dashed #999999;overflow:auto;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;color:#000000;background-color:#eeeeee;font-size:12px;line-height:14px;width:100%;padding:5px;"><code>Calendar.to_iframe('calendar_id@gmail.com')
</code></pre>
<p>Using the class method means you don&#8217;t have to authenticate the service and create the calendar instance, which reduces latency by bypassing all communications with the Google Calendar API, as long as you know the Calendar ID ahead of time.</p>
<p>For more information, and all the options you can pass, check out the <a href="http://gcal4ruby.rubyforge.org/">documentation</a>.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookingandcoding.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookingandcoding.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookingandcoding.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookingandcoding.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookingandcoding.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookingandcoding.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookingandcoding.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookingandcoding.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookingandcoding.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookingandcoding.wordpress.com/229/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=229&subd=cookingandcoding&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cookingandcoding.wordpress.com/2009/08/31/dynamically-generating-embedded-google-calendars-with-gcal4ruby/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb586819079933bfd8f867eaf53674e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Mike Reich</media:title>
		</media:content>
	</item>
		<item>
		<title>Chicken Waterzooi</title>
		<link>http://cookingandcoding.wordpress.com/2009/08/31/chicken-waterzooi/</link>
		<comments>http://cookingandcoding.wordpress.com/2009/08/31/chicken-waterzooi/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 01:51:59 +0000</pubDate>
		<dc:creator>Mike Reich</dc:creator>
				<category><![CDATA[Cooking]]></category>
		<category><![CDATA[Recipes]]></category>
		<category><![CDATA[belgium]]></category>
		<category><![CDATA[chicken stew]]></category>
		<category><![CDATA[recipe]]></category>
		<category><![CDATA[waterzooi]]></category>

		<guid isPermaLink="false">http://cookingandcoding.wordpress.com/?p=226</guid>
		<description><![CDATA[One of the things I remember most about my time in Belgium, aside from the beer, was the chicken stew they call Waterzooi.  The national dish of Belgium, chicken waterzooi is popular and widely available, and was the perfect meal on a rainy day.  It has been rainy in my neck of the woods recently, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=226&subd=cookingandcoding&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>One of the things I remember most about my time in Belgium, aside from the beer, was the chicken stew they call Waterzooi.  The national dish of Belgium, chicken waterzooi is popular and widely available, and was the perfect meal on a rainy day.  It has been rainy in my neck of the woods recently, perfect stew weather, so I decided to give it a try.  Here&#8217;s the recipe:</p>
<p><strong>Ingredients<br />
</strong></p>
<ul>
<li>1 Whole chicken (3-4 pounds)</li>
<li>2 leeks</li>
<li>2 onions</li>
<li>4 large carrots</li>
<li>1 pound (16 oz) mushrooms</li>
<li>2 bay leaves</li>
<li>2 thyme sprigs</li>
<li>1 lemon</li>
<li>4 tablespoons butter</li>
<li>1 cup heavy cream</li>
<li>1 tablespoon olive oil</li>
<li>1 tablespoon salt</li>
<li>2 tablespoon fresh ground pepper</li>
</ul>
<p><strong>Instructions</strong></p>
<ol>
<li>Slice 1 leek, 2 carrots and 1 onion into large pieces.  Rinse off the chicken and place in a large stock pot with the leeks and the carrots and onion.  Add the bay leaves and thyme and 1 tablespoon of the pepper.  Turn on medium and bring to a boil.</li>
<li>Cook the chicken for about 20 minutes, or until poached and not pink can be seen under the skin.  Remove the chicken and set aside to cool.</li>
<li>Strain the remaining vegetables from the pot, reserving the stock.</li>
<li>Slice the remaining carrots, leek, mushrooms and onion into small pieces.</li>
<li>Heat the olive oil in the stock pot on medium-high heat.  Add the onions and leeks and saute for 5 minutes, or until soft.</li>
<li>Add the carrots and mushrooms and the remaining salt, pepper and reserved chicken stock.</li>
<li>Reduce to a simmer, and cook until the vegetables are soft, about 30 minutes.</li>
<li>Meanwhile, once the chicken has cooled, remove the skin and pick the cooked meat off the bones.  For an authentic Belgian feel, remove the chicken in long strips by peeling along the bias.</li>
<li>Once the vegetables have cooked, add the chicken to the pot and cook for 5 minutes more.</li>
<li>Add the butter and cream, stirring to incorporate.</li>
<li>To serve, ladle the soup in wide bowls, and squeeze a wedge of lemon over the top.</li>
</ol>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookingandcoding.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookingandcoding.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookingandcoding.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookingandcoding.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookingandcoding.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookingandcoding.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookingandcoding.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookingandcoding.wordpress.com/226/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookingandcoding.wordpress.com/226/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookingandcoding.wordpress.com/226/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=226&subd=cookingandcoding&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cookingandcoding.wordpress.com/2009/08/31/chicken-waterzooi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb586819079933bfd8f867eaf53674e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Mike Reich</media:title>
		</media:content>
	</item>
		<item>
		<title>Powering Event Management Systems with Google Calendar</title>
		<link>http://cookingandcoding.wordpress.com/2009/08/31/powering-event-management-systems-with-google-calendar/</link>
		<comments>http://cookingandcoding.wordpress.com/2009/08/31/powering-event-management-systems-with-google-calendar/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 11:48:52 +0000</pubDate>
		<dc:creator>Mike Reich</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[Google Calendar]]></category>
		<category><![CDATA[Google Calendar API]]></category>
		<category><![CDATA[groupware]]></category>

		<guid isPermaLink="false">http://cookingandcoding.wordpress.com/?p=206</guid>
		<description><![CDATA[A frequent need for many community and groupware websites is an event calendar.  Though there are many calendar solutions available in commercial offerings, custom built and smaller sites often find it difficult to find a solution that is both cost-effective and feature rich.  This white paper examines how to use the existing Google Calendar infrastructure, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=206&subd=cookingandcoding&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A frequent need for many community and groupware websites is an event calendar.  Though there are many calendar solutions available in commercial offerings, custom built and smaller sites often find it difficult to find a solution that is both cost-effective and feature rich.  This white paper examines how to use the existing Google Calendar infrastructure, by way of the published API, as the foundation for a fully featured calendar and event management system.</p>
<h3><strong>Background</strong></h3>
<p>Google Calendar was introduced by Google in 2006 as a web based, standards compliant calendar application.  In addition to the client interface, Google also published the full Application Programming Interface (API) so that third party developers could interact with the underlying data stored in the Google Calendar system.  The API is based on Atom RSS, an XML based publishing protocol operating over HTTP.  Because it is based on XML and Atom, the API is easily used by almost any programming language available, as long as there is a generic HTTP and XML parsing library available.</p>
<p>In addition to the API, Google also provides an easy way to embed Google Calendars in third party websites using HTML &lt;iframe&gt; tags.  This allows websites to use the display capabilities of the Google Calendar client on their own sites.  The embedded calendars can be customized to match the look and feel of a website while retaining the classic Google branding and style.</p>
<p>This document assumes basic familiarity with the Google Calendar service, as well as knowledge of basic programming concepts, including XML and HTTP.</p>
<p><strong>Advantages of Integration with Google Calendar</strong><br />
It is possible to use the Google Calendar service as both the data provider (via the API) and the display system (through the embedded &lt;iframe&gt;) for a calendar, or as either option individually.</p>
<p>Using the Google Calendar system as a basis for a Calendar/Event Management system can provide many benefits:</p>
<ul>
<li> <strong>Reduced Development Time</strong>: Google has implemented a robust, tested data model that can be leveraged for event storage and processing.  The well document API decreases development time by providing an existing data model and framework from which to build from.</li>
<li><strong>Rich Feature Set: </strong>the Google Calendar service implements a range of useful features, from RSS syndication of calendars to Event attendee support.  These features are all standards compliant, ensuring interoperability with major calendaring applications like Microsoft Outlook and Apple iCal.</li>
<li><strong>Improved Reliability</strong>: the Google services are enterprise applications that have an uptime &gt; %99.9.</li>
<li><strong>Cost Effectiveness</strong>: the Google services are free &#8211; using the API requires nothing more than a standard Google account, but you gain an enterprise level tool for your website.</li>
<li><strong>Customization</strong>: Google provides many options for customizing the look and feel as well as the functionality available through the Google Calendar API.  You can choose to use only those features that you need, and a display that matches the look-and-feel of your site.</li>
</ul>
<p>Taken together, the benefits and features of using the Google Calendar system to power an event management/calendar system can be compelling for the small to medium sized website.</p>
<p><strong>Requirements</strong><br />
In our experience, small to medium sized community based sites have a common set of requirements for a calendar/event management system:</p>
<ul>
<li>Display a publicly available calendar of events</li>
<li>Display private calendar events restricted to members/registered users</li>
<li>Categorize events by type and display in discrete sub-calendars</li>
<li>Allow users to submit events</li>
<li>Accept/Reject submitted events</li>
<li>Manage events, including updating and deletion</li>
</ul>
<h3><strong>System Design</strong></h3>
<p>Building a system that interacts with the Google Calendar system has three main components:</p>
<ul>
<li>The application server</li>
<li>The display subsystem</li>
<li>The event management staging subsystem</li>
</ul>
<p>Figure 1 details the structure of the system.  The application server is the underlying structure and code upon which the website is based.  This may be any content management system, Ruby on Rails, etc.</p>
<p>The display subsystem includes all of the forms and &#8216;views&#8217; that provide an interface to the user.  Within the display subsystem, and the main interface to the Google Calendar data is the embedded Google Calendar.  The calendar is embedded using &lt;iframe&gt; tags pointing to a Google hosted calendar resource.  Options are passed in the &lt;iframe&gt; source parameter, instructing Google on how to format the returned HTML calendar.  The display subsystem manages the display of the embedded calendar by dynamically updating the &lt;iframe&gt; and source parameters.</p>
<p>The event management staging subsystem handles events before they are committed to the Google Calendar service.  This is essential if a requirement for the system is to approve/reject event submissions before they are displayed publicly.  The staging subsystem can also provide a mechanism for storing and displaying additional information other than what Google provides in the default event data model (examples of this may be contact information, admission costs, website, etc.)</p>
<div id="attachment_209" class="wp-caption aligncenter" style="width: 310px"><a href="http://cookingandcoding.files.wordpress.com/2009/08/system-stack1.png"><img class="size-medium wp-image-209" title="System Stack" src="http://cookingandcoding.files.wordpress.com/2009/08/system-stack1.png?w=300&#038;h=225" alt="Figure 1: Diagram of System Design Utilizing Google Calendar" width="300" height="225" /></a><p class="wp-caption-text">Figure 1: Diagram of System Design Utilizing Google Calendar</p></div>
<p><strong>Workflow</strong><br />
The workflow for the system is relatively simple.  First, a user views a form with fields for entering all of the event information, then submits that information to the application server.  Assuming everything is validated, the event information is saved into the Event Staging System.  Before the event is saved to the Google Calendar service, it is reviewed and approved by a site administrator or other designated user.  Once the information is approved, the event staging system saves the event to the Google Calendar system using the Google Calendar API.  At this point, the information is &#8216;live&#8217; and viewable on the calendar.</p>
<p>Any changes to the event go through the Event Staging System rather than the Google Calendar interface &#8211; this way, all changes are tracked and approved in the staging system before being made public.</p>
<div id="attachment_213" class="wp-caption aligncenter" style="width: 310px"><a href="http://cookingandcoding.files.wordpress.com/2009/08/option_1_system.png"><img class="size-medium wp-image-213" title="option_1_system" src="http://cookingandcoding.files.wordpress.com/2009/08/option_1_system.png?w=300&#038;h=153" alt="Figure 2: Event Submission Workflow" width="300" height="153" /></a><p class="wp-caption-text">Figure 2: Event Submission Workflow</p></div>
<p><strong>Staging System Data Model</strong><br />
The key to synchronizing information between the Staging system and the Google Calendar system are unique IDs.  Google assigns unique IDs to all calendars and events within its system, providing the Staging system with a way to select and track data within the Google Calendar system.  By saving this ID locally with the event information, a representation of the Google event is made. Any change then made to the local representation of the event can be transparently saved to the Google representation via the unique ID.</p>
<p><strong>Interacting with the Google Calendar API</strong><br />
Assuming the Application server is built using a MVC framework, the obvious place for interacting with the Google Calendar service is through the model.  The model will already contain the methods to save and update data, so it is a simple task to add the equivalent code to save the same information to the Google Calendar service.</p>
<p><strong>Data Duplication vs Latency<br />
</strong>A key thing to note about the system design described above is that data exists in two places simultaneously; in the staging database and the Google calendar service.  This is a design decision that weighs the latency cost of communicating with the Google Calendar service against the technical hassle of maintaining two separate data sets for the same event.</p>
<p>Depending on location, a typical API request to the Google servers will take anywhere from 200 to 600 ms to complete.  The most basic &#8217;save&#8217; POST operation to the Google calendar service requires two requests, one to authenticate and one to send the data.  Combined, these calls can take anywhere from 1/2 second to 1 second to complete, a very noticeable number for the end user.  And 2 requests to the Google service is the absolute minimum.  Therefore, using the Google service as the sole repository of the data, while possible, brings a sacrifice in perceived usability because of the overhead cost of the API requests.</p>
<p>The alternative, as outlined above, is a hybrid approach.  Latency is reduced by only communicating with the Google Server when necessary, i.e. when updating the displayed data on the Google servers.  For all other operations, such as searching for a particular event or populating a form with event data, the local staging table can be used, providing a faster end user experience.</p>
<p>However, this approach requires special care to reduce potential uses where data can become out of sync.  A simple set of design rules can help eliminate these situations:</p>
<ol>
<li>Information should flow in one direction &#8211; i.e. only one data set should be the &#8216;master&#8217;, and all others are updated from that set.</li>
<li>If a remote save operation fails and data can not be updated to the remote service, the local operation should fail and no local data should be saved.</li>
<li>If in doubt as to whether the remote copy is in sync with the master copy, do a full replace of the record from the master set.</li>
</ol>
<h3>Conclusions</h3>
<p>Implemented correctly, integrating Google Calendars on your site can save time, lower development costs and give you cutting edge and standards compliant features, all for free.  The architecture outlined here will allow you to retain the look and feel of your own site, while making use of the features provided by Google through the Calendar API.</p>
<p>Have questions or want to discuss a project?  Feel free to <a href="http://seabourneconsulting.com/contact-us/send-email">contact me</a>.  Comments and thoughts are always welcome.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookingandcoding.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookingandcoding.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookingandcoding.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookingandcoding.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookingandcoding.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookingandcoding.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookingandcoding.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookingandcoding.wordpress.com/206/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookingandcoding.wordpress.com/206/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookingandcoding.wordpress.com/206/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=206&subd=cookingandcoding&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cookingandcoding.wordpress.com/2009/08/31/powering-event-management-systems-with-google-calendar/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb586819079933bfd8f867eaf53674e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Mike Reich</media:title>
		</media:content>

		<media:content url="http://cookingandcoding.files.wordpress.com/2009/08/system-stack1.png?w=300" medium="image">
			<media:title type="html">System Stack</media:title>
		</media:content>

		<media:content url="http://cookingandcoding.files.wordpress.com/2009/08/option_1_system.png?w=300" medium="image">
			<media:title type="html">option_1_system</media:title>
		</media:content>
	</item>
		<item>
		<title>Tip for Using Skype with GoToMeeting</title>
		<link>http://cookingandcoding.wordpress.com/2009/08/21/tip-for-using-skype-with-gotomeeting/</link>
		<comments>http://cookingandcoding.wordpress.com/2009/08/21/tip-for-using-skype-with-gotomeeting/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 21:30:57 +0000</pubDate>
		<dc:creator>Mike Reich</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gotomeeting]]></category>
		<category><![CDATA[problems]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[solution]]></category>

		<guid isPermaLink="false">http://cookingandcoding.wordpress.com/2009/08/21/tip-for-using-skype-with-gotomeeting/</guid>
		<description><![CDATA[I had a call with clients today via Go To Meeting and Skype in which I was unable to enter the Access Code for the conference call.  GoToMeeting kept inaccurately recognizing the code I was typing in.  After about 10 minutes of re-entering the access, I was finally able to get in.  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=212&subd=cookingandcoding&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I had a call with clients today via Go To Meeting and Skype in which I was unable to enter the Access Code for the conference call.  GoToMeeting kept inaccurately recognizing the code I was typing in.  After about 10 minutes of re-entering the access, I was finally able to get in.  The trick?  Enter the code very slowly, with a couple of seconds in between each number.  Since GoToMeeting figures out what you are typing based on the tones for each number, there must be some problem with the way skype transmits the tones.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookingandcoding.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookingandcoding.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookingandcoding.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookingandcoding.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookingandcoding.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookingandcoding.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookingandcoding.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookingandcoding.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookingandcoding.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookingandcoding.wordpress.com/212/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=212&subd=cookingandcoding&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cookingandcoding.wordpress.com/2009/08/21/tip-for-using-skype-with-gotomeeting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb586819079933bfd8f867eaf53674e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Mike Reich</media:title>
		</media:content>
	</item>
		<item>
		<title>Hidden Embedded Google Calendar Parameters</title>
		<link>http://cookingandcoding.wordpress.com/2009/08/16/hidden-embedded-google-calendar-parameters/</link>
		<comments>http://cookingandcoding.wordpress.com/2009/08/16/hidden-embedded-google-calendar-parameters/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 00:37:14 +0000</pubDate>
		<dc:creator>Mike Reich</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[Google Calendar]]></category>
		<category><![CDATA[hidden parameters]]></category>

		<guid isPermaLink="false">http://cookingandcoding.wordpress.com/?p=200</guid>
		<description><![CDATA[One of the more powerful features of the Google Calendar system is the ability to embed calendars in websites using an &#60;iframe&#62; tag.  In the iframe&#8217;s &#8217;source&#8217; parameter you can pass an encoded string of parameters to Google that changes the default appearance of the returned embedded calendar.  Using the Customize Embedded Calendar tool from [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=200&subd=cookingandcoding&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>One of the more powerful features of the Google Calendar system is the ability to embed calendars in websites using an &lt;iframe&gt; tag.  In the iframe&#8217;s &#8217;source&#8217; parameter you can pass an encoded string of parameters to Google that changes the default appearance of the returned embedded calendar.  Using the Customize Embedded Calendar tool from Google, developers have reverse engineered what the parameters are that you can pass to Google, but through some newsgroup surfing, I&#8217;ve come across a few parameters that are undocumented, or unimplemented in the Customize tool.</p>
<ol>
<li><strong>Dates:</strong> one of the frequent uses of the embedded calendar is to publicly display upcoming events.  However, the default behavior of the embedded calendar is to display the current date.  To get around this, you can specify a date range using the &#8216;dates&#8217; parameter appended in the source string.  The parameter takes a string of two dates, the start and end date, in the format of &#8216;yyyymmdd/yyyymmdd&#8217;.  You&#8217;ll want to make sure and encode the &#8216;/&#8217; as &#8216;%2F&#8217; for Google to parse this parameter.  One thing to note: specifying a default date range doesn&#8217;t affect the Agenda view.</li>
<li><strong>Private Key:</strong> ever tried to embed a calendar and received an error about not having adequate permissions to view it?  One way around this is to make your calendar public by default, but this means the events will also turn up in public searches &#8211; not an ideal solution for many who want to share a calendar on a password protected site, for example.  Also undocumented is the ability to specify a private key that will allow you to embed a private calendar with no warnings.  Simply append &#8216;pvttk=&#8217; to the source string using the private key from the calendar settings page.  Simply grab the URL from the &#8216;Private Address&#8217; HTML button towards the bottom, and parse the &#8216;pvttk&#8217; parameter from the end.  Unfortunately, there is no programmatic way to do this &#8211; you&#8217;ll need to grab the private key manually from the website for each calendar you want to embed.</li>
</ol>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookingandcoding.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookingandcoding.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookingandcoding.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookingandcoding.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookingandcoding.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookingandcoding.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookingandcoding.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookingandcoding.wordpress.com/200/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookingandcoding.wordpress.com/200/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookingandcoding.wordpress.com/200/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=200&subd=cookingandcoding&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cookingandcoding.wordpress.com/2009/08/16/hidden-embedded-google-calendar-parameters/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb586819079933bfd8f867eaf53674e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Mike Reich</media:title>
		</media:content>
	</item>
		<item>
		<title>Review: Ford Fusion with Microsoft SYNC</title>
		<link>http://cookingandcoding.wordpress.com/2009/08/05/review-ford-fusion-with-microsoft-sync/</link>
		<comments>http://cookingandcoding.wordpress.com/2009/08/05/review-ford-fusion-with-microsoft-sync/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 23:53:13 +0000</pubDate>
		<dc:creator>Mike Reich</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[cars]]></category>
		<category><![CDATA[ford fusion]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone OS 3.0]]></category>
		<category><![CDATA[microsoft sync]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[road trip]]></category>

		<guid isPermaLink="false">http://cookingandcoding.wordpress.com/?p=196</guid>
		<description><![CDATA[I just got back from a week-long road trip to Montana.  We rented a car, and got a nice change from the usual Chevy that Enterprise seems to rent non-stop: a Ford Fusion.  We had asked for a car with an auxiliary input to the stereo so that we could listen to our iPhones while [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=196&subd=cookingandcoding&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I just got back from a week-long road trip to Montana.  We rented a car, and got a nice change from the usual Chevy that Enterprise seems <img class="alignright" title="sync" src="http://farm2.static.flickr.com/1183/1433460436_ada3a45f57.jpg?v=1190736666" alt="" width="233" height="140" />to rent non-stop: a Ford Fusion.  We had asked for a car with an auxiliary input to the stereo so that we could listen to our iPhones while driving, and so they gave us the Fusion.  However, we were in for a surprise as the fusion has Microsoft&#8217;s new foray into car stereo equipment: Microsoft Sync.</p>
<p>Sync is essentially a microcomputer running a custom version of Windows CE.  The idea is that you can play almost any portable music device through a built-in USB port, and Auxiliary line-in port or via Bluetooth Audio.  There is no display, rather the Sync system uses the built-in standard 1 line stereo LCD display.</p>
<p>The upside of using the Sync system versus a standard auxiliary port is that you can control the playback functions from the controls on the steering wheel, as well see the track names and artist information on the display.  The USB port is also powered, so you can charge your device while its plugged in.  Our iPhones were on the list of approved devices that work well with the system (surprising for Microsoft), so we were in business.</p>
<p>I was also excited because new to the iPhone OS 3.0 supports the AD2P stereo bluetooth protocol for streaming sound, as well as a partial implementation of the AVRCP protocol for controlling playback.  So, I paired the phone with the stereo using the fairly straightforward instructions.  Note: the system will only let you do this if the car isn&#8217;t moving, which is really frustrating if you are a passenger and trying to set up the system.  Soon enough, I had my iPhone playing music on the car stereo via bluetooth.  There were a few pretty sweet features that showed some forethought into the implementation.  First, whenever the key was removed from the ignition and the phone was playing music, the system would pause the music.  Then, when you turned the car on again, it would automatically resume the song where you left off when you exited the car.  Pretty slick!  And the whole time I didn&#8217;t have to take the iPhone out of my pocket.</p>
<p>There were also a couple of drawbacks to the bluetooth side of things.  First, no song information was transfered or displayed on the dashboard display.  Second, Apple only partially implemented the AVRCP protocol, so the Sync system can only send play/pause signals &#8211; no skipping forward or back between songs.  Given that this is a pretty big disadvantage, especially on a road trip when you are listening to music for hours on end, we decided to try the USB route.</p>
<p>Plugging the iPhone into the USB port (which is hidden inside the center console) brings up the Sync system.  It starts by trying to index all the songs on the device &#8211; not sure why really.  After about 5 minutes of a progress bar, the car announces (via a built in voice synthesizer) that indexing could not retrieve all the songs, and that I&#8217;d have to enter track metadata manually into the system.  Yeah right!  Nice idea, but no one in their right mind would try to do this without a keyboard, and especially not with a one line display and turn nobs to select all the letters.  Anyway, we hit cancel and were good to go.  We selected the playlist we wanted, and it the Sync system started playing the song and displaying the track information on the stereo&#8217;s display.  Great!</p>
<p>We were cruising along for about 5 hours this way, then stopped at a gas station.  We had to turn off the car, but when we turned it back on to get going again, the stereo froze.  No sound, but it was displaying the track information for the last song we played.  After a few minutes, the display unlocked and gave us an error &#8216;USB Empty&#8217;.  Hmmm.  The iPhone was definitely plugged in, but was no longer getting any power from the port.  We tried restarting the car, unplugging the cable &#8211; basically everything we could think of, but we kept getting the same error.</p>
<p>After a little sluething online &#8211; thank god for iPhone&#8217;s internet connection &#8211; we discovered that this was a fairly common problem with the Sync system, and exposed a major design flaw.  There was no way to do a hard reset of the system!  Apparently, the Windows version used in the system had a buggy USB driver which would shut down under certain circumstances.  The only solution was to reboot everything, however there was no way to reboot the Sync system from the controls.  We tried to do a soft reset through the menu system, but no such luck.  The computer even kept drawing power when the car was off.  After more sleuthing, we found a forum post that suggested removing the fuse from under the steering wheel that controlled the power to the dash (For those of you wondering, it was fuse #13 &#8211; use the provided tool on the inside of the cover, and remove the fuse for about 30 seconds.  Your trunk may pop open.)  Once we reinserted the fuse and started the car up again, everything worked fine!</p>
<p>That turned out to be the only major hiccup we ran into.  Overall, I think the system works great, and it is definitely nice to see some serious integration between cars and the devices we use all the time.  The system would be improved by a better display, and of course by a hard reset option that is more accessible than popping out a fuse.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookingandcoding.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookingandcoding.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookingandcoding.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookingandcoding.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookingandcoding.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookingandcoding.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookingandcoding.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookingandcoding.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookingandcoding.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookingandcoding.wordpress.com/196/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=196&subd=cookingandcoding&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cookingandcoding.wordpress.com/2009/08/05/review-ford-fusion-with-microsoft-sync/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb586819079933bfd8f867eaf53674e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Mike Reich</media:title>
		</media:content>

		<media:content url="http://farm2.static.flickr.com/1183/1433460436_ada3a45f57.jpg?v=1190736666" medium="image">
			<media:title type="html">sync</media:title>
		</media:content>
	</item>
		<item>
		<title>Getting Notes to Sync in Mail from iPhone OS 3.0</title>
		<link>http://cookingandcoding.wordpress.com/2009/06/19/getting-notes-to-sync-in-mail-from-iphone-os-3-0/</link>
		<comments>http://cookingandcoding.wordpress.com/2009/06/19/getting-notes-to-sync-in-mail-from-iphone-os-3-0/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 16:42:32 +0000</pubDate>
		<dc:creator>Mike Reich</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone OS 3.0]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[Mail]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[sync]]></category>

		<guid isPermaLink="false">http://cookingandcoding.wordpress.com/?p=184</guid>
		<description><![CDATA[One feature I am really excited about in the new iPhone 3.0 OS released on Wednesday is the ability to sync your notes with the Mail application in Leopard.  However, it took me a few tries to figure out how to get this to work exactly.  I realized that I ran into this problem because [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=184&subd=cookingandcoding&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>One feature I am really excited about in the new iPhone 3.0 OS released on Wednesday is the ability to sync your notes with the Mail application in Leopard.  However, it took me a few tries to figure out how to get this to work exactly.  I realized that I ran into this problem because I had never created a note on my Mac in Mail, so this walkthrough assumes you are in the same position.  I&#8217;ve outlined the steps below:</p>
<ol>
<li>Enable Notes syncing in iTunes.  You can do this by going to the &#8216;Info&#8217; tab when you have your iPhone/iPod attached to your computer.  Check the &#8216;Sync Notes&#8217; checkbox about halfway down the page.<img class="aligncenter size-medium wp-image-185" title="notes-itunes" src="http://cookingandcoding.files.wordpress.com/2009/06/notes-itunes.png?w=300&#038;h=41" alt="notes-itunes" width="300" height="41" /></li>
<li>If you go ahead sync your iPhone now, and you&#8217;ll notice that none of the Notes show up in mail.  If you have multiple mailboxes, they&#8217;ll be listed under the &#8216;Reminders&#8217; heading in the Mail sidebar, with little note icons, but you won&#8217;t see any from your iPhone.  What you have to do is create a note in Mail now, by going to File &gt; New Note.  Type something in and save it, and you&#8217;ll see a new note icon under &#8216;Reminders/Notes&#8217; labeled &#8216;On My Mac&#8217;.  <img class="aligncenter size-full wp-image-186" title="mailboxes" src="http://cookingandcoding.files.wordpress.com/2009/06/mailboxes.png?w=196&#038;h=266" alt="mailboxes" width="196" height="266" /></li>
<li>Sync your iPhone one more time.  After its completed, you should see all your notes under the &#8216;On My Mac&#8217;.</li>
</ol>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookingandcoding.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookingandcoding.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookingandcoding.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookingandcoding.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookingandcoding.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookingandcoding.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookingandcoding.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookingandcoding.wordpress.com/184/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookingandcoding.wordpress.com/184/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookingandcoding.wordpress.com/184/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=184&subd=cookingandcoding&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cookingandcoding.wordpress.com/2009/06/19/getting-notes-to-sync-in-mail-from-iphone-os-3-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb586819079933bfd8f867eaf53674e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Mike Reich</media:title>
		</media:content>

		<media:content url="http://cookingandcoding.files.wordpress.com/2009/06/notes-itunes.png?w=300" medium="image">
			<media:title type="html">notes-itunes</media:title>
		</media:content>

		<media:content url="http://cookingandcoding.files.wordpress.com/2009/06/mailboxes.png" medium="image">
			<media:title type="html">mailboxes</media:title>
		</media:content>
	</item>
		<item>
		<title>2009 MacBook Pro Review</title>
		<link>http://cookingandcoding.wordpress.com/2009/06/19/2009-macbook-pro-review/</link>
		<comments>http://cookingandcoding.wordpress.com/2009/06/19/2009-macbook-pro-review/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 16:20:18 +0000</pubDate>
		<dc:creator>Mike Reich</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[MacBook Pro]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://cookingandcoding.wordpress.com/?p=175</guid>
		<description><![CDATA[Got home yesterday and decided to buy a new computer &#8211; just quit my job on Friday and signed a new contract for Seabourne so I felt like I could use a new toy.  For the last three years I&#8217;ve been using a Core 2 Duo MacBook and a Lenovo Thinkpad T60 with Kubuntu.  I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=175&subd=cookingandcoding&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Got home yesterday and decided to buy a new computer &#8211; just quit my job on Friday and signed a new contract for <a href="http://seabourneconsulting.com">Seabourne</a> so I felt like I could use a new<img class="alignright size-thumbnail wp-image-176" title="macbook pro" src="http://cookingandcoding.files.wordpress.com/2009/06/photo.jpg?w=112&#038;h=150" alt="macbook pro" width="112" height="150" /> toy.  For the last three years I&#8217;ve been using a Core 2 Duo MacBook and a Lenovo Thinkpad T60 with Kubuntu.  I liked both computers, but have been feeling hindered by the lack of screen real estate, especially when coding.  About three months ago I almost bought a 15 inch MBP, but decided to wait until I had more money.  And boy am I glad I did!  The whole line of MacBook Pros were updated last week at WWDC 09, and they all just got a lot better, and a lot cheaper.  Here&#8217;s my quick review.</p>
<p><strong>Unboxing<br />
</strong>As usual, Apple has done a terrific job on packaging.  Even though the computer is a solid 2 inches wider than my MacBook, there is probably 1/3 less packaging total.  Rather than a soft sleeve, the MBP comes wrapped in a clear plastic, similar to what the iPhones now come in.  As usual, a small manual and restore CDs come in a box below the computer, along with the power supply.  However, Apple no longer includes a free Apple Remote with laptops.</p>
<p><strong>Look and Feel<br />
</strong>The computer is gorgeous.  No other way to put it.  If I could pick one adjective for the whole thing, it would be &#8217;smooth&#8217;.  The aluminum has a beautiful satin finish that feels silky to the touch, but definitely has enough texture to make it grippable.  The screen has a glossy finish &#8211; I don&#8217;t mind, but I can see how this would bug some people as you really have to be careful not to touch it otherwise the fingerprints are glaringly visible.  The increased screen color gamut is obviously apparent when comparing this version of the MBP with any previous Apple laptop &#8211; the colors are much sharper.  I&#8217;ve noticed that the screen hinge seems much smoother than the MacBook.  It is easy to move the screen with one finger and have it stay in that position.</p>
<p>The keyboard is great, though the same chiclet style as all the Apple laptops are now (some people hate it).  The keys are much more firm than the MacBook, a big improvement.  I really enjoy the backlit keyboard, and there are some very handy function buttons to dim or brighten the lighting behind the keys.</p>
<p><strong>Size &amp; Screen<br />
</strong>One of the major reasons I bought a new computer was to get more screen space.  I&#8217;ve enjoyed the size of the 13 inch MacBook, but just felt that I&#8217;d be more productive with a 15 inch notebook.  Given the width and weight are about the same for both models now, it turns out to be a gain without much of a loss.<br />
<img class="aligncenter size-medium wp-image-177" title="Screenshot w terminals" src="http://cookingandcoding.files.wordpress.com/2009/06/screenshot-w-terminals.jpg?w=300&#038;h=187" alt="Screenshot w terminals" width="300" height="187" /></p>
<p>The screen is vibrant and has what seems like twice the brightness of my old MacBook.  Honestly, I feel about twice as productive with the new setup (as you can see in the picture above, that&#8217;s probably because I can have two terminal windows open at once!)</p>
<p>This thing is thin!  Though significantly wider than a MacBook (obviously), it is probably 10-20% thinner.  The LCD has benefited from the LED backlights by dropping a few millimeters of width.</p>
<p><strong>Trackpad and Gestures<br />
</strong>One of my favorite things about the new laptop is the support for multi-finger gestures.  Three fingers side to side goes back and forward in the browser or the finder, four fingers up and down triggers exposé or shows the desktop.  This took a little getting used to, but now that it&#8217;s an ingrained habit, I find that it is really hard to go back to computers without these features.  I had to download the new Release Candidate of Firefox 3.5 to get the three finger gesture support.  The track pad itself is much larger than almost any other laptop, which is really great for scrolling both horizontally and vertically through large code blocks.  I have had no problem with the new integrated button.  Overall I&#8217;m pretty impressed with the selective sensitivity of the track pad; I can keep my thumb on the button part of the pad and use my finger for pointing, and everything works smoothly as it would with a dedicated button.</p>
<p><strong>Battery Life<br />
</strong>The biggest selling point for me on this laptop was the new lithium-polymer battery.  The downside is that it&#8217;s integrated tightly into the unibody enclosure so you can&#8217;t remove it yourself or swap out another battery for longer uses.  The upside is that the battery now gets about 5-6 hours of use per charge, more than twice what my old MacBook used to get.  I&#8217;ve tested it out for about a week now, and with standard use (wireless on, screen brightness at 50%, bunches of programs open) I can get 5.5 hours pretty consistently.  The battery is also now supposed to last up to 1000 charges, or three years of standard use, and is replaceable at an apple store for $129, the same price as a new battery for older laptops.</p>
<p><strong>Summary<br />
</strong>Overall, this is the best MacBook Pro ever, and I think the best Apple Laptop ever.  The 15 inch MBP is a great middle ground between portability and usability.  The new features make this a compelling computer to use, has increased my productivity, but most importantly, is a pure joy to use.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/cookingandcoding.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/cookingandcoding.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/cookingandcoding.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/cookingandcoding.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/cookingandcoding.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/cookingandcoding.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/cookingandcoding.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/cookingandcoding.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/cookingandcoding.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/cookingandcoding.wordpress.com/175/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=cookingandcoding.wordpress.com&blog=4594385&post=175&subd=cookingandcoding&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://cookingandcoding.wordpress.com/2009/06/19/2009-macbook-pro-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fcb586819079933bfd8f867eaf53674e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Mike Reich</media:title>
		</media:content>

		<media:content url="http://cookingandcoding.files.wordpress.com/2009/06/photo.jpg?w=112" medium="image">
			<media:title type="html">macbook pro</media:title>
		</media:content>

		<media:content url="http://cookingandcoding.files.wordpress.com/2009/06/screenshot-w-terminals.jpg?w=300" medium="image">
			<media:title type="html">Screenshot w terminals</media:title>
		</media:content>
	</item>
	</channel>
</rss>