<?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/"
	>

<channel>
	<title>Daniel Shorten</title>
	<atom:link href="http://daniel.shortens.net/feed" rel="self" type="application/rss+xml" />
	<link>http://daniel.shortens.net</link>
	<description></description>
	<pubDate>Mon, 22 Feb 2010 20:43:54 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Update all 10/13/2009</title>
		<link>http://daniel.shortens.net/bookmarks/update-all-10132009</link>
		<comments>http://daniel.shortens.net/bookmarks/update-all-10132009#comments</comments>
		<pubDate>Tue, 13 Oct 2009 00:32:38 +0000</pubDate>
		<dc:creator>Daniel Shorten</dc:creator>
		
		<category><![CDATA[My bookmarks]]></category>

		<guid isPermaLink="false">http://daniel.shortens.net/bookmarks/update-all-10132009</guid>
		<description><![CDATA[

Timeslicing for Humans - Stepcase Lifehack
tags: time

Posted from Diigo. The rest of my favorite links are here.
]]></description>
			<content:encoded><![CDATA[<ul class='diigo-linkroll'>
<li>
<p class='diigo-link'><a rel='nofollow' href='http://www.lifehack.org/articles/lifehack/timeslicing-for-humans.html'>Timeslicing for Humans - Stepcase Lifehack</a></p>
<p class='diigo-tags'><a style='color:#000 !important;text-decoration:none !important;' href='http://www.diigo.com/cloud/danielshorten'>tags</a>: <a href='http://www.diigo.com/user/danielshorten/time'>time</a></p>
</ul>
<p>Posted from <a href='http://www.diigo.com'>Diigo</a>. The rest of my <a href='http://www.diigo.com/user/danielshorten'>favorite links</a> are here.</p>
]]></content:encoded>
			<wfw:commentRss>http://daniel.shortens.net/bookmarks/update-all-10132009/feed</wfw:commentRss>
		</item>
		<item>
		<title>Inside Out Brochure</title>
		<link>http://daniel.shortens.net/portfolio/print/inside-out-brochure</link>
		<comments>http://daniel.shortens.net/portfolio/print/inside-out-brochure#comments</comments>
		<pubDate>Tue, 15 Sep 2009 23:47:09 +0000</pubDate>
		<dc:creator>Daniel Shorten</dc:creator>
		
		<category><![CDATA[Print]]></category>

		<guid isPermaLink="false">http://daniel.shortens.net/?p=378</guid>
		<description><![CDATA[A lengthwise tri-fold brochure, designed for Balmoral Bible Chapel to promote their fall kick-off Sunday. The design is interactive, provokes curiosity, and conveys personality and excitement.
]]></description>
			<content:encoded><![CDATA[<p>A lengthwise tri-fold brochure, designed for Balmoral Bible Chapel to promote their fall kick-off Sunday. The design is interactive, provokes curiosity, and conveys personality and excitement.</p>
]]></content:encoded>
			<wfw:commentRss>http://daniel.shortens.net/portfolio/print/inside-out-brochure/feed</wfw:commentRss>
		</item>
		<item>
		<title>HostPapa: The Good, the Bad, and the Ugly</title>
		<link>http://daniel.shortens.net/weblog/hostpapa-the-good-the-bad-and-the-ugly</link>
		<comments>http://daniel.shortens.net/weblog/hostpapa-the-good-the-bad-and-the-ugly#comments</comments>
		<pubDate>Sun, 23 Aug 2009 03:13:11 +0000</pubDate>
		<dc:creator>Daniel Shorten</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<guid isPermaLink="false">http://daniel.shortens.net/?p=367</guid>
		<description><![CDATA[The hosting market is a jungle. There are tons of hosts offering unlimited bandwidth, unlimited storage space, unlimited email accounts. But when the rubber hit the road, all I wanted was small-scale service I could count on.
I&#8217;ve had great personal experience with 1&#38;1; maybe I can write more about them another day. But I was [...]]]></description>
			<content:encoded><![CDATA[<p>The hosting market is a jungle. There are tons of hosts offering unlimited bandwidth, unlimited storage space, unlimited email accounts. But when the rubber hit the road, all I wanted was small-scale service I could count on.<span id="more-367"></span></p>
<p>I&#8217;ve had great personal experience with <a href="http://www.1and1.com">1&amp;1</a>; maybe I can write more about them another day. But I was helping a client migrate from an unreliable host, so I was very concerned about customer support as well as reliability. I&#8217;ve read horrific reports of 1&amp;1 customers trying to get help over the phone from someone in India, which is nowhere close to the actual data centers. In spite of my good experience with 1&amp;1, critical reviews made me nervous.</p>
<p>So I started searching for Canadian hosts, and <a href="http://hostpapa.com">HostPapa</a> seemed to come highly recommended. They&#8217;re a relatively new host but seem to have a very loyal and satisfied client base. Having run a successful business in the UK, they decided to open up a base in Ontario. Among other <a href="http://hostpapa.com/Plan_Features.shtml">encouraging offerings</a>, they promise 99.9% uptime, a state-of-the-art data center, and that they purchase &#8220;green energy&#8221; credits according to their energy consumption. Their technical support is also located in Ontario, which reassured me.</p>
<p>I was sold. I signed up for three years of service.</p>
<p>On day one I started transferring my client&#8217;s Web site to the new Web space. Before all of it was transferred, I got an error about exceeding available disk space. I phoned customer support and quickly discovered that, truly, the server was out of disk space. Apparently another user had decided to take them up on their offer of unlimited disk space and filled up the whole server. So I had to wait for a day for them to sort that out.</p>
<p>The next day I was able to get the Web site up.</p>
<p>I was designing a Web app for this client that would not be hosted at HostPapa, so I needed access to the DNS records to set up a subdomain for the external app. I soon realized that the admin interface used by HostPapa would not give me this degree of control, so I contacted support to see if they could add a DNS record for me.  I gave them the address of my other host and they said that they could.</p>
<p>At least four days later, the subdomain was still not working. I asked support about it, and they said they were still working on it. Later I received an email saying that my ticket had been resolved, only to see that support had created a subdomain for a folder in the <code>public_html</code> directory of my HostPapa account. Definitely not what I had asked for.</p>
<p><em>(As an aside, 1&amp;1 allows you do this easily using their admin interface; the new subdomain and DNS entries are sometimes functional within minutes.)</em></p>
<p>So I decided to transfer the domain away from HostPapa to a DNS server that I could control. During this wait, I had created all of the employees email accounts by uploading a CSV file with email addresses and passwords. I then I transferred all the mail from the old host to the new accounts using <a href="http://freshmeat.net/projects/imapsync/">imapsync</a>.</p>
<p>Web site and email were transferred, up, and working better for my client than they had in months. For a day or so. Suddenly email was down because of some certificate inconsistency on HostPapa&#8217;s end. This problem persisted for most of a day, and I was becoming more and more nervous that this was a taste of the 99.9% uptime that I had signed my client up for.</p>
<p>To their credit, HostPapa&#8217;s technical support was always very easy to contact and transparent in addressing problems. After the first two weeks of madness, my client settled into a very reliable experience with the host&#8230;</p>
<p>&#8230; until last week, when there was some massive hardware failure on HostPapa servers. Mail was recovered, as well as Web files, but the MySQL database that stored not only the content of my client&#8217;s Web site but also all of the HTML and CSS templates was lost, leaving the home page a white screen with a database error message.</p>
<p>I&#8217;m trying to give an objective account of my experience with HostPapa. No host is perfect. Obviously I&#8217;ve had months of seamless service. However, migration and initial setup was brutal, and within one year of service, I&#8217;ve lost my database. There are tons of complaints online about big hosts like 1&amp;1. I can say two things:</p>
<ol>
<li>I&#8217;ve been with 1&amp;1 for at least five times as long as HostPapa and have never lost any data due to their fault.</li>
<li>I&#8217;d rather have service that just works than great customer support to help me handle all the problems.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://daniel.shortens.net/weblog/hostpapa-the-good-the-bad-and-the-ugly/feed</wfw:commentRss>
		</item>
		<item>
		<title>Production, Staging, and Development: Tips and Best Practices</title>
		<link>http://daniel.shortens.net/weblog/production-staging-and-development-tips-and-best-practices</link>
		<comments>http://daniel.shortens.net/weblog/production-staging-and-development-tips-and-best-practices#comments</comments>
		<pubDate>Fri, 03 Jul 2009 19:07:57 +0000</pubDate>
		<dc:creator>Daniel Shorten</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<guid isPermaLink="false">http://daniel.shortens.net/?p=313</guid>
		<description><![CDATA[If you&#8217;re only dealing with a simple Web site that you develop and deploy in one iteration, you may never have to worry about updating it, or you may be able to get away with hot fixes, straight to the live site. However, once you start dealing with a project of considerable complexity, and one [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re only dealing with a simple Web site that you develop and deploy in one iteration, you may never have to worry about updating it, or you may be able to get away with hot fixes, straight to the live site. However, once you start dealing with a project of considerable complexity, and one with multiple development iterations, there&#8217;s no way around some sort of tiered system for update deployment—unless you write perfect code, in which case you should stop reading my blog and go make a million dollars.<span id="more-313"></span></p>
<p>The trouble of course is that as you&#8217;re developing a new feature, you make changes or additions to the existing code of your application. But let&#8217;s say you can&#8217;t always write perfect code, and can&#8217;t predict the effects of your new code. If something breaks, any of the people using your system will see the wreck, all of a sudden. For the users, it would be like trying to drive a car while a service technician is working on the transmission: very difficult, and very annoying.</p>
<p>So, don&#8217;t do work on the live (production) site—only update it when you&#8217;re 99% certain that your updates are working properly.  A few technicalities arise:</p>
<ol>
<li>If you can&#8217;t work in the Production environment, where do you work?  And how can your working environment (Development) be as similar as possible to Production?</li>
<li>How do you move code (and data, and other components) between Development and Production? How do you make sure that you&#8217;re working off of current Production data? How do you deploy an update to Production smoothly (without taking forever, without missing a file/update)?</li>
<li>How do you design your application so that it can be shoved around (from Production to Staging, to Development) without breaking paths, database connections.</li>
</ol>
<p>The good news is that, with a little work and foresight, all these considerations can be easily managed.</p>
<h2>Development and Staging</h2>
<p>Your development tiers will depend on the size and complexity if your project.  For instance, if there is only one developer, you can get away with a single development environment where you do your work before updating.</p>
<p>As soon as there are multiple developers working on the same project, it becomes desirable for each person or team to have a &#8220;sandbox,&#8221; where one can mess around while building new functionality.  And once there are multiple components being built at a time, it becomes necessary to have another type of workspace (typically called a Staging environment) where all of the separate components can be tested together, before they are released to Production.</p>
<p>So how do you make a development environment?</p>
<h2>Creating the Development Environment</h2>
<p>Some people have the luxury of working with <a href="http://en.wikipedia.org/wiki/Virtual_private_server">Virtual Servers</a>, where it&#8217;s trivial to &#8220;clone&#8221; the Production server, giving you an exact copy to fool around with. In this case, there are fewer considerations in obtaining a development environment.</p>
<p>If you aren&#8217;t working with virtual servers, you might have to manually make a copy of Production.  In this case, it&#8217;s easier to ensure congruence between Development and Production if Development can run on the same server as Production.  This is likely not feasible for large projects, since Production will need all available resources to serve clients.</p>
<h2>Transferring Code and Data</h2>
<p>In any case, working without a virtual server requires some manual copying, so the key is <strong>automate</strong>.</p>
<p>Write a script that copies the production databases to a new test version.  With MySQL (if you have the right permissions), you can just copy the database folder in /var/lib/mysql (or wherever your database files are kept).</p>
<p>In my case, I check out code from a version control repository to start a fresh development environment, but the repository doesn&#8217;t track every single thing that the application needs to run. For all those extra things, add them to some kind of shell script so that you can get set up right away.</p>
<p>Speaking of version control, I&#8217;ve found this to be a huge help in managing code between Development and Production. I&#8217;m not sure if this is an accepted best practice, but it&#8217;s working for me. Using <a href="http://git-scm.com/">git</a>, I keep Production managed under its own repository. When I want to start a fresh development server, I check out (clone) the Production code. As I work, I commit any changes to my development repository. Then, when I&#8217;m ready to release the new features to Production, I use git&#8217;s <code>pull</code> command to fetch updates from Development and apply them to Production. The big advantage I find here is that I don&#8217;t have to keep track of what I&#8217;ve changed; as long as I commit the changes, git knows what to update.<!--more--></p>
<p>Note that even if you were sure that your code worked, you wouldn&#8217;t want to use <code>pull</code> to update Production unless you were certain that there wouldn&#8217;t be any conflicts when merging the new code with the old code. This isn&#8217;t usually a problem with a small number of developers, but with multiple branches of code, conflicts may arise that need to be manually sorted out.</p>
<p>Obviously proper testing standards fit into the updating process, but that&#8217;s another topic for another time.</p>
<h2>Application Design</h2>
<p>To make development server setup as quick as possible (and many other maintenance tasks), any global, server-specific variables or configuration should be specified in a separate configuration file: database connection information, server path, base URL for the Web site, debug settings. I keep these settings in a file that isn&#8217;t even tracked by version control. That way (if I&#8217;m really smart), I can write a script that will copy all the production code, data, etc., and create the configuration file with all the appropriate test database connection info and all the paths to wherever my development server is installed.</p>
<p>With all server-specific settings isolated, it&#8217;s easy to copy your code between servers, because you know it will be grabbing the right path and connection information from the respective configuration file.</p>
<p>With good design and a little work, starting a fresh, up-to-date development environment will be a command away at the shell prompt. Wow! Almost makes you want to write that next login screen!</p>
]]></content:encoded>
			<wfw:commentRss>http://daniel.shortens.net/weblog/production-staging-and-development-tips-and-best-practices/feed</wfw:commentRss>
		</item>
		<item>
		<title>Update all 06/09/2009</title>
		<link>http://daniel.shortens.net/bookmarks/update-all-06092009</link>
		<comments>http://daniel.shortens.net/bookmarks/update-all-06092009#comments</comments>
		<pubDate>Tue, 09 Jun 2009 00:31:06 +0000</pubDate>
		<dc:creator>Daniel Shorten</dc:creator>
		
		<category><![CDATA[My bookmarks]]></category>

		<guid isPermaLink="false">http://daniel.shortens.net/bookmarks/update-all-06092009</guid>
		<description><![CDATA[

Creating Accessible Flash Content
tags: accessibility, flash

Posted from Diigo. The rest of my favorite links are here.
]]></description>
			<content:encoded><![CDATA[<ul class='diigo-linkroll'>
<li>
<p class='diigo-link'><a rel='nofollow' href='http://www.webaim.org/techniques/flash'>Creating Accessible Flash Content</a></p>
<p class='diigo-tags'><a style='color:#000 !important;text-decoration:none !important;' href='http://www.diigo.com/cloud/danielshorten'>tags</a>: <a href='http://www.diigo.com/user/danielshorten/accessibility'>accessibility</a>, <a href='http://www.diigo.com/user/danielshorten/flash'>flash</a></p>
</ul>
<p>Posted from <a href='http://www.diigo.com'>Diigo</a>. The rest of my <a href='http://www.diigo.com/user/danielshorten'>favorite links</a> are here.</p>
]]></content:encoded>
			<wfw:commentRss>http://daniel.shortens.net/bookmarks/update-all-06092009/feed</wfw:commentRss>
		</item>
		<item>
		<title>Wild Rose Fibres</title>
		<link>http://daniel.shortens.net/portfolio/webdesign/wild-rose-fibres</link>
		<comments>http://daniel.shortens.net/portfolio/webdesign/wild-rose-fibres#comments</comments>
		<pubDate>Fri, 05 Jun 2009 18:19:22 +0000</pubDate>
		<dc:creator>Daniel Shorten</dc:creator>
		
		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[featured]]></category>

		<guid isPermaLink="false">http://daniel.shortens.net/?p=333</guid>
		<description><![CDATA[This Central-Alberta-based business has been online for a few years, showcasing their selection of spinning fibres, wheels, and accessories. As a part of new ownership and direction, Wild Rose Fibres decided to leverage new Internet technology to launch a redesigned and automated e-commerce site.
The new Web site allows products and prices to be managed from [...]]]></description>
			<content:encoded><![CDATA[<p>This Central-Alberta-based business has been online for a few years, showcasing their selection of spinning fibres, wheels, and accessories. As a part of new ownership and direction, Wild Rose Fibres decided to leverage new Internet technology to launch a redesigned and automated e-commerce site.</p>
<p>The new Web site allows products and prices to be managed from a store back end, where products can be immediately added or removed, and special offers or product features can be applied. Customers can complete their transactions online at their convenience.</p>
<p>This site features a clean graphic design, and was built using the <a href="http://www.djangoproject.com">Django</a> Python Web framework, using <a href="http://www.satchmoproject.com">Satchmo</a> for the store shell.</p>
<p><a href="http://wildrosefibres.ca">Visit site »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://daniel.shortens.net/portfolio/webdesign/wild-rose-fibres/feed</wfw:commentRss>
		</item>
		<item>
		<title>Red Deer Pet Cremation Service</title>
		<link>http://daniel.shortens.net/portfolio/webdesign/red-deer-pet-cremation-service</link>
		<comments>http://daniel.shortens.net/portfolio/webdesign/red-deer-pet-cremation-service#comments</comments>
		<pubDate>Fri, 05 Jun 2009 17:53:50 +0000</pubDate>
		<dc:creator>Daniel Shorten</dc:creator>
		
		<category><![CDATA[Web Design]]></category>

		<category><![CDATA[featured]]></category>

		<guid isPermaLink="false">http://daniel.shortens.net/?p=328</guid>
		<description><![CDATA[Formerly known as the Red Deer Pet Cemetary, the Red Deer Pet Cremation Service is a well-established local business that has been serving the community since 1997. They carry a wide variety of pet urns and were often asked if their inventory could be browsed online.
The new Web site and catalogue make it easy for [...]]]></description>
			<content:encoded><![CDATA[<p>Formerly known as the Red Deer Pet Cemetary, the Red Deer Pet Cremation Service is a well-established local business that has been serving the community since 1997. They carry a wide variety of pet urns and were often asked if their inventory could be browsed online.</p>
<p>The new Web site and catalogue make it easy for customers to view the selection of urns and keepsakes while giving the business a confident online presence that matches their established identity.</p>
<p>I also provided the product photography service for this project.</p>
<p><a href="http://reddeerpetcremationservice.com">Visit site »</a></p>
]]></content:encoded>
			<wfw:commentRss>http://daniel.shortens.net/portfolio/webdesign/red-deer-pet-cremation-service/feed</wfw:commentRss>
		</item>
		<item>
		<title>Simple WordPress Thumbnail Snippets</title>
		<link>http://daniel.shortens.net/weblog/simple-wordpress-thumbnail-snippets</link>
		<comments>http://daniel.shortens.net/weblog/simple-wordpress-thumbnail-snippets#comments</comments>
		<pubDate>Thu, 04 Jun 2009 04:46:51 +0000</pubDate>
		<dc:creator>Daniel Shorten</dc:creator>
		
		<category><![CDATA[Weblog]]></category>

		<guid isPermaLink="false">http://daniel.shortens.net/?p=315</guid>
		<description><![CDATA[Thumbnails are really handy, depending on the type of site you&#8217;re designing. The nice thing is that WordPress automatically generates several thumbnail sizes of uploaded images.
You likely noticed that the title uses the term Snippets as opposed to Plugins.  These could be put into plugin form, but they can also be added to a [...]]]></description>
			<content:encoded><![CDATA[<p>Thumbnails are really handy, depending on the type of site you&#8217;re designing. The nice thing is that WordPress automatically generates several thumbnail sizes of uploaded images.</p>
<p>You likely noticed that the title uses the term Snippets as opposed to Plugins.  These could be put into plugin form, but they can also be added to a WordPress theme&#8217;s <code>functions.php</code> file. I&#8217;m not sure of the version compatibility of the code; it&#8217;s been tested with WordPress 2.7.<span id="more-315"></span></p>
<h2>Post Thumbnail</h2>
<p>This is a minimal-overhead thumbnail solution. It makes use of WordPress&#8217;s default thumbnail behaviour. I like this approach because it&#8217;s relatively foolproof if I&#8217;m asking non-technical clients to upload photos—they don&#8217;t have to know anything about the thumbnails, they just need to dump in the source file.</p>
<p>If you look under <strong>Settings &gt; Media</strong> in the WordPress admin, you&#8217;ll see three image sizes that you can configure. When you add an image to the media library of a post, WordPress will upload the original <em>and</em> save three smaller versions (provided that the image you uploaded was bigger than these in the first place). So in the end you&#8217;ll have four image sizes: full (original), large, medium, and thumbnail.</p>
<p>If you plan your design carefully, this should be enough sizes to make you&#8217;re life pretty easy. For instance, I designed a site where various products were stored as posts. For each post, I added a product photo to the media library. I had 150 x 150 thumbnails in the catalogue, 200 x 133 thumbnails on the home page, and a 300 x 200 size on the single product page. The user could then click to view the full size.</p>
<p>I made all of this happen by adding the following code to the theme&#8217;s functions.php:</p>
<pre class="code">function get_image_url($parent_id, $size='thumbnail', $return=false) {
    $images =&amp; get_children('post_parent=' . $parent_id .'&amp;post_type=attachment&amp;post_mime_type=image');
    if (is_array($images)) {
        foreach ($images as $attachment_id =&gt; $attachment) {
            $result = wp_get_attachment_image_src($attachment_id, $size);
            $result = $result[0];
            if ($return)
                return $result;
            else {
                echo $result;
                return;
            }
        }
    }
    else
        if ($return)
            return false;
}</pre>
<p>Then, when I want the URL to the medium thumbnail for a post, I just use this in my template:</p>
<pre class="code">get_image_url($post-&gt;ID, 'medium');</pre>
<p>Essentially, this will grab the first image in the media library of the given post.  Like I said, the size options are <code>'full'</code>, <code>'large'</code>, <code>'medium'</code>, and <code>'thumbnail'</code>. The function echoes the URL by default.  If you want to store the URL for use later, set the <code>$return</code> parameter to <code>true</code>.</p>
<h2>Category Thumbnail</h2>
<p>In the same vein, I&#8217;ve needed a category thumbnail on a couple of occasions, when most of my posts are prominently associated with images.</p>
<p>Please note that the following snippet makes use of a <a href="/wp-content/uploads/2009/06/random-termpost.zip">modified version</a> of <a href="http://www.screenflicker.com/">Mike Stickel</a>&#8217;s <em>Random posts from random terms</em> plugin. I just modified it for easier access to his useful utility functions.</p>
<p>The function grabs a random post from a specific category and gets its thumbnail (using the previous function):</p>
<pre class="code">function get_category_image_url($category_id, $size='thumbnail', $return=false) {
    $random_post = ms_random_post($category_id, 1, false);
    if (sizeof($random_post) &gt; 0) {
        if ($return)
            return get_image_url($random_post[0]['id'], $size, true);
        else
            get_image_url($random_post[0]['id'], $size, false);
    }
    else
        if ($return)
            return false;
}</pre>
<p>Now I can quickly get a relevant thumbnail for a category:</p>
<pre class="code">get_category_image_url($category_id);</pre>
<p>As you can see from the function definitions, size defaults to <code>thumbnail</code>.</p>
<p>If these snippets don&#8217;t do exactly what you need them to do, they are hopefully simple enough that you can adapt them to your requirements.</p>
]]></content:encoded>
			<wfw:commentRss>http://daniel.shortens.net/weblog/simple-wordpress-thumbnail-snippets/feed</wfw:commentRss>
		</item>
		<item>
		<title>Update all 05/27/2009</title>
		<link>http://daniel.shortens.net/bookmarks/update-all-05272009</link>
		<comments>http://daniel.shortens.net/bookmarks/update-all-05272009#comments</comments>
		<pubDate>Wed, 27 May 2009 00:31:26 +0000</pubDate>
		<dc:creator>Daniel Shorten</dc:creator>
		
		<category><![CDATA[My bookmarks]]></category>

		<guid isPermaLink="false">http://daniel.shortens.net/bookmarks/update-all-05272009</guid>
		<description><![CDATA[

Django, Nginx + Memcached
tags: django, memcache, nginx, fcgi, caching

Posted from Diigo. The rest of my favorite links are here.
]]></description>
			<content:encoded><![CDATA[<ul class='diigo-linkroll'>
<li>
<p class='diigo-link'><a rel='nofollow' href='http://soyrex.com/blog/django-nginx-and-memcached'>Django, Nginx + Memcached</a></p>
<p class='diigo-tags'><a style='color:#000 !important;text-decoration:none !important;' href='http://www.diigo.com/cloud/danielshorten'>tags</a>: <a href='http://www.diigo.com/user/danielshorten/django'>django</a>, <a href='http://www.diigo.com/user/danielshorten/memcache'>memcache</a>, <a href='http://www.diigo.com/user/danielshorten/nginx'>nginx</a>, <a href='http://www.diigo.com/user/danielshorten/fcgi'>fcgi</a>, <a href='http://www.diigo.com/user/danielshorten/caching'>caching</a></p>
</ul>
<p>Posted from <a href='http://www.diigo.com'>Diigo</a>. The rest of my <a href='http://www.diigo.com/user/danielshorten'>favorite links</a> are here.</p>
]]></content:encoded>
			<wfw:commentRss>http://daniel.shortens.net/bookmarks/update-all-05272009/feed</wfw:commentRss>
		</item>
		<item>
		<title>Update all 05/19/2009</title>
		<link>http://daniel.shortens.net/bookmarks/update-all-05192009</link>
		<comments>http://daniel.shortens.net/bookmarks/update-all-05192009#comments</comments>
		<pubDate>Tue, 19 May 2009 00:32:08 +0000</pubDate>
		<dc:creator>Daniel Shorten</dc:creator>
		
		<category><![CDATA[My bookmarks]]></category>

		<guid isPermaLink="false">http://daniel.shortens.net/bookmarks/update-all-05192009</guid>
		<description><![CDATA[

Songwriting
tags: songwriting, music, inspiration

Posted from Diigo. The rest of my favorite links are here.
]]></description>
			<content:encoded><![CDATA[<ul class='diigo-linkroll'>
<li>
<p class='diigo-link'><a rel='nofollow' href='http://www.feedback.nildram.co.uk/richardebbs/essays/songwriting.htm'>Songwriting</a></p>
<p class='diigo-tags'><a style='color:#000 !important;text-decoration:none !important;' href='http://www.diigo.com/cloud/danielshorten'>tags</a>: <a href='http://www.diigo.com/user/danielshorten/songwriting'>songwriting</a>, <a href='http://www.diigo.com/user/danielshorten/music'>music</a>, <a href='http://www.diigo.com/user/danielshorten/inspiration'>inspiration</a></p>
</ul>
<p>Posted from <a href='http://www.diigo.com'>Diigo</a>. The rest of my <a href='http://www.diigo.com/user/danielshorten'>favorite links</a> are here.</p>
]]></content:encoded>
			<wfw:commentRss>http://daniel.shortens.net/bookmarks/update-all-05192009/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
