<?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/" version="2.0">

<channel>
	<title>Sean-O.com</title>
	
	<link>http://www.sean-o.com/blog</link>
	<description>entertaining, educating, and emulsifying... viva la waste of time!</description>
	<lastBuildDate>Thu, 12 Nov 2009 00:00:00 PST</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</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" href="http://feeds.feedburner.com/seanodotcom" type="application/rss+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">seanodotcom</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Links for 2009-11-11 [del.icio.us]</title><link>http://del.icio.us/sean_o#2009-11-11</link><pubDate>Thu, 12 Nov 2009 00:00:00 PST</pubDate><guid isPermaLink="true">http://del.icio.us/sean_o#2009-11-11</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://denbagus.net/jquery-forms/"&gt;JQuery forms | denbagus blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2009-11-10 [del.icio.us]</title><link>http://del.icio.us/sean_o#2009-11-10</link><pubDate>Wed, 11 Nov 2009 00:00:00 PST</pubDate><guid isPermaLink="true">http://del.icio.us/sean_o#2009-11-10</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mypaaji.com/index.php/2009/07/06/jquery-weather-widget/"&gt;jQuery - Weather Widget  &amp;laquo;  Mypaaji&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.webresourcesdepot.com/7-free-disposable-chat-systems-for-instant-communication/"&gt;7 Free Disposable Chat Systems For Instant Communication&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2009-11-09 [del.icio.us]</title><link>http://del.icio.us/sean_o#2009-11-09</link><pubDate>Tue, 10 Nov 2009 00:00:00 PST</pubDate><guid isPermaLink="true">http://del.icio.us/sean_o#2009-11-09</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.code-purity.com/php_programming_tips_and_tricks/"&gt;PHP programming tips and tricks | Marius Stanciu Sergiu's weblog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://benalman.com/projects/jquery-dotimeout-plugin/"&gt;Ben Alman &amp;raquo; jQuery doTimeout: Like setTimeout, but better&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2009-11-06 [del.icio.us]</title><link>http://del.icio.us/sean_o#2009-11-06</link><pubDate>Sat, 07 Nov 2009 00:00:00 PST</pubDate><guid isPermaLink="true">http://del.icio.us/sean_o#2009-11-06</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.tripwiremagazine.com/ajax/developer-toolbox/more-jquery-and-general-javascript-tips-to-improve-your-code.html"&gt;More jQuery and General Javascript Tips to Improve Your Code&amp;nbsp;|&amp;nbsp;tripwire magazine&lt;/a&gt;&lt;br/&gt;
