<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.3" -->
<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/"
	>

<channel>
	<title>alexking.org &#187; Case Studies | alexking.org</title>
	<link>http://alexking.org</link>
	<description>Alex King's blog - software, photography, sports, etc.</description>
	<pubDate>Wed, 02 Jul 2008 19:51:08 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.3</generator>
	<language>en</language>
			<item>
		<title>PhoneFactor 1.0</title>
		<link>http://alexking.org/blog/2008/06/27/phonefactor-10</link>
		<comments>http://alexking.org/blog/2008/06/27/phonefactor-10#comments</comments>
		<pubDate>Fri, 27 Jun 2008 23:13:22 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Crowd Favorite]]></category>

		<category><![CDATA[Case Studies]]></category>

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

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

		<guid isPermaLink="false">http://alexking.org/blog/2008/06/27/phonefactor-10</guid>
		<description><![CDATA[PhoneFactor is a WordPress plugin that provides an additional layer of security when logging in to your WordPress site.

It&#8217;s a pretty cool system. When you log in to your WordPress blog with PhoneFactor enabled, you receive a phone call asking you to press # to authorize. When you do so, you are logged in. If [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "PhoneFactor 1.0", url: "http://alexking.org/blog/2008/06/27/phonefactor-10" });</script>]]></description>
			<content:encoded><![CDATA[<p>PhoneFactor is a <a href="http://wordpress.org/" rel="external">WordPress</a> plugin that provides an additional layer of security when logging in to your WordPress site.</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/sets/72157605848461623/"><img src="http://farm4.static.flickr.com/3149/2616262594_5cf244979b_m.jpg" width="240" height="177" alt="Login" /></a></p>
<p>It&#8217;s a pretty cool system. When you log in to your WordPress blog with PhoneFactor enabled, you receive a phone call asking you to press # to authorize. When you do so, you are logged in. If you do not, then the login attempt fails.</p>
<p>Basically, this means someone needs to get your username, password <em>and</em> phone in order to log in to your WordPress site as you.</p>
<p><a href="http://crowdfavorite.com">Crowd Favorite</a> worked with the <a href="http://phonefactor.com/" rel="external">PhoneFactor</a> team to build this integration on their API layer. This was a fun project for us - it&#8217;s always nice to enhance WordPress by integrating features from another service.</p>
<p>Besides building the integration with the API to authenticate via phone, we also built the PhoneFactor registration step right into the WordPress admin so that the user wouldn&#8217;t have to leave the WordPress admin when activating the plugin and getting it set up. I think it&#8217;s a much better user experience.</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/2615434383/" title="Registration by alexkingorg, on Flickr"><img src="http://farm4.static.flickr.com/3119/2615434383_9647b143f0_m.jpg" width="240" height="178" alt="Registration" /></a></p>
<p>We integrated some instructional banners into the WordPress admin pages to let people know the next steps to getting things set up after activating the plugin. We also built in some more advanced user features like whitelisting IP addresses so that you don&#8217;t have to use PhoneFactor authentication if you&#8217;re logging in from your home machine.</p>
<p>The download and more information are available at the <a href="http://wordpress.org/extend/plugins/phonefactor/">WordPress Plugin repository</a> on wordpress.org.</p>
<p>Enjoy!</p>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=PhoneFactor+1.0&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2008%2F06%2F27%2Fphonefactor-10">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2008/06/27/phonefactor-10/feed</wfw:commentRss>
		</item>
		<item>
		<title>OpenedHand Redesign</title>
		<link>http://alexking.org/blog/2008/06/23/openedhand-redesign</link>
		<comments>http://alexking.org/blog/2008/06/23/openedhand-redesign#comments</comments>
		<pubDate>Mon, 23 Jun 2008 23:27:58 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Crowd Favorite]]></category>

		<category><![CDATA[Case Studies]]></category>

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

		<guid isPermaLink="false">http://alexking.org/blog/2008/06/23/openedhand-redesign</guid>
		<description><![CDATA[Last fall Crowd Favorite had the opportunity to work with OpenedHand1 to redesign their web site. Their site is powered by WordPress and we did the design and created some custom theme features for them.

This was a fairly straightforward build. We created several different designs, went through a few revisions, detailed the custom features that [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "OpenedHand Redesign", url: "http://alexking.org/blog/2008/06/23/openedhand-redesign" });</script>]]></description>
			<content:encoded><![CDATA[<p>Last fall <a href="http://crowdfavorite.com">Crowd Favorite</a> had the opportunity to work with <a href="http://o-hand.com/" rel="external">OpenedHand</a><sup><a href="#fn1214009280011n" id="fn1214009280011" class="footnote">1</a></sup> to redesign their web site. Their site is powered by <a href="http://wordpress.org/" rel="external">WordPress</a> and we did the design and created some custom theme features for them.</p>
<p class="center"><a href="http://flickr.com/photos/alexkingorg/sets/72157605722308770/" title="OpenedHand"><img src="http://farm4.static.flickr.com/3191/2596787330_838d1edcd0_m.jpg" width="240" height="182" alt="Home" /></a></p>
<p>This was a fairly straightforward build. We created several different designs, went through a few revisions, detailed the custom features that were needed, and got cranking on them. With OpenedHand being located in Europe, all development was remote and all communication was done via e-mail.</p>
<p>Unlike some projects where we implement a design and configure it on their production server, in this case we created the theme for them and handed it off to them to set up. They are quite technical, so the configuration and set-up was not difficult for them and I was pleased that they were able to implement what we delivered without needing to ask a lot of questions. That indicates to me that we did a good job packaging and providing installation notes - things that are always a little hard to self-evaluate.</p>
<p>The OpenedHand team also made a couple of minor changes on their own to what we delivered to them before they put the new site live. This was very gratifying to me as well.</p>
<p>When you build things, you try to do so in such a way that they are easily maintained and modified. When your client is able to make changes without needing to ask for help, that&#8217;s generally a good sign that you&#8217;ve succeeded.</p>
<ol class="footnotes">
<li id="fn1214009280011n">They do some cool stuff, be sure to check them out. [<a href="#fn1214009280011">back</a>]</li>
</ol>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=OpenedHand+Redesign&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2008%2F06%2F23%2Fopenedhand-redesign">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2008/06/23/openedhand-redesign/feed</wfw:commentRss>
		</item>
		<item>
		<title>Addictomatic</title>
		<link>http://alexking.org/blog/2008/05/01/addictomatic</link>
		<comments>http://alexking.org/blog/2008/05/01/addictomatic#comments</comments>
		<pubDate>Fri, 02 May 2008 01:52:10 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Crowd Favorite]]></category>

		<category><![CDATA[Case Studies]]></category>

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

		<guid isPermaLink="false">http://alexking.org/blog/2008/05/01/addictomatic</guid>
		<description><![CDATA[Over the last few months, Crowd Favorite has had the privilege of working with Dave Pell to create a new search service: Addictomatic

Addictomatic is a search aggregator, a way to see results from lots of sources all at once. Want to see the latest on a presidential candidate? Or the newest iPhone rumors? Or perhaps [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Addictomatic", url: "http://alexking.org/blog/2008/05/01/addictomatic" });</script>]]></description>
			<content:encoded><![CDATA[<p>Over the last few months, <a href="http://crowdfavorite.com">Crowd Favorite</a> has had the privilege of working with <a href="http://davenetics.com/" rel="external">Dave Pell</a> to create a new search service: <a href="http://addictomatic.com" rel="external">Addictomatic</a></p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/2456601483/" title="Addictomatic Home Page by alexkingorg, on Flickr"><img src="http://farm4.static.flickr.com/3205/2456601483_973b7c5dfa_m.jpg" width="240" height="201" alt="Addictomatic Home Page" /></a></p>
<p>Addictomatic is a search aggregator, a way to see results from lots of sources all at once. Want to see the latest on a <a href="http://addictomatic.com/topic/Obama" rel="external">presidential</a> <a href="http://addictomatic.com/topic/Hillary+Clinton" rel="external">candidate</a>? Or the newest <a href="http://addictomatic.com/topic/iphone+rumors" rel="external">iPhone rumors</a>? Or perhaps an <a href="http://addictomatic.com/topic/%22alex+king%22#kmh.bou.tl" rel="external">ego search</a>? Addictomatic has you covered.</p>
<p>This isn&#8217;t a traditional search engine. It&#8217;s not designed to help you find answers about some error message or the cheapest flight to Aruba. Addictomatic helps you see what&#8217;s going on now on a given topic.</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/2457428786/" title="Addictomatic Search Results by alexkingorg, on Flickr"><img src="http://farm3.static.flickr.com/2226/2457428786_a05f44c55c_m.jpg" width="240" height="202" alt="Addictomatic Search Results" /></a></p>
<p>We&#8217;ve implemented a number of pretty nice features on the site. One of these is the ability to drag and drop the results boxes around to re-order them.</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/2457444954/" title="Addictomatic re-ordering by alexkingorg, on Flickr"><img src="http://farm3.static.flickr.com/2378/2457444954_dee321dceb_m.jpg" width="240" height="202" alt="Addictomatic re-ordering" /></a></p>
<p>You can also click the little X to remove a source from a page, or you can drop down the Available Sources panel to remove and add sources.</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/2457445100/" title="Addictomatic Sources by alexkingorg, on Flickr"><img src="http://farm4.static.flickr.com/3171/2457445100_5c2375e3db_m.jpg" width="240" height="202" alt="Addictomatic Sources" /></a></p>
<p>When you make changes to the results page, either re-ordering the sources and/or removing the ones you don&#8217;t want to include, you get a nice bookmarkable URL as a result. That URL will bring you right back to your search, with the layout you specified.</p>
<p>In addition to being able to create new searches, Addictomatic also offers a collection of <a href="http://addictomatic.com/newsfix" rel="external">NewsFix pages</a> that gather the top sources on a variety of topics. I&#8217;m mainly visiting the <a href="http://addictomatic.com/newsfix/politics" rel="external">Election 2008</a> and <a href="http://addictomatic.com/newsfix/baseball" rel="external">Baseball</a> pages of late, though I also enjoy hitting <a href="http://addictomatic.com/newsfix/thought20" rel="external">Thought 2.0</a> and <a href="http://addictomatic.com/newsfix/Web20" rel="external">Web 2.0</a> with some regularity.</p>
<p>Building this service has been an interesting experience on a number of fronts, but one of the most exciting has been discovering that it&#8217;s something I want to use myself. I liked the idea when Dave first explained it to me, but I wasn&#8217;t sure how much I&#8217;d use it. As it turns out, I now use it quite a bit - it&#8217;s sticky. Much like Twitter, it&#8217;s value is hard to explain but readily apparent <a href="http://alexking.org/blog/2007/03/05/a-week-of-twittering">once you use it for a while</a>.</p>
<p>The design of the site was done by well known designer <a href="http://bryanbell.com/" rel="external">Bryan Bell</a>, who did a terrific job. We received the Photoshop files from him and created the front-end XHTML+CSS+JavaScript and all of the back-end systems.</p>
<p>Many thanks to Dave for letting us help him bring Addictomatic to the web.</p>
<p>UPDATE: Dave&#8217;s blog post is <a href="http://davenetics.com/2008/05/i-inhaled-now-you-should-addictomatic/" rel="external">here</a> and Bryan&#8217;s is <a href="http://tumblr.bryanbell.com/post/33479772" rel="external">here</a>.</p>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=Addictomatic&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2008%2F05%2F01%2Faddictomatic">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2008/05/01/addictomatic/feed</wfw:commentRss>
		</item>
		<item>
		<title>VodPod WordPress Plugin</title>
		<link>http://alexking.org/blog/2008/01/26/vodpod-wordpress-plugin</link>
		<comments>http://alexking.org/blog/2008/01/26/vodpod-wordpress-plugin#comments</comments>
		<pubDate>Sat, 26 Jan 2008 19:36:16 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Crowd Favorite]]></category>

		<category><![CDATA[Case Studies]]></category>

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

		<guid isPermaLink="false">http://alexking.org/blog/2008/01/26/vodpod-wordpress-plugin</guid>
		<description><![CDATA[Last fall, Crowd Favorite had the opportunity to build a WordPress plugin for VodPod. This was a fun project. We used the VodPod API and built some shortcodes and template tags for WordPress that make it easy to put a VodPod video player into a WordPress post, page or theme. The VodPod team then combined [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "VodPod WordPress Plugin", url: "http://alexking.org/blog/2008/01/26/vodpod-wordpress-plugin" });</script>]]></description>
			<content:encoded><![CDATA[<p>Last fall, <a href="http://crowdfavorite.com">Crowd Favorite</a> had the opportunity to <a href="http://blog.vodpod.com/?p=230" rel="external">build</a> a WordPress plugin for <a href="http://vodpod.com" rel="external">VodPod</a>. This was a fun project. We used the VodPod API and built some shortcodes and template tags for WordPress that make it easy to put a VodPod video player into a WordPress post, page or theme. The VodPod team then combined these features with the sidebar widget plugin they&#8217;d already developed to create a <a href="http://wordpress.org/extend/plugins/vodpod-videos/" rel="external">combined plugin</a> that does both.</p>
<p>VodPod is a pretty fun service. You can collect embeddable videos from a variety of sources, group them together into a <nobr> <img src='http://alexking.org/images/smilies/ak_scare1.gif' alt=':scare:' class='wp-smiley' /> pod <img src='http://alexking.org/images/smilies/ak_scare2.gif' alt=':/scare:' class='wp-smiley' /> </nobr> , then put that pod on your blog or web site. It&#8217;s a pretty nice way to share videos. I created one from all of <a href="http://alexkinggolf.vodpod.com/" rel="external">my golf swing videos</a>.</p>
<p>Note: the VodPod gallery and sidebar widgets require Prototype and might not work as expected if you are using other JavaScript libraries.</p>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=VodPod+WordPress+Plugin&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2008%2F01%2F26%2Fvodpod-wordpress-plugin">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2008/01/26/vodpod-wordpress-plugin/feed</wfw:commentRss>
		</item>
		<item>
		<title>CrunchGear Redesign</title>
		<link>http://alexking.org/blog/2007/12/17/crunchgear-redesign</link>
		<comments>http://alexking.org/blog/2007/12/17/crunchgear-redesign#comments</comments>
		<pubDate>Mon, 17 Dec 2007 15:06:02 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Crowd Favorite]]></category>

		<category><![CDATA[Case Studies]]></category>

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

		<guid isPermaLink="false">http://alexking.org/blog/2007/12/17/crunchgear-redesign</guid>
		<description><![CDATA[Over the last couple of weeks we at Crowd Favorite have had the pleasure of working with the good folks at TechCrunch to help get the new CrunchGear site design up and running (read about it on CrunchGear and TechCrunch).

The designers at ACS did the majority of the new design work1, then we helped integrate [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "CrunchGear Redesign", url: "http://alexking.org/blog/2007/12/17/crunchgear-redesign" });</script>]]></description>
			<content:encoded><![CDATA[<p>Over the last couple of weeks we at <a href="http://crowdfavorite.com">Crowd Favorite</a> have had the pleasure of working with the good folks at <a href="http://www.techcrunch.com" rel="external">TechCrunch</a> to help get the new <a href="http://crunchgear.com" rel="external">CrunchGear</a> site design up and running (read about it on <a href="http://www.crunchgear.com/2007/12/14/welcome-to-the-new-crunchgear-please-have-some-cocoa/" rel="external">CrunchGear</a> and <a href="http://www.techcrunch.com/2007/12/14/newly-redesigned-crunchgear-launched/" rel="external">TechCrunch</a>).</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/2116597005/" title="CrunchGear Redesign by alexkingorg, on Flickr"><img src="http://farm3.static.flickr.com/2133/2116597005_0c5e7c1091_m.jpg" width="240" height="194" alt="CrunchGear Redesign" /></a></p>
<p>The designers at <a href="http://www.acsseo.com/" rel="external">ACS</a> did the majority of the new design work<sup><a href="#fn1197763737739n" id="fn1197763737739" class="footnote">1</a></sup>, then we helped integrate and implement various features and functions in WordPress and made sure all the Ts were crossed and the Is dotted.</p>
<p>On Friday, we brought the new design and features live on CrunchGear.com. Congratulations to the TechCrunch and CrunchGear teams on the successful launch of the new design, and thank you for giving us the opportunity to help make this a success.</p>
<p>Have a web development or WordPress project you need development, design or consulting help with? <a href="http://crowdfavorite.com/contact/">Get in touch with Crowd Favorite</a>.</p>
<ol class="footnotes">
<li id="fn1197763737739n">Redesigns on high traffic sites are never universally well-received, and this is no different. The <a href="http://www.crunchgear.com/2007/12/14/welcome-to-the-new-crunchgear-please-have-some-cocoa/#comments" rel="external">comments on new CrunchGear design</a> are somewhat mixed, but I like the new design and enjoyed working on the implementation. [<a href="#fn1197763737739">back</a>]</li>
</ol>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=CrunchGear+Redesign&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2007%2F12%2F17%2Fcrunchgear-redesign">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2007/12/17/crunchgear-redesign/feed</wfw:commentRss>
		</item>
		<item>
		<title>Yahoo! Shortcuts (beta)</title>
		<link>http://alexking.org/blog/2007/12/13/yahoo-shortcuts</link>
		<comments>http://alexking.org/blog/2007/12/13/yahoo-shortcuts#comments</comments>
		<pubDate>Thu, 13 Dec 2007 14:46:25 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Crowd Favorite]]></category>

		<category><![CDATA[Case Studies]]></category>

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

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

		<guid isPermaLink="false">http://alexking.org/blog/2007/12/13/yahoo-shortcuts</guid>
		<description><![CDATA[Over the last few months Crowd Favorite has had the opportunity to work with some great people at Yahoo! to create a rather unique WordPress plugin: Yahoo! Shortcuts. This is probably the most ambitious plugin I&#8217;ve helped build, and I think it will be really useful for a number of bloggers out there.

Basically it will [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Yahoo! Shortcuts (beta)", url: "http://alexking.org/blog/2007/12/13/yahoo-shortcuts" });</script>]]></description>
			<content:encoded><![CDATA[<p>Over the last few months <a href="http://crowdfavorite.com">Crowd Favorite</a> has had the opportunity to work with some great people at Yahoo! to create a rather unique <a href="http://wordpress.org/" rel="external">WordPress</a> plugin: <a href="http://shortcuts.yahoo.com" rel="external">Yahoo! Shortcuts</a>. This is probably the most ambitious plugin I&#8217;ve helped build, and I think it will be really useful for a number of bloggers out there.</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/2107402303/" title="Yahoo! Shortcuts by alexkingorg, on Flickr"><img src="http://farm3.static.flickr.com/2013/2107402303_f6e72c8954_m.jpg" width="240" height="177" alt="Yahoo! Shortcuts" /></a></p>
<p>Basically it will suggest all sorts of Yahoo! content to augment what you&#8217;re writing about. It can give you little finance widgets for companies:</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/2108412050/" title="Finance by alexkingorg, on Flickr"><img src="http://farm3.static.flickr.com/2227/2108412050_a83d7114f7_m.jpg" width="240" height="163" alt="Finance" /></a></p>
<p>Maps and travel information for locations:</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/2107637869/" title="Maps by alexkingorg, on Flickr"><img src="http://farm3.static.flickr.com/2283/2107637869_aa55874d3c_m.jpg" width="198" height="240" alt="Maps" /></a></p>
<p>And even Flickr photos<sup><a href="#fn1197527209506n" id="fn1197527209506" class="footnote">1</a></sup>:</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/2108423558/" title="Flickr photo by alexkingorg, on Flickr"><img src="http://farm3.static.flickr.com/2335/2108423558_a68b8430d5_m.jpg" width="240" height="215" alt="Flickr photo" /></a></p>
<p>You get to choose to enable or disable each of the detected shortcuts, and you get to choose how to display them. Some can be embedded badges while others have little pop-up effects when you mouse over them.</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/2107637787/" title="Reviewing Shortcuts by alexkingorg, on Flickr"><img src="http://farm3.static.flickr.com/2130/2107637787_70c2d23849_m.jpg" width="180" height="240" alt="Reviewing Shortcuts" /></a></p>
<p>This is a <em>beta</em> release, which means there are a few little quirks that may pop up from time to time. I&#8217;m sure there will be a lot of great user feedback (and bug reports) coming in as folks start using this to make 1.0 even better.</p>
<p>More info and coverage:</p>
<ul>
<li><a href="http://yodel.yahoo.com/2007/12/13/shortcuts-for-your-wordpress-blog/" rel="external">Shortcuts for your WordPress blog - Yodel Anacdotal</a></li>
<li><a href="http://www.ysearchblog.com/archives/000512.html" rel="external">Boost Your Blog with Yahoo! Shortcuts for WordPress (Beta)</a></li>
<li><a href="http://shortcuts.yahoo.com/" rel="external">Yahoo! Shortcuts home page</a></li>
<li><a href="http://wordpress.org/extend/plugins/yahoo-shortcuts/" rel="external">Yahoo! Shortcuts plugin page on WordPress.org</a></li>
</ul>
<p>It&#8217;s also worth noting that the plugin code is all Open Source under a modified BSD license. It&#8217;s almost a no-brainer for a company like Yahoo! to make this decision nowdays, which is pretty fantastic.</p>
<p>We had a number of interesting challenges during the creation of the plugin. It was great to see the Yahoo! team not want to make compromises from the user experience they wanted; it was up to us to make sure they didn&#8217;t have to.</p>
<ul>
<li>Interacting with the WordPress rich text editor is always interesting. We needed to allow people to move the Yahoo! content (maps, photos, charts) around and align them left and right. To accomplish this we had to use placeholder images for the content in some cases. Then we translate the placeholder image back to the proper content to display it.</li>
<li>As anyone who builds an API knows, no matter how much you plan ahead your first customer will always ask for a feature you overlooked or thought you could postpone until later. As the first customers of the Yahoo! Shortcuts API we found that while almost everything we needed was provided to us, there were a few things that we needed to tweak in order to accomplish what we needed on the WordPress side. Luckily we had access to the API engineers at Yahoo! to give us the additional functionality we needed.</li>
<li>Working with a large company without having <a href="http://alexking.org/blog/2007/11/26/introducing-peter-gornell">our project manager</a> in place (yet). I verified that project management is not my strongest suit - thankfully we&#8217;ve remedied that situation. Back to focusing on development for me (yay!).</li>
</ul>
<p>This project also afforded me a chance to meet Jeremy Zawodny. Jeremy is one of the first bloggers I started following in (I think) late 2002 and it was great timing to be able to meet up with him at <a href="http://defragcon.com/" rel="external">Defrag</a> a little over a month ago. We shot a little <a href="http://cosmos.bcst.yahoo.com/up/player/popup/?cl=5251111" rel="external">screencast video walk-though of the Yahoo! Shortcuts plugin</a><sup><a href="#fn1197529486851n" id="fn1197529486851" class="footnote">2</a></sup>.</p>
<p><strong>Full Disclosure:</strong> Yahoo! was our customer to create this plugin. That said, they did not provide any restrictions about what I could say here, ask me to follow any guidelines or even ask me to highlight any specific features.</p>
<ol class="footnotes">
<li id="fn1197527209506n">Those with proper Creative Commons licenses. [<a href="#fn1197527209506">back</a>]</li>
<li id="fn1197529486851n">Because who doesn&#8217;t love to watch two guys in green sweaters staring at a laptop? You can tell that Jeremy knew there would be footage of us as well as the screencast in the final video - I&#8217;ll know next time. <img src='http://alexking.org/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> [<a href="#fn1197529486851">back</a>]</li>
</ol>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=Yahoo%21+Shortcuts+%28beta%29&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2007%2F12%2F13%2Fyahoo-shortcuts">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2007/12/13/yahoo-shortcuts/feed</wfw:commentRss>
		</item>
		<item>
		<title>ShareThis 2.0</title>
		<link>http://alexking.org/blog/2007/11/08/sharethis-20</link>
		<comments>http://alexking.org/blog/2007/11/08/sharethis-20#comments</comments>
		<pubDate>Thu, 08 Nov 2007 22:04:25 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Crowd Favorite]]></category>

		<category><![CDATA[Case Studies]]></category>

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

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

		<guid isPermaLink="false">http://alexking.org/blog/2007/11/08/sharethis-20</guid>
		<description><![CDATA[I&#8217;m very pleased to announce that ShareThis 2.0 is now available!

This new version has a ton of great features, including:

A new WordPress plugin.
WordPress users can download the new plugin here.
Support for non-WordPress platforms.
This was by far the #1 requested feature, and you can use the ShareThis widget for other blogging platforms or for regular HTML [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "ShareThis 2.0", url: "http://alexking.org/blog/2007/11/08/sharethis-20" });</script>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m very pleased to announce that ShareThis 2.0 is now available!</p>
<p class="center"><a href="http://sharethis.com/getthebutton" rel="external"><img src="/images/get-share-this.png" alt="Get ShareThis" style="border: 0;" /></a></p>
<p>This new version has a ton of great features, including:</p>
<dl>
<dt>A new WordPress plugin.</dt>
<dd>WordPress users can download the new plugin <a href="http://downloads.wordpress.org/plugin/share-this.2.0.zip" rel="external">here</a>.</dd>
<dt>Support for non-WordPress platforms.</dt>
<dd>This was by far the #1 requested feature, and you can use the ShareThis widget for other blogging platforms or for regular HTML web sites. Go the the <a href="http://sharethis.com/getthebutton" rel="external">Get the Button</a> page and follow the simple steps.</dd>
<dt>Choose your social web services and easy color configuration.</dt>
<dd>ShareThis has a <a href="http://sharethis.com/publisher" rel="external">simple online configuration tool</a> that allows you to choose which social web services you want to offer links to and allow you to set colors to match you site&#8217;s theme.</dd>
<dt>Sending using AIM, SMS, Facebook and MySpace.</dt>
<dd>Yes, people use more communication channels than just e-mail. <img src='http://alexking.org/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </dd>
<dt>Stats for publishers.</dt>
<dd>With tracking features to keep track of the sharing activity on your site, ShareThis will be offering stats for publishers.</dd>
<dt>Import address books.</dt>
<dd>You can import your buddy lists to make sharing to AIM, Facebook and MySpace easy.</dd>
</dl>
<p>You can see that lots of these features wouldn&#8217;t be available without the great sharing platform being built at ShareThis.com. You can see <a href="http://alexking.org/blog/2007/09/24/the-future-of-share-this">why it made sense</a> to work with the great folks at ShareThis.</p>
<p>It&#8217;s a pretty impressive upgrade, and this is really just the tip of the iceberg for ShareThis. There are a lot of exciting things on the roadmap for publishers (including some advanced customization options) and users, and <a href="http://crowdfavorite.com">Crowd Favorite</a> is proud to be a part of it - stay tuned!</p>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=ShareThis+2.0&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2007%2F11%2F08%2Fsharethis-20">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2007/11/08/sharethis-20/feed</wfw:commentRss>
		</item>
		<item>
		<title>AnswerLinks</title>
		<link>http://alexking.org/blog/2007/10/11/answerlinks</link>
		<comments>http://alexking.org/blog/2007/10/11/answerlinks#comments</comments>
		<pubDate>Fri, 12 Oct 2007 00:34:24 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Crowd Favorite]]></category>

		<category><![CDATA[Case Studies]]></category>

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

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

		<guid isPermaLink="false">http://alexking.org/blog/2007/10/11/answerlinks</guid>
		<description><![CDATA[Crowd Favorite has had the opportunity to work with Answers.com this fall on AnswerLinks, a new WordPress plugin. Answerlinks talks to an API at Answers.com and auto-suggests links to definitions and more on Answers.com for terms in your blog post. Then you can choose to add the links you want; very simple and easy.

After going [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "AnswerLinks", url: "http://alexking.org/blog/2007/10/11/answerlinks" });</script>]]></description>
			<content:encoded><![CDATA[<p><a href="http://crowdfavorite.com">Crowd Favorite</a> has had the opportunity to work with <a href="http://answers.com" rel="external">Answers.com</a> this fall on AnswerLinks, a new <a href="http://wordpress.org/" rel="external">WordPress</a> plugin. Answerlinks talks to an API at Answers.com and auto-suggests links to definitions and more on Answers.com for terms in your blog post. Then you can choose to add the links you want; very simple and easy.</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/1545698425/" title="Photo Sharing"><img src="http://farm3.static.flickr.com/2078/1545698425_f03d83a0c8_m.jpg" width="240" height="202" alt="AnswerLinks plugin" /></a></p>
<p>After going through several design revisions, we created an interface primarily using client side JavaScript to allow you to choose the links you want to add to your post. There are two ways to do this, you can step through the terms one by one using &#8220;Link&#8221; and &#8220;Don&#8217;t Link&#8221; buttons (similar to the way a spell checker works), or you can simply use the list of links on the side and check the boxes for the terms you want to link.</p>
<p>This was started as a WordPress.com project (and <a href="http://wordpress.com/blog/2007/10/10/answerlinks/" rel="external">has been rolled out on WordPress.com</a>), but is also available as a downloadable plugin<sup><a href="#fn1192142383100n" id="fn1192142383100" class="footnote">1</a></sup> for self-hosted/WordPress.org users.</p>
<p>I&#8217;m very pleased that Crowd Favorite was able to be involved with this project. It&#8217;s wonderful to see Answers.com providing an API into their data to enable this sort of feature, and it&#8217;s great that the WordPress community can benefit from it. My thanks to the teams at Answers.com and <a href="http://automattic.com" rel="external">Automattic</a>, both were great to work with.</p>
<p>UPDATE: There was a typo in the original packaging for this. If you are using version 1.0a, upgrade to 1.0b or rename the &#8220;answerlinks&#8221; folder to &#8220;answerlink&#8221;. This only affects version 1.0a.</p>
<ol class="footnotes">
<li id="fn1192142383100n">It is available on my <a href="http://alexking.org/projects/wordpress">WordPress Plugins page</a> and also from <a href="http://wordpress.org/extend/plugins/answerlinks/" rel="external">wordpress.org</a>. [<a href="#fn1192142383100">back</a>]</li>
</ol>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=AnswerLinks&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2007%2F10%2F11%2Fanswerlinks">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2007/10/11/answerlinks/feed</wfw:commentRss>
		</item>
		<item>
		<title>From King Design to Crowd Favorite</title>
		<link>http://alexking.org/blog/2007/06/11/crowd-favorite-site-transition</link>
		<comments>http://alexking.org/blog/2007/06/11/crowd-favorite-site-transition#comments</comments>
		<pubDate>Mon, 11 Jun 2007 19:56:06 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Crowd Favorite]]></category>

		<category><![CDATA[Case Studies]]></category>

		<guid isPermaLink="false">http://alexking.org/blog/2007/06/11/crowd-favorite-site-transition</guid>
		<description><![CDATA[One of the challenges of renaming King Design to Crowd Favorite was how exactly to handle transitioning from kingdesign.net to the new crowdfavorite.net web site. I think I&#8217;ve come up with a reasonable solution that covers both people and search engines.
It was important to me not to create a jarring or confusing experience for anyone [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "From King Design to Crowd Favorite", url: "http://alexking.org/blog/2007/06/11/crowd-favorite-site-transition" });</script>]]></description>
			<content:encoded><![CDATA[<p>One of the challenges of <a href="http://alexking.org/blog/2007/06/04/king-design-is-now-crowd-favorite">renaming King Design to Crowd Favorite</a> was how exactly to handle transitioning from kingdesign.net to the new crowdfavorite.net web site. I think I&#8217;ve come up with a reasonable solution that covers both people and search engines.</p>
<p>It was important to me not to create a jarring or confusing experience for anyone who was accustomed to going to the King Design web site, so I decided to leave the King Design web site up with a couple of minor changes:</p>
<ul>
<li>There is a <a href="http://crowdfavorite.net">Crowd Favorite</a> logo <img src='http://alexking.org/images/smilies/ak_scare1.gif' alt=':scare:' class='wp-smiley' /> pasted <img src='http://alexking.org/images/smilies/ak_scare2.gif' alt=':/scare:' class='wp-smiley' /> over the King Design logo in the header.</li>
<li>There is a big sign at the top of each page noting that King Design is now Crowd Favorite, with a link to go to the page they are on at the King Design on the Crowd Favorite web site.</li>
</ul>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/548247361/"><img src="http://farm2.static.flickr.com/1140/548247361_acd42267ef_m.jpg" width="240" height="183" alt="King Design to Crowd Favorite" /></a></p>
<p>Behind the scenes, there is a little magic happening. The Crowd Favorite and King Design web sites are running on a single WordPress installation. I created a different theme for each site, but both sites are using the same content. As the content includes some embedded HTML markup in places, I had to manage many of the visual differences purely with CSS.</p>
<p>Once I had the two themes working properly with the site content, I created a plugin to load the appropriate theme based on the URL that the visitor came to (crowdfavorite.net or kingdesign.net).</p>
<p>There are two areas of the site that aren&#8217;t WordPress driven: the forums and the PHP Doc System generated documentation. For these areas I decided to go with only the Crowd Favorite theme. I created a new template in PunBB and used PHP Doc System to export all of the static documentation using an the Crowd Favorite header and footer HTML.</p>
<p>Of course, I&#8217;ve also updated the URL in my e-mail signature and changed the prefixes, URLs and e-mail addresses in my automated e-mails, etc. I also plan to send an e-mail quite soon to all <a href="http://crowdfavorite.net/tasks-pro/">Tasks Pro&trade;</a> and <a href="http://crowdfavorite.net/tasks/">Tasks&trade;</a> customers announcing the change.</p>
<p>I plan to leave all of this in place through the end of 2007, then I will start issuing immediate redirects to crowdfavorite.net to people that visit kingdesign.net in 2008 and beyond. All @kingdesign.net e-mails will also still work through the end of 2007, </p>
<p>That is my strategy for gently transitioning people to the new site/domain.</p>
<p>The other visitors I&#8217;m concerned about are search engine crawlers. Unlike the human visitors that I want to transition gently, I want the search engines to pick up the new site immediately. I created a mod_rewrite directive to immediately send 301 header redirects to search engine crawlers if they are not coming in to crowdfavorite.net:</p>
<div class="code"><code>## search engine spiders</p>
<p># Google - googlebot<br />
# Yahoo - yahoo.com<br />
# MSN/Live - msn.com<br />
RewriteCond %{HTTP_HOST} !^crowdfavorite.net$ [NC]<br />
RewriteCond %{HTTP_USER_AGENT} .*googlebot.* [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} .*yahoo.com.* [NC,OR]<br />
RewriteCond %{HTTP_USER_AGENT} .*msn.com.* [NC]<br />
RewriteRule ^(.*)$ http://crowdfavorite.net/$1 [L,R=301]</code></div>
<p>I&#8217;m no mod_rewrite guru<sup><a href="#fn1181413960898n" id="fn1181413960898" class="footnote">1</a></sup>, but I did a little testing based on the documented user agents and this seems to be working as desired. Hopefully the search engines will pick up the moved pages and update their indexes quickly.</p>
<p>I&#8217;ll be curious to see how this all works out, but I&#8217;m optimistic and think I&#8217;ve covered the bases pretty well.</p>
<p>Have your own suggestions or tips? Share them with the group in the comments.</p>
<ol class="footnotes">
<li id="fn1181413960898n">I don&#8217;t even play one on TV. [<a href="#fn1181413960898">back</a>]</li>
</ol>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=From+King+Design+to+Crowd+Favorite&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2007%2F06%2F11%2Fcrowd-favorite-site-transition">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2007/06/11/crowd-favorite-site-transition/feed</wfw:commentRss>
		</item>
		<item>
		<title>All Things Digital</title>
		<link>http://alexking.org/blog/2007/04/26/all-things-digital</link>
		<comments>http://alexking.org/blog/2007/04/26/all-things-digital#comments</comments>
		<pubDate>Thu, 26 Apr 2007 20:23:26 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Case Studies]]></category>

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

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

		<guid isPermaLink="false">http://alexking.org/blog/2007/04/26/all-things-digital</guid>
		<description><![CDATA[Yesterday evening All Things Digital, a new home for Walt Mossberg, Kara Swisher and  John Paczkowski was unleashed on the internet.

I&#8217;ve been working on this for the past month and a half, and it&#8217;s been a real whirlwind project. When we got the contract to build the site using WordPress, we were warned that [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "All Things Digital", url: "http://alexking.org/blog/2007/04/26/all-things-digital" });</script>]]></description>
			<content:encoded><![CDATA[<p>Yesterday evening <a href="http://allthingsd.com/" rel="external">All Things Digital</a>, a new home for <a href="http://walt.allthingsd.com" rel="external">Walt Mossberg</a>, <a href="http://kara.allthingsd.com" rel="external">Kara Swisher</a> and  <a href="http://digitaldaily.allthingsd.com" rel="external">John Paczkowski</a> was unleashed on the internet.</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/473720844/"><img src="http://farm1.static.flickr.com/184/473720844_464d8966cf_m.jpg" width="240" height="192" alt="All Things Digital" /></a></p>
<p>I&#8217;ve been working on this for the past month and a half, and it&#8217;s been a real whirlwind project. When <a href="http://twitter.com/alexkingorg/statuses/5734240" rel="external">we got the contract</a> to build the site using <a href="http://wordpress.org/" rel="external">WordPress</a>, we were warned that it was an <em>aggressive</em> build schedule.</p>
<p>It was.</p>
<p>And that was before the inevitable scope creep. <img src='http://alexking.org/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Luckily there all-star team was in place to make it all happen. In particular the people at <a href="http://weblog.muledesign.com/2007/04/all_things_digital_launches.php" rel="external">Mule Design</a> who created the design and the initial XHTML/CSS template for the site (which are both top notch), <a href="http://www.tow.com/2007/04/25/all-things-digital-launches/" rel="external">Adam Tow</a> who worked on the build portion of the project with me (and really did an <em>outstanding</em> job), <a href="http://www.brianoberkirch.com/2007/04/25/live-all-things-digital/" rel="external">Brian Oberkirch</a> who can herd cats with the best of them, <a href="http://ocaoimh.ie/" rel="external">the</a> <a href="http://photomatt.net/2007/04/26/allthingsd-on-wp/" rel="external">great</a> <a href="http://barry.wordpress.com/" rel="external">folks</a> <a href="http://toni.schneidersf.com/2007/04/26/allthingsdcom-launches-powered-by-wordpress/" rel="external">at</a> <a href="http://automattic.com" rel="external">Automattic</a> who are hosting the site, <a href="http://www.raanan.com/2007/04/26/all-things-digital-has-launched" rel="external">Raanan Bar-Cohen</a>, Beth Callaghan and the Dow Jones and WSJ teams, and last but certainly not least, the site principals. I really can&#8217;t say enough good things about these folks; if any of them hadn&#8217;t executed at the highest level, there is no way the site would be live right now.</p>
<p>During the requirements gathering portion of the project, I was very pleased when they asked explicitly for us to implement &#8220;<a href="http://gigaom.com/2007/04/25/all-things-d-goes-live/" rel="external">Om</a>&#8217;s Share This&#8221; plugin. Of course, Om&#8217;s plugin is actually <a href="http://alexking.org/projects/wordpress">my plugin</a> - it&#8217;s great to see the plugin and <a href="http://alexking.org/projects/share-icon">the</a> <a href="http://shareicons.com">icon</a> getting traction in such high profile sites.</p>
<p>For those of you who are interested in the technical details, here&#8217;s a little high-level about the build itself.</p>
<p>The site is running a single instance of WordPress Multi-User (WPMU), the same software that powers wordpress.com. It is running on several machines, but I&#8217;m happy to say I don&#8217;t know many of the server configuration details. Barry took care of all of that for us.</p>
<p>All Things Digital isn&#8217;t your typical WPMU site. Instead of many separate blogs, we have a single site with lots and lots of content. Yes there are a couple of traditional blogs, but there are also imported WSJ columns (complete with archives), video all over the place, and there is little sense of each blog being a unique site. Quite the opposite, we often pull content from 3 or 4 &#8220;blogs&#8221;<sup><a href="#fn1177574816957n" id="fn1177574816957" class="footnote">1</a></sup> into a single page. You don&#8217;t see that happening a lot on a standard wordpress.com blog.</p>
<p>We actually vacillated a little between using WPMU and a single user WordPress (WPSU) installation. It&#8217;s easier to access data globally from a WPSU installation, but creating the appearance of multiple blogs (like I do on this site) requires some complicated category manipulation, and it doesn&#8217;t have separate admin interfaces for each &#8220;blog&#8221;, which is helpful when you have multiple authors each working on their own individual content. When we made the choice to go with WPMU we weren&#8217;t sure if we were making the right decision, but with the benefit of hindsight I&#8217;m quite confident we made the right choice.</p>
<p>I&#8217;m not sure how often WPMU has been used in this manner (pulling content from multiple blogs for a single site) in the past, but I do know that it will be a lot easier in the future. Donncha did some great optimizations to make it faster to access content from other &#8220;blogs&#8221; in WPMU while we were building out the site. Thanks to the beauty of open source, everyone benefits.</p>
<p>The fact we were able to do all of our extensive customizations in themes and plugins is a testament to WordPress&#8217;s flexibility (and to Adam&#8217;s and my creativity <img src='http://alexking.org/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). No core changes means easy upgrades and maintenance - always a good thing.</p>
<p>This was a fun and challenging site to build, and there are plenty more great ideas planned for the future. I look forward to watching the great content pour in from Walt, Kara, John and the guest bloggers.</p>
<ol class="footnotes">
<li id="fn1177574816957n">I&#8217;m using &#8216;blog&#8217; as a general term to refer to both the blogs and columns on the site, since they are stored in the database in the same way. [<a href="#fn1177574816957">back</a>]</li>
</ol>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=All+Things+Digital&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2007%2F04%2F26%2Fall-things-digital">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2007/04/26/all-things-digital/feed</wfw:commentRss>
		</item>
		<item>
		<title>WordPress Category Admin Overhaul</title>
		<link>http://alexking.org/blog/2007/01/31/wordpress-category-admin</link>
		<comments>http://alexking.org/blog/2007/01/31/wordpress-category-admin#comments</comments>
		<pubDate>Thu, 01 Feb 2007 02:17:52 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Case Studies]]></category>

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

		<guid isPermaLink="false">http://alexking.org/blog/2007/01/31/wordpress-category-admin</guid>
		<description><![CDATA[The WordPress category system does a great job for most people, however if you have over 1200 categories like Dave Powers&#8217; New Music Nation web site, the standard admin screens for WordPress categories just aren&#8217;t going to cut it for you.
Dave got in touch with me and explained the problems he was having. They had [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "WordPress Category Admin Overhaul", url: "http://alexking.org/blog/2007/01/31/wordpress-category-admin" });</script>]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://wordpress.org/" rel="external">WordPress</a> category system does a great job for most people, however if you have over 1200 categories like <a href="http://newmusicnation.com/" rel="external">Dave Powers&#8217; New Music Nation web site</a>, the standard admin screens for WordPress categories just aren&#8217;t going to cut it for you.</p>
<p>Dave got in touch with me and explained the problems he was having. They had addressed the front-end issues, but the volume of categories he had were causing the category administration pages to fail to load.</p>
<h3>Project Goals</h3>
<p>Create an alternate interface for managing categories in the WordPress administration screens - one that can handle a as many categories as you can throw at it.</p>
<h3>Timeline</h3>
<p>Dave first contacted me in mid-November 2006. We discussed the project via e-mail, and signed off several days later to begin development at the end of November. I actually was able to begin the project a little earlier than expected, and delivered the completed project at the end of November.</p>
<h3>Deliverables</h3>
<p>An alternate administrative interface for managing WordPress categories.</p>
<h3>Process</h3>
<p>Dave contacted me and we discussed the project via e-mail. He basically told me what his end goal was, and left it up to me to implement in the manner I thought best.</p>
<p>I investigated the way the existing category admin worked on the back end and identified the areas where a large nested category list would cause problems. Then I designed changes to relieve these specific issues.</p>
<p>Unfortunately, it wasn&#8217;t possible to use existing hooks to make the necessary changes so I implemented my changes altering as little core code as possible.</p>
<p>The basic change was to show only one level of categories at a time, and no more than 50 categories in the list - paging the list where needed. This needed to be done in both the list of categories and also for the &#8220;parent category&#8221; drop down list category in the category add/edit form.</p>
<h3>End Result</h3>
<p>I mailed the modifications as replacement and additional files, along with installation instructions to Dave while he was on vacation.</p>
<p>Dave returned from vacation and contacted me a few days later. He explained that he didn&#8217;t have experience uploading files like this (even with the instructions) so we expanded the project for me to also do the installation and configuration of the new admin screens on his server.</p>
<p>Once I had everything working as needed for Dave, I decided to see if I could add a few hooks to WordPress to allow my modifications to work as a pure plugin (without requiring modification of any WordPress core files).</p>
<p>I identified the places where I could add a few simple hooks and <a href="http://trac.wordpress.org/ticket/3408" rel="external">created a patch</a> accordingly. This patch was accepted and included in WordPress 2.1.</p>
<p>With Dave&#8217;s blessing, I&#8217;ll be packaging this functionality up as a plugin for WordPress 2.1.</p>
<h3>Credits and Disclaimers</h3>
<p>Thanks to Dave Powers for having a great attitude towards Open Source and allowing (encouraging actually) the work done for him to be published so that others could benefit as well.</p>
<p>Thanks to <a href="http://boren.nu" rel="external">Ryan Boren</a> for reviewing and accepting the WordPress patch required to allow this to work as a pure plugin.</p>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=WordPress+Category+Admin+Overhaul&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2007%2F01%2F31%2Fwordpress-category-admin">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2007/01/31/wordpress-category-admin/feed</wfw:commentRss>
		</item>
		<item>
		<title>tecosystems Redesign</title>
		<link>http://alexking.org/blog/2007/01/19/tecosystems-redesign</link>
		<comments>http://alexking.org/blog/2007/01/19/tecosystems-redesign#comments</comments>
		<pubDate>Fri, 19 Jan 2007 20:06:08 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Case Studies]]></category>

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

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

		<guid isPermaLink="false">http://alexking.org/blog/2007/01/19/tecosystems-redesign</guid>
		<description><![CDATA[Crossing the line between favors and actually doing paid contract work for a friend can be tough decision. Once money and deliverables get involved, it can definitely introduce new issues and points of contention to your friendship. Before you agree to do the work, you better be darn sure you can deliver.  
Steve O&#8217;Grady [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "tecosystems Redesign", url: "http://alexking.org/blog/2007/01/19/tecosystems-redesign" });</script>]]></description>
			<content:encoded><![CDATA[<p>Crossing the line between favors and actually doing paid contract work for a friend can be tough decision. Once money and deliverables get involved, it can definitely introduce new issues and points of contention to your friendship. Before you agree to do the work, you better be darn sure you can deliver. <img src='http://alexking.org/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://redmonk.com/sogrady/" rel="external">Steve O&#8217;Grady</a> and I have talked about his blog and his company&#8217;s web site a number of times. I knew what they were trying to do, and that they weren&#8217;t entirely satisfied with the progress they were making. However it wasn&#8217;t until he <a href="http://redmonk.com/sogrady/2006/11/26/hmmmdid-your-blog-get-a-hair-cut/" rel="external">migrated to WordPress</a> and I watched him try a different theme every day of the week that I finally offered to help. <img src='http://alexking.org/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The results of these efforts are now live on <a href="http://redmonk.com/sogrady/2007/01/03/new-year-new-design/" rel="external">Steve&#8217;s blog: tecosystems</a>.</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/361791853/"><img src="http://farm1.static.flickr.com/149/361791853_2d3879d2e0_m.jpg" width="240" height="198" alt="tecosystems" /></a></p>
<h3>Project Goals</h3>
<p>There were three things that RedMonk wanted to do for their site:</p>
<ol>
<li>Tie all of the blogs together better.</li>
<li>Create a standard &#8220;RedMonk&#8221; theme for their blogs, while still allowing for individuality.</li>
<li><a href="http://redmonk.com/sogrady/2006/10/03/rebuilding-redmonkcom/" rel="external">Re-design the RedMonk home page.</a></li>
</ol>
<p>After discussing options for a couple of weeks, Steve and I decided to go ahead and re-design his blog in an attempt to address numbers 1 and (potentially) 2 above. If the new design was well received, then we’d have laid the foundation for a base blog design, while allowing easy customization of individual properties.</p>
<p>If things went well, we&#8217;d decide how to move forward to complete #2 and start looking at #3 as well.</p>
<h3>Timeline</h3>
<p>We started talking about the project, with me making various suggestions, several months ago (if not longer). The actual &#8220;go ahead&#8221; was given just before Christmas and I began work in early January. The initial work was completed in about 2 days, with some ongoing touch-up required.</p>
<h3>Deliverables</h3>
<p>A WordPress theme for Steve&#8217;s blog and a RedMonk &#8220;header&#8221; to tie the blogs together.</p>
<p>While we had planned to do the blog theme first and the header second, I delivered the header at the same time as the theme so that it would be clear how the two worked together.</p>
<h3>Process</h3>
<p>While the purpose of this project was to create a single blog theme, the larger goal was to create a theme for RedMonk blogs. After mixed results with off-the-shelf themes, they needed one they could trust and one that could be customized and individualized as desired.</p>
<p>I chose to use <a href="http://www.plaintxt.org/themes/sandbox/" rel="external">Sandbox</a> as an XHTML base, then implemented a RedMonk theme on top of the Sandbox skeleton. Using Sandbox definitely helped speed up the process of getting the XHTML structure in place. I then build the RedMonk theme style as a Sandbox skin, and created a customization skin for Steve on top of the RedMonk skin.</p>
<p>By using Sandbox (which comes with a variety of layouts), I gave the RedMonk bloggers the ability to start with the RedMonk theme and easily change the layout format, header image, fonts, etc. using a personal skin (like the one I built for Steve).</p>
<p>I also integrated my <a href="http://alexking.org/blog/2007/01/02/ajax-archives">AJAX archives and comments</a> into the RedMonk theme. This required some customization and additions to the Sandbox theme files.</p>
<p>One of the really interesting parts of this project to me was the choice to work solely on a single blog first. We didn&#8217;t try to create a design for the home page and adapt it to the blogs, or create a design for all of the blogs at once. I believe that this is a design process that has a lot of benefit, and could be well utilized by others.</p>
<p>When designing an entire site it&#8217;s easy to get bogged down in revision upon revision while trying to find a design that everyone likes. It&#8217;s also common that customers don&#8217;t react as well to conceptual sketches and wireframes as they do to a more finished design. When you do design work frequently, you are familiar with the process and know in your mind what the end result will look like; but that isn&#8217;t necessarily an easy thing to convey.</p>
<p>By choosing to do a single complete design first, I believe that RedMonk made a smart decision. They were able to look at a finished design with very little investment, and make further decisions from that point.</p>
<h3>End Result</h3>
<p>When we launched <a href="http://redmonk.com/sogrady/2007/01/03/new-year-new-design/" rel="external">Steve&#8217;s new blog theme</a>, <a href="http://redmonk.com/sogrady/2007/01/03/new-year-new-design/#comment-8530" rel="external">James</a>, <a href="http://redmonk.com/sogrady/2007/01/03/new-year-new-design/#comment-8543" rel="external">Cote&#8217;</a> and <a href="http://redmonk.com/anne/" rel="external">Anne</a> were pleased with the results. With their blessing of the header, we had accomplished project goal #2 and implemented the blog header on all 4 blogs.</p>
<p>In addition, since James hadn&#8217;t found a theme he really liked yet, so we set him up using the RedMonk theme.</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/361791856/"><img src="http://farm1.static.flickr.com/155/361791856_e6165ff885_m.jpg" width="240" height="199" alt="MonkChips" /></a></p>
<p>With the well-received completion of goals #1 and #2, we&#8217;ll be tackling #3 (the main site redesign) in the near future.</p>
<h3>Credits and Disclaimers</h3>
<p>Thanks to <a href="http://www.plaintxt.org/about/2/" rel="external">Scott Allen Wallick</a> and <a href="http://www.skeltoac.com/" rel="external">Andy Skelton</a> for their work building <a href="http://www.plaintxt.org/themes/sandbox/" rel="external">Sandbox</a>.</p>
<p>Steve is a friend and I&#8217;d known him for several years before we started this project.</p>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=tecosystems+Redesign&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2007%2F01%2F19%2Ftecosystems-redesign">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2007/01/19/tecosystems-redesign/feed</wfw:commentRss>
		</item>
		<item>
		<title>Building alexking.org 2.0, Part 1: Overview</title>
		<link>http://alexking.org/blog/2006/11/02/building-v2-part1</link>
		<comments>http://alexking.org/blog/2006/11/02/building-v2-part1#comments</comments>
		<pubDate>Thu, 02 Nov 2006 23:28:31 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Case Studies]]></category>

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

		<category><![CDATA[alexking.org]]></category>

		<guid isPermaLink="false">http://alexking.org/blog/2006/11/02/building-v2-part1</guid>
		<description><![CDATA[Note: This is the first in a series of articles about the building of alexking.org 2.0.
So now that the new site is live and I&#8217;ve had a chance to fix most of the re-launch related bugs, it&#8217;s time to share a little about the process that went into building this version of the site.
If you&#8217;re [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Building alexking.org 2.0, Part 1: Overview", url: "http://alexking.org/blog/2006/11/02/building-v2-part1" });</script>]]></description>
			<content:encoded><![CDATA[<p class="banner"><strong>Note:</strong> This is the first in a series of articles about the building of alexking.org 2.0.</p>
<p>So now that the new site is live and I&#8217;ve had a chance to fix most of the re-launch related bugs, it&#8217;s time to share a little about the process that went into building this version of the site.</p>
<p>If you&#8217;re seeing this in a feed reader, this is what the new site looks like:</p>
<p class="center"><a href="http://www.flickr.com/photos/alexkingorg/287183382/"><img src="http://static.flickr.com/115/287183382_b0371fcf47_m.jpg" width="240" height="194" alt="alexking.org v2" /></a></p>
<p><a href="http://alexking.org">Come on over for a visit</a> and poke around a bit. <img src='http://alexking.org/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I launched alexking.org v1 on Nov. 1, 2002, v2 launches 4 years later<sup><a href="#fn1162508796719n" id="fn1162508796719" class="footnote">1</a></sup> and incorporates a number of lessons learned. The main changes/adjustments have been building up in my head for the last 2 years, and as a result I made a <em>lot</em> of changes in the redesign.</p>
<p>There are a number of topics regarding the redesign that I think would be interesting to discuss, for example:</p>
<ul>
<li><a href="http://alexking.org/blog/2006/11/06/building-v2-part2">Overall re-design goals - what needed fixing.</a></li>
<li><a href="http://alexking.org/blog/2006/11/09/building-v2-part3">New site navigation - reasons for it, what it solves. &#038; Goals of simplification</a>.</li>
<li><a href="http://alexking.org/blog/2006/11/16/designing-for-the-future">Designing for the future</a>.</li>
<li><a href="http://alexking.org/blog/2006/11/20/smart-urls">New URL structure - which choices were made and why.</a></li>
<li><a href="http://alexking.org/blog/2006/11/30/leveraging-your-content">You&#8217;ve got content - how do you best leverage it?</a></li>
<li><a href="http://alexking.org/blog/2006/12/13/lots-of-plugins">New WordPress plugins written/updated for the new site.</a></li>
<li><a href="http://alexking.org/blog/2007/01/29/too-many-plugins">Bending WordPress to your will - or how many plugins are too many?</a></li>
<li><a href="http://alexking.org/blog/2007/02/19/toolset-handcuffs">Is your site maintenance toolset holding your site back?</a></li>
<li><a href="http://alexking.org/blog/2007/05/11/cms-benefits">Benefits of having your entire site content in a single CMS.</a></li>
<li>Monetization choices.</li>
</ul>
<p>I&#8217;ll try to tackle these over the next few weeks. If you have other topics you&#8217;d like to hear about regarding the redesign, let me know in the comments and I&#8217;ll try to cover them as well.</p>
<ol class="footnotes">
<li id="fn1162508796719n">To the day - how about that. [<a href="#fn1162508796719">back</a>]</li>
</ol>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=Building+alexking.org+2.0%2C+Part+1%3A+Overview&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2006%2F11%2F02%2Fbuilding-v2-part1">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2006/11/02/building-v2-part1/feed</wfw:commentRss>
		</item>
		<item>
		<title>Voting System</title>
		<link>http://alexking.org/blog/2006/02/09/voting-system</link>
		<comments>http://alexking.org/blog/2006/02/09/voting-system#comments</comments>
		<pubDate>Fri, 10 Feb 2006 06:17:30 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Case Studies]]></category>

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

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

		<guid isPermaLink="false">http://www.alexking.org/blog/?p=1704</guid>
		<description><![CDATA[My last project for Eric was building a system for him to run a weekly photo competition on Wetpixel.com. This turned out to be a bit larger project than we thought, but we also added a bit more to the system than we&#8217;d originally planned.
Using the admin interface, Eric and the other Wetpixel admins can [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "Voting System", url: "http://alexking.org/blog/2006/02/09/voting-system" });</script>]]></description>
			<content:encoded><![CDATA[<p>My <a href="http://alexking.org/blog/2005/10/25/erics-annual-visit/">last project</a> for <a href="http://echeng.com/" rel="external">Eric</a> was building a <a href="http://wetpixel.com/competition/" rel="external">system for him to run a weekly photo competition on Wetpixel.com</a>. This turned out to be a bit larger project than we thought, but we also added a bit more to the system than we&#8217;d originally planned.</p>
<p>Using the admin interface, Eric and the other Wetpixel admins can create future competitions and they are automatically turned on and moved from the entry stage to the voting stage to the closed stage with winners being picked. Visitors get to upload their photos and enter information about them as competition entries. The photos are then resized to a few preset sizes while the original image is archived. Visitors can also add comments on the entries, etc. It even supports &#8220;ranked&#8221; competitions (pick your top 3 photos, in order) and &#8220;scored&#8221; competitions (rate each photo on a 1-10 scale). There is still a little to be done still on my end, but Eric says that it&#8217;s been working out well so far.</p>
<p>A couple weeks ago, I started thinking about trying to introduce a <a href="http://feedlounge.com/features/vote/">voting system</a> for <a href="http://feedlounge.com/">FeedLounge</a> features. The idea was to reduce a little of the potential &#8220;vocal minority&#8221; effect that can sometimes occur in the forums, give the users a way to make their voices heard as a group, and not lose great feature requests just because they got pushed off the first page in the <a href="http://forums.feedlounge.com/viewforum.php?id=3">Feature Requests forum</a>.</p>
<p>I thought about trying to showhorn in an existing mod for a voting system into the forums themselves, but none of the systems I found really supported the requirements I had in mind:</p>
<ol>
<li>Items can be added at any time.</li>
<li>Users can change their votes at any time.</li>
<li>Users can give weighted votes to more than one item in the list.</li>
<li>Votes are shown publicly.</li>
<li>Integrated with the forum login so that both FeedLounge users and potential users can participate.</li>
</ol>
<p>I chatted <a href="http://gfmorris.net/" rel="external">Geof</a> up on the topic since he&#8217;s got experience running a forum community, but <a href="http://ijsm.org/archives/2006/02/09/links-for-2006-02-10/" rel="external">he didn&#8217;t know of an ideal system either</a>. It was about that time that I started considering re-purposing the Wetpixel photo competition code.</p>
<p>The system had intentionally been built in a somewhat generic way as Eric thought he might want to run other types of competitions on it in the future, so there wasn&#8217;t that much that had to change for me to use it to drive the feature voting for FeedLounge.</p>
<p>In the FeedLounge feature voting system, there is only one &#8220;competition&#8221;: FeedLounge features. Each feature is an entry, and I repurposed the comment system to allow us to attach forum threads to each feature for discussion. The only code I really had to write was voting results display. The list itself is quite different than the <a href="http://wetpixel.com/competition/index.php?view=competition&#038;id=17" rel="external">Wetpixel competition entry display</a> and the Wetpixel competitions don&#8217;t allow voting and entries at the same time.</p>
<p>I&#8217;m pleased that the system is working well in both places, and that I was able to re-use it to create the FeedLounge feature voting system (instead of writing something custom).</p>
<p>If I hadn&#8217;t just told you they were using the same engine, would you have known? <img src='http://alexking.org/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=Voting+System&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2006%2F02%2F09%2Fvoting-system">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2006/02/09/voting-system/feed</wfw:commentRss>
		</item>
		<item>
		<title>wetpixel.com Migration Project</title>
		<link>http://alexking.org/blog/2005/03/10/wetpixelcom-migration-project</link>
		<comments>http://alexking.org/blog/2005/03/10/wetpixelcom-migration-project#comments</comments>
		<pubDate>Fri, 11 Mar 2005 00:35:16 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
		
		<category><![CDATA[Case Studies]]></category>

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

		<guid isPermaLink="false">http://www.alexking.org/blog/2005/03/10/wetpixelcom-migration-project/</guid>
		<description><![CDATA[A few weeks ago I helped Eric convert wetpixel.com from a PostNuke/phpBB driven site to an Expression Engine (EE)/Invision Power Board (IPB) driven site. Wetpixel is a community web site for underwater digital photographers,  The new site is now live, feel free to go poke around then come back to read the rest.  [...]<script type="text/javascript">SHARETHIS.addEntry({ title: "wetpixel.com Migration Project", url: "http://alexking.org/blog/2005/03/10/wetpixelcom-migration-project" });</script>]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I helped <a href="http://echeng.com/" rel="external">Eric</a> convert <a href="http://wetpixel.com/" rel="external">wetpixel.com</a> from a PostNuke/phpBB driven site to an <a href="http://expressionengine.com/" rel="external">Expression Engine</a> (EE)/<a href="http://www.invisionboard.com/" rel="external">Invision Power Board</a> (IPB) driven site. Wetpixel is a community web site for underwater digital photographers,  The new site is now live, feel free to go poke around then come back to read the rest. <img src='http://alexking.org/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Welcome back. Eric got in touch with me last fall to discuss options for changing the CMS and forums he was using for Wetpixel - things just weren&#8217;t going well with PostNuke in particular. Eric had also liked IVP when he&#8217;d used it in the past, so he wanted to move everything and start fresh. Besides the new CMS and forum systems, he also wanted to give the site a new look and have a single sign-on to both systems for his users.</p>
<h4>Overview</h4>
<p>We talked over what needed to happen, then I did a quick code review of the EE and IVP log in code and wrote up a development outline and time estimate. It was a fairly informal process since Eric and I were colleagues and have been friends for a few years. He was definitely capable of doing this himself, but he knew it would be faster to bring in some additional help and I was happy to oblige.</p>
<p>Eric <a href="http://echeng.com/journal/index.php?p=902" rel="external">came out to Colorado</a> for a couple of days and we banged out all the major functionality. Over the next couple of weeks as he got the servers ready to go, we cleaned up the final details. On a personal note, since Eric is normally either on a boat somewhere or flying over my head across the country, it was nice to get a chance to catch up with him too.</p>
<h4>What we did</h4>
<p>We started off working on the single sign-on process, because that had the most potential to get complicated. Since the only reason Eric wanted users authenticated into EE was to restrict commenting to registered users, we decided to make the IPB users the master user data.</p>
<p>I compared the users table in EE with the users table in IPB and wrote a script to populate the EE users table from the IPB user data and a function to update the EE data when an IPB user was updated. While I was writing this code, Eric found a script to convert phpBB data to IPB and did the conversion so we had real data to work with. This actually went quite smoothly and we had it done and tested in a few hours.</p>
<p>One of the goals (and challenges) when making changes to systems like EE and IPB is to keep the changes as small and isolated as possible. Upgrades happen, and re-applying changes is a pain in the arse. I was very pleased that we only touched a couple lines of code in IPB to enable the user data update to write to both systems.</p>
<p>The next step was to enable a single sign-on for Wetpixel users. The <em>right</em> way to do a single sign-on is to use LDAP, but neither EE or IPB support LDAP and we didn&#8217;t have an LDAP server anyway so we needed to hack this in as well.</p>
<p>The forums are used more than the article comments, so we decided to keep the IPB log in and not expose the EE login. Once a user is logged into IPB, we set a special wetpixel cookie for that user. If they go into an EE page in Wetpixel, we then know to automatically log them in to EE as well. Using this technique, we were again able to touch only a few lines of code in each system - maintaining upgradeability.</p>
<p>The last step was the messiest - write a script to convert all the PostNuke articles and comments to posts and comments in EE. Eric went through the PostNuke tables to create a field map of old data to new data, creating a bunch of custom fields in EE as he went. Then I started writing the data conversion script. While I worked on the script, Eric put the final touches on his new site design and shell.</p>
<p>The article data was stored in three different tables (a table for each type of article), each of which has different columns and column names. I wrote a few hundred lines of code to do the conversion for the first table, plugging in the field map data and (after cleaning up 2 or 3 typos), it actually ran as intended! Then I added in conversion code for the comments for those posts (gotta match up the old article IDs to the new post IDs). Once we tested that and had it working, I decidede to sacrifice elegance for practicality and copy-pasted the code a couple times to handle the other tables. <img src='http://alexking.org/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>At this point the conversion is pretty much complete, but of course we didn&#8217;t want to let the URLs to the old articles turn into 404 errors. I already had the code in the data migration script to map the old article IDs to the new post IDs, so I added some code to the end of the conversion script to generate some code we could use for the redirect.</p>
<p>Then it was time to drive Eric to the airport.</p>
<h4>Wrap up</h4>
<p>It was a pretty busy couple of days, and we got quite a bit more done that I expected. A few things that worked really well:</p>
<ol>
<li>Using <a href="http://crowdfavorite.net/tasks-pro/">Tasks Pro&trade;</a> (of course) to project manage on the fly. We created high-level tasks like &#8216;Single Sign On&#8217; and &#8216;Data Conversion&#8217; at the beginning, then created sub-tasks for the individual things we needed to do for each of these areas when we were ready to get started on that high-level task. Capturing closing notes was very useful as well - for example, if you note which lines of which file(s) you edited when working on a feature, it makes it much easier to quickly get back there to make changes when needed. I also made sure we created a task whenever we thought of anything we needed to do, so nothing fell through the cracks.</li>
<li>Reviewing the code for EE and IPB as part of the initial project definition gave me much needed information about systems I&#8217;d never used before and gave me a good idea of where I needed to cut into each system once we started. This made the time we had working together much more productive instead of needing to do the research at that time. It also made the time estimates a lot more accurate.</li>
<li>EE and IPB both have code that is clean enough to allow strategic code insertions rather than mad hacking. Eric&#8217;s choice of these products worked out very well. It was interesting being able to compare the code and database table and column names in IPB (which has evolved over time) with EE which was created much more recently. Both code is pretty clean, but EE is much more consistent with naming conventions.</li>
</ol>
<p>There were also a few things that we missed during our coding frenzy that we had to fix afterward:</p>
<ol>
<li>my initial plan for handling the redirects was flawed (it expected 404 requests to get passed to index.php - which only sort of happened) and I had to redo it. The new solution actually works better because it adds no extra overhead in the PHP code at all. Instead, I check for elements of the old URL scheme in the Apache rules (.htaccess) and use mod_rewrite to send requests for old URLs to a separate redirect script.</li>
<li>Some of the PostNuke article data had relative URLs that all broke with the new system. I had to write some additional code to go through each article and convert all the relative URLs to absolute URLs.</li>
</ol>
<p>For me this was a very interesting project (besides the opportunity to do a little work with Eric again). This was a project I understood, but had no experience with. Though I&#8217;d never written a conversion script, a single sign-on script or worked with EE or IPB before, I was pretty sure about what I needed to do. I did it, and it worked. This is a common situation for today&#8217;s developers, especially consultants. Your job is to get something done, often using systems and technology you aren&#8217;t familiar with.</p>
<blockquote><p>The illiterate of the 21st century will not be those who cannot read and write, but those who cannot learn, unlearn, and relearn.</p>
<p><cite>Alvin Toffler</cite></p></blockquote>
<p>Eric&#8217;s write-ups of the changes are <a href="http://echeng.com/journal/index.php?p=908" rel="external">here</a>, <a href="http://wetpixel.com/i.php/wp/full/new-wetpixel-design/" rel="external">here</a> and <a href="http://wetpixel.com/i.php/wp/full/new-wetpixel-design/P1/" rel="external">here</a>.</p>
<p><a href="http://sharethis.com/item?&wp=2.2.3&amp;publisher=06654962-d77d-102a-861d-00161729a8a2&amp;title=wetpixel.com+Migration+Project&amp;url=http%3A%2F%2Falexking.org%2Fblog%2F2005%2F03%2F10%2Fwetpixelcom-migration-project">ShareThis</a></p>]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2005/03/10/wetpixelcom-migration-project/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
