<?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>alexking.org &#187; Crowd Favorite</title>
	<atom:link href="http://alexking.org/blog/topic/crowd-favorite/feed" rel="self" type="application/rss+xml" />
	<link>http://alexking.org</link>
	<description>Alex King, Denver Web Developer</description>
	<lastBuildDate>Fri, 25 May 2012 00:40:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Social 2.5 Sketches</title>
		<link>http://alexking.org/blog/2012/05/23/social-2-5-sketches</link>
		<comments>http://alexking.org/blog/2012/05/23/social-2-5-sketches#comments</comments>
		<pubDate>Wed, 23 May 2012 21:15:21 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Case Studies]]></category>
		<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=13558</guid>
		<description><![CDATA[I&#8217;ve already professed my love for Paper1, and one of my primary usages is for wireframing UX models. I used it for a few of the improvments we added in Social 2.5, and thought it might be fun to share a couple of them here. One of the biggest changes we made was an overhaul&#8230;]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve already <a href="http://alexking.org/blog/2012/03/31/on-paper">professed my love for Paper</a><sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>, and one of my primary usages is for wireframing UX models. I used it for a few of the improvments we added in <a href="http://alexking.org/blog/2012/05/22/social-2-5">Social 2.5</a>, and thought it might be fun to share a couple of them here.</p>
<p>One of the biggest changes we made was an overhaul of the Broadcasting screen. Here is the &#8220;before&#8221; version: <span id="more-13558"></span></p>
<p><img src="http://alexking.org/wp-content/uploads/2012/05/broadcast-before-510x436.png" alt="Broadcast Social 2.0" width="510" height="436" class="alignnone size-medium-img wp-image-13566" /></p>
<p>This worked OK, but you can see a few problems:</p>
<ul>
<li>You can&#8217;t send different messages to different accounts on the same service. This was something I wanted to be able to do, to have different voicing on @alexkingorg and @crowdfavorite.</li>
<li>Facebook pages aren&#8217;t visible by default.</li>
<li>The character counter limit indicator is too far away from the textarea it is reflecting.</li>
</ul>
<p>So we worked on some different approaches. These are pretty close to what we shipped in version 2.5:</p>
<p><img src="http://alexking.org/wp-content/uploads/2012/05/braodcast-01-510x382.jpg" alt="Broadcast sketch" width="510" height="382" class="alignnone size-medium-img wp-image-13563" /></p>
<p><img src="http://alexking.org/wp-content/uploads/2012/05/broadcast-02-510x382.jpg" alt="Broadcast sketch" width="510" height="382" class="alignnone size-medium-img wp-image-13564" /></p>
<p>And here is the version that shipped:</p>
<p><img src="http://alexking.org/wp-content/uploads/2012/05/broadcast-after-555x700.png" alt="Broadcast Social 2.5" width="510" height="643" class="alignnone size-large-img wp-image-13565" /></p>
<p>We also made some significant UI changes to the way accounts are managed on the admin side. Here is the &#8220;before&#8221; version.</p>
<p><img src="http://alexking.org/wp-content/uploads/2012/05/accounts-before-510x458.png" alt="Accounts Social 2.0" width="510" height="458" class="alignnone size-medium-img wp-image-13562" /></p>
<p>Again, functional but can be improved. In particular I wanted to consolidate this into a single list rather than having one place to add/remove accounts and a separate place to indicate the default accounts. Also, you can see the problem (again) of pages not being shown by default.</p>
<p>This concept allowed the two lists to be combined into one:</p>
<p><img src="http://alexking.org/wp-content/uploads/2012/05/accounts-01-510x382.jpg" alt="Accounts sketch" width="510" height="382" class="alignnone size-medium-img wp-image-13560" /></p>
<p>And what we shipped was pretty darn close to that:</p>
<p><img src="http://alexking.org/wp-content/uploads/2012/05/accounts-after-510x369.png" alt="" title="Accounts Social 2.5" width="510" height="369" class="alignnone size-medium-img wp-image-13561" /></p>
<p>In addition to making the admin screens more compact, this design also makes it easier to support more services in the future (Google+, etc.).</p>
<p>So there you have it, a little &#8220;behind the scenes&#8221; fun. I definitely recommend incorporating sketching and wireframing into your design process, it&#8217;s been a huge help for us as we brainstorm, discuss ideas, etc.</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">
Speaking of which, I hope we&#8217;re due for an update here soon.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/05/23/social-2-5-sketches/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Social 2.5</title>
		<link>http://alexking.org/blog/2012/05/22/social-2-5</link>
		<comments>http://alexking.org/blog/2012/05/22/social-2-5#comments</comments>
		<pubDate>Tue, 22 May 2012 17:27:50 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=13494</guid>
		<description><![CDATA[I&#8217;m very pleased to share version 2.5 of Social with you. Brought to you by our good friends at MailChimp (see their blog post), Social is a WordPress plugin that connects your WordPress site to Twitter and Facebook in really interesting ways. Here are the high level bullet points: easily connect your Twitter and Facebook&#8230;]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m very pleased to share version 2.5 of <a href="http://wordpress.org/extend/plugins/social/">Social</a> with you. Brought to you by our good friends at <a href="http://mailchimp.com">MailChimp</a> (see their <a href="http://blog.mailchimp.com/social-plugin-wordpress-updated/">blog post</a>), Social is a WordPress plugin that connects your WordPress site to Twitter and Facebook in really interesting ways.</p>
<p>Here are the high level bullet points:</p>
<ul>
<li>easily connect your Twitter and Facebook accounts (no need to create apps through their developer sites and copy keys around &#8211; this feature enabled directly by MailChimp)</li>
<li>allow any other authors on your site to broadcast their own accounts, as well as to any global accounts for the site</li>
<li>broadcast your posts to Twitter and Facebook (with customized messages for each account)</li>
<li>pull social reactions on Twitter and Facebook back in to your site as comments (this could be liking or retweeting your broadcast, replying with a comment, or just tweeting a link to your post)</li>
<li>ability to reply to these social reactions from your WordPress site and send them back to the appropriate social network (keep the conversation going)</li>
<li>your site visitors can authenticate with their Twitter or Facebook accounts when commenting (and they can optionally post their comment back to their social networks)</li>
</ul>
<p>Pretty good feature list, right? Social also has a couple of great collateral features. When used in conjunction with the &#8220;users must be logged in to comment&#8221; feature of WordPress, you can choose to require your commentors to attach a more meaningful (and verified) identity with their comments. Removing anonymous noise from the mix always raises the level of debate.</p>
<p>Social also allows your site to be <em>the</em> place for your content. You can bring in conversations from both Facebook and Twitter back to your site, while still participating in the conversations on those social networks. Engage with people where they want to engage, but do so while providing a richer cross-network experience on your own site.</p>
<p>That&#8217;s Social in a nutshell. Which brings us to the &#8220;what&#8217;s new in this version&#8221; list. I did most of the coding on this release so I&#8217;m hardly unbiased, but I&#8217;m pretty darn pleased with the way this version has shaped up. I&#8217;ve been using development builds on this site for a bit now, and I really like the way the new features have removed that last little bit of friction from some of my more common interactions.</p>
<p>Before we launch into what&#8217;s new, I&#8217;d like to take a moment to point out that Social is built entirely in the open <a href="https://github.com/crowdfavorite/wp-social">on GitHub</a>. Developers, please send us awesome pull requests.</p>
<h2>Facebook Improvements</h2>
<p>I think some of the best changes in this version are in the improvements to interactions with Facebook. By default, when a post is broadcast it is sent as a link rather than a status post; regardless of if it has a featured image or not. The obvious exception here is for posts that have a status post format &#8211; those are still sent as status posts. To try to make this interaction clear, we show a nice preview of how the post will look on Facebook on the broadcast screen.</p>
<p><img src="http://alexking.org/wp-content/uploads/2012/05/facebook-link-510x186.gif" alt="" title="Facebook Broadcast a Link" width="510" height="186" class="alignnone size-medium-img wp-image-13529" /></p>
<p>When comments are broadcast to Facebook, we try to do the Right Thing with it. There are two options:</p>
<ol>
<li>The comment is replying to an existing comment thread and we should post it back to the same thread in Facebook. If this is the case, we try to do so. If for some reason (permissions, etc.) we aren&#8217;t able to do so, then we fall back on option 2&#8230;</li>
<li>Post the comment with a link to the post to the commentor&#8217;s timeline. It makes more sense. Their comment is on the link, and the link is posted right along with it. This should make the posts going back to Facebook more meaningful.</li>
</ol>
<p>We also take the step of auto-selecting the &#8220;Post to Facebook&#8221; checkbox under the following conditions:</p>
<ul>
<li>The (admin/author) user has a Facebook profile attached to their account.</li>
<li>The comment they have clicked &#8220;reply&#8221; was imported from (or was broadcast to) Facebook.</li>
</ul>
<p><img src="http://alexking.org/wp-content/uploads/2012/05/facebook-comment-reply-510x315.gif" alt="" title="Facebook Comment Reply" width="510" height="315" class="alignnone size-medium-img wp-image-13528" /></p>
<p>Social does this all for you &#8211; just hit reply, type your message and send. This feature is important to keep the conversation running easily on both Facebook and your WordPress site.</p>
<h2>Twitter Improvements</h2>
<p>Twitter integration got some nice improvements in this version as well. You were previously able to import tweets as comment directly by URL, but now you can do this from the front-end as well. Use the menu we add in the admin bar under the Comments item to bring in tweets directly (and look for social comments). This is really useful for bringing in replies to replies or other tweets that are part of the conversation, but not something that Social will pick up by default. Note that you have to be on a single post (permalink) view for this to be available.</p>
<p><img src="http://alexking.org/wp-content/uploads/2012/05/twitter-add-tweet-510x365.gif" alt="" title="Add Tweet" width="510" height="365" class="alignnone size-medium-img wp-image-13532" /></p>
<p>One of the use cases that I think makes Social really interesting is the way it allows your WordPress site to interact with real-time happenings on Twitter. Did someone tweet something that prompted you to write a blog post? You can send your broadcast tweet as a reply to that user.</p>
<p><img src="http://alexking.org/wp-content/uploads/2012/05/twitter-reply-510x125.gif" alt="" title="Send as Reply" width="510" height="125" class="alignnone size-medium-img wp-image-13531" /></p>
<p>Tip: Make sure to include their @username in the tweet so that they see it as you expect.</p>
<p>We also improved the Twitter comment detection to auto-select the account that a tweet was directed to when replying to an imported comment. Huh? Basically, if @someoneelse sends a tweet to @yourusername and Social brings that in as a comment, Social will also select your @yourusername and check the &#8220;post to Twitter&#8221; box when you hit the Reply link for that comment. It also inserts @someoneelse into the comment box so that you can start writing your reply.</p>
<p>The last significant change we made is to widen the net a little and catch specific types of Twitter replies, then import them as comments. The scenario is basically this:</p>
<ol>
<li>You broadcast a post.</li>
<li>Someone replies to your post, this is imported as a comment on your site.</li>
<li>You reply to that comment on your site, and broadcast it back to Twitter.</li>
<li>The other person (or multiple people) reply to that comment.</li>
</ol>
<p>Previously we would have missed automatically importing the replies in step 4 above. Now we catch them.</p>
<p><img src="http://alexking.org/wp-content/uploads/2012/05/twitter-auto-post-reply-618x700.png" alt="" title="Twitter Conversation" width="510" height="577" class="alignnone size-large-img wp-image-13530" /></p>
<p>We walk a fine line with the amount of content we try to find and import. In particular we want to make sure we don&#8217;t set up rules that allow Social to use up all of your API requests checking for comments on your broadcasts. However, we do want to bring in as many relevant reactions as we can. We were able to make this change without requiring an additional API hit. We are able to look for additional data in the API requests we were already making.</p>
<h2>General Improvements</h2>
<p>You can now send customized broadcasts to each account in a single action &#8211; each account has its own form that you can edit. By default, the first broadcast message for each service (Facebook, Twitter) is editable while any others are in &#8220;copycat&#8221; mode. They will all be updated along with the edits to the first message unless you click the <strong>Edit</strong> link for the ones you want to customize. We think this is a good compromise between convenience and control, and hope you like how it works.</p>
<p>The account management forms have been streamlined and cleaned up, on both the main Social settings screen and the user profile screen. For example, Facebook pages are always displayed so they can be selected, etc. We also consolidated the selection of &#8220;default&#8221; accounts into the main accounts list. We hope this makes these pages easier to understand and use.</p>
<p>Some of you have post broadcasts that get a <em>ton</em> of Likes and Retweets. These are cool to see in the (condensed view in the) comments list, but not as meaningful in the comments RSS/Atom feeds that WordPress generates. We&#8217;ve added some code to suppress these types of &#8220;meta&#8221; comments in the feeds.</p>
<p>When you have lots of comments, they come with a lot of in-page image requests. This can cause your site to load more slowly than you&#8217;d like, so we implemented support for the <a href="http://wordpress.org/extend/plugins/lazy-load/">Lazy Load plugin</a>. Install and enable this plugin, and the avatars for your Social comments only load when scrolled into view.</p>
<p>Social now functions as a platform for other social WordPress plugins. You can choose to disable any features that you don&#8217;t want on your site and just use the connections to social networks. Expect a new release of Twitter Tools, built on Social, very soon.</p>
<p>Of course we also fixed all of the bugs we were able to reproduce. This includes making Facebook comment importing more consistent, along with a number of other fixes and improvements.</p>
<hr />
<p>A quick word about Google+ integration (by far the most requested feature &#8211; <a href="https://github.com/crowdfavorite/wp-social/issues/9">tracked here</a>). It&#8217;s something we want to do and plan to do, but until Google+ has a write API we can&#8217;t attain feature parity with our Facebook and Twitter integrations. My guess? We&#8217;ll see a Google+ API featured next month at <a href="https://developers.google.com/events/io/">Google I/O</a>.</p>
<hr />
<p>Want to build cool WordPress integrations like this? <a href="http://crowdfavorite.com/jobs/">We&#8217;re hiring</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/05/22/social-2-5/feed</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>Social 2.5 beta 2</title>
		<link>http://alexking.org/blog/2012/05/17/social-2-5-beta-2</link>
		<comments>http://alexking.org/blog/2012/05/17/social-2-5-beta-2#comments</comments>
		<pubDate>Thu, 17 May 2012 21:44:01 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=13488</guid>
		<description><![CDATA[We&#8217;re just about ready to put a bow on version 2.5 of Social. If you&#8217;d like to test the second beta release, grab it from GitHub. Social is a plugin that allows you to maintain a centralized conversation on your site, while also participating in conversations on Facebook and Twitter.]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re just about ready to put a bow on version 2.5 of Social. If you&#8217;d like to test the second beta release, <a href="https://github.com/crowdfavorite/wp-social/zipball/2.5b2">grab it from GitHub</a>.</p>
<p>Social is a plugin that allows you to maintain a centralized conversation on your site, while also participating in conversations on Facebook and Twitter.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/05/17/social-2-5-beta-2/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>WP App Store</title>
		<link>http://alexking.org/blog/2012/05/15/wp-app-store</link>
		<comments>http://alexking.org/blog/2012/05/15/wp-app-store#comments</comments>
		<pubDate>Tue, 15 May 2012 21:18:59 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=13463</guid>
		<description><![CDATA[Congratulations to Brad on today&#8217;s launch of WP App Store. I&#8217;m very pleased to see this come to life. It&#8217;s an idea we toyed around with several years ago, but decided not to pull the trigger on &#8211; I hope it&#8217;s a huge success. We&#8217;ve put our FavePersonal and FaveBusiness themes along with our RAMP&#8230;]]></description>
			<content:encoded><![CDATA[<p><img src="http://alexking.org/wp-content/uploads/2012/05/wpappstore-510x386.jpg" alt="" title="WP App Store" width="510" height="386" class="alignnone size-medium-img wp-image-13468" /></p>
<p>Congratulations to <a href="http://bradt.ca/">Brad</a> on today&#8217;s launch of <a href="http://wpappstore.com">WP App Store</a>. I&#8217;m very pleased to see this come to life. It&#8217;s an idea we toyed around with several years ago, but decided not to pull the trigger on &#8211; I hope it&#8217;s a huge success.</p>
<p><img src="http://alexking.org/wp-content/uploads/2012/05/wpappstore-themes-510x315.jpg" alt="Crowd Favorite Themes" title="Crowd Favorite Themes" width="510" height="315" class="alignnone size-medium-img wp-image-13465" /></p>
<p>We&#8217;ve put our <a href="http://crowdfavorite.com/wordpress/themes/favepersonal/">FavePersonal</a> and <a href="http://crowdfavorite.com/wordpress/themes/favebusiness/">FaveBusiness</a> themes along with our <a href="http://crowdfavorite.com/wordpress/ramp/">RAMP</a> plugin into the app store. If you&#8217;d like to check it out, download the plugin and start browsing. There is a great group of companies represented already and I&#8217;m sure we&#8217;ll see more additions as the project grows.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/05/15/wp-app-store/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Colorado Flag Web Geek T-shirts</title>
		<link>http://alexking.org/blog/2012/05/14/colorado-flag-web-geek-t-shirts</link>
		<comments>http://alexking.org/blog/2012/05/14/colorado-flag-web-geek-t-shirts#comments</comments>
		<pubDate>Mon, 14 May 2012 16:21:48 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[Fun / Humor]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=13437</guid>
		<description><![CDATA[<p>
<a href='http://alexking.org/blog/2012/05/14/colorado-flag-web-geek-t-shirts/004-20120509-img_0733' title='It&#039;s thoughtful'><img width="160" height="120" src="http://alexking.org/wp-content/uploads/2012/05/004-20120509-IMG_0733-160x120.jpg" class="attachment-thumb-img" alt="It&#039;s thoughtful" title="It&#039;s thoughtful" /></a>
<a href='http://alexking.org/blog/2012/05/14/colorado-flag-web-geek-t-shirts/001-20120509-img_0728' title='It&#039;s elegant'><img width="160" height="120" src="http://alexking.org/wp-content/uploads/2012/05/001-20120509-IMG_0728-160x120.jpg" class="attachment-thumb-img" alt="It&#039;s elegant" title="It&#039;s elegant" /></a>
<a href='http://alexking.org/blog/2012/05/14/colorado-flag-web-geek-t-shirts/002-20120509-img_0730' title='It&#039;s exciting'><img width="160" height="120" src="http://alexking.org/wp-content/uploads/2012/05/002-20120509-IMG_0730-160x120.jpg" class="attachment-thumb-img" alt="It&#039;s exciting" title="It&#039;s exciting" /></a>
<a href='http://alexking.org/blog/2012/05/14/colorado-flag-web-geek-t-shirts/003-20120509-img_0732' title='IT&#039;S THIS MUCH FUN!'><img width="160" height="120" src="http://alexking.org/wp-content/uploads/2012/05/003-20120509-IMG_0732-160x120.jpg" class="attachment-thumb-img" alt="IT&#039;S THIS MUCH FUN!" title="IT&#039;S THIS MUCH FUN!" /></a>
<a href='http://alexking.org/blog/2012/05/14/colorado-flag-web-geek-t-shirts/005-20120509-img_0737' title='Yes, the code works.'><img width="160" height="120" src="http://alexking.org/wp-content/uploads/2012/05/005-20120509-IMG_0737-160x120.jpg" class="attachment-thumb-img" alt="Yes, the code works." title="Yes, the code works." /></a>
</p>
Fellow Colorado web geeks, I made you a t-shirt. The code that comprises the white stripe is a full, working HTML page with canvas code that draws the Colorado flag. Yes, it&#8217;s very meta. Want one? We&#8217;re taking orders for the rest of the month, then we&#8217;ll place an order to get them all printed&#8230;]]></description>
			<content:encoded><![CDATA[<p>
<a href='http://alexking.org/blog/2012/05/14/colorado-flag-web-geek-t-shirts/004-20120509-img_0733' title='It&#039;s thoughtful'><img width="160" height="120" src="http://alexking.org/wp-content/uploads/2012/05/004-20120509-IMG_0733-160x120.jpg" class="attachment-thumb-img" alt="It&#039;s thoughtful" title="It&#039;s thoughtful" /></a>
<a href='http://alexking.org/blog/2012/05/14/colorado-flag-web-geek-t-shirts/001-20120509-img_0728' title='It&#039;s elegant'><img width="160" height="120" src="http://alexking.org/wp-content/uploads/2012/05/001-20120509-IMG_0728-160x120.jpg" class="attachment-thumb-img" alt="It&#039;s elegant" title="It&#039;s elegant" /></a>
<a href='http://alexking.org/blog/2012/05/14/colorado-flag-web-geek-t-shirts/002-20120509-img_0730' title='It&#039;s exciting'><img width="160" height="120" src="http://alexking.org/wp-content/uploads/2012/05/002-20120509-IMG_0730-160x120.jpg" class="attachment-thumb-img" alt="It&#039;s exciting" title="It&#039;s exciting" /></a>
<a href='http://alexking.org/blog/2012/05/14/colorado-flag-web-geek-t-shirts/003-20120509-img_0732' title='IT&#039;S THIS MUCH FUN!'><img width="160" height="120" src="http://alexking.org/wp-content/uploads/2012/05/003-20120509-IMG_0732-160x120.jpg" class="attachment-thumb-img" alt="IT&#039;S THIS MUCH FUN!" title="IT&#039;S THIS MUCH FUN!" /></a>
<a href='http://alexking.org/blog/2012/05/14/colorado-flag-web-geek-t-shirts/005-20120509-img_0737' title='Yes, the code works.'><img width="160" height="120" src="http://alexking.org/wp-content/uploads/2012/05/005-20120509-IMG_0737-160x120.jpg" class="attachment-thumb-img" alt="Yes, the code works." title="Yes, the code works." /></a>
</p>
<p>Fellow Colorado web geeks, I made you a t-shirt.</p>
<p>The code that comprises the white stripe is a <a href="https://github.com/alexkingorg/canvas-co-flag">full, working HTML page</a> with canvas code that draws the Colorado flag. Yes, it&#8217;s very meta.</p>
<p>Want one? We&#8217;re <a href="http://crowdfavorite.com/tshirts/">taking orders</a> for the rest of the month, then we&#8217;ll place an order to get them all printed up. These are priced just above cost ($15, plus $5 if you need it shipped) &#8211; we&#8217;re not trying to make money on them. I initially ordered a batch for <a href="http://crowdfavorite.com/">my team</a>, but thought others might like it as well. If <a href="http://twitter.com/jbregar/status/200814135934582784">early response</a> is any indication, I hope to see a few of these around town this summer.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/05/14/colorado-flag-web-geek-t-shirts/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>GameTonight (for 16 Metros)</title>
		<link>http://alexking.org/blog/2012/05/01/gametonight-for-15-metros</link>
		<comments>http://alexking.org/blog/2012/05/01/gametonight-for-15-metros#comments</comments>
		<pubDate>Tue, 01 May 2012 21:03:05 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Sports]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=13376</guid>
		<description><![CDATA[It&#8217;s baseball season again, and in downtown Denver that means traffic and bad cell phone connections. We can&#8217;t do much about the latter, but be sure to use GameTonight for warning about potential traffic concerns. GameTonight is a single-serving site that answers &#8220;is there a game tonight?&#8221; and tracks the major sports teams in 1516&#8230;]]></description>
			<content:encoded><![CDATA[<p><img src="http://alexking.org/wp-content/uploads/2012/05/001-20120501-IMG_0075-510x380.jpg" alt="GameTonight" width="510" height="380" class="aligncenter size-medium-img wp-image-13377" /></p>
<p>It&#8217;s baseball season again, and in downtown Denver that means traffic and bad cell phone connections. We can&#8217;t do much about the latter, but be sure to use <a href="http://gametonight.in/denver">GameTonight</a> for warning about potential traffic concerns.</p>
<p>GameTonight is a single-serving site that answers &#8220;is there a game tonight?&#8221; and tracks the major sports teams in <del datetime="2012-05-01T22:35:38+00:00">15</del><ins datetime="2012-05-01T22:35:38+00:00">16</ins> metro areas:</p>
<ul>
<li><a href="http://gametonight.in/atlanta">Atlanta</a></li>
<li><a href="http://gametonight.in/bayarea">Bay Area</a></li>
<li><a href="http://gametonight.in/boston">Boston</a></li>
<li><a href="http://gametonight.in/chicago">Chicago</a></li>
<li><a href="http://gametonight.in/cincinnati">Cincinnati</a></li>
<li><a href="http://gametonight.in/dallas">Dallas</a></li>
<li><a href="http://gametonight.in/denver">Denver</a></li>
<li><a href="http://gametonight.in/losangeles">Los Angeles</a></li>
<li><a href="http://gametonight.in/minneapolis">Minneapolis</a></li>
<li><a href="http://gametonight.in/oakland">Oakland</a></li>
<li><a href="http://gametonight.in/philadelphia">Philadelphia</a></li>
<li><a href="http://gametonight.in/phoenix">Phoenix</a></li>
<li><a href="http://gametonight.in/sanfrancisco">San Francisco</a></li>
<li><a href="http://gametonight.in/sanjose">San Jose</a></li>
<li><a href="http://gametonight.in/seattle">Seattle</a></li>
<li><a href="http://gametonight.in/washington">Washington DC</a></li>
</ul>
<p>If you live in one of these areas, check it out.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/05/01/gametonight-for-15-metros/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>RAMP v1.0.4 Released</title>
		<link>http://alexking.org/blog/2012/04/30/ramp-v1-0-4-released</link>
		<comments>http://alexking.org/blog/2012/04/30/ramp-v1-0-4-released#comments</comments>
		<pubDate>Tue, 01 May 2012 00:19:08 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=13366</guid>
		<description><![CDATA[We pushed out an update to RAMP today, our WordPress plugin that makes it easy for you to stage content for review in one environment, then push it to your production server once it&#8217;s ready to go. As the version number indicates, this release is primarily to deliver a few bug fixes. Here is a&#8230;]]></description>
			<content:encoded><![CDATA[<p>We pushed out an update to <a href="http://crowdfavorite.com/wordpress/ramp/">RAMP</a> today, our WordPress plugin that makes it easy for you to stage content for review in one environment, then push it to your production server once it&#8217;s ready to go.</p>
<p>As the version number indicates, this release is primarily to deliver a few bug fixes. Here is a quick overview of the significant changes:</p>
<ul>
<li>improved compatibility with changes introduced in WordPress 3.3</li>
<li>properly handle entirely numeric category and tags names</li>
<li>improved support for hierarchical taxonomies</li>
<li>misc. cleanup of PHP notices (when the WordPress DEBUG setting is enabled)</li>
<li>minimum required WordPress version is now 3.3</li>
</ul>
<p>For a little more detail about just what this product is all about, check out my <a href="http://alexking.org/blog/2011/07/20/ramp-content-deploy-wordpress">original post announcing RAMP</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/04/30/ramp-v1-0-4-released/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Streamline FavePersonal with a Child Theme</title>
		<link>http://alexking.org/blog/2012/03/28/streamline-favepersonal-with-a-child-theme</link>
		<comments>http://alexking.org/blog/2012/03/28/streamline-favepersonal-with-a-child-theme#comments</comments>
		<pubDate>Wed, 28 Mar 2012 21:27:22 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=13069</guid>
		<description><![CDATA[We&#8217;ve just released version 1.0.1 of FavePersonal, which has a few minor updates. There&#8217;s one in particular that I think will be particularly useful: we&#8217;ve added a link to download a the style.css file you need to create a child theme (with your currently selected colors) from the Theme Settings page in FavePersonal. While I&#8217;m&#8230;]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve just released version 1.0.1 of <a href="http://crowdfavorite.com/wordpress/themes/favepersonal/">FavePersonal</a>, which has a few minor updates. There&#8217;s one in particular that I think will be particularly useful: we&#8217;ve added a link to download a the style.css file you need to create a child theme (with your currently selected colors) from the Theme Settings page in FavePersonal.</p>
<p>While I&#8217;m mainly using the &#8220;out of the box&#8221; features of FavePersonal, I have applied a number of customizations to this site. A <a href="http://codex.wordpress.org/Child_Themes">child theme</a> is a great way to customize a theme and still be able to upgrade without losing your changes. For the customizations I&#8217;ll be sharing about FavePersonal, we need a very simple child theme &#8211; just a <code>style.css</code> file and a <code>functions.php</code> file.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup></p>
<p>One of the things I&#8217;m using my child theme for is to streamline the HTML I deliver for my pages. I haven&#8217;t changed the colors for this site in nearly 10 years, so it&#8217;s safe to say I&#8217;m not planning to tinker with them much going forward. Since I don&#8217;t need the flexibility of being able to swap out the <a href="http://alexking.org/blog/2012/03/23/favepersonal-colors">colors</a>, I moved the CSS rules for the colors out of the HTML and into my child theme.</p>
<p>The first thing you&#8217;ll want to do is download the <code>style.css</code> file from your Theme Settings page. (Don&#8217;t have FavePersonal yet? Check out the <a href="http://demo.crowdfavorite.com/favepersonal/">online demo</a>.) This gives us our colors, so now we just need to remove the CSS from the HTML.</p>
<p>In the <code>functions.php</code> file in your child theme, you&#8217;ll want to add the following code to remove the output of the CSS rules from being added to your HTML.</p>
<p><script src="https://gist.github.com/2210020.js"></script><noscript><p>View the code on <a href="https://gist.github.com/2210020">Gist</a>.</p></noscript></p>
<p>Now you can activate your child theme and your site should look just the same, but load a touch faster (and give you a nice place to make future customizations).</p>
<hr />
<p>Another little change I made in my child theme is to add actual underlines (gasp) to links. I don&#8217;t think I&#8217;ve met a designer in the last five years who still uses underlines in their designs, but I&#8217;m  <img src="http://alexking.org/wp-content/themes/alexking.org-v3/smilies/ak_scare1.gif" alt=":scare:" class="wp-smiley" />  old school  <img src="http://alexking.org/wp-content/themes/alexking.org-v3/smilies/ak_scare2.gif" alt=":/scare:" class="wp-smiley" /> , I like underlines on my links. I think it helps them stand out better. However I do agree that underlines clutter up areas where things are expected to be clickable (navigation menus, lists, etc.), so I&#8217;m just adding the underlines to links in the content area of the site.</p>
<p>Want to underline the links in your FavePersonal site as well? Grab this CSS snippet and paste it into the <code>style.css</code> for your child theme.</p>
<p><script src="https://gist.github.com/2208465.js"></script><noscript><p>View the code on <a href="https://gist.github.com/2208465">Gist</a>.</p></noscript></p>
<p>And there you go &#8211; a few simple customizations for your FavePersonal child theme.</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">
FavePersonal customers, see <a href="http://crowdfavorite.com/wordpress/themes/favepersonal/docs/customization/creating-a-child-theme/">Creating a Child Theme</a> &#8211; we&#8217;ll be continually expanding the customization section of our documentation.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/03/28/streamline-favepersonal-with-a-child-theme/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>FavePersonal: Colors</title>
		<link>http://alexking.org/blog/2012/03/23/favepersonal-colors</link>
		<comments>http://alexking.org/blog/2012/03/23/favepersonal-colors#comments</comments>
		<pubDate>Fri, 23 Mar 2012 13:58:36 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=12962</guid>
		<description><![CDATA[One of the most fun features of FavePersonal is experimenting with different color palettes. We&#8217;ve made it easy to experiment with different colors and find a set that makes your site feel like it&#8217;s your own. No need to fiddle through dozens of color pickers, you can choose from full color palettes, preview them, and&#8230;]]></description>
			<content:encoded><![CDATA[<p>One of the most fun features of <a href="http://crowdfavorite.com/wordpress/themes/favepersonal/">FavePersonal</a> is experimenting with different color palettes.</p>
<p><iframe width="510" height="287" src="http://www.youtube.com/embed/gGRGfY-6jos?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>We&#8217;ve made it easy to experiment with different colors and find a set that makes your site feel like it&#8217;s your own. No need to fiddle through dozens of color pickers, you can choose from full color palettes, preview them, and instantly apply them to your site.</p>
<p>You can browse through existing color combinations to find some initial inspiration. Use the tabs at the top (and the pagination links at the bottom) to navigate through the most popular, highest rated and newest palettes, or just look at a random set. Not seeing anything that grabs you? Try a search. For example, &#8220;desert rose&#8221; will bring back just what you might expect.</p>
<p><img src="http://alexking.org/wp-content/uploads/2012/03/Screen-Shot-2012-03-23-at-7.04.51-AM-510x480.png" alt="FavePersonal Color Settings" title="FavePersonal Color Settings" width="510" height="480" class="aligncenter size-medium-img wp-image-13010" /></p>
<p>Whenever you see a palette you think looks interesting, just click the Preview button to see how it might look applied to FavePersonal. If you like what you see, you can Select it to move that palette to the selected colors area at the top of the screen. From there, just hit Save Changes, and the color palette will be applied to your site.</p>
<p>But maybe you&#8217;ve found a color palette that is <em>almost</em> right, but you want to tweak it a little bit. No problem. Once the palette is selected (shown at the top of the colors screen) you can customize it however you like.</p>
<p>The first thing you may want to experiment with is how the colors are applied to different areas of the FavePersonal theme. FavePersonal takes the color from each of the five positions and puts it into a specific areas in the site. This is done in a way that should provide an appropriate amount of contrast between different elements on the site (but you&#8217;ll see that some themes work better than others). By clicking and dragging on the colors to re-order them, you can have them applied to different areas of your site. Click the Preview button to see how things look after moving them around.</p>
<p>When you have the colors applied to the areas of the site in a way that you like, you might want to apply a few tweaks (or maybe you have an explicit color scheme you want to enter). No problem. Click on each of the colors to reveal a full color picker where you can make minor adjustments (I want a darker or lighter share of blue here) or just choose another color altogether. Then click Preview to get an idea how it might look, and Save Changes to apply it to your site.</p>
<p>Have you come up with an original color combination that you love? Add it to <a href="http://kuler.adobe.com/">Adobe Kuler</a> and you&#8217;ll be able to re-apply it to your site easily by using the search feature (you can search for your username or the name of your palette).</p>
<p>I think we&#8217;ve succeeded in providing a good way for folks to choose good looking color schemes without &#8220;needing to be a designer&#8221;, while also providing the fine grain control that other folks (like me) want for their site.</p>
<p>While we were creating FavePersonal it was fun to see our team experimenting with the Colors feature and really getting sucked in to it &#8211; it&#8217;s a great way to <del>lose</del> spend a few hours.</p>
<p>Don&#8217;t take my word for it though, go try it out for yourself with our <a href="http://demo.crowdfavorite.com/favepersonal/">online demo</a> (click the Theme Admin button to log in).</p>
<hr />
<p>I think it was two or three years ago that I first had the idea for using color palettes with a theme in this way. I was pretty sure it would work, but hadn&#8217;t really seen it done in the manner I was imagining. I started doing some prototyping and ran into a snag.</p>
<p>In order to apply a color palette to a design with (generally) positive results, you need to be able to reasonably predict the colors that will have contrast between them. When looking at color palettes from a number of sources, I found that they came through without any particular ordering of the colors.</p>
<p>Step one became coming up with an algorithm that would work to get the colors sorted in a reasonable fashion. This is not a trivial problem, but interestingly the more complex we attempted to make the solution, the worse things got. Eventually, after running a few different approaches against a test set of color palettes, the most simple and naive approach seemed to yield the best results.</p>
<p>Basically I took the numeric value of the first digit of the RGB values from the hex color, add them together to get a total numeric value for each color, then sort the colors by that value.</p>
<p><script src="https://gist.github.com/2158428.js"></script><noscript><p>View the code on <a href="https://gist.github.com/2158428">Gist</a>.</p></noscript></p>
<p>I think this could be refined a little further, perhaps adding a slight bias towards blue or green over red in order to better handle cases where you might prefer certain colors that are close in &#8220;brightness&#8221; to be considered &#8220;darker&#8221; than others.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> For FavePersonal I decided that it was better to handle this by allowing people to drag and drop to re-arrange the colors in the palette instead.</p>
<p>We&#8217;ve released the <a href="https://github.com/crowdfavorite/wp-colors">colors feature we created for FavePersonal on Github</a>. It&#8217;s a designer/developer tool as it&#8217;s not something that works as a stand-alone plugin, but it works quite nicely when integrated as a feature of a theme.</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">
Enhancements welcome, fork away!&#160;<a href="#fnref:1" rev="footnote">&#8617;</a>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/03/23/favepersonal-colors/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Announcing FavePersonal</title>
		<link>http://alexking.org/blog/2012/03/21/announcing-favepersonal</link>
		<comments>http://alexking.org/blog/2012/03/21/announcing-favepersonal#comments</comments>
		<pubDate>Wed, 21 Mar 2012 16:29:02 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=12916</guid>
		<description><![CDATA[I&#8217;m very proud to announce the launch of FavePersonal; a WordPress theme designed for personal websites. I have been using (and building and testing) FavePersonal on this site since August of last year and I am very pleased with what we&#8217;ve created. The features for FavePersonal were driven by my goals for version three of&#8230;]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m very proud to announce the launch of <a href="http://crowdfavorite.com/wordpress/themes/favepersonal/">FavePersonal</a>; a WordPress theme designed for personal websites. I have been using (and building and testing) FavePersonal on this site since August of last year and I am very pleased with what we&#8217;ve created.</p>
<p><iframe width="510" height="287" src="http://www.youtube.com/embed/NDA4UJgeWGo?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>The features for FavePersonal were driven by my goals for version three of this site. I wanted the site to be personal, be a great showcase for my content and to integrate with my other social interactions online.</p>
<h3>Personal</h3>
<p>One of the features I know people will enjoy playing with is the Colors feature. Instead of fiddling with lots of different color pickers, you can select from thousands of existing color palettes (via Adobe Kuler integration) and instantly preview and apply the scheme to your site.</p>
<p>The header options and bio widget features were created to help tell the &#8220;this is who I am, and what this site is&#8221; story. Most visitors arrive on an internal site page via search engine or direct link. These features serve to provide some context about both you, and your site.</p>
<h3>All Kinds of Post Content</h3>
<p>With FavePersonal we have integrated our <a href="http://alexking.org/blog/2011/10/25/wordpress-post-formats-admin-ui">post formats admin UI</a> functionality to make it easy to post photos, galleries, videos, etc. Each of these types of content is elegantly managed and delivered, from the back-end admin interface all the way through to customized layouts appropriate for each type of content, and formatted elegantly for mobile devices (even extending to your RSS feeds).</p>
<p>See some examples on this site:</p>
<ul>
<li><a href="http://alexking.org/blog/type/status">Status posts</a></li>
<li><a href="http://alexking.org/blog/type/link">Link posts</a></li>
<li><a href="http://alexking.org/blog/type/image">Photo posts</a></li>
<li><a href="http://alexking.org/blog/type/gallery">Gallery posts</a> (be sure to check out a gallery post)</li>
<li><a href="http://alexking.org/blog/type/video">Video posts</a></li>
</ul>
<h3>Social</h3>
<p>If my site is going to represent me on the web, it&#8217;s not telling a complete story if it ignores my participation on other social networks. FavePersonal tightly integrates with (and includes) the <a href="http://wordpress.org/extend/plugins/social">Social plugin</a> to create a two way integration between your website, Twitter and Facebook. You can post status updates on your site then pass them on to your Twitter and Facebook accounts. Social will bring retweets, likes and reactions from those sites back to your site as comments.</p>
<p>Additionally, your visitors can log in with their social profiles when they comment directly on your site.</p>
<h3>Mobile-Friendly</h3>
<p>FavePersonal was designed from the ground up to be <a href="http://en.wikipedia.org/wiki/Responsive_Web_Design">responsive</a>. Not only does it look great on your computer, but also on your phone and tablet device.</p>
<p>Are you on a mobile browser now? Check out the <a href="http://demo.crowdfavorite.com/favepersonal/">online demo</a> and see how it works. Be sure to rotate and see how it adapts to portait and landscape orientations.</p>
<p>Of course it is optimized for fast page loads and also features clean HTML5 markup that is both human and machine (SEO) friendly.</p>
<hr />
<p>This is just a very brief sampling of what we&#8217;ve put into FavePersonal. We&#8217;ve been working on this theme for over a year.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> We&#8217;ve given every feature a ton of thought, debate, tweaking, building, throwing away, re-building and testing to get things the way we want them. I&#8217;ve been told I can be a bit  <img src="http://alexking.org/wp-content/themes/alexking.org-v3/smilies/ak_scare1.gif" alt=":scare:" class="wp-smiley" />  particular  <img src="http://alexking.org/wp-content/themes/alexking.org-v3/smilies/ak_scare2.gif" alt=":/scare:" class="wp-smiley" /> , which is a kind way of saying I&#8217;m a pain in the arse and we&#8217;ll re-design things as many times as it takes to get it right. My team has been very patient with me, coming up with great ideas and solutions and building them in elegant ways. We&#8217;ve built deep features on solid foundations that won&#8217;t break or surprise you as you lean on them and come to rely on them.</p>
<p>I&#8217;m going to be following up with a series of posts that go into more detail about the various features of FavePersonal, discussing some of the design decisions we made, and sharing customizations I&#8217;ve put into my own child theme. I&#8217;ll also point to some of the code we&#8217;ve released on our <a href="https://github.com/crowdfavorite">GitHub account</a> for anyone who would be interested. I&#8217;ve got a pretty good sized list. <img src='http://alexking.org/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>When I started using FavePersonal in August of last year (2011) it became the third version of this site since it launched in 2002 (check out original version from <a href="http://web.archive.org/web/20021109044131/http://www.alexking.org/">2002</a> and the <a href="http://alexking.org/blog/2006/11/02/building-v2-part1">previous version</a> from <a href="http://web.archive.org/web/20061230095513/http://alexking.org/">2006</a>). With each iteration I always received a number of &#8220;is your theme available?&#8221; inquiries. In the past, my themes have always been built with too many content assumptions, etc. for me to effectively share it, but I made sure we didn&#8217;t do that with FavePersonal.</p>
<p>Check out the <a href="http://crowdfavorite.com/wordpress/themes/favepersonal/">FavePersonal page</a> on the <a href="http://crowdfavorite.com">Crowd Favorite</a> website to see our feature videos, try out online demo and purchase (our new store<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> supports PayPal as well as credit cards).</p>
<p>I hope you like it as much as I do!</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">
Creating a robust WordPress theme is <a href="https://wpdevel.wordpress.com/2012/03/20/as-twenty-twelve-is-punted-to-3-5-it/">not a small undertaking</a>.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a>
</li>
<li id="fn:2">
Powered by <a href="http://www.woothemes.com/woocommerce/">WooCommerce</a>.&#160;<a href="#fnref:2" rev="footnote">&#8617;</a>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/03/21/announcing-favepersonal/feed</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>Carrington Themes on GitHub</title>
		<link>http://alexking.org/blog/2012/03/06/carrington-themes-on-github</link>
		<comments>http://alexking.org/blog/2012/03/06/carrington-themes-on-github#comments</comments>
		<pubDate>Wed, 07 Mar 2012 01:56:50 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=12784</guid>
		<description><![CDATA[As part of our move to Git, we now host our WordPress code on GitHub. Carrington Core was moved over a while ago and I finally finished migrating the rest of the themes from their old home on Google Code. The themes are being renamed: Carrington Blog is becoming FaveBlog Carrington Text is becoming FaveText&#8230;]]></description>
			<content:encoded><![CDATA[<p>As part of our <a href="http://alexking.org/blog/2012/02/14/svn-to-git-migration">move to Git</a>, we now host our WordPress code on GitHub. <a href="https://github.com/crowdfavorite/wp-carrington-core">Carrington Core</a> was moved over a while ago and I finally finished migrating the rest of the themes from their <a href="http://code.google.com/p/carrington">old home on Google Code</a>.</p>
<p>The themes are being renamed:</p>
<ul>
<li>Carrington Blog is becoming <a href="https://github.com/crowdfavorite/wp-faveblog">FaveBlog</a></li>
<li>Carrington Text is becoming <a href="https://github.com/crowdfavorite/wp-favetext">FaveText</a></li>
<li>Carrington Mobile is becoming, you guessed it, <a href="https://github.com/crowdfavorite/wp-favemobile">FaveMobile</a></li>
</ul>
<p>We caused a bunch of confusion around the name &#8220;Carrington&#8221; when we attached it to everything. I&#8217;m hoping that removing it from the themes and having the &#8220;Carrington&#8221; name reserved for our underlying theme features (<a href="http://crowdfavorite.com/wordpress/carrington/">Carrington Core</a> and <a href="http://crowdfavorite.com/wordpress/carrington-build/">Carrington Build</a>) will help make it more clear that Carrington refers to our collection of developer and designer tools that make it easier to create great websites with WordPress. We&#8217;ve also initiated an internal project to create better designer/developer documentation for Carrington Core.</p>
<p>Updating the themes to the latest and greatest WordPress features and best practices is on the list for our intern projects and should be getting some attention in the immediate future. I&#8217;m optimistic we&#8217;ll have updated versions of these themes to release soon. I&#8217;m proud of our dedication to releasing code to the community, but once you hit a certain volume it becomes a real challenge to keep everything up to date.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/03/06/carrington-themes-on-github/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Git Submodules are not SVN Externals</title>
		<link>http://alexking.org/blog/2012/03/05/git-submodules-vs-svn-externals</link>
		<comments>http://alexking.org/blog/2012/03/05/git-submodules-vs-svn-externals#comments</comments>
		<pubDate>Mon, 05 Mar 2012 17:36:52 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=5672</guid>
		<description><![CDATA[One of the biggest hurdles I had to get past in order to use Git efficiently was getting my head around the differences between SVN&#8217;s externals and Git&#8217;s submodules. Since our migration from SVN to Git, I&#8217;ve seen other folks on our team working through the same hiccups I had initially. I thought the following&#8230;]]></description>
			<content:encoded><![CDATA[<p>One of the biggest hurdles I had to get past in order to use Git efficiently was getting my head around the differences between SVN&#8217;s externals and Git&#8217;s submodules. Since our <a href="http://alexking.org/blog/2012/02/14/svn-to-git-migration">migration from SVN to Git</a>, I&#8217;ve seen other folks on our team working through the same hiccups I had initially. I thought the following notes might be useful to other folks making the leap as well.</p>
<p>At <a href="http://crowdfavorite.com">Crowd Favorite</a> we write modular code (for example: lots of lean, targeted WordPress plugins instead of few complex plugins) for a number of reasons:</p>
<ul>
<li>it enables code reuse (DRY)</li>
<li>smaller bits of code are easier to maintain, update, debug, etc.</li>
<li>it&#8217;s easier to test smaller sets of features/functions</li>
</ul>
<p>To support this approach we previously made extensive use of SVN externals in our projects. Often times active development would be happening on a specific project and within one or more of the externals within the project (to support a new feature, etc.).</p>
<p>With SVN externals, the included externals are automatically updated to the latest version on every update (unless you &#8211;exclude-submodules). If you follow a good trunk/branches/tags model within your externals, you can get away with this without too much trouble; you primarily point the external to the latest stable tag, but switch the pointer to trunk when active development is needed.</p>
<p>Like I said, it&#8217;s something you can get away with. That doesn&#8217;t mean there aren&#8217;t some challenges there. Primarily you can run into multiple people updating or needing to work on an external at the same time (and SVN doesn&#8217;t well support a branch-driven development model). You might be pulling in changes on each &#8220;svn up&#8221; that you don&#8217;t want.</p>
<p>With Git&#8217;s submodules, you can still bring in another codebase into your project but the mechanics of it are a bit different.</p>
<h3>The submodule will be the entire Git repo</h3>
<p>With SVN you can make your external point to a subdirectory of a project (this is how you&#8217;d choose trunk vs tags/1.0.2, etc.), with Git the submodule will always be the entire project. This means you&#8217;ll want to keep your code repositories lean and mean &#8211; you don&#8217;t want deep URL paths or a bunch of historical design documents and other things in there that would be considered cruft when the repo is used as a library for another project.</p>
<p>Because of this, we&#8217;re often maintaining two Git repos for each project. One has just the code, README, CHANGELOG, etc. while the other includes design docs, mockups, etc.</p>
<h3>Submodules require extra steps when cloning</h3>
<p>With a standard SVN checkout, all of your externals get populated and are ready to go right away. With Git submodules, an additional step is required after a git clone. From inside the newly cloned repo (at the top level), you have to initialize and update the submodules:</p>
<p><code>git submodule update --init --recursive</code></p>
<p>This step will get all if your submodules setup, pointing to the proper refs, etc.</p>
<p>UPDATE: or clone with <code>--recursive</code>. (thanks <a href="http://alexking.org/blog/2012/03/05/git-submodules-vs-svn-externals#comment-185935">Shawn</a>)</p>
<h3>Submodules require extra steps when committing</h3>
<p>After initialization, your submodule will initially be in a &#8220;detached head&#8221; state. This means that even though the submodule is pointing to the correct ref/code revision, but it isn&#8217;t setup to update from or commit to a specific head (branch). If you&#8217;re not used to this (or are used to how SVN externals work), it&#8217;s easy to accidentally start editing code in the submodule code while you&#8217;re on a detached head. Recovering from this isn&#8217;t particularly hard (I&#8217;ll do a follow up post with details on this), it&#8217;s just another step in learning how Git wants you to work with submodules.</p>
<p>When I was doing active development on a project that had SVN externals, I&#8217;d often end up making changes to the externals as well as the current project. When I did this, I&#8217;d need to commit to the external separately from the parent project. Git submodules work in a somewhat similar fashion in that you need to commit the changes to the submodule first; but there are also some additional steps involved.</p>
<p>Like SVN externals, you need to <code>cd</code> into the submodule to commit any changes you&#8217;ve made. When you&#8217;ve committed your changes to the submodule and have it in the state you want for its inclusion in the parent project, you then need to <code>cd</code> back up to the parent project and commit the &#8220;change&#8221; of the state of the submodule. Make sense? Basically, you commit to the Git submodule separately just like you used to commit to your SVN external. The additional step is checking out a tag, branch or specific revision that you want the submodule to &#8220;stick&#8221; at; then committing that change to the parent repository.</p>
<h3>Submodules don&#8217;t update on their own</h3>
<p>Recapping the previous point: submodules are stuck to the revision/tag/branch they are set up on. You have to explicitly update them, then commit the &#8220;change&#8221; of having the submodule point to a different revision to the parent repository. This is useful for situations where multiple people are updating a project that is being used as a submodule by multiple parent projects. Changes to the submodule won&#8217;t automatically be pulled into a parent project that doesn&#8217;t expect it (they have to be explicitly pulled in, committed, etc.).</p>
<p>Once you&#8217;re out of active development, I consider it a best practice to make sure your submodules are pointed at a tag for the purposes of tagging the parent project. That way when bugs or issues are found  they are logged against the proper version of the package in question. When questions about a submodule version arise (does it include feature X?), you can answer them pretty easily by checking the CHANGELOG.</p>
<hr />
<p>Hopefully this helps you get your head around the differences between SVN externals and Git submodules. Overall I like the implementation of Git submodules better now that I understand what they are trying to do. We&#8217;ve found that this development approach compliments the core extensibility features of WordPress very nicely. In fact, many of our plugins interoperate by implementing hooks and filters in the same manner WordPress core does.</p>
<p>Does building modular code (WordPress or for other PHP projects) sound like something you&#8217;d like to be doing more of? <a href="http://crowdfavorite.com/jobs/">We&#8217;re hiring</a>. As previously noted here, our <a href="http://alexking.org/blog/2012/02/07/new-crowd-favorite-careers-page">careers page is a little different</a>, and we believe in a <a href="http://alexking.org/blog/2012/02/21/work-life-balance">healthy work-life balance</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/03/05/git-submodules-vs-svn-externals/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Work-Life Balance (We&#8217;re Hiring)</title>
		<link>http://alexking.org/blog/2012/02/21/work-life-balance</link>
		<comments>http://alexking.org/blog/2012/02/21/work-life-balance#comments</comments>
		<pubDate>Tue, 21 Feb 2012 17:36:04 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=12561</guid>
		<description><![CDATA[It&#8217;s been very interesting to me to see how some folks are re-evaluating their work/life balance in the wake of reading Isaacson&#8217;s Steve Jobs biography (most famously, this story). I&#8217;ve been making some of the same evaluations over the last few years following the birth of my daughter. This isn&#8217;t a new thing for me.&#8230;]]></description>
			<content:encoded><![CDATA[<p><img src="http://alexking.org/wp-content/uploads/2012/02/002-20120217-IMG_1945-510x382.jpg" alt="View of Breckenridge from the Deck" width="510" height="382" class="alignnone size-medium-img wp-image-12666" /></p>
<p>It&#8217;s been very interesting to me to see how some folks are re-evaluating their work/life balance in the wake of reading Isaacson&#8217;s Steve Jobs biography (most famously, <a href="http://techcrunch.com/2012/02/07/jeff-atwood-bids-adieu-to-stack-exchange-for-the-best-reason-ever/">this story</a>). I&#8217;ve been making some of the same evaluations over the last few years following the <a href="http://alexking.org/blog/2009/04/18/my-daughter">birth of my daughter</a>.</p>
<p>This isn&#8217;t a new thing for me. I&#8217;ve always worked hard, often with long hours &#8211; mainly because I love building things. Finding a good balance that provides for both a rewarding work life and a rewarding home life isn&#8217;t easy.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup></p>
<p>Enabling this balance is something that&#8217;s been important to me in the Crowd Favorite team culture. I&#8217;ve been through the 80 hour week startup environment and seen how it burns out great people. I want an environment where people work hard and build great stuff, but are able to do so while maintaining balance. I want to keep my team engaged long-term, I don&#8217;t want to burn them out and use them up in the name of meeting some unreasonable schedule.</p>
<p>Saying you believe in a healthy work/life balance is one thing &#8211; lots of companies <em>say</em> they value it; for Crowd Favorite I&#8217;ve taken a pretty big step to back it up. As of last week, <strong>Crowd Favorite has a mountain retreat in Breckenridge</strong>.</p>
<p><img src="http://alexking.org/wp-content/uploads/2012/02/001-20120217-IMG_1944-510x382.jpg" alt="Crowd Favorite Mountain Retreat" width="510" height="382" class="alignnone size-medium-img wp-image-12665" /></p>
<p>Everyone is pretty excited about this. Each team member gets exclusive use of the place for one week a year (with their family, friends, etc.). When it&#8217;s not spoken for, anyone on the team can claim a bedroom and head up. I&#8217;m hoping that it will be an opportunity for the team to hang out together outside of the office (which, in turn, leads to working together better when in the office).</p>
<p>Not only does this reinforce that we&#8217;re a team that believes in a healthy work/life balance, but it also encourages everyone to get out and do something active. I&#8217;ve got a great team, and I&#8217;m really pleased to be able to provide this as a reward. Hopefully it will help with recruiting as well &#8211; did I mention <a href="http://crowdfavorite.com/jobs/">we&#8217;re hiring</a>?</p>
<p>The basic pitch? Work on great projects with a great team in beautiful Colorado. Use the latest and greatest technology and techniques. Work with and contribute to Open Source (particularly WordPress). All in a collaborative developer-centric environment and without the 60-80 hour work week you get with the typical &#8220;startup&#8221; environment.</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:1">
This is actually another reason for the move from the Bay Area to Denver &#8211; a slightly slower pace of life and more enjoying getting out and doing things. I never really set out to build a team, but when presented with the opportunity to work on interesting projects with great clients&#8230; growing the team has been the natural response.&#160;<a href="#fnref:1" rev="footnote">&#8617;</a>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/02/21/work-life-balance/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>SVN to Git Migration</title>
		<link>http://alexking.org/blog/2012/02/14/svn-to-git-migration</link>
		<comments>http://alexking.org/blog/2012/02/14/svn-to-git-migration#comments</comments>
		<pubDate>Tue, 14 Feb 2012 21:25:15 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=12499</guid>
		<description><![CDATA[A couple of weeks ago we shut down the Crowd Favorite office for a day and a half to do a migration from SVN to Git. This was not a small undertaking. We had nearly five years of code in a single SVN repository that was then broken out into literally hundreds of Git repositories.&#8230;]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks ago we shut down the <a href="http://crowdfavorite.com">Crowd Favorite</a> office for a day and a half to do a migration from SVN to Git. This was not a small undertaking. We had nearly five years of code in a single SVN repository that was then broken out into literally hundreds of Git repositories.</p>
<p>The main reason for the change is to be able to support a branch driven development workflow (using <a href="https://github.com/nvie/gitflow">Git Flow</a>). We were already using this for newer projects (including some of our Open Source WordPress plugins that <a href="https://github.com/crowdfavorite">we host on GitHub</a>), and we were seeing lots of areas where this approach would be a big improvement to our SVN workflows. We think it will especially pay dividends for our ongoing retainer clients.</p>
<p>With our ongoing clients we are commonly engaged in building new features and functionality while also needing to be able to make smaller changes (hotfixes) that are pushed up immediately. With Git it is easy for us to maintain development of more involved functionality in feature branches and still being able to push up quick changes as needed.</p>
<p>We&#8217;ve been following a modular development methodology for years, so we have a large number of libraries, plugins, etc. that are shared across various projects. Converting these from SVN externals to Git submodules was a good bit of busy work, but more importantly it required everyone to get comfortable with the difference between SVN externals and Git submodules. The biggest changes are that the submodules default to a detached head and don&#8217;t auto-update to the latest code in a branch. These are generally positives, but require changes to how you think about things. More on this in a future post.</p>
<p>We are using GitHub to host our Open Source projects, but we choose to host our own Git server for our private repositories. We are using <a href="https://github.com/sitaramc/gitolite">Gitolite</a> for repository management, <a href="http://www.xiphux.com/programming/gitphp/">GitPHP</a> to provide a hackable web interface and we&#8217;re planning to use <a href="http://code.google.com/p/gerrit/">Gerrit</a> for code reviews.</p>
<p>One of the other challenges was setting up a repository structure that we were happy with for our WordPress sites. We settled on the following:</p>
<p><code>/index.php</code><br />
<code>/local-config.php</code> (unversioned &#8211; has machine specific settings)<br />
<code>/wp-config.php</code> (define WP_CONTENT_DIR and WP_CONTENT_URL here)<br />
<code>/wp/</code> (WordPress core as a shallow Git submodule or SVN checkout)<br />
<code>/wp-content/</code> (plugins, themes, etc.)</p>
<p>This works quite nicely for simple and painless WordPress core upgrades, local development environments, and scriptable deployments. With a standardized structure, we&#8217;re also able to create scripts to automate the creation and data seeding of local development environments. We&#8217;re still working on the local dev set-up script, but I&#8217;m really excited about it. It should make it much easier for any developer on our team to quickly spin up a project and be able to contribute to it.</p>
<p>Does this sound like fun? <a href="http://crowdfavorite.com/jobs/">We&#8217;re hiring!</a> Come help us define and implement best practices that make developers effective; and work on interesting and challenging projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/02/14/svn-to-git-migration/feed</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>New Crowd Favorite Careers Page</title>
		<link>http://alexking.org/blog/2012/02/07/new-crowd-favorite-careers-page</link>
		<comments>http://alexking.org/blog/2012/02/07/new-crowd-favorite-careers-page#comments</comments>
		<pubDate>Tue, 07 Feb 2012 18:14:27 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Crowd Favorite]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://alexking.org/?p=12543</guid>
		<description><![CDATA[We have a shiny, new careers page on the Crowd Favorite website. For the first time, I think what we have up there pretty accurately reflects both what we&#8217;re looking for and what we offer. Our new approach is a little different than most jobs pages; it doesn&#8217;t list any jobs. I&#8217;ve always struggled to&#8230;]]></description>
			<content:encoded><![CDATA[<p>We have a shiny, new <a href="http://crowdfavorite.com/jobs/">careers page</a> on the Crowd Favorite website. For the first time, I think what we have up there pretty accurately reflects both what we&#8217;re looking for and what we offer. Our new approach is a little different than most jobs pages; it doesn&#8217;t list any jobs.</p>
<p><a href="http://crowdfavorite.com/jobs/"><img src="http://alexking.org/wp-content/uploads/2012/02/careers-page-510x377.png" alt="Crowd Favorite Careers Page" width="510" height="377" class="alignnone size-medium-img wp-image-12545" /></a></p>
<p>I&#8217;ve always struggled to write up the job descriptions we are hiring for. As I was trying to describe our current openings last week, I had a bit of an epiphany. The biggest reason I struggle to write up job descriptions is that we&#8217;re looking for certain kinds of <em>people</em>, not someone to fit into a specific <em>position</em>.</p>
<p>Instead of posting a bunch of individual designer or developer positions, we instead have a list of designer and developer skill sets. Everyone on our team has cross-functional skills and we consider this a real strength. For some reason it has taken until now for us to make our &#8220;hiring&#8221; page reflect this (instead of sticking to the more traditional listing of available positions).</p>
<p>At this time we&#8217;re looking for a few developers to join our team. Head on over and take a look. If you like what you see and think you&#8217;d be a good fit.</p>
<p>I&#8217;m very pleased that we have reached the point where we are hiring to work on internal product initiatives and to shore up our internal systems as well as to contribute to our WordPress consulting and custom development services.</p>
<p>Crowd Favorite is a little unique in that you have the opportunity to work on lots of diverse projects and cutting edge technology, but you don&#8217;t have the 60-80 hour work week that demanded by your typical startup.</p>
<p>If you care about building great things on the web &#8211; please be in touch.</p>
]]></content:encoded>
			<wfw:commentRss>http://alexking.org/blog/2012/02/07/new-crowd-favorite-careers-page/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 1.056 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-24 18:51:31 -->
<!-- Compression = gzip -->
