<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Trevor Fitzgerald</title>
	
	<link>http://trevorfitzgerald.com</link>
	<description>Custom Web Developer</description>
	<lastBuildDate>Wed, 03 Mar 2010 14:43:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1-RC1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TrevorFitzgerald" /><feedburner:info uri="trevorfitzgerald" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Introducing Earthly WordPress Theme</title>
		<link>http://feedproxy.google.com/~r/TrevorFitzgerald/~3/zjfxR0QsH7Q/</link>
		<comments>http://trevorfitzgerald.com/introducing-earthly-wordpress-theme/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 14:43:58 +0000</pubDate>
		<dc:creator>Trevor Fitzgerald</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://trevorfitzgerald.com/?p=755</guid>
		<description><![CDATA[Based on my first WordPress theme, Crispp, Earthly incorporates a color scheme designed for sites that require an eco-friendly or earthy theme.
Features

100% Free
Consistent styling across all major browsers (even Internet Explorer 6!)
Fully widgetized. You can change the sidebar and footer content however you would like.
Separate administrative section in the WordPress dashboard gives you control over [...]]]></description>
			<content:encoded><![CDATA[<div class="emphasize">Based on my first WordPress theme, <a rel="nofollow" href="/crispp-wordpress-theme/">Crispp</a>, Earthly incorporates a color scheme designed for sites that require an eco-friendly or earthy theme.</div>
<h3>Features</h3>
<ul>
<li>100% Free</li>
<li>Consistent styling across all major browsers (even Internet Explorer 6!)</li>
<li>Fully widgetized. You can change the sidebar and footer content however you would like.</li>
<li>Separate administrative section in the WordPress dashboard gives you control over the links to the social networks in the header and the search box default value.</li>
<li>Built-in support for threaded comments.</li>
<li>Optimized for YouTube video embeds. Videos will be resized to fill in the width of the content section automatically.</li>
</ul>
<p>Take a look for yourself!</p>
<h3>Screenshot</h3>
<p><img class="alignnone size-full wp-image-788" title="earthly-1" src="http://trevorfitzgerald.com/files/earthly-1.png" alt="" width="530" height="1011" /></p>
<h3>Live Demo</h3>
<p>Want to play around with it and see for yourself?</p>
<p>You can access a live demo of the site here: <a rel="nofollow" href="http://earthly.dev.trevorfitzgerald.com/" target="_blank">Live Demo</a></p>
<h3>Download</h3>
<p>You can download the latest version of Earthly here: <a rel="nofollow" href="http://earthly.dev.trevorfitzgerald.com/earthly.zip">Download Earthly</a></p>
<h3>Furthermore</h3>
<p>Are you using Earthly on your site? Please let me know in the comments!  Also feel free to post questions or comments.</p>
<img src="http://feeds.feedburner.com/~r/TrevorFitzgerald/~4/zjfxR0QsH7Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorfitzgerald.com/introducing-earthly-wordpress-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorfitzgerald.com/introducing-earthly-wordpress-theme/</feedburner:origLink></item>
		<item>
		<title>YouTube Resizer jQuery Plugin</title>
		<link>http://feedproxy.google.com/~r/TrevorFitzgerald/~3/BXSP2hYDS18/</link>
		<comments>http://trevorfitzgerald.com/youtube-resizer-jquery-plugin/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 09:30:25 +0000</pubDate>
		<dc:creator>Trevor Fitzgerald</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://trevorfitzgerald.com/?p=725</guid>
		<description><![CDATA[The jQuery YouTube Resizer plugin automatically resizes embedded videos to fill up the entire content space. It expands the video if the content area is larger and contracts if it is smaller.
My first jQuery plugin is now available for download. After using the JavaScript framework for a couple of years, I started getting curious of [...]]]></description>
			<content:encoded><![CDATA[<div class="emphasize">The jQuery YouTube Resizer plugin automatically resizes embedded videos to fill up the entire content space. It expands the video if the content area is larger and contracts if it is smaller.</div>
<p>My first jQuery plugin is now available for download. After using the JavaScript framework for a couple of years, I started getting curious of what it takes to write a plugin for it.  I was happy I finally got to read more of the developer documentation and look into more advanced jQuery implementations.</p>
<h3>What does it do</h3>
<p>The YouTube Embedded Video Resizer will automatically resize videos that you embed onto your page so that it actually looks like the video was designed to fill the space.  If you just copy &#038; paste the embed code that YouTube provides, you&#8217;ll often have a video that only partially fills your content space and looks out of place.</p>
<h3>Demo &#038; Download</h3>
<p>Click here to check out the plugin for yourself: <a rel="nofollow" href="http://youtube.dev.trevorfitzgerald.com/" target="_blank">YouTube Embedded Video Resizer</a></p>
<h3>Furthermore</h3>
<p>There are use instructions provided on the demo page that demonstrate how to use the plugin on your own site.</p>
<p>Are you using it on your own site? Do you have any questions or feedback? Let me know in the comments.</p>
<img src="http://feeds.feedburner.com/~r/TrevorFitzgerald/~4/BXSP2hYDS18" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorfitzgerald.com/youtube-resizer-jquery-plugin/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://trevorfitzgerald.com/youtube-resizer-jquery-plugin/</feedburner:origLink></item>
		<item>
		<title>Why do companies use noreply email addresses?</title>
		<link>http://feedproxy.google.com/~r/TrevorFitzgerald/~3/FLSiBU00oao/</link>
		<comments>http://trevorfitzgerald.com/why-do-companies-use-noreply-email-addresses/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 21:07:38 +0000</pubDate>
		<dc:creator>Trevor Fitzgerald</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://trevorfitzgerald.com/?p=693</guid>
		<description><![CDATA[We all get them.  When you sign up for a new account somewhere, you&#8217;re sent a welcome email.  After you order something, you&#8217;re sent a receipt.  Company newsletters are sent to advertise new services or products.  But why do they all get sent from &#8220;noreply@company.com&#8221;?
Why do companies consistently use a from [...]]]></description>
			<content:encoded><![CDATA[<div class="emphasize">We all get them.  When you sign up for a new account somewhere, you&#8217;re sent a welcome email.  After you order something, you&#8217;re sent a receipt.  Company newsletters are sent to advertise new services or products.  But why do they all get sent from &#8220;<em>noreply</em>@company.com&#8221;?</div>
<p>Why do companies consistently use a from address of &#8220;noreply@&#8230;com&#8221; when sending out automated emails?  Often inside the message, you&#8217;ll find something along the lines of this:</p>
<p><strong>&#8220;Do not reply to this email. All replies go to an unmonitored mailbox.&#8221;</strong></p>
<p>Instead, what if the emails came from a customer service associate?  If you had a problem with your order, all you would have to do is hit reply and start typing.  Your emails would be sent to a real person who could assist you.  But instead of taking this more personalized approach, they come across as robots.</p>
<p>In my opinion, this is a big usability and marketing mistake. Companies should make it as easy as possible for their customers to engage them.</p>
<p>I just did a quick search through my inbox looking for emails coming from &#8220;noreply&#8221; and found just a few of the biggest offenders. Take a look at these:</p>
<ul>
<li><a rel="nofollow" href="http://rackspace.com">Rackspace</a> &#8211; I&#8217;m probably the most surprised with this one</li>
<li><a rel="nofollow" href="http://paypal.com">PayPal</a></li>
<li><a rel="nofollow" href="https://payments.amazon.com/">Amazon Payments</a></li>
<li><a rel="nofollow" href="http://checkout.google.com/">Google Checkout</a></li>
<li><a rel="nofollow" href="http://overstock.com">Overstock</a></li>
<li><a rel="nofollow" href="http://usbank.com">US Bank</a></li>
<li><a rel="nofollow" href="http://schwab.com">Charles Schwab</a></li>
<li><a rel="nofollow" href="http://moo.com">Moo.com</a></li>
</ul>
<h3>Solution</h3>
<p>Don&#8217;t use noreply email addresses.  At the very least, have them sent to a distribution list where the right people in your organization can monitor the feedback.  It can even be tied into a ticketing system to keep things organized.  Whenever somebody replies, it will automatically create a ticket in your internal system so your team can keep track of feedback and respond accordingly.</p>
<p>What do you think? Leave a comment or let me know by sending a quick note to <strong>noreply@trevorfitzgerald.com</strong>. (Please note that is an unmonitored mailbox and emails will not be read.)</p>
<img src="http://feeds.feedburner.com/~r/TrevorFitzgerald/~4/FLSiBU00oao" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorfitzgerald.com/why-do-companies-use-noreply-email-addresses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorfitzgerald.com/why-do-companies-use-noreply-email-addresses/</feedburner:origLink></item>
		<item>
		<title>Introducing Crispp WordPress Theme</title>
		<link>http://feedproxy.google.com/~r/TrevorFitzgerald/~3/W72Vcdv0qPs/</link>
		<comments>http://trevorfitzgerald.com/crispp-wordpress-theme/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 02:09:29 +0000</pubDate>
		<dc:creator>Trevor Fitzgerald</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://trevorfitzgerald.com/?p=666</guid>
		<description><![CDATA[Crispp is a minimal theme with clean lines that lets your visitors focus on your content. It&#8217;s simple to integrate and use.
I just developed a WordPress theme that I would like to release into the wild.  It&#8217;s been a while since I&#8217;ve released any WordPress code so I thought I&#8217;d get back into the [...]]]></description>
			<content:encoded><![CDATA[<div class="emphasize">Crispp is a minimal theme with clean lines that lets your visitors focus on your content. It&#8217;s simple to integrate and use.</div>
<p>I just developed a WordPress theme that I would like to release into the wild.  It&#8217;s been a while since I&#8217;ve released any WordPress code so I thought I&#8217;d get back into the swing of things.</p>
<p>I&#8217;ve named it <strong>Crispp</strong>. I wanted something that was simple, clean, &amp; modern.  I believe this theme fits the bill.  It was inspired in part by the incredibly awesome <a rel="nofollow" href="http://theoatmeal.com/">theoatmeal.com</a>.</p>
<h3>Features</h3>
<ul>
<li>100% Free</li>
<li>Consistent styling across all major browsers (even Internet Explorer 6!)</li>
<li>No images are used for the layout of the site. Everything can be changed by simply modifying the stylesheet.</li>
<li>Fully widgetized. You can change the sidebar and footer content however you would like.</li>
<li>Separate administrative section in the WordPress dashboard gives you control over the visual aspects of your site.</li>
<li>Introduction box on homepage can be customized to your own text.</li>
<li>Build-in support for threaded comments.</li>
<li>Optimized for YouTube video embeds. Videos will be resized to fill in the width of the content section automatically.</li>
<li>WordPress 2.9 compatible</li>
</ul>
<p>Take a look for yourself!</p>
<h3>Screenshots</h3>
<div id="attachment_674" class="wp-caption alignnone" style="width: 535px"><img class="size-full wp-image-674" title="crispp-1" src="http://trevorfitzgerald.com/files/crispp-1.png" alt="The Crispp WordPress theme" width="525" height="340" /><p class="wp-caption-text">The Crispp WordPress theme (shown with the light color scheme)</p></div>
<div id="attachment_680" class="wp-caption alignnone" style="width: 535px"><img src="http://trevorfitzgerald.com/files/crispp-6.png" alt="Homepage (shown with dark color scheme)" title="Crispp Homepage" width="525" height="340" class="size-full wp-image-680" /><p class="wp-caption-text">Homepage (shown with dark color scheme)</p></div>
<div id="attachment_672" class="wp-caption alignnone" style="width: 535px"><img src="http://trevorfitzgerald.com/files/crispp-2.png" alt="The intro box is fully customizable for your own content" title="Homepage Intro Text" width="525" height="137" class="size-full wp-image-672" /><p class="wp-caption-text">The intro box is fully customizable for your own content</p></div>
<div id="attachment_671" class="wp-caption alignnone" style="width: 535px"><img src="http://trevorfitzgerald.com/files/crispp-3.png" alt="Blog post dates are offset to add visual appeal to the site." title="Post Titles" width="525" height="219" class="size-full wp-image-671" /><p class="wp-caption-text">Blog post dates are offset to add visual appeal to the site.</p></div>
<div id="attachment_691" class="wp-caption alignnone" style="width: 535px"><img src="http://trevorfitzgerald.com/files/crispp-8.png" alt="Threaded commenting is built in to the theme. Much focus was placed on comment styling and layout." title="Crispp Threaded Comments" width="525" height="290" class="size-full wp-image-691" /><p class="wp-caption-text">Threaded commenting is built in to the theme. Much focus was placed on comment styling and layout.</p></div>
<div id="attachment_689" class="wp-caption alignnone" style="width: 535px"><img src="http://trevorfitzgerald.com/files/crispp-7.png" alt="The comment form offers a visually appealing way for visitors to connect with you." title="Crispp Comment Form" width="525" height="328" class="size-full wp-image-689" /><p class="wp-caption-text">The comment form offers a visually appealing way for visitors to connect with you.</p></div>
<h3>Live Demo</h3>
<p>Want to play around with it and see for yourself?</p>
<p>You can access a live demo of the site here: <a rel="nofollow" href="http://crispp.dev.trevorfitzgerald.com/" target="_blank">Live Demo</a></p>
<h3>Download</h3>
<p>You can download the latest version of Crispp here: <a rel="nofollow" href="http://wordpress.org/extend/themes/crispp">Download Crispp</a></p>
<h3>Furthermore</h3>
<p>Are you using Crispp on your site? Please let me know in the comments!  Also feel free to post questions or comments.</p>
<img src="http://feeds.feedburner.com/~r/TrevorFitzgerald/~4/W72Vcdv0qPs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorfitzgerald.com/crispp-wordpress-theme/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		<feedburner:origLink>http://trevorfitzgerald.com/crispp-wordpress-theme/</feedburner:origLink></item>
		<item>
		<title>Creating a Twitter Cache with PHP</title>
		<link>http://feedproxy.google.com/~r/TrevorFitzgerald/~3/OTyp7jZ9GgY/</link>
		<comments>http://trevorfitzgerald.com/creating-a-twitter-cache-with-php/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 04:11:41 +0000</pubDate>
		<dc:creator>Trevor Fitzgerald</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://trevorfitzgerald.com/?p=641</guid>
		<description><![CDATA[Speed up your website page loads by caching your Twitter API requests for your visitors.
Recently I have started to take notice of the page load times of my website.  I&#8217;m always interested in ways I can optimize my site to load faster and run more efficiently.  I ran some performance tests in an [...]]]></description>
			<content:encoded><![CDATA[<div class="emphasize">Speed up your website page loads by caching your Twitter API requests for your visitors.</div>
<p>Recently I have started to take notice of the page load times of my website.  I&#8217;m always interested in ways I can optimize my site to load faster and run more efficiently.  I ran some performance tests in an effort to identify any sluggish items.</p>
<p>To my surprise, the Twitter API code was one of them.  In the footer of my website, I have a section that pulls all of my latest Twitter posts and displays them.  This is accomplished via an external javascript file supplied by Twitter that you include on your website.</p>
<p>The download time is actually quite fast from Twitter&#8217;s servers.  My best time was 145ms.  But unfortunately there are no caching headers sent to the browser for that file.  So every time a new page is requested, your visitor has to download your Twitter posts again.  This seems like an awful waste of bandwidth for something I don&#8217;t update that frequently.  Add in the fact that each Twitter account is limited to 150 API requests per hour, and it&#8217;s obvious to see the benefit that caching can provide.</p>
<h3>How it Works</h3>
<p>Your Twitter post data will get saved to a temporary cache file.  This cache will have a lifetime of 10 minutes.  If it&#8217;s ever more than 10 minutes old when it&#8217;s requested, fresh data will be downloaded and it will be updated.  It&#8217;s all quite seamless and behaves just like the original Twitter code, just more efficient for the browser.</p>
<h3>The PHP File</h3>
<p>It&#8217;s really simple.  To get started, let&#8217;s make a new file called <strong>twitter.php</strong>.</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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Create a new file that will act as our cache for your Twitter feed</span>
<span style="color: #666666; font-style: italic;">// File permissions must be set to 777</span>
<span style="color: #000088;">$cacheFile</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'twitterCache.txt'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Specify the URL of the file you want to cache</span>
<span style="color: #666666; font-style: italic;">// You probably only have to change 'fitztrev' &amp; '3' (the number of items to return)</span>
<span style="color: #000088;">$twitterUrl</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'http://twitter.com/statuses/user_timeline/fitztrev.json?callback=twitterCallback2&amp;count=3'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* *** */</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Get the last modified time of the cache file</span>
<span style="color: #000088;">$lastModified</span> <span style="color: #339933;">=</span> <span style="color: #990000;">filemtime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cacheFile</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// If it's been more than 10 minutes, let's update the cache</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #990000;">filesize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cacheFile</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$lastModified</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">600</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// Update cache</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$tweets</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file_get_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$twitterUrl</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #990000;">file_put_contents</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cacheFile</span><span style="color: #339933;">,</span> <span style="color: #000088;">$tweets</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Let's gzip it</span>
<span style="color: #990000;">ob_start</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'ob_gzhandler'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Set the last modified and expired headers so the browser caches it, too</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Last-Modified: '</span> <span style="color: #339933;">.</span> <span style="color: #990000;">gmstrftime</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'%a, %d %b %Y %H:%M:%S GMT'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$lastModified</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Expires: '</span> <span style="color: #339933;">.</span> <span style="color: #990000;">gmstrftime</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'%a, %d %b %Y %H:%M:%S GMT'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$lastModified</span> <span style="color: #339933;">+</span> <span style="color: #cc66cc;">600</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// It's a JSON file</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Content-type: application/json'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Return the contents of the cache</span>
<span style="color: #b1b100;">include</span> <span style="color: #000088;">$cacheFile</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>You might notice you also have to create a file called twitterCache.txt (with writable permissions) to save the Twitter response. It can be just a blank file.</p>
<p>Then in our HTML, we include a Twitter widget with a minor modification.</p>
<h3>Our HTML <em>(Before)</em></h3>
<p>The original HTML code would have looked like this:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ul</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;twitter_update_list&quot;</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span><span style="color: #ddbb00;">&amp;nbsp;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://twitter.com/javascripts/blogger.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://twitter.com/statuses/user_timeline/fitztrev.json?callback=twitterCallback2&amp;amp;count=3&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>

<h3>Our HTML <em>(After)</em></h3>
<p>Our new HTML looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ul</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;twitter_update_list&quot;</span>&gt;</span>
  <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;</span><span style="color: #ddbb00;">&amp;nbsp;</span><span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;http://twitter.com/javascripts/blogger.js&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">script</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;/twitter.php&quot;</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">script</span>&gt;</span></pre></div></div>

<p>Notice the link to the <strong>twitter.php</strong> that we just created.</p>
<h3>Finished!</h3>
<p>So there we have it.  A simple, effective way to remove an unnecessary download and decrease page load times across your site.</p>
<p>Do you have any questions or suggestions for improvement?  Let me know in the comments.</p>
<img src="http://feeds.feedburner.com/~r/TrevorFitzgerald/~4/OTyp7jZ9GgY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorfitzgerald.com/creating-a-twitter-cache-with-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorfitzgerald.com/creating-a-twitter-cache-with-php/</feedburner:origLink></item>
		<item>
		<title>How to Remove Trailing Slashes in Nginx</title>
		<link>http://feedproxy.google.com/~r/TrevorFitzgerald/~3/Xn_ZywVQsn8/</link>
		<comments>http://trevorfitzgerald.com/how-to-remove-trailing-slashes-in-nginx/#comments</comments>
		<pubDate>Sun, 24 May 2009 14:36:10 +0000</pubDate>
		<dc:creator>Trevor Fitzgerald</dc:creator>
				<category><![CDATA[Asides]]></category>

		<guid isPermaLink="false">http://www.trevorfitzgerald.com/?p=509</guid>
		<description><![CDATA[I just discovered this rewrite rule that will remove all trailing slashes from URLs in Nginx.  With the rule in place, you can force all requests for http://example.com/about/ to use http://example.com/about.

rewrite ^/&#40;.*&#41;/$ /$1 permanent;

]]></description>
			<content:encoded><![CDATA[<p>I just discovered this rewrite rule that will remove all trailing slashes from URLs in Nginx.  With the rule in place, you can force all requests for http://example.com/about/ to use http://example.com/about.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">rewrite ^<span style="color: #339933;">/</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">.*</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span>$ <span style="color: #339933;">/</span>$<span style="color: #cc66cc;">1</span> permanent<span style="color: #339933;">;</span></pre></div></div>

<img src="http://feeds.feedburner.com/~r/TrevorFitzgerald/~4/Xn_ZywVQsn8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorfitzgerald.com/how-to-remove-trailing-slashes-in-nginx/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://trevorfitzgerald.com/how-to-remove-trailing-slashes-in-nginx/</feedburner:origLink></item>
		<item>
		<title>WordPress Prevents Directory Listing of Plugins</title>
		<link>http://feedproxy.google.com/~r/TrevorFitzgerald/~3/729sir5pFrU/</link>
		<comments>http://trevorfitzgerald.com/wordpress-prevents-directory-listing-of-plugins/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 02:16:48 +0000</pubDate>
		<dc:creator>Trevor Fitzgerald</dc:creator>
				<category><![CDATA[Asides]]></category>

		<guid isPermaLink="false">http://www.trevorfitzgerald.com/?p=506</guid>
		<description><![CDATA[Empty index.php for plugins directory
via #8699 (Empty index.php for plugins dir) – WordPress Trac.
Good to see this is now part of WordPress.  I always did it manually for my sites.
]]></description>
			<content:encoded><![CDATA[<blockquote><p>Empty index.php for plugins directory</p>
<p>via <a rel="nofollow" href="http://core.trac.wordpress.org/ticket/8699">#8699 (Empty index.php for plugins dir) – WordPress Trac</a>.</p></blockquote>
<p>Good to see this is now part of WordPress.  I always did it manually for my sites.</p>
<img src="http://feeds.feedburner.com/~r/TrevorFitzgerald/~4/729sir5pFrU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorfitzgerald.com/wordpress-prevents-directory-listing-of-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorfitzgerald.com/wordpress-prevents-directory-listing-of-plugins/</feedburner:origLink></item>
		<item>
		<title>Post to Twitter Using the Command Line</title>
		<link>http://feedproxy.google.com/~r/TrevorFitzgerald/~3/K-uo4yndGBU/</link>
		<comments>http://trevorfitzgerald.com/post-to-twitter-using-the-command-line/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 00:20:38 +0000</pubDate>
		<dc:creator>Trevor Fitzgerald</dc:creator>
				<category><![CDATA[Asides]]></category>

		<guid isPermaLink="false">http://www.trevorfitzgerald.com/?p=501</guid>
		<description><![CDATA[If you want to post to Twitter using the linux command line, you can use this little bash script:

#!/bin/bash
&#160;
username=YourUsernameHere
password=YourPasswordHere
&#160;
curl -u $username:$password -d status=&#34;$1&#34; http://twitter.com/statuses/update.xml

Add it to a file called &#8220;twitter&#8221; in the ~/bin directory of your home directory.
You may have to refresh your bash profile by running one of these commands:

. ~/.profile
. ~/.bash_profile

Enjoy!
]]></description>
			<content:encoded><![CDATA[<p>If you want to post to Twitter using the linux command line, you can use this little bash script:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #007800;">username</span>=YourUsernameHere
<span style="color: #007800;">password</span>=YourPasswordHere
&nbsp;
curl <span style="color: #660033;">-u</span> <span style="color: #007800;">$username</span>:<span style="color: #007800;">$password</span> <span style="color: #660033;">-d</span> <span style="color: #007800;">status</span>=<span style="color: #ff0000;">&quot;$1&quot;</span> http:<span style="color: #000000; font-weight: bold;">//</span>twitter.com<span style="color: #000000; font-weight: bold;">/</span>statuses<span style="color: #000000; font-weight: bold;">/</span>update.xml</pre></div></div>

<p>Add it to a file called &#8220;twitter&#8221; in the ~/bin directory of your home directory.</p>
<p>You may have to refresh your bash profile by running one of these commands:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">. ~<span style="color: #000000; font-weight: bold;">/</span>.profile
. ~<span style="color: #000000; font-weight: bold;">/</span>.bash_profile</pre></div></div>

<p>Enjoy!</p>
<img src="http://feeds.feedburner.com/~r/TrevorFitzgerald/~4/K-uo4yndGBU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorfitzgerald.com/post-to-twitter-using-the-command-line/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://trevorfitzgerald.com/post-to-twitter-using-the-command-line/</feedburner:origLink></item>
		<item>
		<title>Bookmarks for Monday, March 30th</title>
		<link>http://feedproxy.google.com/~r/TrevorFitzgerald/~3/GQZrbF4c1rQ/</link>
		<comments>http://trevorfitzgerald.com/bookmarks-for-monday-march-30th/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 00:01:43 +0000</pubDate>
		<dc:creator>Trevor Fitzgerald</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.trevorfitzgerald.com/2009/03/bookmarks-for-monday-march-30th/</guid>
		<description><![CDATA[
Fixed Footers without JavaScript
Amazon EC2 Disk Performance &#124; AF-Design
Simple File Encryption with OpenSSL &#124; Tombuntu
P2: The New&#160;Prologue &#171; Blog &#171; WordPress.com
How to validate passwords with CakePHP (the Cake way)
Inkd
HTML XHTML Entities
The 50 dollar logo experiment &#124; Logo Design Love

]]></description>
			<content:encoded><![CDATA[<ul>
<li><a rel="nofollow" href="http://boagworld.com/technology/fixed_footers_without_javascri/">Fixed Footers without JavaScript</a></li>
<li><a rel="nofollow" href="http://af-design.com/blog/2009/02/27/amazon-ec2-disk-performance/">Amazon EC2 Disk Performance | AF-Design</a></li>
<li><a rel="nofollow" href="http://tombuntu.com/index.php/2007/12/12/simple-file-encryption-with-openssl/">Simple File Encryption with OpenSSL | Tombuntu</a></li>
<li><a rel="nofollow" href="http://en.blog.wordpress.com/2009/03/11/p2-the-new-prologue/">P2: The New&nbsp;Prologue &laquo; Blog &laquo; WordPress.com</a></li>
<li><a rel="nofollow" href="http://darthmalis.com/how-to-validate-passwords-with-cakephp-the-cake-way">How to validate passwords with CakePHP (the Cake way)</a></li>
<li><a rel="nofollow" href="http://inkd.com/products/list">Inkd</a></li>
<li><a rel="nofollow" href="http://www.cookwood.com/html/extras/entities.html">HTML XHTML Entities</a></li>
<li><a rel="nofollow" href="http://www.logodesignlove.com/the-50-dollar-logo-experiment">The 50 dollar logo experiment | Logo Design Love</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/TrevorFitzgerald/~4/GQZrbF4c1rQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorfitzgerald.com/bookmarks-for-monday-march-30th/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://trevorfitzgerald.com/bookmarks-for-monday-march-30th/</feedburner:origLink></item>
		<item>
		<title>Bookmarks for Saturday, February 28th</title>
		<link>http://feedproxy.google.com/~r/TrevorFitzgerald/~3/b_VdOTWABVM/</link>
		<comments>http://trevorfitzgerald.com/bookmarks-for-saturday-february-28th/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 16:01:27 +0000</pubDate>
		<dc:creator>Trevor Fitzgerald</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.trevorfitzgerald.com/?p=495</guid>
		<description><![CDATA[
Tough Guy Challenge 2009 &#8211; The Big Picture &#8211; Boston.com
David Golding : davidgolding.netGreat CakePHP screencasts
Newspaper Subscription &#8211; Free HTML Form TemplateCool form templates
Credit Card Logos &#38; Images
Joseph Crawford &#187; CakePHP 1.2.* Auth Component Tutorial
Using CakePHP&#8217;s Auth Component
CakePHP Auth Component &#8211; Tutorial Three: Remember Me Cookie
21 things I learned about CakePHP &#8211; Avatar Financial Group
BASH: Prepend [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a rel="nofollow" href="http://www.boston.com/bigpicture/2009/02/tough_guy_challenge_2009.html">Tough Guy Challenge 2009 &#8211; The Big Picture &#8211; Boston.com</a></li>
<li><a rel="nofollow" href="http://www.davidgolding.net/screencasts">David Golding : davidgolding.net</a><br />Great CakePHP screencasts</li>
<li><a rel="nofollow" href="http://wufoo.com/gallery/templates/online-orders/">Newspaper Subscription &#8211; Free HTML Form Template</a><br />Cool form templates</li>
<li><a rel="nofollow" href="http://www.credit-card-logos.com/">Credit Card Logos &amp; Images</a></li>
<li><a rel="nofollow" href="http://www.jbcrawford.net/archives/45">Joseph Crawford &raquo; CakePHP 1.2.* Auth Component Tutorial</a></li>
<li><a rel="nofollow" href="http://www.milesj.me/blog/read/5/using-cakephps-auth-component/">Using CakePHP&#8217;s Auth Component</a></li>
<li><a rel="nofollow" href="http://www.webdevelopment2.com/cakephp-auth-component-tutorial-3/">CakePHP Auth Component &#8211; Tutorial Three: Remember Me Cookie</a></li>
<li><a rel="nofollow" href="http://www.avatarfinancial.com/pages/cake/">21 things I learned about CakePHP &#8211; Avatar Financial Group</a></li>
<li><a rel="nofollow" href="http://www.cyberciti.biz/faq/bash-prepend-text-lines-to-file/">BASH: Prepend A Text / Lines To a File</a></li>
<li><a rel="nofollow" href="http://improveverywhere.com/2009/02/09/high-five-escalator/">High Five Escalator</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/TrevorFitzgerald/~4/b_VdOTWABVM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://trevorfitzgerald.com/bookmarks-for-saturday-february-28th/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://trevorfitzgerald.com/bookmarks-for-saturday-february-28th/</feedburner:origLink></item>
	</channel>
</rss>
