<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <atom:link href="http://cmdz.org/rss.xml" rel="self" type="application/rss+xml" />
        <title>Adventures in the Great Undo | CMD+Z</title>
        <link>http://cmdz.org/</link>
        <description>Adventures in the Great Undo</description>
        <language>en-us</language>
        <pubDate>Sat, 19 Nov 2011 00:54:57 -0700</pubDate>
        <generator>Django 1.2.4</generator>


        
        <item>
            <title>@ConanOBrien: Question: If I decide to switch from Team Edward to Team Jacob, how will that affect my rollover minutes?</title>
            <link>http://twitter.com/ConanOBrien/statuses/137695322020388864</link>
            <description>
                <![CDATA[
                    
                    
                ]]>
            </description>
            <pubDate>Sat, 19 Nov 2011 00:54:57 -0700</pubDate>
            <guid>http://twitter.com/ConanOBrien/statuses/137695322020388864</guid>
        </item>
        
        <item>
            <title>@EmilyBlakely: &quot;Actually, I&#39;m highly logical which allows me to look past extraneous details and perceive clearly that which others overlook.&quot;</title>
            <link>http://twitter.com/EmilyBlakely/statuses/136938701895909379</link>
            <description>
                <![CDATA[
                    
                    
                ]]>
            </description>
            <pubDate>Wed, 16 Nov 2011 22:48:25 -0700</pubDate>
            <guid>http://twitter.com/EmilyBlakely/statuses/136938701895909379</guid>
        </item>
        
        <item>
            <title>Robot Tea Infuser</title>
            <link>http://www.thinkgeek.com/ea57/</link>
            <description>
                <![CDATA[
                    
                    <a href="http://www.thinkgeek.com/ea57/" title="Robot Tea Infuser">
                        <img src="http://cmdz.org//2011/10/a_e002645b95.jpg" alt="Robot Tea Infuser" />
                    </a>
                    
                    <a href="http://www.thinkgeek.com/ea57/"><img src="/2011/10/a_61f92bd5bc.jpg" alt="Robot Tea Infuser"></a>
                ]]>
            </description>
            <pubDate>Thu, 27 Oct 2011 15:49:30 -0600</pubDate>
            <guid>http://www.thinkgeek.com/ea57/</guid>
        </item>
        
        <item>
            <title>@ConanOBrien: Siri, write a funny tweet for me, and don’t be a bitch about it.</title>
            <link>http://twitter.com/ConanOBrien/statuses/128654425605677057</link>
            <description>
                <![CDATA[
                    
                    
                ]]>
            </description>
            <pubDate>Tue, 25 Oct 2011 03:09:40 -0600</pubDate>
            <guid>http://twitter.com/ConanOBrien/statuses/128654425605677057</guid>
        </item>
        
        <item>
            <title>@EmilyBlakely: “The price of anything is the amount of life you exchange for it.”</title>
            <link>http://twitter.com/EmilyBlakely/statuses/123697108116193281</link>
            <description>
                <![CDATA[
                    
                    
                ]]>
            </description>
            <pubDate>Tue, 11 Oct 2011 10:51:03 -0600</pubDate>
            <guid>http://twitter.com/EmilyBlakely/statuses/123697108116193281</guid>
        </item>
        
        <item>
            <title>Errands</title>
            <link>http://nerf-this.com/errands/</link>
            <description>
                <![CDATA[
                    
                    <a href="http://nerf-this.com/errands/" title="Errands">
                        <img src="http://cmdz.org//2011/10/a_7a9f1240c6.jpg" alt="Errands" />
                    </a>
                    
                ]]>
            </description>
            <pubDate>Tue, 4 Oct 2011 19:49:01 -0600</pubDate>
            <guid>http://nerf-this.com/errands/</guid>
        </item>
        
        <item>
            <title>@ConanOBrien: The sonic clarity of this “cat falling in a toilet” video on YouTube is so much better with my new Bose headphones.</title>
            <link>http://twitter.com/ConanOBrien/statuses/119300857350193152</link>
            <description>
                <![CDATA[
                    
                    
                ]]>
            </description>
            <pubDate>Thu, 29 Sep 2011 07:41:55 -0600</pubDate>
            <guid>http://twitter.com/ConanOBrien/statuses/119300857350193152</guid>
        </item>
        
        <item>
            <title>Dilbert - Hygiene</title>
            <link>http://feedproxy.google.com/~r/DilbertDailyStrip/~3/4KT29EN7DrQ/</link>
            <description>
                <![CDATA[
                    
                    <a href="http://feedproxy.google.com/~r/DilbertDailyStrip/~3/4KT29EN7DrQ/" title="Dilbert - Hygiene">
                        <img src="http://cmdz.org//2011/10/a_c97d4a0aeb.gif" alt="Dilbert - Hygiene" />
                    </a>
                    
                ]]>
            </description>
            <pubDate>Thu, 29 Sep 2011 06:00:00 -0600</pubDate>
            <guid>http://feedproxy.google.com/~r/DilbertDailyStrip/~3/4KT29EN7DrQ/</guid>
        </item>
        
        <item>
            <title>Coffeevolution</title>
            <link>http://loldwell.com/?p=1658</link>
            <description>
                <![CDATA[
                    
                    <a href="http://loldwell.com/?p=1658" title="Coffeevolution">
                        <img src="http://cmdz.org//2011/09/a_78af7f3916.jpg" alt="Coffeevolution" />
                    </a>
                    
                ]]>
            </description>
            <pubDate>Sat, 24 Sep 2011 21:28:36 -0600</pubDate>
            <guid>http://loldwell.com/?p=1658</guid>
        </item>
        
        <item>
            <title>@EmilyBlakely: &quot;When we try to pick out anything by itself, we find it hitched to everything else in the universe.&quot;</title>
            <link>http://twitter.com/EmilyBlakely/statuses/114323947234934784</link>
            <description>
                <![CDATA[
                    
                    
                ]]>
            </description>
            <pubDate>Thu, 15 Sep 2011 14:05:27 -0600</pubDate>
            <guid>http://twitter.com/EmilyBlakely/statuses/114323947234934784</guid>
        </item>
        


        
        <item>
            <title>com.apple.screencapture -- Default File Save Location For Screenshots</title>
            <link>http://cmdz.org/article/473/</link>
            <description>
                <![CDATA[
                    <h3><a href="http://cmdz.org/article/473/">com.apple.screencapture -- Default File Save Location For Screenshots</a></h3>
                    
                    <pre class="terminal"><code>
SYNTAX
        $ defaults write com.apple.screencapture location &lt;/new/path/&gt;

EXAMPLE
        $ defaults write com.apple.screencapture location ~/Pictures/
        $ killall SystemUIServer

DEFAULT SETTINGS
        Default save location: ~/Desktop
</code></pre>

<p class="note">Note: You’d need to kill SystemUIServer for changes to take effect.</p>
                ]]>
            </description>
            <pubDate>Sat, 29 Jan 2011 11:43:30 -0700</pubDate>
            <guid>http://cmdz.org/article/473/</guid>
        </item>
        
        <item>
            <title>Django Redirects App Modified to Allow Wildcard Redirects</title>
            <link>http://cmdz.org/article/445/</link>
            <description>
                <![CDATA[
                    <h3><a href="http://cmdz.org/article/445/">Django Redirects App Modified to Allow Wildcard Redirects</a></h3>
                    
                    <p>Django comes with an optional redirects application that lets one store simple redirects in a database and handles the redirecting for you including returning "HTTP/1.0 410 GONE" responses. This "batteries included" application works great for many content redirects but I found I had a need to redirect entire sections of content to other sections requiring a wildcard redirect. Although there is no built-in functionality in the Redirect App for handling wildcard redirect patterns, the way the Django framework is setup allows one to easily modify and adapt new functionality such as handling wildcard redirects.</p>


<p>I copied the original <code>middleware.py</code> file (<code>&lt;python site-packages path&gt;/django/contrib/redirects/middleware.py</code>) into a new directory named redirects within my Django project directory and modified the code adding one additional code block and an optional check for relative vs. absolute URL paths. This method may not be perfect and could be modified to allow for complex pattern matching but it does demonstrate the ease at which the build-in code of the Django project can be modified for a more custom use. <a href="#modified">The full modified Django Redirect App middleware.py file is below.</a></p>


<h3>Adding a Wildcard Redirect Check</h3>


<pre class="example"><code>
        if r is None and settings.APPEND_SLASH:
        ...

        <span style="color:#a00;">
        if r is None:
            # Try matching a wildcard
            try:
                r = Redirect.objects.get(site__id__exact=settings.SITE_ID,
                    old_path=path.rsplit("/", 1)[0]+"/*")
                # Check for 410 paths
                if r.new_path != '':
                    r.new_path = r.new_path + path.rsplit("/", 1)[1]
            except Redirect.DoesNotExist:
                pass
        </span>
        if r is not None:
        ...
</code></pre>


<p>I added a second check, similar to the "APPEND SLASH" check, which splits the requested path at the last slash in the path and checks the database for the modified path appended with an asterisk such as "<code>/manpage/*</code>". For example, the request path: "<code>/manpage/serveradmin.html</code>" results in a 404 error. The path "<code>/manpage/serveradmin.html</code>" does not match any redirect entries in the database using the stock Redirect App middleware. The additional code block allows for the requested path to be slit looking for a matching base path. The middleware will query the database a second time looking for "<code>/manpage/*</code>". The entry's "new_path" value is the replacement for the matching part of the path. The "new_path" base: "<code>/kbase/cli/</code>" is prepended to the remainder of original requested path and returned as a "HTTP/1.0 301 MOVED PERMANENTLY" response redirect as "<code>/kbase/cli/serveradmin.html</code>".</p>


<h3>Wildcard Redirect Entry for the Django Redirect App</h3>
<img src="/2011/01/Django_Redirects_Modified.png" alt="Screenshot of Django Redirect App Amin Manager with a wildcard entry" />


<h3>Appending a Domain Name to the Redirect URL for Proxy Content</h3>


<pre class="example"><code>
        if r is not None:
            if r.new_path == '':
                return http.HttpResponseGone()
            <span style="color:#a00;">## Include (cache server) domain name in path if missing
            if not r.new_path.startswith("http"):
                r.new_path = settings.MEDIA_URL.rsplit("/", 1)[0] + r.new_path
            return http.HttpResponsePermanentRedirect(r.new_path)</span>
        
        # No redirect was found. Return the response.
        return response
</code></pre>


<p>For my specific setup, the public caching (edge) sever(s) and private application (origin) server use different domain names. A redirect that is proxy'ed back to the application server from the cache server causes a little redirect madness because of the domain names. To work around this issue, I added an <code>if</code> statement that checks whether the redirect path starts with "http". Should it not start with an absolute URL which starts with http, the MEDIA_URL set in the settings.py file is prepended to the redirect path making it an absolute path. The trailing slash in the MEDIA_URL is removed preventing a second "root" slash to the redirect path. The original request path "<code>/manpage/serveradmin.html</code>" is correctly redirected to "<code>http://cmdz.org/kbase/cli/serveradmin.html</code>" as are all path requests that start with "<code>/manpage/</code>".</p>


<h2 id="modified">Modified Django Redirects App</h2>

<h3>settings.py</h3>
<pre class="example"><code>
# MIDDLEWARE_CLASSES settings from &lt;project&gt;/settings.py
MIDDLEWARE_CLASSES = (
    ...
    # 'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
    <span style="color:#a00;">'&lt;project name&gt;.redirects.middleware.RedirectFallbackMiddleware',</span>
    ...
)
</code></pre>

<h3>middleware.py</h3>
<pre class="example"><code>
# Code from original redirect middleware file: &lt;python site-packages path&gt;/django/contrib/redirects/middleware.py
# The original file was copied into Django project as: &lt;project name&gt;/redirects/middleware.py
<span style="color:#a00;"># code marked in red denotes changes made to the original file</span>

from django.contrib.redirects.models import Redirect
from django import http
from django.conf import settings

class RedirectFallbackMiddleware(object):
    def process_response(self, request, response):
        
        
        if response.status_code != 404:
            return response # No need to check for a redirect for non-404 responses.
        path = request.get_full_path()
        
        
        try:
            r = Redirect.objects.get(site__id__exact=settings.SITE_ID, old_path=path)
        except Redirect.DoesNotExist:
            r = None
        
        
        if r is None and settings.APPEND_SLASH:
            # Try removing the trailing slash.
            try:
                r = Redirect.objects.get(site__id__exact=settings.SITE_ID,
                    old_path=path[:path.rfind('/')]+path[path.rfind('/')+1:])
            except Redirect.DoesNotExist:
                pass
        
        <span style="color:#a00;">
        if r is None:
            # Try matching a wildcard
            try:
                r = Redirect.objects.get(site__id__exact=settings.SITE_ID,
                    old_path=path.rsplit("/", 1)[0]+"/*")
                # Check for 410 paths
                if r.new_path != '':
                    r.new_path = r.new_path + path.rsplit("/", 1)[1]
            except Redirect.DoesNotExist:
                pass
        </span>
        
        if r is not None:
            if r.new_path == '':
                return http.HttpResponseGone()
            <span style="color:#a00;">## Include (cache server) domain name in path if missing
            if not r.new_path.startswith("http"):
                r.new_path = settings.MEDIA_URL.rsplit("/", 1)[0] + r.new_path</span>
            return http.HttpResponsePermanentRedirect(r.new_path)
        
        # No redirect was found. Return the response.
        return response
</code></pre>
                ]]>
            </description>
            <pubDate>Thu, 13 Jan 2011 11:29:55 -0700</pubDate>
            <guid>http://cmdz.org/article/445/</guid>
        </item>
        
        <item>
            <title>Twisted TCP Server Example</title>
            <link>http://cmdz.org/article/443/</link>
            <description>
                <![CDATA[
                    <h3><a href="http://cmdz.org/article/443/">Twisted TCP Server Example</a></h3>
                    
                    <p>Within a few minutes of reading the Twisted <a href="http://twistedmatrix.com/projects/core/documentation/howto/">how-to tutorials</a> for getting started with <a href="http://twistedmatrix.com/projects/core/documentation/howto/servers.html">creating a simple TCP server"</a> I had the response page serving correctly on my local machine.</p>

<p><a href="http://twistedmatrix.com/">Twisted</a> installed on my Mac running Mac OS X 10.5.2 Leopard without a single warning. This is notable only because A.) I'm a moron, normally needing to use the gcc equivalent of a crowbar to wedge software into my development system, and B.) Once again I find that Leopard's pre-installed open-source software meets the minimal requirements for additional software so I can avoid dependence hell once again. <em>FANTASTIC!</em></p>

<p>Below I have the Python script posted for the TCP server which follows the Twisted example for the most part. This service will respond with a predefined HTML statement to a request made to port 8007. The response doesn't need to be as drab (stable) as HTML. The <code>self.transport.write</code> can be altered to what is needed for your application.</p>

<p>Everything a language/computer/technology should do is _work_ and _get out of the way_ so that the task it is created or used for can be accomplished without out too much of that muck. Since everything is just a more complex version of simple pieces, like binary code or even DNA, incredible possibilities are possible once the simple piece can be created.</p>

<p>This is why I like Twisted. It was simple to implement and in some respects has gotten out of the way and allowed my mind to begin wondering past the "first response" and on to further tasks such as "what this should do".</p>

<pre class="example"><code>
<i>#!/usr/bin/python</i>

greeting = """<span>
HELLO WORLD!
This is a TCP/IP Server written in Python using 
the Twisted networking framework.

It will respond on port 8007 of the local host
With a predefined greeting.
</span>"""
print greeting

from twisted.internet.protocol import Protocol, Factory
from twisted.internet import reactor

class QOTD(Protocol):
	def connectionMade(self):
		self.transport.write("""<em>
&lt;!DOCTYPE html PUBLIC&gt;
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;Twisted TCP Server Example&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;h1&gt;HELLO WORLD!&lt;/h1&gt;
		&lt;pre&gt;
This is a TCP/IP Server written in Python using 
the Twisted networking framework.

Further instruction can be found here:
&lt;a href="http://twistedmatrix.com/projects/core/documentation/howto/servers.html"&gt;
	Twisted Documentation: Writing Servers
&lt;/a&gt;

This server will respond on port 8007 of the local host
With a predefined greeting.
		&lt;/pre&gt;
	&lt;/body&gt;
&lt;/html&gt;</em>""")
		self.transport.loseConnection()

<i># Then lines are Twisted magic:</i>
factory = Factory()
factory.protocol = QOTD

<i># Running under :8007</i>
# Should be &gt; :1024
reactor.listenTCP(8007, factory)
reactor.run()
</code></pre>

<h4>Take away</h4>

<p><a href="http://twistedmatrix.com/">Twisted</a> is an amazing, simple to use, light weight Python based networking framework. Anyone interested in building applications that require networking connectivity should take a look at this project.</p>
                ]]>
            </description>
            <pubDate>Sat, 23 Feb 2008 06:25:56 -0700</pubDate>
            <guid>http://cmdz.org/article/443/</guid>
        </item>
        
        <item>
            <title>Installing Django for Leopard with MySQL Support</title>
            <link>http://cmdz.org/article/441/</link>
            <description>
                <![CDATA[
                    <h3><a href="http://cmdz.org/article/441/">Installing Django for Leopard with MySQL Support</a></h3>
                    
                    <p>I was following along with the instructions from Chapter 2 of the <a href="http://www.djangobook.com/en/1.0/chapter02/">Django Book</a>, an online reference for learning and using Django a Python web framework when I hit a small snag in adding a database for my project. My initial experience with Mac OS X Leopard (10.5) and adding open-source software has been a pleasure.</p>

<p>I have yet to encounter the dependency nightmare I have experienced with previous Mac OS X systems. Of course, I have also tamed my need for the absolute bleeding edge of software by avoiding nightly builds and the like, at least for time being.</p>

<h3>Installing Django</h3>

<pre class="terminal"><code><em># Download Django &lt;URL: <a href="http://www.djangoproject.com/download/">http://www.djangoproject.com/download/</a> /&gt;</em>
dev:www $ tar xzvf Django-*.tar.gz.
dev:www $ cd Django-*.
dev:www $ sudo python setup.py install

<em># Test the django module</em>
dev:www $ python
>>> import django
>>> django.VERSION
</code></pre>

<h3>Add MySQL Support to Python</h3>

<p>Adding MySQL support for Python presented the only issue. A unexpected configuration error prevents the MySQLdb module from compiling and then a different issue throws a 'file not found' error when the module is loaded into Python.</p>

<p>I am not familiar enough with either system to say which developer has changed their installed path or even if it is some erroneous oversight on my part when originally installing MySQL or MySQLdb. In any case, here is what I need to do to complete the compile and install of MySQLdb for Mac OS X Leopard:</p>

<h3><strong>Update:</strong> Installing on Mac OS X Server Leopard 10.5</h3>
<p>When compiling/installing MySQLdb for Mac OS X Server Leopard 10.5.x one will receive a different error for gcc about not being able to find my_conf.h. Because MySQL 5.0 is pre-installed in the Server addition this error stumped me until I read an <a href="http://support.apple.com/kb/TA25017">Apple Support Article</a> that explains that the client header files (.h) are not included with the Server edition for what I can only imagine is some sort of security preference.</p>

<pre class="example"><code>$ curl -O http://www.opensource.apple.com/darwinsource/other/MySQL-43.binaries.tar.gz
<em># Follow the instructions to add MySQL header files.</em></code></pre>

<p>Mac OS X (Client) Leopard does not come with MySQL pre-installed and the standard binary package for installing from MySQL includes the client and server files needed to interact with the service as well as the bits needed for MySQLdb. A small note that SQLite is supported by default as of Python 2.5+ and is the staple for use in many Cocoa applications for Mac OS X. For local application support or general 'tinkering' its pretty handy database, just not as fast as MySQL when it comes to dynamically serving content to web clients.</p>

<pre class="terminal"><code>
<em># Download the latest stable version of MySQLdb
# &lt;URL: <a href="http://mysql-python.sourceforge.net/">http://mysql-python.sourceforge.net/</a> /&gt;</em>
$ tar xzf MySQL-python-*.tar.gz
$ cd MySQL-python-*
$ find / -name mysql_conf

<em># Edit site.cgf at line 13 to add your full mysql_conf path</em>
mysql_config = /usr/local/mysql/bin/mysql_config

<em># &lt;URL: <a href="http://forums.mysql.com/read.php?50,175059,179979#msg-179979">http://forums.mysql.com/read.php?50,175059,179979#msg-179979</a> /&gt;
# Edit these lines from _mysql.c</em>

 37	//ifndef uint 
 38	//define uint unsigned int 
 39	//endif 

484	//uint port = MYSQL_PORT; CHANGED to next line
485	unsigned int port = MYSQL_PORT;
486	//uint client_flag = 0; CHANGED to next line
487	unsigned int client_flag = 0;

<em># Issue 1 is now solved and you can compile MySQLdb</em>
$ python setup.py build 
$ sudo python setup.py install 

<em># Issue 2 is solved by creating a symbolic link to libmysqlclient_r.15.dylib library.</em>
$ sudo mkdir /usr/local/mysql/lib/mysql 
$ sudo ln -s /usr/local/mysql/lib/libmysqlclient_r.15.dylib\
	/usr/local/mysql/lib/mysql/libmysqlclient_r.15.dylib

<em># test MySQLdb module in python</em>
$ python
>>> import MySQLdb

<em># no trace back errors == 'sweetness'</em>
</code></pre>

<h3>For future reference</h3>
<p>System paths for Mac OS X Leopard (10.5) default pre-installed Python framework.</p>
<pre class="terminal"><code>$ python
>>> import sys
>>> print sys.path
	''
	'/Library/Python/2.5/site-packages/MySQL_python-1.2.2-py2.5-macosx-10.5-ppc.egg'
	'/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python25.zip'
	'/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5'
	'/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-darwin'
	'/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/plat-mac',
	'/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/\
		plat-mac/lib-scriptpackages',
	'/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python',
	'/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk',
	'/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-dynload',
	'/Library/Python/2.5/site-packages',
	'/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/PyObjC'
</code></pre>

<h3>Start a New Project</h3>
<pre class="terminal"><code>$ mkdir Django
$ cd Django/
$ django-admin.py startproject LearningDjango
$ ls -1 LearningDjango/
total 24
__init__.py		# Python sees this directory as a package
manage.py		# command-line utility
settings.py		# Django project settings and configuration
urls.py			# "Table of Contents" for the project
</code></pre>

<h3>Start the Development Server</h3>
<pre class="terminal"><code>$ python manage.py runserver
Validating models...
0 errors found.

Django version 0.96.1, using settings 'LearningDjango.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[08/Jan/2008 20:12:10] "GET / HTTP/1.1" 404 2069
</code></pre>
                ]]>
            </description>
            <pubDate>Sat, 12 Jan 2008 13:02:36 -0700</pubDate>
            <guid>http://cmdz.org/article/441/</guid>
        </item>
        


        
        <item>
            <title>Atlas IMG_723 (Early 2011)</title>
            <link>http://cmdz.org/images/atlas-img_723-early-2011.jpg</link>
            <description>
                <![CDATA[
                    <a href="http://cmdz.org/images/atlas-img_723-early-2011.jpg" title="Atlas IMG_723 (Early 2011)">
                        <img src="http://cmdz.org/2011/02/IMG_0723M.jpg" alt="Atlas IMG_723 (Early 2011)" />
                    </a>
                ]]>
            </description>
            <pubDate>Sun, 20 Feb 2011 07:31:07 -0700</pubDate>
            <guid>http://cmdz.org/images/atlas-img_723-early-2011.jpg</guid>
        </item>
        
        <item>
            <title>Atlas the blanket IMG_700 (Early 2011)</title>
            <link>http://cmdz.org/images/atlas-blanket-img_700-early-2011.jpg</link>
            <description>
                <![CDATA[
                    <a href="http://cmdz.org/images/atlas-blanket-img_700-early-2011.jpg" title="Atlas the blanket IMG_700 (Early 2011)">
                        <img src="http://cmdz.org/2011/02/IMG_0700M.jpg" alt="Atlas the blanket IMG_700 (Early 2011)" />
                    </a>
                ]]>
            </description>
            <pubDate>Fri, 18 Feb 2011 07:28:40 -0700</pubDate>
            <guid>http://cmdz.org/images/atlas-blanket-img_700-early-2011.jpg</guid>
        </item>
        
        <item>
            <title>Enzo IMG_681 (Early 2011)</title>
            <link>http://cmdz.org/images/enzo-img_681-early-2011.jpg</link>
            <description>
                <![CDATA[
                    <a href="http://cmdz.org/images/enzo-img_681-early-2011.jpg" title="Enzo IMG_681 (Early 2011)">
                        <img src="http://cmdz.org/2011/02/IMG_0681M.jpg" alt="Enzo IMG_681 (Early 2011)" />
                    </a>
                ]]>
            </description>
            <pubDate>Wed, 16 Feb 2011 07:28:11 -0700</pubDate>
            <guid>http://cmdz.org/images/enzo-img_681-early-2011.jpg</guid>
        </item>
        
        <item>
            <title>Atlas the fuzzball IMG_668 (Early 2011)</title>
            <link>http://cmdz.org/images/atlas-fuzzball-img_668-early-2011.jpg</link>
            <description>
                <![CDATA[
                    <a href="http://cmdz.org/images/atlas-fuzzball-img_668-early-2011.jpg" title="Atlas the fuzzball IMG_668 (Early 2011)">
                        <img src="http://cmdz.org/2011/02/IMG_0668M.jpg" alt="Atlas the fuzzball IMG_668 (Early 2011)" />
                    </a>
                ]]>
            </description>
            <pubDate>Mon, 14 Feb 2011 07:27:10 -0700</pubDate>
            <guid>http://cmdz.org/images/atlas-fuzzball-img_668-early-2011.jpg</guid>
        </item>
        
        <item>
            <title>Enzo IMG_646 (Early 2011)</title>
            <link>http://cmdz.org/images/enzo-img_646-early-2011.jpg</link>
            <description>
                <![CDATA[
                    <a href="http://cmdz.org/images/enzo-img_646-early-2011.jpg" title="Enzo IMG_646 (Early 2011)">
                        <img src="http://cmdz.org/2011/02/IMG_0646M.jpg" alt="Enzo IMG_646 (Early 2011)" />
                    </a>
                ]]>
            </description>
            <pubDate>Sat, 12 Feb 2011 07:25:15 -0700</pubDate>
            <guid>http://cmdz.org/images/enzo-img_646-early-2011.jpg</guid>
        </item>
        
        <item>
            <title>Enzo asleep in the box IMG_643 (Early 2011)</title>
            <link>http://cmdz.org/images/enzo-asleep-box-img_643-early-2011.jpg</link>
            <description>
                <![CDATA[
                    <a href="http://cmdz.org/images/enzo-asleep-box-img_643-early-2011.jpg" title="Enzo asleep in the box IMG_643 (Early 2011)">
                        <img src="http://cmdz.org/2011/02/IMG_0643M.jpg" alt="Enzo asleep in the box IMG_643 (Early 2011)" />
                    </a>
                ]]>
            </description>
            <pubDate>Thu, 10 Feb 2011 07:23:51 -0700</pubDate>
            <guid>http://cmdz.org/images/enzo-asleep-box-img_643-early-2011.jpg</guid>
        </item>
        
        <item>
            <title>Enzo the ankle biter IMG_633 (Early 2011)</title>
            <link>http://cmdz.org/images/enzo-ankle-biter-img_633-early-2011.jpg</link>
            <description>
                <![CDATA[
                    <a href="http://cmdz.org/images/enzo-ankle-biter-img_633-early-2011.jpg" title="Enzo the ankle biter IMG_633 (Early 2011)">
                        <img src="http://cmdz.org/2011/02/IMG_0633M.jpg" alt="Enzo the ankle biter IMG_633 (Early 2011)" />
                    </a>
                ]]>
            </description>
            <pubDate>Tue, 8 Feb 2011 07:20:38 -0700</pubDate>
            <guid>http://cmdz.org/images/enzo-ankle-biter-img_633-early-2011.jpg</guid>
        </item>
        
        <item>
            <title>Enzo IMG_631 (Early 2011)</title>
            <link>http://cmdz.org/images/enzo-img_631-early-2011.jpg</link>
            <description>
                <![CDATA[
                    <a href="http://cmdz.org/images/enzo-img_631-early-2011.jpg" title="Enzo IMG_631 (Early 2011)">
                        <img src="http://cmdz.org/2011/02/IMG_0631M.jpg" alt="Enzo IMG_631 (Early 2011)" />
                    </a>
                ]]>
            </description>
            <pubDate>Sun, 6 Feb 2011 07:20:06 -0700</pubDate>
            <guid>http://cmdz.org/images/enzo-img_631-early-2011.jpg</guid>
        </item>
        
        <item>
            <title>Atlas protecting his box IMG_627 (Early 2011)</title>
            <link>http://cmdz.org/images/atlas-img_627-early-2011.jpg</link>
            <description>
                <![CDATA[
                    <a href="http://cmdz.org/images/atlas-img_627-early-2011.jpg" title="Atlas protecting his box IMG_627 (Early 2011)">
                        <img src="http://cmdz.org/2011/02/IMG_0627M.jpg" alt="Atlas protecting his box IMG_627 (Early 2011)" />
                    </a>
                ]]>
            </description>
            <pubDate>Fri, 4 Feb 2011 07:18:36 -0700</pubDate>
            <guid>http://cmdz.org/images/atlas-img_627-early-2011.jpg</guid>
        </item>
        
        <item>
            <title>Enzo and His Ball IMG_0608</title>
            <link>http://cmdz.org/images/enzo-and-his-ball-img_0608.jpg</link>
            <description>
                <![CDATA[
                    <a href="http://cmdz.org/images/enzo-and-his-ball-img_0608.jpg" title="Enzo and His Ball IMG_0608">
                        <img src="http://cmdz.org/2011/01/IMG_0608M.jpg" alt="Enzo and His Ball IMG_0608" />
                    </a>
                ]]>
            </description>
            <pubDate>Wed, 12 Jan 2011 07:36:16 -0700</pubDate>
            <guid>http://cmdz.org/images/enzo-and-his-ball-img_0608.jpg</guid>
        </item>
        
    </channel>
</rss>
