<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Morphatic</title>
	
	<link>http://www.morphatic.com</link>
	<description>Connect...with a purpose</description>
	<lastBuildDate>Sat, 21 Nov 2009 19:37:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Morphatic" /><feedburner:info uri="morphatic" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Shopp Account Info Widget (hack)</title>
		<link>http://feedproxy.google.com/~r/Morphatic/~3/Soqy5LMluDE/</link>
		<comments>http://www.morphatic.com/2009/11/21/shopp-account-info-widget/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 17:34:25 +0000</pubDate>
		<dc:creator>Morgan Benton</dc:creator>
				<category><![CDATA[Wordpress Plugins]]></category>

		<guid isPermaLink="false">http://www.morphatic.com/?p=35</guid>
		<description><![CDATA[Users of the fantastic Shopp E-commerce plugin for Wordpress may find this plugin hack useful.  It&#8217;s just a simple widget that puts the menu from the Shopp account management page into a sidebar widget.
Download Shopp Account Info Widget (.zip, 2kb)
Requirements
I&#8217;ve only tested this with WordPress version 2.8.6 and Shopp version 1.0.16.  It *should* work for [...]]]></description>
			<content:encoded><![CDATA[<p>Users of the fantastic <a href="http://shopplugin.net">Shopp E-commerce plugin for Wordpress</a> may find this plugin hack useful.  It&#8217;s just a simple widget that puts the menu from the Shopp account management page into a sidebar widget.</p>
<p><span id="more-35"></span><a href="http://www.morphatic.com/wp-content/uploads/2009/11/shoppaccountinfo.zip">Download Shopp Account Info Widget (.zip, 2kb)</a></p>
<h3>Requirements</h3>
<p>I&#8217;ve only tested this with WordPress version 2.8.6 and Shopp version 1.0.16.  It *should* work for older versions of Shopp, but probably not for WP &lt; 2.8.x.</p>
<h3>Installation</h3>
<p>This is a hack so you&#8217;ll have to go through these steps every time  you upgrade Shopp (unless this gets incorporated into the core <img src='http://www.morphatic.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).  <strong>NOTE: If you don&#8217;t know what you&#8217;re doing, you could break your installation of Shopp!!! </strong> Consider yourself warned and follow these instructions at your own risk.</p>
<ol>
<li>Deactivate the Shopp plugin</li>
<li>Upload the widget file to the wp-content/plugins/shopp/core/ui/widgets folder.</li>
<li>Open up the Shopp.php file located in wp-conntent/plugins/shopp and add this line in the widgets() function around line 462:
<pre class="brush: php; light: true;">include('core/ui/widgets/shoppaccountwidget.php');</pre>
</li>
<li>Reactivate Shopp</li>
<li>Go to the Appearance &gt; Widgets page and drag the Shopp Account Info widget into your sidebar.</li>
</ol>
<h3>Security Considerations</h3>
<p>If you are using SSL on your site (which you should be if you&#8217;re doing e-commerce), it is strongly recommended that you set up your site so that it requires users to login using SSL.  To do that, <a href="http://codex.wordpress.org/Administration_Over_SSL">read the instructions on SSL Login/Admin in the WP Codex</a>.</p>
<img src="http://feeds.feedburner.com/~r/Morphatic/~4/Soqy5LMluDE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.morphatic.com/2009/11/21/shopp-account-info-widget/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.morphatic.com/2009/11/21/shopp-account-info-widget/</feedburner:origLink></item>
		<item>
		<title>WP Yogareg</title>
		<link>http://feedproxy.google.com/~r/Morphatic/~3/kdsaQvMhJ3E/</link>
		<comments>http://www.morphatic.com/2009/11/01/yogareg/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 01:49:15 +0000</pubDate>
		<dc:creator>Morgan Benton</dc:creator>
				<category><![CDATA[Wordpress Plugins]]></category>

		<guid isPermaLink="false">http://www.morphatic.com/?p=31</guid>
		<description><![CDATA[I&#8217;m working on a WordPress plugin that allows you to easily display yoga schedules using the service provided at Yogareg.com.  Stay tuned!
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a WordPress plugin that allows you to easily display yoga schedules using the service provided at <a href="http://yogareg.com">Yogareg.com</a>.  Stay tuned!</p>
<img src="http://feeds.feedburner.com/~r/Morphatic/~4/kdsaQvMhJ3E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.morphatic.com/2009/11/01/yogareg/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.morphatic.com/2009/11/01/yogareg/</feedburner:origLink></item>
		<item>
		<title>Psychometric vs Socio-cultural Learning in Classrooms</title>
		<link>http://feedproxy.google.com/~r/Morphatic/~3/dXjFwz-VXCg/</link>
		<comments>http://www.morphatic.com/2009/09/20/psychometric-vs-socio-cultural-learning-in-classrooms/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 17:07:15 +0000</pubDate>
		<dc:creator>Morgan Benton</dc:creator>
				<category><![CDATA[Learning]]></category>

		<guid isPermaLink="false">http://www.morphatic.com/?p=25</guid>
		<description><![CDATA[Consider two definitions of learning from Moss (2003, p14):



Psychometric Learning
Socio-cultural Learning




Psychometric characterizations of learning&#8211;which infer learning from observed changes in individuals&#8217; performances over time&#8211;have been criticized for viewing learning only as something that takes place “inside the head of the learner” and typically up through a vertical hierarchy of increasingly generalized and abstract knowledge and [...]]]></description>
			<content:encoded><![CDATA[<p>Consider two definitions of learning from <a href="http://www3.interscience.wiley.com/journal/118884235/abstract">Moss (2003, p14)</a>:<span id="more-25"></span></p>
<table border="0" summary="psychometric vs socio-cultural definitions of learning">
<thead>
<tr>
<th scope="col">Psychometric Learning</th>
<th scope="col">Socio-cultural Learning</th>
</tr>
</thead>
<tbody>
<tr>
<td>Psychometric characterizations of learning&#8211;which infer learning from <strong>observed changes in individuals&#8217; performances over time</strong>&#8211;have been criticized for viewing learning only as something that takes place “<strong>inside the head of the learner</strong>” and typically up through a vertical hierarchy of increasingly generalized and abstract knowledge and skills.</td>
<td>From a sociocultural perspective, learning is perceived through <strong>changing relationships among the learner, the other human participants, and the tools (material and symbolic) available in a given context</strong>.  Thus learning involves not only acquiring new knowledge and skill, but taking on a new identity and social position within a particular discourse or community of practice.  As Wenger (1998) puts it, <strong>learning “changes who we are&#8230;by changing our ability to participate, to belong” and “to experience our life and the world as meaningful</strong>.”</td>
</tr>
</tbody>
</table>
<p>The implications of these two different definitions for classroom instruction and assessment are quite profound.  I highly recommend Moss&#8217;s article:</p>
<p><a href="http://www3.interscience.wiley.com/journal/118884235/abstract">Moss, Pamela (2003) Reconceptualizing Validity for Classroom Assessment.  Educational Measurement: Issues and Practice, 22(4), Winter 2003. NCME</a></p>
<p>Also check out <a href="http://sitemaker.soe.umich.edu/soe/faculty_introduction&amp;mode=single&amp;recordID=50896">her website</a>.  She&#8217;s doing some pretty fantastic work in the area of teacher education.</p>
<img src="http://feeds.feedburner.com/~r/Morphatic/~4/dXjFwz-VXCg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.morphatic.com/2009/09/20/psychometric-vs-socio-cultural-learning-in-classrooms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.morphatic.com/2009/09/20/psychometric-vs-socio-cultural-learning-in-classrooms/</feedburner:origLink></item>
		<item>
		<title>Stealth Learning</title>
		<link>http://feedproxy.google.com/~r/Morphatic/~3/hxQsEK15-hM/</link>
		<comments>http://www.morphatic.com/2009/07/25/stealth-learning/#comments</comments>
		<pubDate>Sun, 26 Jul 2009 00:58:03 +0000</pubDate>
		<dc:creator>Morgan Benton</dc:creator>
				<category><![CDATA[Learning]]></category>

		<guid isPermaLink="false">http://www.morphatic.com/?p=22</guid>
		<description><![CDATA[What gets me about this ad (props to Failblog) is it plays into the notion that learning is not fun, that learning is something you have to trick your kids into doing.  In truth, most people really enjoy learning new things.  The sad part is that games really are a great way to foster learning.  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://failblog.org/2009/07/24/educational-software-ad-fail/"><img class="aligncenter size-medium wp-image-23" title="So fun, they won't even know their learning" src="http://www.morphatic.com/wp-content/uploads/2009/07/fail-owned-educational-software-fail-300x225.jpg" alt="So fun, they won't even know their learning" width="300" height="225" /></a>What gets me about this ad (props to <a href="http://www.failblog.org">Failblog</a>) is it plays into the notion that learning is not fun, that learning is something you have to trick your kids into doing.  In truth, most people really enjoy learning new things.  The sad part is that games really are a great way to foster learning.  Games get many things right that our educational system gets wrong.  Here are just a few things to think about:</p>
<ol>
<li>Games encourage you to practice things you&#8217;re not good at until you get better</li>
<li>When you fail in a game, it doesn&#8217;t go on your report card</li>
<li>Games naturally motivate peers who have already mastered some element of the game to help those who haven&#8217;t</li>
<li>People play games because they choose to&#8211;you seldom have to bribe, trick, or coerce someone into playing a game</li>
</ol>
<p>Teachers and school systems could follow on from these observations by implementing a few things:</p>
<ol>
<li>Allow students to practice until they &#8220;get it.&#8221;  This is known as mastery learning.  Everyone learns at a different pace and everyone is not ready for the same content at the same time.</li>
<li>Get rid of report cards.  If you allow people to practice until they master the concepts, then report cards no longer are necessary.</li>
<li>Create an environment that actively encourages peers to teach and learn from each other</li>
<li>Give learners choice about what and how they learn</li>
</ol>
<p>There are practical ways to implement these things.  We just need to have the courage and the energy and the patience to do it.</p>
<img src="http://feeds.feedburner.com/~r/Morphatic/~4/hxQsEK15-hM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.morphatic.com/2009/07/25/stealth-learning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.morphatic.com/2009/07/25/stealth-learning/</feedburner:origLink></item>
		<item>
		<title>Optimizing Wordpress with My CDN</title>
		<link>http://feedproxy.google.com/~r/Morphatic/~3/zbOjMnB2F7M/</link>
		<comments>http://www.morphatic.com/2009/07/21/optimizing-wordpress-with-my-cdn/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 12:21:52 +0000</pubDate>
		<dc:creator>Morgan Benton</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[CDN]]></category>
		<category><![CDATA[CloudFront]]></category>
		<category><![CDATA[Dreamhost]]></category>
		<category><![CDATA[findutils]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[s3sync]]></category>
		<category><![CDATA[YSlow]]></category>
		<category><![CDATA[YUI Compressor]]></category>

		<guid isPermaLink="false">http://www.morphatic.com/?p=8</guid>
		<description><![CDATA[So I&#8217;ve had the YSlow plugin for Firebug installed in my browser for well over a year now, and when I&#8217;ve had time, I&#8217;ve been trying to learn about site optimization.  One of the parts that has always given me the most trouble is how to set up and use a content delivery network (CDN) [...]]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve had the <a title="Don't install this if you have OCD!" href="http://developer.yahoo.com/yslow/">YSlow</a> plugin for <a title="Firebug...don't know how we ever did web development without it!" href="http://getfirebug.com">Firebug</a> installed in my browser for well over a year now, and when I&#8217;ve had time, I&#8217;ve been trying to learn about site optimization.  One of the parts that has always given me the most trouble is how to set up and use a <a title="Wikipedia entry on CDNs" href="http://en.wikipedia.org/wiki/Content_delivery_network">content delivery network</a> (CDN) for serving static files.  So as I was setting up this blog, I decided to give it another shot.  This time I was successful.<span id="more-8"></span></p>
<p>So first, a bit about my setup.  I have a self-hosted install of Wordpress running on a &#8220;private server&#8221; at <a href="http://www.dreamhost.com/r.cgi?135985">Dreamhost</a>.</p>
<h3>Step 1: Set up an account with a CDN provider.</h3>
<p>There are a number of CDN providers out there.  In the past I&#8217;ve used <a href="http://www.cachefly.com/">CacheFly</a>, and I&#8217;ve heard good things about <a href="http://www.simplecdn.com/">SimpleCDN</a>, but in the end I decided to use Cloudfront from Amazon, I&#8217;ll admit, mostly because of the brand name.  Setting up a <a href="http://aws.amazon.com/cloudfront/">Cloudfront</a> account was pretty easy.  Just provide a credit card number and agree to their terms of service and you&#8217;re on your way.  Cloudfront has no monthly fees.  You only pay for what you use.  It&#8217;s pretty darn cheap, so there&#8217;s not much reason not to do this.</p>
<h3>Step 2: Create a &#8220;distribution&#8221; on Cloudfront.</h3>
<p>I&#8217;m not by any means an expert on this yet, but the way that Amazon keeps track of your files is by putting them into &#8220;distributions.&#8221;  Each distribution has a &#8220;bucket&#8221; and URL, and can be assigned multiple alias URLs using CNAMEs.  When you create your distribution you&#8217;ll be asked to name your bucket, and also to select the CNAMEs (i.e. URLs) that you&#8217;d like to associate with the bucket.  In my case I named my bucket &#8220;morphatic&#8221; and created four CNAMEs to go along with it: acf0.morphatic.com, acf1.morphatic.com, acf2.morphatic.com, acf3.morphatic.com.  Some people prefer to name their buckets by what&#8217;s in them, i.e. images.morphatic.com, js.morphatic.com, etc.</p>
<h3>Step 3: Setup your custom CNAMEs at your DNS provider.</h3>
<p>Okay, so the goal here is that once we&#8217;ve uploaded our files to Cloudfront (more on that in a bit), we&#8217;d like them to be available via the URLs we&#8217;ve set up, i.e. http://acf0.morphatic.com/myfile.gif.  To do that you need to redirect traffic from your subdomain to your Cloudfront domain name.  First, log into the <a href="https://console.aws.amazon.com/cloudfront/home">AWS Management Console</a> for Cloudfront.  Make a note of the domain name of the distribution you just created:</p>
<p><a href="http://www.morphatic.com/wp-content/uploads/2009/07/cloudfront_domain_name.png" rel="shadowbox[post-8];player=img;"><img class="alignnone size-medium wp-image-12" title="How to find your distribution domain name in the AWS Management Console for Cloudfront" src="http://www.morphatic.com/wp-content/uploads/2009/07/cloudfront_domain_name-300x193.png" alt="How to find your distribution domain name in the AWS Management Console for Cloudfront" width="300" height="193" /></a> (click to view larger image)</p>
<p>Next, if you host at Dreamhost like I do, log into your control panel, and click on Domains &gt; Manage Domains.  Find your domain name in the list and click the DNS link underneath it to take you to the place where you can add custom DNS entries.  Fill out the form as shown below to register the CDN domain names:</p>
<p><a href="http://www.morphatic.com/wp-content/uploads/2009/07/Snapz-Pro-XScreenSnapz006.gif" rel="shadowbox[post-8];player=img;"><img class="alignnone size-medium wp-image-13" title="How to set up a custom CNAME on Dreamhost to use with Amazon Cloudfront" src="http://www.morphatic.com/wp-content/uploads/2009/07/Snapz-Pro-XScreenSnapz006-300x101.gif" alt="How to set up a custom CNAME on Dreamhost to use with Amazon Cloudfront" width="300" height="101" /></a> (click to view larger image)</p>
<p>(Incidentally, after I set this up this way I discovered a much easier way to do it via the Goodies section of Dreamhost&#8217;s control panel, but given the steps I&#8217;m about to describe below, I&#8217;ll probably continue to do it this way.)</p>
<h3>Step 4: Copy static files from Dreamhost to Cloudfront.</h3>
<p>I followed the very helpful advice of Yejun Yang (who wrote the My CDN plugin for Wordpress we&#8217;ll intall in a bit) on <a href="http://blog.mudy.info/2009/02/one-line-yuicompressor-script/">how to compress the static files</a> and then <a href="http://blog.mudy.info/2009/02/how-to-copy-selected-files-to-cloudfront/">copy them to Cloudfront</a>.  Not all of the software necessary to run Yejun&#8217;s scripts were installed by default on my Dreamhost PS account so I had to follow a few substeps:</p>
<h4>Step 4A: Create your own local bin folder.</h4>
<p>SSH into your Dreamhost PS account.  Create a directory for local executables:</p>
<pre class="brush: bash; light: true;">
$ mkdir local
$ mkdir local/bin
</pre>
<p>You&#8217;ll want to set up your shell so it will look in your local bin folder to find your programs BEFORE it looks elsewhere.  To do that you&#8217;ll want to edit the .bash_profile file that&#8217;s in your home directory to look something like this:</p>
<pre class="brush: bash;">
# ~/.bash_profile: executed by bash(1) for login shells.

export PATH=$HOME/local/bin:$PATH

umask 002
PS1='[\h]$ '
</pre>
<p>Then you&#8217;ll need to logout and back into your shell to make the new changes take effect.</p>
<h4>Step 4B: Install GNU findutils.</h4>
<p><a href="http://www.gnu.org/software/findutils/">Findutils</a> is a set of augmented features that make the built-in Linux &#8216;find&#8217; command more powerful.  You&#8217;ll want to download, unzip and compile the software using the following steps:</p>
<pre class="brush: bash; light: true;">
$ wget http://ftp.gnu.org/pub/gnu/findutils/findutils-4.4.2.tar.gz
$ tar -xzf findutils-4.4.2.tar.gz
$ rm findutils-4.4.2.tar.gz
$ cd findutils-4.4.2
$ ./configure --prefix=$HOME/local/
$ make
$ make install
</pre>
<p>If all has gone well, you should be able to type &#8220;which find&#8221; and get a response like /home/username/local/bin.</p>
<h4>Step 4C: Install YUI Compressor and create a shortcut script.</h4>
<p>The <a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a> is a program that will reduce the size of CSS and Javascript files by removing unnecessary whitespace and shortening variable names.  First, <a href="http://yuilibrary.com/downloads/#yuicompressor">download</a> and unzip the compressor files like so:</p>
<pre class="brush: bash; light: true;">
$ wget http://yuilibrary.com/downloads/yuicompressor/yuicompressor-2.4.2.zip
$ unzip yuicompressor-2.4.2.zip
$ rm yuicompressor-2.4.2.zip
</pre>
<p>To make it easier to use, you can create a script called yuicompressor in your local/bin folder that looks like this:</p>
<pre class="brush: bash;">
#!/bin/sh
java -jar $HOME/yuicompressor-2.4.2/build/yuicompressor-2.4.2.jar $@
</pre>
<p>Don&#8217;t forget to type <code>chmod +x yuicompressor</code> to make the script executable.</p>
<h4>Step 4D: Install s3sync and create a shortcut script.</h4>
<p><a href="http://s3sync.net/wiki">S3Sync</a> is a Ruby program that can be used to manage your Amazon S3 file repository.  It does a lot of handy things, but in this tutorial we&#8217;re only going to use it to transfer files from our Dreamhost PS over to S3.  <a href="http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz">Download</a> and unpack it in your home directory:</p>
<pre class="brush: bash; light: true;">
$ wget http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz
$ tar -xzf s3sync.tar.gz
$ rm s3sync.tar.gz
</pre>
<p>Now the s3cmd.rb file that we&#8217;ll be using to transfer files will be in the <code>$HOME/s3sync</code> folder.  We can create a shortcut script in the <code>local/bin</code> folder as we did for the YUI Compressor as follows:</p>
<pre class="brush: bash;">
#!/bin/sh
$HOME/s3sync/s3cmd.rb $@
</pre>
<p>Save this file as s3cmd and again use <code>chmod +x s3cmd</code> to make the file executable.  You&#8217;ll also need to provide your AWS (Amazon Web Services) credentials to s3cmd as follows.  First, create a hidden directory in your $HOME directory called .s3conf:</p>
<pre class="brush: bash; light: true;">
$ mkdir ~/.s3conf
</pre>
<p>Within the .s3conf folder you need to create a file called s3config.yml that looks as follows:</p>
<pre class="brush: bash;">
aws_access_key_id: YOURACCESSKEYID
aws_secret_access_key: YOURSECRETACCESSKEY
</pre>
<p>Hopefully it&#8217;s obvious that you need to replace the YOURACCESSKEYID part with your actual key that you can get from your account information in the AWS Management Console.  You&#8217;ll want to keep these keys private since anyone who has them has access to your S3 server and could use your space!</p>
<h3>Step 5: Create a script to compress, zip and move all of our static files to our CDN.</h3>
<p>Whew!  Okay now that all of the necessary tools are in place we can finally write a script to handle moving all of our files.  I created a file that I called &#8216;cloudfront&#8217; in my local/bin folder and used chmod to give it execute privileges.  NOTE: I combined the operations that Yejun Yang had in these <a href="http://blog.mudy.info/2009/02/one-line-yuicompressor-script/">two</a> <a href="http://blog.mudy.info/2009/02/how-to-copy-selected-files-to-cloudfront/">scripts</a>.  The content of the file looks like this:</p>
<pre class="brush: bash;">
#!/bin/sh
if [[  -n $1 ]]; then
LOC=$1
else
LOC=&quot;*&quot;
fi

# the name of the S3 bucket (NOTE: you don't need the s3.amazonaws.com)
BUCKET=morphatic
# the prefix to put before filenames (optional)
PREFIX=

# compress, zip, and transfer CSS files to the specified S3 bucket
find $LOC -type f -readable -name \*.css -exec sh -c &quot;yuicompressor {} -o $HOME/tmp/cdn.tmp &amp;&amp; gzip -9 -c $HOME/tmp/cdn.tmp &gt; $HOME/tmp/cdn.tmp.gz &amp;&amp; s3cmd -v put $BUCKET:$PREFIX{} $HOME/tmp/cdn.tmp.gz x-amz-acl:public-read Cache-Control:max-age=604800 Content-Type:text/css Content-Encoding:gzip&quot; \;

# compress, zip, and transfer JS files to the specified S3 bucket
find $LOC -type f -readable -name \*.js  -exec sh -c &quot;yuicompressor {} -o $HOME/tmp/cdn.tmp &amp;&amp; gzip -9 -c $HOME/tmp/cdn.tmp &gt; $HOME/tmp/cdn.tmp &amp;&amp; s3cmd -v put $BUCKET:$PREFIX{} $HOME/tmp/cdn.tmp x-amz-acl:public-read Cache-Control:max-age=604800 Content-Type:application/x-javascript Content-Encoding:gzip&quot; \;

# transfer PNG, GIF, and JPG files to the specified S3 bucket
find $LOC -type f -readable  -name \*.png -exec s3cmd -v put $BUCKET:$PREFIX{} {} x-amz-acl:public-read Cache-Control:max-age=604800 Content-Type:image/png \;
find $LOC -type f -readable  -name \*.gif -exec s3cmd -v put $BUCKET:$PREFIX{} {} x-amz-acl:public-read Cache-Control:max-age=604800 Content-Type:image/gif \;
find $LOC -type f -readable  \( -name \*.jpg -o -name \*.jpeg \) -exec s3cmd -v put $BUCKET:$PREFIX{} {} x-amz-acl:public-read Cache-Control:max-age=604800 Content-Type:image/jpeg \;
</pre>
<p><strong>Before you run this script</strong>, make sure that you create the $HOME/tmp directory.  In order to run this script, just cd into the root folder of your Wordpress site and type &#8216;cloudfront&#8217; at the prompt:</p>
<pre class="brush: bash; light: true;">
$ cd ~/morphatic.com
$ cloudfront
</pre>
<p>It will take a while for this script to process, so sit back and relax.</p>
<h3>Step 6: Install and configure the My CDN plugin for Wordpress.</h3>
<p>If you&#8217;ve been able to follow everything thus far, then you probably don&#8217;t need me to tell you how to install and configure the <a href="http://wordpress.org/extend/plugins/my-cdn/">My CDN Wordpress plugin</a>.</p>
<h3>Remaining Issues</h3>
<p>So I just went through this process yesterday, and I&#8217;m still working on some of the remaining optimization issues:</p>
<ol>
<li>Some of the static files included by plugins and themes don&#8217;t get served by the CDN.  I&#8217;ll have to dig into the code a bit to figure out why some files do and don&#8217;t get included.</li>
<li>There are other types of static content that could potentially be moved to the CDN such as swf files.</li>
<li>The CDN needs to be synced with the local files whenever new static files are added, e.g. when new images are uploaded to the uploads folder.  There may be a way to trigger this within Wordpress.  Alternatively, it may be desirable to set up a cron job to handle period syncing of files.  Of course, a manual sync is also possible.</li>
<li>If you have a moderate number of plugins activated the number of HTTP requests made on the page is quite large.  For example, right now this posting is reporting 24 external javascript files, 7 stylesheets, and 10 background images.  It would be nice if the javascript and css could be combined into a single file.</li>
</ol>
<p>I&#8217;ll close by posting some of the stats with and without using the My CDN plugin.</p>
<img src="http://feeds.feedburner.com/~r/Morphatic/~4/zbOjMnB2F7M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.morphatic.com/2009/07/21/optimizing-wordpress-with-my-cdn/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.morphatic.com/2009/07/21/optimizing-wordpress-with-my-cdn/</feedburner:origLink></item>
		<item>
		<title>Morphatic Reloaded</title>
		<link>http://feedproxy.google.com/~r/Morphatic/~3/BhkhTnbXTiE/</link>
		<comments>http://www.morphatic.com/2009/07/17/morphatic-reloaded/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 07:52:38 +0000</pubDate>
		<dc:creator>Morgan Benton</dc:creator>
				<category><![CDATA[Miscellany]]></category>

		<guid isPermaLink="false">http://www.morphatic.com/?p=1</guid>
		<description><![CDATA[So this site has been down for about eight months now, and I&#8217;m just now finding time to get it going again.  I decided it&#8217;s time for a fresh start.  I think I&#8217;m finally beginning to find my voice, and so we&#8217;ll see if I can make a go of blogging.  I imagine that I&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-medium wp-image-6" title="Hitting Reset" src="http://www.morphatic.com/wp-content/uploads/2009/07/IMGP4601-300x225.jpg" alt="Hitting Reset" width="300" height="225" />So this site has been down for about eight months now, and I&#8217;m just now finding time to get it going again.  I decided it&#8217;s time for a fresh start.  I think I&#8217;m finally beginning to find my voice, and so we&#8217;ll see if I can make a go of blogging.  I imagine that I&#8217;ll end up writing a lot about teaching and learning and also posting random technical stuff.  I&#8217;ve always been in awe of those guys who write such beautiful tutorials on how to do just about everything on their websites.  I mean, how do they find the time?  Now I&#8217;m beginning to realize that, if they&#8217;re like me, they&#8217;re probably writing those tutorials for themselves so they don&#8217;t forget what they did the last time they encountered whatever problem it was their tutorial addresses.</p>
<img src="http://feeds.feedburner.com/~r/Morphatic/~4/BhkhTnbXTiE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.morphatic.com/2009/07/17/morphatic-reloaded/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.morphatic.com/2009/07/17/morphatic-reloaded/</feedburner:origLink></item>
	</channel>
</rss>
