<?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>does not validate &#187; Python</title>
	<atom:link href="http://doesnotvalidate.com/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://doesnotvalidate.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 02 Jul 2010 06:31:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>RESIZING TRANSPARENT IMAGES WITH DJANGO + PIL</title>
		<link>http://doesnotvalidate.com/2009/resizing-transparent-images-with-django-pil/</link>
		<comments>http://doesnotvalidate.com/2009/resizing-transparent-images-with-django-pil/#comments</comments>
		<pubDate>Mon, 02 Feb 2009 00:59:46 +0000</pubDate>
		<dc:creator>Dane</dc:creator>
				<category><![CDATA[left]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[PIL]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://doesnotvalidate.com/?p=828</guid>
		<description><![CDATA[I can&#8217;t seem to get sorl thumbnail to play nice with transparent PNGs, it keeps adding weird black and grey backgrounds because it&#8217;s doesn&#8217;t maintain the alpha channel in it&#8217;s output.


Python&#8217;s PIL Module uses different versions of the Image.save() method depending on the format of the image being saved.  sorl thumbnail uses the following [...]]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t seem to get <a href="http://code.google.com/p/sorl-thumbnail/" target="_blank">sorl thumbnail</a> to play nice with transparent PNGs, it keeps adding weird black and grey backgrounds because it&#8217;s doesn&#8217;t maintain the alpha channel in it&#8217;s output.</p>
<div style="text-align: center; padding: 10px;"><img style="margin-right: 60px;" src="http://comixapp.webfactional.com/assets/gfx/logotest1.png" alt="" /><br />
<img src="http://comixapp.webfactional.com/assets/gfx/logotest2.png" alt="" /></div>
<p><a href="http://www.pythonware.com/library/pil/handbook/format-png.htm">Python&#8217;s PIL Module</a> uses different versions of the <a href="http://www.pythonware.com/library/pil/handbook/image.htm" target="_blank">Image.save()</a> method depending on the format of the image being saved.  <a href="http://code.google.com/p/sorl-thumbnail/">sorl thumbnail</a> uses the following call when it creates the final image output:<br />
<br/></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">im.<span style="color: black;">save</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">dest</span>, quality=<span style="color: #008000;">self</span>.<span style="color: black;">quality</span><span style="color: black;">&#41;</span></pre></div></div>

<p>This call utilizes a parameter call <em>quality</em> which, according to the documentation is only available on JPEGs.  Even changing the <em>THUMBNAIL_EXTENSION</em> in my settings.py file to &#8220;png&#8221; still didn&#8217;t make it maintain the alpha channel the way I had expected it to. <a href="http://code.google.com/p/sorl-thumbnail/issues/detail?id=56">Bug 56</a> is currently open for this issue at the <a href="http://code.google.com/p/sorl-thumbnail/" target="_blank">sorl thumbnail project home</a>.<br />
<br/><strong>The solution</strong><br />
<br/>I wanted to setup a way to pull the images off of the transparency resize them and then drop them on an opaque background of it&#8217;s own independent size.<br />
<br/>So the first thing I did was to load in an image via PIL:</p>
<div style="text-align: center; padding: 20px;"><img src="http://comixapp.webfactional.com/assets/gfx/nike-sb_logo.png" alt="" /></div>
<p><br/></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">im = Image.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>filename<span style="color: black;">&#41;</span></pre></div></div>

<p>So now that we&#8217;ve got our image we need to create the opaque background for it&#8230; right now we&#8217;ll just use a solid black one.  Use the following PIL method call to create a background at an identical size to the original image:</p>
<div style="text-align: center; padding: 20px;"><img src="http://comixapp.webfactional.com/assets/gfx/logotest4.png" alt="" /></div>
<p><br/></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">bg = Image.<span style="color: #dc143c;">new</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'RGBA'</span>, im.<span style="color: black;">size</span>, <span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>At this point I&#8217;ve got two images, <strong>im</strong> the logo file and <strong>bg</strong> the opaque black background. Using the PIL <em>paste</em> method I can stick there two together.</p>
<p><br/></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">bg.<span style="color: black;">paste</span><span style="color: black;">&#40;</span>im<span style="color: black;">&#41;</span></pre></div></div>

<p>which gives us the following image:</p>
<div style="text-align: center; padding: 10px;"><img src="http://comixapp.webfactional.com/assets/gfx/logotest3.png" alt="" /></div>
<p>If you&#8217;re like me, you&#8217;re like &#8211; &#8220;WHAT THE HELL?!?! I just pasted a transparent PNG on a black background, why is it all white???&#8221;  The answer is because you didn&#8217;t tell Python to maintain the alpha channel when it pasted.<br />
<br/>The way that PIL deals with transparency when saving or pasting PNGs (that have a mode of &#8220;RGBA&#8221; or &#8220;P&#8221;) is to allow for a &#8220;transparency&#8221; parameter which is an integer from 0 &#8211; 255 which is sort of like a transparency tolerance for that image, and represents the &#8220;opaqueness&#8221; of the pixels to maintain transparency for.  Since this is different for every image what we need to do is just maintain the value of the PNG we&#8217;re working with.<br />
<br/><em>Note:</em> that if you paste an &#8220;RGBA&#8221; image (WE ARE!), the alpha band is ignored in a paste. You can work around this by using the same image as both source image and mask &#8211; like we have below.  More information at the <a href="http://www.pythonware.com/library/pil/handbook/image.htm" target="_blank">PIL Handbook</a><br />
<br/>Change the paste call to look like this:<br />
<br/></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">bg.<span style="color: black;">paste</span><span style="color: black;">&#40;</span>im, <span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span>, im<span style="color: black;">&#41;</span></pre></div></div>

<p>which produces this:</p>
<div style="text-align: center; padding: 20px;"><img src="http://comixapp.webfactional.com/assets/gfx/logotest5.png" alt="" /></div>
<p><span id="more-828"></span></p>
<p>This call has two additional parameters.  The first is is either a 2-tuple giving the upper left corner, a 4-tuple defining the left, upper, right, and lower pixel coordinate, or None (same as (0, 0)) for image we&#8217;re pasting in &#8211; for this we&#8217;re pasting it in at (0,0) &#8211; and the second is transparency value &#8211; which we&#8217;re just telling them use the the value from <strong>im</strong>.<br />
<br/>Although close this still isn&#8217;t quite right.  There are a bunch of extra transparent pixels which create the strips of blank vertical space on the top and bottom of the image&#8230; lets get rid of them.</p>
<p><br/>Add the following code right below the first image.open call like this:<br />
<br/></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">im = Image.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>filename<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#convert to black and white</span>
invert = ImageChops.<span style="color: black;">invert</span><span style="color: black;">&#40;</span>im<span style="color: black;">&#41;</span>
bw = im.<span style="color: black;">convert</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;1&quot;</span><span style="color: black;">&#41;</span>
bw = bw.<span style="color: #008000;">filter</span><span style="color: black;">&#40;</span>ImageFilter.<span style="color: black;">MedianFilter</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># add a white bg and do a difference</span>
diffbg = Image.<span style="color: #dc143c;">new</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;1&quot;</span>, im.<span style="color: black;">size</span>, <span style="color: #ff4500;">255</span><span style="color: black;">&#41;</span>
diff = ImageChops.<span style="color: black;">difference</span><span style="color: black;">&#40;</span>bw, diffbg<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#use the difference to create a bounding box</span>
bbox = diff.<span style="color: black;">getbbox</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#crop to that bounding box</span>
<span style="color: #ff7700;font-weight:bold;">if</span> bbox:
      im = im.<span style="color: black;">crop</span><span style="color: black;">&#40;</span>bbox<span style="color: black;">&#41;</span></pre></div></div>

<p>and we get just the non-transparent parts of the original:</p>
<div style="text-align: center; padding: 20px;"><img src="http://comixapp.webfactional.com/assets/gfx/logotest6.png" alt="" /></div>
<p>The next step is to be able to dynamically control the color of the opaque background. In order to do this we need to accept a new parameter which should be a hex color value encased in quotes.  Change the line where you create the bg image to look like this (where <em>bgcolor</em> is the quoted hex color string):<br />
<br/></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">bg = Image.<span style="color: #dc143c;">new</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'RGBA'</span>, im.<span style="color: black;">size</span>, ImageColor.<span style="color: black;">getcolor</span><span style="color: black;">&#40;</span>bgcolor<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>, <span style="color: #483d8b;">'RGB'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></div></div>

<p>So if we passed the string &#8220;#FF0000&#8243; as bgcolor we get this:</p>
<div style="text-align: center; padding: 20px;"><img src="http://comixapp.webfactional.com/assets/gfx/logotest7.png" alt="" /></div>
<p>Which is rad.  Now we want to pass in two different size values.  The first one is a maximum width / maximum height tuple for the logo.  Thsi value will be used to re-size the logo according to it&#8217;s aspect ratio to one of these maximum values.  The second value is also a tuple and is the absolute width and height of the background image.  Change your function to accept these 2 new parameters &#8211; I&#8217;m writing a custom Django Template tag which I will share at the end.</p>
<p><br/>Now change the line where you create the bg image, with these two lines of code where logo_width and logo_height are the integer values of your logo size tuple, and the same for bg_width and bg_height:<br />
<br/></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">im.<span style="color: black;">thumbnail</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>logo_width, logo_height<span style="color: black;">&#93;</span>, Image.<span style="color: black;">ANTIALIAS</span><span style="color: black;">&#41;</span>
bg = Image.<span style="color: #dc143c;">new</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'RGBA'</span>, <span style="color: black;">&#40;</span>bg_width,bg_height,<span style="color: black;">&#41;</span>, ImageColor.<span style="color: black;">getcolor</span><span style="color: black;">&#40;</span>bgcolor<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:-<span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>, <span style="color: #483d8b;">'RGB'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></div></div>

<div style="text-align: center; padding: 20px;"><img src="http://comixapp.webfactional.com/assets/gfx/logotest8.png" alt="" /></div>
<p>So now we&#8217;ve got independent sizes, lets center the logo in the background.  Replace the paste call from before with this code<br />
<br/></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">image_width, image_height = im.<span style="color: black;">size</span>
xpos = <span style="color: black;">&#40;</span>bg_width/<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span> - <span style="color: black;">&#40;</span>image_width/<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>
ypos = <span style="color: black;">&#40;</span>bg_height/<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span> - <span style="color: black;">&#40;</span>image_height/<span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>
&nbsp;
bg.<span style="color: black;">paste</span><span style="color: black;">&#40;</span>im, <span style="color: black;">&#40;</span>xpos, ypos<span style="color: black;">&#41;</span>, im<span style="color: black;">&#41;</span></pre></div></div>

<p>so if we call the function like with the following parameters:</p>
<div style="margin: 20px 0; padding: 30px; background-color: #eeeeee;"><strong>background-color</strong> = &#8220;#FF0000&#8243;<br />
<strong>logo_size</strong> = [200x200]<br />
<strong>bg_size</strong> = [200x200]</div>
<p>produces this image:</p>
<div style="text-align: left; padding: 20px 0;"><img src="http://comixapp.webfactional.com/assets/gfx/logotest9.png" alt="" /></div>
<p>and calling it with these parameters:</p>
<div style="margin: 20px 0; padding: 30px; background-color: #eeeeee;"><strong>background-color</strong> = &#8220;#FF0000&#8243;<br />
<strong>logo_size</strong> = [200x200]<br />
<strong>bg_size</strong> = [400x300]</div>
<p>produces this image:</p>
<div style="text-align: left; padding: 20px 0;"><img src="http://comixapp.webfactional.com/assets/gfx/logotest10.png" alt="" /></div>
<p>and finally(!) calling the function with these parameters:</p>
<div style="margin: 20px 0; padding: 30px; background-color: #eeeeee;"><strong>background-color</strong> = &#8220;#000000&#8243;<br />
<strong>logo_size</strong> = [100x100]<br />
<strong>bg_size</strong> = [200x200]</div>
<p>produces this image:</p>
<div style="text-align: left; padding: 10px 0;"><img src="http://comixapp.webfactional.com/assets/gfx/logotest12.png" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://doesnotvalidate.com/2009/resizing-transparent-images-with-django-pil/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Rebus Farms</title>
		<link>http://doesnotvalidate.com/2008/rebus-farms/</link>
		<comments>http://doesnotvalidate.com/2008/rebus-farms/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 23:10:09 +0000</pubDate>
		<dc:creator>Dane</dc:creator>
				<category><![CDATA[left]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[portfolio]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[welikesmall]]></category>

		<guid isPermaLink="false">http://doesnotvalidate.com/?p=254</guid>
		<description><![CDATA[
URL: http://www.rebusfarms.com
AGENCY: Freelance
LAUNCH: August, 2008
ROLE: Lead Developer
TECHNOLOGIES: Flash, Python + Django, XHTML + CSS, jQuery
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rebusfarms.com/" target="_blank"><img src="http://doesnotvalidate.com/wp-content/uploads/rebus.jpg" alt="" title="rebus farms launches" width="460" height="371" class="alignnone size-full wp-image-97" /></a></p>
<p><strong>URL:</strong> <a href='http://www.rebusfarms.com' target="_blank">http://www.rebusfarms.com</a><br />
<strong>AGENCY:</strong> Freelance<br />
<strong>LAUNCH:</strong> August, 2008<br />
<strong>ROLE:</strong> Lead Developer<br />
<strong>TECHNOLOGIES:</strong> Flash, Python + Django, XHTML + CSS, jQuery</p>
]]></content:encoded>
			<wfw:commentRss>http://doesnotvalidate.com/2008/rebus-farms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UTAH OFFICE OF TOURISM</title>
		<link>http://doesnotvalidate.com/2008/utah-office-of-tourism/</link>
		<comments>http://doesnotvalidate.com/2008/utah-office-of-tourism/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 22:10:46 +0000</pubDate>
		<dc:creator>Dane</dc:creator>
				<category><![CDATA[left]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Dane Hesseldahl]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[portfolio]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Struck]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://doesnotvalidate.com/?p=166</guid>
		<description><![CDATA[
URL: http://utah.travel/
AGENCY: Struck Creative
LAUNCH: March 2008
ROLE: Lead Developer
TECHNOLOGIES: Flash, Python + Django
Flash based site I did while at Struck for the Utah Office of Tourism.  The data is all dynamic and is pulled from a Django based CMS that allow the client to update the content at any time.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://utah.travel/"><img src="http://doesnotvalidate.com/wp-content/uploads/utah.jpg" alt="" title="utah" width="460" height="301" class="alignnone size-full wp-image-167" /></a></p>
<p><br/><strong>URL: </strong><a href='http://utah.travel/'>http://utah.travel/</a><br />
<strong>AGENCY: </strong><a href='http://www.struckcreative.com'>Struck Creative</a><br />
<strong>LAUNCH: </strong>March 2008<br />
<strong>ROLE: </strong>Lead Developer<br />
<strong>TECHNOLOGIES: </strong>Flash, Python + Django</p>
<p><br/>Flash based site I did while at Struck for the Utah Office of Tourism.  The data is all dynamic and is pulled from a Django based CMS that allow the client to update the content at any time.</p>
]]></content:encoded>
			<wfw:commentRss>http://doesnotvalidate.com/2008/utah-office-of-tourism/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PYTHON: BACKUP TO S3</title>
		<link>http://doesnotvalidate.com/2008/python-backup-to-s3/</link>
		<comments>http://doesnotvalidate.com/2008/python-backup-to-s3/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 17:37:54 +0000</pubDate>
		<dc:creator>Dane</dc:creator>
				<category><![CDATA[left]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[Simon Willision]]></category>

		<guid isPermaLink="false">http://doesnotvalidate.com/?p=102</guid>
		<description><![CDATA[Djangonaut Simon Willison has published a simple Python-based S3 backup script.
&#8220;One simple strategy for backing up a server to S3: a single backup_to_s3 function which takes your S3 authentication details plus three (optional) dictionaries specifying directories, files and commands to be backed up.&#8221;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
backup_to_s3&#40;
    access_key = 'your-access-key',
    secret_access_key = 'your-secret-access-key',
 [...]]]></description>
			<content:encoded><![CDATA[<p>Djangonaut <a href='http://simonwillison.net/' target="_blank">Simon Willison</a> has published a <a href="http://simonwillison.net/static/2008/backup_to_s3.py.txt">simple Python-based S3 backup script</a>.<br />
<br/><em>&#8220;One simple strategy for backing up a server to S3: a single backup_to_s3 function which takes your S3 authentication details plus three (optional) dictionaries specifying directories, files and commands to be backed up.&#8221;</em><br />
<br/></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="python" style="font-family:monospace;">backup_to_s3<span style="color: black;">&#40;</span>
    access_key = <span style="color: #483d8b;">'your-access-key'</span>,
    secret_access_key = <span style="color: #483d8b;">'your-secret-access-key'</span>,
    bucket = <span style="color: #483d8b;">'your-backup-bucket'</span>,
    directories = <span style="color: black;">&#123;</span>
        <span style="color: #483d8b;">'svnroot'</span>: <span style="color: #483d8b;">'/var/svnroot'</span>,
        <span style="color: #483d8b;">'www'</span>: <span style="color: #483d8b;">'/var/www'</span>,
    <span style="color: black;">&#125;</span>,
    <span style="color: #dc143c;">commands</span> = <span style="color: black;">&#123;</span>
        <span style="color: #483d8b;">'test.sql'</span>: <span style="color: #483d8b;">'mysqldump -u root test'</span>,
    <span style="color: black;">&#125;</span>,
    files = <span style="color: black;">&#123;</span>
        <span style="color: #483d8b;">'passwd'</span>: <span style="color: #483d8b;">'/etc/passwd'</span>,
    <span style="color: black;">&#125;</span>
<span style="color: black;">&#41;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://doesnotvalidate.com/2008/python-backup-to-s3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>REBUS FARMS LAUNCHES!</title>
		<link>http://doesnotvalidate.com/2008/rebus-farms-launches/</link>
		<comments>http://doesnotvalidate.com/2008/rebus-farms-launches/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 17:20:40 +0000</pubDate>
		<dc:creator>Dane</dc:creator>
				<category><![CDATA[left]]></category>
		<category><![CDATA[Dane Hesseldahl]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[Freelance]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[portfolio]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[rebus farms]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://doesnotvalidate.com/?p=96</guid>
		<description><![CDATA[
I worked with the guys over in SLC @ welikesmall to create a Python + Django powered CMS driven site for the Chicago-based production company Rebus Farms.  With the magic of jQuery, I was able to make an effective single-page portfolio site to showcase their video work.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rebusfarms.com/" target="_blank"><img src="http://doesnotvalidate.com/wp-content/uploads/rebus.jpg" alt="" title="rebus farms launches" width="460" height="371" class="alignnone size-full wp-image-97" /></a><br />
I worked with the guys over in SLC @ <a href='http://www.welikesmall.com/'>welikesmall</a> to create a Python + Django powered CMS driven site for the Chicago-based production company <a href="http://www.rebusfarms.com/" target="_blank">Rebus Farms</a>.  With the magic of <a href='http://jquery.com/' target='_blank'>jQuery</a>, I was able to make an effective single-page portfolio site to showcase their video work.</p>
]]></content:encoded>
			<wfw:commentRss>http://doesnotvalidate.com/2008/rebus-farms-launches/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
