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

<channel>
	<title>Matt Colyer</title>
	<atom:link href="http://matt.colyer.name/feed/" rel="self" type="application/rss+xml" />
	<link>http://matt.colyer.name</link>
	<description></description>
	<lastBuildDate>Sun, 18 Jul 2010 16:15:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>WebSockets &amp; Stomp, the Real Realtime Web</title>
		<link>http://matt.colyer.name/2010/07/18/websockets-stomp-the-real-realtime-web/</link>
		<comments>http://matt.colyer.name/2010/07/18/websockets-stomp-the-real-realtime-web/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 16:15:52 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://matt.colyer.name/?p=401</guid>
		<description><![CDATA[So with HTML5 advancing and browsers starting to ship with WebSockets (Chrome 4+, Opera 10.60, Safari 5 and soon Firefox 4) it&#8217;s time to start thinking about how to leverage this technology. One of the great things about WebSockets is that they work very similarly to standard OS sockets, the main difference is that they [...]]]></description>
			<content:encoded><![CDATA[<p>So with HTML5 advancing and browsers starting to ship with WebSockets (Chrome 4+, Opera 10.60, Safari 5 and soon Firefox 4) it&#8217;s time to start thinking about how to leverage this technology. One of the great things about WebSockets is that they work very similarly to standard OS sockets, the main difference is that they were designed to carry text and not binary data. However many commonly used protocols are text: HTTP, SMTP and Stomp come to mind.</p>
<p>Now if you haven&#8217;t heard of Stomp go <a href="http://stomp.codehaus.org/">check it out</a>. It&#8217;s basically a lightweight publish/subscribe server. It&#8217;s not based on SOAP nor XML and it doesn&#8217;t include the kitchen sink. It&#8217;s simple and it works. If you want something more enterprisy go look at AMQP.</p>
<p>So Stomp turns out to be a really useful way to send messages back and forth between groups of clients. You can define end points however you wish (think queues that are the URL&#8217;s path). So how would one go about adding this message passing to their web application?</p>
<ol>
<li>First get a stomp server, I recommend <a href="http://stompserver.rubyforge.org/">stompserver</a> because it&#8217;s ruby. It doesn&#8217;t support the complete Stomp protocol but more than enough to be useful.
<pre>gem install stompserver
stompserver</pre>
</li>
<li>Then you&#8217;ll need a server to proxy the web socket connections as web sockets require a special handshake. Luckily I have thrown <a href="http://github.com/mcolyer/em-websocket-proxy">em-websocket-proxy</a> together for you. In this case we are going to use it to proxy Stomp but it will equally as work for HTTP or SMTP servers.
<pre>gem install em-websocket-proxy
em-websocket-proxy -p 8080 -r localhost -q 61613</pre>
</li>
<li>Checkout the example code from this <a href="http://gist.github.com/469609">gist</a> (which includes a <a href="http://github.com/jmesnil/stomp-websocket">javascript stomp client</a>)
<pre>git clone git://gist.github.com/469609.git stomp-example</pre>
<p>Or (if you don&#8217;t want to use git)</p>
<pre>wget https://gist.github.com/gists/469609/download | tar -xz</pre>
</li>
<li>Visit the page stomp-example/index.html in a browser which supports WebSockets and then enter some text in the text box and press &#8220;Send through Stomp&#8221;.</li>
</ol>
<p>Viola! You have a successfully used a javascript client to a Stomp server.</p>
]]></content:encoded>
			<wfw:commentRss>http://matt.colyer.name/2010/07/18/websockets-stomp-the-real-realtime-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Comcast IPV6</title>
		<link>http://matt.colyer.name/2010/04/20/comcast-ipv6/</link>
		<comments>http://matt.colyer.name/2010/04/20/comcast-ipv6/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 01:02:14 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[future]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[net]]></category>

		<guid isPermaLink="false">http://matt.colyer.name/?p=398</guid>
		<description><![CDATA[I got my invite to Comcast&#8217;s IPV6 trial today. I&#8217;ll be interested to see how they plan on handling dual v6/v4 stacks and whether they will forgo NATing completely or not. I have to admit I am impressed that for a company that started out as a stodgy cable company, Comcast seems to be leading [...]]]></description>
			<content:encoded><![CDATA[<p>I got my invite to <a href="http://comcast6.net/">Comcast&#8217;s IPV6 trial</a> today. I&#8217;ll be interested to see how they plan on handling dual v6/v4 stacks and whether they will forgo NATing completely or not.</p>
<p>I have to admit I am impressed that for a company that started out as a stodgy cable company, Comcast seems to be leading the future of the net.</p>
<p>I&#8217;m also a little sad that my WRT54G <a href="http://www.polarcloud.com/firmware">Tomato</a> can&#8217;t join in on the fun, as it doesn&#8217;t speak IPV6.</p>
]]></content:encoded>
			<wfw:commentRss>http://matt.colyer.name/2010/04/20/comcast-ipv6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>libimobiledevice 1.0 &amp; Transition</title>
		<link>http://matt.colyer.name/2010/03/26/libimobiledevice-1-0-transition/</link>
		<comments>http://matt.colyer.name/2010/03/26/libimobiledevice-1-0-transition/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 16:29:15 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[libimobiledevice]]></category>

		<guid isPermaLink="false">http://matt.colyer.name/?p=394</guid>
		<description><![CDATA[I started libiphone (which is now called imobiledevice) back in 2007 because I wanted to sync the contacts on my iPhone with my laptop. Since that time a tremendous community has formed around solving this problem as well as app installation and music syncing. As a result I was able to push out version 1.0 [...]]]></description>
			<content:encoded><![CDATA[<p>I started libiphone (which is now called imobiledevice) back in 2007 because I wanted to sync the contacts on my iPhone with my laptop. Since that time a tremendous community has formed around solving this problem as well as app installation and music syncing. As a result I was able to push out version <a href="http://github.com/mcolyer/libiphone/tree/1.0.0">1.0</a> last week.</p>
<p>However it&#8217;s time that I move onto other things. Which is why I have handed maintainership over to <a href="http://sukimashita.com/">Martin</a>, who has been doing a wonderful job in the past few months preparing for 1.0. I wish the project and those involved the best of luck.</p>
]]></content:encoded>
			<wfw:commentRss>http://matt.colyer.name/2010/03/26/libimobiledevice-1-0-transition/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone Icecast from Rhythmbox</title>
		<link>http://matt.colyer.name/2010/02/21/iphone-icecast-from-rhythmbox/</link>
		<comments>http://matt.colyer.name/2010/02/21/iphone-icecast-from-rhythmbox/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 23:24:30 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[icecast]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[ipod]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[streaming]]></category>

		<guid isPermaLink="false">http://matt.colyer.name/?p=382</guid>
		<description><![CDATA[So I wanted to stream music from my laptop to a Bose iPod speaker set over wifi. It seemed like this should be simple right? Not really. Apparently Icecast2 doesn&#8217;t support streaming the way that the iPhone OS expects it to. Luckily some kind souls wrote a patch to fake the iPhone/iPod touch into working. [...]]]></description>
			<content:encoded><![CDATA[<p>So I wanted to stream music from my laptop to a Bose iPod speaker set over wifi. It seemed like this should be simple right? Not really.</p>
<p>Apparently Icecast2 doesn&#8217;t support streaming the way that the iPhone OS expects it to. Luckily some kind souls wrote a <a href="http://lists.xiph.org/pipermail/icecast-dev/2008-November/001798.html">patch</a> to fake the iPhone/iPod touch into working.</p>
<p>Here are the instructions to get you going on Ubuntu Karmic:</p>
<ol>
<li><em>sudo apt-get install rhymthbox icecast2 build-essential dpkg-dev<br />
</em></li>
<li>Install the <a href="http://www.damonkohler.com/2009/01/rhythmbox-shout2send-plugin.html">shout2send plugin</a> for rhythmbox</li>
<li>Change the plugin to send mp3&#8242;s instead of oggs by replacing<br />
<em>&#8220;_GST_BIN = (&#8216;audioresample ! audioconvert ! vorbisenc ! oggmux ! shout2send &#8216;&#8221; </em>with<br />
<em>&#8220;_GST_BIN = (&#8216;audioresample ! audioconvert ! lame name=enc ! shout2send &#8216;&#8221;</em> in ~/.gnome2/plugins/shout2send/__init__.py</li>
<li><em>cd /usr/src</em></li>
<li><em>sudo apt-get source icecast2</em></li>
<li><em>sudo apt-get build-dep icecast2</em></li>
<li><em>cd /usr/src/icecast2-2.3.2/debian/patches</em></li>
<li><em>sudo wget http://matt.colyer.name/wp-content/uploads/2010/02/1002_iphone_streaming.txt -O 1002_iphone_streaming.patch</em></li>
<li>Add &#8220;1002_iphone_streaming.patch&#8221; as a separate  line<em> </em>in the files &#8220;series&#8221;</li>
<li><em>cd ../..</em></li>
<li><em>sudo dpkg-buildpackage</em></li>
<li><em>cd ..</em></li>
<li><em>sudo dpkg -i icecast2_2.3.2-2build1_*.deb</em></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://matt.colyer.name/2010/02/21/iphone-icecast-from-rhythmbox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Selenium IE7/8 in Vista/Windows 7</title>
		<link>http://matt.colyer.name/2009/11/30/selenium-ie78-in-vistawindows-7/</link>
		<comments>http://matt.colyer.name/2009/11/30/selenium-ie78-in-vistawindows-7/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 05:10:23 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[Free Software]]></category>

		<guid isPermaLink="false">http://matt.colyer.name/?p=379</guid>
		<description><![CDATA[So after spending too many hours trying to get selenium to work in Windows Vista/Windows 7, it turns out that you must run the selenium server from an administrative command shell. The easiest way to do this is to search for &#8220;cmd&#8221; in the start menu and then right click on the &#8220;Command Prompt&#8221; item [...]]]></description>
			<content:encoded><![CDATA[<p>So after spending too many hours trying to get selenium to work in Windows Vista/Windows 7, it turns out that you must run the selenium server from an administrative command shell.</p>
<p>The easiest way to do this is to search for &#8220;cmd&#8221; in the start menu and then right click on the &#8220;Command Prompt&#8221; item that comes up and select &#8220;Run as Administrator&#8221;. After you have the shell open cd to the correct directory and run &#8220;java -jar selenium-server.jar&#8221;. You can then run your selenium tests from a normally privileged shell.</p>
]]></content:encoded>
			<wfw:commentRss>http://matt.colyer.name/2009/11/30/selenium-ie78-in-vistawindows-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
