<?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>Duane&#039;s Old World &#187; Wordpress</title>
	<atom:link href="http://archives.duanestorey.com/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://archives.duanestorey.com</link>
	<description>out with the old, in with the new...</description>
	<lastBuildDate>Sun, 13 Jun 2010 16:37:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>WPtouch 2.0: We Can See The Light At The End Of The Tunnel</title>
		<link>http://archives.duanestorey.com/2010/wptouch-2-0-the-lights-at-the-end-of-the-tunnel/</link>
		<comments>http://archives.duanestorey.com/2010/wptouch-2-0-the-lights-at-the-end-of-the-tunnel/#comments</comments>
		<pubDate>Mon, 10 May 2010 20:09:42 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[BraveNewCode]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[wptouch]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=6510</guid>
		<description><![CDATA[We&#8217;re getting pretty close to releasing WPtouch 2.0 soon. We haven&#8217;t officially set a date, but the release will probably be counted using weeks, and can probably be counted using the fingers on one hand. We&#8217;ll hopefully firm that up &#8230; <a href="http://archives.duanestorey.com/2010/wptouch-2-0-the-lights-at-the-end-of-the-tunnel/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re getting pretty close to releasing WPtouch 2.0 soon.  We haven&#8217;t officially set a date, but the release will probably be counted using weeks, and can probably be counted using the fingers on one hand.  We&#8217;ll hopefully firm that up next week.</p>
<p>Dale wrote a pretty informative post <a href="http://www.bravenewcode.com/2010/05/the-big-changes-in-wptouch-2-0/">over on BraveNewCode</a>, so check it out.  In short, we&#8217;ll be releasing a very reasonably priced paid version that includes support first, then will eventually roll out another free version using the new codebase.  The major addition to WPtouch 2.0 is a new theme framework for creating mobile themes.  WPtouch 2.0 will also ship with more than one theme, so that should be an exciting addition for people who use WPtouch.</p>
<p>For more information, check out Dale&#8217;s post above, or following along at <a href="http://www.wptouch.com">wptouch.com</a>, or on BraveNewCode&#8217;s <a href="http://twitter.com/bravenewcode">Twitter feed</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2010/wptouch-2-0-the-lights-at-the-end-of-the-tunnel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordCamp Vancouver</title>
		<link>http://archives.duanestorey.com/2010/wordcamp-vancouver-2/</link>
		<comments>http://archives.duanestorey.com/2010/wordcamp-vancouver-2/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 04:29:33 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[BraveNewCode]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[Vancouver]]></category>
		<category><![CDATA[wordcamp]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=6251</guid>
		<description><![CDATA[It&#8217;s still early in the process, but today we (as a group) started planning a big WordPress event in Vancouver: WordCamp Vancouver. For those of you who follow regularly, you&#8217;ll remember that I was a co-organizer of WordCamp Whistler, which &#8230; <a href="http://archives.duanestorey.com/2010/wordcamp-vancouver-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.wordcampvancouver.com/wordpress_logo.png" alt="WordPress Logo" class="alignright" />It&#8217;s still early in the process, but today we (as a group) started planning a big WordPress event in Vancouver: WordCamp Vancouver.  For those of you who follow regularly, you&#8217;ll remember that I was a co-organizer of WordCamp Whistler, which turned out to be a very well received event with an attendance of about 120 people, which is rather remarkable, given how expensive Whistler is and how far many people drove to be there.</p>
<p>In the past, I&#8217;ve helped put together a few small WordCamp Vancouver events, but the one we&#8217;re planning is going to be a fairly large one I imagine.  Right now we&#8217;re exploring venues in the downtown area near the water, so hopefully people coming from out of town can be treated to some picturesque views of downtown.  Right now the tentative date is June 12th, 2010.</p>
<p>I won&#8217;t say anymore, since we still have lots to plan and discuss.  You can follow along via email by subscribing from the main site at <a href="http://www.wordcampvancouver.com">wordcampvancouver.com</a>, or <a href="http://twitter.com/WordCampYVR">follow WordCampYVR</a> on Twitter.   If you can help get the word out by Tweeting or blogging about this event, that would be great &#8212; thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2010/wordcamp-vancouver-2/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>WordCamp Whistler 2010</title>
		<link>http://archives.duanestorey.com/2009/wordcamp-whistler-2010/</link>
		<comments>http://archives.duanestorey.com/2009/wordcamp-whistler-2010/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 07:09:58 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Bits and Bites]]></category>
		<category><![CDATA[wordcamp]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=5829</guid>
		<description><![CDATA[Everyone keeps asking me if there&#8217;s going to be another WordCamp Whistler this year. Unfortunately the answer is no (at least for the January &#8211; March period), not because there&#8217;s not enough interest (in fact, many people approached me during &#8230; <a href="http://archives.duanestorey.com/2009/wordcamp-whistler-2010/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Everyone keeps asking me if there&#8217;s going to be another WordCamp Whistler this year.  Unfortunately the answer is no (at least for the January &#8211; March period), not because there&#8217;s not enough interest (in fact, many people approached me during the social last year and said what a great time they had, and how they wanted to do it again), but because the 2010 Olympics are happening around the same time, and the logistics of that event will basically make it impossible to pull off this year.</p>
<p>So while I make no promises, perhaps there will be a late 2010 version or and early 2011 version of WordCamp Whistler again if there&#8217;s interest.   If you would be interested in that, then drop a line here.  If there&#8217;s enough interest, I&#8217;ll try to rally the crew and see if we can pull something off.  To keep up with future WordCamp Whistler updates, please follow the official feed on <a href="http://twitter.com/WCWhistler">Twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/wordcamp-whistler-2010/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Consolidation</title>
		<link>http://archives.duanestorey.com/2009/consolidation/</link>
		<comments>http://archives.duanestorey.com/2009/consolidation/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 01:38:42 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web Hosting]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Dropbox]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[Shared]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=5630</guid>
		<description><![CDATA[This weekend was pretty uneventful. I wasn&#8217;t feeling overly ambitious, so I hung out close to home mostly and rented a few movies. I&#8217;m not sure if there really are no movies, or if Apple TV is exceptionally crappy right &#8230; <a href="http://archives.duanestorey.com/2009/consolidation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This weekend was pretty uneventful.  I wasn&#8217;t feeling overly ambitious, so I hung out close to home mostly and rented a few movies.  I&#8217;m not sure if there really are no movies, or if Apple TV is exceptionally crappy right now, but I hardly found anything to watch at all.   </p>
<p>Back in <a href="http://www.duanestorey.com/blog/2009/server-beach-dedicated-hosting/">September</a> I wrote a post about switching to <a href="http://serverbeach.com">Server Beach</a>.  For the most part, it&#8217;s been pretty rock solid.  We have a dual core server there with cPanel on it, and it&#8217;s been relatively pain-free.  One of the reasons we opted for a dedicated server was to make our lives a lot easier.  Prior to setting it up, Dale and I realized we had about four or five hosting accounts combined, many of which had old sites on them.  Unfortunately, keeping everything running smoothly in that scenario is a challenge, especially when you&#8217;re also trying to develop (and backup) sites for clients.   So, we decided to migrate everything onto one server.</p>
<p>We&#8217;re about 80% of the way now, and have shut down a few hosting accounts already (including my old Rimu hosting VPS).  I&#8217;m about to finally pull the plug on my Media Temple account as well, which I&#8217;ve been trying to do for about six months now.  </p>
<p>One of the two tools Dale and I use fairly religiously is <a href="https://www.getdropbox.com/referrals/NTI2NzQ3Mjk5">DropBox</a>.  DropBox allows Dale and I to share a virtual hard drive up in the cloud.  Whenever either of us updates a file, it automatically synchronizes the other person&#8217;s machine.  Last night I also found a Linux based client for it, so I set that up on our server and tied it into Apache.  That means Dale and I can basically modify live sites just by dragging files into folders on our local machines.  Conversely, I configured some of our backup scripts to store various files (such as MySQL backups) in DropBox as well, which means Dale and I both automatically get server backups on our local machines every night.  I think it works pretty slick actually, and I think we&#8217;ll be able to do a few more cool things with that setup.  </p>
<p>My personal goal is to make it so that developing a site on my local machine is nearly identical to developing a site on a remote machine.  Having everything on one server facilitates that quite nicely.  For example, the Server Beach MySQL server is configured as a master, and my personal laptop machine is configured as as MySQL slave.   So whenever I do a posting to duanestorey.com (which resides on Server Beach), the database is automatically synchronized with my laptop.  The next step will be to synchronize the files (through some combination of SVN and DropBox), at which point I&#8217;ll have pretty much an exact replica of the live sites on my laptop (and so will Dale hopefully), which means I can develop without an internet connection, and simply synchronize everything to the live server whenever I&#8217;m plugged in.</p>
<p>So, hopefully by the end of this week we&#8217;ll have shut down all our other hosting accounts.   If anyone is considering moving to Server Beach, feel free to use our referral code: SXHH4BQ82M.  I believe you&#8217;ll save $100 on your first month&#8217;s bill, and we&#8217;ll also get a kickback to help us out as well.   </p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/consolidation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>60 Million Page Views And Counting</title>
		<link>http://archives.duanestorey.com/2009/60-million-page-views-and-counting/</link>
		<comments>http://archives.duanestorey.com/2009/60-million-page-views-and-counting/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 01:53:04 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[BraveNewCode]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[themes]]></category>
		<category><![CDATA[wptouch]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=5617</guid>
		<description><![CDATA[Wow, it&#8217;s only Tuesday, and already we&#8217;ve had quite the week so far at BraveNewCode. Yesterday we pulled the curtain back on a brand new Vision Critical site. Vision Critical was recently announced as the fastest growing company in British &#8230; <a href="http://archives.duanestorey.com/2009/60-million-page-views-and-counting/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wow, it&#8217;s only Tuesday, and already we&#8217;ve had quite the week so far at BraveNewCode.  Yesterday we pulled the curtain back on a brand new <a href="http://www.visioncritical.com">Vision Critical</a> site.  Vision Critical was recently announced as the fastest growing company in British Columbia, and it was a lot of fun working with that team.   </p>
<p>Today Dale and I woke up and starting seeing some press about the new mobile versions on WordPress.com.   WordPress.com is the free, hosted version of the WordPress platform, and currently has around 5 million blogs or so on it I believe.   As of today, the iPhone plugin for WordPress that Dale and I created, <a href="http://www.bravenewcode.com/wptouch">WPtouch</a>, is now live on WordPress.com, and is the default theme for all users viewing the site on an iPhone.  That means roughly 60 million page views a month on WordPress.com will feature WPtouch.</p>
<p>That&#8217;s obviously super cool, and we&#8217;re pretty excited about it.  Thanks to everyone for supporting WPtouch and <a href="http://www.bravenewcode.com">BraveNewCode</a>!  Dale and I have a lot of really exciting things on the go right now, so stay tuned for some more excitement.   If you want to follow along, <a href="http://twitter.com/bravenewcode">follow us on Twitter</a>, <a href="http://www.bravenewcode.com/newsletter">or sign up for our newsletter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/60-million-page-views-and-counting/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Back In The Wack</title>
		<link>http://archives.duanestorey.com/2009/back-in-chilliwack/</link>
		<comments>http://archives.duanestorey.com/2009/back-in-chilliwack/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 16:28:44 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Bits and Bites]]></category>
		<category><![CDATA[chilliwack]]></category>
		<category><![CDATA[Dale]]></category>
		<category><![CDATA[home]]></category>
		<category><![CDATA[Oregon]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=5476</guid>
		<description><![CDATA[Well, I made it back home late last night. Thankfully, the border agents didn&#8217;t grill me as hard as they normally do, otherwise I probably would have started with the smart ass responses. I gotta say, WordCamp Portland was a &#8230; <a href="http://archives.duanestorey.com/2009/back-in-chilliwack/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Well, I made it back home late last night.  Thankfully, the border agents didn&#8217;t grill me as hard as they normally do, otherwise I probably would have started with the smart ass responses.  </p>
<p>I gotta say, WordCamp Portland was a really amazing event, so major kudos to everyone involved in pulling it off.  In fact, with each WordCamp I attend, I think that bar is getting progressively pushed higher and higher.  For example, prior to my talk someone came and fitted me with a wireless microphone in addition to a normal microphone, the former being for the live stream.  In addition, they exported all my slides to JPG/PDF such that the people watching on the internet could go through my slides while I was talking.  Apparently the live stream was nearly flawless as well, which is great.</p>
<p>One thing that still bothers me about conferences in general though is sort of the lack of tact on Twitter sometimes after the fact.  Everyone is entitled to their opinion, but I hate seeing people dish out insults or negative opinions and then add the conference hash tag to the tweet so that everyone sees it.  I didn&#8217;t see much of this in Portland thankfully (way to go Portland!), but I&#8217;ve been to a few conferences where that&#8217;s the case.  It must be hard as a speaker spending all that prep work (or traveling) only to be greeted with a pile of negative comments on your presentation or your content after it&#8217;s all done.  I think some things are better said offline or in an email, but that&#8217;s just me.</p>
<p>But anyways, Portland was great, and everyone I met was super nice.  The conference went awesome, and I learned a lot of cool things.   But, as I pointed out before, I&#8217;m happy to be past it, since now I can focus on taking a bit of a breather at home.  Dale&#8217;s flying in on Thursday and hanging out at my place for the weekend, so we&#8217;ll probably just take it easy, grab a movie or two, and maybe hit a restaurant or two.  I also have to write an article this week for a Europe magazine (I&#8217;ve been putting it off), but hopefully that won&#8217;t take me too long.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/back-in-chilliwack/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordCamp Portland</title>
		<link>http://archives.duanestorey.com/2009/wordcamp-portland-2/</link>
		<comments>http://archives.duanestorey.com/2009/wordcamp-portland-2/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 14:11:22 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[whistler]]></category>
		<category><![CDATA[wordcamp]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=5467</guid>
		<description><![CDATA[Well, here we are. It&#8217;s been a long time coming, but WordCamp Portland is finally here. I spent most of yesterday traveling, mainly due to the slowness of airlines, but ended up arriving around 6:30pm or so last night. There &#8230; <a href="http://archives.duanestorey.com/2009/wordcamp-portland-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Well, here we are.  It&#8217;s been a long time coming, but WordCamp Portland is finally here.  I spent most of yesterday traveling, mainly due to the slowness of airlines, but ended up arriving around 6:30pm or so last night.</p>
<p>There was a dinner last night for the speakers and sponsors, and it was good to finally meet everyone involved in the event.  The restaurant was Ethiopian, which you don&#8217;t see too many of back in BC, so it was a great treat.  Thanks to the dinner sponsor who picked up the food and drinks last night.</p>
<p>I was originally going to come back to my hotel room last night and work on my slides, but truthfully, was pretty beat.  I decided to take the rugby game approach to my slides and take the day off before the game.  So while I&#8217;ll tweak them a bit over the next seven hours or so,  I&#8217;m probably just going to present what I already have prepared, which I think will be fine.</p>
<p>I also have to thank the Coast Hotels for giving me their friends and family rate in Portland&#8217;s Benson Hotel.  The room is basically a small suite with a big, soft king-sized bed, and it&#8217;s super comfy.</p>
<p><img src="http://farm4.static.flickr.com/3491/3932736735_28a2a7dd37.jpg" alt="Coast Hotels, Portland Benson Hotel" /></p>
<p>I have a little surprise in store for my presentation, and I&#8217;m hoping there&#8217;s audio available up front.  If not, I may try to run out and get a little speaker system such that I can play something.  </p>
<p>If you&#8217;re just passing by here from WordCamp Portland, feel free to drop a comment and say hi!  I hope to meet as many people as I can over the course of the next 48 hours, and hopefully see a few people later at a bar.  Also check over at <a href="http://www.bravenewcode.com/blog/">BraveNewCode</a> where I&#8217;ll probably put a few blog entries up later.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/wordcamp-portland-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Poll</title>
		<link>http://archives.duanestorey.com/2009/mobile-poll/</link>
		<comments>http://archives.duanestorey.com/2009/mobile-poll/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 21:06:06 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[wptouch]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=5450</guid>
		<description><![CDATA[I&#8217;m trying to include some stats in my WordCamp Portland presentation. I was hoping everyone who reads this might be able to answer a few questions (please only vote for the topics that are relevant to you): [poll id="16"] [poll &#8230; <a href="http://archives.duanestorey.com/2009/mobile-poll/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m trying to include some stats in my WordCamp Portland presentation.  I was hoping everyone who reads this might be able to answer a few questions (please only vote for the topics that are relevant to you):</p>
<p>[poll id="16"]</p>
<p>[poll id="17"]</p>
<p>[poll id="18"]</p>
<p>[poll id="19"]</p>
<p>[poll id="20"]</p>
<p>Based on the results from this, I might ask a few more questions.  Thanks everyone.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/mobile-poll/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>WordCamp Portland</title>
		<link>http://archives.duanestorey.com/2009/wordcamp-portland/</link>
		<comments>http://archives.duanestorey.com/2009/wordcamp-portland/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 18:13:38 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[friends]]></category>
		<category><![CDATA[PDX]]></category>
		<category><![CDATA[Portland]]></category>
		<category><![CDATA[wordcamp]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=5301</guid>
		<description><![CDATA[I just finished booking my flight to WordCamp Portland, so I figured now was a good time to write a post about it. I was a co-organizer for two WordCamp Vancouver events, as well as one up in Whistler, but &#8230; <a href="http://archives.duanestorey.com/2009/wordcamp-portland/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I just finished booking my flight to WordCamp Portland, so I figured now was a good time to write a post about it.  I was a co-organizer for two WordCamp Vancouver events, as well as one up in Whistler, but strangely enough I haven&#8217;t actually spoken at a WordCamp for almost about two years now.   So having me up front should make for some interesting entertainment.</p>
<p>I&#8217;ll be speaking on mobile blogging, with an emphasis on our WPtouch plugin.  I&#8217;ll probably also talk a bit about mobile blogging in general, similarly to what I talked about at the Network Hub a few years ago.  If I have time, I&#8217;ll probably also touch on the WordPress iPhone application a bit, and whatever else in the mobile sphere I can find.   <a href="http://ma.tt">Matt Mullenweg</a> will also be holding a town-hall type of event where the audience can ask a bunch of WordPress questions, so that should be fun.</p>
<p>I&#8217;ll be flying out of Bellingham on the 18th of September, and returning late at night on the 20th.  I&#8217;m not sure where I&#8217;ll be staying yet, but a few people pinged me on Twitter with some possible options, so we&#8217;ll see where those lead.  I believe I&#8217;m currently slotted to speak on Sunday sometime, so Saturday will probably be the day I start putting my slides together.  I imagine there will be some type of social on Saturday as well, so that should be fun.</p>
<p>If you&#8217;d like to read more about it, <a href="http://www.wordcampportland.org/">visit the official WordCamp Portland</a> website.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/wordcamp-portland/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordCamp Whistler In Review</title>
		<link>http://archives.duanestorey.com/2009/wordcamp-whistler-in-review/</link>
		<comments>http://archives.duanestorey.com/2009/wordcamp-whistler-in-review/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 20:54:34 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[friends]]></category>
		<category><![CDATA[wordcamp whistler]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=5038</guid>
		<description><![CDATA[I get the odd inquiry about the work involved in organizing a conference, particularly a WordCamp. Rebecca, John and I have organized several WordCamps, but WordCamp Whistler was undoubtedly the hardest of the bunch, mainly because none of us had &#8230; <a href="http://archives.duanestorey.com/2009/wordcamp-whistler-in-review/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I get the odd inquiry about the work involved in organizing a conference, particularly a WordCamp.  Rebecca, John and I have organized several WordCamps, but WordCamp Whistler was undoubtedly the hardest of the bunch, mainly because none of us had the opportunity to assess the location until the night before.</p>
<p>While the event was really successful in my mind (the speakers were great, the staff at the Fairmont were helpful, and everyone I talked to felt that they got good value from the event), in retrospect I might have organized something a bit more local.  The costs associated with the event kept ballooning over time, and it was extremely stressful near the end when we were operating the event in the red, especially since I was basically bankrolling the event myself.   We were forced to raise ticket prices at the end higher than I had wanted, simply to recoup some of the costs, and also reached out to a few of our sponsors, several of which helped shore up the difference.  Initially tickets started at $35 (we had assumed most of the costs of the event could be handled with sponsorships), but eventually went up to around $75 as the deficit grew (since sponsorship ended up being low).</p>
<p>We had originally budgeted for only two drinks per person at the social, and assumed only about 75% of the people would come.  I&#8217;d guess only about 40% of the people showed up, and of them, only about half were serious about drinking.  That combination basically made it so we could open the bar up, which we were happy to do.  Ultimately we had about $1,000 put aside for the social, but only spent around $800 or so.</p>
<p>In the end, I think we ended up about $100 short with the event, which was no big deal, especially considering we were about $2,000 short about 10 days before.   </p>
<p>Here&#8217;s a quick run down of the associated costs with the event:</p>
<ul>
<li>120 person conference room &#8211; $840</li>
<li>Internet access during the event &#8211; $210 (the venue actually wanted $15/head, but I managed to convince them to simply give us an internet drop, and mostly Dale took care of the wireless at the event)</li>
<li>Insurance &#8211; $210</li>
<li>WordCamp Whistler Toques &#8211; $910</li>
<li>Social at the Longhorn Saloon &#8211; $800</li>
<li>Rooms + Travel &#8211; $620</li>
<li>Catered lunch &#8211; $2,506</li>
<li>Audio/visual/power for the event &#8211; $1,191</li>
<li>Coffee &#8211; $1,240</li>
</ul>
<p>The grand total for the event was close to $9,000.  In terms of revenue, we received $4,150 in sponsorship, and $4,478 in ticket sales.   As you can see, coffee and food took up a sizable portion of the budget, something I tried very hard to reduce with the venue.   </p>
<p>So if you&#8217;re organizing a WordCamp in a prime location such as Whistler, this might be a fairly good guide for how it works under the hood.   A simple way to reduce costs is to ask everyone to be responsible for their own drinks and lunch, as they amounted to nearly 50% of the cost.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/wordcamp-whistler-in-review/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The Non-Permanency Of WordPress Permalinks</title>
		<link>http://archives.duanestorey.com/2009/the-non-permanency-of-wordpress-permalinks/</link>
		<comments>http://archives.duanestorey.com/2009/the-non-permanency-of-wordpress-permalinks/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 16:22:47 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[Search Engine Optimization]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Permalinks]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=4953</guid>
		<description><![CDATA[So, I was lying in bed last night, letting my mind fill up with useless dribble, when I started thinking about WordPress permalinks. I came to the conclusion that the WordPress friendly permalinks aren&#8217;t really permalinks in the traditional sense, &#8230; <a href="http://archives.duanestorey.com/2009/the-non-permanency-of-wordpress-permalinks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So, I was lying in bed last night, letting my mind fill up with useless dribble, when I started thinking about WordPress permalinks.   I came to the conclusion that the WordPress friendly permalinks aren&#8217;t really permalinks in the traditional sense, in that they can be changed after the fact by an end-user.  </p>
<p>First, here&#8217;s a definition of a permalink:</p>
<blockquote><p>
A permalink, or permanent link, is a URL that points to a specific blog or forum entry after it has passed from the front page to the archives. Because a permalink remains unchanged indefinitely, it is less susceptible to link rot.
</p></blockquote>
<p>An example of a WordPress permalink is this link, http://www.duanestorey.com/blog/2009/wheres-duanedo/, which points to my <a href="http://www.duanestorey.com/blog/2009/wheres-duanedo/">Where&#8217;s Duanedo</a> post.</p>
<p>Why it&#8217;s not really permanent is that I can go into the WordPress back-end administration panel and change the structure of that link after the fact, adding the month and/or the day of the week.  For example, in about 15 seconds I can change it to http://www.duanestorey.com/blog/2009/08/01/wheres-duanedo/, which depending on how you feel, might be a bit cooler.  Those changes are retroactive, and will change all the links on the site.</p>
<p>Unfortunately, since I&#8217;ve given out the old permalink to people, it&#8217;s possible that those links may not work anymore (I believe WordPress will do a search under the hood to see if it can find the post, but I&#8217;m not entirely certain how well that works).</p>
<p>Anyone who has moved a site knows that you can still make the old permalinks work by doing some .htaccess 301 trickery, but depending on how you involved the changes are you did, that can sometimes be a bit gimmicky.  </p>
<p>Really, the only true WordPress links that are permanent are the default links involving the ?p= URL parameters.  For example, the true permalink for my Where&#8217;s Duanedo post is http://www.duanestorey.com/?p=4943, which involves the post ID.</p>
<p>I was thinking last night of the consequences of always using the true permalink under the hood, even if friendly permalinks were enabled in WordPress.  Truthfully, I think it would work just fine, since WordPress automatically does a 301 redirect from the true permalink to the friendly permalink, the former of which is not susceptible at all to link-rot (as long as the blog address doesn&#8217;t change).  It adds some header traffic for the 301 redirects, but should always work, even if the URL structure is changed at a later time.</p>
<p>Anyways, some food for thought.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/the-non-permanency-of-wordpress-permalinks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Close</title>
		<link>http://archives.duanestorey.com/2009/getting-close/</link>
		<comments>http://archives.duanestorey.com/2009/getting-close/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 21:18:04 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Bits and Bites]]></category>
		<category><![CDATA[Site]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=4440</guid>
		<description><![CDATA[As you can see, things have changed around here a bit. I actually still have quite a bit left to do on this theme, but it&#8217;s functional enough that I put it live. I&#8217;m going to do a custom template &#8230; <a href="http://archives.duanestorey.com/2009/getting-close/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As you can see, things have changed around here a bit.  I actually still have quite a bit left to do on this theme, but it&#8217;s functional enough that I put it live.   I&#8217;m going to do a custom template for the upcoming Blogathon event, and also flesh out the content in a few more areas.   But it&#8217;s definitely getting close.   Thanks to Dale for his help with this too.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/getting-close/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Working On The New Theme</title>
		<link>http://archives.duanestorey.com/2009/working-on-the-new-theme/</link>
		<comments>http://archives.duanestorey.com/2009/working-on-the-new-theme/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 17:43:25 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[duane storey]]></category>
		<category><![CDATA[photoshop]]></category>
		<category><![CDATA[Site]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=4313</guid>
		<description><![CDATA[I had a bit of time yesterday (really, I didn&#8217;t, but the creative juices were flowing and I wanted to start dabbling), so I started tinkering with some ideas for a new theme for this site. While I routinely update &#8230; <a href="http://archives.duanestorey.com/2009/working-on-the-new-theme/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I had a bit of time yesterday (really, I didn&#8217;t, but the creative juices were flowing and I wanted to start dabbling), so I started tinkering with some ideas for a new theme for this site.   While I routinely update the theme on this site (I average about every four months or so), I really want the next one to be up here for quite some time, so I&#8217;m not going to rush development on it.</p>
<p>I have a few basic goals for the new theme:</p>
<ul>
<li>The theme should put more focus on aspects of my life such as photography, and less on my other content</li>
<li>The theme will focus more on my life, and some of my passions (such as blogging and WordPress development), and less on random blog entries about nothing</li>
<li>The theme will basically update itself from third party services</li>
</ul>
<p>I&#8217;m debating deleting a really large chunk of content from my current site.  Some people will say that&#8217;s stupid from a search engine or SEO perspective, but I really think some of those entries (and the traffic they generate) don&#8217;t really lead to any useful traffic.  For example, if someone gets to my site looking for a JPG of the Kool Aid jug, it&#8217;s not really that likely they&#8217;re going to want to read about WordPress or current events.</p>
<p>I&#8217;d like to only have four or five main categories on my site &#8212; currently I have about 20 I think.  Unfortunately too, I think I installed a version of WordPress a year or so ago where the taxonomy system wasn&#8217;t completely cooked, and a lot of my tags are messed (lots have hyphens instead of spaces for example).  So part of me wants to kind of start over and fix all of that.  I haven&#8217;t thought it through very far yet, so I need to think about it a bit longer.</p>
<p>I&#8217;d really like to spend more time taking photos in the future, and I think if my blog were more photo-centric I&#8217;d be inspired to post more photos.  I&#8217;ve actually sat down a few times to do a photo-centric site, but I&#8217;ve always had problems making it work.  For one, photos are usually either landscape or portrait.  From a design perspective, that gets a bit clunky, especially since several portrait oriented photos can have completely different aspect ratios.   I might end up writing some PHP code to letter box photos such that they&#8217;re all the same size, but I haven&#8217;t made it that far yet.   Since photos look brighter and more colourful when shown on a black background (the same way a stereo sounds &#8220;better&#8221; when it&#8217;s louder), I&#8217;ve made the new version have a dark background instead of the white I&#8217;ve used a few times in a row.</p>
<p>I started working on version two of my Crossroads plugin a few months ago. Crossroads was a pretty popular plugin for people wanting to put Flickr photos on their websites.  Unfortunately, I never spent a lot of time improving it, so it&#8217;s kind of rotted on the sidelines.  So version two was meant to be a pretty substantial improvement, especially since I&#8217;m also adding support for SmugMug.  The good news is that Crossroads 2.0 already interfaces quite well with Flickr, so I&#8217;ve been extending it to do most of the heavy lifting on my site.   </p>
<p>I&#8217;ve created a photography section of my site that basically shows all the photos and sets from a Flickr collection.   It looks sort of like the following image:</p>
<p><img src="http://farm3.static.flickr.com/2602/3688609406_5d122825b3.jpg?v=0" alt="" /></p>
<p>If you want to see a live demo, head over to <a href="http://beta.duanestorey.com/photography">the demo site and check it out</a>.</p>
<p>With this setup, I can basically just upload photos to Flickr, but them in the appropriate sets with the proper descriptions, and my site will automatically update itself.   I&#8217;ve also created a special page for viewing each individual image (where in the past I would have just redirected people to Flickr).  This method actually has several advantages.  First, the verbiage and those images will essentially reside on my site, and not on Flickr.  Given that my website has more Google juice than my Flickr stream, in theory I should start getting a lot more traffic based on my photos.  I&#8217;ve also made the theme CC license aware, such that the proper form of attribution along with a link to the associated license is displayed under each photo.  I&#8217;ve always liked EXIF information, so that&#8217;s included as well.   If you want to see an example, <a href="http://beta.duanestorey.com/photography/?photo_id=394791942">head on over here</a>.</p>
<p>Lots of designers use Photoshop.  Unfortunately, I&#8217;m sort of Photoshoptarded, so I don&#8217;t really use it that often.  So when I design a theme, I usually just start hacking out ideas using PHP and CSS, and slowly refine them with each iteration.  So undoubtedly what I&#8217;m working on will end up being different than what I&#8217;ve started putting together, but at this point I&#8217;m just trying to flesh out the functionality.</p>
<p>I&#8217;m really not sure the best way to integrate Twitter at this point.  Given the amount of Tweets I do in a typical day, it&#8217;s really not very useful to have them in a list anywhere.   I might figure out a way to do something with the Twitter favourite system and have only those Tweets shown somewhere.   I&#8217;m also probably going to put some type of FriendFeed or LifeStream on my main page, such that it represents a snapshot of everything I&#8217;ve been doing.   I&#8217;d also like to find a way to merge Flickr and SmugMug, such that someone viewing a Flickr photo would be presented with a &#8220;Buy Photo&#8221; which would redirect them to the same photo on SmugMug.  I&#8217;m pretty sure I can come up with some clever tagging system to make that work.</p>
<p>Anyways, that&#8217;s my little project for July.  </p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/working-on-the-new-theme/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordCamp San Francisco 2009</title>
		<link>http://archives.duanestorey.com/2009/wordcamp-san-francisco-2009/</link>
		<comments>http://archives.duanestorey.com/2009/wordcamp-san-francisco-2009/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 04:42:44 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[friends]]></category>
		<category><![CDATA[home]]></category>
		<category><![CDATA[wordcamp]]></category>
		<category><![CDATA[WordCamp San Francisco]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=4115</guid>
		<description><![CDATA[Yesterday was WordCamp San Francisco, and Rebecca, John Bollwitt, John BIehler, Dale and myself all attended. The night before we thought it was a good idea to sit around and drink margaritas until around 2am, so we were all a &#8230; <a href="http://archives.duanestorey.com/2009/wordcamp-san-francisco-2009/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday was WordCamp San Francisco, and Rebecca, John Bollwitt, John BIehler, Dale and myself all attended.   The night before we thought it was a good idea to sit around and drink margaritas until around 2am, so we were all a bit tired during the event.  But it was a great event, and we&#8217;re all glad we made the trip down.</p>
<p><a href="http://www.flickr.com/photos/duanestorey/3583097009/"><img src="http://farm4.static.flickr.com/3647/3583097009_bf1d1881bd.jpg?v=0" alt="Automattic"></a></p>
<p>Several fairly exciting things happened during Matt Mullenweg&#8217;s <strong>State of the Word Presentation</strong>.  First, Matt showed a slide which displayed some of the new profile information that is going to be coming to WordPress.org &#8212; BraveNewCode has actually been helping with that effort, so it was great to finally have some of it shown to everyone.   Second, Matt displayed a list of the coolest three WordPress plugins, as voted by people on his Twitter stream.   The first plugin that was shown, the third coolest plugin, was actually <a href="http://www.bravenewcode.com/wordtwit">WordTwit</a>.   Dale and I were both pretty floored seeing it up there in all it&#8217;s glory on Matt&#8217;s slide in front of about 700 people.  The second coolest plugin was a related posts plugin.  And then, Matt flipped to the number one coolest WordPress plugin, none other than Dale and my <a href="http://www.bravenewcode.com/wptouch">WPtouch</a> iPhone plugin.   So, <a href="http://www.bravenewcode.com">BraveNewCode</a> walked away with the #3 and the #1 spots for the coolest WordPress plugins &#8212; a pretty exciting event for us to be sure.  So thanks to everyone who voted for us.</p>
<p>Later that night we attended the social down at Automattic&#8217;s new offices at Pier 38.   I had the chance to meet a lot of great people in person, many of which I had only talked to online before.  The bar was completely open, so most people did fairly well in the liquor department.   Afterwards all of us found a little hole-in-the-wall diner and had a nice greasy meal to close out the evening.  I&#8217;ve been really enjoying guacomole lately, and I managed to find a hamburger that had a healthy dose of the stuff on it.</p>
<p><a href="http://www.flickr.com/photos/duanestorey/3583097061/in/photostream/"><img src="http://farm4.static.flickr.com/3342/3583097061_9e69606566.jpg?v=0" alt="Home" /></a></p>
<p>Tomorrow I&#8217;m going to be making the long journey back home.   I&#8217;ll save the details of that for my next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/wordcamp-san-francisco-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Plugin Checker</title>
		<link>http://archives.duanestorey.com/2009/wordpress-plugin-checker/</link>
		<comments>http://archives.duanestorey.com/2009/wordpress-plugin-checker/#comments</comments>
		<pubDate>Mon, 11 May 2009 19:14:03 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Compatibility]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=4053</guid>
		<description><![CDATA[We whipped together a little script to scan the WordPress plugin repository for common errors. You can check out the end result here. Hopefully plugin developers can use it as a resource to improve plugins and let them be used &#8230; <a href="http://archives.duanestorey.com/2009/wordpress-plugin-checker/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We whipped together a little script to scan the WordPress plugin repository for common errors.  You can check out the end result <a href="http://plugincheck.bravenewcode.com/">here</a>.  Hopefully plugin developers can use it as a resource to improve plugins and let them be used by a wider audience.   If you click the link and it doesn&#8217;t work, try again in a bit &#8212; I&#8217;ve been having a few server problems today.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/wordpress-plugin-checker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One WordPress Install, Multiple Sites</title>
		<link>http://archives.duanestorey.com/2009/one-wordpress-install-multiple-sites/</link>
		<comments>http://archives.duanestorey.com/2009/one-wordpress-install-multiple-sites/#comments</comments>
		<pubDate>Thu, 07 May 2009 07:35:00 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[Redirect]]></category>
		<category><![CDATA[Single Install]]></category>
		<category><![CDATA[Sites]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=4017</guid>
		<description><![CDATA[A while ago I started messing around with trying to get a single WordPress installation to host multiple blogs. If you read that and think WordPress MU, you&#8217;re not far off. What I don&#8217;t like about WordPress MU though is &#8230; <a href="http://archives.duanestorey.com/2009/one-wordpress-install-multiple-sites/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A while ago I started messing around with trying to get a single WordPress installation to host multiple blogs.  If you read that and think WordPress MU, you&#8217;re not far off.  What I don&#8217;t like about WordPress MU though is that the system administrator chooses the themes and the plugins that are available to the end user &#8212; ideally, I would want each user to control that themselves, such that it basically has the same functionality as a normal WordPress installation.</p>
<p>There are a lot of other reasons why you might want a single WordPress install for multiple blogs.  First, if you make backups of each blog&#8217;s data from time to time, you might end up with a complete WordPress package for each website you host, even though ultimately 90% of those files are identical (basically only themes, plugins and custom content vary).  Second, if you run a hosting server with a PHP caching engine (which most do), it&#8217;s likely that the cache keeps track of data using the complete path to the file, which ultimately means the cache effectiveness will decrease proportional to the number of sites (aka WordPress installations).  If all the installations on a server shared one common WordPress install, you&#8217;d only have to cache that one set of PHP files &#8212; effectively you could keep WordPress in a compiled state in memory for all of your sites.</p>
<p>The first thing I did was install a fresh WordPress into a directory on my server called wp_install.  Normally an end user would go through the installation process and configure that one installation, and then they&#8217;d have one blog.   We&#8217;re trying to make one installation work for many blogs.</p>
<p>Next, I created a wp_domains directory at the same level as wp_install.  Inside wp_install, I then created a symbolic link called &#8220;domains&#8221; which points to the wp_domains directory (you could also just put everything in the wp_install/domains directory, but I want to keep them separated slightly).  So we have wp_install/domains symbolically linking to wp_domains.</p>
<p>In order to make one installation work for many sites, you basically need to have a dynamic wp-config.php file that can change depending on which site is being accessed.  So I started messing with wp-config.php to try and come up with something that would work.  The end goal was to change the parameters in the wp-config.php ssuch that we can use site-specific content in the wp_domains directory.</p>
<p>I ended up with something like this:</p>
<p><code>$website = strtolower( str_replace( &quot;www.&quot;, &quot;&quot;, $_SERVER[&quot;SERVER_NAME&quot;] ) );<br />
$website = preg_replace('[^a-z0-9\.-]', '', $website );</p>
<p>define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/domains/' . $website . '/wp-content' );<br />
define( 'WP_CONTENT_URL', 'http://' . $_SERVER[&quot;SERVER_NAME&quot;] . '/domains/' . $website . '/wp-content' );</p>
<p>if ( file_exists( dirname(__FILE__) . &quot;/../wp_domains/$website/db.config&quot; ) ) {<br />
        require_once( dirname(__FILE__) . &quot;/../wp_domains/$website/db.config&quot; );<br />
} else {<br />
        echo "Sorry, no configuration defined."<br />
        die;<br />
}</code></p>
<p>Several things happen in the code, so let me try to explain.  First, the destination website is determined using the HTTP server name which is passed in the address.  For this website, that becomes www.duanestorey.com.  I strip off the www just so that there&#8217;s a bit of consistency between sites.  Next, I tell WordPress to change its default wp-content directory to the domains/WEBSITE_NAME/wp-content directory, which in my case is domains/duanestorey.com/wp-content. </p>
<p>In the next section of code, I check for domains/WEBSITE_NAME/db.config, which is a site-specific file that will set the database information on a per-site basis.  If it exists, we load it up such that the username, password, hostname, and database name for that particular site.  </p>
<p>An example of db.config for my site is:</p>
<p><code>&lt;?php<br />
define( 'DB_NAME', 'duanestorey-com' );<br />
define( 'DB_HOST', 'localhost' );<br />
define( 'DB_PASSWORD', 'user' );<br />
define( 'DB_USER', 'password' );<br />
?&gt;</code></p>
<p>At this point, everything worked fine, and I had a base WordPress installation where the wp-content directory and database information could be split out dynamically.  From a hosting perspective, you could conceivably only grant access to that one directory (i.e. wp_domains/duanestorey.com), which would allow the user to modify their plugins and themes for their site only (even though the core WordPress files are being shared).</p>
<p>It&#8217;s at this point I actually decided to do a Google search to see if anyone else had tried this approach before.  I found <a href="http://striderweb.com/nerdaphernalia/features/virtual-multiblog/">this article on Virtual Multiblogs</a> which is based on a similar approach.  It looks like he used a bunch of different directories all mapped to one WordPress directory.  In the approach I&#8217;ve taken, I point everything to the same directory (in the HTTP virtualhost section), and simply rely on the HTTP_HOST/SERVER_NAME that&#8217;s sent with each request.  In addition, I&#8217;m doing the wp-content remapping, which I don&#8217;t think was done with the Virtual Multiblogs approach.  I also did a bit more, as you&#8217;ll see next.</p>
<p>You might be asking why I didn&#8217;t just do away with the wp-content directory although, and simply remap it to wp_domains/duanestorey.com &#8212; it&#8217;s a good question.  </p>
<p>There are a few problems with the current approach.  First, remapping the wp-content directory often breaks plugins because many plugin developers hardcode the URLs as /wp-content in the code (it&#8217;s sloppy, but I&#8217;ve done it previously as well).  So as soon as you move your wp-content directory, all those plugins start showing errors.  Second, some javascript libraries and statistics programs (the popular Mint program, for example) must be installed in the root of the website.  With this model, you really wouldn&#8217;t want users to mess with any core WordPress files or directories, so they really shouldn&#8217;t have access to the root installation.  So what do we do?</p>
<p>Well, I came up with a little .htaccess hack such that anything that isn&#8217;t found in the core WordPress path is automatically redirected to the domains/WEBSITE_NAME directory.  That means if http://duanestorey.com/test.html isn&#8217;t found on disk in wp_install/test.html (which is the base WordPress installation, so it definitely won&#8217;t be there), the .htaccess redirect will send it to wp_domains/WEBSITE_NAME/test.html (or in my case, wp_domains/duanestorey.com/test.html).  The redirect is internal, which means that from the user&#8217;s perspective they are really looking at http://duanestorey.com/test.html (but on disk they are actually viewing the file in wp_domains/duanestorey.com/test.html).</p>
<p>This approach should fix most of the plugin problems since it uses URL remapping to trick the website into thinking everything actually is in the http://somedomain.com/wp-content directory, even though there&#8217;s nothing really there.  It also should allow users to install whatever they want in their directory (mint, javascript, whatever), since anything not actually found in wp_install will redirect to their site-specific domain files in wp_domains.</p>
<p>In fact, once you do the .htaccess change, there&#8217;s no need to define WP_CONTENT_URL in wp-config.php anymore, since the htaccess will take care of all of that automagically.  So, feel free to remove:</p>
<p><code>define( 'WP_CONTENT_URL', 'http://' . $_SERVER[&quot;SERVER_NAME&quot;] . '/domains/' . $website . '/wp-content' );</code></p>
<p>Internally, http://www.duanestorey.com/wp-content/themes/duane-apr09/style.css is actually mapping to http://www.duanestorey.com/domains/duanestorey.com/wp-content/themes/duane-apr09/style.css, but since .htaccess is hiding all of that, plugins with hardcoded elements should work normally.</p>
<p>I&#8217;ve currently moved this website over to this new approach, and will probably move a few more tomorrow and test it out further.  Ultimately I can stop backing up whole directories with WordPress installations, and simply backup my wp_domains directory nightly.  So far, things appear to be working quite smoothly (even old images that were inserted into posts using relative /wp-content/ URLs work properly thanks to the .htaccess trick).</p>
<p>The current structure of my wp_domains directory is:</p>
<ul>
<li>/duanestorey.com</li>
<li>/duanestorey.com/mint/*</li>
<li>/duanestorey.com/wp-content/*</li>
<li>/duanestorey.com/db.config</li>
</ul>
<p>The .htaccess hack I came up with is below:</p>
<p><code># BEGIN WordPress<br />
&lt;IfModule mod_rewrite.c&gt;<br />
RewriteEngine On<br />
RewriteBase /</p>
<p>RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_URI} !(.*)/$<br />
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301]</p>
<p>RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteRule ^(.*)$ domains/%{HTTP_HOST}/$1 [L]</p>
<p>RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteRule . /index.php [L]<br />
&lt;/IfModule&gt;</p>
<p># END WordPress</code></p>
<p>I&#8217;m by no means a .htaccess expert, so if you see anything wrong with it, please let me know.  It seems to be working though (I have Mint working).</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/one-wordpress-install-multiple-sites/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Updated Page Content</title>
		<link>http://archives.duanestorey.com/2009/updated-page-content/</link>
		<comments>http://archives.duanestorey.com/2009/updated-page-content/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 07:30:11 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Content]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=3910</guid>
		<description><![CDATA[I spent some time tonight updating my about page, the site information page, and my media kit. I also dumped the content of my FriendFeed stream to my new streams page. I&#8217;ve loving the layout options with the new site &#8230; <a href="http://archives.duanestorey.com/2009/updated-page-content/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I spent some time tonight updating my <a href="/about/">about page</a>, the <a href="/about/about-this-site/">site information page</a>, and my <a href="/media-kit/">media kit</a>.  I also dumped the content of my FriendFeed stream <a href="/streams/">to my new streams page</a>.  I&#8217;ve loving the layout options with the new site changes.  Can&#8217;t wait to slowly build it out over the next few weeks.  </p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/updated-page-content/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Viper Cache Nearly Done</title>
		<link>http://archives.duanestorey.com/2009/viper-cache/</link>
		<comments>http://archives.duanestorey.com/2009/viper-cache/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 19:44:46 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Asides]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[viper cache]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=3533</guid>
		<description><![CDATA[I spent some time working on Viper Cache last night. It&#8217;s going to get a new name at some point, but it&#8217;s close to being done. I&#8217;m going to test it on this site for a while and see if &#8230; <a href="http://archives.duanestorey.com/2009/viper-cache/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I spent some time working on Viper Cache last night.  It&#8217;s going to get a new name at some point, but it&#8217;s close to being done.  I&#8217;m going to test it on this site for a while and see if I can iron out any bugs.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/viper-cache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playing Around With Web Servers</title>
		<link>http://archives.duanestorey.com/2009/playing-around-with-web-servers/</link>
		<comments>http://archives.duanestorey.com/2009/playing-around-with-web-servers/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 18:28:28 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[Threads]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[Webby]]></category>

		<guid isPermaLink="false">http://duanestorey.com/?p=3474</guid>
		<description><![CDATA[Obviously I&#8217;ve been spending a bit of time tweaking Apache such that it is well optimized for working in a VPS environment. Truthfully though, Apache is a major resource hog. To be honest, I really can&#8217;t comprehend what it&#8217;s doing &#8230; <a href="http://archives.duanestorey.com/2009/playing-around-with-web-servers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Obviously I&#8217;ve been spending a bit of time tweaking Apache such that it is well optimized for working in a VPS environment.   Truthfully though, Apache is a major resource hog.  To be honest, I really can&#8217;t comprehend what it&#8217;s doing with all that memory it seems to hoard.   One of the other major downsides to Apache is that it forks additional processes to handle server load, and processes are rather heavy (at least when compared to user threads).</p>
<p>Since I haven&#8217;t touched any C++ in about two months, I thought I&#8217;d try my hand at writing a quick web server to see if I can better understand some of problems.   For now, I&#8217;m leveraging boost for all the threading, and just using simple select now for all the socket communication (I understand the limitations of select, and will probably move things to boost::asio when it&#8217;s all done).</p>
<p>I originally wrote it using a half-async pattern, but found that I was having problems getting the threading the way I wanted without having lock contention going on between threads.  So I&#8217;ve pretty much abandoned that in favor of a fully asynchronous architecture, which is trickier to handle but ultimately gets rid of nearly all of the locks.   I still haven&#8217;t really figured out the best way to handle memory, but obviously some type of pool is going to be required for high efficiency.  One of the areas I spent a lot of time with at my last job was optimizing code for speed, so I&#8217;m hoping I can bring some of that to the web space problem as well.  </p>
<p>In terms of the actual server, right now there&#8217;s a main thread handling all the dispatching and communications, and a pool of worker threads handling the actual web traffic.   It&#8217;s a typical web traffic architecture, and I plan to pick it apart when I&#8217;m done to see if it actually makes sense.   </p>
<p>In about four hours in front of the TV yesterday I managed to get the web server (affectionately called Webby right now) to serve static content.  I&#8217;m using four threads right now for the worker pool, but it&#8217;s completely configurable (I&#8217;m guessing around four threads per core is probably ideal).   Once I had that working, I decided to take a stab at getting PHP code to work.  I did some basic stress testing at this point (no point in continuing if I can&#8217;t blow Apache away).  I did 10,000 requests for static content using Apache, and 10,000 requests for the same content using Webby.  Apache took 42.5 seconds to serve a static HTML file over the LAN, which amounts to around 235 individual requests per second.  Webby did it in about 3.28 seconds.</p>
<p>Apache has an distinct advantage because PHP can be built as a module for it, basically loading PHP into Apache.   Given that this is just something I&#8217;m doing for fun, I don&#8217;t really want to spend the time doing that at this point.  So my only options at this point are to drop to the OS and execute PHP, or execute it as a CGI.  I tried the former, and it was painfully slow.  So that basically meant going the CGI route.</p>
<p>The best way to do CGI is using Fast CGI, which is something I&#8217;ve never done before.  Basically you open a local socket to a server running PHP, and send it requests to process scripts.   I ended up writing a mini Fast CGI library, since I couldn&#8217;t find one that was usable.  It took me a few hours, but it seems to be working now with PHP.</p>
<p>I still have a few major optimizations to do before I can test out the PHP part properly (you have to initialize PHP with various variables before WordPress will work properly), but maybe next weekend I can set aside an afternoon and finish it off.</p>
<p>Apache&#8217;s major detriment is that it&#8217;s such a memory hog.  Without a doubt, one of the major advantages to Webby in a low memory environment is that it won&#8217;t start trashing into swap space as soon as Apache will.  I also will be able to adjust the stack size per thread (something that I haven&#8217;t done yet), so conceivably I could get the memory foot print even lower (although right now Webby is using around 1.5 MB of memory, whereas Apache is using around 120 MB I believe).</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/playing-around-with-web-servers/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Crossroads 2.0</title>
		<link>http://archives.duanestorey.com/2009/crossroads-20/</link>
		<comments>http://archives.duanestorey.com/2009/crossroads-20/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 10:47:44 +0000</pubDate>
		<dc:creator>Duane Storey</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[crossroads]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://www.duanestorey.com/?p=3383</guid>
		<description><![CDATA[A few years ago I sat down to write my very first WordPress plugin, and ended up writing Crossroads. My goal at the time was to integrate Flickr comments into the normal comments on my blog, which was something I &#8230; <a href="http://archives.duanestorey.com/2009/crossroads-20/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A few years ago I sat down to write my very first WordPress plugin, and ended up writing Crossroads.   My goal at the time was to integrate Flickr comments into the normal comments on my blog, which was something I ultimately did.  Unfortunately though, some of the limitations of the Flickr API made that feature fairly slow to use, and so it&#8217;s something I ditched on my own blog a long time ago.</p>
<p>A few days ago I sat down and started working on version 2.0.  It&#8217;s a 100% complete rewrite, which given the state of the old code is definitely something that&#8217;s going to improve it.   I&#8217;m writing it with both Flickr and SmugMug in mind, so it will most definitely support both out of the box.  I&#8217;m also ditching all the old prototype concepts and switching it entirely to jQuery.</p>
<p>I&#8217;m still prototyping several concepts, and still don&#8217;t have that warm, fuzzy feeling with the direction it&#8217;s going.  Part of the problem is having it integrate with WordPress without forcing the user have to make any adjustments to their theme.  That&#8217;s a big constraint, and given the market I&#8217;m trying to cater to, I&#8217;m not sure that&#8217;s the best option to be honest.  </p>
<p>At least personally, I&#8217;ve never found an image plugin that makes showcasing my photos very easy.   I use Flickr RSS fairly religiously, but that only showcases recent photos, so it doesn&#8217;t help for general blogging.  I&#8217;ve always felt like there needs to be a better way to have photos tell stories in addition to the text of a blog entry, and that&#8217;s something I&#8217;m hoping Crossroads will ultimately help with.</p>
<p>One of the shortcomings with the first version was that you had to post photo and set IDs into the post content to have images show up.  I&#8217;m going to fix that this time and put some kind of administrative interface for selecting photos or albums to be included.  So hopefully when it&#8217;s done it&#8217;ll be far better than the old version.</p>
<p>Here are a few photos from last year&#8217;s Northern Voice displayed using Crossroads 2.0.  As I mentioned, this is just one of many rough implementations I&#8217;m going to do to test things out.</p>
<p>[crossroads type="flickr" set="72157606640072832"]</p>
<p>Another complaint I used to get is that you could only have one line of Crossroad photos per post in the old version.  Since I  have rewritten it, I managed to get that functionality in right from the get-go this time.  Here&#8217;s another group of photos to demonstrate.</p>
<p>[crossroads type="flickr" set="72157600042953096"]</p>
<p>For all you photographers out there, drop a comment and let me know what features or functionality you&#8217;d like to have on your blog, or any problems you&#8217;ve hit that you&#8217;d like solved.</p>
]]></content:encoded>
			<wfw:commentRss>http://archives.duanestorey.com/2009/crossroads-20/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>
