<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>alexscammon.com</title>
	<atom:link href="http://alexscammon.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://alexscammon.com</link>
	<description>alexscammon.com</description>
	<lastBuildDate>Tue, 15 Nov 2011 21:05:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Noisy trains</title>
		<link>http://alexscammon.com/2011/08/noisy-trains/</link>
		<comments>http://alexscammon.com/2011/08/noisy-trains/#comments</comments>
		<pubDate>Tue, 02 Aug 2011 04:31:46 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Bart]]></category>
		<category><![CDATA[hearing loss]]></category>
		<category><![CDATA[noise]]></category>

		<guid isPermaLink="false">http://alexscammon.com/2011/08/noisy-trains/</guid>
		<description><![CDATA[I&#8217;m sure it has been written about before, but I&#8217;m amazed at how loud BART is.   With a free dB meter, I&#8217;m watching this train average 90dB&#8217;s the entire way through the tunnel. This morning&#8217;s train was pushing 100dB&#8217;s. Surely this is bad for everyone&#8217;s hearing. I felt compelled to use my earplugs rather [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sure it has been written about before, but I&#8217;m amazed at how loud BART is.  <span id="more-68"></span></p>
<p>With a free dB meter, I&#8217;m watching this train average 90dB&#8217;s the entire way through the tunnel.</p>
<p>This morning&#8217;s train was pushing 100dB&#8217;s. Surely this is bad for everyone&#8217;s hearing. I felt compelled to use my earplugs rather than gut it out.</p>
<p>I guess a shout out to <a href="http://earlove.net">Earlove</a> is in order</p>
]]></content:encoded>
			<wfw:commentRss>http://alexscammon.com/2011/08/noisy-trains/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migrating WordPress Blogs: Fixing the Serialization</title>
		<link>http://alexscammon.com/2011/06/migrating-wordpress-blogs-fixing-the-serialization/</link>
		<comments>http://alexscammon.com/2011/06/migrating-wordpress-blogs-fixing-the-serialization/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 05:02:31 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://alexscammon.com/?p=62</guid>
		<description><![CDATA[WordPress does a silly thing.  It has serialized data inside its database.  For me, this usually becomes a problem when I try and move a site from &#8216;beta.blahblah.com&#8217; to &#8216;www.blahblah.com&#8217;.  The length of the url changes by 1, and makes a whole bunch of things not work when I bring the site up on &#8216;www.blahblah.com&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress does a silly thing.  It has serialized data inside its database.  For me, this usually becomes a problem when I try and move a site from &#8216;beta.blahblah.com&#8217; to &#8216;www.blahblah.com&#8217;.  The length of the url changes by 1, and makes a whole bunch of things not work when I bring the site up on &#8216;www.blahblah.com&#8217;<span id="more-62"></span></p>
<p>Fortunately, I&#8217;ve run across a couple scripts to fix the problem.  Unfortunately, by the time I need to migrate another site I usually forget where the scripts are.  To allay this problem the next time I migrate a site, I&#8217;m putting the links here so I&#8217;ll have them forever.</p>
<p>The normal one I use is by a guy named James:</p>
<p><a href="http://www.bangheadonwall.net/?attachment_id=227">http://www.bangheadonwall.net/?attachment_id=227</a></p>
<p><a title="My go-to script" rel="attachment wp-att-63" href="http://alexscammon.com/2011/06/migrating-wordpress-blogs-fixing-the-serialization/fix_serialization-php_/">fix_serialization.php</a></p>
<p>I&#8217;ve used this many times with no incident.</p>
<p>And in the  course of writing this blog I came across another which looks more general, well-written, and sounds like it would do the job just as well.</p>
<p><a href="http://interconnectit.com/124/search-and-replace-for-wordpress-databases">http://interconnectit.com/124/search-and-replace-for-wordpress-databases/</a></p>
<p><a title="A script which I have yet to try" rel="attachment wp-att-64" href="http://alexscammon.com/2011/06/migrating-wordpress-blogs-fixing-the-serialization/searchreplacedb-1-0-2/">searchreplacedb-1.0.2</a></p>
<p>Hope this helps someone else out there.  And if it doesn&#8217;t, well, at least it helped me&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexscammon.com/2011/06/migrating-wordpress-blogs-fixing-the-serialization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reverbnation to iCal</title>
		<link>http://alexscammon.com/2011/05/reverbnation-to-ical/</link>
		<comments>http://alexscammon.com/2011/05/reverbnation-to-ical/#comments</comments>
		<pubDate>Wed, 11 May 2011 17:17:28 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://alexscammon.com/?p=57</guid>
		<description><![CDATA[Ok, I&#8217;ll take a break from the ArtistData posts to point out a little thang that I did before I started all that work. When a couple of my bands used Reverbnation as their main entrepot for gig dates, I wanted to get the gigs on my calendar automatically. See, at least one of my [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, I&#8217;ll take a break from the ArtistData posts to point out a little thang that I did before I started all that work.  When a couple of my bands used Reverbnation as their main entrepot for gig dates, I wanted to get the gigs on my calendar automatically.  See, at least one of my bands schedules gigs without actually telling me&#8230;. musicians, y&#8217;know?<span id="more-57"></span></p>
<p>The problem is that Reverbnation doesn&#8217;t actually provide an iCal url for easy consumption.  They have an RSS feed, but things like Google Calendar can&#8217;t import that.  So I wanted to convert the RSS feed into an iCal format.  I could have set up a daemon on my own server to do the conversion, but I wanted to come up with an option that would be possible for others, too.</p>
<p>I eventually tried doing the conversion with Yahoo! Pipes.  You can see the pipe here:</p>
<p><a href="http://pipes.yahoo.com/stackedsax/reverb">http://pipes.yahoo.com/stackedsax/reverb<br />
</a></p>
<p>Click &#8220;More options&#8221; and grab the iCal link.  Use the link to import into whatever calendar program you use.</p>
<p>For others to use this for your band, you can</p>
<ol>
<li>&#8216;Clone&#8217; the pipe</li>
<li>&#8216;View Source&#8217; on your copy</li>
<li>Change the first step of the pipe to use your Reverbnation feed.  ie:
<ul>
<li>SELECT * FROM rss WHERE url=&#8221;http://www.reverbnation.com/rss/artist_shows_rss/justinancheta&#8221;</li>
<li>SELECT * FROM rss WHERE url=&#8221;http://www.reverbnation.com/rss/artist_shows_rss/mybadassband&#8221;</li>
</ul>
</li>
<li>You can then grab your own iCal  and use for your own purposes like importing the iCal into Google Calendar.</li>
</ol>
<p>A caveat: occasionally the iCal from the pipe wouldn&#8217;t come up, and I couldn&#8217;t figure out why &#8212; possibly ReverbNation thinking Pipes was trying to DOS it? I would flip between Pipes V1 and V2 and it would start working so I believe Reverbnation might be blocking Yahoo!&#8217;s servers after a certain number of requests.  Switching to V2 servers made things work for a little time and then it would be blocked again.  However, this is just a theory.  I&#8217;d be interested to see if others find it to work reliably.</p>
<p>I posted this workaround on <a href="http://support.reverbnation.com/reverbnation/topics/google_calendar_sync_with_reverbnation_is_it_possible#reply_5138173">a thread on ReverbNation&#8217;s support page</a>, and it looks like some others have already used it to good end.</p>
<p>Again, this isn&#8217;t the solution that I ultimately ended up using &#8212; read all the other ArtistData poss for that &#8212; but it&#8217;s one way of attacking the problem of your fellow musicians&#8217; ineffective communiction skillz.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://alexscammon.com/2011/05/reverbnation-to-ical/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ArtistData WordPress Widget</title>
		<link>http://alexscammon.com/2011/03/artistdata-wordpress-widget/</link>
		<comments>http://alexscammon.com/2011/03/artistdata-wordpress-widget/#comments</comments>
		<pubDate>Sat, 26 Mar 2011 10:26:38 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://alexscammon.com/?p=44</guid>
		<description><![CDATA[Background Continuing my saga of building a better band website, I spent a lot of time smoothing out my approach to keeping the band&#8217;s schedule in line on all of the ziillion sites that list band dates. The goals were these: Have a single place to enter dates.  Two places is too many. Update the [...]]]></description>
			<content:encoded><![CDATA[<h3>Background</h3>
<p>Continuing my saga of building a better band website, I spent a lot of time smoothing out my approach to keeping the band&#8217;s schedule in line on all of the ziillion sites that list band dates.<span id="more-44"></span></p>
<p>The goals were these:</p>
<ol>
<li>Have a single place to enter dates.  Two places is too many.</li>
<li>Update the various social networks with new show dates (<a title="Facebook" href="http://www.facebook.com/">Facebook</a>, <a title="MySpace" href="http://www.myspace.com/">MySpace</a>, <a title="Twitter" href="http://twitter.com/">Twitter</a>)</li>
<li>Update tons of other entertainment-related sites that we have profiles on, in particular making sure <a title="ReverbNation" href="http://reverbnation.com/">ReverbNation</a> is updated</li>
<li>Be able to show the concert dates on my personal calendar without any extra work from me.</li>
<li>Be able to show concert dates on our WordPress site in a visually-pleasing manner.</li>
</ol>
<p>The simple answer is that I employ <a title="ArtistData" href="http://artistdata.com/">Artistdata</a> as the central source of truth for all of my bands&#8217; dates.  They handle the first three very well, and you can read for yourself all the sites that they update.  The details, however, warrant a lot of conversation.</p>
<p>I&#8217;m going through all of the pieces of this puzzle one by one.  Here, I&#8217;ll discuss what I did to get my dates displaying on my website via a custom WordPress plugin.</p>
<h3>ArtistData WordPress Widget</h3>
<p>Once I knew that the calendar dates would get disseminated far and wide on many other sites, I turned to the question of displaying the dates on our own website.</p>
<p>Sure, I could have used the HTML widget that ArtistData or any number of other sites would provide for us, but with all of them I found that it would be difficult to customize the look and feel in just the right way.  I could do it, but it might take just as much time to code my own widget as it would take to hack apart someone else&#8217;s HTML to suit my needs.</p>
<p>At first, <a title="Gigpress Widget Research" href="http://getsatisfaction.com/gigpress/topics/integration_with_reverb_nation_and_artist_data">I hunted down the question</a> of whether I could make ArtistData join forces with <a href="http://gigpress.com/">GigPress</a>, an existing WordPress plugin that handles calendaring for band sites and provides a bunch of widgets and shortcodes for band-specific purposes.</p>
<p>While I could get ArtistData to update GigPress&#8217;s database with new and changed dates, there was no way to do the reverse.  Since ArtistData doesn&#8217;t have an API to programmatically update show dates in their database, I was stuck with one-way replication.  If anyone made a change directly on the WordPress site, that change would never make it back to ArtistData and would never update the rest of the sites that carry our information.</p>
<p>I decided that I would just roll my own WordPress plugin.  We will manage event stuff only at ArtistData, not in two places.</p>
<p>I looked at the <a title="GigPress documentation" href="http://gigpress.com/docs">features the GigPress provides</a> and modeled my plugin around providing those same features.  So far, I have implemented shortcodes, sidebar widget, and template tags.  I have inly implemented a handful of the 15 or 16 variables that GigPress offers with their shortcodes, but they&#8217;re enough for my personal needs at the moment.  I haven&#8217;t done the bits around custom CSS and custom HTML, but I think that should be fairly quick work when I sit down at this again.</p>
<p>As part of this plugin, I spent a lot of time investigating proper ways of writing a wordpress plugin.  There are a lot of really bad examples out there, but I took my initial cues from <a title="Nice plugin tutorial by Jay Fortner" href="http://w3prodigy.com/behind-wordpress/php-classes-wordpress-plugin/">Jay Fortner&#8217;s site</a>.  I&#8217;d like to believe that the plugin that I wrote is a reasonably clean and intelligently laid-out plugin.  It sure beats a lot of the dross I&#8217;ve encountered in other plugins.</p>
<p>You can see the work in progress on this plugin in a couple different places:</p>
<ul>
<li><a href="http://www.frobeck.com/shows/">http://www.frobeck.com/shows/</a></li>
<li><a href="http://www.justinancheta.com/shows/">http://www.justinancheta.com/shows/</a></li>
<li><a href="http://www.powers-that-be.com/shows/">http://www.powers-that-be.com/shows/<br />
</a></li>
</ul>
<p>All of them need some work on the front-end details.  I got to a certain point with my redesigns of all these sites and then got distracted by other projects.  I&#8217;ll probably return to these to finish up the details in another couple weeks.</p>
<p>The main question is what to do about offering the plugin to others.  I&#8217;ve spoken to the developers at Artistdata and they expressed interest in the plugin.  We have yet to sit down and discuss the options there, though.  I could alternatively offer the plugin as a purchased WordPress plugin, or just offer it up for free.  I&#8217;m somewhat interested in selling the plugin for downloads, if only because I&#8217;d have a reason to figure out the infrastructure to do all that.</p>
<p>For the moment, I&#8217;m going to see if there is any more interest on <a title="GigPress ArtistData Discussion" href="http://getsatisfaction.com/gigpress/topics/integration_with_reverb_nation_and_artist_data">this conversation</a> or <a title="ArtistData WordPress Suggestion" href="http://artistdata.uservoice.com/forums/8322-artistdata-suggestions/suggestions/196913-would-love-csv-compatibility-with-gigpress-for-wo?ref=comments">this suggestion</a> or <a title="Another ArtistData WordPress Suggestion" href="http://artistdata.uservoice.com/forums/8322-artistdata-suggestions/suggestions/239357-developer-api-plans-or-wordpress-plugin-?ref=title">this suggestion</a> to see if interest in this plugin is sufficient for me to continue doing the work to release the plugin to the world somehow.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexscammon.com/2011/03/artistdata-wordpress-widget/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>Artistdata to ReverbNation</title>
		<link>http://alexscammon.com/2011/03/artistdata-reverbnation/</link>
		<comments>http://alexscammon.com/2011/03/artistdata-reverbnation/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 03:12:18 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://alexscammon.com/?p=3</guid>
		<description><![CDATA[Background Continuing my saga of building a better band website, I spent a lot of time smoothing out my approach to keeping the band&#8217;s schedule in line on all of the ziillion sites that list band dates. The goals were these: Have a single place to enter dates.  Two places is too many. Update the [...]]]></description>
			<content:encoded><![CDATA[<h3>Background</h3>
<p>Continuing my saga of building a better band website, I spent a lot of time smoothing out my approach to keeping the band&#8217;s schedule in line on all of the ziillion sites that list band dates.<span id="more-3"></span></p>
<p>The goals were these:</p>
<ol>
<li>Have a single place to enter dates.  Two places is too many.</li>
<li>Update the various social networks with new show dates (<a title="Facebook" href="http://www.facebook.com/">Facebook</a>, <a title="MySpace" href="http://www.myspace.com/">MySpace</a>, <a title="Twitter" href="http://twitter.com/">Twitter</a>)</li>
<li>Update tons of other entertainment-related sites that we have profiles on, in particular making sure <a title="ReverbNation" href="http://reverbnation.com/">ReverbNation</a> is updated</li>
<li>Be able to show the concert dates on my personal calendar without any extra work from me.</li>
<li>Be able to show concert dates on our WordPress site in a visually-pleasing manner.</li>
</ol>
<p>The simple answer is that I employ <a title="ArtistData" href="http://artistdata.com/">Artistdata</a> as the central source of truth for all of my bands&#8217; dates.  They handle the first three very well, and you can read for yourself all the sites that they update.  The details, however, warrant a lot of conversation.</p>
<p>I&#8217;m going through all of the pieces of this puzzle one by one.  Here, I&#8217;ll discuss the nuances around how to get the ReverbNation dates to update from the data in ArtistData.</p>
<h3>ArtistData to ReverbNation</h3>
<p>This part of the integration was tricky to figure out.  A lot of my bands liked updating at Reverbnation and didn&#8217;t want to lose the fans who checked the info on this site.</p>
<p>The problem was that getting the data out of Reverbnation was difficult.  There is an <a title="ReverbNation RSS Feed" href="http://www.reverbnation.com/rss/artist_shows_rss/justinancheta">RSS feed,</a> and that is good enough to power a <a title="Blog on My ArtistData &lt;-&gt; WordPress Widget" href="http://alexscammon.com/2011/03/artistdata-wordpress-widget/">basic wordpress widget</a>, which is one o my needs.  But there was no iCal feed, so I was going to have to build that functionality somehow if I wanted easy integration with my calendar.  I&#8217;m extremely lazy when it comes to putting dates into my calendar, so I need it done for me automatically or else I&#8217;ll never show up to my gigs.  Solving the iCal part of this was a must and was where ReverbNation fails to provide.</p>
<p>I did take a crack at converting ReverbNation&#8217;s RSS feed to an iCal format by creating a <a title="Yahoo! Pipes" href="http://pipes.yahoo.com/pipes">Yahoo! Pipe</a> with <a title="ReverbNation RSS to iCal Pipe" href="http://pipes.yahoo.com/pipes/pipe.info?_id=2ad34eea42396c71509218a890ba0206">this experiment</a>.  But I found that this pipe wasn&#8217;t perfectly reliable and I could never tell whether it was something I had done or whether it was some inherent wonkiness with Pipes itself.</p>
<p>Fortunately, ArtistData provides both an <a title="ArtistData RSS Feed" href="http://artistdata.sonicbids.com/justin-ancheta/shows/xml/">RSS</a> and an <a title="ArtistData iCal Feed" href="http://feeds.artistdata.com/ical.shows/artist/AR-HN06117SCIO2H228/icalgm">iCal</a> feed.  The problem with using ArtistData as the source of truth for all the concert dates was that ReverbNation didn&#8217;t seem to be able to import from an external feed &#8212; and it certainly didn&#8217;t import from ArtistData.</p>
<p>After a lot of research and talking with ReverbNation support, I discover a somewhat-secret feature of ReverbNation: they DO read feeds from <a title="Jambase" href="http://www.jambase.com/">JamBase</a>, <a title="BandsInTown" href="http://www.bandsintown.com/home">BandsInTown</a> and <a title="Eventful" href="http://eventful.com/">Eventful</a>.  You just have to create a profile on one of those other three sites and then email support(at)reverbnation(dot)com and ask them to hook it up.</p>
<p>ArtistData, meanwhile, sends event data to all three of those sites, so putting in a calendar date in ArtistData should wind up getting to ReverbNation eventually.</p>
<p>It&#8217;s not a perfect solution.  The updates to JamBase/BandsInTown/Eventful can take a day or two to register.  ReverbNation only scrapes data from those sites every Friday morning, so your update can sometimes take a little over a week to make it to ReverbNation.  Not great if you have lots of sudden gigs, but good enough for now.</p>
<p>In response to Jon Burr&#8217;s question, here&#8217;s a breakdown of what to do:</p>
<ol>
<li>Login to ArtistData</li>
<li>Go to Tools -&gt; Concert Databases</li>
<li>Go to BandsInTown, Eventful, and Jambase and make sure each one is activated</li>
<li>Add a new show in Artistdata.  These should get posted to BandsInTown/Eventful/Jambase within a few days</li>
<li>Email support(at)reverbnation(dot)com and ask them to hook up feeds from these three sites to your ReverbNation account.  Here&#8217;s what I wrote to them:</li>
</ol>
<blockquote><p>Hi there,</p>
<p>I&#8217;ve been a part of this discussion:</p>
<p><a href="http://support.reverbnation.com/reverbnation/topics/rss_feed-tpzqv?from_gsfn=true" target="_blank">http://support.reverbnation.com/reverbnation/topics/rss_feed-tpzqv?from_gsfn=true</a></p>
<p>And I&#8217;d like to add some feeds to one of the bands I play with, the Justin Ancheta Band.</p>
<p>His Reverbnation account is:</p>
<p>justinancheta<br />
<a href="http://www.reverbnation.com/justinancheta" target="_blank">http://www.reverbnation.com/justinancheta</a></p>
<p>The relevant links on Jambase and Eventful are:</p>
<p><a href="http://www.jambase.com/Artists/60971/Justin-Ancheta/Shows" target="_blank">http://www.jambase.com/Artists/60971/Justin-Ancheta/Shows</a><br />
<a href="http://www.bandsintown.com/JustinAncheta/upcoming_events" target="_blank">http://www.bandsintown.com/JustinAncheta/upcoming_events</a></p>
<p>I&#8217;m not sure if Eventful has a pertinent link for Justin yet, but it does have a few of his shows listed:</p>
<p><a href="http://www.bandsintown.com/JustinAncheta/upcoming_events" target="_blank">http://www.bandsintown.com/JustinAncheta/upcoming_events</a></p>
<p>Thank you very much for hooking this up,</p>
<p>.:alex:.</p></blockquote>
<p>And they got back to me the following day letting me know that it had been hooked up.  For the record, they only hooked up our JamBase feed, but it seems to be working just fine.  I never could quite figure out whether I needed to set up accounts on BandsInTown/Eventful/JamBase for this all to work, but I did anyway.</p>
<p>At the end of the day, the ability to update in just one place and having to wait a couple of days for the event to make it to ReverbNation is far better than relying on someone in the band remembering to update multiple websites with the date information.  Making things as simple as possible, even at the cost of the speed of the update, seems like a reasonable trade-off.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexscammon.com/2011/03/artistdata-reverbnation/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Band websites: preparing for Armageddon</title>
		<link>http://alexscammon.com/2011/02/band-websites-preparing-for-armageddon/</link>
		<comments>http://alexscammon.com/2011/02/band-websites-preparing-for-armageddon/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 08:01:38 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://alexscammon.com/?p=12</guid>
		<description><![CDATA[Want to see me lay down the law for integrating your site with Cloudfront?]]></description>
			<content:encoded><![CDATA[<p>There is always the possibility of some band getting so hugely popular on some hit single or by earning the overwhelming adoration of the entire world that their website is going to receive a lot of traffic.  When we build a band website, we should plan for the eventual repercussions of winning <a href="http://www.youtube.com/watch?v=X_ALGeEXqfc">Guitarmageddeon</a>.<span id="more-12"></span></p>
<p>Since this blog is focused on WordPress sites, the solution here is to employ two tools:</p>
<ul>
<li>W3 Total Cache</li>
<li>Cloudfront</li>
</ul>
<p>W3 Total Cache is a free WordPress plugin and Cloudfront is a Amazon service.  Combined, the two tools do almost all the heavy lifting and relieve the burden of serving 5 billion individual requests for your homepage when the fans come looking for the tour dates announcement.</p>
<h2>W3 Total Cache</h2>
<p>I used to use WP Super Cache for some WordPress websites I created in the past, but a friend pointed me to W3 Total Cache and I instantly fell in love.  In particular, the minification an CDN integration pieces were what I needed, and W3 Total Cache has what I required.  I want to discuss the CDN integration only for the moment.</p>
<h2>Amazon Cloufront</h2>
<p>Cloudfront is one among a bevy of cloud services Amazon provides.  It edge serves your files, meaning.  Services such as Akamai and Limelight are probably faster and have more features, but they&#8217;re expensive and most of us couldn&#8217;t even afford to think about their pricing tiers.  Amazon&#8217;s services, meanwhile, only require that we have a Amazon account and so far this elaborate and high-tech setup has cost me well under a dollar a month.</p>
<h2>Setup:</h2>
<p><strong>Create a Cloudfront distribution using Origin Pull</strong></p>
<p><strong> </strong>In times past you had to use S3 in order to use Cloudfront.  You then had to set up some crazy sync from your website to S3 and tell Cloufront to pick up your files from S3.  Don&#8217;t do this!  It&#8217;s no longer necessary!  There&#8217;s a simple way!</p>
<p>Instead of using S3 as the origin for your files, you can now set your website to be the origin directly.  If someone asks Cloudfront for a file it doesn&#8217;t have, Cloudfront will quickly grab the file directly from your website, cache it, and serve it.</p>
<p>Of course, things are never quite so simple as they first would appear.  As of the writing of this article, Amazon&#8217;s web interface wouldn&#8217;t let me set my website as the origin.  So even though you CAN set any site as the origin, Amazon&#8217;s tools won&#8217;t let you set this setting.  When I entered &#8220;http://www.frobeck.com&#8221; as the origin, Amazon&#8217;s GUI automatically changed this to &#8220;http://www.frobeck.com.s3.amazonaws.com&#8221;.  Not good.  No way around it as far as I could see.</p>
<p>Which left me looking for some other tool to set this setting properly.  A bunch of tools would let me interface directly with the API, but that was overly nerdy for me in this particular moment.  Instead, I just used a trial version of Bucket Explorer.  To set a custom origin with Bucket Explorer:</p>
<ol>
<li>Login (the hardest part for me because I couldn&#8217;t paste my Access Key)</li>
<li>Click &#8220;Distribution&#8221;</li>
<li>Click &#8220;New&#8221;</li>
<li>Click the &#8220;Custom&#8221; tab</li>
<li>Check &#8220;Set Custom Origin&#8221;</li>
<li>Set your &#8220;DNSName&#8221; to your website&#8217;s url (http://www.frobeck.com in this example)</li>
<li>Set HTTP Port to 80 and HTTPS Port to 443</li>
<li>Go back to the &#8220;General&#8221; tab and create 4 CNAMEs (at least):
<ol>
<li>cdn.frobeck.com</li>
<li>cdn1.frobeck.com</li>
<li>cdn2.frobeck.com</li>
<li>cdn3.frobeck.com</li>
</ol>
</li>
<li>Set a description for this distribution in the Comment if you like</li>
<li>Click &#8220;Create&#8221;</li>
<li>In the distribution list, copy the &#8220;Domain Name&#8221; that was created for this distribution.  We&#8217;ll use it in the next step.</li>
</ol>
<p><strong>Step 1: Create 4 CNAMEs</strong></p>
<p>Yeah, I had you add 4 CNAMEs to your distribution.  Seems crazy and stupid.  But this will allow us to take advantage of a feature of W3 Total Cache in a later step.<br />
My VPS runs WHM, so in cPanel, you&#8217;d do something like:</p>
<ol>
<li>Click &#8220;Simple DNS Zone Editor&#8221;</li>
<li>In &#8220;Add a CNAME&#8221;, enter:
<ol>
<li>Name: &#8220;cdn.frobeck.com&#8221;</li>
<li>CNAME: &lt;the &#8220;Domain Name&#8221; from Step 11 in the previous section&gt;</li>
</ol>
</li>
<li>Click &#8220;Add CNAME Record&#8221;</li>
<li>And repeat for every CNAME you need created.  Every cdn[x].frobeck.com will point at the same Cloudfront distribution.</li>
</ol>
<p><strong>Set the settings in W3 Total Cache</strong></p>
<p>In General Settings:</p>
<ol>
<li>Go to the &#8220;Content Delivery Network&#8221; section</li>
<li>For &#8220;CDN&#8221;, check &#8220;Enable&#8221;</li>
<li>For &#8220;CDN Type&#8221; check the first option, &#8220;Mirror&#8221;</li>
<li>Click &#8220;Save Changes&#8221;</li>
</ol>
<p>Switch to the &#8220;CDN&#8221; settings panel.  Then:</p>
<ol>
<li>For &#8220;Replace site&#8217;s hostname with&#8221;, enter: cdn.frobeck.com</li>
<li>Click Add CNAME</li>
<li>Repeat Step 1 for the other 3 remaining CNAME&#8217;s, cdn[x].frobeck.com</li>
<li>Click &#8220;Save Changes&#8221;</li>
</ol>
<p>Total cache will use these CNAMEs to deliver certain specific files.  cdn.frobeck.com will serve the CSS, cd1 will serve JS in head, cdn2 the JS after body, and cdn4 for the JS before the body.  When a modern browser sees these files, it will download them all in parallel since they re coming from different hostnames.  If we came from a single hostname, those files would block each other and downloading would happen in serial.</p>
<p>I could go into a lot of other very fancy features that I&#8217;ve set with Total Cache &#8212; but I&#8217;m wait until another blog for that.</p>
<h2>That&#8217;s it!</h2>
<p>There&#8217;s not that much to it.  Create your distribution, create some CNAMEs, set a few settings in W3 Total Cache and you have a hassle-free, cloud-enabled site.  This approach is dirt cheap, totally simple and well worth the 20 minutes it will take you to set it up.  You can always get even fancier later with your CDN, but with this setup you&#8217;ll be better prepared for your million-strong fanbase.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexscammon.com/2011/02/band-websites-preparing-for-armageddon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I Have a Plan</title>
		<link>http://alexscammon.com/2011/02/i-have-a-plan/</link>
		<comments>http://alexscammon.com/2011/02/i-have-a-plan/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 07:48:18 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://alexscammon.com/?p=6</guid>
		<description><![CDATA[I&#8217;ve been doing some stuff recently.  I thought the world should know. In particular, I&#8217;ve been madly doing all the sites for the bands I play in.  I finally got fed up with them either being: non-existent bad in flash ugly never updated embodying everything that truly bad band websites embody They might not have [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been doing some stuff recently.  I thought the world should know.</p>
<p>In particular, I&#8217;ve been madly doing all the sites for the bands I play in.  I finally got fed up with them either being:</p>
<ul>
<li>non-existent</li>
<li>bad</li>
<li>in flash</li>
<li>ugly</li>
<li>never updated</li>
<li>embodying everything that truly bad band websites embody</li>
</ul>
<p>They might not have been that bad, but it felt that way to me.</p>
<p>I set out to accomplish a couple things with the new sites:</p>
<ul>
<li>allow all band members to update them</li>
<li>make them look better</li>
<li>have a single source of truth for all show updates</li>
<li>ultra-simple music player</li>
<li>put the right infrastructure for when we get really wickedly super-famous</li>
</ul>
<p>There&#8217;s a lot of meat in these topics.  A lot of people do band websites badly, and the reason is that there are tons and tons of options to wade through &#8212; a lot of them bad.  I&#8217;m going to pick through the details in a series of blog posts, each one aimed at one of the subjects above.</p>
<p>Stay tuned.  I&#8217;m going to start on the first in the series right now.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexscammon.com/2011/02/i-have-a-plan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Content Delivery Network via cdn4.alexscammon.com

Served from: alexscammon.com @ 2012-02-23 01:00:13 -->
