<?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>We Are Team Rubber &#187; Developer</title>
	<atom:link href="http://www.teamrubber.com/blog/tag/developer/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.teamrubber.com</link>
	<description>Team Rubber talks on the Internet in a blog</description>
	<lastBuildDate>Mon, 06 Feb 2012 15:12:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>Linux as an alarm clock</title>
		<link>http://www.teamrubber.com/blog/linux-as-an-alarm-clock/</link>
		<comments>http://www.teamrubber.com/blog/linux-as-an-alarm-clock/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 14:22:00 +0000</pubDate>
		<dc:creator>RichardB</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.teamrubber.com/?p=1342</guid>
		<description><![CDATA[I've yet to find a cheap and reliable alarm clock loud enough to rouse me from bed in the morning. Fortunately, I already have a laptop with workable (if small and tinny) speakers. All that's needed to turn it into a loud alarm clock is a little software. Here's an easy way to do it in Linux.]]></description>
			<content:encoded><![CDATA[
<p>I&#8217;ve yet to find a cheap and reliable alarm clock loud enough to rouse me from bed in the morning. Fortunately, I already have a laptop with workable (if small and tinny) speakers. All that&#8217;s needed to turn it into a loud alarm clock is a little software. Here&#8217;s an easy way to do it in Linux:</p>
<p><span id="more-1342"></span></p>
<p>I want to be jolted from sleep at 8:00AM every day except Saturdays and Sundays. Good old fashioned Unix cron is a perfect fit for this requirement. You can edit your crontab quite easily by running:<br />
<code>
<pre>
env VISUAL=gedit crontab -e
</pre>
<p></code><br />
Add the following lines to make cron run the program ~/bin/wakeup every weekday at 8:00AM:<br />
<code>
<pre>
# minute hour day month dayofweek    command
  0      8    *   *     mon-fri      /bin/sh ~/bin/wakeup
</pre>
<p></code></p>
<p>Cron isn&#8217;t always enabled by default in some distributions. See your distribution&#8217;s documentation for how to turn cron on. For Ubuntu users, see <a href="https://help.ubuntu.com/community/CronHowto">Ubuntu&#8217;s Cron Howto</a>.</p>
<p>You can test that cron works by adding<br />
<code>
<pre>
 * * * * * mkdir -p ~/crontest
</pre>
<p></code>to your crontab, then waiting for sixty seconds and checking that a directory called ~/crontest has been created. If it has, then remove the test line from your crontab and rejoice that cron works. <img src='http://www.teamrubber.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Linux as an alarm clock" class='wp-smiley' title="Linux as an alarm clock" /> </p>
<p>I put my wakeup script in ~/bin. You can create the file using the commands:<br />
<code>
<pre>
mkdir -p ~/bin      # make sure the directory ~/bin exists
gedit ~/bin/wakeup  # edit the wakeup script
</pre>
<p></code></p>
<p>The contents of my wakeup script are pretty simple. The first thing I do is turn my speakers on at full blast using ALSA&#8217;s <a href="http://alsa.opensrc.org/index.php/Amixer">non-interactive mixer client</a>. (In case you&#8217;re wondering, there is a friendlier way to set ALSA&#8217;s volume from a terminal &#8211; just use <a href="http://alsa.opensrc.org/index.php/Alsamixer">alsamixer</a>.)</p>
<p>Change the values from 100 to something more reasonable if this is too loud.<br />
<code>
<pre>
# Note that "Speaker" might be called "Front" instead on some machines.
# If you get the error "amixer: Unable to find simple control 'Speaker',0",
# then try using the other name.
amixer sset Speaker 100 unmute
amixer sset Master 100 unmute
</pre>
<p></code></p>
<p>Next, I use <a href="http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki">mpd</a> to start blasting music. I find mpd exceedingly handy because it runs unobtrusively in the background, and has a variety of frontends &#8211; there are about eight graphical clients for mpd at my last count, one that runs nicely in Terminal using ncurses, and one plain, boring, easily-scriptable command-line client called &#8220;mpc&#8221;.</p>
<p>Setting up mpd and showing it where your music is and everything is a little more involved than I actually want to go into here right now. Fortunately, there is a good <a href="https://help.ubuntu.com/community/MPD">guide to setting up mpd in Ubuntu</a> in Ubuntu&#8217;s community documentation.</p>
<p>Having mpc throw away the current playlist and replace it with a new one is quite easy.<br />
<code>
<pre>
mpc clear
mpc load awaken
mpc random on
mpc repeat on
mpc play
</pre>
<p></code></p>
<p>This loads and starts the playlist called &#8220;awaken&#8221; &#8211; which on my machine I&#8217;ve filled (in advance) with nice, loud rock music, the odd bit of metal, and at least one song by Aqua.</p>
<p>I&#8217;ve deliberately left shutting it up afterwards out of my wake-up script; I&#8217;m much more likely to make it out of bed if I need to actually walk across the room, manually fire up Terminal, and type<br />
<code>
<pre>
mpc stop
</pre>
<p></code>in order to kill the Aqua.</p>
<p>If you do really want to make the wake-up script shut up after ten minutes, then add to the bottom of the wakeup script:<br />
<code>
<pre>
sleep 600  # leave mpd playing for ten minutes
mpc stop   # and then go quiet
</pre>
<p></code></p>
<p>Before you kick off your shoes and hit the hay, it&#8217;d be a wise idea to make sure that the wakeup script will actually work when cron tries to run it. You can run it manually with the command:<br />
<code>
<pre>
/bin/sh ~/bin/wakeup
</pre>
<p></code></p>
<p>If that works then you&#8217;re done. Sweet dreams! <img src='http://www.teamrubber.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile Linux as an alarm clock" class='wp-smiley' title="Linux as an alarm clock" /> </p>
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-bottom: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.teamrubber.com%252Fblog%252Flinux-as-an-alarm-clock%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Linux%20as%20an%20alarm%20clock%22%20%7D);"></div>

]]></content:encoded>
			<wfw:commentRss>http://www.teamrubber.com/blog/linux-as-an-alarm-clock/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What is &#8220;Viral Marketing&#8221;? (and language-&gt;semantic effects)</title>
		<link>http://www.teamrubber.com/blog/what-is-viral-marketing-and-language-semantic-effects/</link>
		<comments>http://www.teamrubber.com/blog/what-is-viral-marketing-and-language-semantic-effects/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 16:21:10 +0000</pubDate>
		<dc:creator>Tim Wintle</dc:creator>
				<category><![CDATA[Advertising]]></category>
		<category><![CDATA[How We Work]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[ad network]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[linguistics]]></category>
		<category><![CDATA[semantics]]></category>
		<category><![CDATA[syntax]]></category>
		<category><![CDATA[viral]]></category>

		<guid isPermaLink="false">http://www.teamrubber.com/blog/?p=395</guid>
		<description><![CDATA[Reading through the RubberRepublic blog, I thought I&#8217;d point the whole of team rubber at the article on the semantics of the word &#8220;viral&#8221; when applied to marketing. This is a very interesting topic to me. With my leniency towards very specific definitions, I&#8217;m going to start right from the start, and explain that I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[
<p>Reading through the <a href="http://www.rubberrepublic.com/blog/">RubberRepublic blog</a>, I thought I&#8217;d point the whole of team rubber at the article on the <a href="http://www.rubberrepublic.com/blog/225">semantics of the word &#8220;viral&#8221;</a> when applied to marketing.</p>
<p>This is a very interesting topic to me. With my leniency towards very specific definitions, I&#8217;m going to start right from the start, and explain that I&#8217;m certainly not a believer in Wittgenstein&#8217;s <a href="http://en.wikipedia.org/wiki/Language-game">views on natural language</a>.</p>
<p>To me, it&#8217;s not unreasonable to define a strict subset of natural language with a single, well defined, 1-1 semantic value function for discussing technical matters (and I believe the definition of &#8220;viral&#8221; should fit into such a subset), in the same way that we define mathematical terms in first order logic (I&#8217;m not going to get into <a href="http://en.wikipedia.org/wiki/G%C3%B6del%27s_incompleteness_theorems">provability</a> here).</p>
<p>i.e. I think that it&#8217;s possible, and reasonable, to define the meaning of individual words which are indisputable and fixed when talking in technical language.</p>
<p>For this reason, it really drives me up the wall when two people talk about something, use the same word, but are actually discussing different things.</p>
<p>An example is how we have recently changed the naming for our &#8220;<a href="http://viraladnetwork.net/publishers/">Syndicated Ad Units</a>&#8221; (Previously &#8220;Content Units&#8221;).</p>
<p>When we define terms for such a large system, we are effectively defining our own language (or at least the non-common alphabet &#8211; technically the set from which words are taken rather than set from which letters are taken). By changing the naming for the system, we have effectively created a second language.</p>
<p>These languages are technically as distinguishable as programming languages are &#8211; and switching between requires the same work as switching between programming languages.</p>
<p>Obviously we don&#8217;t want too much redundancy in our alphabet, or we end up</p>
<ul>
<li>Having to remember a much larger set of nouns</li>
<li>diverging strongly from a 1-1 semantic value function, which is indistinguishable from the effect of losing orthogonality of the semantic values of individual nouns</li>
</ul>
<p>To explain the second point, if we mark the semantic value function of a language &#8220;I&#8221; (for &#8220;interpretation&#8221;), and we have an alphabet that consists only of the words &#8220;abc&#8221;, &#8220;def&#8221; and &#8220;ghi&#8221;, then if we have orthogonality in semantic values of the nouns, we would have that changing the meaning of &#8220;abc&#8221; &#8211; marked I(&#8220;abc&#8221;) (though adding functionality to the thing we call &#8220;abc&#8221;) changes I(&#8220;abc def&#8221;) in the same way as I(&#8220;abc ghi&#8221;) changes. It also implies that I(&#8220;zyx&#8230;wv&#8221;) does not change  unless &#8220;abc&#8221; is part of &#8220;zyx&#8230;wv&#8221;.</p>
<p>We did a very interesting thing while we changed the language used for syndication &#8211; we changed which objects have their own names. This changes the set of concepts that can be described with a single word &#8211; {I(a) for a in the alphabet}, rather than simply changing the strings used for the objects in the alphabet.</p>
<p>This fundamentally changes the language, and changes the effort required when semantic value functions change (as they always will on a long term software project).</p>
<p>For example, let&#8217;s take some of the objects that have changed names (you can see what the semantic values of these names are <a href="http://www.viraladnetwork.net/publishers/ad-units">here</a>):</p>
<table style="height: 111px;" border="0" width="569">
<tbody>
<tr>
<th>Old Name</th>
<th>New Name</th>
</tr>
<tr>
<td>Med. Rect. Gadget Content Unit</td>
<td>Med. Rect. Fun Unit (Gadget)*</td>
</tr>
<tr>
<td>Med. Rect. Text Link Content Unit</td>
<td>Med. Rect. Text Link Fun Links</td>
</tr>
<tr>
<td>Med. Rect. Text/Image Link Content Unit</td>
<td>Med. Rect. Text and Image Link Fun Links</td>
</tr>
<tr>
<td>Fun Link of the day Text Link Content Unit</td>
<td>Fun Link of the day Fun Links</td>
</tr>
</tbody>
</table>
<p>* &#8220;(gadget)&#8221; is added internally for this type of Fun Unit.</p>
<p>By enforcing these changes, several changes to the alphabet are implied &#8211; firstly the fact that we do not use &#8220;gadget&#8221; externally creates two alphabets, and hence two new languages &#8211; but the aim is to keep one language a subset of the other one.</p>
<p><strong>Previous alphabet:</strong></p>
<p>&#8220;Med. Rect.&#8221;, &#8220;Gadget&#8221;, &#8220;Content Unit&#8221;, &#8220;Text Link&#8221;, &#8220;Text/Image Link&#8221;, &#8220;Fun Link of the Day&#8221;</p>
<p><strong>New alphabet (internal):</strong></p>
<p>&#8220;Med. Rect.&#8221;, &#8220;Fun unit&#8221;, &#8220;Gadget&#8221;, &#8220;Text Link&#8221;, &#8220;Fun Links&#8221;, &#8220;Text and Image Link&#8221;, &#8220;Fun Link of the Day&#8221;</p>
<p><strong>New alphabet (external):</strong></p>
<p>&#8220;Med. Rect.&#8221;, &#8220;Fun unit&#8221;, &#8220;Text Link&#8221;, &#8220;Fun Links&#8221;, &#8220;Text and Image Link&#8221;, &#8220;Fun Link of the Day&#8221;</p>
<p>Now let&#8217;s look at how orthogonal the meanings of these are&#8230;</p>
<p>if we suddenly decided to break years of internet tradition and say that a &#8220;Med. Rect&#8221;  was actually 1024 pixels wide and one pixel high &#8211; that would effect all names with &#8220;med. rect.&#8221; in them equally. In fact, the meaning has not changed at all between the two languages &#8211; it defines the size that the syndicated placement will take up on your website.</p>
<p>similarly, the meaning of &#8220;Text Link&#8221; has not changed (and although we changed the string &#8220;Text/Image Link to &#8220;Text and Image Link&#8221;, the actual interpretation of these strings has not changed).</p>
<p>If you are looking closely though, you will have noticed that &#8220;Fun Link of the day Text Link Content Unit&#8221; has changed to &#8220;Fun Link of the day Fun Links&#8221; &#8211; this is an important change, since they have the same interpretation, the meaning of &#8220;Text Link&#8221; has not changed, and yet &#8220;Text Link&#8221; is not in the new name. This means that this semantic value must be associated with the phrase &#8220;Fun Link of the Day&#8221; &#8211; and so it is. But &#8220;Fun Link of the day&#8221; is also associated with a size (this is more obvious in the origional naming conventions) This is a many-1 mapping between the old language and the new one, and as such it changes the implied syntax quite dramatically.</p>
<p>Now for the most interesting strings &#8211; &#8220;Content Unit&#8221; has been changed to either &#8220;Fun Unit&#8221;, or &#8220;Fun Links&#8221;. This is very clearly a 1-many mapping during the changeover, which again changes the syntax of the language dramatically.</p>
<p>For example, let&#8217;s imagine (and this is purely imaginary), we decided to add a feature that (describing the semantic change in the old language) allowed you to &#8220;place your content unit in an RSS feed&#8221;.</p>
<p>In the old language, we have just updated the semantic value of &#8220;content unit&#8221;, however in the new language we have updated the semantic value of &#8220;Fun Unit&#8221; and &#8220;Fun Links&#8221;. Thus they are non-orthogonal (in fact, in terms of this change they would be parallel!).</p>
<p>For a user (of the language) who understands the new semantic value of &#8220;Fun Unit&#8221;, they cannot know that the semantic value of &#8220;Fun Links&#8221; has changed unless they have some <em>prior knowledge about the language</em>.</p>
<p>But how do we describe this intra-linguistical knowledge in the language itself? We cannot say &#8220;All content units have &#8230;&#8221;, because &#8220;content unit&#8221; is not in the new language. Rather, we would have to state that &#8220;Fun Units and Fun Links have &#8230;&#8221; &#8211; but this requires updated semantic values to two strings from the alphabet. This might not seem like much, but by talking in a specific language we actually train parts of our brains to translate from this language into semantics (this was explained by <em>Derek Smith</em> at the Bristol Knowledge Unconference <a href="http://knowledgeunconference.eventwax.com/bristol-knowledge-unconference">much better</a> than I could explain it). This is an actual change to our brain that we are requiring &#8211; and we are requiring two changes in the new language.</p>
<p>To avoid this, we have added another string to the alphabet of our new language &#8211; &#8220;Ad Unit&#8221;. An &#8220;Ad Unit&#8221; can be a &#8220;Fun Unit&#8221; or &#8220;Fun Links&#8221; &#8211; but not both &#8211; so the interpretation of &#8220;Ad Unit&#8221; is the common interpretation between a&#8221;Fun Unit&#8221; and &#8220;Fun Links&#8221;.</p>
<p>But then if the semantics have remained the same between the two languages, the interpretation of &#8220;Ad Unit&#8221; must be the same interpretation as &#8220;Content Unit&#8221; was before&#8230;</p>
<p>That would mean that &#8220;Fun Unit&#8221; and &#8220;Fun Links&#8221; (both new words) are completely irrelevant words &#8211; since they don&#8217;t add any semantic information to the language!</p>
<p>Well, to explain this one we have to go back to the reason that we actually replaced the language in the first place. The first language  was defined by myself and Andy as we were thinking over the technical requirements, for use in implementing the systems. The second language came about after our sales and network teams mentioned that they thought users would get confused over the meanings of phrases.</p>
<p>We took this as a sign that we actually had two languages in use already &#8211; since there was obviously some concept that was essential to how this second group of people viewed the system that was not a concept to the technical team.</p>
<p>After some very long discussions, this concept had still not appeared to me, but the non-technical users described something that resembled the new language as describing their concepts better. This is a very interesting point to have come to in development terms &#8211; since it appeared to be a sign of what the users want to use the system to which is far better than anything that could be got out of a simple user-interview.</p>
<p>After hammering this out for several days, we finalised the new language. The above examples are only a small sub-section, but they are the section that cause the largest change in the allowed syntax of the language.</p>
<p><strong>What was the difference?</strong></p>
<p>Firstly let me quote the definition that the non-technical users decided on for &#8220;Fun Units&#8221; and &#8220;Fun Links&#8221; (I would have been far more strict over the definition, but if you&#8217;ve read this far then there&#8217;s a good chance that you would have as well; we may re-visit this definition):</p>
<ul>
<li>&#8220;A <strong>Fun Link</strong> is an Ad Unit into which the Viral Ad Network can place a link to site hosting an asset&#8221;</li>
<li>&#8220;A <strong>Fun Unit</strong> is an Ad Unit into which the Viral Ad Network can insert actual content&#8221;</li>
</ul>
<p>And that seems to be the difference &#8211; to me as a developer, there is a difference between the A,IMG,OBJECT,SCRIPT tags etc, &#8211; but that difference is contained in the selection between &#8220;Text Link&#8221;, &#8220;Text/Image Link&#8221;, &#8220;Video Player&#8221; (not mentioned previously) and &#8220;Gadget&#8221; (&#8220;Text&#8221; can only contain A tags, &#8220;Text/Image&#8221; can contain A and IMG tags, &#8220;Video Player&#8221; can only contain an actual video file, and &#8220;Gadget&#8221; can contain whatever you want).</p>
<p>For a non-technical user, really focusing on &#8220;this could be content&#8221; is more important &#8211; even though you could say that that information is already contained in the language, it&#8217;s so important that they want to say it twice.</p>
<p>Hence we&#8217;ve got the &#8220;old&#8221; and the &#8220;new&#8221; languages describing these things &#8211; the old language is cognitively simpler to learn, contains less vocabulary to learn, requires less mental work when new features are implemented, contains a single induced syntactic structure (at least over the vocabulary mentioned here) due to the orthogonality of semantic values, and does not require intra-linguistical &#8220;meta-knowledge&#8221; to talk about subsets of the language. It also has very low redundancy due to the</p>
<p>The new language has enforced redundancy, non-static syntactical structure, a larger vocabulary, non-orthogonal nouns, and thus has no strict subsets (when talking about Ad Units) that are languages capable of describing semantic updates in themselves. On the other hand, it focuses the mind on what the non-technical users found most important by repeating itself.</p>
<p>As you may have guessed, developers will continue to use the &#8220;old&#8221; language, and not just because switching over to the new language would require thousands of lines of code to be re-worked.</p>
<p>Tim Wintle</p>
<p>(oh, BTW, My definition of &#8220;viral&#8221; was brought <a href="http://www.teamrubber.com/blog/going-viral-or-not/">here</a>)</p>
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-bottom: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.teamrubber.com%252Fblog%252Fwhat-is-viral-marketing-and-language-semantic-effects%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22What%20is%20%5C%22Viral%20Marketing%5C%22%3F%20%28and%20language-%3Esemantic%20effects%29%22%20%7D);"></div>

]]></content:encoded>
			<wfw:commentRss>http://www.teamrubber.com/blog/what-is-viral-marketing-and-language-semantic-effects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Removing the new YouTube Search Box</title>
		<link>http://www.teamrubber.com/blog/removing-the-new-youtube-search-box/</link>
		<comments>http://www.teamrubber.com/blog/removing-the-new-youtube-search-box/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 12:26:46 +0000</pubDate>
		<dc:creator>Tim Wintle</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Film]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[videos]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.teamrubber.com/blog/?p=353</guid>
		<description><![CDATA[YouTube added a new search box to the youtube embedded player today. Update: YouTube appear to have listened to users&#8217; comments, and made a second update in a day &#8211; the search box now only displays when you hover over the video. Here&#8217;s what it looks like: Understandably, many people might want to remove this [...]]]></description>
			<content:encoded><![CDATA[
<div style="float:left;">YouTube added a new search box to the youtube embedded player today.</div>
<p><strong>Update: YouTube appear to have listened to users&#8217; comments, and made a second update in a day &#8211; the search box now only displays when you hover over the video.</strong></p>
<p>Here&#8217;s what it looks like:</p>
<p><a href="http://www.teamrubber.com/blog/removing-the-new-youtube-search-box/"><em>Click here to view the embedded video.</em></a></p>
<p>Understandably, many people might want to remove this &#8220;feature&#8221; &#8211; so here&#8217;s how:<br />
<strong>(The YouTube api has been updated to mention this, so it appears to be a supported method)</strong></p>
<ol>
<li> In your embed code, find the url for the flash player (it is in there twice if you are using the standard YouTube embed code)</li>
<li> Add the parameter showsearch=0 (by adding &#8220;&amp;showsearch=0&#8243; to the url)</li>
<li>There is no step three &#8211; the video shouldn&#8217;t be showing the search box any more.</li>
</ol>
<p>The video should now look like this:</p>
<p><a href="http://www.teamrubber.com/blog/removing-the-new-youtube-search-box/"><em>Click here to view the embedded video.</em></a></p>
<p>Code:</p>
<blockquote><p>&lt;object classid=&#8221;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&#8243; width=&#8221;425&#8243; height=&#8221;344&#8243; codebase=&#8221;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&#8243;&gt;&lt;param name=&#8221;allowFullScreen&#8221; value=&#8221;true&#8221; /&gt;&lt;param name=&#8221;allowscriptaccess&#8221; value=&#8221;always&#8221; /&gt;&lt;param name=&#8221;src&#8221; value=&#8221;http://www.youtube.com/v/4Cq4O_z5Blo&amp;hl=en&amp;fs=1&amp;showsearch=0&#8243; /&gt;&lt;embed type=&#8221;application/x-shockwave-flash&#8221; width=&#8221;425&#8243; height=&#8221;344&#8243; src=&#8221;http://www.youtube.com/v/4Cq4O_z5Blo&amp;hl=en&amp;fs=1&amp;showsearch=0&#8243; allowscriptaccess=&#8221;always&#8221; allowfullscreen=&#8221;true&#8221;&gt;&lt;/embed&gt;&lt;/object&gt;</p></blockquote>
<p>I&#8217;m sure some people will find that useful when they look at their blogs today &#8230;</p>
<p>Tim W</p>
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-bottom: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.teamrubber.com%252Fblog%252Fremoving-the-new-youtube-search-box%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Removing%20the%20new%20YouTube%20Search%20Box%22%20%7D);"></div>

]]></content:encoded>
			<wfw:commentRss>http://www.teamrubber.com/blog/removing-the-new-youtube-search-box/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Fun with post-it notes and Use Cases</title>
		<link>http://www.teamrubber.com/blog/fun-with-post-it-notes-and-use-cases/</link>
		<comments>http://www.teamrubber.com/blog/fun-with-post-it-notes-and-use-cases/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 16:59:54 +0000</pubDate>
		<dc:creator>Tim Wintle</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[How We Work]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[postit]]></category>
		<category><![CDATA[use cases]]></category>

		<guid isPermaLink="false">http://www.teamrubber.com/blog/?p=191</guid>
		<description><![CDATA[After watching a great Google Techtalk on using generative research for systems architecture (Digging Beyond User Preferences by Indi Young), I was inspired to spend some of my Sunday afternoon playing with Post-it notes while thinking over some work I&#8217;m doing on our ad network and viral seeding applications. I&#8217;d like to point out that [...]]]></description>
			<content:encoded><![CDATA[
<p>After watching a great Google Techtalk on using generative research for systems architecture (<a href="http://www.youtube.com/watch?v=M4AsxNg9nNU">Digging Beyond User Preferences</a> by <span>Indi Young</span>), I was inspired to spend some of my Sunday afternoon playing with Post-it notes while thinking over some work I&#8217;m doing on our <a href="http://www.viraladnetwork.net">ad network</a> and <a href="http://www.viraladnetwork.net/advertisers/">viral seeding</a> applications.</p>
<p>I&#8217;d like to point out that I&#8217;m not following her process exactly in the images below&#8230;</p>
<p><strong>Here&#8217;s what you&#8217;ll need:</strong></p>
<p><img class="aligncenter size-medium wp-image-192" title="postit notes" src="http://www.teamrubber.com/blog/wp-content/uploads/2008/08/postits.jpg" alt="postits Fun with post it notes and Use Cases" width="300" height="99" /></p>
<p style="text-align: center;">Three Colours of Post-It notes</p>
<p><a href="http://www.teamrubber.com/blog/wp-content/uploads/2008/08/postittower1.jpg"><img class="aligncenter size-medium wp-image-193" title="postittower1" src="http://www.teamrubber.com/blog/wp-content/uploads/2008/08/postittower1.jpg" alt="postittower1 Fun with post it notes and Use Cases" width="300" height="114" /></a></p>
<p style="text-align: center;">A very large piece of paper on the wall, or a large whiteboard</p>
<p><strong>Stage 1:</strong></p>
<p>Come up with a full list of use cases for your application (you do know you&#8217;re user&#8217;s use cases don&#8217;t you?). Pick a colour of sticky note and write them all down.</p>
<p><strong>Stage 2:</strong></p>
<p>Organise all of the the use cases into similar conceptual ideas on upper half of the piece of paper, so if two people are looking for statistics on a particular item (but for different reasons) then those two use cases would be in the same column. Move the columns around so that they each type of user&#8217;s use cases are close together.</p>
<p>When you&#8217;re finished this stage, you should have a piece of paper that looks something like this:</p>
<p><img class="aligncenter size-medium wp-image-194" title="postittower2" src="http://www.teamrubber.com/blog/wp-content/uploads/2008/08/postittower2.jpg" alt="postittower2 Fun with post it notes and Use Cases" width="300" height="129" /></p>
<p><strong>Stage 3:</strong></p>
<p>Now choose another colour of sticky note and write down the features that your application currently contains. Stick these below the &#8220;tower&#8221; of use cases which they specifically fix.</p>
<p><a href="http://www.teamrubber.com/blog/wp-content/uploads/2008/08/postittower3.jpg"><img class="aligncenter size-medium wp-image-195" title="postittower3" src="http://www.teamrubber.com/blog/wp-content/uploads/2008/08/postittower3.jpg" alt="postittower3 Fun with post it notes and Use Cases" width="300" height="125" /></a></p>
<p>Finally, time to do some brain storming over new features if you are in the planning stage, and write theses on the final colour notes (or if you&#8217;re in the middle of implementing a feature then put this on the final colour sticky note). Add these in the same way as before.</p>
<p><a href="http://www.teamrubber.com/blog/wp-content/uploads/2008/08/postittower4.jpg"><img class="aligncenter size-medium wp-image-196" title="postittower4" src="http://www.teamrubber.com/blog/wp-content/uploads/2008/08/postittower4.jpg" alt="postittower4 Fun with post it notes and Use Cases" width="300" height="132" /></a></p>
<p>The idea of this all is to try to draw your attention to which use cases are being fulfilled by the existing system, and which parts may been more thought in the future.</p>
<p>You can also group the columns by the type of user that has those use cases (not shown on the image above). For example, in the above image we actually have five different groupings of use cases, and I&#8217;m glad to say that the section that appears to not have features to support it (just left of centre), is the group with only one user, Me, so it&#8217;s probably the least important section of the system to get up and running &#8211; I have my own external tools to support them.</p>
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-bottom: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.teamrubber.com%252Fblog%252Ffun-with-post-it-notes-and-use-cases%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Fun%20with%20post-it%20notes%20and%20Use%20Cases%22%20%7D);"></div>

]]></content:encoded>
			<wfw:commentRss>http://www.teamrubber.com/blog/fun-with-post-it-notes-and-use-cases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Just a bunch of buildout changes</title>
		<link>http://www.teamrubber.com/blog/jbob/</link>
		<comments>http://www.teamrubber.com/blog/jbob/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 09:03:46 +0000</pubDate>
		<dc:creator>mattw</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[buildout]]></category>
		<category><![CDATA[jbot]]></category>
		<category><![CDATA[plone]]></category>
		<category><![CDATA[soc]]></category>

		<guid isPermaLink="false">http://www.teamrubber.com/blog/?p=162</guid>
		<description><![CDATA[You may have noticed that version 0.2 of Malthe Borch&#8217;s truly excellent JBOT came out last night.  We use this in some of our themes, and hence has found its way in as a dependency for a good deal of our recent projects. I ran development buildout last night and suddenly saw a lot of [...]]]></description>
			<content:encoded><![CDATA[
<p>You may have noticed that version 0.2 of <span>Malthe Borch&#8217;s truly excellent <a href="http://pypi.python.org/pypi/z3c.jbot">JBOT</a> came out last night.  We use this in some of our themes, and hence has found its way in as a dependency for a good deal of our recent projects.</span></p>
<p>I ran development buildout last night and suddenly saw a lot of zope 3 components being downloaded, which if you&#8217;ve done it before you know is a recipe for disaster.</p>
<p>It seems one of the new features in version 0.2 (aside from the long-anticipated browser layer support) is it now correctly defines its dependencies.  This is a Good Thing™ but it does mean that JBOT now requires you to use <kbd>fake-zope-eggs</kbd> in your buildout.</p>
<p>Your zope2install section now needs to look like this:</p>
<pre>[zope2]
recipe = plone.recipe.zope2install
fake-zope-eggs=true
url = ${plone:zope2-url}</pre>
<p>Not a big change, but it will cause Zope to advertise the packages it provides properly.  Incidentally, you also need to do this to try out <a href="http://plone.org/products/plone-app-batch">plone.app.batch</a>, a summer of code project that&#8217;s looking for comments for its demo.</p>
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-bottom: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.teamrubber.com%252Fblog%252Fjbob%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Just%20a%20bunch%20of%20buildout%20changes%22%20%7D);"></div>

]]></content:encoded>
			<wfw:commentRss>http://www.teamrubber.com/blog/jbob/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tuesday at Europython</title>
		<link>http://www.teamrubber.com/blog/tuesday-at-europython/</link>
		<comments>http://www.teamrubber.com/blog/tuesday-at-europython/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 15:57:19 +0000</pubDate>
		<dc:creator>Tim Wintle</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[europython]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.teamrubber.com/blog/?p=154</guid>
		<description><![CDATA[It&#8217;s been an interesting day today, as I headed through talks on topics ranging from large scale python applications and software ideology to methods of inserting TeX-formatted maths into web pages &#8211; but here are some of the most entertaining events. Harald Armin Massa gave another great talk as an introduction to the 5 minute [...]]]></description>
			<content:encoded><![CDATA[
<p>It&#8217;s been an interesting day today, as I headed through talks on topics ranging from large scale python applications and software ideology to methods of inserting TeX-formatted maths into web pages &#8211; but here are some of the most entertaining events.</p>
<p>Harald Armin Massa gave another great talk as an introduction to the 5 minute lightning talks &#8211; &#8220;Is Python ready for Enterprise&#8221; introduced the new module ncc1701.py (<a href="http://code.google.com/p/ncc1701/">google code page</a>):</p>
<p>(Sorry about the quality of the image)</p>
<p><img src="http://www.teamrubber.com/blog/wp-content/uploads/2008/07/python-enterprise.jpg" alt="python enterprise Tuesday at Europython"  title="Tuesday at Europython" /></p>
<p><strong>Part of this code:</strong></p>
<pre>&gt;&gt;&gt;import ncc1701</pre>
<pre>&gt;&gt;&gt;p = ncc1701.Phaser()</pre>
<pre>&gt;&gt;&gt;p.fire()</pre>
<pre>Traceback (most recent call last)</pre>
<pre>  File "&lt;input", line 1 , in &lt;module&gt;</pre>
<pre>  File "ncc1701.py", line 86, in file</pre>
<pre>    raise PhaserNotLockedOnTarget</pre>
<pre>&gt;&gt;&gt;s =ncc1701.Shields()</pre>
<pre>...</pre>
<p>Despite the initial flaws, in the end we all saw that Python is indeed suited for controlling Enterprise applications.</p>
<p>At the end of the day <a href="http://en.wikipedia.org/wiki/Hans_Rosling">Hans Rosling</a> gave a very interesting keynote on the world&#8217;s economy using some very interesting interactive visualisation software designed for &#8220;people who are always being told what to do &#8211; young children and world leaders&#8221;. Here was one interesting slide:</p>
<p><strong>&#8220;Where is child mortality highest?&#8221; </strong></p>
<p> <img src="http://www.teamrubber.com/blog/wp-content/uploads/2008/07/child_mortality.jpg" alt="child mortality Tuesday at Europython"  title="Tuesday at Europython" /></p>
<p>Yup, child mortality is higher in professors than in students, and almost as high as in Chimpanzees.</p>
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-bottom: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.teamrubber.com%252Fblog%252Ftuesday-at-europython%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Tuesday%20at%20Europython%22%20%7D);"></div>

]]></content:encoded>
			<wfw:commentRss>http://www.teamrubber.com/blog/tuesday-at-europython/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monday in Vilnius (Europython)</title>
		<link>http://www.teamrubber.com/blog/monday-in-vilnius-europython/</link>
		<comments>http://www.teamrubber.com/blog/monday-in-vilnius-europython/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 17:40:09 +0000</pubDate>
		<dc:creator>Tim Wintle</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[europython]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.teamrubber.com/blog/?p=150</guid>
		<description><![CDATA[I am blogging this from the sunny city of Vilnius, Lithuania &#8211; the setting for this year&#8217;s Europython &#8211; straight after Guido&#8217;s keynote talk on Python 3000 (via teleconference, and at the end of the day due to the 10 hour time difference). I&#8217;ll definitely say that I have really enjoyed the first day of [...]]]></description>
			<content:encoded><![CDATA[
<p>I am blogging this from the sunny city of Vilnius, Lithuania &#8211; the setting for this year&#8217;s <a href="http://europython.org/">Europython</a> &#8211; straight after Guido&#8217;s  keynote talk on Python 3000 (via teleconference, and at the end of the day due to the 10 hour time difference).<br />
<img src="http://www.teamrubber.com/blog/wp-content/uploads/2008/07/06072008489.jpg" alt="06072008489 Monday in Vilnius (Europython)"  title="Monday in Vilnius (Europython)" /><br />
I&#8217;ll definitely say that I have really enjoyed the first day of the conference &#8211; especially Harald Armin Massa&#8217;s &#8220;Discouraging the use of Python&#8221; &#8211; a tongue-in-cheek look at different ways that &#8220;crafty developers&#8221; try to sneak Python into software companies, and ways to counter-act them.  Here was my favourite example:</p>
<p><strong><em>Developer:</em></strong></p>
<p>&#8220;With Python, you have to write a tenth amount of the code as with C&#8221;</p>
<p><strong><em>Why this is to be avoided:</em></strong></p>
<p>&#8220;Less code means less programmers, less  man-hours spent on your project, and a lower expenditure, which means that as a manager you will end up with a parking space further away from the office &#8211; stop it at all costs.&#8221;</p>
<p>I also went to two very interesting talks on <a href="http://codespeak.net/pypy/">PyPy</a>, an interpreter for Python (and more) that would take more time to describe than I have now (and more than most would be willing to read through). It was great to be able to ask the developers some questions, and according to their first talk, we should expect production ready PyPy in between 6 and 12 months.</p>
<p>I also enjoyed the talk on &#8220;Building an App in a week&#8221; &#8211; a talk tailored at hacking together a django web site in very fast iterations &#8211; with some great tips, mainly under the heading &#8220;avoid doing work at all costs&#8221;.</p>
<p>If there is one slight problem I would complain about, it is that the wireless network here doesn&#8217;t seem to have been prepared for this many developers to all turn up at once with our IRC, email and ssh connections all running constantly during the talks. I heard one person complain that it was taking him 45 seconds to load the Google homepage &#8211; but amazingly Guido&#8217;s talk seemed to come through fine.</p>
<p>Signing off for now,</p>
<p>Tim<br />
<img src="http://www.teamrubber.com/blog/wp-content/uploads/2008/07/07072008499edited.jpg" alt="07072008499edited Monday in Vilnius (Europython)"  title="Monday in Vilnius (Europython)" /></p>
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-bottom: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.teamrubber.com%252Fblog%252Fmonday-in-vilnius-europython%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Monday%20in%20Vilnius%20%28Europython%29%22%20%7D);"></div>

]]></content:encoded>
			<wfw:commentRss>http://www.teamrubber.com/blog/monday-in-vilnius-europython/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fractals and lots of Machines</title>
		<link>http://www.teamrubber.com/blog/fractals-and-lots-of-machines/</link>
		<comments>http://www.teamrubber.com/blog/fractals-and-lots-of-machines/#comments</comments>
		<pubDate>Fri, 23 May 2008 09:23:03 +0000</pubDate>
		<dc:creator>Tim Wintle</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[map reduce]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.teamrubber.com/blog/?p=111</guid>
		<description><![CDATA[After setting up a test hadoop map-reduce cluster for our viral seeding service here at rubber towers earlier this year, I needed to come up with a simple task to run to get my head around the map-reduce programming model. Stumbling upon this great blog post, I decided to run a task to render a [...]]]></description>
			<content:encoded><![CDATA[
<p>After setting up a test <a href="http://hadoop.apache.org/core/">hadoop</a> map-reduce cluster for our <a href="http://www.viraladnetwork.net/advertisers/">viral seeding service</a> here at rubber towers earlier this year, I needed to come up with a simple task to run to get my head around the <a href="http://en.wikipedia.org/wiki/MapReduce">map-reduce</a> programming model.</p>
<p>Stumbling upon <a href="http://www.danvk.org/wp/2007-04-06/nebulabrot/">this great blog post</a>, I decided to run a task to render a  <a href="http://en.wikipedia.org/wiki/Buddhabrot">Buddhabrot</a> in glorious detail (6000X4000 pixels).</p>
<p>These images are released under a creative commons non-commercial share-alike licence (click the image for a low-resolution desktop background)</p>
<p><a href="http://www.teamrubber.com/blog/wp-content/uploads/2008/05/image_out_background.png" title="buddahbrot-small"><img src="http://www.teamrubber.com/blog/wp-content/uploads/2008/05/image_out-forblog.jpg" alt="image out forblog Fractals and lots of Machines"  title="Fractals and lots of Machines" /></a></p>
<p align="center"><a href="http://creativecommons.org/licenses/by-nc-sa/2.0/uk/" rel="license"><img src="http://i.creativecommons.org/l/by-nc-sa/2.0/uk/88x31.png" alt="88x31 Fractals and lots of Machines" style="border-width: 0pt" title="Fractals and lots of Machines" /></a><br />
<span xmlns:dc="http://purl.org/dc/elements/1.1/" property="dc:title" rel="dc:type">BuddhaBrot</span> by <a href="http://www.teamrubber.com" xmlns:cc="http://creativecommons.org/ns#" property="cc:attributionName" rel="cc:attributionURL">Team Rubber / Tim Wintle</a> is licensed under a <a href="http://creativecommons.org/licenses/by-nc-sa/2.0/uk/" rel="license">Creative Commons Attribution-Non-Commercial-Share Alike 2.0 UK: England &amp; Wales License</a>.</p>
<p align="center">Here is a close-up of the &#8220;head&#8221; of the brot (the part on the left) in it&#8217;s original resolution:</p>
<p align="center"><img src="http://www.teamrubber.com/blog/wp-content/uploads/2008/05/image_out-closeup-forblog.png" alt="image out closeup forblog Fractals and lots of Machines"  title="Fractals and lots of Machines" /></p>
<p>You can download the image scaled down to a <a href="http://www.teamrubber.com/blog/wp-content/uploads/2008/05/image_out_background.png">desktop background</a>, the high resolution image (not on the site to preserve bandwidth) is roughly 40Mb as a png.</p>
<p>For those interested, the intermediate data (passed between the map and reduce phases) was roughly 250 Gb of raw data. The mapper and reducer were both written in Python, with a single final reduce done off-cluster using PIL (the Python Imaging Library).</p>
<p><strong>UPDATE</strong></p>
<p>You can now download a <a href="http://www.teamrubber.com/blog/wp-content/uploads/2008/05/blue_buhddabrot_6000x4000png.torrent" title="torrent">torrent</a> of the entire, full resolution image.</p>
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-bottom: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.teamrubber.com%252Fblog%252Ffractals-and-lots-of-machines%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Fractals%20and%20lots%20of%20Machines%22%20%7D);"></div>

]]></content:encoded>
			<wfw:commentRss>http://www.teamrubber.com/blog/fractals-and-lots-of-machines/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>developer website wins award</title>
		<link>http://www.teamrubber.com/blog/developer-website-wins-award/</link>
		<comments>http://www.teamrubber.com/blog/developer-website-wins-award/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 11:20:36 +0000</pubDate>
		<dc:creator>Tim Wintle</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[mashup]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.teamrubber.com/rubber/?p=67</guid>
		<description><![CDATA[Ok, ok, so I&#8217;m blowing my own trumpet a bit, but it turns out one of my personal sites (social comic book) won &#8220;mashup of the week&#8221; on mashupawards.com. I&#8217;d like to thank my mother, father, my childhood pets, &#8230;]]></description>
			<content:encoded><![CDATA[
<p><img src="http://www.teamrubber.com/rubber/wp-content/uploads/2008/01/mashupoftheday.jpg" alt="mashupoftheday developer website wins award" align="left" title="developer website wins award" />Ok, ok, so I&#8217;m blowing my own trumpet a bit, but it turns out one of my personal sites (<a href="http://www.socialcomicbook.com">social comic book</a>) won &#8220;mashup of the week&#8221; on mashupawards.com.</p>
<p>I&#8217;d like to thank my mother, father, my childhood pets, &#8230;</p>
<div class="topsy_widget_data topsy_theme_blue" style="float: left;margin-bottom: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fwww.teamrubber.com%252Fblog%252Fdeveloper-website-wins-award%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22developer%20website%20wins%20award%22%20%7D);"></div>

]]></content:encoded>
			<wfw:commentRss>http://www.teamrubber.com/blog/developer-website-wins-award/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

