<?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>The Slow Lane</title>
	<atom:link href="http://www.paulgarvin.net/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.paulgarvin.net/blog</link>
	<description>A blog about autocrossing, some geeky stuff &#38; Philadelphia.</description>
	<lastBuildDate>Mon, 29 Mar 2010 17:14:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Earth Hour is a failure.</title>
		<link>http://www.paulgarvin.net/blog/posts/106</link>
		<comments>http://www.paulgarvin.net/blog/posts/106#comments</comments>
		<pubDate>Mon, 29 Mar 2010 17:14:25 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.paulgarvin.net/blog/?p=106</guid>
		<description><![CDATA[This was too funny not to repost. Apparently yesterday everyone was supposed to turn off the lights for one hour as a sign of solidarity for climate change. Anthony Watts reports that out in California Earth Hour did not make a dent in the electrical demand load reported by CA-ISO, California&#8217;s eletrical system regulator. In [...]]]></description>
			<content:encoded><![CDATA[<p>This was too funny not to repost. Apparently yesterday everyone was supposed to turn off the lights for one hour as a sign of solidarity for climate change. <a href="http://wattsupwiththat.com/2010/03/27/2010-earth-hour-in-california-just-as-ineffective-as-last-year/">Anthony Watts reports</a> that out in California Earth Hour did not make a dent in the electrical demand load reported by CA-ISO, California&#8217;s eletrical system regulator. In that blog post is a quote from an outspoken global warming skeptic Ross McKitrick.</p>
<blockquote><p>I don&#8217;t want to go back to nature. Haiti just went back to nature. For humans, living in &#8220;Nature&#8221; meant a short life span marked by violence, disease and ignorance.<br />
&#8230;through the use of pollution control technology and advanced engineering, our air quality has dramatically improved since the 1960s despite the expansion of industry and the power supply. If, after all this, we are going to take the view that the remaining air emissions outweigh all the benefits of electricity, and that we ought to be shamed into sitting in darkness for an hour, like naughty children<br />
&#8230;then we are setting up unspoiled nature as an absolute, transcendent ideal that obliterates all other ethical and humane obligations. No thanks. I like visiting nature but I don&#8217;t want to live there, and I refuse to accept the idea that civilization is something to be ashamed of.</p></blockquote>
<p>This sums up a lot of how I feel about the global warming/carbon issue. McKitrick said it a bit more artfully than I would have been able to. Original credit for posting this quote and linking to McKitrick&#8217;s reaction goes to the <a href="http://nofrakkingconsensus.blogspot.com/">No Frakking Consensus Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulgarvin.net/blog/posts/106/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We&#8217;re in!</title>
		<link>http://www.paulgarvin.net/blog/posts/105</link>
		<comments>http://www.paulgarvin.net/blog/posts/105#comments</comments>
		<pubDate>Sun, 31 Jan 2010 16:06:44 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.paulgarvin.net/blog/posts/105</guid>
		<description><![CDATA[Well all my complaining in my last post may be taken to be null and void considering what I&#8217;m about to say next. But I stand by my position. The first time homebuyer tax credit is/was creating artificial spikes in home prices. All you have to do is look at how home sales and home [...]]]></description>
			<content:encoded><![CDATA[<p>Well all my complaining in my last post may be taken to be null and void considering what I&#8217;m about to say next. But I stand by my position. The first time homebuyer tax credit is/was creating artificial spikes in home prices. All you have to do is look at how home sales and home prices fell in December. But now we are part of the club. We are homeowners! And this is the main reason for my lack of posting for the last three months.</p>
<p>The homebuying experience was interesting and stressful and we learned some things to look out for next time. But we have closed! We are 75% moved. And lots of repairs and painting is under way. Hopefully I&#8217;ll be able to make smaller posts along the way as we fix some of the issues with the house and mold it into our vision. Now that I finally installed the Wordpress2 iPhone app that actually works with me self-hosted blog that will be easier!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulgarvin.net/blog/posts/105/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More homebuyer tax credits? No thanks!</title>
		<link>http://www.paulgarvin.net/blog/posts/100</link>
		<comments>http://www.paulgarvin.net/blog/posts/100#comments</comments>
		<pubDate>Wed, 28 Oct 2009 03:30:12 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.paulgarvin.net/blog/?p=100</guid>
		<description><![CDATA[You must be thinking &#8220;is this guy crazy?&#8221; An insentive for buying a house, who doesn&#8217;t want that? Well I don&#8217;t. And up until a week ago I was trying to take advantage of the current first time homebuyer tax credit. Key word there is trying. You see my wife and I have discovered there [...]]]></description>
			<content:encoded><![CDATA[<p>You must be thinking &#8220;is this guy crazy?&#8221; An insentive for buying a house, who doesn&#8217;t want that? Well I don&#8217;t. And up until a week ago I was trying to take advantage of the current first time homebuyer tax credit. Key word there is <em>trying</em>. You see my wife and I have discovered there is quite a lot of competition out there for homes in the &#8220;first time buyer price range.&#8221; And competition drives up prices. People are clamoring to take advantage of the credit. You would think that the credit would help. But in the end it hurts. </p>
<p>My wife and I aren&#8217;t the only ones to think so. There are <a href="http://bit.ly/15Vxf9">other articles</a> that also <a href="https://self-evident.org/?p=696">feel this is bad</a>. I will just tell our personal story. That all starts with a trip to the lawyers office. Our apartment lease doesn&#8217;t end until April 30th and if we closed on November 30th, the last day of the credit, we&#8217;d be on the hook for 5 months of rent. So half of the tax credit gone, straight away. The lawyer cut a deal with the apartment complex and we were off shopping. But we weren&#8217;t the only ones. Twice we ran into situations where agents had schedules showings for the same or overlapping times. Both times there wasn&#8217;t one other potential buyer there, but two! And both homes stayed on the market less than a week. We live in Pennsylvania, but the <a href="http://honeystartpacking.com/santa-clarita-real-estate/chasing-first-time-home-buyer-tax-credit/">same thing is happening in Santa Clarita, CA.<br />
</a><br />
We ended up making three offers in the span of two months. And we lost out on two of those offers. Both were at asking price! We had been watching lots of HGTV and none of those people payed asking! In one case there was an escalation clause involved! My agent was beside himself both times. So you may be asking, what happened to the third? We were under contract on that third house. The home inspection revealed a few big ticket items that needed to be addressed. And the homeowner didn&#8217;t want to give us any money towards repair. This homeowner was quite &#8220;hostile&#8221; during negotiations. But I also got a sense that they felt we could suck it up since we were getting free government money. Well it isn&#8217;t free if we have to use it to rebuild the falling garage we paid for.</p>
<p>This quote from the <a href="http://www.calculatedriskblog.com/2009/08/first-time-home-buyer-frenzy.html">Calculated Risk Blog</a> sums up the market situation nicely.</p>
<blockquote><p>This level of first-time buyers is completely unsustainable &#8211; even if another tax credit is enacted. There was significant pent up demand from potential first-time buyers who were priced out of the market in 2004-2006, and then were afraid to buy as prices fell. But demand from these buyers will wane.</p></blockquote>
<p>We were part of that pent up demand. Before the market &#8220;collapsed&#8221; we wondered if we would ever be able to afford a home. Well even after the collapse we still can&#8217;t apparently.</p>
<p>Here are some other points to ponder. Others have pointed out that a credit such as this, especially if it is extended to everyone, will raise the price of homes by that amount. And that is true. But who does that benefit? Not the buyer. If that $8,000 credit goes towards your down payment, and you put 10% down, that allows you to buy $80,000 more house. Although you were able to afford more house you have a larger mortgage. You have to pay some of that money back, compounded with interest. Your mortgage company likes that. Yeah those same guys that marketed their &#8220;toxic&#8221;, bound to fail mortgages to others, that got us into this whole mess. And we will all have to pay for this program via taxes. Meanwhile the seller just walked away with $80,000 more than they would have been able to get otherwise. Let&#8217;s not forget to mention the <a href="http://www.marketwatch.com/story/fraudsters-pluck-home-buyer-tax-credits-2009-10-23">people trying to defraud the system</a>. So write or call your senators and tell them no.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulgarvin.net/blog/posts/100/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Performance of static vs. instanciated method calls</title>
		<link>http://www.paulgarvin.net/blog/posts/92</link>
		<comments>http://www.paulgarvin.net/blog/posts/92#comments</comments>
		<pubDate>Fri, 14 Aug 2009 20:03:41 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.paulgarvin.net/blog/?p=92</guid>
		<description><![CDATA[As you saw in my past post I am working on filtering user input into my PHP application. I don&#8217;t want to get to much into the boring details because I started to write the post explaining all the little details and I could see it getting very long and drawn out and unfocused. But [...]]]></description>
			<content:encoded><![CDATA[<p>As you saw in my past post I am working on filtering user input into my PHP application. I don&#8217;t want to get to much into the boring details because I started to write the post explaining all the little details and I could see it getting very long and drawn out and unfocused. But I was experimenting with calling the filter functions as static methods of a class. Then I thought about making objects of the class and calling the method from the instantiated class. I wanted to know if there was a performance difference between the two so I created a test. And there is.</p>
<p>For the test I am using my Filter_UTF8 class, discussed a little in my last blog post. I am calling the validate method. This is not a &#8220;hello world&#8221; type of test. The method does some heavy lifting and/or calculating. For all the tests I would call the method 10,000 times, to validate a ~1,200 kB text file. The same file would be validated over and over again.</p>
<p>The first test was to use call_user_func_array to call the method. This took 10 to 11 seconds to run.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$iteration</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10000</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$iteration</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$ret</span> <span style="color: #339933;">=</span> <span style="color: #990000;">call_user_func_array</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Filter_UTF8'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'validate'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> 
        <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$text</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4096</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$i</span><span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Next was Creating object, calling the method, and then destroying the object. I did it this way because this simulates one of the common design pattern for doing filters, a collection object holds a bunch of filter instances for each value of the form. Then when &#8220;validation&#8221; is run each one is called to do it&#8217;s thing and then the form is processed and they are all destroyed once the form data is saved or it&#8217;s re-rendered. So each instance is created, run once, or twice if maybe you have a getMessage() type function, and they destroyed. I feel test is close to how the above design pattern would work on a large scale.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$iteration</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10000</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$iteration</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$my</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Filter_UTF8<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$ret</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$my</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">validate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$text</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4096</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$i</span><span style="color: #339933;">++;</span>
    <span style="color: #000088;">$my</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>The results were surprising. It took 33 seconds for this to run. Eeek!</p>
<p>I thought maybe the act of creating and destroying all those objects was causing the slowdown. So I created a third test that created one instance and calls the validate() method 10,000 times.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$iteration</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10000</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$my</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Filter_UTF8<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #000088;">$iteration</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$ret</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$my</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">validate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$text</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4096</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$i</span><span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>I was really surprised when this took the same 33 seconds as creating 10,000 instances did. The crappy thing is, creating a bunch of instances is easier than trying to manage calling them statically unless you want to type out each filter call in a bunch of if/else statements (I&#8217;m trying to do an automated form type of thing). I just can&#8217;t believe the performance difference. You wouldn&#8217;t notice the difference on each page hit, where you had 100 of these. But if your script had 100 people all doing the same thing at once that ends up being a big difference.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulgarvin.net/blog/posts/92/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UTF-8 Validation and PHP, do you?</title>
		<link>http://www.paulgarvin.net/blog/posts/84</link>
		<comments>http://www.paulgarvin.net/blog/posts/84#comments</comments>
		<pubDate>Thu, 13 Aug 2009 03:47:51 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.paulgarvin.net/blog/?p=84</guid>
		<description><![CDATA[I wonder why none of the major PHP frameworks have validators for UTF-8 encoding? You may be asking why do I need to validate incoming text as UTF-8? UTF-8 is the preferred character encoding for the web, if you want to display languages other than the Latin derived ones. All of the browsers support it. [...]]]></description>
			<content:encoded><![CDATA[<p>I wonder why none of the major PHP frameworks have validators for UTF-8 encoding? You may be asking why do I need to validate incoming text as UTF-8? UTF-8 is the preferred character encoding for the web, if you want to display languages other than the Latin derived ones. All of the browsers support it. And so do all the major databases. I won&#8217;t get into the basics about <a href="http://en.wikipedia.org/wiki/Utf-8">what UTF-8 is</a> and <a href="http://www.joelonsoftware.com/articles/Unicode.html">why you should use it</a>. There are plenty of other resources for that. I&#8217;m also going to assume you are sending the correct <em>charset</em> header (in HTTP, not relying on a <em>meta</em> tag). And that your DB tables and connections are declared to use UTF-8. That stuff <a href="http://www.varslashlog.com/2009/02/09/how-to-use-unicodeutf-8-in-php-properly-part-1/comment-page-1/">is</a> <a href="http://htmlpurifier.org/docs/enduser-utf8.html">well</a> <a href="http://developer.loftdigital.com/blog/php-utf-8-cheatsheet">covered</a> <a href="http://www.phpwact.org/php/i18n/utf-8">elsewhere</a> <a href="http://akrabat.com/2009/03/18/utf8-php-and-mysql/">also</a>.</p>
<p>I still haven&#8217;t really told you why you would want to validate incoming text as UTF-8, I&#8217;ve only told you why you should use it. And the simple answer is the old security mantras of <strong>all input is evil</strong> and <strong>Filter Input and Escape Output</strong>. If this text is input I want to be validating it, no? The <a href="http://www.w3.org/International/questions/qa-forms-utf-8">W3C recommends</a> that you validate UTF-8 text. <a href="http://www.phpwact.org/php/i18n/charsets#checking_utf-8_for_well_formedness">WACT does too</a>. It&#8217;s <a href="http://shiflett.org/blog/2006/jan/addslashes-versus-mysql-real-escape-string">been proven</a> that you can launch an XSS attack on a site using &#8220;incorrectly&#8221; encoded text. Chris&#8217; example used GBK encoding, but I think you can do the same thing with UTF-8. Is it immune?</p>
<p>I&#8217;ve been looking at a lot of example code looking for answers. The &#8220;major&#8221; PHP frameworks I looked at were <a href="http://framework.zend.com/">Zend Framework</a>, <a href="http://cakephp.org/">CakePHP</a>, <a href="http://www.symfony-project.org/">Symfony</a>, <a href="http://www.solarphp.com/">Solar</a>, <a href="http://codeigniter.com/">Codeigniter</a>, and <a href="http://www.kohanaphp.com/">Kohana</a>. None of them include any validators for UTF-8, or any other text encoding. I looked at some other smaller frameworks but they were lucky to have validators at all.</p>
<p>I also looked at a few of the big mainstream PHP projects. <a href="http://www.joomla.org/">Joomla</a>, <a href="http://www.mediawiki.org/">MediaWiki</a>, <a href="http://www.phpbb.com/">phpBB</a>, and <a href="http://wordpress.org/">Wordpress</a>. Of them Joomla contains the library PHP UTF-8 by <a href="http://www.sitepoint.com/articlelist/210/">Harry Fuecks</a>. The purpose of this library is to provide &#8220;native&#8221; PHP multibyte string functions when <em>mb_string</em> isn&#8217;t loaded on your server (and presumably you can&#8217;t do anything about it because you are on shared hosting). In the back of this library is a couple of functions, one actually validates UTF-8 and returns a true or false. The second converts UTF-8 to it&#8217;s Unicode code points, returned as an array. And the last converts that array back to UTF-8. The last two are used in the library&#8217;s <em>uft8_strtolower()</em> and <em>uft8_strtoupper()</em> functions, but is other wise unused by Joomla. The first function, called <em>utf8_is_valid()</em> is the one I am most interested in, and it is not used at all. Interestingly Kohana includes this same library, but they rearranged the files and function names, and stripped out the <em>utf8_is_valid()</em function all together.</p>
<p>MediaWiki and phpBB both use a set of functions to <a href="http://en.wikipedia.org/wiki/Unicode_normalization">Normalize</a> UTF-8 data strings. This goes beyond just validating the byte stream. It is also recommended to Normalize UTF-8 so it sorts properly and consistently, and that is probably why these two packages do it. Both, especially MediaWiki count on being able to search strings well. But it also seems to be compute intensive. For what it&#8217;s worth it appears phpBB borrowed MediaWiki&#8217;s code and refactored it.</p>
<p>The last of our quadruple, Wordpress, contains a function to do a basic validation if a stream is UTF-8. However it seems that in practice this seems to be more UTF-8 detection than it is validation. The function, called <em>seems_utf8()</em>, allows 5 and 6 byte sequences, which were apparently in the early UTF-8 versions, before the Unicode consortium decided to limit the code point range to U+10FFFF, making anything over 4 bytes unnecessary. It also does not check for the disallowed UTF-16 surrogate code points, or byte order marks. Those last two points are important because Windows, Java, and Oracle store text internally in UTF-16. So a botched conversion from one of these sources into the browser could send invalid text to your PHP application. I don&#8217;t know the ins and outs of copy and pasting from one of these sources to a browser. I assume a conversion happens but don&#8217;t know where.</p>
<p>Getting back to the utf8_is_valid() function in PHP UTF-8, this is essentially what I have in mind for my CMS. The code in that function comes from another <a href="http://hsivonen.iki.fi/php-utf8/">small library</a> written by <a href="http://hsivonen.iki.fi/">Henri Sivonen</a> of <a href="http://validator.nu/">validator.nu</a> fame. He provides a function to convert a UFT-8 string to Unicode code points, returned in an array, and another one to convert the array to a UTF-8 string. Sound familiar? This is where the PHP UTF-8 library got it&#8217;s code that does the same thing. I stumbled onto this library through the WACT site, and ended up coding essentially the same thing Harry Fuecks did. I also made a &#8220;sanitizer&#8221; version that &#8220;deconstructs&#8221; the byte stream and throws out all the bad byte sequences without the intermediate point of the array. It just concatenates the good byte sequences int a new string.</p>
<p>I haven&#8217;t gotten into the functions PHP natively provides for checking and converting character encodings. But this post is long enough so that will have to wait until another day. So for anyone in the PHP community lucky or unlucky enough to read this post, should we be validating strings to make sure they are in the encoding we think they are in?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulgarvin.net/blog/posts/84/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>An idea and a setback</title>
		<link>http://www.paulgarvin.net/blog/posts/80</link>
		<comments>http://www.paulgarvin.net/blog/posts/80#comments</comments>
		<pubDate>Wed, 29 Jul 2009 03:51:44 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.paulgarvin.net/blog/?p=80</guid>
		<description><![CDATA[I&#8217;ve had an idea. I&#8217;ve been having lots of ideas lately but this one has been in my head for a while. There are lots of Content Management Systems or CMS&#8217; out there, software that you use to build and maintain a website. They come in all shapes, sizes, and complexities. I have observed there [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had an idea. I&#8217;ve been having lots of ideas lately but this one has been in my head for a while. There are lots of <a href="http://en.wikipedia.org/wiki/Content_management_system">Content Management Systems</a> or CMS&#8217; out there, software that you use to build and maintain a website. They come in all shapes, sizes, and complexities. I have observed there is a missing niche among all of these CMS&#8217;. Something that is simple to use for non-computer people, and offer the basics without going overboard with complexity or features. This <a href="http://wordpress.org/">Wordpress</a> blog I&#8217;m typing on now is a good example. In fact Wordpress has become very popular as a CMS for small websites where you just need to make a few pages.</p>
<p>That is where my inspiration came from. Our <a href="http://www.phillyscca.com/">SCCA webpage</a> could use a CMS like that. And a friend of mine runs a <a href="http://www.valleycreekproductions.com/">videography business</a> where he wants to be able to update his site frequently. You could just use Wordpress for these sites, but why drag along all the blog oriented code when you aren&#8217;t going to use it. Plus I believe Wordpress could use a good tune-up. It is still written for the <a href="http://www.php.net/archive/2007.php#2007-07-13-1">no-longer-supported PHP4</a>.</p>
<p>So I started writing my own little CMS in my spare time. It&#8217;s very slow going. It&#8217;s hard to get something really going when you are doing it two hours at a time. and of course I&#8217;ve been running into some snags and doing a lot of learning. One of those snags turned out to be database access. I saw that I would be writing a bunch of similar queries. So I wrote a lightweight database abstraction layer to automate some of that SQL creation. This database layer is based on PHP5&#8217;s <a href="http://www.php.net/manual/en/book.pdo.php">PDO</a>, meaning it has an object oriented interface and I can use it to connect to many different databases, assuming the SQL I write is compatible.</p>
<p>I don&#8217;t want to re-invent the wheel so I looked at two frameworks that do something similar, <a href="http://framework.zend.com/manual/en/zend.db.html">Zend_Db</a> and <a href="http://www.solarphp.com/class/Solar_Sql">Solar_Sql</a> for ideas. They both take a different approach on how to handle prepared statements and how to pass the data into them. I tried to take the middle road and support both. The solution which I came up with, I recently found out won&#8217;t work. So I&#8217;ve got to give it a big re-think. It&#8217;s thing like this that are slowing the project down. Plus the stop-starting from lack of time. I didn&#8217;t want to talk too much about this project until it was more together. but based on this &#8220;little&#8221; setback I realized that it&#8217;s going to take a lot longer then I hoped for this thing to see the light of day. So I might as well talk about it online. I certainly haven&#8217;t been autocrossing this summer. <img src='http://www.paulgarvin.net/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulgarvin.net/blog/posts/80/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slowly moving from Windows to Linux</title>
		<link>http://www.paulgarvin.net/blog/posts/70</link>
		<comments>http://www.paulgarvin.net/blog/posts/70#comments</comments>
		<pubDate>Mon, 06 Jul 2009 02:42:57 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.paulgarvin.net/blog/?p=70</guid>
		<description><![CDATA[This isn&#8217;t another &#8220;I just tried out Linux and it&#8217;s&#8230;&#8221; blog post. I&#8217;ve played with Linux off and on since 1998. Back then I ran a webserver off a &#8220;lunchbox&#8221; Sun SPARCstation I bought at a computer fair for $40. Over the last 10+ years has gone from &#8220;can&#8217;t get the sound working, I give [...]]]></description>
			<content:encoded><![CDATA[<p>This isn&#8217;t another &#8220;I just tried out Linux and it&#8217;s&#8230;&#8221; blog post. I&#8217;ve played with <a href="http://en.wikipedia.org/wiki/Linux">Linux</a> off and on since 1998. Back then I ran a webserver off a <a href="http://en.wikipedia.org/wiki/SPARCstation#.22Lunchbox.22_systems">&#8220;lunchbox&#8221; Sun SPARCstation</a> I bought at a computer fair for $40. Over the last 10+ years has gone from &#8220;can&#8217;t get the sound working, I give up&#8221; to &#8220;I&#8217;ve got just about everything I need&#8221;. This blog post will follow that journey a bit, and serve for a precursor to more computer related blog posts.</p>
<p>As I mentioned my first experience with Linux was to scratch an itch to run my own webserver out of my bedroom. This was in the days of <a href="http://en.wikipedia.org/wiki/Windows_98">Windows 98</a>. I don&#8217;t remember exactly why I decided to find an old computer and do the Linux thing vs using Microsoft&#8217;s Personal Web Server. I didn&#8217;t do the hosting thing b/c I was a poor college student. Maybe it&#8217;s because I had a job that forced me to work on Unix and I did some webpage creation there. But I managed to get everything working and through the magic of <a href="https://www.dyndns.com/">DynDNS</a> ran a website for my cover band out of my bedroom over a <a href="http://en.wikipedia.org/wiki/Digital_subscriber_line">DSL</a> connection.</p>
<p>Because I ended up with such weird hardware there were only so many distributions that I could use. I ended up with <a href="http://www.debian.org/">Debian</a>. The thing I remember most is the ability to browse the many &#8220;packages&#8221; of software available online and then install it by typing in a command. This was or would become the <i><a href="http://en.wikipedia.org/wiki/Apt-get">apt-get</a></i> command that I think helps make Ubuntu so popular today.</p>
<p>Fast forward to after college and I tried Linux on a PC computer. I basically wanted to play, and see where Linux was at compared to Windows. I looked around at the the various distributions available. I wanted one with a <a href="http://en.wikipedia.org/wiki/Desktop_environment">Desktop Environment</a>. Last time I used mostly used the command line. I did have <i><a href="http://www.icewm.org/">Ice Window Manager</a></i> but that was pretty basic.</p>
<p>I decided on <a href="http://www.slackware.com/">Slackware</a>. It had a reputation of having a rock solid basic system. And all of the packages were layed out in a modular and sensible manner. The hot Desktop Environment at the time was <a href="http://www.kde.org/">KDE</a> so that is what I tried. I thought it looked better than <a href="http://www.gnome.org/">GNOME</a> (this was 2002/3). I got the software installed OK and booted into Linux and started up KDE. But I could not get sound working. I tried a couple different things but never got it working. Being a music fan That was a non-starter for me so I deleted the partition and went back to Windows.</p>
<p>Three year later that computer was getting old and slow. I got a &#8220;new&#8221; computer through work. Actually it was a computer work didn&#8217;t need anymore and they were auctioning them off for charity. It was a good deal and at least newer and faster than what I had. One problem is that it came with <a href="http://en.wikipedia.org/wiki/Windows_2000">Windows 2000</a>, which wasn&#8217;t cutting it anymore once you where used to XP. But this was the era of <a href="http://en.wikipedia.org/wiki/Windows_Genuine_Advantage">Windows Genuine Advantage</a> and I didn&#8217;t want to pay for what Microsoft wanted for a license of <a href="http://en.wikipedia.org/wiki/Windows_xp">XP</a> and I didn&#8217;t want to bother with cracks and patches to get around WGA. In comes Linux again and this hot newcomer distribution <a href="http://www.ubuntu.com/">Ubuntu</a>.</p>
<p>Ubuntu was pretty slick, and I can see why it was gaining so much traction as the go-to distribution for desktop Linux. But there was a few things that annoyed me. The biggest is the lack of codecs to play mp3s and various &#8220;non-free&#8221; audio &#038; video formats, the biggest being Microsoft&#8217;s <a href="http://en.wikipedia.org/wiki/Windows_Media_Audio">wma</a> &#038; <a href="http://en.wikipedia.org/wiki/Windows_Media_Video">wmv</a> formats. Now I understand the ideal of promoting open source formats like Ogg <a href="http://en.wikipedia.org/wiki/Ogg_vorbis">Vorbis</a> &#038; <a href="http://en.wikipedia.org/wiki/Ogg_theora">Theora</a> but having to go to search Google &#038; Ubuntu Forums for answers and then go to third party sites to get the codecs is just going to drive potential users away. And those codecs were full of problems. There were several wma videos I tried watching and they just wouldn&#8217;t work or would freeze. I had problems with avi files too. I also had major problems with <a href="http://en.wikipedia.org/wiki/Java_(programming_language)">Java</a>. Never got it working. I tried downloading/installing packages from Sun and the official ones from Ubuntu. Never worked. Irene wasn&#8217;t crazy about using it and after a few months of use I found a deal that was too good to pass up.</p>
<p>The deal was on a refurbished HP. Core2Duo processor, 2GB RAM, 320 GB HD, $300. And of course it came with Windows <a href="http://en.wikipedia.org/wiki/Vista">Vista</a>. I was a little apprehensive about Vista since i heard mixed review about it. Getting the computer and firing it up, on one hand it was pretty, on the other hand it seemed slow to boot, login, and whenever the <i><a href="http://en.wikipedia.org/wiki/User_Account_Control">User Account Control</a></i> stepped it. Now first off people all over the net have lambasted UAC. I don&#8217;t have a problem with it being there and how it works. My only problem is that it is so slow to operate, and that there are two different screens that can show up, which can lead to some confusion. Why did Microsoft even waste the time to develop two different screens that do the same thing?</p>
<p>The slow boot and login thing got to be so excruciatingly bad that is what ultimately forced me back to Linux. I searched and searched online and tried to use some &#8220;boot performance monitor&#8221; thing that Microsoft built in all to no avail. I have no idea why the bootup was so slow but the login was slow because of the stupid <a href="http://en.wikipedia.org/wiki/Windows_search">Windows Search</a> thing that would thrash my HD looking for who-knows-what everytime I tried to login, making my system unresponsive. Worst yet <a href="http://en.wikipedia.org/wiki/Windows_Media_Player">Windows Media Player</a> would get in on the act and start doing something in the background, making it so that if you actually tried to use WMP it would not start up because it was already started as a background process. That one turned out to be a bug. If you turned off the Windows Search thing, which probably involved a registry edit, it would cripple the start menu features that were new in Vista.</p>
<p>Another big Vista gripe of mine is the new <a href="http://en.wikipedia.org/wiki/Windows_Explorer">Explorer</a> interface. The new way of doing the address bar is cool, but why did you take away my toolbar buttons? Especially the &#8220;up&#8221; button? Even further is why did you take not even put a comparability mode in so we could go back to an XP like Explorer if we wanted to? And how could you have screwed up to algorithm that decided which Explorer view to show? Just about all my folders ended up with the picture view. That was another registry hack to fix that one. Service Pack 1 seemed to have fixed the booting and login speed issues some but by then I had thrown in the towel. Speaking of SP1 for some reason it never asked me to download it. I read that it was out in an article a couple of months after the fact. Thanks MS, I didn&#8217;t really want those updates!</p>
<p>So now I spend most of my time in <a href="http://www.xubuntu.org/">Xubuntu</a>, which is a community developed version of Ubuntu with the GNOME desktop replaced with XFCE. XFCE is know for being &#8220;lightweight&#8221;, which means it uses less RAM and is more responsive. And it uses <a href="http://www.gtk.org/">GTK+</a> at it&#8217;s core, which is what GNOME uses at it&#8217;s base as well. GNOME is a layer on top of GTK. So as long as a program isn&#8217;t built for KDE, it will run and look good in XFCE. Ubuntu has been improved since my last try. Java worked out of the box. There still wasn&#8217;t included non-free codecs but getting them was easier this time around and they work so much better. My printer, my camera, my video camera all pretty much worked out of the box.</p>
<p>Running Linux has also given me the ability to play with compiling programs. I have compiled Linus Torvalds&#8217; <a href="http://git-scm.com/">Git</a> source code management software and started playing around with that. And I complied my own version of my favorite editor, <a href="http://www.vim.org/">VIM</a>. The stock Ubuntu one came with Perl, Python, and Ruby integrations that I was never going to use. And I was able to compile a few of the <a href="http://www.php.net/archive/2009.php#id2009-06-30-1">PHP 5.3</a> betas and release candidates. So I got an early sneak peak at some of the new features at work.</p>
<p>There is still some learning to do and some growing pains to working on Linux. But it seems at times that it&#8217;s easier to get answers, or you can look at a configuration file and see what it&#8217;s doing. I&#8217;ve even looked at some C source code to see how something works. And that&#8217;s neat. Though that could be the geek in me talking.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulgarvin.net/blog/posts/70/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back on the Horse</title>
		<link>http://www.paulgarvin.net/blog/posts/67</link>
		<comments>http://www.paulgarvin.net/blog/posts/67#comments</comments>
		<pubDate>Fri, 19 Jun 2009 15:20:47 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Autocross]]></category>
		<category><![CDATA[Miata]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Prelude]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.paulgarvin.net/blog/?p=67</guid>
		<description><![CDATA[September. Damn that seems like a long time ago, because well it was. And a lot has happened since then. For one I&#8217;m married now. There is not much to blog about atucrossing over the winter b/c there really isn&#8217;t much autocrossing over the winter. Philly region does have a winter series but I didn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>September. Damn that seems like a long time ago, because well it was. And a lot has happened since then. For one I&#8217;m married now. There is not much to blog about atucrossing over the winter b/c there really isn&#8217;t much autocrossing over the winter. Philly region does have a winter series but I didn&#8217;t attend it b/c my Miata got rear-ended and subseqently totaled out by the insurance co. That was obviously a big bummer b/c I was looking forward to really tuning the car this year and bridging the gap to the CRXs.</p>
<p>And Irene and I decided to get rid of the Prelude. It was just getting two high in mileage. So that is two cars gone over the winter. We did get something cool to replace the Prelude though, a Mazdaspeed3. We both like th car a lot. S-plan pricing really made it a good deal.</p>
<p>Initially I was going to find another Miata shell this spring and swap everything over. But I decided to put that on hold till next year so we can focus on finding a house. The government is holding this $8,000 tax credit carrot in front of our noses and we&#8217;d be stupid to not try and take advantage of it. So there hasn&#8217;t been much to report on the car front. I have done a few autocrosses in the Mazdaspeed3. But I&#8217;ve also missed a bunch.</p>
<p>So because of all that stuff, and there was some crappy medical stuff going one over the winter, that I haven&#8217;t been posting. I&#8217;ve realized of late that there is a lot of other stuff I could be posting about other than cars and autocrossing. I don&#8217;t like putting to much personal life stuff up on a public blog. But I have been getting more interested in what is happening in politics, or more like what the current President and congress are doing to &#8220;fix the economy&#8221;. For the record I don&#8217;t like it, which is why I feel I should be writing about it. In addition there is the real possibility of &#8220;carbon cap &#038; trade&#8221; coming to this country now. I have some strong opinions on that since I work in the utility industry. Specifically I don&#8217;t like it.</p>
<p>I have also been messing around with computers more lately. I got really fed up with Vista and tried Linux again. There is at least one future blog post in that story. I have also been messing around with trying to write a small CMS for websites. It is going very slowly since I can only dedicate an hour or two each day to it. IT is very rewarding though and I could see myself doing that for a living if I was to find a way to change careers w/o a drop in pay (yeah right!). And I have been doing more unique stuff with the 3D design software we use in work, Autodesk Inventor. There are some potential blog posts waiting to come out of that experience.</p>
<p>So now that I&#8217;ve made the excuse post and gotten back on the horse let&#8217;s hope I can me more active on this thing again.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulgarvin.net/blog/posts/67/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2008 Philly Events #9&amp;10</title>
		<link>http://www.paulgarvin.net/blog/posts/61</link>
		<comments>http://www.paulgarvin.net/blog/posts/61#comments</comments>
		<pubDate>Tue, 30 Sep 2008 22:25:22 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Autocross]]></category>
		<category><![CDATA[Miata]]></category>

		<guid isPermaLink="false">http://www.paulgarvin.net/blog/?p=61</guid>
		<description><![CDATA[Not much has been happening on the autocross front for me lately with the wedding only days away now. I missed Philly Event #8 at Warminster because Irene and I had too much on our todo list for that weekend. Doug borrowed the car and won STS2 with it again. His time was impressively close [...]]]></description>
			<content:encoded><![CDATA[<p>Not much has been happening on the autocross front for me lately with the wedding only days away now. I missed Philly Event #8 at Warminster because Irene and I had too much on our todo list for that weekend. Doug borrowed the car and won STS2 with it again. His time was impressively close to perenial front runners Scott in an STS Civic and Cy in an STX Civic. Doug also confirmed that turning down the front shocks helped the car at Warminster.</p>
<p>Event #9 was at Boeing on September 7th. Really no need for a race report there. The Boeing courses are always a compromise and this event was no different. There was a very tight hairpin built in that I was downshifting to first for on most of my runs. Most of us STS2&#8242;ers tried it both ways and there really wasn&#8217;t an advantage to either. I drove well enough to not be crappy but not up to my expectations. I ended the day 4th out of 7 in class, 0.5 seconds out of 1st. My PAX ranking was 16 out of 67.</p>
<p>Event #10 was a Warminster event that I wasn&#8217;t sure I was going to make. I could use the fun and relaxation of thrashing the car about but our wedding todo list was still high. Irene and I kicked butt on Friday and Saturday so I woke up early on Sunday and headed over to Warminster as a walk-up entrant. Normally Warminster events are pretty busy and hectic for the chiefs because it draws large numbers of entrants. My plan was to show up, work a normal shift, run, then split. This event turned out to be pretty low key due to the fact that it rained all weekend. Doug texted me as I was leaving to say that he was sick and wouldn&#8217;t be making it. I thought about bagging it since I hadn&#8217;t pre-registered but I wasn&#8217;t going to let the rain spoil my fun.</p>
<p>The course was FAST and the Miata handled great in the rain as it had before. I had the front shocks turned down 5/8 of a turn from full stiff. Each bump on the Koni Sport adjust is 1/8 of a turn. Although steady state cornering and braking grip was lower from the rain the transitional grip was unbelievable. And you needed it. There were 2 very fast slalom sections were I just below the limiter in 2nd. My times didn&#8217;t bear out how I thought I was driving though. I ended up dead last out of 4 in class. The course ended up being kind of cone intensive due to the reduced grip and a couple of right angle boxes and I was no exception to that. But even if you discount the cones I still wouldn&#8217;t have moved up. Boo. <img src='http://www.paulgarvin.net/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  I was 27th out of 80 in PAX.</p>
<p>There won&#8217;t be a whole lot of activity in the coming months. I&#8217;ll be off on my Honeymoon for 2 weeks. After that there are just two Boeing events, and maybe some NNJR ones to attend. Then the long break for the winter holidays. No word on a possible winter series yet. I am looking forward to getting some much needed work done on the car over the off season. Details to come when I actually get around to doing it. For now I leave you with an action shot snapped by <a href="http://flickr.com/photos/bobthephotog/">Bob McMillan</a>.<br />
<img src="http://farm4.static.flickr.com/3097/2897432784_850db4e785.jpg?v=0" alt="Rainy Warminster Action Shot" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulgarvin.net/blog/posts/61/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Update yr Softwares</title>
		<link>http://www.paulgarvin.net/blog/posts/59</link>
		<comments>http://www.paulgarvin.net/blog/posts/59#comments</comments>
		<pubDate>Mon, 25 Aug 2008 20:32:27 +0000</pubDate>
		<dc:creator>Paul</dc:creator>
				<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.paulgarvin.net/blog/?p=59</guid>
		<description><![CDATA[In my last post I mentioned I was updating some software. At work we use Autodesk Inventor 2008 for our 3D design &#038; modeling. I was applying Service Packs 1 &#038; 2 to that and the AutoCAD that comes bundled with Inventor. I am the CAD manager for my small little group and had disributed [...]]]></description>
			<content:encoded><![CDATA[<p>In my last post I mentioned I was updating some software. At work we use <a href="http://usa.autodesk.com/adsk/servlet/index?siteID=123112&#038;id=4246282">Autodesk Inventor</a> 2008 for our 3D design &#038; modeling. I was applying Service Packs 1 &#038; 2 to that and the AutoCAD that comes bundled with Inventor. I am the CAD manager for my small little group and had disributed the service packs to the other users and managed not to install them for myself. <img src='http://www.paulgarvin.net/blog/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' />  After the program kept crashing while trying to a simple task I decided to check for hot fixes for the issue. That is when I realized that I wasn&#8217;t up to date with the service packs. And wouldn&#8217;t you know it after updating the problem went away. Stay up to date people.</p>
<p>Shortly thereafter, and now at home, my Windows XP laptop told me that Service Pack 3 was availible and it would like to update it. Service Pack 2 for Win XP included a lot of big changes so I did some Google searches and read around at <a href="http://www.winsupersite.com/">winsupersite.com</a> about it first. There isn&#8217;t any drastic changes in it, mostly a round up of hot fixes. But one unintended side effect is that the update wiped out my patched uxtheme.dll file. No more custom skins until I re-patch it, which I haven&#8217;t yet. Also when it rebooted with Win95 looking windows I went into the display properties and reset the <em>Theme</em> back to WinXP. What I should have done is reset the <em>Apperance</em> because resetting the Theme cleared out my custom icons. And my trial of Icon Packager was up a long time ago. So I&#8217;m back to a stock looking WinXP for a while. Boo. Hopefully someone else reads this and doesn&#8217;t make the same mistake.</p>
<p>And speaking of updates there is two pckages of software I like to use on my Windows computers that always seem to have updates. To the point where it is annoying. <a href="http://filezilla-project.org/">Filezilla</a> (an FTP client) and <a href="http://www.getpaint.net/">Paint.NET</a> (a lighweight graphics program). It seems like everytime I go to use these programs there is an update availible. Can&#8217;t you limit this to once every three months or something. Both come with one click updaters which is nice. Filezilla&#8217;s update is fairly quick and painless. But Paint.NET&#8217;s takes forever. It&#8217;s always stuck on &#8220;Optimizing for your computer&#8221;. What does it have to optimize for 5 minutes? It&#8217;s a 3 or 4 meg program. Must be related to the .NET framework.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulgarvin.net/blog/posts/59/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
