<?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>Brett Terpstraurl shortener page  - Brett Terpstra</title>
	<atom:link href="http://brettterpstra.com/tag/url-shortener/feed/" rel="self" type="application/rss+xml" />
	<link>http://brettterpstra.com</link>
	<description>Elegant solutions to complex problems.</description>
	<lastBuildDate>Tue, 22 May 2012 02:49:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>TextExpander: bit.ly with authentication</title>
		<link>http://brettterpstra.com/textexpander-bit-ly-with-authentication/</link>
		<comments>http://brettterpstra.com/textexpander-bit-ly-with-authentication/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 23:56:44 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[bit.ly]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[textexpander]]></category>
		<category><![CDATA[url shortener]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=1114</guid>
		<description><![CDATA[<p>A bit.ly shortening script for TextExpander which allows the use of the authenticated v3 API for click tracking and analytics.</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/textexpander-bit-ly-with-authentication/">TextExpander: bit.ly with authentication</a></p>]]></description>
			<content:encoded><![CDATA[<p>A quick script in response to <a href="http://brettterpstra.com/textexpander-experiments/#comments">Donald’s query</a> on my TextExpander Experiments post. He wanted to know if I could make the bit.ly script—which expands to a bit.ly-shortened version of a url in the clipboard—work with an authenticated account, presumably for click tracking. Well, sure! Just adjust the script below to contain your bit.ly username and your <a href="http://bit.ly/a/your_api_key">API key</a> (in lines 6 &amp; 7), and replace the existing script in the <a href="http://brettterpstra.com/code/?did=6" title="Download the TextExpander Experiments bundle">TextExpander experiments bundle</a> with this one (or create a new snippet with the script).</p>


<div class="wp_syntax"><div class="code"><pre class="ruby"><span class="co1">#!/usr/bin/env ruby -wKU</span>
&nbsp;
<span class="kw3">require</span> <span class="st0">'open-uri'</span>
<span class="kw3">require</span> <span class="st0">'cgi'</span>
&nbsp;
USER_NAME = <span class="st0">'username'</span> <span class="co1"># Your login name</span>
API_KEY = <span class="st0">'yourlongapikey'</span> <span class="co1"># http://bit.ly/a/your_api_key</span>
&nbsp;
<span class="kw1">def</span> entity_escape<span class="br0">&#40;</span>text<span class="br0">&#41;</span>
  text.<span class="kw3">gsub</span><span class="br0">&#40;</span><span class="sy0">/&amp;</span><span class="br0">&#40;</span>?!<span class="br0">&#40;</span><span class="br0">&#91;</span>a<span class="sy0">-</span>zA<span class="sy0">-</span>Z0<span class="sy0">-</span><span class="nu0">9</span><span class="br0">&#93;</span><span class="sy0">+|</span><span class="co1">#[0-9]+|#x[0-9a-fA-F]+);)/, '&amp;amp;')</span>
<span class="kw1">end</span>
&nbsp;
<span class="kw1">def</span> make_link<span class="br0">&#40;</span>text<span class="br0">&#41;</span>
  <span class="kw1">case</span> text
  <span class="kw1">when</span> <span class="sy0">%</span>r<span class="br0">&#123;</span>\Ahttps?:<span class="sy0">//</span>.<span class="sy0">*</span>?\.\w<span class="br0">&#123;</span><span class="nu0">2</span>,<span class="nu0">4</span><span class="br0">&#125;</span>.<span class="sy0">*</span>?\z<span class="br0">&#125;</span>:
    entity_escape<span class="br0">&#40;</span>text<span class="br0">&#41;</span>
  <span class="kw1">when</span> <span class="sy0">%</span>r<span class="br0">&#123;</span>\A<span class="br0">&#40;</span>www\..<span class="sy0">*|</span>.<span class="sy0">*</span>\.\w<span class="br0">&#123;</span><span class="nu0">2</span>,<span class="nu0">4</span><span class="br0">&#125;</span><span class="br0">&#41;</span>\z<span class="br0">&#125;</span>:
    <span class="st0">&quot;http://#{entity_escape text}&quot;</span>
  <span class="kw1">when</span> <span class="sy0">%</span>r<span class="br0">&#123;</span>\A.<span class="sy0">*</span>?\.\w<span class="br0">&#123;</span><span class="nu0">2</span>,<span class="nu0">4</span><span class="br0">&#125;</span>\<span class="sy0">/</span>?.<span class="sy0">*</span>\z<span class="br0">&#125;</span>:
    <span class="st0">&quot;http://#{entity_escape text}&quot;</span>
  <span class="kw1">else</span>
    <span class="kw2">nil</span>
  <span class="kw1">end</span>
<span class="kw1">end</span>
&nbsp;
url = make_link <span class="sy0">%</span>x<span class="br0">&#123;</span>__CF_USER_TEXT_ENCODING=$UID:0x8000100:0x8000100 pbpaste<span class="br0">&#125;</span>.<span class="me1">strip</span>
res = <span class="kw3">open</span><span class="br0">&#40;</span><span class="st0">&quot;http://api.bit.ly/v3/shorten?login=#{USER_NAME}&amp;apiKey=#{API_KEY}&amp;longUrl=#{CGI.escape(url)}&amp;format=txt&quot;</span><span class="br0">&#41;</span>.<span class="me1">read</span> <span class="kw1">unless</span> url.<span class="kw2">nil</span>?
&nbsp;
<span class="kw1">begin</span>
  <span class="kw3">print</span> res <span class="kw1">unless</span> res.<span class="kw2">nil</span>?
<span class="kw1">rescue</span>
  <span class="kw3">exit</span>
<span class="kw1">end</span></pre></div></div>


<p>The API can output JSON and XML, which would be more appropriate on most occasions, but the “txt” format (which <em>only</em> includes the shortened link) is perfect for this situation. Enjoy!</p>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/textexpander-experiments/' rel='bookmark' title='TextExpander experiments'>TextExpander experiments</a></li>
<li><a href='http://brettterpstra.com/sms-from-the-command-line-with-google-voice/' rel='bookmark' title='SMS from the command line with Google Voice'>SMS from the command line with Google Voice</a></li>
<li><a href='http://brettterpstra.com/a-system-service-for-to-url-shortening/' rel='bookmark' title='A System Service for to. url shortening'>A System Service for to. url shortening</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/textexpander-bit-ly-with-authentication/">TextExpander: bit.ly with authentication</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/textexpander-bit-ly-with-authentication/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Is your URL too short? Try our system, free!</title>
		<link>http://brettterpstra.com/is-your-url-too-short-try-our-system-free/</link>
		<comments>http://brettterpstra.com/is-your-url-too-short-try-our-system-free/#comments</comments>
		<pubDate>Sat, 14 Aug 2010 15:00:05 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[experiments]]></category>
		<category><![CDATA[launchbar]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[snow leopard]]></category>
		<category><![CDATA[terminal]]></category>
		<category><![CDATA[url shortener]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=899</guid>
		<description><![CDATA[<p>I was sifting through my previous blog after Jeffery Zeldman kindly sent a lot of visitors in that direction for some TextMate starter tips. Whilst milling around, I stumbled upon an old trick I used to use in Quicksilver (before I gave up on it1), but had forgotten about since. It’s a very simple little shell command which uses curl&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/is-your-url-too-short-try-our-system-free/">Is your URL too short? Try our system, free!</a></p>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;'  src="http://cdn2.brettterpstra.com/wp-content/uploads/2010/08/urlextender_system.jpg?9d7bd4" alt="URL Extender System" border="0" width="300" height="260" class="alignright noshadow" />I was sifting through my <a href="http://blog.circlesixdesign.com">previous blog</a> after Jeffery Zeldman kindly <a href="http://www.zeldman.com/2010/08/13/how-to-use-textmate/">sent a lot of visitors</a> in that direction for some <a href="http://blog.circlesixdesign.com/2007/01/02/digging-in-to-textmate/">TextMate starter tips</a>. Whilst milling around, I stumbled upon an <a href="http://blog.circlesixdesign.com/2007/10/19/reverse-shortened-urls-with-quicksilver/">old trick I used to use</a> in <a href="http://www.blacktree.com/">Quicksilver</a> (before I gave up on it<sup id="fnref:quicksilver"><a href="#fn:quicksilver" rel="footnote">1</a></sup>), but had forgotten about since.</p>

<p>It’s a very simple little shell command which uses <code>curl</code> to track down the destination of a shortened url (or any link with a redirect). It works with an assortment of services, including bit.ly, tinyurl.com, ow.ly, etc. It returns the destination address (the original url), and you can pass that on to whatever you like!</p>

<p><strong>Side note</strong>: I’ve been working on a little site called <a href="http://justthelinks.com">JustTheLinks</a> which makes liberal use of url-lengthening. It grabs all of your tweets from your home timeline which contain links, and creates a live-updated list with expanded urls and titles. It uses PHP’s curl to do the trick, so it’s the same concept. It’s “in-progress,” but feel free to check it out at <a href="http://justthelinks.com">http://justthelinks.com</a>!</p>

<p>Anyway, I decided to update the Quicksilver action and adapt it for some other uses. I’m happy to report that it’s still quite useful as a command line script, a LaunchBar action or a System Service. This post has code for all three, so take your pick!</p>

<p><span id="more-899"></span></p>

<p>The <code>curl</code> command in this script has two options specified, –I and –s. –I tells it to fetch only the headers of the requested URI, and the –s tells it to suppress error messages (silent). The result is a short response which contains the location of the redirect, which is piped to <code>awk</code>. We look for the line in the response containing “Location” and print the second field of that line, which is the destination url. Here are a few ways I thought of to put it to use:</p>

<h3>Terminal</h3>

<p>The first thing I did was whip up a shell script to run from the command line. Just create a text file wherever you keep scripts<sup id="fnref:scripts"><a href="#fn:scripts" rel="footnote">2</a></sup>, or make a new directory somewhere for it. Paste in the code below, and name it something that makes sense to you. I went with <code>follow</code>, because it’s following the redirect path, and <code>expand</code> was taken (and lengthen didn’t seem as much fun to type…). The script looks for a single argument, which would be the shortened url, and if it doesn’t receive one it tries the clipboard. So, if you already have the url in your clipboard, which is a pretty safe bet in this case, you can just run the script with no arguments.</p>

<div markdown=0>
<pre><code class="bash">
#!/bin/bash

if [ $# -eq 0 ]; then
  curl -Is `pbpaste` | awk &#x27;/Location/ { print $2 }&#x27;  
else
  curl -Is $1 | awk &#x27;/Location/ { print $2 }&#x27;
fi
</code></pre>
</div>

<h3>LaunchBar</h3>

<p>I heart <a href="http://www.obdev.at/products/launchbar/index.html" title="LaunchBar 5">LaunchBar</a>. Like Quicksilver, you can easily build “actions” for it that act on different types of input. This one just acts on text you paste or send to it, and assumes it’s going to be a shortened URL. After it lengthens it, it just displays the result as large popup text. If you wanted to, you could easily have it <code>open location</code> or whatever, but the whole point is just to see where you’re going, right?</p>

<p>This just goes into <code>~/Library/Application Support/LaunchBar/Actions</code> as a compiled AppleScript (scpt) file. Open AppleScript Editor and paste in the code below (or just <a href="applescript://com.apple.scripteditor?action=new&amp;script=on%20handle_string%28message%29%0A%09%0A%09tell%20application%20%22LaunchBar%22%0A%09%09set%20_res%20to%20do%20shell%20script%20%22curl%20%2DIs%20%22%20%26%20message%20%26%20%22%20%7C%20awk%20%27%2FLocation%2F%20%7B%20print%20%242%20%7D%27%22%0A%09%09display%20in%20large%20type%20_res%0A%09end%20tell%0A%09%0Aend%20handle_string">click here to open it automatically</a> in your editor). Save the file to the Actions folder and give it a name you’ll recognize. Mine’s called ‘Expand Shortened URL.scpt’. Clever, I know. Here’s the code:</p>

<div markdown=0>
<pre><code class="as">
on handle_string(message)

    tell application &quot;LaunchBar&quot;
        set _res to do shell script &quot;curl -Is &quot; &amp; message &amp; &quot; | awk &#x27;/Location/ { print $2 }&#x27;&quot;
        display in large type _res
    end tell

end handle_string
</code></pre>
</div>

<h3>Snow Leopard Service</h3>

<p>Lastly, here’s a System Service that you can run on selected text in any Cocoa application. I’ve previously posted a <a href="http://brettterpstra.com/a-system-service-for-to-url-shortening/">Service for shortening urls</a>, so here’s the opposite. This one can actually take a whole block of text and will scan for any and all links in it, attempting to lengthen and replace any shortened urls in the text. Here’s how to build it:</p>

<ul>
<li>Open Automator.app</li>
<li>Select “Service” from the new file menu</li>
<li>Set “Service receives selected” to “text” in “any application”</li>
<li>Check the “Replaces selected text” box</li>
<li>Find the “Run Shell Script” action on the left and drag it into your workflow on the right</li>
<li>Set the Shell to Ruby (in this case)</li>
<li>Paste in the code below</li>
<li>Save the file to the <code>~/Library/Services</code> folder, named something like “Expand shortened urls in selection” (or something more interesting)</li>
</ul>

<p>Now, when you select text in any Cocoa application (Safari, Mail, TextEdit, etc.), you’ll be able to find your Service in the Services submenu of either the application menu in the menubar, or in the contextual menu that comes up when you right click (ctrl-click) the selected text. When you run it, it will replace your text with a new version with any shortened urls in it expanded.</p>

<div markdown=0>
<pre><code class="ruby">
#!/usr/bin/env ruby -rjcode -Ku

require &#x27;open-uri&#x27;

input = STDIN.read
links = input.scan(/\b((?:https?:\/\/)(?:www\.)?([^\/]+)\/[a-zA-Z0-9]+[^\s`!()\[\]{};:&#x27;&quot;.,&lt;&gt;?&laquo;&raquo;&ldquo;&rdquo;&lsquo;&rsquo;])/im)
links.each {|link|
  result = %x{curl -Is #{link[0]} | awk &#x27;/Location/ { print $2 }&#x27;}
  input = input.gsub(/#{link[0]}/,result.strip)
}
print input
</code></pre>
</div>

<p>How often will you need any of these little experiments? Probably not very often. Most of the time, I’m more than happy to just follow a shortened link and trust that the description it came with will hold true. Every once in a while, though, I come across a link of unknown origin that I’d prefer to run through something like this. Hopefully you’ll be able to find a use for it, too. It’s a cool little snippet.</p>

<div class="footnotes">
<hr />
<ol>

<li id="fn:quicksilver">
<p>Sorry, Quicksilver fans. It used to be my absolute, must-have, favorite thing in the world, but it got too crashy on Snow Leopard, and then development just kind of died. <a href="http://www.obdev.at/products/launchbar/index.html" title="LaunchBar 5">LaunchBar</a> is way better these days. <a href="#fnref:quicksilver" rev="footnote">↩</a></p>
</li>

<li id="fn:scripts">
<p>I keep a ‘scripts’ folder in my home directory (~/scripts) and put that in my PATH environment variable in my .bash_profile. Then, I can run my scripts from anywhere but don’t have to muck around in <code>/usr/local/bin</code> or any such thing. <a href="#fnref:scripts" rev="footnote">↩</a></p>
</li>

</ol>
</div>
<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/a-system-service-for-to-url-shortening/' rel='bookmark' title='A System Service for to. url shortening'>A System Service for to. url shortening</a></li>
<li><a href='http://brettterpstra.com/launchbar-actions-for-url-encoding-and-decoding/' rel='bookmark' title='LaunchBar actions for url encoding and decoding'>LaunchBar actions for url encoding and decoding</a></li>
<li><a href='http://brettterpstra.com/a-better-os-x-system-service-for-evernote-notes-with-multimarkdown/' rel='bookmark' title='A better System Service for Evernote clipping — with MultiMarkdown'>A better System Service for Evernote clipping — with MultiMarkdown</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/is-your-url-too-short-try-our-system-free/">Is your URL too short? Try our system, free!</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/is-your-url-too-short-try-our-system-free/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A System Service for to. url shortening</title>
		<link>http://brettterpstra.com/a-system-service-for-to-url-shortening/</link>
		<comments>http://brettterpstra.com/a-system-service-for-to-url-shortening/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 02:03:48 +0000</pubDate>
		<dc:creator>Brett</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[snow leopard]]></category>
		<category><![CDATA[System Service]]></category>
		<category><![CDATA[url shortener]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://brettterpstra.com/?p=399</guid>
		<description><![CDATA[<p>I’m fascinated by http://to. It’s a url shortener with no TLD. Some browsers, and apparently some DNS setups, don’t like the urls it creates (they want a .com or .org or anything at the end), so it’s not exactly in heavy usage. Still, I wish they had an API. In lieu of that, here’s a quick Ruby script that will&#8230;</p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/a-system-service-for-to-url-shortening/">A System Service for to. url shortening</a></p>]]></description>
			<content:encoded><![CDATA[<p>I’m fascinated by <a href="http://to.">http://to</a>. It’s a url shortener with no <acronym title="Top Level Domain">TLD</acronym>. Some browsers, and apparently some DNS setups, don’t like the urls it creates (they want a .com or .org or <em>anything</em> at the end), so it’s not exactly in heavy usage. Still, I wish they had an API. In lieu of that, here’s a quick Ruby script that will run on a stock OS X install as a System Service. It’s so simple that I’m not even going to package it up… It’ll be a good chance to show the steps for creating your own utilities using <a href="http://macosautomation.com/services/index.html">Snow Leopard Services</a>:</p>

<ul>
<li>Open Automator and choose “Service” from the first menu.</li>
<li>Tell it that the service “receives text” in “any application”. </li>
<li>Drag the “Run Shell Script” action from the left side. </li>
<li>Set the Shell to Ruby</li>
<li>Paste in the code below (or something of your own, hopefully far more interesting)</li>
<li>Save it with an intuitive name</li>
<li>Use it.</li>
</ul>


<div class="wp_syntax"><div class="code"><pre class="ruby"><span class="kw3">require</span> <span class="st0">'net/http'</span>
<span class="kw3">require</span> <span class="st0">'cgi'</span>
&nbsp;
input = STDIN.<span class="me1">read</span>
http = <span class="re2">Net::HTTP</span>.<span class="me1">new</span><span class="br0">&#40;</span><span class="st0">'to.'</span><span class="br0">&#41;</span>
path = <span class="st0">'/'</span>
&nbsp;
data = <span class="st0">&quot;url=#{CGI.escape(input.strip)}&quot;</span>
headers = <span class="br0">&#123;</span><span class="st0">'Content-Type'</span> <span class="sy0">=&gt;</span> <span class="st0">'application/x-www-form-urlencoded'</span><span class="br0">&#125;</span>
&nbsp;
resp, data = http.<span class="me1">post</span><span class="br0">&#40;</span>path, data, headers<span class="br0">&#41;</span>
&nbsp;
<span class="kw1">if</span> resp.<span class="me1">code</span>.<span class="me1">to_i</span> == <span class="nu0">200</span>
  <span class="kw3">print</span> data.<span class="kw3">split</span><span class="br0">&#40;</span><span class="sy0">/</span>value=<span class="st0">&quot;/)[1].split(/&quot;</span><span class="sy0">/</span><span class="br0">&#41;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span>
<span class="kw1">else</span>
  <span class="kw3">print</span> input
<span class="kw1">end</span></pre></div></div>


<p>Basically, anything you can do to or with text or files using a major scripting language, you can make into a Snow Leopard service. Now that I’ve set the bar this low, I’d love to see what new Services everyone else is cooking up!</p>

<p><strong>Update:</strong> <del datetime="2010-04-29T03:34:55+00:00">Yeah, that didn’t work out so well. It works sometimes, but leaves url parameters in the shortened url half the time. I haven’t figured out why, but I’ll leave it up and see if someone can point out the error of my ways…</del><ins datetime="2010-04-29T03:34:55+00:00">Fixed it, just neglected to notice it needed a POST, not a GET</ins></p>

<p><strong>Update 2:</strong> Here, this one’s shorter and more useful :)</p>


<div class="wp_syntax"><div class="code"><pre class="ruby"><span class="kw3">require</span> <span class="st0">'open-uri'</span>
<span class="kw3">require</span> <span class="st0">'cgi'</span>
&nbsp;
input = STDIN.<span class="me1">read</span>
<span class="kw3">print</span> <span class="kw3">open</span><span class="br0">&#40;</span><span class="st0">&quot;http://is.gd/api.php?longurl=#{CGI.escape(input.strip)}&quot;</span><span class="br0">&#41;</span>.<span class="me1">read</span></pre></div></div>

<p>Related posts:<ol>
<li><a href='http://brettterpstra.com/is-your-url-too-short-try-our-system-free/' rel='bookmark' title='Is your URL too short? Try our system, free!'>Is your URL too short? Try our system, free!</a></li>
<li><a href='http://brettterpstra.com/textexpander-bit-ly-with-authentication/' rel='bookmark' title='TextExpander: bit.ly with authentication'>TextExpander: bit.ly with authentication</a></li>
<li><a href='http://brettterpstra.com/textexpander-experiments/' rel='bookmark' title='TextExpander experiments'>TextExpander experiments</a></li>
</ol></p><p>Originally posted on <a href="http://brettterpstra.com" title="BrettTerpstra.com">BrettTerpstra.com</a> at <a href="http://brettterpstra.com/a-system-service-for-to-url-shortening/">A System Service for to. url shortening</a></p>]]></content:encoded>
			<wfw:commentRss>http://brettterpstra.com/a-system-service-for-to-url-shortening/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using disk: enhanced
Database Caching 10/46 queries in 0.071 seconds using xcache
Object Caching 1274/1320 objects using xcache
Content Delivery Network via cdn2.brettterpstra.com

Served from: brettterpstra.com @ 2012-05-23 04:50:55 -->
