<?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>Chapter 42 &#187; code</title>
	<atom:link href="http://chapter42.whitewhale.net/tag/code/feed/" rel="self" type="application/rss+xml" />
	<link>http://chapter42.whitewhale.net</link>
	<description></description>
	<lastBuildDate>Thu, 30 Sep 2010 17:20:47 +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>Converting to Title Case</title>
		<link>http://chapter42.whitewhale.net/2008/10/28/converting-to-title-case/</link>
		<comments>http://chapter42.whitewhale.net/2008/10/28/converting-to-title-case/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 19:10:00 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
				<category><![CDATA[Behind the scenes]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[livewhale]]></category>
		<category><![CDATA[lwblog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Title Case]]></category>
		<category><![CDATA[whitewhale]]></category>

		<guid isPermaLink="false">http://chapter42.whaleblogs.net/?p=122</guid>
		<description><![CDATA[In the process of developing and refining our CMS, the question occasionally arises whether or not we should convert text inputs from format X to format Y.  These questions range from the innocuous and straightforward (should we convert curly quotes to straight quotes?  or vice versa?) to the more insidious (should we correct a misspelling?  should [...]]]></description>
			<content:encoded><![CDATA[<p>In the process of developing and refining <a title="LiveWhale" href="http://www.livewhale.com" target="_blank"><strong>our CMS</strong></a>, the question occasionally arises whether or not we should convert text inputs from format X to format Y.  These questions range from the innocuous and straightforward (should we convert curly quotes to straight quotes?  or vice versa?) to the more insidious (should we correct a misspelling?  should we move close quotes to outside a period?).  </p>
<p>On the one hand, it&#8217;s probably best to let users make mistakes, or format as they wish, and depend on human communication to clear things up— instead of trying to build in a bunch of extra structure designed to cover for mistakes.  It&#8217;s <a title="White Whale CMS conversation" href="http://www.whitewhale.net/content/cms.php" target="_blank">our view</a> that the latter approach leads to bloated, overbuilt CMS systems that discourage accountability.  But at the same time, consistency and coherence of communication across a Web site is a really, really important thing— it is what distinguishes sites that serve as good vehicles for an institution&#8217;s messaging from sites that are just decorated Web pages.</p>
<p>We&#8217;re thinking about this right now because we are considering automatically converting the titles of news items in LiveWhale to Title Case.  The following three news headlines, though identical in content, send very different messages:</p>
<p>1.  <strong>White Whale Web Services to Release New Content Management System, Revolutionize CMS Industry<br />
 </strong></p>
<p>2.  <strong>White Whale Web Services to release new content management system, revolutionize CMS industry<br />
 </strong></p>
<p>3.  <strong>WHITE WHALE WEB SERVICES TO RELEASE NEW CONTENT MANAGEMENT SYSTEM, REVOLUTIONIZE CMS INDUSTRY<br />
 </strong></p>
<p>Although there might be a justification for #3 in a particular Web design, it&#8217;s clear that you wouldn&#8217;t want a user to enter news headlines that way.  For one thing, caps are just hard to read in many contexts; but on top of that, it&#8217;s always easy to {text-transform:uppercase} if you need caps.  My general preference as a design snob would be for #2, but that&#8217;s clearly not common practice— as much as I enjoy headlines like <a href="http://www.timesonline.co.uk/tol/news/world/us_and_americas/us_elections/article5031835.ece" target="_blank">this</a> (or <a title="Why smaller is better" href="http://www.whitewhale.net/content/small.php" target="_blank">this</a>), that style is much more common in European news than American.</p>
<p>It&#8217;s also the case that styles #1 and #2 look terrible next to each other:</p>
<ul>
<li><strong>White Whale Web Services to Release New Content Management System, Revolutionize CMS Industry</strong></li>
<li><strong>Other CMS providers cower in fear</strong></li>
</ul>
<p>So.  Should we let users do what they will, and enter headlines according to any system they prefer?  Or should we legislate something?  It seems pretty clear from the above examples that— at least in the particular case of news headlines— legislating is the way to go.  And if you&#8217;re going to require a particular format for headlines, it seems pretty clear that Title Case Is Your Only Option.</p>
<p>So what&#8217;s the best way to do it?</p>
<p><span id="more-122"></span>You could, for example, simply ask the user to format the headline a particular way:</p>
<p>___________________________________________________<br />
<em><span style="color: #999999;">Please use Title Case for headlines.</span></em></p>
<p>Or, a bit more diplomatically, you could provide an example:</p>
<p>___________________________________________________<br />
<em><span style="color: #999999;">Example: Stock Market Soars on Rumors of Bailout</span></em></p>
<div>Either of those would be likely to get you good results a majority of the time. But this approach has its drawbacks.  Obviously, it doesn&#8217;t ensure that you&#8217;ll get the results you want; some people (including me, probably) would tend to ignore instructions of this sort and enter headlines the way we want to.  And in a more philosophical sense, it requires exposing a behind-the-scenes decision in the help text of the interface, which I don&#8217;t like&#8230; help text ought to help you fill out the form, not preach about how your content should be styled.  Ideally those decisions should be invisible, unless they&#8217;re important enough to require input from the user.  In other words— <em>we shouldn&#8217;t have to provide instructions about using Title Case unless we felt users might have legitimate reasons not to. </em>  Otherwise it looks like a limitation of the CMS.</div>
<p>Alternatively, we could let users enter any headlines they want, and control the front end display with CSS&#8217;s <a title="text-transform property" href="http://www.w3schools.com/Css/pr_text_text-transform.asp" target="_blank">text-transform property</a>.  But that&#8217;s not going to work either, because these are the only options we have:</p>
<table style="border-collapse:collapse;" border="1" cellspacing="0" cellpadding="4">
<tbody>
<tr>
<th align="left" valign="top">Value</th>
<th align="left" valign="top">Description</th>
</tr>
<tr>
<td valign="top">none</td>
<td valign="top">Default. Defines normal text, with lower case letters and capital letters</td>
</tr>
<tr>
<td valign="top">capitalize</td>
<td valign="top">Each word in a text starts with a capital letter</td>
</tr>
<tr>
<td valign="top">uppercase</td>
<td valign="top">Defines only capital letters</td>
</tr>
<tr>
<td valign="top">lowercase</td>
<td valign="top">Defines no capital letters, only lower case letters</td>
</tr>
</tbody>
</table>
<p>Title Case Is Great, But Not If You Capitalize Every Word In The Sentence.  Otherwise It Looks Hacky.  The text-transform property doesn&#8217;t have the kind of sensitivity you&#8217;d want in a good Title Case headline.  I am personally big on punctuation and capitalization styles that reflect spoken rhythms— that&#8217;s why, no matter what Douglas says, I always put a space after an em dash— and capitalizing &#8220;the,&#8221; &#8220;and,&#8221; etc. ruins the spoken rhythm of a headline.</p>
<p>So the only approach left— assuming you want to engage this issue at all!— is to automatically convert headlines into Title Case on the back end.  And that&#8217;s the whole reason I started this post in the first place.</p>
<p>It turns out that converting to Title Case is nowhere near as simple as you&#8217;d imagine.  Sure, we know that you don&#8217;t capitalize &#8220;the&#8221; or &#8220;a&#8221; or prepositions, etc.  But how about sentences like these?</p>
<p><strong>Read markdown_rules.txt to Find Out How _Underscores Around Words_ Will Be Interpreted</strong></p>
<p><strong>Notes and Observations Regarding Apple’s Announcements From ‘The Beat Goes On’ Special Event<br />
</strong></p>
<p>These sentences are from <a title="Title Case test suite" href="http://individed.com/code/to-title-case/tests.html" target="_blank">a suite of test cases</a> for a <a title="Daring Fireball: Title Case" href="http://daringfireball.net/2008/08/title_case_update" target="_blank">Title Case script</a> originally created by John Gruber of <a title="Daring Fireball" href="http://daringfireball.net/" target="_blank">Daring Fireball</a>.  We are planning to use <a title="Convert to Title Case (PHP)" href="http://files.nanovivid.com/wordpress/title-case.php" target="_blank">the PHP version of the script</a> to convert some of Southwestern&#8217;s old news headlines (originally entered with uppercase headlines) to a thoughtful Title Case, and are considering using it when headlines are created in LiveWhale in the first place.  In the process we discovered yet another odd, fascinating corner of the world of CMS development to geek out in.</p>
]]></content:encoded>
			<wfw:commentRss>http://chapter42.whitewhale.net/2008/10/28/converting-to-title-case/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Resizing images to fit</title>
		<link>http://chapter42.whitewhale.net/2008/07/22/resizing-images-to-fit/</link>
		<comments>http://chapter42.whitewhale.net/2008/07/22/resizing-images-to-fit/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 15:50:40 +0000</pubDate>
		<dc:creator>Donald</dc:creator>
				<category><![CDATA[Behind the scenes]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[livewhale]]></category>
		<category><![CDATA[lwblog]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[resizing]]></category>

		<guid isPermaLink="false">http://chapter42.whaleblogs.net/?p=68</guid>
		<description><![CDATA[Last week, we flew Alex out to the Bay Area for some company togetherness and to devote some serious time to the aforementioned yet still-unannounced internal project. An also-secret major feature of said project required us to use PHP to place arbitrarily-selected images in arbitrarily-sized spaces (without, of course, unattractively stretching or squishing the image).
With [...]]]></description>
			<content:encoded><![CDATA[<p>Last week, we flew Alex out to the Bay Area for some company togetherness and to devote some serious time to the aforementioned yet still-unannounced internal project. An also-secret major feature of said project required us to use PHP to place arbitrarily-selected images in arbitrarily-sized spaces (without, of course, unattractively stretching or squishing the image).</p>
<p>With some thought, we were able to come up with a taxonomy of content photo sizing:<span id="more-68"></span></p>
<ol>
<li>Constrained horizontally (e.g. in a sidebar):<br />
<a href="http://www.whitewhale.net/wordpress/wp-content/uploads/2008/07/constrain_horizontal.jpg"><img class="alignnone size-medium wp-image-69" title="constrain_horizontal" src="http://www.whitewhale.net/wordpress/wp-content/uploads/2008/07/constrain_horizontal.jpg" alt="Constrained horizontally" width="124" height="104" /></a><a href="http://www.whitewhale.net/wordpress/wp-content/uploads/2008/07/constrain_horizontal.jpg"><br />
</a></li>
<li>Constrained vertically (e.g. to align alongside text):<br />
<a href="http://www.whitewhale.net/wordpress/wp-content/uploads/2008/07/contrain_vertical.jpg"><img class="alignnone size-medium wp-image-73" title="contrain_vertical" src="http://www.whitewhale.net/wordpress/wp-content/uploads/2008/07/contrain_vertical.jpg" alt="Constrained vertically" width="224" height="104" /></a></li>
<li>Constrained both horizontally and vertically within a box:<br />
<a href="http://www.whitewhale.net/wordpress/wp-content/uploads/2008/07/constrain_both_nocrop.jpg"><img class="alignnone size-medium wp-image-71" title="constrain_both_nocrop" src="http://www.whitewhale.net/wordpress/wp-content/uploads/2008/07/constrain_both_nocrop.jpg" alt="" width="104" height="104" /></a></li>
<li>Constrained both horizontally and vertically to fill the box, with the edges lobbed off automatically (e.g. when needed as specific design element):<br />
<a href="http://www.whitewhale.net/wordpress/wp-content/uploads/2008/07/contrain_both_crop.jpg"><img class="alignnone size-medium wp-image-72" title="contrain_both_crop" src="http://www.whitewhale.net/wordpress/wp-content/uploads/2008/07/contrain_both_crop.jpg" alt="Constrained both horizontally and vertically, and cropped" width="146" height="104" /></a></li>
</ol>
<p>I thought the fourth case would be the only troublesome one, but we knocked out uses 1, 2, and 4 rather quickly. Use 3, however, proved to be a problem; we just couldn&#8217;t get it to size appropriately for every test case. Unlike the others, it was unclear what dimension to constrain to: it varies not only for the same image placed in different spaces, but also for different images in the same-sized space:<br />
<a href="http://www.whitewhale.net/wordpress/wp-content/uploads/2008/07/4cases.jpg"><img class="alignnone size-medium wp-image-70" title="4cases" src="http://www.whitewhale.net/wordpress/wp-content/uploads/2008/07/4cases.jpg" alt="Four different uses" width="265" height="247" /></a></p>
<p>It was one of those problems that is as easy to describe&#8211;&#8221;fit the image in the box&#8221;&#8211;but hard to wrap your mind around programatically. We knew there must be simple logic to it, but despite examples in Photoshop and repeatedly walking through the problem we were <a href="http://www.whitewhale.net/wordpress/wp-content/uploads/2008/07/whiteboard.jpg">having trouble making sense of it</a>. Finally, we realized that the key comparison is the ratios of the images: if height<sub>original</sub>:width<sub>original</sub> &gt; height<sub>target</sub>:width<sub>target</sub> constrain by height; otherwise, constrain by width. We actually managed to make an educated guess at the solution before we fully understood the problem, but we did <a href="http://www.whitewhale.net/wordpress/wp-content/uploads/2008/07/penandpaper.jpg">some old-fashioned pen-and-paper work</a> to prove ourselves right.</p>
<p>The ins-and-outs of this backend code and logic no doubt are pretty dry to much of our audience. But this sort of problem is one of my favorite parts of my job: working through the logic of it is completely fun stuff to my inner geek, but more importantly there&#8217;s a great satisfaction in knowing you&#8217;ve found that killer solution. When you get home, it&#8217;s hard to explain to your significant other why spending the afternoon on this one simple function wasn&#8217;t a waste of time&#8211;heck, sometimes it&#8217;s tough to get that across to your boss. But here&#8217;s a case where, by taking that time, we were able to both clearly define all the ways we employ content photos on the design-side and create a single function that quickly fits any given photo to those uses. And that not only solves an immediate goal, but we can take that solution with us. We nailed it. And we may never need to think about image sizing again.</p>
]]></content:encoded>
			<wfw:commentRss>http://chapter42.whitewhale.net/2008/07/22/resizing-images-to-fit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iepngfix.htc</title>
		<link>http://chapter42.whitewhale.net/2008/06/04/iepngfixhtc/</link>
		<comments>http://chapter42.whitewhale.net/2008/06/04/iepngfixhtc/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 17:30:47 +0000</pubDate>
		<dc:creator>Donald</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ie6]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[png]]></category>

		<guid isPermaLink="false">http://chapter42.whaleblogs.net/?p=28</guid>
		<description><![CDATA[Internet Explorer 6 is a web development headache for many reasons, but its lack of support for PNG alpha transparency is one of the most grating. It's more-or-less a given that any cutting-edge design (even <a href="http://www.kenyon.edu/">a relatively minimalist one</a>) is going to have a place where one layer shines through another, or a single transparent image should be matched to multiple background colors, or—most commonly—anti-aliased text is placed over a photo or texture.

Getting these PNGs to actually be transparent is no longer a major issue—we've used a few different approaches over the years, but settled on Angus Turnbull’s <a href="http://www.twinhelix.com/css/iepngfix/">iepngfix.htc</a> as the most straightforward drop-in solution out there. The way it works is just really smart.

But while building out some recent client projects, we just couldn't get it to catch...]]></description>
			<content:encoded><![CDATA[<p>Internet Explorer 6 is a web development headache for many reasons, but its lack of support for PNG alpha transparency is one of the most grating. It&#8217;s more-or-less a given that any cutting-edge design (even <a href="http://www.kenyon.edu/">a relatively minimalist one</a>) is going to have a place where one layer shines through another, or a single transparent image should be matched to multiple background colors, or—most commonly—anti-aliased text is placed over a photo or texture.</p>
<p>Getting these PNGs to actually be transparent is no longer a major issue—we&#8217;ve used a few different approaches over the years, but settled on Angus Turnbull’s <a href="http://www.twinhelix.com/css/iepngfix/">iepngfix.htc</a> as the most straightforward drop-in solution out there. The way it works is just really smart.</p>
<p>But while building out some recent client projects, we just couldn&#8217;t get it to catch. We checked and double-checked the file paths, and re-exported the PNG images, and finally copied a working example from a live client site, but nothing seemed to do it. Because IE has no decent debugger, I removed the conditional comment to see what I could learn in <a href="http://www.getfirebug.com/">Firebug</a>.</p>
<p>It turns out that our staging server sends the <em>.htc</em> file as <em>text/plain</em>, while the working client version was serving <em>text/x-component</em>. Changing out server config to mimic this fixed the problem. Later, some Googling revealed that the release notes for the <a href="http://www.twinhelix.com/test/">newest beta version</a> address this (and even include a PHP solution that serves the file while sending the correct headers).</p>
<p>There are still a whole host of limitations: no repeating images, weird layering glitches that happen even in IE7, and really bizarre link clickability issues. But iepngfix gets far enough to solve 90% of the problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://chapter42.whitewhale.net/2008/06/04/iepngfixhtc/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Foundations</title>
		<link>http://chapter42.whitewhale.net/2008/05/22/foundations/</link>
		<comments>http://chapter42.whitewhale.net/2008/05/22/foundations/#comments</comments>
		<pubDate>Thu, 22 May 2008 16:31:42 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Behind the scenes]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://chapter42.whaleblogs.net/?p=26</guid>
		<description><![CDATA[My favorite part of programming has to do with maintaining and using code over the long term. In this sense, reusable APIs and frameworks are central to my work process. Adding a new feature to a project generally does not involve coding something wildly unique or reinventing the wheel. While the various ways in which [...]]]></description>
			<content:encoded><![CDATA[<p>My favorite part of programming has to do with maintaining and using code over the long term. In this sense, reusable APIs and frameworks are central to my work process. Adding a new feature to a project generally does not involve coding something wildly unique or reinventing the wheel. While the various ways in which you interact with web applications vary greatly on the surface, under the hood there should be a level of consistency, in which code is reused, flexible, fast, and straightforward. If you do a lot of form processing, for example, you might maintain a set of commonly used input validation functions. If you&#8217;re working with a solid application layer, whether for security, templating, or database functionality, etc., it will evolve over time and become something incredibly powerful, accounting for important trends in the industry which can easily be applied to past projects, as well as accounting for the various server environments in which it needs to run.<br />
<span id="more-26"></span></p>
<p>Maintaining code libraries does not have to contribute to bloat, either. The idea of a framework is to implement core APIs that are used from project to project to build functionality specific to that job. The independent framework itself will not absorb any of this site-specific functionality, contributing to bloat. A good framework plateaus, only growing incrementally upon necessity and relevance to the entire breadth of your work. Furthermore, more robust frameworks are modular, loading on the components they need. Sometimes explicit control is desirable, in which certain users are authenticated and given access to particular modules or plugins. Other times code logic dictates which portions of the framework need to be loaded and deployed. It may be desirable to go for a model in which services are dynamically registered within mechanisms central to the framework.</p>
<p>It&#8217;s particularly exciting to be in a position where you can rely on a powerful foundation of tried-and-true code, and be free to unleash your creativity in terms of how those static APIs are deployed from project to project. Broader communities might also benefit from your work if you can isolate and open-source particular APIs that contribute to smart application development, and certainly there are great options out there which you can adopt and benefit from yourself. Just as with any other career, the knowledge you gain, tools that you build, relationships that you make, over time, help to define who you are and what you can bring to the table in terms of problem solving, creativity, and commitment to the industry in which you work.</p>
]]></content:encoded>
			<wfw:commentRss>http://chapter42.whitewhale.net/2008/05/22/foundations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SFTPainless</title>
		<link>http://chapter42.whitewhale.net/2008/05/15/sftpainless/</link>
		<comments>http://chapter42.whitewhale.net/2008/05/15/sftpainless/#comments</comments>
		<pubDate>Thu, 15 May 2008 18:43:03 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Behind the scenes]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sftp]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://chapter42.whaleblogs.net/?p=22</guid>
		<description><![CDATA[At White Whale I maintain several libraries of code which involve performing tasks over FTP. PHP has an FTP extension that works pretty well for FTP-related code. The major flaw with it is that it only supports FTP and FTP+SSL. As we start working more and more with SFTP servers, many of these libraries needed [...]]]></description>
			<content:encoded><![CDATA[<p>At White Whale I maintain several libraries of code which involve performing tasks over FTP. PHP has an <a href="http://www.php.net/ftp">FTP</a> extension that works pretty well for FTP-related code. The major flaw with it is that it only supports FTP and FTP+SSL. As we start working more and more with SFTP servers, many of these libraries needed to add SFTP support.</p>
<p>There is an <a href="http://www.php.net/ssh2">SSH2</a> module that requires a little more effort to set up on your web server, but enables support for SFTP servers. The question is then, how can I integrate this extension and its features into an existing FTP codebase in an efficient manner? Furthermore, the SSH2 module&#8217;s syntax is not as straightforward for basic FTP tasks as the actual FTP extension is.</p>
<p>The answer is really pretty simple.<span id="more-22"></span> I created an FTP wrapper class which runs in one of three modes: FTP, SSL, or SFTP. Depending on the mode, the wrapper class reroutes its method calls to the appropriate extension. All the methods for this class exactly match the ones for the FTP extension. In the case of FTP and SSL, it is easy to map the methods from one to the other, because they&#8217;re exactly the same. In the case of SFTP, there&#8217;s a translation layer which converts FTP commands in the FTP extension&#8217;s syntax to the SSH2 extension&#8217;s equivalents.</p>
<p>The reason this approach is efficient is because all the existing code can be painlessly converted to the wrapper class, such that SFTP is instantly supported. No alternate SFTP code paths, no significant code rewrites, no new syntax to follow. What it boils down to is one extra step to specify the FTP mode, and then just prefixing each FTP function call with the wrapper object (i.e. ftp_put to $ftp-&gt;ftp_put). Done!</p>
]]></content:encoded>
			<wfw:commentRss>http://chapter42.whitewhale.net/2008/05/15/sftpainless/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