Good tips on callbacks, expressions, et al.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.tuvinh.com/20-useful-php-jquery-components-tuts-for-everyday-project/"&gt;20 Useful PHP + jQuery Components &amp;amp; Tuts for Everyday Project | TuVinhSoft .,JSC&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2009-11-05 [del.icio.us]</title><link>http://del.icio.us/sean_o#2009-11-05</link><pubDate>Fri, 06 Nov 2009 00:00:00 PST</pubDate><guid isPermaLink="true">http://del.icio.us/sean_o#2009-11-05</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sixrevisions.com/tools/10-free-server-network-monitoring-tools-that-kick-ass/"&gt;10 Free Server &amp;amp; Network Monitoring Tools that Kick Ass&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2009-11-04 [del.icio.us]</title><link>http://del.icio.us/sean_o#2009-11-04</link><pubDate>Thu, 05 Nov 2009 00:00:00 PST</pubDate><guid isPermaLink="true">http://del.icio.us/sean_o#2009-11-04</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://windowsteamblog.com/blogs/springboard/archive/2009/11/03/springboard-series-blog-migrating-from-windows-xp-to-windows-7.aspx"&gt;Migrating from Windows XP to Windows 7 - Guidance for IT pros - Springboard Series Blog - The Windows Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2009-11-02 [del.icio.us]</title><link>http://del.icio.us/sean_o#2009-11-02</link><pubDate>Tue, 03 Nov 2009 00:00:00 PST</pubDate><guid isPermaLink="true">http://del.icio.us/sean_o#2009-11-02</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.harvardbusiness.org/silverman/2009/11/daves-not-here-when-informatio.html"&gt;Did I Get Your Email? - David Silverman - HarvardBusiness.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://inspectelement.com/tutorials/advanced-photoshop-techniques-that-you-may-not-be-aware-of/"&gt;Advanced Photoshop Techniques that you may not be aware of&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item>
		<title>Nathan Loves Lindsay’s Pratfalls</title>
		<link>http://www.sean-o.com/blog/index.php/2009/10/31/nathan-loves-lindsays-pratfalls/</link>
		<comments>http://www.sean-o.com/blog/index.php/2009/10/31/nathan-loves-lindsays-pratfalls/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 16:24:27 +0000</pubDate>
		<dc:creator>seano</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Lindsay Nathan kids children funny laughing cute baby]]></category>

		<guid isPermaLink="false">http://www.sean-o.com/blog/index.php/2009/10/31/nathan-loves-lindsays-pratfalls/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/njOqdiuOK_c&#038;hl=en&#038;fs=1&#038;color1=0xcc2550&#038;color2=0xe87a9f"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/njOqdiuOK_c&#038;hl=en&#038;fs=1&#038;color1=0xcc2550&#038;color2=0xe87a9f" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sean-o.com/blog/index.php/2009/10/31/nathan-loves-lindsays-pratfalls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Glenn Beck on White Culture. Or not.</title>
		<link>http://www.sean-o.com/blog/index.php/2009/09/26/glenn-beck-on-white-culture-or-not/</link>
		<comments>http://www.sean-o.com/blog/index.php/2009/09/26/glenn-beck-on-white-culture-or-not/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 16:14:20 +0000</pubDate>
		<dc:creator>seano</dc:creator>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://www.sean-o.com/blog/index.php/2009/09/26/glenn-beck-on-white-culture-or-not/</guid>
		<description><![CDATA[What. A. Weasel.
I haven&#8217;t seen this much uncomfortable squirming since Sarah Palin was backed into a corner about newspapers she likes.

]]></description>
			<content:encoded><![CDATA[<p>What. A. <strong>Weasel</strong>.</p>
<h3 style="font-size: 13px; color: #333333; font-weight: normal; overflow-x: hidden; overflow-y: hidden; padding: 0px; margin: 0px;"><span>I haven&#8217;t seen this much uncomfortable squirming since Sarah Palin was </span><em>backed into a corner</em><span> about newspapers she likes.</span></h3>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/FKZ1qbDyKOM&#038;hl=en&#038;fs=1&#038;color1=0x5d1719&#038;color2=0xcd311b"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/FKZ1qbDyKOM&#038;hl=en&#038;fs=1&#038;color1=0x5d1719&#038;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sean-o.com/blog/index.php/2009/09/26/glenn-beck-on-white-culture-or-not/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ocean City 2009</title>
		<link>http://www.sean-o.com/blog/index.php/2009/09/05/ocean-city-2009/</link>
		<comments>http://www.sean-o.com/blog/index.php/2009/09/05/ocean-city-2009/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 03:20:02 +0000</pubDate>
		<dc:creator>seano</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[beach]]></category>
		<category><![CDATA[Family]]></category>
		<category><![CDATA[ocean city]]></category>
		<category><![CDATA[shore]]></category>
		<category><![CDATA[vacation]]></category>

		<guid isPermaLink="false">http://www.sean-o.com/blog/index.php/2009/09/05/ocean-city-2009/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&#038;noautoplay=1&#038;hl=en_US&#038;feat=flashalbum&#038;RGB=0x000000&#038;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fseanodotcom%2Falbumid%2F5375577670169181425%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sean-o.com/blog/index.php/2009/09/05/ocean-city-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Actual Video Footage of the Hudson Plane/Helicopter Crash</title>
		<link>http://www.sean-o.com/blog/index.php/2009/08/14/actual-video-footage-of-the-hudson-planehelicopter-crash/</link>
		<comments>http://www.sean-o.com/blog/index.php/2009/08/14/actual-video-footage-of-the-hudson-planehelicopter-crash/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 15:28:05 +0000</pubDate>
		<dc:creator>seano</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[airplane]]></category>
		<category><![CDATA[collision]]></category>
		<category><![CDATA[copter]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[helicopter]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[mid-air]]></category>
		<category><![CDATA[new york]]></category>
		<category><![CDATA[nyc]]></category>
		<category><![CDATA[plane]]></category>

		<guid isPermaLink="false">http://www.sean-o.com/blog/?p=993</guid>
		<description><![CDATA[From an Italian tourist:

Q: Why was he focusing in on the helicopter before the crash?
]]></description>
			<content:encoded><![CDATA[<p>From an Italian tourist:<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/cwT6yP1UXE4&#038;hl=en&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/cwT6yP1UXE4&#038;hl=en&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />
Q: Why was he focusing in on the helicopter before the crash?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sean-o.com/blog/index.php/2009/08/14/actual-video-footage-of-the-hudson-planehelicopter-crash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial: How To Create Your Own URL Shortener</title>
		<link>http://www.sean-o.com/blog/index.php/2009/08/11/tutorial-how-to-create-your-own-url-shortener/</link>
		<comments>http://www.sean-o.com/blog/index.php/2009/08/11/tutorial-how-to-create-your-own-url-shortener/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 19:15:15 +0000</pubDate>
		<dc:creator>seano</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[short URL]]></category>
		<category><![CDATA[shortener]]></category>
		<category><![CDATA[shortURL]]></category>
		<category><![CDATA[tr.im]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://www.sean-o.com/blog/?p=951</guid>
		<description><![CDATA[I&#8217;ve been thinking about posting this for a while now. Then came the announcement on Sunday, from URL shortening service tr.im, that they are shutting down, effective immediately. It brought to light the issues with relying on the cloud.
Admittedly, this is not as devastating an announcement as your trusted e-mail, or even photo hosting, service [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking about posting this for a while now. Then came the announcement on Sunday, from URL shortening service <strong>tr.im</strong>, that <a title="Tr.im URL Shortening Service Announces Shutdown" href="http://blog.tr.im/" target="_blank">they are shutting down</a>, effective immediately. It brought to light the issues with relying on the cloud.</p>
<p>Admittedly, this is not as devastating an announcement as your trusted e-mail, or even photo hosting, service going under. However, social media sites &#8212; primarily Twitter &#8212; have made URL shorteners almost a necessity, and some users have developed quite a bit of &#8220;social capital&#8221; in the form of links built and shared using a particular service.</p>
<p>Although tr.im promises to keep existing links active through the end of the year, there is currently no way to create new short URLs, nor is there any way to view information or statistics on any existing tr.im links. Poof, they&#8217;re gone. No warning, no recourse.</p>
<p><strong>UPDATE</strong>: Tr.im has restored their service. However, this unpredictability only reinforces the call to control your site and your brand.</p>
<p>Okay, so what can you do about it?<br />
<strong><em>Make your own URL shortener.</em></strong></p>
<p>As you&#8217;ll soon see, it&#8217;s easy, it&#8217;s fun, and puts the <strong>you</strong> in short URLs.</p>
<h3>Requirements</h3>
<ul>
<li>Web Server &#8212; preferably one you host yourself, with control over basic site settings</li>
<li>Web Development Language &#8212; using PHP here, but this code can be adapted to ASP.NET, ColdFusion, etc.</li>
<li>Database &#8212; MySQL featured, but SQL Server, PostgreSQL, etc. would work</li>
<li>Ideally, you&#8217;ll want a short domain to set this up on.<br />www.joesautoglassandspareparts.com kinda defeats the purpose ;)</li>
</ul>
<h3>Examples</h3>
<p>Each of the following are short URLs to content on other sites:<br />
<a href="http://sean-o.com/babysafe" target="_blank">http://sean-o.com/babysafe</a><br/><br />
<a href="http://sean-o.com/getwindows7" target="_blank">http://sean-o.com/getwindows7 </a><br/><br />
<a href="http://sean-o.com/playtime" target="_blank">http://sean-o.com/playtime</a><br/></p>
<h3>Getting Started</h3>
<p>As mentioned above, we&#8217;ll be using PHP 5.2.x &amp; MySQL 4/5 for this tutorial &#8212; as these open-source technologies should be available to most of you. </p>
<p>The first thing you&#8217;ll need is a source for your short URLs. Easiest way to do that is with a MySQL database (or new table on your existing site&#8217;s database). Here&#8217;s the structure I used:</p>
<div class="wp-caption alignnone" style="width: 519px"><img title="Sean O's Short URL Tutorial: Table Structure" src="http://sean-o.com/images/shorturl_table.gif" alt="Sean O's Short URL Tutorial: Table Structure" width="509" height="158" /><p class="wp-caption-text">Sean O's Short URL Tutorial: Table Structure</p></div>
<p>You only really need the first three columns, the rest are for statistics &amp; future use (userID). Add/remove fields as you see fit &#8212; perhaps you may want a field for notes?</p>
<h3>The Script</h3>
<p>We&#8217;ll only need one script to accomplish the short URL resolution. Create a file called <em>shortURL.php</em> at the root of your site. (or you may choose a custom name &#038; path)</p>
<p>To begin, the first thing to do is grab the short URL &#8212; the segment after the base URL.<br />
e.g. http://sean-o.com/<strong>playtime</strong><br />
A little regex (regular expressions) goes a long way here to parse the short URL and strip extraneous characters.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$expectedURL</span> <span style="color: #339933;">=</span> <span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'URL'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$split</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_split</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;{:80\/}&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$expectedURL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$shortURL</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$split</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// security: strip all but alphanumerics &amp; dashes</span>
<span style="color: #000088;">$shortURL</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/[^a-z0-9-]+/i&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$shortURL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Next, we&#8217;ll check this string to see if it matches a short URL in our database.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$isShortURL</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> getLongURL<span style="color: #009900;">&#40;</span><span style="color: #000088;">$shortURL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000088;">$isShortURL</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #000088;">$longURL</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$result</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'longURL'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Finally, we check to see if our <em>$isShortURL</em> flag is set. If a matching short URL was found, we&#8217;ll redirect to it. If not, we&#8217;ll display our standard 404.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$isShortURL</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	redirectTo<span style="color: #009900;">&#40;</span><span style="color: #000088;">$longURL</span><span style="color: #339933;">,</span> <span style="color: #000088;">$shortURL</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
	show404<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// no shortURL found, display standard 404 page</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h3>The Functions</h3>
<p>The primary function &#8212; get the long URL associated with the passed short URL, if it exists.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> getLongURL<span style="color: #009900;">&#40;</span><span style="color: #000088;">$s</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">// define these variables for your system</span>
	<span style="color: #000088;">$host</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$user</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$pass</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$db</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$mysqli</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> mysqli<span style="color: #009900;">&#40;</span><span style="color: #000088;">$host</span><span style="color: #339933;">,</span> <span style="color: #000088;">$user</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pass</span><span style="color: #339933;">,</span> <span style="color: #000088;">$db</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// you may just want to fall thru to 404 here if connection error</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">mysqli_connect_errno</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Unable to connect !&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
	<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT * FROM urls WHERE shorturl = '<span style="color: #006699; font-weight: bold;">$s</span>';&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$mysqli</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">num_rows</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$result</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetch_assoc</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">return</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
	    	<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	    <span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000088;">$mysqli</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Perform the URL redirection.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> redirectTo<span style="color: #009900;">&#40;</span><span style="color: #000088;">$longURL</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">// change this to your domain</span>
	<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Referer: http://www.your-domain-here.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #666666; font-style: italic;">// use a 301 redirect to your destination</span>
	<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Location: <span style="color: #006699; font-weight: bold;">$longURL</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">301</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Finally, display your standard 404 page here.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> show404<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #666666; font-style: italic;">// display/include your standard 404 page here</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;404 Page Not Found.&lt;/body&gt;&lt;/html&gt;&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<h3>Wire It Up</h3>
<p>Okay, so we have the script&#8230; now what? Well, the &#8220;special sauce&#8221; here is the <strong>404 redirect</strong>. What we&#8217;re simply doing is replacing (or augmenting) your site&#8217;s 404 page with one that checks a database for a URL shortcut. If one is listed that matches, redirect to it. If not, display your standard (or <a href="http://www.instantshift.com/2009/03/24/creative-404-error-pages-around-for-inspiration/" target="_blank">not so standard</a>) 404 error message.</p>
<p>You&#8217;ll need to modify your site&#8217;s existing 404 error page, or (recommended) create a new one. If creating a new one, make sure your site is set to point to this file. For IIS (5/6): Go to your web site, <em>Properties, Custom Errors, 404, Edit Properties&#8230;</em> For Apache, edit your .htaccess file thusly: <em>ErrorDocument 404 /shortURL.php</em>. (replace with your custom path as appropriate)</p>
<h3>Now, Run With It (Additional, Optional Steps)</h3>
<p>If you&#8217;ll be using this with any regularity, you&#8217;ll probably want to create an admin panel page to quickly add &amp; manage your URLs (I&#8217;m simply using a MySQL GUI &#8212; the great <a title="HeidiSQL - MySQL GUI" href="http://www.heidisql.com" target="_blank">HeidiSQL</a>). Consider whether you want to use custom short URL names, or just generate a random 4-5 character string (or both!). If you&#8217;re a statistics nut, you might want to capture more than just the user&#8217;s IP and/or build a stats page.</p>
<p>If you&#8217;re looking to &#8220;monetize&#8221; (ahem, see above), you may want to frame the linked site under a toolbar with your site&#8217;s branding, a la the &#8220;Digg Bar&#8221;. I highly recommend against this, however, as many users consider this practice an annoyance.</p>
<p>If your domain name is longer than, say, 8 characters, consider purchasing a second domain for exclusive short URL serving. Two-letter country-based domains such as .ly and .to are popular. Flickr&#8217;s recent purchase of http://flic.kr was especially clever.</p>
<h3>Conclusion</h3>
<p>So there you have it. Your very own, shiny new, URL shortening service&#8230; in <strong>under 50 lines</strong> of code!</p>
<p>Be sure to test. I suggest trying the following: a short URL you&#8217;ve created, a known working URL on your site (make sure you didn&#8217;t break anything!), and a known incorrect URL (test the standard 404). Also, be mindful of the security implications. Make sure following best practices with regards to MySQL security, and be sure to sanitize all URLs. Ensure your server is running the latest versions of software with the latest patches.</p>
<p><strong>Disclaimer</strong>: This article is just to get you started. The code presented here is most certainly &#8220;quick &amp; dirty&#8221;, and can surely be optimized. This code may or may not work for you, and I cannot be held responsible for any damage that may occur to your site as a result of implementing this.</p>
<p>If you end up implementing this on your site, I&#8217;d love to see it. Post an example here in the comments, or <strong><a href="http://twitter.com/seanodotcom" target="_blank">follow me on twitter</a></strong> and hit up @seanodotcom. If you&#8217;ve ported this code to other languages/databases, drop me a line.</p>
<p>Thanks for reading,<br />
<strong><em>SEAN O</em></strong><br />
<a href="http://twitter.com/seanodotcom"><img title="Follow Sean O (@seanodotcom) on Twitter" src="http://sean-o.com/images/icons/twitter/twitter-03.png" alt="Follow Sean O (@seanodotcom) on Twitter" width="80" height="15" /></a><br />
<br clear='all' /></p>
<h3>Advantages</h3>
<ul>
<li>You&#8217;re in complete control</li>
<li>You can specify random short URLs or custom ones, using related keyword(s)</li>
<li>You can collect virtually any statistics you wish</li>
<li>Excellent for site branding &#8212; your URL appears on every link!</li>
</ul>
<h3>Disadvantages</h3>
<ul>
<li>You&#8217;re responsible for maintaining uptime &#8212; as your site goes, so goes the service</li>
<li>You need to build any related services &#8212; stats tracking, APIs, user registration, etc.</li>
<li>Your site&#8217;s subdirectory names will override custom short URLs of the same name</li>
<li>Every 404 on your site will incur a database hit &#8212; be sure to keep your main site links fresh (<i>Thanks 5Min</i>)
<li>Utility varies inversely with the length of the primary domain name</li>
</ul>
<h3>Alternatives</h3>
<ul>
<li>Simply use another service &#8212; bit.ly, cli.gs, etc. (but that&#8217;s no fun, and you&#8217;re again vulnerable)</li>
<li>Creative use of <em>htaccess</em> or <em>IIS Rewrite</em></li>
</ul>
<p></p>
<p><em>p.s. the short URL for this post is <a href="http://sean-o.com/short-URL" target="_blank">http://sean-o.com/short-URL</a></p>
<p><a class="retweet" href="http://sean-o.com/short-URL" target="_blank">http://sean-o.com/short-URL</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sean-o.com/blog/index.php/2009/08/11/tutorial-how-to-create-your-own-url-shortener/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Pool Picnic</title>
		<link>http://www.sean-o.com/blog/index.php/2009/08/03/pool-picnic/</link>
		<comments>http://www.sean-o.com/blog/index.php/2009/08/03/pool-picnic/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 17:09:53 +0000</pubDate>
		<dc:creator>seano</dc:creator>
				<category><![CDATA[Family]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[Lindsay]]></category>
		<category><![CDATA[nathan]]></category>
		<category><![CDATA[picnic]]></category>
		<category><![CDATA[pool]]></category>

		<guid isPermaLink="false">http://www.sean-o.com/blog/?p=949</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&#038;hl=en_US&#038;feat=flashalbum&#038;RGB=0x000000&#038;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fseanodotcom%2Falbumid%2F5365556670779995857%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sean-o.com/blog/index.php/2009/08/03/pool-picnic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Colbert on The Birthers</title>
		<link>http://www.sean-o.com/blog/index.php/2009/07/29/colbert-on-the-birthers/</link>
		<comments>http://www.sean-o.com/blog/index.php/2009/07/29/colbert-on-the-birthers/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 17:00:51 +0000</pubDate>
		<dc:creator>seano</dc:creator>
				<category><![CDATA[Election]]></category>
		<category><![CDATA[Funny]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[birther]]></category>
		<category><![CDATA[colbert]]></category>
		<category><![CDATA[obama]]></category>

		<guid isPermaLink="false">http://www.sean-o.com/blog/?p=947</guid>
		<description><![CDATA[


The Colbert Report
Mon &#8211; Thurs 11:30pm / 10:30c


]]></description>
			<content:encoded><![CDATA[<table style='font:11px arial; color:#333; background-color:#f5f5f5' cellpadding='0' cellspacing='0' width='360' height='353'>
<tbody>
<tr style='background-color:#e5e5e5' valign='middle'>
<td style='padding:2px 1px 0px 5px;'><a target='_blank' style='color:#333; text-decoration:none; font-weight:bold;' href='http://www.colbertnation.com'>The Colbert Report</a></td>
<td style='padding:2px 5px 0px 5px; text-align:right; font-weight:bold;'>Mon &#8211; Thurs 11:30pm / 10:30c</td>
</tr>
<tr style='height:14px;' valign='middle'>
<td style='padding:2px 1px 0px 5px;' colspan='2'<a target='_blank' style='color:#333; text-decoration:none; font-weight:bold;' href='http://www.colbertnation.com/the-colbert-report-videos/229638/july-28-2009/womb-raiders---the-fight-for-the-truth-behind-obama-s-birth'>Womb Raiders &#8211; The Fight for the Truth Behind Obama&#8217;s Birth<a></td>
</tr>
<tr style='height:14px; background-color:#353535' valign='middle'>
<td colspan='2' style='padding:2px 5px 0px 5px; width:360px; overflow:hidden; text-align:right'><a target='_blank' style='color:#96deff; text-decoration:none; font-weight:bold;' href='http://www.colbertnation.com/'>www.colbertnation.com</a></td>
</tr>
<tr valign='middle'>
<td style='padding:0px;' colspan='2'><embed style='display:block' src='http://media.mtvnservices.com/mgid:cms:item:comedycentral.com:229638' width='360' height='301' type='application/x-shockwave-flash' wmode='window' allowFullscreen='true' flashvars='autoPlay=false' allowscriptaccess='always' allownetworking='all' bgcolor='#000000'></embed></td>
</tr>
<tr style='height:18px;' valign='middle'>
<td style='padding:0px;' colspan='2'>
<table style='margin:0px; text-align:center' cellpadding='0' cellspacing='0' width='100%' height='100%'>
<tr valign='middle'>
<td style='padding:3px; width:33%;'><a target='_blank' style='font:10px arial; color:#333; text-decoration:none;' href='http://www.comedycentral.com/colbertreport/full-episodes'>Colbert Report Full Episodes</a></td>
<td style='padding:3px; width:33%;'><a target='_blank' style='font:10px arial; color:#333; text-decoration:none;' href='http://www.indecisionforever.com'>Political Humor</a></td>
<td style='padding:3px; width:33%;'><a target='_blank' style='font:10px arial; color:#333; text-decoration:none;' href='http://www.colbertnation.com/the-colbert-report-videos/239942/july-27-2009/current-events---tasers'>Tasers</a></td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.sean-o.com/blog/index.php/2009/07/29/colbert-on-the-birthers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nathan is Rollin’ Rollin’ Rollin’…</title>
		<link>http://www.sean-o.com/blog/index.php/2009/07/21/nathan-is-rollin-rollin-rollin/</link>
		<comments>http://www.sean-o.com/blog/index.php/2009/07/21/nathan-is-rollin-rollin-rollin/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 13:49:37 +0000</pubDate>
		<dc:creator>seano</dc:creator>
				<category><![CDATA[Family]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[baby]]></category>
		<category><![CDATA[cute]]></category>
		<category><![CDATA[nathan]]></category>
		<category><![CDATA[roll]]></category>
		<category><![CDATA[rolling]]></category>

		<guid isPermaLink="false">http://www.sean-o.com/blog/?p=945</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/9vucrxNYLs4&#038;hl=en&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/9vucrxNYLs4&#038;hl=en&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sean-o.com/blog/index.php/2009/07/21/nathan-is-rollin-rollin-rollin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hastily Made Cleveland Tourism Video</title>
		<link>http://www.sean-o.com/blog/index.php/2009/07/09/hastily-made-cleveland-tourism-video/</link>
		<comments>http://www.sean-o.com/blog/index.php/2009/07/09/hastily-made-cleveland-tourism-video/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 12:25:34 +0000</pubDate>
		<dc:creator>seano</dc:creator>
				<category><![CDATA[Funny]]></category>
		<category><![CDATA[Video]]></category>
		<category><![CDATA[cleveland]]></category>
		<category><![CDATA[tourism]]></category>

		<guid isPermaLink="false">http://www.sean-o.com/blog/?p=943</guid>
		<description><![CDATA[Best. Tourism Video. Ever. LMAO

]]></description>
			<content:encoded><![CDATA[<p>Best. Tourism Video. Ever. LMAO</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/ysmLA5TqbIY&#038;hl=en&#038;fs=1&#038;color1=0x3a3a3a&#038;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ysmLA5TqbIY&#038;hl=en&#038;fs=1&#038;color1=0x3a3a3a&#038;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sean-o.com/blog/index.php/2009/07/09/hastily-made-cleveland-tourism-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Father’s Day (?)</title>
		<link>http://www.sean-o.com/blog/index.php/2009/06/22/happy-fathers-day/</link>
		<comments>http://www.sean-o.com/blog/index.php/2009/06/22/happy-fathers-day/#comments</comments>
		<pubDate>Mon, 22 Jun 2009 18:45:12 +0000</pubDate>
		<dc:creator>seano</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[baby]]></category>
		<category><![CDATA[cute]]></category>
		<category><![CDATA[fathers day]]></category>
		<category><![CDATA[gurgling]]></category>
		<category><![CDATA[nathan]]></category>

		<guid isPermaLink="false">http://www.sean-o.com/blog/?p=941</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/O2yhpQTor_0&#038;hl=en&#038;fs=1&#038;color1=0x006699&#038;color2=0x54abd6"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/O2yhpQTor_0&#038;hl=en&#038;fs=1&#038;color1=0x006699&#038;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sean-o.com/blog/index.php/2009/06/22/happy-fathers-day/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nathan’s Christening</title>
		<link>http://www.sean-o.com/blog/index.php/2009/06/05/nathans-christening/</link>
		<comments>http://www.sean-o.com/blog/index.php/2009/06/05/nathans-christening/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 17:41:39 +0000</pubDate>
		<dc:creator>seano</dc:creator>
				<category><![CDATA[Family]]></category>
		<category><![CDATA[christening]]></category>
		<category><![CDATA[nathan]]></category>

		<guid isPermaLink="false">http://www.sean-o.com/blog/?p=939</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&#038;noautoplay=1&#038;hl=en_US&#038;feat=flashalbum&#038;RGB=0x000000&#038;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fseanodotcom%2Falbumid%2F5343304830686671873%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sean-o.com/blog/index.php/2009/06/05/nathans-christening/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter Tracker</title>
		<link>http://www.sean-o.com/blog/index.php/2009/06/03/twitter-tracker/</link>
		<comments>http://www.sean-o.com/blog/index.php/2009/06/03/twitter-tracker/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 01:05:10 +0000</pubDate>
		<dc:creator>seano</dc:creator>
				<category><![CDATA[Celebrity]]></category>
		<category><![CDATA[Entertainment]]></category>
		<category><![CDATA[Funny]]></category>
		<category><![CDATA[conan]]></category>
		<category><![CDATA[obrien]]></category>
		<category><![CDATA[tonight show]]></category>
		<category><![CDATA[tracker]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.sean-o.com/blog/?p=937</guid>
		<description><![CDATA[Funny not so much for its content, as its presentation.

]]></description>
			<content:encoded><![CDATA[<p>Funny not so much for its content, as its presentation.<br />
<object width="384" height="283" data="http://widgets.nbc.com/o/4727a250e66f9723/4a271c1569e80eec/4a26865f9f898614/35378b95/-cpid/4c2e843981e0a43f" type="application/x-shockwave-flash"><param name="id" value="W4727a250e66f97234a271c1569e80eec" /><param name="wmode" value="transparent" /><param name="allowNetworking" value="all" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="src" value="http://widgets.nbc.com/o/4727a250e66f9723/4a271c1569e80eec/4a26865f9f898614/35378b95/-cpid/4c2e843981e0a43f" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sean-o.com/blog/index.php/2009/06/03/twitter-tracker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
