<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Technosailor.com» Aaron Brazell</title>
	
	<link>http://technosailor.com</link>
	<description>Business and Technology with Common Sense</description>
	<lastBuildDate>Thu, 24 May 2012 14:44:48 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-beta4-20939</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TechnosailorAaronBrazell" /><feedburner:info uri="technosailoraaronbrazell" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>TUTORIAL: Using WordPress’ Ajax API</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/GTe7xm55cz8/</link>
		<comments>http://technosailor.com/2012/02/08/tutorial-using-wordpress-ajax-api/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 17:46:35 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8543</guid>
		<description><![CDATA[WordPress has tons of APIs to do tons of things. It really does. One of the cool ones that I&#8217;ve been using a lot lately, has been around for a bit. It&#8217;s the Ajax API. Sure, you could write your own Ajaxy thing but why do that when WordPress lets you do it all very [...]]]></description>
			<content:encoded><![CDATA[<p>WordPress has tons of APIs to do tons of things. It really does. One of the cool ones that I&#8217;ve been using a lot lately, has been around for a bit. It&#8217;s the Ajax API. Sure, you could write your own Ajaxy thing but why do that when WordPress lets you do it all very simply.</p>
<p>This tutorial will show you how to replicate the functionality that is presented in the &#8220;Like&#8221; button at Facebook. It assumes that you have WordPress set to require users to be logged in to take such actions. It wouldn&#8217;t make much sense for someone to not be logged in for such functionality. Obviously, you could do something else with Ajax (polls? Loading new content?) that doesn&#8217;t have the same assumption, but in this case&#8230; we&#8217;re assuming a user is logged in and the <code class="codecolorer php default"><span class="php"><span style="color: #000088;">$current_user</span></span></code> global is set.</p>
<h2>Getting Started</h2>
<p>Let&#8217;s start with the basic PHP class (<a href="http://stackoverflow.com/questions/2285404/why-should-i-use-classes-rather-than-just-a-collection-of-functions">you do write good object-oriented code, right?</a>)</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">class</span> My_Like_Button <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><br />
<br />
<span style="color: #000088;">$my_like_button</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> My_Like_Button<span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>This code is just a basic skeleton that provides a constructor (the <code class="codecolorer php default"><span class="php">__construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> method, which I&#8217;ll use later. It also instantiates a new <code class="codecolorer php default"><span class="php">My_Like_Button</span></code> object and assigns it to the <code class="codecolorer text default"><span class="text">$my_like_button</span></code> variable for use in the global scope. Obviously, you can use whatever strikes your fancy for the class name or the global variable.</p>
<h2>Building the HTML for the Like Button</h2>
<p>Next, we need the basic HTML structure that will be used in our theme for the Like button. For the sake of simplicity, I&#8217;m not providing any CSS, but feel free to do as you wish. We need to add this as a new method in our class.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">function</span> like_button<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span>is_user_logged_in<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$current_user</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #000088;">$html</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'&lt;form action=&quot;&quot; method=&quot;post&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;hidden&quot; name=&quot;like_post_id&quot; id=&quot;like_post_id&quot; value=&quot;'</span> <span style="color: #339933;">.</span> get_the_ID<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span><span style="color: #0000ff;">'&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;hidden&quot; name=&quot;like_user_id&quot; id=&quot;like_user_id&quot; value=&quot;'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$current_user</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;button&quot; name=&quot;like_this_post&quot; id=&quot;like_this_post&quot; value=&quot;Like&quot; /&gt;<br />
&nbsp; &nbsp; &lt;/form&gt;'</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #000088;">$html</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>This form provides two hidden form fields using <code class="codecolorer php default"><span class="php">get_the_ID<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> and the <code class="codecolorer php default"><span class="php"><span style="color: #000088;">$current_user</span></span></code> object. Having done this (and after ensuring there is a logged in user), we can now drop this into our theme <em>in the Loop</em> as a template tag:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$my_like_button</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">like_button</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></div></td></tr></tbody></table></div>
<h2>Sending the Ajax Request with jQuery</h2>
<p>This is useless by itself. We need something to handle the Ajax. But before we get there, we need to understand how Ajax works within the WordPress context.</p>
<p><strong><em>All requests must go to <code class="codecolorer text default"><span class="text">wp-admin/admin-ajax.php</span></code>. Forget the confusion about why you would send a front-end Ajax request to the back-end. You just do.</em></strong></p>
<p>On the back-end, you&#8217;ll have to define functions that will hook into the Ajax API to let WordPress know how to handle the request. More on that in a minute. Let&#8217;s build some jQuery to send this to <code class="codecolorer text default"><span class="text">admin-ajax.php</span></code>.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">function js()<br />
{<br />
&nbsp; &nbsp; wp_enqueue_script( 'jquery' );<br />
&nbsp; &nbsp; wp_print_scripts();<br />
&nbsp; &nbsp; ?&gt;<br />
&nbsp; &nbsp; &lt;script&gt;<br />
&nbsp; &nbsp; jQuery(document).ready(function(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; jQuery('#like_this_post').click(function(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var like_post_id = jQuery('#like_post_id').val();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var like_user_id = jQuery('#like_user_id').val();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; jQuery.post(<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> get_option<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'siteurl'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/wp-admin/admin-ajax.php'</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; action&nbsp; &nbsp; &nbsp; : 'register_like',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; user_id &nbsp; &nbsp; : like_user_id,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; post_id &nbsp; &nbsp; : like_post_id,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _wpnonce&nbsp; &nbsp; : '<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> wp_create_nonce<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'nonce-register_like'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function(response) {&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert(response);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; });<br />
&nbsp; &nbsp; });<br />
&nbsp; &nbsp; &lt;/script&gt;<br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>This is just a PHP function that we can use to throw some jQuery (using the <code class="codecolorer javascript default"><span class="javascript">.<span style="color: #660066;">post</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> method for our Ajax call) into the head. Note the nonce. You must include this for security. Additionally, you must have an action set. The action is used by WordPress to route the Ajax request.</p>
<p>Finally, we&#8217;re passing two extra pieces of data &#8211; <code class="codecolorer javascript default"><span class="javascript">user_id</span></code> which is the WordPress user ID and the <code class="codecolorer javascript default"><span class="javascript">post_id</span></code> which is the WordPress post ID of the current <code class="codecolorer php default"><span class="php"><span style="color: #000088;">$post</span></span></code> object inside the Loop. Both of these are supplied in the hidden form fields we created earlier.</p>
<p>Let&#8217;s add a new method for hooks and call it in our constructor, so that hooks are executed when the object is instantiated:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">hooks</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <br />
<span style="color: #000000; font-weight: bold;">function</span> hooks<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; add_action<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'wp_head'</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'js'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<h2>Supplying the Ajax Handler</h2>
<p>Having hooked the jQuery into WordPress, we now need something on the other end to handle the request and return something back to our page. For this, let&#8217;s create a method called <code class="codecolorer text default"><span class="text">handle_like()</span></code>.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">function</span> handle_like<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$wpdb</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$user_id</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'user_id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$post_id</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'post_id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span>is_user_logged_in<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span>wp_verify_nonce<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'_wpnonce'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'nonce-register_like'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/die"><span style="color: #990000;">die</span></a><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Go away, asshole!'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">/* <br />
&nbsp; &nbsp; &nbsp; &nbsp; Here is where we do some sort of database operation to associate<br />
&nbsp; &nbsp; &nbsp; &nbsp; the Like of the given post with the user who performed the action<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; Make sure you check for errors. In order to return data, you must<br />
&nbsp; &nbsp; &nbsp; &nbsp; echo something that the originating page can see. True or false<br />
&nbsp; &nbsp; &nbsp; &nbsp; only makes sense on this page and not back there.<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; Typically, you'd output some sort of JSON, XML or plain text.<br />
&nbsp; &nbsp; */</span><br />
&nbsp; &nbsp; <span style="color: #000088;">$meta_id</span> <span style="color: #339933;">=</span> add_post_meta<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$post_id</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'user_liked'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$user_id</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #000088;">$meta_id</span> <span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Like not recorded&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #b1b100;">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Like recorded&quot;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <a href="http://www.php.net/exit"><span style="color: #990000;">exit</span></a><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>In this method, it&#8217;s important that all data be sanitized to avoid security problems. I&#8217;m performing the most basic of data security here by casting the $_POST variables for the users ID and the post ID to integers.</p>
<p>We&#8217;re also checking to make sure the user is logged in. <em>This is why using the built in WordPress Ajax API is actually kind of important. If you build your own Ajax handler, there&#8217;s no way to reliable tie in to WordPress to use other APIs like the User API.</em></p>
<p>Finally, make sure you verify the nonce so you know the request is coming from a legitimate source.</p>
<p>The three security procedures I just listed will largely prevent SQL Injection, ensure authenticated users and eliminate the possibility of Cross Site Request Forgery (CSRF) and generally should be used in <em>all</em> WordPress plugin development.</p>
<p>Simply though, the above method takes the post ID, the user ID and creates a new record in the <code class="codecolorer text default"><span class="text">postmeta</span></code> table. On success, it will print a success method readable by the original sending page and vica versa on failure.</p>
<p><strong>Note: You must use <code class="codecolorer php default"><span class="php"><a href="http://www.php.net/die"><span style="color: #990000;">die</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> or <code class="codecolorer php default"><span class="php"><a href="http://www.php.net/exit"><span style="color: #990000;">exit</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> at the end of the method to make sure the Ajax response exits properly.</strong></p>
<h2>Tying the Handler into WordPress</h2>
<p>Now that we have a handler method to do our bidding, we need to make sure WordPress knows about it so it routes Ajax requests to the proper place. To do this, we leverage the <code class="codecolorer php default"><span class="php">wp_ajax_<span style="color: #009900;">&#123;</span><span style="color: #000088;">$action</span><span style="color: #009900;">&#125;</span></span></code> hook.</p>
<p>Remember earlier, while building the jQuery Ajax request, I mentioned that an <code class="codecolorer text default"><span class="text">action</span></code> POST variable had to be set? WordPress looks to this variable to create a dynamic hook that we can use our new Ajax callback to hook into.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">add_action<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'wp_ajax_register_like'</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'handle_like'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Because our action in the <code class="codecolorer php default"><span class="php">js<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> method was set to <code class="codecolorer text default"><span class="text">register_like</span></code>, the hook WordPress creates dynamically is <code class="codecolorer text default"><span class="text">wp_ajax_register_like</span></code> and we can use that to hook our Ajax handler onto.</p>
<h2>Wrapping it all Together</h2>
<p>Easy right? Use jQuery to send data, <code class="codecolorer text default"><span class="text">wp-admin/admin-ajax.php</span></code> to receive the Ajax request and pass it on to an appropriate handler function, and send data back to the original page. On the receiving end, you can use normal means to handle the returned data as you wish.</p>
<p>You can download the full code used here at <a href="https://gist.github.com/1771566">Github</a>.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/GTe7xm55cz8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2012/02/08/tutorial-using-wordpress-ajax-api/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://technosailor.com/2012/02/08/tutorial-using-wordpress-ajax-api/</feedburner:origLink></item>
		<item>
		<title>Blackouts, Boycotts and Regressing From Progress</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/jeym6HRh65c/</link>
		<comments>http://technosailor.com/2012/01/30/blackouts-boycotts-and-regressing-from-progress/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 21:54:03 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[blackout]]></category>
		<category><![CDATA[boycott]]></category>
		<category><![CDATA[censorship]]></category>
		<category><![CDATA[free speech]]></category>
		<category><![CDATA[pipa]]></category>
		<category><![CDATA[sopa]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8539</guid>
		<description><![CDATA[A couple of weeks ago, the United States, and in fact, the world saw the internet grow up. Namely, through the use of blackouts &#8211; a previously unused tactic of protest and grassroots organizing &#8211; we saw the evil Stop Online Privacy Act (SOPA) and it&#8217;s evil twin Protect IP (PIPA) anti-piracy legislation fail in [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of weeks ago, the United States, and in fact, the world saw the internet grow up. Namely, through the use of blackouts &#8211; a previously unused tactic of protest and grassroots organizing &#8211; we saw the evil Stop Online Privacy Act (SOPA) and it&#8217;s evil twin Protect IP (PIPA) anti-piracy legislation fail in what seemed like an instant.</p>
<p>Back in December, it became clear that Congress would hearken to their corporate sugar daddys and shove these two pieces of legislation through the Congress without so much as a minimal amount of input from the technology world that would be devastated by their provisions. After votes on these bills were delayed until after the new year, the Internet &#8211; led by Wikipedia, Google, Craigslist, and hundreds of thousands of other sites, including this one &#8211; self-organized a protest that would involve &#8220;blackouts&#8221; of sites (and in some cases, very pronounced messaging in he case where blackouts were not feasible.</p>
<p>Despite defensive posturing by the Motion Picture Association of America (MPAA) and others who served to benefit from the legislation, Congressmen and Senators began fleeing the bills <em>en masse</em>. We had successfully made our mark on Washington.</p>
<p><img src="http://technosailor.com/files/tweet-withheld-600x91.png" alt="" title="tweet withheld" width="584" height="88" class="aligncenter size-large wp-image-8540" /></p>
<p>But then a funny thing happened. Twitter made some changes to it&#8217;s infrastructure to make it possible for them to operate transparently and legally inside countries that have stricter laws on free speech. It&#8217;s a necessary problem that companies have had to face for decades in places like China where speech is censored. I&#8217;ll let you read <a href="http://blog.twitter.com/2012/01/tweets-still-must-flow.html">their blog post on the topic</a>.</p>
<p>A small portion of the internet cried foul, claiming censorship. They looked at Twitter as anti-free speech and attempted &#8211; unsuccessfully &#8211; to self-organize a boycott of Twitter. It failed.</p>
<p>A very specific truth is at play and this is the crux of things. We matured on SOPA blackout day. We decided we wouldn&#8217;t be independent and fractioned, which is our nature as independent organizations and people. We had a desired goal (the defeat of SOPA/PIPA) and very specific actions and messaging that needed to happen.</p>
<p>The Twitter boycott (and most boycotts like it) cannot be effective in the same way. The Twitter boycott was a regression in our maturity. We didn&#8217;t have the same goal with surgical precision. We didn&#8217;t have any ground-swell of support. We had no stated goal or desirable outcome. We can&#8217;t use the same tactic every time. We regressed. </p>
<p>And by we, I don&#8217;t mean me. I knew it would be a failure. </p>
<p>Grassroots organizing is important and there will be other necessary flexing of muscle. But we can&#8217;t just cry foul because we don&#8217;t like a decision a company has made. We need to be selective about the fights we engage in and do them tactfully, strategically and surgically. That is maturity.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/jeym6HRh65c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2012/01/30/blackouts-boycotts-and-regressing-from-progress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://technosailor.com/2012/01/30/blackouts-boycotts-and-regressing-from-progress/</feedburner:origLink></item>
		<item>
		<title>Congratulations, Internet. We Won the Day.</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/6DH9aTYHva4/</link>
		<comments>http://technosailor.com/2012/01/19/congratulations-internet-we-won-the-day/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 20:05:11 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[activism]]></category>
		<category><![CDATA[congress]]></category>
		<category><![CDATA[house of representatives]]></category>
		<category><![CDATA[legislation]]></category>
		<category><![CDATA[lobbying]]></category>
		<category><![CDATA[pipa]]></category>
		<category><![CDATA[senate]]></category>
		<category><![CDATA[sopa]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8527</guid>
		<description><![CDATA[Today, I feel like a proud poppa. I don&#8217;t want to get too celebratory and put out some kind of aura that our battle against SOPA and PIPA are over. In fact, neither are over. But I&#8217;ll get to that in a minute, because yesterday was AMAZING! Yesterday, we saw the Internet come of age. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://technosailor.com/files/US_Capitol_HDR-600x399.jpg" alt="" title="US_Capitol_HDR" width="584" height="388" class="aligncenter size-large wp-image-8534" />Today, I feel like a proud poppa. I don&#8217;t want to get too celebratory and put out some kind of aura that our battle against SOPA and PIPA are over. In fact, neither are over. But I&#8217;ll get to that in a minute, because yesterday was <strong>AMAZING</strong>!</p>
<p>Yesterday, we saw the Internet come of age. We&#8217;ve seen the trend. The Internet has played a crucial role in the <a href="http://www.guardian.co.uk/world/interactive/2011/mar/22/middle-east-protest-interactive-timeline">Arab Spring</a>, political activism and fundraising as seen in the Obama election campaign in 2008, news reporting as seen in the incident of the US Airways jet in the Hudson River. We&#8217;ve seen a definite maturation process on the Internet over the years.</p>
<p>However, we have always been to dysfunctional to be a force. We are all too inbred with independent streaks to band together. In auto racing, cars often &#8220;draft&#8221; each other to increase speed, because drafting &#8211; or riding the sometimes-literal bumper of a car in front of you reduces wind resistence, and increases aerodynamics, thus increasing overall speed of the collective over the individual. </p>
<p>Ladies and gentlemen, we were drafting like pros yesterday. </p>
<p>We were drafting so well that the CEO of the Motion Pictures Association of America (MPAA) &#8211; former Senator Chris Dodd &#8211; came out shooting at proposed blackouts&#8230; <em>on Tuesday before it happened!</em> <a href="http://motherjones.com/mojo/2012/01/dodd-to-internet-you-and-your-blackout-can-drop-dead">Mother Jones</a> covers this nicely.</p>
<p>But we went out there, amidst a national media blackout (no pun intended) and did our thing. We were obviously led by the big dogs &#8211; <a href="http://wikipedia.org">WikiPedia</a>, <a href="http://en.blog.wordpress.com/2012/01/18/join-our-censorship-protest/">WordPress.com</a>, Google, Tumblr, Reddit and more, but Flickr, WordPress (dot org and dot com), and many more funneled the millions into political action. </p>
<p>This site was blacked out, as were all of my sites. Avatars on Twitter and Facebook were updated en masse with protest messages.</p>
<p>The collective made a statement like we&#8217;ve never made a statement before. And it worked. We turned the tide.</p>
<p>13 Senators flipped. Multiple Congressspeople flipped. Sponsors that had names added to the bills, undoubtedly as a matter of normal course of Washington handshakes and blowjobs, suddenly wondered how their names were attached to the bill and suddenly had to reconsider their positions among public scrutiny.</p>
<p>We won the day.</p>
<p>We have not won the battle. To this day, Rep. Lamar Smith, who chairs the House Judiciary Committee, continues to give a middle-finger to his colleagues (including his own Majority Leader) and insists on resuming markup of SOPA in February. Damn the President&#8217;s threat to veto. <a href="http://technosailor.com/2012/01/18/open-letter-to-congressman-lamar-smith-regarding-sopa-championing/">I wrote him a letter yesterday</a> and I wish you would share that across your networks. It&#8217;s very important.</p>
<p>Inside the beltway, nothing is dead until it&#8217;s dead. Using lines like, &#8220;I will not support this bill in its present form&#8221; only means, &#8220;Go get me some political cover, and I&#8217;ll reconsider&#8221;. The fact that Eric Cantor says it won&#8217;t come to the House floor for a vote, doesn&#8217;t mean it won&#8217;t. Just because the President says he&#8217;s veto it doesn&#8217;t mean he will. SOPA needs to be killed in committee and never see the light of day.</p>
<p>Likewise, PIPA in the Senate is losing support very quickly, but if SOPA were to die and PIPA were clear the Senate, my feeling is it would go to the President for a signature and let him make the political call in an election year.</p>
<p>Nothing is dead yet. We must be vigilant. We must maintain the protest, the calls, the emails, the pressure. Stop by your Congressman&#8217;s hometown office and talk to his staff. That&#8217;ll be more effective than emails and letters and phone calls. Be respectful, but make your voice heard.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/6DH9aTYHva4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2012/01/19/congratulations-internet-we-won-the-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://technosailor.com/2012/01/19/congratulations-internet-we-won-the-day/</feedburner:origLink></item>
		<item>
		<title>Open Letter to Congressman Lamar Smith Regarding SOPA Championing</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/XS4wmmbpLKM/</link>
		<comments>http://technosailor.com/2012/01/18/open-letter-to-congressman-lamar-smith-regarding-sopa-championing/#comments</comments>
		<pubDate>Wed, 18 Jan 2012 19:55:47 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[activism]]></category>
		<category><![CDATA[lamar smith]]></category>
		<category><![CDATA[open letter]]></category>
		<category><![CDATA[pipa]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[sopa]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8524</guid>
		<description><![CDATA[An email sent to the House Judiciary Committee Chairman, Rep. Lamar Smith (R-TX), who insists on pushing the SOPA bill through committee. Dear Mr. Smith- This is an open letter which will be published online, and promoted on Facebook, Twitter and other networks. As a Texas resident, I find it egregious that you have decided [...]]]></description>
			<content:encoded><![CDATA[<p><em>An email sent to the House Judiciary Committee Chairman, Rep. Lamar Smith (R-TX), who insists on pushing the SOPA bill through committee.</em></p>
<p>Dear Mr. Smith-</p>
<p>This is an open letter which will be published online, and promoted on Facebook, Twitter and other networks.</p>
<p>As a Texas resident, I find it egregious that you have decided to sell out so uniformly to the entertainment industry. It is so transparent, in fact, that federal records show that your biggest donor are from the holding company for <a href="http://www.opensecrets.org/politicians/contrib.php?cycle=2012&#038;cid=N00001811&#038;type=I">Clear Channel</a> and your biggest campaign contributions come from the <a href="http://www.opensecrets.org/politicians/industries.php?cycle=2012&#038;cid=N00001811&#038;type=I">entertainment industry</a> itself. Shockingly, the records also show that a Texas elected representative has taken less money from the powerful energy industry that directly effects his constituents, than from an industry who has tried for over a decade to protect their own interests at the expense of your constituents.</p>
<p>This same industry has consistently bullied law-abiding citizens across this country with exorbitant lawsuits and heavy-handed scare tactics.</p>
<p>Your colleagues, in both the House and the Senate, have realized that the Stop Online Piracy Act (SOPA) and the Protect IP Act (PIPA), while idealistic in nature, are destructive to the innovative and stable nature of the Internet &#8211; the same nature that has created great economic vitality and growth over the past 20 years. </p>
<p>Your own majority leader, Mr. Eric Cantor, has expressed that <a href="http://thehill.com/blogs/hillicon-valley/technology/204167-sopa-shelved-until-consensus-is-found">SOPA will not come to a vote on the House floor without significant thought, intention, and consensus</a>. This is clearly not happening as your colleagues have backed away from support, going the exact opposite direction from consensus &#8211; some even removing their names as co-sponsors.</p>
<p>Sir, you must listen to me and the American public. We see your transparent appeasement to your most significant donors. We understand campaign contributions are important for you and your efforts on behalf of the great State of Texas. However, attempting to ramrod this legislation through will be harmful to Texas, Texas innovation, Texas business as well as collaboration, security and health of the Internet, and business across the nation and globe.</p>
<p>You must abandon your single-sighted focus on ramming this legislation through the House of Representatives with the transparent motive of appeasing your donors. This is a democracy, not a business. You represent us.</p>
<p>Very respectfully,</p>
<p>Aaron Brazell</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/XS4wmmbpLKM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2012/01/18/open-letter-to-congressman-lamar-smith-regarding-sopa-championing/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://technosailor.com/2012/01/18/open-letter-to-congressman-lamar-smith-regarding-sopa-championing/</feedburner:origLink></item>
		<item>
		<title>Your Fiefdom Doesn’t Matter (Or Get your Head out of Your Regional Startup Ass)</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/JFsBHR2y-VQ/</link>
		<comments>http://technosailor.com/2012/01/05/your-fiefdom-doesnt-matter-or-get-your-head-out-of-your-regional-startup-ass/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 20:58:47 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8520</guid>
		<description><![CDATA[There&#8217;s this thing called Protectionism. Protectionism is largely a political word used to describe the retreat to self-isolationism for the sake of preserving well-being. It was a word tossed around in late 2008 and 2009 after the market crash when the international community joined together to try to stave off a global economic failure. There [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_8521" class="wp-caption aligncenter" style="width: 594px"><a href="http://www.flickr.com/photos/richevenhouse/4666078071"><img class="size-large wp-image-8521" title="bubbles" src="http://technosailor.com/files/bubbles-600x400.jpg" alt="" width="584" height="389" /></a><p class="wp-caption-text">Photo used under Creative Commons. Taken by Fellowship of the Rich</p></div>
<p>There&#8217;s this thing called Protectionism. Protectionism is largely a political word used to describe the retreat to self-isolationism for the sake of preserving well-being. It was a word tossed around in late 2008 and 2009 after the market crash when the international community joined together to try to stave off a global economic failure. There were some who believed the United States had their own issues and shouldn&#8217;t be worrying about bailing out Europe. This mentality still exists, for better or for worse.</p>
<p>But protectionism is also something that is <em>hurting</em> innovation, business, and startups in an Internet world. It seems like weekly, someone is writing a post about why NYC is the best place to start a company, or why Austin is better than the Valley.</p>
<p>Here&#8217;s the honest to God truth&#8230; your fiefdoms don&#8217;t matter. Your little land grabs and protectionist ideas are hurting the global collective that we all rely on and need. Austin is better than the Valley in some ways but the Valley is better than NYC in others and NYC is better than Europe in others and Europe is better than China in others. You get the point.</p>
<p>Let me pick on my Austin colleagues for a minute. Why don&#8217;t you pay attention to what&#8217;s happening outside of Austin for a minute? You touted Gowalla as the best thing ever. Why? Because it was from Austin. The data clearly showed differently. Foursquare was better. And now Gowalla is gone and in Palo Alto and doesn&#8217;t even exist anymore. Data can&#8217;t be argued with.</p>
<p>You think your little community (Austin and other places) makes any real difference? It doesn&#8217;t. It&#8217;s part of a global community and your little bubble can&#8217;t exist in a vacuum. It&#8217;s best you start understanding that. We <em>need</em> the Valley. We <em>need</em> Chicago. We <em>need</em> NYC. And they need us.</p>
<p>It&#8217;s best we stop pretending that Austin is the best place on earth. It&#8217;s not. It&#8217;s an awesome place among other awesome places. We are doing awesome things but we aren&#8217;t the only people doing awesome things. So let&#8217;s stop pretending, get rid of the navel-gazing myopia and get our collective heads out of our asses.</p>
<p>We need our regional fiefdoms for mentorship, collaboration and sharing. We are not the end of the story.</p>
<p>Austin. San Francisco. Europe. New York City. All of us.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/JFsBHR2y-VQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2012/01/05/your-fiefdom-doesnt-matter-or-get-your-head-out-of-your-regional-startup-ass/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://technosailor.com/2012/01/05/your-fiefdom-doesnt-matter-or-get-your-head-out-of-your-regional-startup-ass/</feedburner:origLink></item>
		<item>
		<title>Dude, Shut Your Effing Social Media Mouth.</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/JdtgCzFLTz8/</link>
		<comments>http://technosailor.com/2012/01/04/dude-shut-your-effing-social-media-mouth/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 19:24:37 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[douchebags]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[Social Media]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8517</guid>
		<description><![CDATA[It&#8217;s been awhile since I ranted. Like really ranted. I&#8217;m about to change that. &#60;rant&#62; It&#8217;s no secret that social media marketing has turned largely douchey. Self-important blowhards show up at SXSW, Blog World Expo and many other industry events every year with the sole purpose of being socialites and schmoozing with their peers and getting [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_8518" class="wp-caption aligncenter" style="width: 508px"><a href="http://www.flickr.com/photos/bruce_mcadam/2861351996/"><img class="size-large wp-image-8518" title="Honey Badger" src="http://technosailor.com/files/honeybadger-498x450.jpg" alt="Honey Badger" width="498" height="450" /></a><p class="wp-caption-text">Honey Badger don&#39;t care! (Photo used under Creative Commons. Taken by Bruce McAdam)</p></div>
<p>It&#8217;s been awhile since I ranted. Like <em>really</em> ranted. I&#8217;m about to change that.</p>
<p>&lt;rant&gt;</p>
<p>It&#8217;s no secret that social media marketing has turned largely douchey. Self-important blowhards show up at SXSW, Blog World Expo and many other industry events every year with the sole purpose of being socialites and schmoozing with their peers and getting into the hottest parties. I&#8217;ve done it. We&#8217;ve all done it.</p>
<p>But there&#8217;s no authenticity in any of it. We call those self-labelled social media gurus as social media douchebags for a reason. It&#8217;s because no one (with rare exception) is actually doing real marketing. They are doing friend-mongering. If they can get their clients Facebook likes and Twitter followers then they are being successful. But largely, all they are doing is going to their network of peers who are doing the same goddamn thing and getting them to &#8220;Like&#8221; their clients Facebook page.</p>
<p>How is this genuine? How is this legitimate? Do I really like Ford because Scott Monty is the head of social media for Ford? Well, I might&#8230; and I do like Scott&#8230; and I haven&#8217;t actually interacted with Scott in a long time so this actually has nothing to do with him.</p>
<p>I added someone who I met in a non-professional setting in Chicago last week to Facebook. I joked with her that it&#8217;s surprising we weren&#8217;t already friends because we had 41 friends in common.</p>
<p>Why is social media all about clustering together? By all means, we see mutual respect among journalists, but I bet Paul Krugman isn&#8217;t tweeting Thomas Friedman asking for a retweet simply to get exposure to his economic op-eds. He doesn&#8217;t have to. His work speaks for itself and amplifies itself.</p>
<p>If we dig deep on the social media marketing industry, the discovery under the surface is mind-numbing. I&#8217;m about to blow your mind. Social Media people have no clout (or Klout, if you want to play on that metaphor). If they did, their work would self-amplify. They wouldn&#8217;t need to look like industry hookers trying to make money with the only assets available to them. They would just&#8230; be. And they would be successful. And they wouldn&#8217;t have to prove to their clients that they can get the job done. They wouldn&#8217;t need to add milestones like &#8220;Acquire 1000 Likes on the company Facebook page&#8221; or &#8220;Build up to 5000 followers on Twitter using mutual retweet tactics&#8221; to proposals. Their reputation would precede them. They wouldn&#8217;t need to write a book to falsely inflate their value. They would have reputation.</p>
<p>Take Dean McBeth, who I also met last week. Dean works for a small boutique agency in New York. I had never heard of Dean personally, but then he informed me that his claim to fame was architecting the now-legendary Old Spice ads. Ok, your reputation precedes you, then, Dean. Thanks for not asking me to let my network of people know to Like your agency on Facebook.</p>
<p>Look, I understand that there are people like Dean doing great work. For every Dean, however, there are 5 people doing shitty work, relying way to heavily on nerd cred and too little on reputation and results.</p>
<p>People earn their reputations through hard work, perseverence, and time. Yes, that involves networking and schmoozing. But there is no credibility lent to your client by getting a bunch of your friends to &#8220;do you a solid&#8221; and help you get your work done. If you need 1000 Likes on Facebook, don&#8217;t ask me to help unless it&#8217;s something that I genuinely like. I&#8217;m not going to follow you because you follow me on Twitter. I don&#8217;t care about your client&#8230; you do. Do good work and let it self-amplify. Otherwise it&#8217;s all smoke and mirrors.</p>
<p>&lt;/rant&gt;</p>
<p><strong>Update:</strong> If you still feel like you need to get a handjob, here&#8217;s a<a href="http://www.socialmedia.biz/2012/01/02/2012-conferences-social-media-tech-marketing/"> list of Social Media conferences</a> where you can meet people, follow them on Twitter for the purpose of using your network for the benefit of your client later down the road.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/JdtgCzFLTz8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2012/01/04/dude-shut-your-effing-social-media-mouth/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		<feedburner:origLink>http://technosailor.com/2012/01/04/dude-shut-your-effing-social-media-mouth/</feedburner:origLink></item>
		<item>
		<title>Skunkworks</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/geo4C8LsHvA/</link>
		<comments>http://technosailor.com/2012/01/03/skunkworks/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 19:08:54 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8514</guid>
		<description><![CDATA[Back in October, I announced my departure from WP Engine. At that time, though I didn&#8217;t talk about it on this blog, I decided to take some time off, more or less. Since 2006, I&#8217;ve been hard at work with very little time alotted to myself. I spent 2 years with b5media and jumped immediately [...]]]></description>
			<content:encoded><![CDATA[<p>Back in October, I announced <a href="http://technosailor.com/2011/10/03/changing-roles-at-wp-engine/">my departure from WP Engine</a>. At that time, though I didn&#8217;t talk about it on this blog, I decided to take some time off, more or less. Since 2006, I&#8217;ve been hard at work with very little time alotted to myself. I spent 2 years with <a href="http://b5media.com">b5media</a> and jumped immediately into a failed role at <a href="http://www.lijit.com/blog/2011/10/04/go-big-or-stay-home/">Lijit</a> (who has now been acquired by <a href="http://www.federatedmedia.net/">Federated Media</a> &#8211; nice work, guys!). Upon my departure from Lijit, shortly after the market bottom in 2008, and needing money desperately, I went into full time WordPress consulting. I did that until I moved to Austin last year when I went in full time on <a href="http://wpengine.com">WP Engine</a> and stayed there for 15 months or so.</p>
<p>So basically, I haven&#8217;t had a lot of time to myself. So I took time. In the past few months, I&#8217;ve taken some large consulting contracts, but mostly, I&#8217;ve spent time travelling to Maryland, Seattle, Chicago &#8211; all for pleasure, nothing for work. I&#8217;ve spent time trying to weigh my priorities and wants. I&#8217;ve tossed around starting up a new company or doing something different.</p>
<p>At the end of the day, now that it&#8217;s 2012, I know what I want to do. It&#8217;s a bit unusual, but I think it&#8217;s important and can really revolutionize a boutique agency. I&#8217;m not comfortable doing social media work. I&#8217;m too honest and raw in my own online presence and many companies and clients may not be comfortable with my level of authenticity.</p>
<p>I also don&#8217;t want to do what is common among agencies &#8211; sweatshop site development. Hey, no offense. That&#8217;s what it is. Take on 30 new clients, promise them websites that are the brainchilds of the agency marketing &#8220;expertise&#8221; and ask the developers to crank them out with little to no strategic or creative input.</p>
<p>That might work for some developers, but I&#8217;m not a normal developer. I&#8217;m a highly established WordPress professional that has commanded 5 figure consulting deals, written a 700+ page book on the subject and have built some of the most complex WordPress solutions I&#8217;ve ever seen (Humble brag! Also proprietary, but can provide in person demos). I&#8217;m not a good fit for sweatshop site generation.</p>
<p><img class="alignright size-full wp-image-8515" title="skunkworks" src="http://technosailor.com/files/skunkworks.jpg" alt="" width="410" height="160" />You know what agencies need that no one is doing because no one has taken the time to think outside the box? A skunkworks division. What agencies need to differentiate themselves from the thousands of other agencies they are competing with is a person or small group of people with autonomy and who are focused soley on creating disruptive technologies that no one else is doing. Try things. Fail at some, succeed at others. Test market demand. Offer exclusive access to stuff that no other agency has. Innovate, innovate, innovate.</p>
<p>That&#8217;s what I want to do. And someone sees the sense in that. And someone realizes that <em>that</em> is worth thinking outside the box for. Someone is willing to invest in that competitive advantage. Someone gets it. It&#8217;ll take money. It&#8217;ll take risk. It&#8217;ll take balls of steel. Or you can be normal. Who wants to be normal?</p>
<p>So as we enter 2012, I am open to conversations around this or other creative outlets you might want to explore if you want a competitive advantage. Email me at <a href="mailto:aaron@technosailor.com">aaron@technosailor.com</a>.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/geo4C8LsHvA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2012/01/03/skunkworks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://technosailor.com/2012/01/03/skunkworks/</feedburner:origLink></item>
		<item>
		<title>The Top 50 Stories Since the Invasion of Iraq</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/OdbwoiHASBE/</link>
		<comments>http://technosailor.com/2011/12/15/the-top-50-stories-since-the-invasion-of-iraq/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 20:13:49 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[bush]]></category>
		<category><![CDATA[Economics]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iraq]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[obama]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[pope]]></category>
		<category><![CDATA[wall street]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8509</guid>
		<description><![CDATA[War is over, if you want it. ~John Lennon This is a time of year, as we draw 2011 to a close and embark on 2012, to reminisce about the events of the last year. It&#8217;s a tradition followed by journalists, bloggers, and opinionistas alike. But since today marks the day where the War in [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>War is over, if you want it. ~John Lennon</p></blockquote>
<p>This is a time of year, as we draw 2011 to a close and embark on 2012, to reminisce about the events of the last year. It&#8217;s a tradition followed by journalists, bloggers, and opinionistas alike. But since today marks the day where the War in Iraq is officially drawn to a close, I thought I&#8217;d share some of the top stories of the past nearly 8 years. The world has changed drastically. For those who served, bled and maybe died&#8230; we salute you.</p>
<h2>50. Saddaam Hussein Captured (December 13, 2003)</h2>
<p>A mere 9 months after the U.S. Invasion began, Sadaam Hussein is captured by Special Forces and turned over to the interim Iraqi Government. He was tried and convicted for crimes against humanity and was later executed by hanging.</p>
<h2>49. NASA Mars Rover Confirms Water (March 2, 2004)</h2>
<p>NASA Rover <em>Opportunity</em> confirms that the area where she landed on the surface of Mars once was covered in water. The discovery was made when Opportunity confirmed the presence of gypsum, a compound formed when calcium water encounters sulfates.</p>
<h2>48. Massachusetts Gay Marriage (May 17, 2004)</h2>
<p>Massachusetts becomes the first state in the United States to formally legalize gay marriage. This came about after a Massachusetts Supreme Court decision deemed it unconstitutional to limit marriage to heterosexual couples. Governor Mitt Romney ordered State agencies and government to issue marriage licenses in compliance with the Supreme Court ruling. Efforts continue to formally amend the Massachusetts Constitution.</p>
<h2>47. Freedom Tower Groundbreaking (July 4, 2004)</h2>
<p>After several years of planning and politics, ground is broke for the building of the new Freedom Tower at Ground Zero in lower Manhattan. When complete, the tower will stand 105 stories and cost over $3.1B. It is estimated to open in 2013.</p>
<h2>46. Boston Red Sox win Game 4 of the ALCS (Oct 17, 2004)</h2>
<p><img class="alignright size-large wp-image-8511" style="border-style: initial; border-color: initial; margin-top: 0.4em; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;" title="fenway3" src="http://technosailor.com/files/fenway3-600x203.jpg" alt="" width="584" height="197" /></p>
<p>Red Sox faithful are given a spark of hope when, after being down to the New York Yankees 3 games to none in a best-of-seven series, came from behind in the 9th inning to avoid elimination in Game 4. The game proved to be pivotal as the Red Sox went on to win the ALCS 4-3 taking the Yankees to Game 7 and then sweeping the St. Louis Cardinals for their first World Series win since 1918.</p>
<h2>45. South Asian Tsunami (Dec 26, 2004)</h2>
<p>Tragedy struck on Boxing Day as a powerful sub-oceanic earthquake triggers a tsunami that would affect the entire Indian Ocean rim. Most devastating were the effects in Sri Lanka and Indonesia where confirmed deaths approached 170k.</p>
<h2>44. Scott Peterson Sentenced to Death (March 16, 2005)</h2>
<p>Scott Peterson is convicted of the capital crime of murdering his wife, Laci Peterson, and their unborn child. Laci was 8 months pregnant and had gone missing. While Scott was a &#8220;person of interest&#8221;, it wasn&#8217;t until the remains of Laci and their child were discovered, that Scott was arrested and ultimately convicted. He was sentenced to death by lethal injection and remains on death row in San Quentin Prison.</p>
<h2>43. Pope John Paul II Dies (April 2, 2005)</h2>
<p>The Catholic Church and the world go into mourning at the passing of 84 year old Pope John Paul II. Born Karol Jósef Wojtyla to Polish parents, the Pope was renowned for his progressive world views and is widely credited with helping to bring about the end of communism in Poland. He served for 26 years.</p>
<h2>42. Deep Throat Revealed (May 31, 2005)</h2>
<p>Since 1972, the identity of the notorious Watergate informer was speculated on but never really known except to Bob Woodward and Carl Bernstein, the Washington Post reporters who legendarily covered the scandal. On May 31, 2005, Mark Felt, then the number two guy at the CIA, revealed himself as Deep Throat. Bob Woodward, when reached for confirmation, acknowledged the revelation to be true bringing to an end one of the most intriguing conspiracy stories of recent history.</p>
<h2>41. Steve Jobs Gives His Stanford Commencement Address (June 12, 2005)</h2>
<p><iframe width="600" height="450" src="http://www.youtube.com/embed/UF8uR6Z6KLc?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>Since the death of Steve Jobs a few months ago, his famous &#8220;Stay Hungry, Stay Foolish&#8221; commencement address at Stanford University has seen a resurgence. In this 15 minute address, Jobs relates three anecdotes from his life and lessons learned from them. It would go on to become a window into the kind of man Jobs was and continues to serve as inspiration.</p>
<h2>40. Lance Armstrong Wins His 7th Tour de France (July 24, 2005)</h2>
<p>Lance Armstrong, the six-time Tour de France winner, notches his 7th win, an unprecedented feat. Armstrongs story in inspiring considering his battle with (and his defeat of) testicular cancer.</p>
<h2>39. Hurricane Katrina (August 29, 2005)</h2>
<p><img class="alignright size-large wp-image-8512" title="2815889929_9bee86c5cb_o" src="http://technosailor.com/files/2815889929_9bee86c5cb_o-600x450.jpg" alt="" width="584" height="438" /></p>
<p>A devastating time in American history, Katrina became the biggest natural disaster ever to occur in the United States. The initial brunt of the storm wreaked havoc on the Mississippi and Alabama coastline, but the whiplash effect that occurs as a storm passes by proved to be as devastating. As the storm passed over Mississippi, the back winds pushed water from Lake Pontchatrain on the north-side of New Orleans over and through levees setup to hold the water back from the sub-sea level city. The media coverage was vast. The horrors and atrocities deplorable. And the political response wreaked of incompetence.</p>
<h2>38. The Sago Mine rescue (January 5, 2006)</h2>
<p>A mining explosion deep in the tunnels of the Sago Mine in West Virginia trapped 13 miners underground for over 2 days. Ultimately, only one survived. This came after the mine released misinformation that led news outlets to report the exact opposite &#8211; that one miner was found dead and 12 rescued.</p>
<h2>37. Apple sells it&#8217;s 1B Song via the iTunes Store (February 22, 2006)</h2>
<p>Announced to great hype and with great marketing prowess, Apple sold it&#8217;s 1 billionth song via the iTunes Store continuing to mark the iPod as one of the greatest market-transforming technologies ever built by the Cupertino, California company.</p>
<h2>36. The Enron Trial Jury Conviction (May 25, 2006)</h2>
<p>After a much publicized &#8220;media trial&#8221;, a jury convicts former Enron CEO Kenneth Lay and COO Jeffrey Skilling. Skilling was convicted on 19 counts of securities fraud and wire fraud. Lay was convicted on 6 counts. Lay died before sentencing and, accordingly, his conviction was vacated. Skilling is currently serving a 24 year sentence.</p>
<h2>35. Twitter launched to the public (July 15, 2006)</h2>
<p>Formerly known as Twittr and, really, at the time unknown to the public, Jack Dorsey launches a prototype of the short form status message service based on text messaging. With funding and support by Odeo&#8217;s Evan Williams and Biz Stone, Twitter quickly becomes the horse they all rode in on. Twitter has become one of the most necessary and integrated forms of online communication and has contributed to social, economic, political and mundane events around the world.</p>
<h2>34. Crocodile Hunter Steve Erwin Killed By a Stingray (September 4, 2006)</h2>
<p>Beloved crazy man, Steve Erwin, is killed by a stingray who stung him through his chest to his heart while filming a stunt. He was known for putting himself in dangerous situations with unpredictable wildlife.</p>
<h2>33. The Louisiana Superdome Re-opens After Katrina (September 25, 2006)</h2>
<p>An emotional New Orleans celebrates the re-opening of the Superdome, the location of shelter and horrendous criminal actions following Hurricane Katrina. The Dome was re-opened with a New Orleans Saints-Atlanta Falcons Monday Night Football game. The halftime show featured U2 and Green Day. The Saints won an emotional game 23-3.</p>
<h2>32. Facebook Opens It&#8217;s Walls to the Public (September 26, 2006)</h2>
<p>Facebook before September 26, 2006, was only available to college students or select corporations that were registered with Facebook. That changed when the doors were opened for everyone. This was the first step for Facebook to dominate the Myspace-Facebook war.</p>
<h2>31. North Korea Tests a Nuke (October 9, 2006)</h2>
<p>North Korea gives a 6-day warning of an impending nuclear test, the first time that any country has ever done that. China is alerted 20 minutes ahead of the test and they promptly sent an emergency dispatch to Washington. North Korea explodes a small-time nuclear bomb under a mountain near the Chinese border. The test garnered international criticism and put troops in South Korea and Japan on high alert.</p>
<h2>30. The Democratic Landslide of 2006 (November 7, 2006)</h2>
<p>In an election widely scene as a referendum on President George W. Bush, Democrats won the day in a large and sweeping manner. Nationally, the Democrats took control of both the House and the Senate. In the Senate, the Democrats picked up 7 seats for a 51-49 majority. In the House, they commanded a 233-202 majority. They also took 6 Governorships from the GOP giving them a 28-22 majority there. In statewide elections, similar results were reflected as the national electorate was widely seen as rebuffing the Bush Administration.</p>
<h2>29. The iPhone Launch (June 29, 2007)</h2>
<p>To much pomp, circumstance and expectation, people lined up outside of Apple, AT&amp;T and other partner carrier stores around the world to get their hands on the iPhone, a first of its kind product. To that date, no one had effectively released and mass-marketed a touch screen convergence device such as what Apple promised. People camped out for days to be the first to buy the phone with a price-tag of $600.</p>
<h2>28. Public Vote for a Barry Bonds Asterisk on #756 (September 26, 2007)</h2>
<p>Mark Ecko makes a controversial purchase of the homerun ball that was Barry Bonds 756th and record-setting homerun. Due to the steroids controversy, sports fans debated <em>ad nauseum</em> about whether the hall of fame ball (and player) should have an asterisk (the proverbial, &#8220;oh by the way this is controversial&#8221; indication).</p>
<p>Ecko put a website up asking the public to vote on whether his purchased ball, which he intended to donate to the Baseball Hall of Fame, should be marked with an asterisk prior to donation. The public thought it should, and so it does.</p>
<h2>27. The Mitchell Report (December 13, 2007)</h2>
<p>Former Senator George Mitchell releases his controversial report from the steroid investigation committee he chaired on behalf of Major League Baseball. The report blamed a culture of performance-enhancing drugs on both players and management and implicated a menagerie of current and former players, including Andy Pettite, Miguel Tejada and Jason Giambi, in substance abuse problems.</p>
<h2>26. Michael Phelps Wins 8 Gold Medals (August 17, 2008)</h2>
<p>Baltimore-born swimming superstar, Michael Phelps, dominates mens swimming at the Beijing Olympics with a record 8 gold medals. He previously won 6 golds and 2 silvers in Athens.</p>
<h2>25. Sarah Palin Makes Her National Debut (August 29, 2008)</h2>
<p>In what may go down in history as one of politics biggest &#8220;oops&#8221; moment, GOP Presidential Candidate John McCain, wanting to make a statement with a woman VP candidate, names Alaska Governor Sarah Palin as his running mate. The move proved to be disastrous as Palin was not prepared for the national spotlight. After the Campaign ended, controversy continued to swirl around her, her odd resignation as Governor and her personal and home life.</p>
<h2>24. Market Crash of 2008 (October 2, 2008)</h2>
<p>The Global Recession, by most accounts, began in late 2006 or early 2007, but it became acute and pronounced on October 2, 2008 when the Dow Jones fell 3.22% (~348 points). It would continue to fall for the rest of the week losing 22% of it&#8217;s value in 4 days. The market was exacerbated by the failure of Bear Stearns, Freddie Mac and Fannie Mae and would ultimately lead to government bailouts or facilitated mergers of some of the worlds largest lending institituions under the mantra, &#8220;Too big to fail.&#8221;</p>
<h2>23. Too Big to Fail &#8211; Bush Bailouts (October 3, 2008)</h2>
<p>Under the Bush administration, with tremendous economic pressure and fatal outlooks, a $700B emergency bailout fund was established by Congress to assist in the closure, restructuring, merger and re-capitalization of major banks and institutions like Bank of America, Washington Mutual, Wachovia, Wells Fargo, AIG and more. It became one of the most controversial economic storylines of recent times and was extended by the incoming Obama Administration.</p>
<h2>22. Obama Landslide (November 4, 2008)</h2>
<p>With celebrations in Washington, DC and major cities around the United States and world, Obama is elected as the 44th President of the United States marking the end of a terrible Bush Administration and marking the first time a black man was elected to the most powerful Office in the world. Impromptu celebrations were held in front of the White House and in the streets around the world.</p>
<h2>21. California Adopts Proposition 8 (November 4, 2008)</h2>
<div class="wp-caption alignnone" style="width: 650px"><a href="http://www.flickr.com/photos/chriki/3025774097/"><img title="Stop the Hate" src="http://farm4.staticflickr.com/3064/3025774097_f054049f37_z.jpg?zz=1" alt="Stop the Hate" width="640" height="427" /></a><p class="wp-caption-text">Photo by Chriki on Flickr. Used under Creative Commons.</p></div>
<p>In what has been viewed by equal rights organizations around the country as a severe regression, one of the most progressive states in the nation adopts Proposition 8, a statewide ballot initiative that would prohibit gay marriage in California. It also became a hot button issue for critics of special interest influence in politics as the ballot initiative was largely funded by the Church of Jesus Christ of Latter Day Saints &#8211; the Mormons &#8211; who executed a well-funded grass-roots effort to pass the proposition.</p>
<h2>20. Obama is Inaugurated (January 20, 2009)</h2>
<p>On a frigid day in January, 1.8M people descended on the National Mall to witness the Inauguration of America&#8217;s first African-American president. Parties included a concert the day before at the Lincoln Memorial where rapper Jay-Z sang &#8220;I&#8217;ve Got 99 Problems but a Bush ain&#8217;t one&#8221; and the ceremonial Marine One whisking away of the outgoing president was greeted by millions chanting, &#8220;Nah nah nah nah. Nah nah nah nah. Hey hey hey. Goodbye&#8221;.</p>
<h2>19. The Birth of the Tea Party (April 15, 2009)</h2>
<p>Around the country, on tax day in 2009, hundreds of thousands of Americans gathered to protest heavy taxation by the government. What began as an anti-tax movement, quickly turned into one of the most influential &#8211; and arguably nutty &#8211; political fraction groups in the history of the United States. In 2010, the Tea Party successfully elected pro-Tea Party Congressmen in the GOP takeover of the House of Representatives.</p>
<h2>18. H1N1 (June 1, 2009)</h2>
<p>The Swine flu became a hot button issue of concern for many fearing a pandemic &#8211; and a source of ridicule for Halloween goers later in the year who dressed up as the H1N1 virus. The swine flue was a strain of the common flu that was potentially fatal and caused deaths nationwide. The CDC, along with other sister agencies in other countries and the World Health Organization, ran heavy public education campaigns to reduce the risk of pandemic.</p>
<h2>17. Michael Jackson Dies (June 25, 2009)</h2>
<p>The world mourned the loss of Michael Jackson who died of an overdose mis-administered by his personal doctor. His death was not believed to be suicide, but was the result of negligence. Days later at the Staples Center in Los Angeles, a funeral was held with touching eulogies from his brother and father, among others.</p>
<h2>16. Steve McNair Murdered by His Mistress (July 4, 2009)</h2>
<p>NFL Quarterback Steve McNair, who played for both the Tennessee Titans and the Baltimore Ravens, was killed by his 22 year old mistress in Nashville. Rumors of jealousy and rage were circled as particular motives.</p>
<h2>15. Wikileaks Bursts on the Scene with Cablegate (February 18, 2010)</h2>
<p>The controversial grassroots organization founded by Aussie vigilante Julian Assange, Wikileaks, makes huge political waves by releasing State Department cables to select media organizations. Though redacted to protect the identities of spies, informants and individual workers, the cables represent damning internal and international diplomatic decision making and communications.</p>
<h2>14. Health Care Reform Act (March 21, 2010)</h2>
<p>After over a year of debate, arguing, politicking, and blockage, the House and Senate finally agree to a compromise Health Care Reform Bill that has become President Obama&#8217;s signature legislation. Parts of the bill are under judicial review.</p>
<h2>13. Icelandic Volcano Grounds Europe (April 14, 2010)</h2>
<p>Mount Eyjafjallajökull erupts in Iceland spreading volcanic ash across the UK, Europe and the trans-atlantic flight corridors. Flights are grounded for days and passengers stranded. Some passengers reported trying to drive across Europe to other countries, like Spain, to get to an airport with outgoing flights &#8211; like Barcelona &#8211; but with no success. It became a massive economic problem.</p>
<h2>12. The BP Oil Spill (April 20, 2010)</h2>
<p>An explosion on the Deepwater Horizon oil rig operated by BP caused the rig to collapse and snap the pipe dug into the earths crust. The result was 3 months of oil continually flowing into the Gulf of Mexico. Multiple solutions were attempted to seal the well but nothing was successul until September. Cleanup continues to this day.</p>
<h2>11. Reggie Bush Gives His Heisman Trophy Back (September 15, 2010)</h2>
<p>New Orleans Saints Running Back Reggie Bush, who won the 2005 Heisman Trophy while at USC, gave back his Heisman Trophy amid public pressure after sanctions were dropped on USC for recruiting and other violations. USC was required to vacate all 2004-2005 wins including their National Championship win over Oklahoma, and is banned from post-season play for both the 2010 and 2011 seasons. Bush became the first player ever to return a Heisman Trophy.</p>
<h2>10. Brett Favre&#8217;s Penis (October 7, 2010)</h2>
<p>Brett Favre apparently has a little penis, or so the pictures say. The news of Favre texting pictures of his junk to, then-Jets sideline reporter Jenn Sterger was broken by sports-gossip blog Deadspin. Brett&#8217;s taste in women&#8230; impeccable. Brett&#8217;s taste in text message appropriateness&#8230; questionable.</p>
<h2>9. The Republicans Win Back the House (November 2, 2010)</h2>
<p>In a national referendum on Obama, the GOP retook the House of Representatives and made significant strides in the Senate on a wave of Tea Party momentum. Freshman Republican legislators, such as Rand Paul, would become influential in the budget and taxation issues in the current Congress.</p>
<h2>8. The Arab Spring Begins (December 17, 2010)</h2>
<p>The Arab Spring, a coordinated series of protests that would ultimately turn the Middle East on its head, begins with a Tunisian man setting himself on fire in protest of police confiscating his vegetable cart. An uprising would subsequently occur that saw the fall of the Tunisian government. Other Arabs, buoyed by a sense of enablement, protested and in some case achieved regime change in Egypt and Lybia. Unrest and calls for revolution were also heard in Yemen, Bahrain, Syria, United Arab Emirates, Saudi Arabia, Morocco, Lebanon, Iran and Algeria.</p>
<h2>7. Japanese Nuclear Fallout (March 11, 2011)</h2>
<p>After a devastating earthquake rocked Japan, concern began to spread to the Fukushima Nuclear reactor. Despite efforts to contain damage &#8211; and initial reports that the reactor was safe and not breached &#8211; it became clear that containment was not possible. Though ultimately contained, it did not happen until significant amounts of radiation escaped into the ground, water and atmosphere. Trace amounts of I-131 radiation (non-harmful doses) were detected as far away as California.</p>
<h2>6. Osama Bin Laden Killed (April 30, 2011)</h2>
<p><img class="alignright size-large wp-image-8510" title="Bin Laden's Hunter" src="http://technosailor.com/files/1031_OBAMA-WAR-ROOM-600x400.jpg" alt="" width="584" height="389" /></p>
<p>With a dramatic late-night address to the nation &#8211; called with only an hour warning &#8211; President Obama informed America and the world of the death of Osama Bin Laden. Osama was killed by Navy SEAL Team 6 in a raid on a Pakistani compound. Later, some would question the death because the Administration decided not to release pictures.</p>
<h2>5. Amy Winehouse Joins the 27 Club (July 23, 2011)</h2>
<p>British pop superstar, Amy Winehouse dies of an apparent drug overdose at Age 27. She joins the &#8220;Club of 27&#8243;, a group of musicians that include Jimmie Hendrix, Janis Joplin and Kurt Cobain, who also died at Age 27.</p>
<h2>4. Faster than Light (September 22, 2011)</h2>
<p>Battlestar Galactica fans would endorse the concept &#8220;Faster than Light&#8221;, but physicists at the CERN research center in Switzerland release a preliminary report showing that they had found a neutrino &#8211; a tiny sub-atomic particle &#8211; that traveled faster than light. Secondary test would reveal the same finding. Other scientific researchers question the results, however. If true, the discovery would undermine the core building block of modern science &#8211; that nothing is faster than light. Albert Einstein is turning over in his grave.</p>
<h2>3. Occupy Wall Street (September 17, 2011)</h2>
<p>The economic difficulties and political climate in the past few years finally force a boil over of sentiment toward the perceptions of class-entitlement. The mantra &#8220;We are the 99%&#8221; has become a rallying cry for anyone who feels slighted by entitlement. The Occupy Wall Street Movement, while protesting excesses on Wall Street, has been mirrored across the country. In some incidents, occupy movements have turned into political hot potatoes that shine the light on police corruption and brutality as was the case when a police officer casually pepper sprayed a series of kneeling protestors on the campus of UC-Berkeley.</p>
<h2>2. Moammar Ghaddafi Killed (October 20, 2011)</h2>
<p>After months of civil war, belligerent resistance to national and international calls to step down &#8211; generally in the form of hapless, wandering, rambling televised addresses &#8211; NATO military intervention and repeated rumors (but no proof) of his death, Moammar Ghaddafi is confirmed dead in Libya. After a NATO airstrike hit a convoy he was riding in, he took shelter in a drainage ditch where he was captured by National Transitional Council forces. He died en route to the hospital.</p>
<h2>1. Penn State Child Sex Scandal (November 5, 2011)</h2>
<p>We are rocked by the grand jury indictments handed down on former Penn State coach Jerry Sandusky. Sandusky is charged with multiple sex abuse charges as they relate to 4 alleged victims. In the wake of the scandal, fingers are pointed at various people and blame is passed. Ultimately, Penn State&#8217;s Board of Trustees remove the President, Athletic Directory, Head Coach Joe Paterno and others from their responsibilities.</p>
<p>So there we have it. 8 years of war. An entire different country. Have we learned from our mistakes? Probably not. We&#8217;ll see. Happy Christmas! War is Over! If You Want It!</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/OdbwoiHASBE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/12/15/the-top-50-stories-since-the-invasion-of-iraq/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/12/15/the-top-50-stories-since-the-invasion-of-iraq/</feedburner:origLink></item>
		<item>
		<title>TUTORIAL: Adding an oEmbed Provider to WordPress</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/Sp2h2xHqT44/</link>
		<comments>http://technosailor.com/2011/12/14/tutorial-adding-an-oembed-provider-to-wordpress/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 19:53:12 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[oembed]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8507</guid>
		<description><![CDATA[I don&#8217;t often write tutorials. I probably should. But normally it&#8217;s only when someone asks me something and I think, &#8220;Hey, self&#8230; you should write up how to do this&#8221;. As if a book wasn&#8217;t enough. Last night I was at the Austin Web Holiday party, a gathering of some 15+ technical meetup groups cross-pollinating [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t often write tutorials. I probably should. But normally it&#8217;s only when someone asks me something and I think, &#8220;Hey, self&#8230; you should write up how to do this&#8221;. As if <a href="http://amzn.to/wpbible2">a book</a> wasn&#8217;t enough.</p>
<p>Last night I was at the Austin Web Holiday party, a gathering of some 15+ technical meetup groups cross-pollinating over beer and socializing. I was introduced to one guy (can&#8217;t remember his name!) who had built a video site and enabled it for oEmbed. He couldn&#8217;t understand why WordPress wouldn&#8217;t just automatically let users use his videos, like it does for YouTube, Vimeo, etc. <a href="http://codex.wordpress.org/Embeds">The full list of default oEmbed providers are listed here</a>.</p>
<p>WordPress doesn&#8217;t allow automatic use of oEmbed for security reasons. Otherwise, someone could build a video service stuffed with malicious code that could potentially access your database or create a man in the middle attack or worse. WordPress.com certainly doesn&#8217;t allow arbitrary oEmbed sites and the dot-org open source software doesn&#8217;t allow arbitrary stuff automatically. But it can be done, on the dot-org side, with a plugin. All it is a hook.</p>
<p>Here&#8217;s an example. If you want to register an oEmbed video site that is, say, at (randomly) http:/mysuperawesomevideosite.com and your videos are of the format http://mysuperawesomevideosite.com/video/*, it&#8217;s as simple as adding a function in your plugin (or more properly from a PHP perspective, a method in a class &#8211; but that&#8217;s a personal preference. The method/function should call the <code class="codecolorer php default"><span class="php">&nbsp;wp_oembed_add_provider<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> function.</p>
<p>In it&#8217;s simplest form, all you have to do is:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">class My_Plugin {<br />
<br />
&nbsp; var $oembed_endpoint;<br />
&nbsp; var $oembed_format;<br />
<br />
&nbsp; function __construct() <br />
&nbsp; {<br />
&nbsp; &nbsp; $this-&gt;oembed_endpoint = 'http://mysuperawesomevideosite.com';<br />
&nbsp; &nbsp; $this-&gt;oembed_format = 'http://mysuperawesomevideosite.com/video/*';<br />
<br />
&nbsp; &nbsp; $this-&gt;new_oembed();<br />
&nbsp; }<br />
<br />
&nbsp; function __destruct() {}<br />
<br />
&nbsp; function new_oembed()<br />
&nbsp; {<br />
&nbsp; &nbsp; wp_oembed_add_provider( $this-&gt;oembed_format, $this-&gt;oembed_endpoint );<br />
&nbsp; }<br />
<br />
}</div></td></tr></tbody></table></div>
<p>Then, to make this code work, just instantiate the class somewhere.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000088;">$my_plugin</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> My_Plugin<span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>Voila!</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/Sp2h2xHqT44" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/12/14/tutorial-adding-an-oembed-provider-to-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/12/14/tutorial-adding-an-oembed-provider-to-wordpress/</feedburner:origLink></item>
		<item>
		<title>10 Things You Need to Know About WordPress 3.3</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/dmWylG6mQlk/</link>
		<comments>http://technosailor.com/2011/11/17/10-things-you-need-to-know-about-wordpress-3-3/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 20:22:17 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wordpress 3.3]]></category>
		<category><![CDATA[wordpress cheatsheets]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8498</guid>
		<description><![CDATA[WordPress 3.2 has been downloaded a killer 12M+ times. WordPress as a whole continues to grow and is touted to be in the approximate 14% of the web zone. That&#8217;s ridiculously huge and it astounds me how big the projects footprint has become in the 7 years I&#8217;ve been around the community. Well done to [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://technosailor.com/files/Screen-Shot-2011-11-17-at-2.18.53-PM-600x397.png" alt="WordPress Downloaded over 12.5M times" title="WordPress Downloaded over 12.5M times" width="584" height="386" class="alignright size-large wp-image-8505" />WordPress 3.2 has been downloaded a killer 12M+ times. WordPress as a whole continues to grow and is touted to be in the approximate 14% of the web zone. That&#8217;s ridiculously huge and it astounds me how big the projects footprint has become in the 7 years I&#8217;ve been around the community. Well done to all involved!</p>
<p>With that said, WordPress 3.3 is just around the corner and, as usual, it&#8217;s chock full of goodies for everyone. I&#8217;d say that the notable changes for developers are the most significant. Improved metadata handling, improved SQL tools, improved cache API and deprecation of several venerable functions are all changes that developers should be aware of.</p>
<p>This article touches mostly on the user experience and features that are new in WordPress 3.3. Developers who want to dive in should reference <a href="http://codex.wordpress.org/Version_3.3">this running list of &#8220;things&#8221; that were addressed in WP 3.3</a>.</p>
<h2>Admin Bar Overhaul</h2>
<p>The Admin Bar that was introduced a few versions ago has become a main-stay of my WordPress experience. At first, I felt like it got in the way, but I soon got used to it. In WordPress 3.3, the Admin Bar gets tweaked and enhanced. For Multisite users, you now have access to the Network Admin from a new &#8220;My Sites&#8221; menu along with all sites that you have access to <a class="simple-footnote" title="You will only see sites that you have a Core Role on (Administrator, Editor, Author, Contributor, Subscriber). Super Admins that are not assigned to a blog, even though they have access to it as a Super Admin, will not have that blog listed" id="return-note-8498-1" href="#note-8498-1"><sup>1</sup></a>.</p>
<p>As usual, developers can modify the admin bar using the <code class="codecolorer text default"><span class="text">admin_bar_menu</span></code> action, and hooking a callback that modifies the <code class="codecolorer php default"><span class="php"><span style="color: #000088;">$wp_admin_bar</span></span></code> global. This object is created by the <code class="codecolorer php default"><span class="php">WP_Admin_Bar</span></code> class that provides an <code class="codecolorer php default"><span class="php">add_menu<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> and <code class="codecolorer php default"><span class="php">remove_menu<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span></span></code> method for manipulation.</p>
<p>Sample Code:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">function</span> ab_add_faq_link<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
<span style="color: #009900;">&#123;</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$wp_admin_bar</span><span style="color: #339933;">;</span><br />
&nbsp; <span style="color: #000088;">$wp_admin_bar</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add_menu</span><span style="color: #009900;">&#40;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'menu_faq'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'title'</span> <span style="color: #339933;">=&gt;</span> __<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'FAQs'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'href'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'http://example.com/faqs'</span><span style="color: #339933;">,</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">'meta'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'class'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'custom_adminbar_menu'</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#41;</span><br />
&nbsp; <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span><br />
add_action<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'wp_admin_bar'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ab_add_faq_link'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<h2>HTML5 Admin/Responsive Layout</h2>
<p>More Admin-side improvements, like a conversion to HTML5 are a little more understated and less pronounced &#8211; unless you&#8217;re trying to access it from your iPhone or mobile phone. The conversion to HTML5, while meeting the trends of the day, also have the practical effect of providing an adaptive design which conforms to the device or viewport you are using. There&#8217;s nothing too crazy here, but with the web world going in the direction of HTML5, this move lays groundwork for new HTML5 features in the future.</p>
<h2>Drag and Drop Media Uploader</h2>
<p>One of the biggest new features in WordPress 3.3 (and a long time in coming!) is a new and improved media uploader. This is a feature that is discussed every single release cycle but because there&#8217;s only so much room in a major release cycle for major features (and this is a huge rewrite), it has continued to get bumped to a future release &#8211; until now.</p>
<p>While the new uploader is not the holy grail and I feel like there&#8217;s still a lot of room for improvement, it takes a giant leap forward in making the web interface feel more natural and more like a native application.</p>
<p>What am I talking about? Well, three words: Drag and Drop. With the new media uploaded, it&#8217;s as simple as dragging files to the &#8220;drop zone&#8221; in the native way that your OS allows: On Mac, from the Finder or by dragging the title bar icon in the app you&#8217;re using (Photoshop? Preview? Skitch?) into drop zone. On Windows, by pulling your file from Explorer into the Drop Zone.</p>
<p>Plus, related to the last feature, this media uploader prefers HTML5. For the geeky, the failover for HTML5 uploading is first Silverlight, then Flash then the old fashioned &#8220;Choose File&#8221; HTML dialog.</p>
<div id="attachment_8501" class="wp-caption aligncenter" style="width: 594px"><img class="size-large wp-image-8501" title="HTML5 Media Uploader" src="http://technosailor.com/files/Screen-Shot-2011-11-17-at-12.04.37-PM-600x375.png" alt="HTML5 Media Uploader" width="584" height="365" /><p class="wp-caption-text">HTML5 Media Uploader</p></div>
<h2>Welcome Screen and Pointers</h2>
<p><img class="alignright size-full wp-image-8502" title="Dashboard ‹ Technosailor.com — WordPress" src="http://technosailor.com/files/Dashboard-‹-Technosailor.com-—-WordPress.jpg" alt="" width="355" height="209" />If you already are using WordPress, you won&#8217;t see the welcome screen unless you setup a new WordPress install <a class="simple-footnote" title="You can manually turn the Welcome panel on in the Dashboard Screen Option" id="return-note-8498-2" href="#note-8498-2"><sup>2</sup></a>. The Welcome panel gives an overview of WordPress to new users.</p>
<p>More importantly, there is a new jQuery plugin that adds &#8220;Pointers&#8221; to WordPress whenever a new core, user facing feature is added. In WordPress 3.3, you&#8217;ll see one immediately pertaining to the new Admin Bar. However, Plugin and Theme developers who want to highlight new features can also do so. If you know jQuery, the following code is a good head start in the right direction:</p>
<p>Sample Code:</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">function ab_pointers()<br />
{<br />
&nbsp; if( !is_admin() )<br />
&nbsp; &nbsp; return false;<br />
<br />
&nbsp; // Get Proper CSS involved - probably already included, but we want to be safe.<br />
&nbsp; wp_enqueue_style( 'wp-pointer' );<br />
&nbsp; wp_print_styles();<br />
<br />
&nbsp; // Get Proper bundled jQuery plugin involved - probably already included, but just to be safe<br />
&nbsp; wp_enqueue_script( 'wp-pointer' );<br />
&nbsp; wp_print_scripts();<br />
<br />
&nbsp; // Define text for the Pointer. Make sure you escape stuff<br />
&nbsp; $widget_text = '&lt;h3&gt;' . esc_js( __( 'Important!') ) . '&lt;/h3&gt;';<br />
&nbsp; $widget_text .= '&lt;p&gt;' . esc_js( __( &quot;This is where you would put some text that'll help the user understand WTF is up with your new stuff. Use it wisely and make sure it's short (Users won't read it if it's too long and once they dismiss it, it won't be shown again)&quot; ) ). '&lt;/p&gt;';<br />
&nbsp; ?&gt;<br />
&nbsp; &lt;script type=&quot;text/javascript&quot;&gt;<br />
&nbsp; jQuery(document).ready(function(){<br />
&nbsp; &nbsp; jQuery('#your_dom_element').pointer({<br />
&nbsp; &nbsp; &nbsp; content &nbsp; &nbsp;: '<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$widget_text</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>',<br />
&nbsp; &nbsp; &nbsp; position&nbsp; &nbsp;: 'left',<br />
&nbsp; &nbsp; &nbsp; close &nbsp;: function() {}<br />
&nbsp; &nbsp; }).pointer('open');<br />
&nbsp; });<br />
&nbsp; &lt;/script&gt;<br />
&nbsp; <span style="color: #000000; font-weight: bold;">&lt;?php</span><br />
<span style="color: #009900;">&#125;</span><br />
add_action<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'admin_head'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'ab_pointers'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></div></td></tr></tbody></table></div>
<p>I imagine this will get easier to implement in the future.</p>
<h2>Improvements to Distraction Free Writing</h2>
<p>Distraction Free Writing, <a href="http://technosailor.com/2011/06/20/10-things-you-need-to-know-about-wordpress-3-2/">which made its debut in WordPress 3.2</a>, offered bloggers vast improvements to how they wrote content by removing the silly things that, well, distract from the job of writing.</p>
<p>In WordPress 3.3, DFW now integrates the content width and other CSS stylings of post content into the editor. This is all based on the active theme CSS and it attempts to aid the blogger in formatting properly for the theme the content will be displayed in.</p>
<h2>Admin Menu Flyouts</h2>
<p>A minor enhancement, yet important from a UI perspective &#8211; especially for those of you who, like me, constantly have wp-admin menus expanded &#8211; are menu flyouts. Very simple little thing, but when a user mouses over a menu, the submenu items under it appear in a &#8220;flyout&#8221; to the right and disappear when the mouse is no longer over the top level menu. Of course, for touch devices and clicky people, the collapse/expand functionality still exists.</p>
<p><img class="alignright size-large wp-image-8503" title="Screen Shot 2011-11-17 at 1.19.54 PM" src="http://technosailor.com/files/Screen-Shot-2011-11-17-at-1.19.54-PM-600x394.png" alt="" width="584" height="383" /></p>
<h2>Tumblr Importer</h2>
<p>Technically, importers are <a href="http://technosailor.com/2009/11/11/10-things-you-need-to-know-about-wordpress-2-9/">no longer bundled with WordPress core</a>. They are plugins. However, the removed importers are still listed on the Tools > Import console and can be installed from within WordPress.</p>
<p>An importer that has been in demand for some time, due to the popularity of <a href="http://tumblr.com">Tumblr</a> but the more popular nature of WordPress, is a Tumblr importer. Now that is available &#8211; also as a one-click plugin &#8211; to assist Tumblrs in moving to WordPress.<br />
<div id="attachment_8504" class="wp-caption alignright" style="width: 594px"><img src="http://technosailor.com/files/Screen-Shot-2011-11-17-at-1.35.13-PM-600x394.png" alt="Tumblr Importer" title="Tumblr Importer" width="584" height="383" class="size-large wp-image-8504" /><p class="wp-caption-text">Tumblr Importer</p></div></p>
<p>Go forth and enjoy a better blogging experience. And hey, use <a href="http://codex.wordpress.org/Press_This">Press This</a> if you like the Tumble style.</p>
<h2>Multisite &#8211; Internationalized Domain Name Support</h2>
<p>For non-english Multisite installs, it is now possible to designate an international domain name <a class="simple-footnote" title="IDNs are domain names that contains non-ASCII characters such as are provided by languages like Arabic, Kanji or Hiragana or language styles like Cyrillic" id="return-note-8498-3" href="#note-8498-3"><sup>3</sup></a> as the site install domain. In Multisite, this means that base installs of WordPress can use IDNs now, which will serve to increase the adoption of these domains in non-English speaking parts of the world.</p>
<p>ワードプレスのイェーイ.jp, FTW!</p>
<h2>Multisite &#8211; Network Enabled Themes and Theme Updates</h2>
<p>Since we&#8217;re on the topic of Multisite, WordPress 3.3 brings the Network Activate option that has been available for plugins to themes. The plugin flow and the theme flow is different in WordPress, so this option makes things significantly easier. The plugin workflow only allows Super Admins to <em>install</em> WordPress and gives the Super Admin the ability to turn off the plugin menu for Blog Admins, but if left turned on, any Admin can activate any available plugin for their particular blog. For plugins, Super Admins can designate a plugin as a global plugin by Network activating in the Network Admin.</p>
<p>For Themes, it was an arduous task of making themes available to sub-sites in the past. Now, after installing a theme from the Network Admin, all it takes is a single click on Network Activate to make that theme available to sites in the network.</p>
<h2>Deprecating Feeds</h2>
<p>Finally, for those of you who rely on your feeds and are stuck in the stone age still, WordPress no longer supports old RSS 0.92 feeds and RDF feeds. For what it&#8217;s worth though, the default RSS feed is the still supported RSS 2.0 feed (add <code class="codecolorer text default"><span class="text">/feed</span></code> to the end of just about any URL in WordPress and that is your RSS 2.0 feed.</p>
<p>Still, I know some of you don&#8217;t like to change and may be using the old feeds. There are two things to note:</p>
<ol>
<li>These now-deprecated feeds will redirect to the proper feed, with 301,</li>
<li>If you use <a href="http://feedburner.com">FeedBurner</a>, or similar feed repurposing and syndication service, please make sure you are using the RSS 2.0 feed, not the RSS 0.92 feed. Like I said, a 301 will occur but that is actually additional load on the web server because it generates additional HTTP requests</li>
</ol>
<h2>Wrap Up</h2>
<p>Sadly, this was the first WordPress release in some time where I have not contributed any code. There are a lot of reasons for that, none of which are all that important. But the core development team has really done a great job with this release and they should be commended. </p>
<p>If you really like WordPress, <a href="http://wordpressfoundation.org/donate/">thank the team with a donation to the WordPress Foundation</a>. All of the work that has gone into this release has come on the backs of volunteers or dedicated, full time paid employees of other companies who have been &#8220;donated&#8221; to the project.</p>
<div class="simple-footnotes"><p class="notes">Notes:</p><ol><li id="note-8498-1">You will only see sites that you have a Core Role on (Administrator, Editor, Author, Contributor, Subscriber). Super Admins that are not assigned to a blog, even though they have access to it as a Super Admin, will not have that blog listed <a href="#return-note-8498-1">&#8617;</a></li><li id="note-8498-2">You can manually turn the Welcome panel on in the Dashboard Screen Option <a href="#return-note-8498-2">&#8617;</a></li><li id="note-8498-3">IDNs are domain names that contains non-ASCII characters such as are provided by languages like Arabic, Kanji or Hiragana or language styles like Cyrillic <a href="#return-note-8498-3">&#8617;</a></li></ol></div><img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/dmWylG6mQlk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/11/17/10-things-you-need-to-know-about-wordpress-3-3/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/11/17/10-things-you-need-to-know-about-wordpress-3-3/</feedburner:origLink></item>
		<item>
		<title>TUTORIAL: Using Sass and Compass for managing CSS in WordPress</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/3WPkrkIRVDM/</link>
		<comments>http://technosailor.com/2011/11/02/tutorial-using-sass-and-compass-for-managing-css-in-wordpress/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 19:35:36 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[compass]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[sass]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ux design]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8494</guid>
		<description><![CDATA[I don&#8217;t often write tutorials but since the rebuild of the WP Engine website some months ago, I have been turned on to the use of a brilliant combination of tools made for development in a Ruby on Rails environment. That doesn&#8217;t mean we can&#8217;t make it work for WordPress too. The tools are Compass [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t often write tutorials but since the rebuild of the <a href="http://wpengine.com">WP Engine</a> website some months ago, I have been turned on to the use of a brilliant combination of tools made for development in a Ruby on Rails environment. That doesn&#8217;t mean we can&#8217;t make it work for WordPress too.</p>
<p><img class="aligncenter size-full wp-image-8496" title="wp-compass" src="http://technosailor.com/files/wp-compass.png" alt="" width="600" height="250" /></p>
<p>The tools are <a href="http://compass-style.org/">Compass</a> combined with <a href="http://sass-lang.com/">Sass</a> (which means Sytactically Awesome Stylesheets or some random crap like that).</p>
<p>Sass is cool because it lets you do a whole bunch of stuff with CSS that you couldn&#8217;t normally. It&#8217;s a kind of abstraction layer above CSS which means you can write normal CSS if you want, but then why wouldn&#8217;t you just write normal CSS instead of using Sass?</p>
<p>I&#8217;m getting slightly ahead of myself, but With Sass you can do awesome things like variable/placeholders which is awesome for things like defining core elements of a stylesheet such as a palette of colors.</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$cloud-<span style="color: #000000; font-weight: bold;">blue</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#d9e7f3</span><span style="color: #00AA00;">;</span><br />
$light-<span style="color: #000000; font-weight: bold;">blue</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#f0f7fc</span><span style="color: #00AA00;">;</span><br />
$dark-<span style="color: #000000; font-weight: bold;">blue</span><span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#036</span><span style="color: #00AA00;">;</span><br />
$green<span style="color: #00AA00;">:</span> <span style="color: #cc00cc;">#7ca60a</span><span style="color: #00AA00;">;</span></div></td></tr></tbody></table></div>
<p>Then using those variables, you can just use these placeholders in your SCSS (Sassy CSS) file:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">a <span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> $dark-<span style="color: #000000; font-weight: bold;">blue</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span><br />
a<span style="color: #3333ff;">:hover </span><span style="color: #00AA00;">&#123;</span> <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> $light-<span style="color: #000000; font-weight: bold;">blue</span><span style="color: #00AA00;">;</span> <span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>You can also write Mixins. Mixins are essentially reusable blocks of CSS that look a lot like functions you would see in languages like JavaScript, PHP or Ruby:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$radius<span style="color: #00AA00;">:</span><span style="color: #933;">5px</span><span style="color: #00AA00;">;</span><br />
<br />
<span style="color: #a1a100;">@mixin border-radius($radius)</span><br />
<span style="color: #00AA00;">&#123;</span><br />
border-radius<span style="color: #00AA00;">:</span>$radius<span style="color: #00AA00;">;</span><br />
-moz-border-radius<span style="color: #00AA00;">:</span> $radius<span style="color: #00AA00;">;</span><br />
-webkit-border-radius<span style="color: #00AA00;">:</span> $radius<span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<p>You can use that in your SCSS file as such:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">form input <span style="color: #00AA00;">&#123;</span> <span style="color: #a1a100;">@include border-radius(5px); }</span></div></td></tr></tbody></table></div>
<p>But again, I&#8217;m getting ahead of myself.</p>
<p>When I talked about using Sass and Compass on Twitter, other WordPress devs made comments that made me want to write this tutorial. One person said that they were tired of Rails developers having all the toys &#8211; and it&#8217;s true. There are so many awesome things out there for Rails developers that we as PHP and WordPress developers don&#8217;t benefit from. This tutorial is non-exhaustive. There are tons of things that you can do with this that I won&#8217;t cover. But this should get you going with Mac OS X Lion, developing WordPress locally on your own machine and uploading to a theme file called &#8220;test&#8221; on a remote server.</p>
<h2>Prerequisites</h2>
<p>First of all, you need to have a local version of WordPress running. There are a variety of ways to do this, but I use the approach of installing XAMPP. <a href="http://www.endlesslycurious.com/2011/03/14/running-wordpress-on-mac-os-x-with-xampp/">Here&#8217;s a tutorial on that</a>. Follow the rabbit trail to configure Apache to look to your Sites directory, as I have, or make that translation in your head to what the default is. There&#8217;s plenty of instruction on how to do that on the internet.</p>
<p>For the specifics of this tutorial, it&#8217;s <strong>very important</strong> that you have the latest version of Ruby. The best way to do this is with a tool called rvm, or Ruby Version Manager. Install this with the following Terminal command:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">bash</span> <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #000000; font-weight: bold;">&lt;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>curl <span style="color: #660033;">-s</span> https:<span style="color: #000000; font-weight: bold;">//</span>raw.github.com<span style="color: #000000; font-weight: bold;">/</span>wayneeseguin<span style="color: #000000; font-weight: bold;">/</span>rvm<span style="color: #000000; font-weight: bold;">/</span>master<span style="color: #000000; font-weight: bold;">/</span>binscripts<span style="color: #000000; font-weight: bold;">/</span>rvm-installer<span style="color: #7a0874; font-weight: bold;">&#41;</span></div></td></tr></tbody></table></div>
<p>Once rvm is installed, use it to install 1.9.3-p0, the only current version compatible with OS X Lion, and refresh your Terminal profile settings. The last command sets 1.9.3-p0 (or whatever future version you choose to use) as your default.</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">rvm <span style="color: #c20cb9; font-weight: bold;">install</span> 1.9.3-p0<br />
rvm reload<br />
<span style="color: #7a0874; font-weight: bold;">source</span> ~<span style="color: #000000; font-weight: bold;">/</span>.bash_profile<br />
rvm <span style="color: #660033;">--default</span> use 1.9.3-p0</div></td></tr></tbody></table></div>
<p>If you wish to verify that you&#8217;ve got the proper version of Ruby active, verify it with the <code class="codecolorer bash default"><span class="bash">ruby <span style="color: #660033;">-v</span></span></code> command.</p>
<p>My system reported:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]</div></td></tr></tbody></table></div>
<p>Now, there are some gems that need to be installed. For developers unfamiliar with Ruby &#8211; or Rails &#8211; gems, are essentially additional libraries that are installed into the Ruby framework, much like PHP PEAR or PECL modules.</p>
<p>The first is <a href="http://rubygems.org/gems/builder">Builder, which is used for building XML structures. The second one is <a href="http://compass-style.org">Compass</a> which will give us the ability to leverage Sass for CSS authoring.</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gem <span style="color: #c20cb9; font-weight: bold;">install</span> builder<br />
gem <span style="color: #c20cb9; font-weight: bold;">install</span> compass</div></td></tr></tbody></table></div>
<h2>Creating a Sass Project</h2>
<p>Once we have everything installed properly, we can start a new project. I keep this out of my web directory (i.e. WordPress structure). Personally, I&#8217;ve created a sass directory under my user profile (/Users/aaron/sass) and run my projects out of it with a separate directory for each project.</p>
<p>Now we have to create our compass project. We do that with <code class="codecolorer bash default"><span class="bash">compass create</span></code> from our <code class="codecolorer text default"><span class="text">~/sass</span></code> directory and then moving into the newly created directory.</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">compass create <span style="color: #7a0874; font-weight: bold;">test</span><br />
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #7a0874; font-weight: bold;">test</span></div></td></tr></tbody></table></div>
<p>Doing a directory listing should show something along these lines:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">NCC-1701:test aaron$ ls -la<br />
total 8<br />
drwxr-xr-x 6 aaron staff 204 Nov 2 11:36 .<br />
drwxr-xr-x 4 aaron staff 136 Nov 2 11:36 ..<br />
drwxr-xr-x 5 aaron staff 170 Nov 2 11:36 .sass-cache<br />
-rw-r--r-- 1 aaron staff 861 Nov 2 11:36 config.rb<br />
drwxr-xr-x 5 aaron staff 170 Nov 2 11:36 sass<br />
drwxr-xr-x 5 aaron staff 170 Nov 2 11:36 stylesheets</div></td></tr></tbody></table></div>
<p>Good. Our project is created but we need to make some changes to make this work with WordPress. To do this, we need to edit the <code class="codecolorer text default"><span class="text">config.rb</span></code> file which is the project configuration file. You can edit this file in Textmate, vi, or whatever you choose as your preferred text editor.</p>
<p>The default configuration is:</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http_path = <span style="color:#996600;">&quot;/&quot;</span><br />
css_dir = <span style="color:#996600;">&quot;stylesheets&quot;</span><br />
sass_dir = <span style="color:#996600;">&quot;sass&quot;</span><br />
images_dir = <span style="color:#996600;">&quot;images&quot;</span><br />
javascripts_dir = <span style="color:#996600;">&quot;javascripts&quot;</span></div></td></tr></tbody></table></div>
<p>My config file looks like this:</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http_path = <span style="color:#996600;">&quot;../../Sites&quot;</span><br />
css_dir = <span style="color:#996600;">&quot;../../Sites/wp-content/themes/test/css&quot;</span><br />
sass_dir = <span style="color:#996600;">&quot;sass&quot;</span><br />
images_dir = <span style="color:#996600;">&quot;images&quot;</span><br />
javascripts_dir = <span style="color:#996600;">&quot;js&quot;</span><br />
project_type = <span style="color:#ff3333; font-weight:bold;">:stand_alone</span><br />
output_style = <span style="color:#ff3333; font-weight:bold;">:nested</span><br />
line_comments = <span style="color:#0000FF; font-weight:bold;">false</span></div></td></tr></tbody></table></div>
<p>Important changes here:</p>
<ul>
<li>The <code class="codecolorer text default"><span class="text">http_path</span></code> is a <em>relative</em> path to my DOCROOT &#8211; for some reason, things got whacked when using an absolute path.</li>
<li>The <code class="codecolorer text default"><span class="text">css_dir</span></code> is a <em>relative</em> path to the <code class="codecolorer text default"><span class="text">css</span></code> directory in my WordPress theme directory. At this time, there is no configuration option to control the name of the CSS files being generated so we will have to use <code class="codecolorer css default"><span class="css"><span style="color: #a1a100;">@import</span></span></code> inside the required WordPress <code class="codecolorer text default"><span class="text">style.css</span></code> template file to incorporate Compass generated CSS files.</li>
<li>You can change the <code class="codecolorer text default"><span class="text">images_dir</span></code> and <code class="codecolorer text default"><span class="text">javascripts_dir</span></code> as needed to reflect your taste. Personally, I prefer shorter names, so that is reflected in the config file.</li>
<li>The <code class="codecolorer text default"><span class="text">project_type</span></code> flag is required because, if omitted, Compass assumes we are working in a Rails environment on a Rails project with Rails conventions&#8230; WordPress is none of that.</li>
<li>The <code class="codecolorer text default"><span class="text">output_style</span></code> flag has been set to <code class="codecolorer text default"><span class="text">:nested</span></code> but could be <code class="codecolorer text default"><span class="text">:expanded</span></code>, <code class="codecolorer text default"><span class="text">:compact</span></code> or <code class="codecolorer text default"><span class="text">:compressed</span></code> depending on your tastes.</li>
<li>The <code class="codecolorer text default"><span class="text">line_comments</span></code> flag has been set to false to remove debug information from the generated CSS</li>
</ul>
<p>All configuration options can be referenced in the <a href="http://compass-style.org/help/tutorials/configuration-reference/">Compass docs</a>.</p>
<p>Having modified the config file, we can take one of two approaches to generating the CSS in our WordPress theme. We can use the <code class="codecolorer bash default"><span class="bash">compass compile</span></code> which will generate the files one time. Everytime modifications are made, however, this command would have to be re-run. I prefer, instead, to use <code class="codecolorer bash default"><span class="bash">compass <span style="color: #c20cb9; font-weight: bold;">watch</span></span></code> which is a small process that remains running and watches your Sass project for changes and recompiles automatically when changes are made.</p>
<p>Simply run this command from inside the Sass project:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">compass <span style="color: #c20cb9; font-weight: bold;">watch</span><br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Change detected to: ie.scss<br />
create ..<span style="color: #000000; font-weight: bold;">/</span>..<span style="color: #000000; font-weight: bold;">/</span>Sites<span style="color: #000000; font-weight: bold;">/</span>wp-content<span style="color: #000000; font-weight: bold;">/</span>themes<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>ie.css<br />
create ..<span style="color: #000000; font-weight: bold;">/</span>..<span style="color: #000000; font-weight: bold;">/</span>Sites<span style="color: #000000; font-weight: bold;">/</span>wp-content<span style="color: #000000; font-weight: bold;">/</span>themes<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>print.css<br />
create ..<span style="color: #000000; font-weight: bold;">/</span>..<span style="color: #000000; font-weight: bold;">/</span>Sites<span style="color: #000000; font-weight: bold;">/</span>wp-content<span style="color: #000000; font-weight: bold;">/</span>themes<span style="color: #000000; font-weight: bold;">/</span>test<span style="color: #000000; font-weight: bold;">/</span>screen.css<br />
<span style="color: #000000; font-weight: bold;">/</span>Users<span style="color: #000000; font-weight: bold;">/</span>aaron<span style="color: #000000; font-weight: bold;">/</span>.rvm<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span>ruby-1.9.3-p0<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span>fssm-0.2.7<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>fssm<span style="color: #000000; font-weight: bold;">/</span>support.rb:<span style="color: #000000;">40</span>: Use RbConfig instead of obsolete and deprecated Config.<br />
FSSM -<span style="color: #000000; font-weight: bold;">&gt;</span> An optimized backend is available <span style="color: #000000; font-weight: bold;">for</span> this platform<span style="color: #000000; font-weight: bold;">!</span><br />
FSSM -<span style="color: #000000; font-weight: bold;">&gt;</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> rb-fsevent<br />
<span style="color: #000000; font-weight: bold;">&gt;&gt;&gt;</span> Compass is polling <span style="color: #000000; font-weight: bold;">for</span> changes. Press Ctrl-C to Stop.</div></td></tr></tbody></table></div>
<p>At this point, if you want to develop locally, all you have to do is have your WordPress <code class="codecolorer text default"><span class="text">style.css</span></code> import these stylesheets.</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">/*<br />
Theme Name: Test Theme<br />
Author: Aaron Brazell<br />
Author URI: http://emmense.com<br />
Description: A test theme demonstrating Sass and Compass<br />
Version: 1.0<br />
*/</span><br />
<br />
<span style="color: #a1a100;">@import url('css/screen.css');</span><br />
<span style="color: #a1a100;">@import url('css/print.css');</span><br />
<span style="color: #a1a100;">@import url('css/ie.css');</span></div></td></tr></tbody></table></div>
<h2>Uploading to a Remote WordPress Install</h2>
<p>Fortunately, with a little Ruby magic and some built in Compass hooks, we can also upload these newly created CSS files to our WordPress theme. In order to do this, you have to make sure the remote server has the theme directory created <em>and</em> if you are uploading to a subdirectory of that theme (e.g. theme_dir/css), that that directory is created as well.</p>
<p>In our case, the theme directory is <code class="codecolorer text default"><span class="text">test/</span></code> and I want to upload to a subdirectory <code class="codecolorer text default"><span class="text">test/css/</span></code>.</p>
<p>Next we have to install two new gems &#8211; the Net::SSH and Net::SFTP gems. Installing these is as straightforward as the earlier gems:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gem <span style="color: #c20cb9; font-weight: bold;">install</span> net-ssh<br />
gem <span style="color: #c20cb9; font-weight: bold;">install</span> net-sftp</div></td></tr></tbody></table></div>
<p>Once this has done, include these in your <code class="codecolorer text default"><span class="text">config.rb</span></code> file. I did this at the top which is best practice with Ruby.</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'net/ssh'</span><br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'net/sftp'</span></div></td></tr></tbody></table></div>
<p>Below all the previous configurations, add some configuration lines and replace values as needed for your own project:</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#008000; font-style:italic;"># note that this is the directory that CSS files will be written. It can be the theme dir</span><br />
<span style="color:#008000; font-style:italic;"># or a subdirectory (e.g. theme_dir/css). Whatever this path is MUST exist</span><br />
remote_theme_dir_absolute = <span style="color:#996600;">'/home/sites/emmense.com/httpdocs/wp-content/themes/test/css'</span><br />
<br />
<span style="color:#008000; font-style:italic;"># SFTP Connection Details - Does not support alternate ports os SSHKeys, but could with mods</span><br />
sftp_host = <span style="color:#996600;">'hostname.com'</span> <span style="color:#008000; font-style:italic;"># Can be an IP</span><br />
sftp_user = <span style="color:#996600;">'username'</span> <span style="color:#008000; font-style:italic;"># SFTP Username</span><br />
sftp_pass = <span style="color:#996600;">'password'</span> <span style="color:#008000; font-style:italic;"># SFTP Password</span></div></td></tr></tbody></table></div>
<p>Finally, we can leverage Compass&#8217; built-in <code class="codecolorer text default"><span class="text">on_stylesheet_saved</span></code> hook to upload to the remote server using your SFTP credentials:</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#008000; font-style:italic;"># Callback to be used when a file change is written. This will upload to a remote WP install</span><br />
on_stylesheet_saved <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>filename<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; <span style="color:#ff6633; font-weight:bold;">$local_path_to_css_file</span> = css_dir <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'/'</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">basename</span><span style="color:#006600; font-weight:bold;">&#40;</span>filename<span style="color:#006600; font-weight:bold;">&#41;</span><br />
<br />
&nbsp; <span style="color:#6666ff; font-weight:bold;">Net::SFTP</span>.<span style="color:#9900CC;">start</span><span style="color:#006600; font-weight:bold;">&#40;</span> sftp_host, sftp_user, <span style="color:#ff3333; font-weight:bold;">:password</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; sftp_pass <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>sftp<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; &nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> sftp.<span style="color:#9900CC;">upload</span>! <span style="color:#ff6633; font-weight:bold;">$local_path_to_css_file</span>, remote_theme_dir_absolute <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">basename</span><span style="color:#006600; font-weight:bold;">&#40;</span>filename<span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;&gt;&gt;&gt; Compass is polling for changes. Press Ctrl-C to Stop&quot;</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></td></tr></tbody></table></div>
<p>Restart Compass, save one of your Sass .scss files with a change of some sort (from where CSS will be compiled), and watch your files be saved locally and remotely.</p>
<p>At this point, my full <code class="codecolorer text default"><span class="text">config.rb</span></code> file looks like this:</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br /></div></td><td><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#008000; font-style:italic;"># Require any additional compass plugins here.</span><br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'net/ssh'</span><br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'net/sftp'</span><br />
<br />
<span style="color:#008000; font-style:italic;"># Set this to the root of your project when deployed:</span><br />
http_path = <span style="color:#996600;">&quot;../../Sites&quot;</span><br />
css_dir = <span style="color:#996600;">&quot;../../Sites/wp-content/themes/test/css&quot;</span><br />
sass_dir = <span style="color:#996600;">&quot;sass&quot;</span><br />
images_dir = <span style="color:#996600;">&quot;images&quot;</span><br />
javascripts_dir = <span style="color:#996600;">&quot;javascripts&quot;</span><br />
<br />
project_type = <span style="color:#ff3333; font-weight:bold;">:stand_alone</span><br />
output_style = <span style="color:#ff3333; font-weight:bold;">:nested</span><br />
line_comments = <span style="color:#0000FF; font-weight:bold;">false</span><br />
<br />
<span style="color:#008000; font-style:italic;"># note that this is the directory that CSS files will be written. It can be the theme dir</span><br />
<span style="color:#008000; font-style:italic;"># or a subdirectory (e.g. theme_dir/css). Whatever this path is MUST exist</span><br />
remote_theme_dir_absolute = <span style="color:#996600;">'/home/sites/emmense.com/httpdocs/wp-content/themes/test/css'</span><br />
<br />
<span style="color:#008000; font-style:italic;"># SFTP Connection Details - Does not support alternate ports os SSHKeys, but could with mods</span><br />
sftp_host = <span style="color:#996600;">'hostname.com'</span> <span style="color:#008000; font-style:italic;"># Can be an IP</span><br />
sftp_user = <span style="color:#996600;">'username'</span> <span style="color:#008000; font-style:italic;"># SFTP Username</span><br />
sftp_pass = <span style="color:#996600;">'password'</span> <span style="color:#008000; font-style:italic;"># SFTP Password</span><br />
<br />
<span style="color:#008000; font-style:italic;"># Callback to be used when a file change is written. This will upload to a remote WP install</span><br />
on_stylesheet_saved <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>filename<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; <span style="color:#ff6633; font-weight:bold;">$local_path_to_css_file</span> = css_dir <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#996600;">'/'</span> <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">basename</span><span style="color:#006600; font-weight:bold;">&#40;</span>filename<span style="color:#006600; font-weight:bold;">&#41;</span><br />
<br />
&nbsp; <span style="color:#6666ff; font-weight:bold;">Net::SFTP</span>.<span style="color:#9900CC;">start</span><span style="color:#006600; font-weight:bold;">&#40;</span> sftp_host, sftp_user, <span style="color:#ff3333; font-weight:bold;">:password</span> =<span style="color:#006600; font-weight:bold;">&amp;</span>gt; sftp_pass <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>sftp<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; &nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> sftp.<span style="color:#9900CC;">upload</span>! <span style="color:#ff6633; font-weight:bold;">$local_path_to_css_file</span>, remote_theme_dir_absolute <span style="color:#006600; font-weight:bold;">+</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">basename</span><span style="color:#006600; font-weight:bold;">&#40;</span>filename<span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;&gt;&gt;&gt;&gt; Compass is polling for changes. Press Ctrl-C to Stop&quot;</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></td></tr></tbody></table></div>
<h2>Conclusion</h2>
<p>Rails developers have all the fun. It&#8217;s true. But with Compass, Sass and a little bit of Ruby, PHP developers (including WordPress theme developers) have a great tool that will make workflows more efficient, CSS more readable and structured and central management more coherent.</p>
<p>Obviously, I did not get too far into the details of <em>using</em> Compass and Sass. That&#8217;s a whole tutorial to itself. For information on that, I&#8217;d recommend checking out these fine articles written on the topic:</p>
<ul>
<li><a href="http://net.tutsplus.com/tutorials/html-css-techniques/using-compass-and-sass-for-css-in-your-next-project/">Using Compass and Sass for CSS in Your Next Project</a> (NetTuts+)</li>
<li><a href="http://sass-lang.com/tutorial.html">Official Sass Tutorials</a> (sass-lang.org)</li>
</ul>
<p><em>(Protip: I love being able to nest CSS&#8230; try it)</em></p>
<p><em>Disclaimer: I am a PHP developer, not a Ruby developer. My Ruby code could probably be improved upon by someone who is more in tune with the Ruby language.</em></p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/3WPkrkIRVDM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/11/02/tutorial-using-sass-and-compass-for-managing-css-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/11/02/tutorial-using-sass-and-compass-for-managing-css-in-wordpress/</feedburner:origLink></item>
		<item>
		<title>Platforms vs. Products: Google Does Some Soul Searching</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/u7YTppnR9Dw/</link>
		<comments>http://technosailor.com/2011/10/13/platforms-vs-products-google-does-some-soul-searching/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 16:17:39 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[platforms]]></category>
		<category><![CDATA[products]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8492</guid>
		<description><![CDATA[A rant from a Googler comparing Amazon&#8217;s focus on a platform vs Google&#8217;s focus on products. Fundamental.]]></description>
			<content:encoded><![CDATA[<p><a href="http://steverant.pen.io/">A rant</a> from a Googler comparing Amazon&#8217;s focus on a platform vs Google&#8217;s focus on products. Fundamental.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/u7YTppnR9Dw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/10/13/platforms-vs-products-google-does-some-soul-searching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/10/13/platforms-vs-products-google-does-some-soul-searching/</feedburner:origLink></item>
		<item>
		<title>Changing Roles at WP Engine</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/JT0Sp8bfZ6s/</link>
		<comments>http://technosailor.com/2011/10/03/changing-roles-at-wp-engine/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 17:10:05 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[employment]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wpengine]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8491</guid>
		<description><![CDATA[For some time, I&#8217;ve felt there was a change coming and today, I&#8217;m ready to announce that my role within WP Engine is changing. Starting today, I have transitioned into an advisory and consulting role with the company. Effective immediately, I will be taking the portion of the business that focused on professional services and [...]]]></description>
			<content:encoded><![CDATA[<p>For some time, I&#8217;ve felt there was a change coming and today, I&#8217;m ready to announce that my role within <a href="http://wpengine.com">WP Engine</a> is changing. Starting today, I have transitioned into an advisory and consulting role with the company.</p>
<p>Effective immediately, I will be taking the portion of the business that focused on professional services and consulting to allow the company to focus on premiere WordPress hosting. It&#8217;s a good thing and I&#8217;m excited about the possibilities. Back in November, we decided to start taking on some professional services work to augment demands from many of our customers. It was awesome to have fast, secure, scaleable, managed hosting but they wanted more!</p>
<p>And we wanted more.</p>
<p>However, as the company has evolved, taken funding, hired more people, addressed growth challenges and built out our hosting option, it seemed clear that the professional services portion of the company was a separate kind of deal than what we wanted to focus on.</p>
<p>So today, I&#8217;ll be taking that portion of the company (and all related existing and current relationships, as agreed on), and working on that. Meanwhile, I&#8217;ll still be working with the company to guide direction and strategy. So it&#8217;s good for everyone.</p>
<p>Effective immediately, I am available for all WordPress consulting roles. However, I am also currently entertaining all possibilities involving full time employment as well, and welcome those conversations.</p>
<p>To contact me, please direct emails to <a href="mailto:aaron@technosailor.com">aaron@technosailor.com</a>. As transitions go, the immediate financial impact is something that I need to consider.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/JT0Sp8bfZ6s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/10/03/changing-roles-at-wp-engine/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/10/03/changing-roles-at-wp-engine/</feedburner:origLink></item>
		<item>
		<title>How is WordPress Subversion Organized</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/3cos3_wOUfc/</link>
		<comments>http://technosailor.com/2011/09/30/how-is-wordpress-subversion-organized/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 17:14:26 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wordpress development]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8486</guid>
		<description><![CDATA[There&#8217;s some confusion about how WordPress organizes it&#8217;s Subversion (SVN) repository. Most SVN repositories are organized into three main directories, as is best practice &#8212; trunk, tags, branches. The repository can be found at http://core.svn.wordpress.org/ and a primer on how to use SVN for WordPress development can be found on Mark&#8217;s blog and, for Windows, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://technosailor.com/files/svn-600x450.jpg" alt="" title="svn" width="584" height="438" class="aligncenter size-large wp-image-8487" /><br />
There&#8217;s some confusion about how WordPress organizes it&#8217;s Subversion (SVN) repository. Most SVN repositories are organized into three main directories, as is best practice &mdash; trunk, tags, branches. </p>
<p>The repository can be found at <a href="http://core.svn.wordpress.org/">http://core.svn.wordpress.org/</a> and a primer on how to use SVN for WordPress development can be found on <a href="http://markjaquith.wordpress.com/2005/11/02/my-wordpress-toolbox/">Mark&#8217;s blog</a> and, for Windows, on <a href="http://blog.ftwr.co.uk/archives/2005/11/03/windows-wordpress-toolbox/">Westi&#8217;s blog</a>.</p>
<p>Though there are varying schools of thought as to how branches and tags work, WordPress follows the following system:</p>
<p><strong>/trunk is where future release development occurs.</strong> Right now, WordPress development is focused on an upcoming 3.3 release. All development for this release is going into /trunk.</p>
<p><strong>/branches is where 3.3 will go once it is released (or where future &#8220;branches&#8221; of the software will be housed down the road.</strong> The directory contains a series of directories that are branches from the current release development &mdash; for example, /branches/3.0, /branches/3.1, /branches/3.2, etc. What you won&#8217;t find in branches are security (or dot) releases.</p>
<p>For instance, when a security vulnerability is discovered, it will be patched in /trunk for the current development branch and may be backported to the previous release branch (currently, 3.2). But until the next security release of WordPress comes out for that branch, it is still considered &#8220;development&#8221; and not &#8220;stable&#8221;.</p>
<p><strong>/tags is where stable releases are archived.</strong> No development goes into tagged releases. These are final releases. You will find every release here in the form of /tags/3.2.1, /tags/3.2, /tags/3.1.4, etc. If you&#8217;re looking for the latest current stable for production, this is the place to look.</p>
<p>When branches achieve the next milestone (i.e. a maintenance or security or &#8220;dot&#8221; release), this is the place where the code is kept.</p>
<p>Hopefully this makes the WordPress repository (and maybe other projects) clear as mud.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/3cos3_wOUfc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/09/30/how-is-wordpress-subversion-organized/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/09/30/how-is-wordpress-subversion-organized/</feedburner:origLink></item>
		<item>
		<title>Rules for Entrepreneurs: Release Early and Often</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/2KX_RWYFB90/</link>
		<comments>http://technosailor.com/2011/09/28/rules-for-entrepreneurs-release-early-and-often/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 17:29:49 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[Rules for Entrepreneurs]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[entrepreneurship]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[software-development]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8479</guid>
		<description><![CDATA[Last week, I wrote two articles outlining some philosophical ideas around entrepreneurship. This series of articles is all about giving away lessons I&#8217;ve learned throughout my five years as an entrepreneur in four different ventures. When you&#8217;re in the product business, you have to continually improve on your product. As soon as you hit version [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://technosailor.com/files/hiwteboard-600x450.jpg" alt="" title="hiwteboard" width="584" height="438" class="aligncenter size-large wp-image-8485" />Last week, I wrote two articles outlining some philosophical ideas around entrepreneurship. This series of articles is all about giving away lessons I&#8217;ve learned throughout my five years as an entrepreneur in four different ventures.</p>
<p>When you&#8217;re in the product business, you have to continually improve on your product. As soon as you hit version 1, you&#8217;re heading for version 2. You create a roadmap and set milestones, which are just intermediary goals to help you get from inception to some point in the future.</p>
<p>The reality of roadmaps, however, are that they are susceptible to change based on market demands &#8211; or, as it&#8217;s sometimes called, &#8220;pivots&#8221;. You can have a great product idea that has a wonderful two year roadmap, but if customers don&#8217;t like it or demand other features that have never been thought of, then it would be wise to modify timelines and roadmaps.</p>
<p>Many successful products have been the product of a &#8220;release early and release often&#8221; mentality where the entrepreneur or product team did not wait to have a fully developed product, and instead, hurried to get <em>something</em> to market for the sake of collecting feedback and input and improving on the product.</p>
<p>Eric Ries in <em>Lean Startup</em> talks about principles of testing market validation by creating an iterative cycle of development where a product is released, tested in the market, feedback aggregated, assumptions tested against that feedback, and new innovation created as a result of those tests.</p>
<p>There are a number of rapid-cycle development philosophies including <a href="http://www.agilealliance.org/the-alliance/what-is-agile/">Agile</a>, <a href="http://www.scrumalliance.org/learn_about_scrum">Scrum</a> and others. These philosophies put a greater emphasis on involving customer feedback and direction over pre-determined plans where feedback is not collected until the development cycle is completed.</p>
<p>What happens if your assumptions were all wrong? Now you&#8217;ve got a product that no one wants to use!</p>
<p>The best way to avoid this problem is simply to release early, even before your product is near complete, and collect feedback along the way. Based on the feedback, you may need to modify your development trajectory but at least you&#8217;re able to do that before it&#8217;s too late and keep your product relevant to the consumer.</p>
<p>Next time, I&#8217;ll continue this series and talk a bit about business visualization to help you track your business and make effective decisions. If you&#8217;re not already subscribed to this blog, <a href="http://technosailor.com/feed">do so now</a>. Also, follow me on <a href="http://twitter.com/technosailor">Twitter</a> where I&#8217;ll be talking about entrepreneurship, WordPress and a healthy dose of sports on the weekend.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/2KX_RWYFB90" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/09/28/rules-for-entrepreneurs-release-early-and-often/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/09/28/rules-for-entrepreneurs-release-early-and-often/</feedburner:origLink></item>
		<item>
		<title>Rules for Entrepreneurs: Compete and Collaborate</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/UVgK_hB8jgM/</link>
		<comments>http://technosailor.com/2011/09/23/rules-for-entrepreneurs-compete-and-collaborate/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 16:19:16 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[Rules for Entrepreneurs]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[competition]]></category>
		<category><![CDATA[entrepreneurship]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8478</guid>
		<description><![CDATA[Photo by Roger Barker on Flickr. Google and Apple are not only competitors&#8230; they are collaborators. Indeed, Apple and Google both offer top level smartphones &#8211; The iPhone from Apple and the assortment of Android devices by Google (Google not only has its own phones but is the main proprietor of the Android open source [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-8484" title="competition" src="http://technosailor.com/files/competition-600x450.jpg" alt="" width="584" height="438" /><cite>Photo by <a href="http://www.flickr.com/photos/rogerbarker/2349599270/">Roger Barker</a> on Flickr.</cite></p>
<p>Google and Apple are not only competitors&#8230; they are collaborators. Indeed, Apple and Google both offer top level smartphones &#8211; The iPhone from Apple and the assortment of Android devices by Google (Google not only has its own phones but is the main proprietor of the Android open source project).</p>
<p>In the same world, Samsung and Apple are rivals (and becoming even more rival-ous) with competing smartphones (Samsung runs Android) sparking ferocious lawsuits back and forth, but Samsung is also a major supplier of parts to Apple.</p>
<p>This segment of my continuing series on Rules of Entrepreneurship is all about knowing when and how to compete and when collaboration is a better option. They are not mutually exclusive. This is a natural segue from my last post where I suggest that <a href="http://technosailor.com/2011/09/20/rules-for-entrepreneurs-do-one-thing-well/">entrepreneurs focus on doing one thing well</a>.</p>
<h2>Principle: Don&#8217;t Reinvent the Wheel</h2>
<p>It frustrates me to watch startups (usually not very good ones) try to reinvent the wheel. A classic example of this was from back in 2007 when I was sitting in a Starbucks in Columbia, MD. We had a group of entrepreneurs who gathered there on a daily basis and cowork together.</p>
<p>One of the guys I was working with introduced me to a pair of African-American entrepreneurs and he wanted me to hear about what they were building. I sat down and listened to their pitch. They were building the &#8220;YouTube for the African-American community&#8221;.</p>
<p>Full stop.</p>
<p>What? Why? Why not use YouTube?</p>
<p>They were well into the process of building an entire video platform from the ground up, complete with their own video encoding technology, instead of leveraging what YouTube (and subsequently Google) already created.</p>
<p>The entrepreneurs real mission was creating a video-sharing <em>community</em> for African-Americans, not creating video technology for African-Americans to use. I told them that day that they should abandon attempts to build their own video service, and instead <em>leverage</em> YouTube (which is built and maintained by really smart people at Google) to build the community they really wanted to build.</p>
<p>Why re-invent the wheel? You distract yourself from your core goals.</p>
<p><em>Sidenote: I have never heard of or from those entrepreneurs since.</em></p>
<h2>Collaborate</h2>
<p>As an entrepreneur, part of the process is identifying your competition. We certainly have done that at <a href="http://wpengine.com">WP Engine</a>. Sometimes, it is to your benefit to team up with your competition to achieve a common goal. Remember, business is business and it&#8217;s not personal. Don&#8217;t let your desire to &#8220;win&#8221; get in the way of your ability to get ahead.</p>
<p>Also, remember the age-old saying, &#8220;A rising tide lifts all ships&#8221;. What is good for your competition is often good for the entire industry you&#8217;re in. Everyone wins.</p>
<p>Certainly that&#8217;s not always the case, but it certainly isn&#8217;t <em>not</em> always the case.</p>
<h2>Compete</h2>
<p>In my opinion, competition is a bottom-line issue and there are lots of ways to positively affect your bottom line. Usually, competition does not equate to a zero-sum game, an assumption that rookie entrepreneurs tend to make. (I did this a lot in 2006, 2007 while at b5media and trying to take pot shots at competing blog networks &#8211; years later, I find it all kind of silly).</p>
<p>When you do choose to take on direct competition, keep it narrow, precise and for a specific purpose. Don&#8217;t allow personal feelings to affect your business strategies and, in the process, keep the door open to cooperation with your competition in other areas.</p>
<p>Next week, I&#8217;ll continue this series and talk a bit about release cycles &#8211; which is <em>always</em> a fun debate. If you&#8217;re not already subscribed to this blog, <a href="http://technosailor.com/feed">do so now</a>. Also, follow me on <a href="http://twitter.com/technosailor">Twitter</a> where I&#8217;ll be talking about entrepreneurship, WordPress and a healthy dose of sports on the weekend.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/UVgK_hB8jgM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/09/23/rules-for-entrepreneurs-compete-and-collaborate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/09/23/rules-for-entrepreneurs-compete-and-collaborate/</feedburner:origLink></item>
		<item>
		<title>Rules for Entrepreneurs: Do One Thing Well</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/7CGEybF7i8Q/</link>
		<comments>http://technosailor.com/2011/09/20/rules-for-entrepreneurs-do-one-thing-well/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 15:34:22 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[Rules for Entrepreneurs]]></category>
		<category><![CDATA[entrepreneurship]]></category>
		<category><![CDATA[foursquare]]></category>
		<category><![CDATA[google plus]]></category>
		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8475</guid>
		<description><![CDATA[Photo by bartb_pt on Flickr I have been an entrepreneur for just shy of 5 years full-time. Before that, I was engaged in entrepreneurial &#8220;things&#8221; for the previous 6 years. 4 companies. I am not a perfect entrepreneur and some would argue I&#8217;m not even a successful entrepreneur since I haven&#8217;t had a successful exit [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-8482" src="http://technosailor.com/files/building-600x401.jpg" alt="" width="584" height="390" /><cite>Photo by <a href="http://www.flickr.com/photos/bartb_pt/3352533899/">bartb_pt</a> on Flickr</cite><br />
I have been an entrepreneur for just shy of 5 years full-time. Before that, I was engaged in entrepreneurial &#8220;things&#8221; for the previous 6 years. 4 companies. I am not a perfect entrepreneur and some would argue I&#8217;m not even a successful entrepreneur since I haven&#8217;t had a successful exit yet.</p>
<p>However, the odds on favorite number that people in the startup community like to throw around is that 9 out of every 10 startups fails. So, as I see it, I still have 5 more failures and a win to look forward to (although I think my current startup, <a href="http://wpengine.com">WP Engine</a>, is a pretty damn good company that probably is a win).</p>
<p>I can say that in all of my years in this world, I&#8217;ve learned a number of things. Many of these things are through trial and error, success and failure, and good old A/B testing.</p>
<p>Today I&#8217;m beginning a series (revisiting an old theme from years ago when Steve Fisher wrote the &#8220;<a href="http://technosailor.com/category/venture-files/">Venture Files</a>&#8221; track on this blog &#8211; before I simplified to a single channel site that is updated far less often than it was then) providing some &#8220;rules&#8221;, as I see them.</p>
<p>As of now, I have six rules to share from my experiences. That may increase over time, but they are slotted and ready to go.</p>
<h2>Focus Your Efforts</h2>
<p>As an entrepreneur, the carrot on the stick is to provide the best damn {product} that {your target audience} has ever seen. I&#8217;ll focus on web tech startups since that&#8217;s what I know best, but the principle can cross easily into other industries as well.</p>
<p>Inevitably, being the best damn {product} that your {target audience} has ever seen, involves taking an already existing idea and improving on it. It&#8217;s always nice when you can do something new and innovative, but most companies aren&#8217;t and maybe shouldn&#8217;t be. It&#8217;s hard to do something completely new. One quick peruse through <a href="http://angel.co/">Angellist</a> will show you scores of companies who are pitching their products as the {blank} for {blank}.</p>
<p>Examples:</p>
<ul>
<li>Netflix for Digital Children&#8217;s Books</li>
<li>Twitter for images</li>
<li>Meetup for Professional Events</li>
<li>eBay for College Tutoring</li>
</ul>
<p>While I go into manic twitching mode when I see pitches like this, I have to hand the entrepreneurs and startups credit in that they are able to clearly identify exactly what they are building and why it&#8217;s important. Sure, they have to leverage some other known entity to get their point across, but their idea is concise and communicable.</p>
<h2>Don&#8217;t be Google</h2>
<p>To leverage a known entity for the sake of this post, Google is a poster child for leveraging someone else idea in the entirely wrong way. Tell me what all of these products have in common:</p>
<ul>
<li>Google+</li>
<li>Google Buzz</li>
<li>OpenSocial</li>
<li>Orkut</li>
</ul>
<p>That&#8217;s right. Every single one of these products were attempts to be the entirety of something else &#8211; to take it to their biggest competition in the space. Google+ is a direct swipe at both Facebook and, to a lesser extent, Twitter. Google Buzz was a direct assault on Twitter. OpenSocial existed to provide a social networking framework and was a play to undermine Facebook. Orkut took a swipe at Friendster, both of which are essentially dead today.</p>
<p>In every one of these cases, Google decided to &#8220;go big or go home&#8221; and ended up going home. The most recent, Google+, is still trying to get some traction but everyone seems to be sitting back and saying, &#8220;I&#8217;ve got social network exhaustion&#8221; and don&#8217;t see the big value in Google+ over existing products that do the same thing.</p>
<p>The better approach, if you want to assault Facebook, is a limited, targeted, precision-strike on a single feature and knock it out of the park. Twitter already has the status update. Don&#8217;t go there. The concept of +1, is already being done by Facebook with the &#8220;Like&#8221;. In other ways, Tweetmeme has been doing the same thing by enabling users to share what they like (who&#8217;s really gonna share what they don&#8217;t like&#8230; even if they don&#8217;t literally &#8220;like&#8221; it because it may be controversial, it&#8217;s compelling enough for users to share&#8230; which is the essence of a &#8220;Like&#8221; or a &#8220;+1&#8243;?).</p>
<p>But perhaps Google could really target photo sharing and tagging. Picasa is already there. Make it challenge Facebook&#8217;s photo albums and tagging. No one has done social event planning very well. Even Twtvite and Eventbrite are just for event planning, but don&#8217;t do social very well.</p>
<h2>You Have Finite Resources</h2>
<p>As an entrepreneur, you have limited resources. The last thing you need to be doing is getting &#8220;squirrel eye&#8221; and being distracted by every cool feature you could make. Does it fit within your vision? Does it help extend the main reason for building the product? (A good example of this is <a href="http://blog.foursquare.com/2011/03/08/foursquare-3/">Foursquare building an Explore Tab</a>&#8230; it extends their business product vision).</p>
<p>Especially at the beginning, you don&#8217;t have a lot of resources. Don&#8217;t try to be everything to everyone. Stay targeted and laser-focused on doing one thing and one thing well. As your company grows, you can start exploring complementary features and products. You just can&#8217;t be everything all at once.</p>
<p>Next time, I&#8217;ll expound on this concept by talking about competition <em>and</em> collaboration. You&#8217;ll want to come back. If you&#8217;re not already subscribe to this blog, <a href="http://technosailor.com/feed">do so now</a>. Also, follow me on <a href="http://twitter.com/technosailor">Twitter</a> where I&#8217;ll be talking about entrepreneurship, WordPress and a healthy dose of sports on the weekend.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/7CGEybF7i8Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/09/20/rules-for-entrepreneurs-do-one-thing-well/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/09/20/rules-for-entrepreneurs-do-one-thing-well/</feedburner:origLink></item>
		<item>
		<title>Digital Music is Dead, Long Live Digital Music: The Case for Spotify</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/5yLgAgFEs_U/</link>
		<comments>http://technosailor.com/2011/07/22/digital-music-is-dead-long-live-digital-music-the-case-for-spotify/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 16:45:57 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[digital music]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mpaa]]></category>
		<category><![CDATA[napster]]></category>
		<category><![CDATA[record labels]]></category>
		<category><![CDATA[spotify]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8472</guid>
		<description><![CDATA[Back in the 1990s, there was Napster. I mean, the original Napster not the shadow of a brand that is part of the Best Buy electronics offering. Napster effectively eliminated optical media by making people realize that the digital format was the only long-term, effective, space-saving way of having music that was portable. Sure there [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-8473" title="3497849677_9798b22910_b" src="http://technosailor.com/files/3497849677_9798b22910_b-600x400.jpg" alt="" width="584" height="389" />Back in the 1990s, there was <a href="http://napster.com">Napster</a>. I mean, the original Napster not the shadow of a brand that is part of the <a href="http://bestbuy.com">Best Buy</a> electronics offering.</p>
<p>Napster effectively eliminated optical media by making people realize that the digital format was the only long-term, effective, space-saving way of having music that was portable.</p>
<p>Sure there were MP3s before Napster, and yes, some people had decent libraries of music that they carried around on their portable MP3 players. But Napster made it mainstream by making it easy for anyone to find any music they wanted and download it.</p>
<p>It was illegal and rightly so. There was no way to monetize the music underground economy and intellectual property belongs to someone. So Napster got sued. A lot.</p>
<p>Someone along the way suggested that perhaps a more amenable for Napster to provide digital media to fans and give the record labels a reach around at the same time was the unlimited music for $9.99/mo. Napster balked saying no one would pay that kind of subscription fee.</p>
<p>The lawsuits became so much that the music service had to shut its doors. In an attempt to resurrect themselves just a year or two later, they finally adopted the music subscription model but it was too little too late.</p>
<p>Other music subscriptions came along such as <a href="http://www.rhapsody.com/">Rhapsody</a> but never gained any kind of real market share. Rhapsody is still open and charges a monthly fee but it just never gained the traction needed.</p>
<h2>Spotify Arrives!</h2>
<p>In 2008, a new music service, <a href="http://spotify.com">Spotify</a>, launched in Europe. The model was of the subscription type where consumers could pay a monthly fee for the ability to stream any music in their catalog.</p>
<p>The service gained huge popularity in Europe while consumers in the United States clamored for access. Month after month, year after year, the rumors surfaced that Spotify was preparing their U.S. launch and it never came&#8230; until last week.</p>
<p>In the meantime, consumers have been inundated with cloud-based web apps. They use Gmail from the web, Facebook for interactions with friends and family, Twitter for persistent real-time communication. Consumers have lost their desire to want to own their own data, and as such, the droning drumbeat of Spotify in Europe as a music subscription service is now arriving in the U.S. past the tipping point of data ownership needs.</p>
<p>That&#8217;s a long way of saying &#8211; people don&#8217;t care if they own their music anymore if they&#8217;ve got everything they need in a music service that doesn&#8217;t provide ownership.</p>
<h2>The Case for Physical and Owned Digital Media</h2>
<p>Through the years, I&#8217;ve always been a proponent of having my music in a digital format as opposed to a streaming service. I&#8217;d rather buy the album on iTunes or Amazon MP3 and know I have it than just stream it from somewhere.</p>
<p>I&#8217;ve wanted to play music on demand and not have to rely on a faux-radio service like <a href="http://pandora.com">Pandora</a> to get it done. I like Pandora. I pay for Pandora. But I can&#8217;t listen to the songs I want to on demand as part of their licensing agreement with the labels.</p>
<p>I like having dick-measuring competitions about how big my music library is. The bigger it is, the better I am. I must be a more serious music lover. Or so I&#8217;ve felt.</p>
<p>With the ownership model, I could take my music everywhere. Hell, even cars have iPod jacks in them so that 50GB library can be taken on the road. I could go for a run and listen to an assortment of playlists for just such an occasion or I could have my library with me for when I need to drum up an impromptu karaoke song and can&#8217;t remember how the song starts.</p>
<p>I thought.</p>
<p>In fact, I thought until last week when <a href="http://spotify.com">Spotify</a> <a href="http://arstechnica.com/media/news/2011/07/music-service-spotify-finally-to-launch-in-us-on-thursday-morning.ars">launched in the United States</a>. Now&#8230; I don&#8217;t care about my digital music library. Every argument for it has been shattered into a million small (yet suitably sharp and jagged and &#8220;hope you&#8217;re wearing sandals so you don&#8217;t cut your feet&#8221;) pieces.</p>
<h2>Spotify is the Music Messiah</h2>
<p>At one point, I thought it was important to take my music with me wherever I go. I still do. Spotify has apps for every major mobile device (and if you don&#8217;t have a mobile strategy in anything, you lose) and they all tightly integrate with the web service and related desktop apps for both Windows and Mac. Everything is synced. And you can listen to music offline!</p>
<p>At some point I was very concerned about how big my music library was. I feared a catastrophic data loss that would wipe out my years of music collection, purchasing and playlist assembly. Of course, there were backups but that took forever over a network or to an external hard drive.</p>
<p>Spotify solves this by integrating with all your DRM-free music on iTunes or other music player, importing them, making them available in the cloud or offline. It also eliminates the need to have music library. Who needs a music library when every major label is signed on to provide their catalog to the service. I have the entire music world as my music library. My dick, by definition, is therefore bigger.</p>
<p>But the real killer in Spotify is the ingenious social aspect. Sure, you can have a lot of music. Sure, you can have playlists. Sure, you can have subscription models. Sure, you can have mobile availability.</p>
<p>Spotify put the biggest teenage-era &#8220;I love you&#8221; method in digital format by allowing the mix tape to be replaced by playlists&#8230; that are sharable with someone, some service or the world.</p>
<p>Queue up your Bieber-esque bee-bop feel good technosailor dance-esque songlists&#8230; the mix tape has gone digital!</p>
<h2>It&#8217;s the End of the World as We Know It&#8230; And I Feel Fine</h2>
<p>Spotify will undoubtedly continue to evolve. Launching in the United States gives them a much larger audience to tap into for feedback and expectations. I would like to see the social integration tighter and more obvious, but all in good time.</p>
<p>Rarely does a game changer come along. A lot of people think they have the game changing app&#8230; but it never happens. This is, in fact, the revolution that we&#8217;ve been waiting for. I no longer even think about my iTunes library, Amazon MP3 purchasing or other digital media. Everything I need is right there in my dick-sized music library.</p>
<p><em>Photo by <a href="http://www.flickr.com/photos/gallery-art/3497849677/">Cerebro Humano</a></em></p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/5yLgAgFEs_U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/07/22/digital-music-is-dead-long-live-digital-music-the-case-for-spotify/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/07/22/digital-music-is-dead-long-live-digital-music-the-case-for-spotify/</feedburner:origLink></item>
		<item>
		<title>Make the Web, Cloud Do Your Work So You Don’t Have To</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/QklXGn-6nD0/</link>
		<comments>http://technosailor.com/2011/06/28/make-the-web-cloud-do-your-work-so-you-dont-have-to/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 16:34:14 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[it]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[navy]]></category>
		<category><![CDATA[nmci]]></category>
		<category><![CDATA[software compatibility]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8469</guid>
		<description><![CDATA[Photo by Balleyne While perusing around the web yesterday (after sifting through my email post-vacation), I came across this Ars Technica&#160;article discussing the new Firefox upgrade timeline. It actually follows a similar upgrade timeline that WordPress adopted after WordPress 2.0 was released. The new policy outlines a 3-4 month window for new major releases with [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-8470" title="2668834386_ef9cfbd4e0_z" src="http://technosailor.com/files/2668834386_ef9cfbd4e0_z-600x450.jpg" alt="" width="584" height="438" /><br />
<cite>Photo by <a href="http://www.flickr.com/photos/balleyne/2668834386/">Balleyne</a></cite></p>
<p>While perusing around the web yesterday (after sifting through my email post-vacation), I came across this <em>Ars Technica</em>&nbsp;article discussing the <a href="http://arstechnica.com/business/news/2011/06/firefox-update-policy-the-enterprise-is-wrong-not-mozilla.ars">new Firefox upgrade timeline</a>. It actually follows a similar upgrade timeline that WordPress adopted after WordPress 2.0 was released.</p>
<p>The new policy outlines a 3-4 month window for new major releases with limited security updates for releases outside of the current stable release.</p>
<p>The <em>Ars</em>&nbsp;article goes on to describe the angst that has come out of the corporate community as they have been lulled into a process of having to test new releases of software to ensure compatibility with their internal firewall&#8217;d webapps that have, in no small part, been created for a specific browser – usually Internet Explorer 6 or 7.</p>
<h2>Browser Stagnation Caused IT Stagnation</h2>
<p>A few years ago, the stagnation of browser support was broken as Firefox and Opera started a race to implement CSS3 features that were not necessarily status quo, as a result of Internet Explorer, and were not even blessed as part of an official spec. The browser makers just started doing it.</p>
<p>Notably, some of these browser-specific &#8220;add-ons&#8221; to CSS dealt with things that had been desired but only usable with browser hacks: rounded corners, opacity, etc.</p>
<p>Apple came on the scene, particularly with iOS (then iPhone OS), and put a&nbsp;tremendous&nbsp;amount of development efforts into <a href="http://www.webkit.org/">WebKit</a>. WebKit is a browser framework like Gecko, the framework that Firefox and the old Netscape are built on was. Apple&#8217;s take on WebKit was Safari. Google followed suit with Chrome awhile later, also built on WebKit.</p>
<p>What we end up with is a browser war with higher stakes than the famed Internet Explorer-Netscape war of the 1990s. We also see a lot more innovation and one-upmanship&#8230; something that can only be good for consumers.</p>
<p>The <em>Ars</em>&nbsp;article describes a tenuous balance for enterprise customers. That balance is the need to support internal firewalled applications while giving users access to the public web. The money quote from the article sums up the balance nicely:</p>
<blockquote><p>The Web is a shared medium. It&#8217;s used for both private and public sites, and the ability to access these sites is dependent on Web browsers understanding a common set of protocols and file formats (many corporate intranet sites may not in fact be accessible from the Internet itself, but the browsers used to access these sites generally have to live in both worlds).</p>
<p>[...]</p>
<p>If developers could be sure that only Internet Explorer 9, Firefox 5, and Chrome 13 were in use on the Internet, they would be able to make substantial savings in development and testing, and would have a wealth of additional features available to use.</p>
<p>But they can&#8217;t assume that, and so they have to avoid desirable features or waste time working around their absence. And a major reason—not the only reason, but a substantial one—is corporate users. Corporate users who can&#8217;t update their browsers because of some persnickety internal application they have to use, but who then go and use that same browser on the public Internet. By unleashing these obsolete browsers on the world at large, these corporate users make the Web worse for everyone. Web developers have to target the lowest common denominator, and the corporations are making that lowest common denominator that much lower.</p></blockquote>
<p>As someone who has worked on the web for more than 10 years and who has also worked in Enterprise, I agree.</p>
<p>I remember when I worked for the Navy and the <a href="http://en.wikipedia.org/wiki/Navy/Marine_Corps_Intranet">Navy-Marine Corps Intranet (NMCI)</a> was in deployment. It was a massive headache for everyone involved because the assumption with that contract was that systems could uniformly be tied together and standardized. By my understanding, they finally achieved that last year, but not until after being years late and hundreds of millions over budget.</p>
<p>I don&#8217;t know the final deployment as my contract with the Navy ended back in 2004. I know that proprietary systems were in place that were designed to a function and not to a standard. &nbsp;When standards were introduced as necessary requisites for any system in that eco-system, the implications were huge.</p>
<p>This is the world we live in today where, as the <em>Ars</em>&nbsp;article points out, browsers that must live in a world of compatibility and still access the public web drag the rest of us down.</p>
<h2>Outsource Your Shit and Focus on Your Core Business</h2>
<p>But <em>Ars</em>&nbsp;already makes that point. I&#8217;m not making it again except to highlight the validity of their thoughts. My point is more intrinsic to startups, small businesses and entrepreneurs and I make it delicately as it has, in some ways, countered <a href="http://technosailor.com/2008/07/22/cloud-computing-does-not-spell-the-end-for-common-sense-it-management/">some</a> of <a href="http://technosailor.com/2009/04/08/the-pros-and-cons-of-cloud-computing/">my thoughts</a> in the past.</p>
<p>Why should you worry about building applications to a function when you can build them to a standard? Or better yet, why should you build <em>from the ground up</em>&nbsp;to a function when you can <em>use external, cloud-based services</em>&nbsp;built to a standard.</p>
<p>Take Microsoft&#8217;s just-announced <a href="http://www.microsoft.com/Presspass/press/2011/jun11/06-28MSOffice365PR.mspx">Microsoft Office 365</a>. Now, I don&#8217;t know anything about this product so don&#8217;t take my commentary as an endorsement in any way. We use <a href="http://google.com/a">Google Apps</a> at <a href="http://wpengine.com">WP Engine</a> (another good example of exactly what I&#8217;m saying here).</p>
<p>In <em>Office 365</em>,&nbsp;you have a common piece of line-of-business software (Microsoft Office) available for a subscription and hosted in the cloud. This eliminates IT Administrators requirement for testing on the internal network. It&#8217;s on the web! Everyone has the web! And it doesn&#8217;t need (and in fact, cannot work) with non-standard browsers. And you don&#8217;t even need Microsoft&#8217;s browser to use it.</p>
<p>Suddenly, IT Administrators along with Microsoft have saved the Enterprise tens, if not hundreds, of thousands of dollars in man-hours testing and re-resting for OS compatibility. And suddenly, IT Administrators along with Microsoft have taken the chains off users to have freedom of choice in their browsers (which, by the way, is more than a pie in the sky idealistic thing&#8230; it&#8217;s also a cost-saving efficiency thing). And also suddenly, Microsoft has released the web to be able to thrive and not be retarded by corporate requirements.</p>
<p>This kind of thing makes perfect sense. Why re-invent the wheel? Why put resources into something you don&#8217;t have to? Why not let a third party, like Microsoft or Google, worry about the compatibility issues in line-of-business software.</p>
<p>After all, your company isn&#8217;t in the core business of building these applications. You are in the line of business of doing something else&#8230; building a product, a social network, a mobile app, a hosting company, etc. Your software should not define the cost of doing business. Your people and your product should.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/QklXGn-6nD0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/06/28/make-the-web-cloud-do-your-work-so-you-dont-have-to/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/06/28/make-the-web-cloud-do-your-work-so-you-dont-have-to/</feedburner:origLink></item>
		<item>
		<title>WordPress Release Word Clouds</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/0Nd3YxO9lxw/</link>
		<comments>http://technosailor.com/2011/06/21/wordpress-release-word-clouds/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 21:41:57 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[word clouds]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8456</guid>
		<description><![CDATA[Yesterday, I published the 12th in an ongoing series of blog posts since December 26, 2005, where I take my own look at major WordPress releases and write a hopefully helpful article about features. It&#8217;s the routine, and now expected, &#8220;10 Things You Need to Know&#8221; posts. Out of morbid curiosity, I decided to run [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, <a title="10 Things You Need To Know About WordPress 3.2" href="http://technosailor.com/2011/06/20/10-things-you-need-to-know-about-wordpress-3-2/">I published the 12th in an ongoing series of blog posts</a> since December 26, 2005, where I take my own look at major WordPress releases and write a hopefully helpful article about features. It&#8217;s the routine, and now expected, &#8220;10 Things You Need to Know&#8221; posts.</p>
<p>Out of morbid curiosity, I decided to run all of those posts through a word cloud generator and see if there were any trends that could be seen. Of course, it&#8217;s my writing so there are obvious tendencies and biases, but it was fun to see anyway.</p>
<p>One thing I did to make the results better&#8230; I removed the words WordPress and WP. Also, several of the posts had my name in it so I figured it would be better not to include that either.</p>
<h2>WordPress 2.0</h2>
<p><img class="aligncenter size-large wp-image-8457" title="wordpress20" src="http://technosailor.com/files/wordpress20-600x301.jpg" alt="" width="584" height="292" /></p>
<h2>WordPress 2.1<img class="aligncenter size-large wp-image-8458" title="wordpress21" src="http://technosailor.com/files/wordpress21-600x286.jpg" alt="" width="584" height="278" /></h2>
<h2>WordPress 2.2<img class="aligncenter size-large wp-image-8459" title="wordpress22" src="http://technosailor.com/files/wordpress22-600x381.jpg" alt="" width="584" height="370" /></h2>
<h2>WordPress 2.3<img class="aligncenter size-large wp-image-8460" title="wordpress23" src="http://technosailor.com/files/wordpress23-600x335.jpg" alt="" width="584" height="326" /></h2>
<h2>WordPress 2.5</h2>
<p><img class="aligncenter size-large wp-image-8461" title="wordpress25" src="http://technosailor.com/files/wordpress25-600x301.jpg" alt="" width="584" height="292" /></p>
<h2>WordPress 2.6<img class="aligncenter size-large wp-image-8462" title="wordpress26" src="http://technosailor.com/files/wordpress26-600x339.jpg" alt="" width="584" height="329" />WordPress 2.7<img class="aligncenter size-large wp-image-8463" title="wordpress27" src="http://technosailor.com/files/wordpress27-600x365.jpg" alt="" width="584" height="355" /></h2>
<h2>WordPress 2.8<img class="aligncenter size-large wp-image-8464" title="wordpress28" src="http://technosailor.com/files/wordpress28-600x401.jpg" alt="" width="584" height="390" /></h2>
<h2>WordPress 2.9<img class="aligncenter size-large wp-image-8465" title="wordpress29" src="http://technosailor.com/files/wordpress29-600x302.jpg" alt="" width="584" height="293" />WordPress 3.0<img class="aligncenter size-large wp-image-8466" title="wordpress30" src="http://technosailor.com/files/wordpress30-600x294.jpg" alt="" width="584" height="286" />WordPress 3.1<img class="aligncenter size-large wp-image-8467" title="wordpress31" src="http://technosailor.com/files/wordpress31-600x305.jpg" alt="" width="584" height="296" />WordPress 3.2<img class="aligncenter size-large wp-image-8468" title="wordpress32" src="http://technosailor.com/files/wordpress32-600x278.jpg" alt="" width="584" height="270" /></h2>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/0Nd3YxO9lxw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/06/21/wordpress-release-word-clouds/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/06/21/wordpress-release-word-clouds/</feedburner:origLink></item>
		<item>
		<title>10 Things You Need To Know About WordPress 3.2</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/2JMyweTmm4o/</link>
		<comments>http://technosailor.com/2011/06/20/10-things-you-need-to-know-about-wordpress-3-2/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 04:36:12 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wordpress 3.2]]></category>
		<category><![CDATA[wordpress cheatsheet]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8439</guid>
		<description><![CDATA[Photo credit Randy Stewart. WordPress 3.2 will be released soon (at the time of this writing, it is in RC1 which essentially means it is done and being tested). This is an exciting release as it marks the first release that drops PHP 4 dependency. For years, WordPress has opted to play to the lowest [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-8443" title="wordpress-legs" src="http://technosailor.com/files/wordpress-legs-600x400.jpg" alt="" width="584" height="389" /></p>
<address><em>Photo credit Randy Stewart.</em></address>
<p>WordPress 3.2 will be released soon (at the time of this writing, it is in RC1 which essentially means it is done and being tested). This is an exciting release as it marks the first release that drops PHP 4 dependency. For years, WordPress has opted to play to the lowest common denominator while hosts have taken their sweet time arriving at PHP 5.</p>
<p>Of course, this may mean nothing to you, depending on your technical knowledge of the underlying language. However, it has limited the amount of innovation that could be possible using the more modern version of PHP 5.</p>
<p>The focus for this release was to slim down redundant code that had been added along the way to employ PHP 5 techniques in a PHP 4-compatible fashion. In addition, a focus was placed on slimming down code all along the way to provide a more efficient codebase. Eliminate, eliminate, eliminate! More Red than Green &#8211; a reference to the way changes are recorded visually where red is code elimination and green is code addition.</p>
<p>Regardless, the approach to PHP 5 adoption has had a positive effect. Approximately 12% of the web is powered today by WordPress, whether self-hosted &#8220;<a href="http://wordpress.org">.org</a>&#8221; sites or Automattic&#8217;s <a href="http://wordpress.com">WordPress.com</a> and other hosted WordPress sites.</p>
<p>As I have done eleven other times before, today I bring you the Ten Things that, in my opinion, you should know about WordPress 3.2.</p>
<h2>Twenty-Eleven</h2>
<p>One of the big things that was discussed internally around the time when WordPress 3.0 was released over a year ago was the need to keep the default theme fresh. To that end, for WordPress 3.0 did away with the old Kubrick theme and <a href="http://technosailor.com/2010/05/01/10-things-you-need-to-know-about-wordpress-3-0/">replaced it with the fresh and semantic Twenty-Ten theme</a>.</p>
<p>Yes, you can see how naming a theme Twenty-Ten in 2010 setup the opportunity for a Twenty-Eleven theme in 2011. And there is that opportunity for a new theme called Twenty-Twelve in 2012, but let&#8217;s not get too far ahead of ourselves.</p>
<p>Twenty-Eleven visually is not a huge departure from Twenty-Ten. It still uses much of the same visual layout that Twenty-Ten did. The new theme, however, is greatly different behind the scenes.</p>
<p><em>Note: This blog (along with all of my blogs) are running Twenty-Eleven <strong>right now.</strong></em></p>
<p><img class="aligncenter size-large wp-image-8444" title="twentyeleven-themoptions" src="http://technosailor.com/files/twentyeleven-themoptions-600x289.jpg" alt="" width="584" height="281" /></p>
<p>Users of Twenty-Eleven have the opportunity to select a one-column or two column layout for their blog from inside the WordPress Admin. The two column layouts can use a sidebar left or sidebar right variant.</p>
<p>My <a href="http://photos.aaronbrazell.com">photoblog</a> uses a one-column format, as an example.</p>
<p>Additionally, Twenty-Eleven also offers a dark and light color scheme. My photoblog, for instance, uses the dark format while this blog uses the light format.</p>
<p>Finally, as with Twenty-Ten, the theme allows for custom header images (or no header images) and backgrounds. Because of the professional nature of this blog, I&#8217;ve opted to use no header on this blog and my <a href="http://aaronbrazell.com">personal blog</a> utilizes a custom header image.</p>
<p>And of course, as with all things WordPress, no one says you have to settle for what Twenty-Eleven offers out of the box. In fact, it is encouraged that you use Twenty-Eleven as a parent theme that offers all of the benefits of the default theme while putting your own spin on it with a <a href="http://codex.wordpress.org/Child_Themes">child theme</a>.</p>
<h2>Distraction Free Writing</h2>
<p>While I write this post, I am using the successor to the Full-screen mode that has been in WordPress for some time. Full screen mode, in my opinion, never really was well adopted but it has been championed in the past by bloggers who focus on efficient workstyles, or Getting Things Done (&#8220;GTD&#8221;) approach to work.</p>
<p><img class="aligncenter size-large wp-image-8446" title="dfw" src="http://technosailor.com/files/dfw-600x416.jpg" alt="" width="584" height="404" /><img class="aligncenter size-large wp-image-8447" title="dfw2" src="http://technosailor.com/files/dfw2-600x429.jpg" alt="" width="584" height="417" /></p>
<p>The ability to shut out all distractions so as to focus on the task at hand is hugely important. WordPress core developer <a href="http://markjaquith.wordpress.com">Mark Jaquith</a> has said for years that his vision for WordPress was that it would become a tool that got out of the way of people and their writing. It&#8217;s not about WordPress. It&#8217;s about writing and the experience should be such that you should never have to think about what tool you are using to do that.</p>
<p>With Distraction Free Writing, you have just that. By clicking on the Full Screen (in HTML writing mode) or the new icon for DFW in the toolbar of the visual text editor, the blogger finds themself on a plain off-white canvas with minor tools along the top of the screen to assist in basic formatting. If you leave your hands off the mouse, even these fade away allowing you to just write in a pleasant, serene environment.</p>
<p>This feature is probably my favorite in WordPress 3.2 and usability/writer-facing features are rarely my favorite as a developer. I generally prefer new APIs and developer tools. However, this feature wins hands-down.</p>
<h2>Minor Overhaul to Administrative UI</h2>
<p>It&#8217;s been several years since WordPress has undergone a major Admin overhaul. There have been tweaks along the way, but by and large the administrative interface has stayed true to what it evolved into (with much research and usability testing) in <a href="http://technosailor.com/2008/11/18/10-things-you-need-to-know-about-wordpress-27/">WordPress 2.7</a>.</p>
<p><img class="aligncenter size-large wp-image-8448" title="newui" src="http://technosailor.com/files/newui-600x318.jpg" alt="" width="584" height="309" /></p>
<p>There is not a drastic overhaul in WordPress 3.2, but it is the larger than a few tweaks and color scheme modifications. In <a href="http://technosailor.com/2010/12/30/10-things-you-need-to-know-about-wordpress-3-1/">WordPress 3.1</a>, the Admin Bar (which I&#8217;ll talk about later) came into being and in 3.2, emphasis has been put on placing more commonly accessed functions into it as opposed to the main UI.</p>
<p>As a result, familiar things (which were often used for blogs in Multisite mode) such as the &#8220;Favorites Menu&#8221; have been removed to the Admin Bar. The Quick Access menu that allowed Multisite Super Admins quick access to the &#8220;Network Admin&#8221; has been relocated to a less-than-obvious dropdown  in the upper right. Hint: The dropdown menu can be accessed by clicking the &#8220;Howdy Aaron&#8221; link, where &#8220;Aaron&#8221; is your username.<img class="aligncenter size-full wp-image-8449" title="Quick-Menu" src="http://technosailor.com/files/Quick-Menu.jpg" alt="" width="269" height="151" /></p>
<p>Other aspects of the new interface are mainly aesthetic. Menus are where you&#8217;d expect them. Features are where they&#8217;ve always been. Plugin developers who have built UI for their plugins are still safe as long as, as usual, they are using the WordPress best-practices, i.e. using the same HTML formats and structures used in core.</p>
<h2>More Determined Move to the Admin Bar</h2>
<p>As mentioned before, the Admin Bar has become the focus of a &#8220;Command Center&#8221; approach. By default, quick actions like Adding a new post or editing a page or getting quick access to the dashboard of other Multisite sites are loaded into quick menus in the Admin Bar.</p>
<p>This is also where the philosophy of plugin development that provides quick access to features should be. A good example of this is the Purge Cache functionality in <a href="http://wordpress.org/extend/plugins/w3-total-cache/">W3 Total Cache</a>. Where this has been in the Favorites menu inside WordPress, it now will have to move to the Admin Bar. This seems like a more natural place to me anyway. Other plugin developers should look at their code to ensure that they are compliant with this approach.</p>
<p>John Brook has a <a href="http://johanbrook.com/development/wordpress/customizing-the-wordpress-admin-bar/">most excellent tutorial</a> on creating and adding menus to the Admin Bar.</p>
<h2>PHP 5.2.4 and MySQL 5.0</h2>
<p>I mentioned the new system requirements at the beginning of this article. This shift to PHP 5 has been a long time in coming and was done deliberately to time with WordPress hosting on PHP 4 dipping below 10%. <em>In other words, it is more than likely your host is already on PHP 5.2.4+</em>. However, you should verify this if you&#8217;re not sure.</p>
<p>With the adoption of PHP 5.2.4, there is also a bump in the requirements for MySQL. Now WordPress requires MySQL 5.0, another hurdle that is not very hard to overcome but should be verified if you&#8217;re not sure.</p>
<p>Ryan Duff has created a <a href="http://wordpress.org/extend/plugins/wordpress-requirements-check/">quick and easy plugin</a> that can be installed to ensure compatibility with WordPress 3.2.</p>
<h2>For Newbies, a Better Help Menu on Each Page<img class="aligncenter size-large wp-image-8450" title="help" src="http://technosailor.com/files/help-600x203.jpg" alt="" width="584" height="197" /><img class="aligncenter size-large wp-image-8451" title="morehelp" src="http://technosailor.com/files/morehelp-600x324.jpg" alt="" width="584" height="315" /></h2>
<p>For some time, WordPress has included a contextual &#8220;Help&#8221; menu in the upper right of many of the screens in the admin interface. However, with WordPress 3.2, every page has a help menu. Not only does every page have a help menu, newbies can get detailed contextual assistance for each page. Veteran users already know their way around, so this will be less than helpful, but for n00bs, the guidance lowers the barrier to entry.</p>
<h2>Upgrade Enhancement &#8211; Just the code you need!</h2>
<p>Think iOS5 but for WordPress. When Steve Jobs announced at WWDC recently that<a href="http://www.engadget.com/2011/06/06/apple-turns-ios-pc-free-with-ota-updates-and-wireless-sync/"> iOS updates would <em>in the future</em> come in smaller packages</a> applying just new code and differences over the air, WordPress was already working on this (errr, except the over the air part).</p>
<p>Up until WordPress 3.2, upgrades were performed by downloading the entire package and applying it over the existing install. While this was fine, it took a lot more time due to the larger package size. This new version <em>will enable</em> future upgrades of WordPress to be done incrementally making the process much faster and efficient.</p>
<h2>Code Efficiency enhancements</h2>
<p>A huge emphasis was placed on core efficiency in this release. Many of the updates that have gone into this release have been major refactoring of code as well as the removal of legacy (and now unneeded) PHP4 compatibility code.</p>
<p>When I write these articles, I like to look at a diff file of all code changes between the last major release and the current. I was blown away by the amount of PHP4 compatibility code that has been axed.</p>
<p>Additionally, a lot of effort has been placed on database optimization. Many queries have been made more efficient. These things are less notable for smaller sites, but for large sites and hosting companies (such as my company, <a href="http://wpengine.com">WP Engine</a>), these types of optimizations add up in orders of magnitude!</p>
<h2>File System API</h2>
<p>Another optimization that has been made (getting the clue that this release is all about streamlines?) has been in the code that handles upgrades and automatic installs of plugins. When the original code was written, it was written to find what methods were available to write to the filesystem. This was because WordPress does the best it can to be as compatible as possible with as many server configurations as possible.</p>
<p>Some of the more obsolete (and unnecessary) transports have been done away with in favor of <em>Streams. </em>Though streams existed in PHP 4.3 (WordPress&#8217; former system requirement), the upgraded requirement now allows us to do so much more with file transfer, handling and writing.</p>
<p>But I don&#8217;t want to get overly technical right now.</p>
<h2>No IE6 Support<img class="aligncenter size-large wp-image-8452" title="ie6wordpresscom" src="http://technosailor.com/files/ie6wordpresscom-600x337.jpg" alt="" width="584" height="328" /></h2>
<address>Screenshot courtesy of <a href="http://mashable.com/2011/05/19/wordpress-com-ie6/">Mashable</a>.</address>
<p>We all knew Internet Explorer was dead. Well, most of us. Believe it or not, there are still folks (mostly in government and enterprise organizations) where IE6 is still in use. While WordPress has always endeavored to be as compatible with as many configurations as possible, just like file handling replaced by Streams and PHP4 going the way of the Dodo Bird, <a href="http://www.theie6countdown.com/default.aspx">IE6 can die in a fucking fire too</a>. Oops. Sorry, kids. No more IE6 support.</p>
<h2>Automatically approve parent comments</h2>
<p>Finally, a longtime nuance has been comment approval. Comments have always been a one-to-one relationship with approval. You approve one comment at a time. And while that&#8217;s normally fine, what if you have nested comments and you approve a child comment but not a parent comment? Then you have a weird hierarchy that may not make a lot of sense.</p>
<p>In WordPress 3.2, now when you approve a comment that has an unapproved parent comment, the parent comment will also be approved. Many people have asked for that and now it&#8217;s here.</p>
<h2>BONUS: Credits Screen</h2>
<p>But wait&#8230; There&#8217;s one more thing. Every release, hundreds of people participate in the development process by writing code, contributing patches, discussing ideas in IRC and on <a href="http://trac.wordpress.org/">Trac</a>. That doesn&#8217;t even begin to acknowledge the testers, translators, and documentation writers who contribute their time free of charge.</p>
<p>Now, in the footer of the WordPress Admin, you&#8217;ll find a Credits link that shows everyone who has contributed to this release. Good job, guys! (I&#8217;m one of the contributors).</p>
<p><img class="aligncenter size-large wp-image-8453" title="credits" src="http://technosailor.com/files/credits-572x450.jpg" alt="" width="572" height="450" /></p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/2JMyweTmm4o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/06/20/10-things-you-need-to-know-about-wordpress-3-2/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/06/20/10-things-you-need-to-know-about-wordpress-3-2/</feedburner:origLink></item>
		<item>
		<title>Fact Checking in the Internet World</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/_ET859f5aEc/</link>
		<comments>http://technosailor.com/2011/06/02/fact-checking-in-the-internet-world/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 16:56:03 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[all things d]]></category>
		<category><![CDATA[Journalism]]></category>
		<category><![CDATA[Techcrunch]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8436</guid>
		<description><![CDATA[Like many other industries, journalism has undergone a vast paradigm shift in the last decade. Like advertising, the music and film industries, marketing, public relations and virtually all other professional fields, journalism has had to adjust to a new "immediacy" brought about by the Internet.

Now, by all reports, most people get their news from online sources and, while "online sources" are often venerable traditional media sources like the New York Times and the Washington Post, more often than not, blogs have become major sources of breaking news, and exclusive reports.]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-8437" title="4894601660_01129d9cec_o" src="http://technosailor.com/files/4894601660_01129d9cec_o.jpg" alt="" width="550" height="300" /></p>
<p><em>Photo credit: <a href="http://www.flickr.com/photos/adamcrowe/4894601660/sizes/o/in/photostream/">Adam Crowe</a></em></p>
<p><em></em>Like many other industries, journalism has undergone a vast paradigm shift in the last decade. Like advertising, the music and film industries, marketing, public relations and virtually all other professional fields, journalism has had to adjust to a new &#8220;immediacy&#8221; brought about by the Internet.</p>
<p>Now, by all reports, most people get their news from online sources and, while &#8220;online sources&#8221; are often venerable traditional media sources like the <em>New York Times</em> and the <em>Washington Post</em>, more often than not, blogs have become major sources of breaking news, and exclusive reports.</p>
<p>In fact, it was Pakistani IT specialist Sohaib Athar, now more famously known by his Twitter handle <a href="https://twitter.com/#!/reallyvirtual">@reallyvirtual</a>, who unwittingly live-tweeted the Osama bin Laden raid while Libyan rebels send on the ground status updates where traditional journalists have limited or no access. (Andy Carvin of NPR, known as <a href="http://twitter.com/acarvin">@acarvin</a> on Twitter,  has become somewhat notorious for his months-long curation of such tweets out of Libya, Egypt, Yemen and other Middle East hotspots).</p>
<p>There is no denying that the social tools available today have changed the face of journalism. Yet, despite these boons, it troubles me that basic principles of journalism seem to be consistently ignored.</p>
<p>At the end of the day, the practice of journalism (as with any industry) will evolve (and always have) with the tools and technology of the day. However, though practices may change, principles should never change.</p>
<p>One such principle is fact-checking. No matter who you are, or what era you&#8217;re in, fact-checking is rule number one in journalism. Don&#8217;t report until you have three independent sources is a good rule of thumb that is often ignored.</p>
<p>Case in point. The <em>Wall Street Journal</em>&#8216;s <a href="http://allthingsd.com">All things D</a>[igital] posted an article the other day titled, &#8220;<a href="http://allthingsd.com/20110530/confirmed-twitter-plans-to-announce-photo-sharing-service-this-week/?p=79886?mod=tweet">Confirmed: Twitter Plans to Announce Photo-sharing Service This Week</a>&#8220;. By all accounts, and history bearing witness, All Things D has been a reliable source of technology news since it&#8217;s inception. Founded by media moguls Walt Mossberg and Kara Swisher, it later became part of the <em>WSJ</em> family and has maintained a high level of journalistic integrity and excellence for years.</p>
<p>But something troubles me about this article. With a headline like this, it seems strange that this paragraph would then be included in the article:</p>
<blockquote><p>I am indeed aware that <strong>D9</strong> is the conference put on by this very site, but was not able to get sources to confirm the image-hosting announcement on the record. Twitter spokespeople did not reply for a request for comment on the matter.</p></blockquote>
<p>Of course, the news did in fact turn out to be a true story and Twitter did <a href="http://blog.twitter.com/2011/06/searchphotos.html">announce on their official blog</a> that they would be partnering with <a href="http://photobucket.com">Photobucket</a> to offer an image hosting service.</p>
<p>Notwithstanding, everyone seems to agree that this play has been a foregone conclusion for a long time. And <a href="http://techcrunch.com/2011/05/30/twitter-is-launching-its-own-photosharing-service/">TechCrunch</a> did write a story speculating on the service. But even in that news announcement, there was no real substance with Alexis Tsotsis concluding the article with:</p>
<blockquote><p>I’ve got no details on what exactly the photosharing URL shortener will be if any (Twitter has owned <a href="http://www.ip-adress.com/whois/twimg.com">Twimg.com</a> for a long time) or what the Twitter for Photos product will look like. Just that it’s coming, soon. And if they’re smart they’ll put ads on it.</p></blockquote>
<p>No sourcing. No fact checking. No confirmation.</p>
<p>While the need for speed is certainly required in today&#8217;s immediate, persistent news cycles, it bothers me that articles are being written claiming confirmation when no confirmation exists and that articles are being written from a speculative perspective (no issues there, just call it that!) and being held up as fact.</p>
<p>Though the Twitter news ended up being accurate, I plead with <em>All Things D</em> and all other internet publications to do yourselves and the public a service and stay the main tenets of journalism. Respect is at stake.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/_ET859f5aEc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/06/02/fact-checking-in-the-internet-world/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/06/02/fact-checking-in-the-internet-world/</feedburner:origLink></item>
		<item>
		<title>Convergence of technology, journalism and sports</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/tRb0euaLs5s/</link>
		<comments>http://technosailor.com/2011/05/28/convergence-of-technology-journalism-and-sports/#comments</comments>
		<pubDate>Sat, 28 May 2011 16:31:32 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[Journalism]]></category>
		<category><![CDATA[Sports]]></category>
		<category><![CDATA[sports journalism]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8435</guid>
		<description><![CDATA[Sheer erudition — and erudition of a very specific type — throws up large barriers to entry. Too often, newer, younger, and more casual sports fans “can sort of get to a certain point of enthusiasm before they hit the ‘stat wall’ where discussion of sports becomes pedantic and quantitative for no discernible reason other [...]]]></description>
			<content:encoded><![CDATA[<p>Sheer erudition — and erudition of a very specific type — throws up large barriers to entry. Too often, newer, younger, and more casual sports fans “can sort of get to a certain point of enthusiasm before they hit the ‘stat wall’ where discussion of sports becomes pedantic and quantitative for no discernible reason other than as a social indicator of investment/knowlegeability,” says Grantland’s Katie Baker. “In particular, I constantly see women driven away from sports because they are fed it as a zero-sum game: either you know everything about everyone or you don’t.” [via <a href="http://www.niemanlab.org/2011/05/both-the-short-and-long-of-it-how-sportswriting-is-taking-over-the-web-through-innovation-and-adaptation/">Tim Carmody</a>]</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/tRb0euaLs5s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/05/28/convergence-of-technology-journalism-and-sports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/05/28/convergence-of-technology-journalism-and-sports/</feedburner:origLink></item>
		<item>
		<title>Making Decisions Inebriated</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/0hvKiOsJfP0/</link>
		<comments>http://technosailor.com/2011/05/28/making-decisions-inebriated/#comments</comments>
		<pubDate>Sat, 28 May 2011 16:01:29 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[alcohol]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[drinking]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8434</guid>
		<description><![CDATA[&#8220;But the ancient Macedonians used to make important decisions only when inebriated, the idea being that only when mentally lubricated are you free of the societal filters and self-doubt. Therefore you think and act as your true self. Therefore you are thinking and acting truthfully, and hence correctly.&#8221; [via Jason Cohen]]]></description>
			<content:encoded><![CDATA[<p>&#8220;But the ancient Macedonians used to make important decisions <em>only</em> when inebriated, the idea being that only when mentally lubricated are you free of the societal filters and self-doubt. Therefore you think and act as your true self. Therefore you are thinking and acting <em>truthfully</em>, and hence <em>correctly</em>.&#8221; [via <a href="http://blog.asmartbear.com/call-bullshit.html">Jason Cohen</a>]</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/0hvKiOsJfP0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/05/28/making-decisions-inebriated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/05/28/making-decisions-inebriated/</feedburner:origLink></item>
		<item>
		<title>You Can Never Take My Freedom</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/2Gl6zhZhYmw/</link>
		<comments>http://technosailor.com/2011/05/27/you-can-never-take-my-freedom/#comments</comments>
		<pubDate>Fri, 27 May 2011 17:47:56 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[eg8]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[intellectual-property]]></category>
		<category><![CDATA[internet freedom]]></category>
		<category><![CDATA[internet protection]]></category>
		<category><![CDATA[plagiarism]]></category>
		<category><![CDATA[sarkozy]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8432</guid>
		<description><![CDATA[The idea of increasing protections on the Internet to ensure that piracy plagiarism and other forms of intellectual property theft is sexy to content producers who attempt to eschew the freedoms provided by the Internet in the 21st century.

Photographers don't like to have their photos used without permission, often times. Legitimately so. But that doesn't change the fact that photos are used without the permission of the photographer anyway. Regardless of protections currently in place or employed.]]></description>
			<content:encoded><![CDATA[<p><em>You can take my life, but you can never take my freedom. ~Sir William Wallace, Braveheart</em></p>
<p><img class="aligncenter size-large wp-image-8433" title="105582126_1858285685_b" src="http://technosailor.com/files/105582126_1858285685_b-600x383.jpg" alt="" width="584" height="372" /><br />
<cite>Photo by <a href="http://www.flickr.com/photos/markybon/105582126/">MarkyBon</a> on Flickr</cite></p>
<p>You cannot protect intellectual property in the Internet age.</p>
<p>At all. Don&#8217;t try.</p>
<p>The idea of increasing protections on the Internet to ensure that piracy, plagiarism and other forms of intellectual property theft is sexy to content producers who attempt to eschew the freedoms provided by the Internet in the 21st century.</p>
<p>Photographers don&#8217;t like to have their photos used without permission, often times. Legitimately so. But that doesn&#8217;t change the fact that photos are used without the permission of the photographer anyway. Regardless of protections currently in place or employed.</p>
<p>Writers don&#8217;t like their articles copied wholesale or scraped from the web an re-purposed or re-published elsewhere. Their writing is valuable and their ideas are their own. Why should someone else gain the benefit? But that doesn&#8217;t change the fact that words are commoditized things worth little and that the writers of those words are the silos for the intellect and the ideas. Therefore, artificial protections of articles as intellectual property does little in protecting that actual value&#8230; the writer. The writer who cannot be stolen.</p>
<p>Musicians get paid very little money, when signed to record deals, because the labels and distributors end up taking most of the money for &#8220;overhead&#8221;. So musicians balk at the idea of someone else dipping in and profiting in even the slightest way from their work. Except the artists who have recognized the nature of the 21st century have proved a model of profitability that end-rounds the tired oligopoly of the labels by going directly to the consumer. Try <a href="http://radiohead.com/">Radiohead</a>, for instance, who in 2007 released <em><a href="http://www.amazon.com/gp/product/B0011TQLA2/ref=as_li_ss_tl?ie=UTF8&amp;tag=emmensetechno-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399349&amp;creativeASIN=B0011TQLA2">In Rainbows</a></em> directly on their website to consumers. 22,000 records were sold in the first week in the United States <a class="simple-footnote" title="Wikipedia &#8211; In Rainbows sales." id="return-note-8432-1" href="#note-8432-1"><sup>1</sup></a>.</a></p>
<p>The Internet, for more than 20 years, has survived and thrived based on freedom that levels the playing field for the world.  Thomas Friedman has long been the champion of a flat world where all are socially, economically and technologically on a level playing field and, while his idea has merit, does not entirely pan out as the digital divide still exists with more of a concept of hills than the mountains that existed 20 years ago. Regardless, the Internet (and really technology as a whole, considering consumer electronic progresses) has indeed made it possible for accessibility in technology.</p>
<p>Take, for instance, the hobbyist photographer who can have access to high quality cameras and lenses for under $1000. Cameras that, today, will shoot HD video as well. Instead of requiring expensive film and dark rooms, the art of photography has been opened to the masses for a relatively inexpensive cost.</p>
<p>Musicians can save overhead on production simply by having access to moderately priced software for their Macs, instead of renting costly space at a studio.</p>
<p>Writers can be heard by millions of people worldwide, simply by having a blog. In fact, major media (early nemeses of the Internet-era technologies we use today), now embraces citizen journalism and related platforms like blogs and Twitter.</p>
<p>Photographers like Thomas Hawk recognize that their work will be &#8220;stolen&#8221; and have come to terms with that insisting that he won&#8217;t run away from the inevitable but will embrace it and leverage it.</p>
<p>Freedom can never be sacrificed for the sake of protection. To do so thrashes against the very currents that are already washing away these protectionist ideas.</p>
<div class="simple-footnotes"><p class="notes">Notes:</p><ol><li id="note-8432-1"><a href="http://en.wikipedia.org/wiki/In_Rainbows#Sales_and_chart_placings">Wikipedia &#8211; <em>In Rainbows</em> sales. <a href="#return-note-8432-1">&#8617;</a></li></ol></div><img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/2Gl6zhZhYmw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/05/27/you-can-never-take-my-freedom/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/05/27/you-can-never-take-my-freedom/</feedburner:origLink></item>
		<item>
		<title>Osama, Closure</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/se914V-KDOs/</link>
		<comments>http://technosailor.com/2011/05/02/osama-closure/#comments</comments>
		<pubDate>Mon, 02 May 2011 16:26:20 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[9/11]]></category>
		<category><![CDATA[closure]]></category>
		<category><![CDATA[osama bin laden]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[terrorism]]></category>
		<category><![CDATA[therapy]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8422</guid>
		<description><![CDATA[Photo taken by theqspeaks This post is therapy for me. Twitter and the media have already done a fine job of reporting and I am intentionally 12 hours late. There&#8217;s no new information I can provide, nor do I wish to. Last night was important. It was important for the world, the United States and [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-large wp-image-8423" title="5680107684_033d7fbdd9_z" src="http://technosailor.com/files/5680107684_033d7fbdd9_z-600x400.jpg" alt="" width="600" height="400" /><br />
<cite>Photo taken by <a href="http://www.flickr.com/photos/theqspeaks/5680107684/lightbox/">theqspeaks</a></cite><br />
This post is therapy for me. Twitter and the media have <a href="http://mediadecoder.blogs.nytimes.com/2011/05/01/how-the-osama-announcement-leaked-out/">already</a> <a href="http://www.poynter.org/latest-news/top-stories/130349/newspaper-front-pages-capture-elation-relief-that-osama-bin-laden-was-captured-killed/">done</a> a <a href="http://techcrunch.com/2011/05/01/news-of-osama-bin-ladens-death-spreads-like-wildfire-on-twitter/">fine</a> <a href="http://eu.techcrunch.com/2011/05/02/heres-the-guy-who-unwittingly-live-tweeted-the-raid-on-bin-laden/">job</a> of <a href="http://nationaljournal.com/text-president-george-w-bush-s-statement-on-osama-bin-laden-s-death-20110501">reporting</a> and I am intentionally 12 hours late. There&#8217;s no new information I can provide, nor do I wish to.</p>
<p>Last night was important. It was important for the world, the United States and me.</p>
<p>I remember 9/11, as so many other people also do. It was one of those key moments in history where everyone remembers where they were when they got the news that an airliner had crashed into the World Trade Center in New York.</p>
<p>For me, it was a day like many others. I was living in Maryland at the time. I lived out in the country about 30 miles west of Baltimore. It was a small place that my new wife, at the time, and I had moved into after we had gotten married. We both worked at a <a href="http://www.cms.gov/default.asp?">government facility</a>&nbsp;doing mundane contract work in a data center.</p>
<p>I remember that 30 minute drive into work that day around 7:30am. The sky was blue. Not a cloud in the sky. There was a&nbsp;definitive&nbsp;autumn crisp in the air that reminded me that summer was over and winter was on its way. I could smell the clean air with the faint smell of oak and cornfields. It was a beautiful day.</p>
<p>When I got into work that morning, after making small talk with the guys I worked with, I remember going through my daily routine. After firing up my computer and ensuring there was no pressing emails to attend to, I took a ten minute walk to the other side of the compound to a little deli. I grabbed some coffee (cream and sugar), a pre-packaged muffin and and orange juice and I sauntered my way back to the data center I worked in, stopping briefly along the way to jaw with colleagues I ran into en route.</p>
<p>When I got back to my cubicle, my coworkers Mark and Marty were not around. I didn&#8217;t think much of it. They had their morning routines as well.</p>
<p>But then a minute or two passed and Mark came rushing over in a frenzy. He said something quickly about a plane hitting the World Trade Center in NYC. I was confused. Must have been some errant propjob that got lost. I went to my computer and pulled up the Internet. Surely, CNN.com would have the story? Couldn&#8217;t reach it. MSNBC.com? Nope, can&#8217;t reach that either.</p>
<p>Is the Internet down? Nope, Amazon.com loaded fine. Hmmm. Well, let&#8217;s go next door to the command center, I suggested.</p>
<p>The command center was, as you might expect, a darkish room with televisions and monitors to allow contractors and employees to monitor every aspect of the mainframe system housed in the data center. They also had a consistent cable news feed so if there was news, it would be on there.</p>
<p>When Mark and I reached the command center, it was already overflowing with people who had also heard the news and had the same idea I had. By the time we arrived, only one plane had hit the towers. No one was really sure what the hell was happening, but no one was really thinking terrorism at the time. Just some unfortunate mishap in the worlds largest city.</p>
<p>Within minutes of being in the command center, I witnessed the second plane hit the towers. There was no mistaking this for anything less than a choreographed attack. Now people were pissed and you could sense it in the room.</p>
<p>Until the breaking news came in from CNN that the Pentagon had also been hit. The anger in the room immediately changed to fear. <em>We were sitting in a government facility and &#8220;they&#8221; were attacking DC. Were all government facilities targets? What about schools? Are our kids safe?</em></p>
<p>People started rushing from the room, grabbing their jackets and belongings and fleeing the building. Many were not so much fleeing the building but going to immediately fetch their children from school. <em>We had no idea what would happen next</em>.</p>
<p>That day I wept like I never wept before. Hours of endless tears as the horrors were played over and over on television. Eight days later, I would be in New York City, another place I once called home. I would get as close as 4 blocks from Ground Zero and still smell the burning ammonia, debris and flesh. I remember it vividly right now as I describe it and my stomach is turning.</p>
<p>This is what Osama bin Laden did to me.</p>
<p>We were all affected in different ways. Many people were not immediately affected, but their lives would&nbsp;radically&nbsp;change in the 10 years that would follow as loved ones went off to war to fight an undefined enemy with an undefined location. Some of those loved ones, sadly, never returned.</p>
<p>Some people lost friends and family in the Towers, or the Pentagon or in&nbsp;Pennsylvania&nbsp;that day. They will never return. The finger print of a murderer who cost us much more than just 3000 lives in 2001.</p>
<p>We all mourned in our own way. We were allowed to. We were encouraged to. We had to cope in different ways just because we are all different people.</p>
<p>This morning I awoke to a world without Osama bin Laden. It doesn&#8217;t change the past. I mourned again last night as I relived that September day 10 years ago. I watched crowds&nbsp;spontaneously&nbsp;amass in Lafayette Park in Washington, and in New York at Ground Zero and Times Square. I watched Twitter people question the mode in which other Americans celebrated. I watched people frown at beach balls being tossed. <a href="http://sports.espn.go.com/new-york/mlb/news/story?id=6463361">At least in one place</a>, the celebration was encouraged.</p>
<p><em>This is closure.</em></p>
<p>We all mourned in our own ways on September 11, 2001 and that was expected. We all now have an opportunity for closure and that process cannot be dictated. People are wounded and scarred. This news is a reminder of that day 10 years ago and, like me, many are now re-living it. However one gets the necessary closure at this time, let it be done and get out of peoples way.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/se914V-KDOs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/05/02/osama-closure/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/05/02/osama-closure/</feedburner:origLink></item>
		<item>
		<title>Product is King. Content is Not.</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/OaAObiTAh60/</link>
		<comments>http://technosailor.com/2011/04/06/product-is-king-content-is-not/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 18:26:07 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[Advertising]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[commodity]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[netflix]]></category>
		<category><![CDATA[remnant advertising]]></category>

		<guid isPermaLink="false">http://technosailor.com/?p=8415</guid>
		<description><![CDATA[Remember the bad old days of blog networks. Like when I was at <a href="http://b5media.com">b5media</a> championing the idea of content as the great savior of the Internet, the bellwether of future journalism, the dawn of an era of online advertising as the dominant (and only) truly valuable means of creating revenue online?

Yeah... so about that. 

I was wrong. ]]></description>
			<content:encoded><![CDATA[<p><img src="http://technosailor.com/files/90719365_10bcbfddb8_z-600x438.jpg" alt="" title="90719365_10bcbfddb8_z" width="600" height="438" class="alignright size-large wp-image-8416" /><cite>Photo by The Rocketeer on Flickr</cite><br />
Remember the bad old days of blog networks. Like when I was at <a href="http://b5media.com">b5media</a> championing the idea of content as the great savior of the Internet, the bellwether of future journalism, the dawn of an era of online advertising as the dominant (and only) truly valuable means of creating revenue online?</p>
<p>Yeah&#8230; so about that. </p>
<p>I was wrong. </p>
<p>I was wrong about the idea of wide adoption of online advertising as a primary revenue source for the <a href="http://longtail.typepad.com/the_long_tail/2005/07/does_the_long_t.html">long tail</a>. I was wrong about content not being a commodity. I was wrong to think  that successful online startups could have successful advertising models. I was just wrong.</p>
<p>As recently as this week, <a href="http://www.businessinsider.com/aol-fires-freelancers-2011-4?op=1">AOL laid off it&#8217;s &#8220;freelance writer&#8221; staff</a> as part of the recent Huffington Post acquisition and subsequent roll-up of AOL properties.</p>
<p>All you people thinking you can make money online using the standard advertising/content model&#8230; well, think again. You&#8217;re not.</p>
<p>Advertising is a commodity. Commodities, by definition, are resources that flood the marketplace, diluting the individual value of each resource. Advertising online is dominated by &#8220;remnant&#8221; advertising, which is cheap commodity advertising that costs the buyer little to purchase in bulk (think Adsense) and results in little payout to the publisher. There&#8217;s very little real money in commodity advertising. The real players are getting paid on direct sales advertising targeting big sites with high payouts (Think Apple taking out prominent advertising space on the <a href="http://nytimes.com">New York Times</a> for tens of thousands of dollars).</p>
<p>Content is a commodity. There are millions of bloggers. Millions of publishers. Hell, just this week, I migrated a site to <a href="http://wpengine.com">WP Engine</a> that had 11k+ sports blogs. Content is a commodity and, by definition, not valuable.</p>
<p>But if you want to keep thinking it&#8217;s valuable, go for it. You keep writing blog posts and giving yourself some sense of value. While you&#8217;re at it, take a look at the sky and convince yourself it&#8217;s actually orange.</p>
<p>Content companies are not likely to generate enough value in today&#8217;s economy. Certainly not for any kind of acquisition or exit.</p>
<p>I was wrong. I&#8217;m man enough to admit it.</p>
<p>In today&#8217;s internet economy, the real value and, in my opinion, the only viable model for successful online business is in product. Products. Real, tangible products. An iPhone app. A digital goods marketplace. A software product. A social network, perhaps. Something that has measurable customer acquisition and a real exchange of monetary value. You know, like the good old days where I pay you for something that I can, with certainty, validate receipt. I give you $30, you give me a text editor application for my Mac. I pay you $15/mo, I get an online invoicing service. I pay $0.99 and get a car locator app for my phone.</p>
<p>Content commoditization strategy says, I do something for you, Mr. Advertiser (put some code on my site), and you may pay me something if anything productive (click, action, impression) comes from it and, oh yeah, there&#8217;s no real measurements or guarantees for said exchange. Keep churning out content and page views will pay me.</p>
<p>No. That&#8217;s not how it works anymore. Why do you think <a href="http://netflix.com">Netflix</a> built their model on a pay-for-service concept instead of intro/outro/in-video advertising? Why do you think Amazon continues to diversify their product offering with no real advertisement and certainly no content? Need a server? <a href="http://aws.amazon.com/ec2/">You can have 10 for cheap</a>. Need music? <a href="http://www.amazon.com/MP3-Music-Download/b?ie=UTF8&#038;node=163856011">We&#8217;ve got that covered</a> at a competitive rate <em>and</em> now you can <a href="https://www.amazon.com/clouddrive">play it from anywhere</a>. Need toilet paper? We&#8217;re partnered with retailers across the country to provide any essential product you might need and you can even have it shipped free if you pay for this other service we call <a href="http://www.amazon.com/gp/prime">Prime</a>&#8230;</p>
<p>See? It&#8217;s product&#8230; not content. Content is becoming significantly less valuable.</p>
<p>Time to pivot.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/OaAObiTAh60" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/04/06/product-is-king-content-is-not/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/04/06/product-is-king-content-is-not/</feedburner:origLink></item>
		<item>
		<title>WordPress Bible: 2E Released (and a contest)</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/EfcJnEw6IAU/</link>
		<comments>http://technosailor.com/2011/04/01/wordpress-bible-2e-released-and-a-contest/#comments</comments>
		<pubDate>Fri, 01 Apr 2011 15:58:40 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[wordpress bible]]></category>

		<guid isPermaLink="false">http://technosailor.aaronbrazell.com/?p=8413</guid>
		<description><![CDATA[A few months ago, I let you know that WordPress Bible: Second Edition was available for pre-order. That has changed. It is now out and available to be ordered. Amazon, as usual, is the best way to order it.
This edition of my book has 60 new pages in it and covers up to WordPress 3.1. So all that stuff about post formats, custom post types, custom taxonomies, the merge of WordPress MU into WordPress as Multisite, the terminology changes… all of it…. covered in this book.]]></description>
			<content:encoded><![CDATA[<p><img src="http://technosailor.com/files/wpbible21-319x400.jpg" alt="" title="wpbible2" width="319" height="400" class="alignright size-medium wp-image-8414" />A few months ago, I let you know that <a href="http://technosailor.com/2011/01/18/pre-order-wordpress-bible-2nd-edition/">WordPress Bible: Second Edition was available for pre-order</a>. That has changed. It is <a href="http://amzn.to/wpbible2">now out and available to be ordered</a>. Amazon, as usual, is the best way to order it.</p>
<p>This edition of my book has 60 new pages in it and covers up to WordPress 3.1. So all that stuff about post formats, custom post types, custom taxonomies, the merge of WordPress MU into WordPress as Multisite, the terminology changes&#8230; all of it&#8230;. covered in this book.</p>
<p>I didn&#8217;t get everything right in the first edition. There were glaring omissions, politically incorrect moves (such as coverage of non-GPL products), and blatant mistakes. These have all been corrected in the second edition.</p>
<p>I&#8217;d love it if you supported the book and me. Please leave a review on Amazon as that helps drive more sales as well as proves the market for the book.</p>
<p>But here&#8217;s the question&#8230; how can the WordPress Bible, and the whole Bible series, be better? If you own more than one, what do you feel the strengths and weaknesses of the books are. Where can I (and Wiley) improve. This feedback is super-important. Feel free to email me on that if you don&#8217;t wish to publish publicly in comments.</p>
<p>Finally&#8230; if you take a picture of you with your first edition book, post it to Twitter to my attention, you have the chance to win a free signed copy of the second edition. I have my criteria for selecting a winner, but that will remain unshared for the time. So get to snapping and tweeting. :)</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/EfcJnEw6IAU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/04/01/wordpress-bible-2e-released-and-a-contest/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/04/01/wordpress-bible-2e-released-and-a-contest/</feedburner:origLink></item>
		<item>
		<title>Venture Capital Irony, Bubbles and Booms</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/5qU0bJ5JtPg/</link>
		<comments>http://technosailor.com/2011/03/24/venture-capital-irony-bubbles-and-booms/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 20:38:53 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[investing]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[sequoia capital]]></category>
		<category><![CDATA[vc]]></category>

		<guid isPermaLink="false">http://technosailor.aaronbrazell.com/?p=8409</guid>
		<description><![CDATA[Late in 2008, after the rest of the economy crashed and burned due to the housing crisis, the tech sector seemed to be fairly resiliant. Maybe it's the nature of the industry... less money at stake, generally, in tech VC deals than other industries. For instance, Biotech.

That all went out the window when Valley-based VC behemoth, <a href="http://www.sequoiacap.com/">Sequoia Capital</a>, gathered a now-infamous meeting of all its portfolio companies and gave them what can only be described as a "the sky is falling" lecture.
]]></description>
			<content:encoded><![CDATA[<p><img src="http://technosailor.com/files/money-600x400.jpg" alt="" title="money" width="600" height="400" class="aligncenter size-large wp-image-8410" /><br />
<cite>Photo by <a href="http://www.flickr.com/photos/epsos/5394616925/">epsos</a></cite></p>
<p>Late in 2008, after the rest of the economy crashed and burned due to the housing crisis, the tech sector seemed to be fairly resilient. Maybe it&#8217;s the nature of the industry&#8230; less money at stake, generally, in tech VC deals than other industries. For instance, Biotech.</p>
<p>That all went out the window when Valley-based VC behemoth, <a href="http://www.sequoiacap.com/">Sequoia Capital</a>, gathered a now-infamous meeting of all its portfolio companies and gave them what can only be described as a &#8220;the sky is falling&#8221; lecture.</p>
<p>In that lecture (that presentation is shown below), they advised their companies to buckle their seatbelts, lay off employees, and get rid of non-essential expenditures. They said it would be a dangerous ride ahead and that only the companies that had enough forward-thinking prowess to survive, would do so.</p>
<div style="width:425px" id="__ss_648808"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/eldon/sequoia-capital-on-startups-and-the-economic-downturn-presentation" title="Sequoia Capital on startups and the economic downturn">Sequoia Capital on startups and the economic downturn</a></strong> <object id="__sse648808" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=sequoia-1223625495238287-9&#038;stripped_title=sequoia-capital-on-startups-and-the-economic-downturn-presentation&#038;userName=eldon" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse648808" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=sequoia-1223625495238287-9&#038;stripped_title=sequoia-capital-on-startups-and-the-economic-downturn-presentation&#038;userName=eldon" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/eldon">Eric Eldon</a> </div>
</p></div>
<p>The presentation opened with an ominous title slide with the words: &#8220;RIP Good Times&#8221;. The presentation instructed CEOs to look for M&#038;A deals as quickly as possible, raise new cash now (i.e. late 2008) if they were looking to raise a new round, and have at least a year of cash in the bank.</p>
<p>Pretty ballsy move that, frankly, spelled the beginning of the tech sector decline. If Sequoia was instructing their companies in this way, then something must be severe, thought many other VCs who followed suit with their respective companies.</p>
<p>In some ways, Sequoia was correct. It would be a long road to recovery. In other sectors of the economy, the recovery is ongoing or is just beginning.</p>
<p>The tech sector is not that way, however. In the past year, we&#8217;ve seen huge investments in 2010. Twitter raised $200M+ on a $3.7B valuation. <a href="http://zynga.com">Zynga</a>, the social gaming company, raised $147M on an estimated $5B valuation. <a href="http://tumblr.com">Tumblr</a> raised $30M.</p>
<p>The bubble has been gaining full steam. And then there was yesterday.</p>
<p>Yesterday, you might ask? Yes&#8230; yesterday. Yesterday it was announced that Sequoia Capital led a $41M Series A round (Yes, you heard that right&#8230; Series A!) for new mobile social photo sharing company, <a href="http://color.com">Color</a>.</p>
<p>I&#8217;ll let you <a href="http://techcrunch.com/2011/03/23/color-looks-to-reinvent-social-interaction-with-its-mobile-photo-app-and-41-million-in-funding/">read about what Color is</a> because, though it&#8217;s a bright, shiny object that is interesting in some ways, it&#8217;s not, to me, a $41M play.</p>
<p>Sequoia seems to be taking the approach that many smart VCs these days, including Mark Suster from <a href="http://www.grpvc.com/">GRP Partners</a>, said last week when <a href="http://www.bothsidesofthetable.com/2011/03/17/whom-should-you-hire-at-a-startup-attitude-over-aptitude/">describing investment strategy relating to teams and not products</a>.</p>
<blockquote><p>Whatever you’re working on now, the half-life of innovation is so rapid now that your product will soon be out-of-date. Your existence is irrelevant unless you continue rapid innovation.  Your ability to keep up is dependent on having a great team of differing skills. Individuals don’t build great companies, teams do.</p></blockquote>
<p>And while I fully agree with Mark, I do have to question Sequoia making a $41M play less than three years after they virtually single-handedly drove the nail into the coffin of the tech sector. To me, it seems Sequoia made an opportunistic opportunity to drive the market rates down on valuations, to eventually make a big play like this at lower valuations (Disclaimer: I don&#8217;t actually know the terms of the Color deal). With a lower valuation, they can throw more cash and own the lion share of the available stock ownership. You know&#8230; waiting for a slam dunk, as it were. Mission Accomplished!</p>
<p>However, it&#8217;s notable that the Color team is truly a notable team. The former Chief Scientist at LinkedIn. The guy who sold Lala to Apple in 2009. Five other notable experienced entrepreneurs and successful startup people.</p>
<p>I&#8217;m sure Sequoia knows what it&#8217;s doing. It&#8217;s certainly interesting to watch investors defend them. There&#8217;s just very practical questions about how the company that started the tech recession could come out guns blazing on this one.</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/5qU0bJ5JtPg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/03/24/venture-capital-irony-bubbles-and-booms/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/03/24/venture-capital-irony-bubbles-and-booms/</feedburner:origLink></item>
		<item>
		<title>SXSW Protips</title>
		<link>http://feedproxy.google.com/~r/TechnosailorAaronBrazell/~3/blFrzmleQtU/</link>
		<comments>http://technosailor.com/2011/03/04/sxsw-protips/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 19:28:55 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
				<category><![CDATA[Aaron Brazell]]></category>
		<category><![CDATA[SXSW]]></category>
		<category><![CDATA[sxsw11]]></category>
		<category><![CDATA[sxswi]]></category>

		<guid isPermaLink="false">http://technosailor.aaronbrazell.com/?p=8405</guid>
		<description><![CDATA[This will be my fifth <a href="http://sxsw.com">SXSW</a> interactive. It's also, notably, the first SXSW that I am an Austinite. Since SXSW starts next week, the usual flood of tweets asking for advice or emails asking me to provide tips or asking me to be their guide began. It started earlier this year (back in January) than in years past. I'm chalking that up to the fact that I'm also living in Austin and am expected to "know the ropes".

Trust me. I do. On Austin and on SXSW.]]></description>
			<content:encoded><![CDATA[<p><img src="http://technosailor.com/files/4697176308_2ce328293e_b.jpg" alt="" title="4697176308_2ce328293e_b" width="681" height="1024" class="aligncenter size-full wp-image-8406" /><br />
This will be my fifth <a href="http://sxsw.com">SXSW</a> interactive. It&#8217;s also, notably, the first SXSW that I am an Austinite. Since SXSW starts next week, the usual flood of tweets asking for advice or emails asking me to provide tips or asking me to be their guide began. It started earlier this year (back in January) than in years past. I&#8217;m chalking that up to the fact that I&#8217;m also living in Austin and am expected to &#8220;know the ropes&#8221;.</p>
<p>Trust me. I do. On Austin and on SXSW.</p>
<p>I&#8217;ve got a rant going up on <a href="http://getoffmylawn.org">Get Off My Lawn</a> next week. But this post is not a rant. This post is about trying to be helpful to the many attendees coming here without having to commit to coaching each of you. This is my coaching. :-)</p>
<h3>There are 18,000 Attendees this Year</h3>
<p>That&#8217;s right. 18k. That&#8217;s more than every other year of interactive and is now <em>the largest</em> of the three SXSW festivals, eclipsing music for the first time and dwarfing film. <em>You can&#8217;t meet everyone. Don&#8217;t try.</em></p>
<p>Attendees will be everywhere. They will be at the convention center. At the bar getting a beer during the day. In the <a href="http://www.theurbanelife.com/?p=3558">Hilton Lobby</a>, a place WP Engine Advisor Ben Metcalfe (<a href="http://twitter.com/dotben">@dotBen</a>) posits the following observation:</p>
<p><!-- http://twitter.com/dotBen/statuses/40915407770615808 --><br />
<style type='text/css'>.bbpBox40915407770615810 {background:url(http://a0.twimg.com/profile_background_images/102482691/vbbminyellow2.jpg) #000000;padding:20px;} p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6} p.bbpTweet span.metadata span.author{line-height:19px} p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px} p.bbpTweet a:hover{text-decoration:underline}p.bbpTweet span.timestamp{font-size:12px;display:block}</style>
<div class='bbpBox40915407770615810'>
<p class='bbpTweet'>Sitting in Hilton lobby bar during SxSW is like sitting a safe distance away from the car stuck on the level crossing with the train coming<span class='timestamp'><a title='Thu Feb 24 23:26:08 +0000 2011' href='http://twitter.com/dotBen/statuses/40915407770615808'>less than a minute ago</a> via <a href="http://sites.google.com/site/yorufukurou/" rel="nofollow">YoruFukurou</a></span><span class='metadata'><span class='author'><a href='http://twitter.com/dotBen'><img src='http://a0.twimg.com/profile_images/296124636/bensqr_normal.jpg' /></a><strong><a href='http://twitter.com/dotBen'>Ben Metcalfe</a></strong><br />dotBen</span></span></p>
</div>
<p> <!-- end of tweet --></p>
<p>My point is&#8230; people are everywhere. Don&#8217;t be in a rush to be someplace. Ever. You&#8217;ll miss out on an opportunity.</p>
<h3>The Right Place, The Right Time</h3>
<p>Continuing that thought, if you&#8217;re scheduling your day out, you&#8217;re doing it wrong. As my friend Jeremy Wright (<a href="http://twitter.com/jeremywright">@jeremywright</a>) puts it:</p>
<p><!-- http://twitter.com/jeremywright/status/43739828755505153 --><br />
<style type='text/css'>.bbpBox43739828755505150 {background:url(http://a0.twimg.com/profile_background_images/125971052/twitter.jpg) #000000;padding:20px;} p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6} p.bbpTweet span.metadata span.author{line-height:19px} p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px} p.bbpTweet a:hover{text-decoration:underline}p.bbpTweet span.timestamp{font-size:12px;display:block}</style>
<div class='bbpBox43739828755505150'>
<p class='bbpTweet'>@<a class="tweet-url username" href="http://twitter.com/duanebrown" rel="nofollow">duanebrown</a> most of southby is knowing your options, and then making a choice on the fly.<span class='timestamp'><a title='Fri Mar 04 18:29:22 +0000 2011' href='http://twitter.com/jeremywright/status/43739828755505153'>less than a minute ago</a> via <a href="http://www.tweetdeck.com" rel="nofollow">TweetDeck</a></span><span class='metadata'><span class='author'><a href='http://twitter.com/jeremywright'><img src='http://a3.twimg.com/profile_images/1260947814/33701_475675811969_646836969_7270349_419748_n_normal.jpg' /></a><strong><a href='http://twitter.com/jeremywright'>Jeremy Wright</a></strong><br />jeremywright</span></span></p>
</div>
<p> <!-- end of tweet --></p>
<p>Use your <a href="http://plancast.com">Plancast</a>, Google Calendar, or whatever. Use these tools. Give yourself options. You may have some things that are required items and are non-negotiable (i.e. you&#8217;re throwing a party&#8230; it&#8217;s <em>your</em> party. You better be there). Other times, you just need scaffolding to give you options. Then you make your decisions in real-time. If you plan everything out and try to stick to that plan, you will miss out on opportunities and people.</p>
<p>Anecdotally, because I was in the right place at the right time, I&#8217;ve met NBA Dallas Mavericks owner and serial entrepreneur Mark Cuban, former Twitter CEO Evan Williams, Fark.com creator and Chief Looney Officer Drew Curtis just by being at the right place at the right time.</p>
<p>If you rush, you&#8217;ll hate SXSW and you&#8217;ll miss opportunities.</p>
<h3>Hydrate!</h3>
<p>I cannot emphasize this practical tip enough. In Austin in early March, you&#8217;re going to have warm days (the long-range forecast at this time shows mid-70s most of the time) and cool nights. (We&#8217;re also good for a monsoon-like storm at least once&#8230; it happens every year). You&#8217;re going to be drinking a lot at night. You&#8217;re going to be walking a lot during the day. With a bag on your back. Hydrate. And take a 5 hour energy* before you start going to town on booze&#8230; you&#8217;ll thank me in the morning.</p>
<h3>Strategic Locations for Some Random Product that May be Launched on Mar 11</h3>
<p><strong>Apple Store &#8211; Barton Creek Mall</strong><br />
2901 S. Capital of Texas Hwy<br />
Austin, TX 78746 (<a href="http://maps.google.com/maps?f=q&#038;source=s_q&#038;hl=en&#038;geocode=&#038;q=2901+Capital+of+Texas+Highway+South,+Austin,+TX&#038;aq=0&#038;sll=30.26176,-97.772559&#038;sspn=0.009397,0.019054&#038;ie=UTF8&#038;hq=&#038;hnear=2901+S+Capital+of+Texas+Hwy,+Austin,+Travis,+Texas+78746&#038;ll=30.253877,-97.807159&#038;spn=0.075179,0.152435&#038;z=13">map</a>)<br />
Estimated Cab time: 15 mins</p>
<p><strong>Apple Store &#8211; The Domain</strong><br />
11410 Century Oaks Terrace<br />
Austin, TX 78758 (<a href="http://maps.google.com/maps?f=q&#038;source=s_q&#038;hl=en&#038;geocode=&#038;q=11410+Century+Oaks+Terrace,+austin+tx&#038;aq=&#038;sll=30.264685,-97.774035&#038;sspn=0.037585,0.076218&#038;ie=UTF8&#038;hq=&#038;hnear=11410+Century+Oaks+Terrace,+Austin,+Travis,+Texas+78759&#038;ll=30.349176,-97.718582&#038;spn=0.300421,0.609741&#038;z=11">map</a>)<br />
Estimated Cab time: 25 mins</p>
<p><strong>AT&#038;T Store</strong><br />
1011 W. 5th St<br />
Austin, TX 78703 (<a href="http://maps.google.com/maps?f=q&#038;source=s_q&#038;hl=en&#038;geocode=&#038;q=1011+West+5th+Street,+Austin,+TX&#038;aq=0&#038;sll=30.363396,-97.757721&#038;sspn=0.285567,0.609741&#038;ie=UTF8&#038;hq=&#038;hnear=1011+W+5th+St,+Austin,+Travis,+Texas+78703&#038;ll=30.270113,-97.754717&#038;spn=0.037583,0.076218&#038;z=14">map</a>)<br />
Estimated Cab time: 5 mins</p>
<p><strong>Verizon Wireless</strong><br />
9600 S IH-35<br />
Austin, TX 78748 (<a href="http://maps.google.com/maps?f=q&#038;source=s_q&#038;hl=en&#038;geocode=&#038;q=9600+S+I+H+35,+austin+tx&#038;aq=&#038;sll=30.290496,-97.711029&#038;sspn=0.28578,0.609741&#038;ie=UTF8&#038;hq=&#038;hnear=9600+S+Interstate+35,+Austin,+Travis,+Texas+78748&#038;ll=30.159971,-97.79274&#038;spn=0.301,0.609741&#038;z=11">map</a>)<br />
Estimated Cab time: 20 mins</p>
<p>You know&#8230; just in case.</p>
<h3>Food</h3>
<p>Go to <a href="http://twitter.com/peachedtortilla">@peachedtortilla</a>, my favorite food truck in town, and say hi to Eric and Lou. Get some Banh Mi tacos or pork belly sliders. I think they plan to be around <del>Congress and 6th</del> 5th and Colorado but follow them for more details.</p>
<p>Also, on the Saturday of SXSW (Mar 12), Franklin BBQ is opening up a short walk away from the downtown center at 11th just east of I-35. Franklins is somewhat legendary in Austin because of their original restaurant farther north.</p>
<p>Grab the chicken fried steak and a Mexican Martini for lunch at Cedar Door 3 blocks away from the convention center at 2nd and Brazos (behind the Hampton Inn).</p>
<p>Enjoy some Absinthe-based drinks at Peche on W. 4th St in the Warehouse District. It&#8217;s a mere 6 blocks and worth it. Don&#8217;t ask for vodka. No, really&#8230;</p>
<h3>Finally</h3>
<p>Don&#8217;t be a douche. We welcome visitors and want you to enjoy this fine city. Leave it the way you found it. Remember, you are a guest and we have long memories. Tip your bartenders well. Did you hear me&#8230; WELL. If it&#8217;s an open bar, assume no one is tipping them. Carry some cash for the occasion. Bartenders do remember bad patrons just like patrons remember bad bartenders.</p>
<p>You&#8217;re not entitled to anything. Don&#8217;t jump party lines or use &#8220;Do you know who I am?&#8221; lines. No one gives a shit and you look like a prick. Treat people respectfully&#8230; Most of you do. Some of you don&#8217;t.</p>
<p>And that&#8217;s it. Any veterans have some protips to share as well?</p>
<p>* 5 Hour energy tip given by D&#8217;Ann Faught :-p</p>
<img src="http://feeds.feedburner.com/~r/TechnosailorAaronBrazell/~4/blFrzmleQtU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://technosailor.com/2011/03/04/sxsw-protips/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://technosailor.com/2011/03/04/sxsw-protips/</feedburner:origLink></item>
	</channel>
</rss>

