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

<channel>
	<title>Krotscheck.net &#187; Blog</title>
	<atom:link href="http://www.krotscheck.net/tag/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.krotscheck.net</link>
	<description>Michael Krotscheck's insights, ideas, and inspirations about web technology, life, and the kitchen sink.</description>
	<lastBuildDate>Fri, 03 Feb 2012 05:10:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Database Upgrades and Migrations with Adobe AIR</title>
		<link>http://www.krotscheck.net/2011/01/13/database-upgrades-and-migrations-with-adobe-air.html</link>
		<comments>http://www.krotscheck.net/2011/01/13/database-upgrades-and-migrations-with-adobe-air.html#comments</comments>
		<pubDate>Thu, 13 Jan 2011 15:16:15 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[sqlite]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2011/01/13/database-upgrades-and-migrations-with-adobe-air.html</guid>
		<description><![CDATA[This post will show you how to update your SQLite application when you release a new version of your AIR application (Android or otherwise). For those of you who are impatient, just copy the two classes provided and use them as demonstrated at the end of the post (or roll your own, your choice). When [...]]]></description>
			<content:encoded><![CDATA[<p>This post will show you how to update your SQLite application when you release a new version of your AIR application (Android or otherwise). For those of you who are impatient, just copy the two classes provided and use them as demonstrated at the end of the post (or roll your own, your choice).</p>
<p>When releasing a new version of an AIR application that makes use of SQLite, it&#8217;s often necessary to upgrade the schema for that database as well. While taking a Hail Mary approach to the problem and just deleting the old database may work for some, it&#8217;s not an elegant option and will ensure that you can never persist data between versions. Instead, creating a way for your application to gracefully migrate its own database to the most recent version will ensure that your local data is not compromised, providing a smooth and seamless experience for the end user.</p>
<h3>The Concept</h3>
<p>We know that a database is the accumulation of all the CREATE, UPDATE and DELETE statements that have come before it. This means it may be easily represented and reconstructed by an <strong><em>ordered</em></strong> sequence of SQL files. It then becomes our task to manage which SQL files have already been executed in a given application version, and to execute (in order) those files which have not.</p>
<p>To accomplish this, we do the following:</p>
<ol>
<li>We create a migration table within your database in which we store which scripts have been executed.</li>
<li>We check each script against this table before we run it.</li>
</ol>
<p>There are other optimizations we can perform, however for this case we&#8217;re going to keep the idea simple.</p>
<h3>Part 1: The Migration Class</h3>
<p>The Migration class is a simple value container that contains your SQL Script as well as a Unique ID. Both of these are derivatives, since we want to give options on how to include the SQL file, and we don&#8217;t want to make our users have to think too much about how to set up a migration.</p>
<div class="code">
<pre>
package com.fancybrandname.core.db
{
        import com.adobe.crypto.MD5;
        import com.fancybrandname.core.utils.LogUtil;

        import flash.data.SQLConnection;
        import flash.data.SQLStatement;
        import flash.errors.IllegalOperationError;

        import mx.logging.ILogger;

        /**
         * A specific database migration instance. It should contain both a version
         * and an embedded SQL source file that will be executed against the database.
         *
         * @author Michael Krotscheck
         */
        public class Migration
        {
                /**
                 * Logger
                 */
                private static const LOG : ILogger = LogUtil.getLogger( Migration );

                /**
                 * The SQL Source to use for this migration.
                 */
                private var _source : *;

                /**
                 * The SQL Statement extracted from the SQL Source object.
                 */
                private var _sqlStatement : String;

                /**
                 * This is the unique version key we use to identify this particular migration.
                 */
                private var _versionKey : String;

                /**
                 * The SQL Source to use for this migration.
                 */
                public function get source () : *
                {
                        return _source;
                }

                /**
                 * @private
                 */
                public function set source ( value : * ) : void
                {
                        _source = value;

                        // Here we attempt to extract the SQL statement from the passed object. If
                        // the object is a Class (as with the @Embed directive), we instantiate and convert it.
                        // If it's anything else we try to invoke the toString method, and throw an error if we
                        // can't find it.
                        if ( _source is Class )
                        {
                                _sqlStatement = ( new _source() ).toString();
                        }
                        else
                        {
                                try
                                {
                                        _sqlStatement = _source.toString();
                                }
                                catch ( e : Error )
                                {
                                        throw new IllegalOperationError( 'Unrecognized type for SQL Migration. Please use Embeds or Strings' );
                                }
                        }

                        // Now we generate a unique ID from this string.
                        // You could request this key manually so that you don't have a dependency
                        // on the adobe crypto library, but I prefer doing it this way.
                        _versionKey = MD5.hash( sqlStatement );
                }

                /**
                 * This is the unique version key we use to identify this particular migration.
                 *
                 * @read-only
                 */
                public function get versionKey () : String
                {
                        return _versionKey;
                }

                /**
                 * This is the unique version key we use to identify this particular migration.
                 *
                 * @read-only
                 */
                public function get sqlStatement () : String
                {
                        return _sqlStatement;
                }

                /**
                 * Constructor.
                 */
                public function Migration ()
                {
                }
        }
}
</pre>
</div>
<h3>Step 2: The Migration Manager</h3>
<p>Our migration manager does the heavy lifting for this class, by checking the database for the last applied migration key and only applying those keys that come after it. It assumes several things. Firstly, that the migrations are in order of execution. Secondly, that the SqlConnection instance passed to it is a synchronous, not asynchronous connection. This method would definitely work for asynchronous connections, however you&#8217;d have to adjust the class to iterate using eventListeners. I leave this as an exercise to the reader.</p>
<div class="code">
<pre>package com.fancybrandname.core.db
{
	import flash.data.SQLConnection;
	import flash.data.SQLResult;
	import flash.data.SQLStatement;
	import flash.errors.IllegalOperationError;
	import flash.errors.SQLError;

	/**
	 * This metadata sets the default property for child nodes used in MXML. This
	 * makes MXML markup a lot easier to understand.
	 */
	[DefaultProperty( &quot;migrations&quot; )]
	/**
	 * A simple class that assists in managing multiple SQL files that may need
	 * to be run against a locally stored database. It makes the assumption
	 * that the migrations must be executed in the order in which they are provided,
	 * and that the database starts &quot;clean&quot; and untouched.
	 *
	 * @author Michael Krotscheck
	 */
	public class MigrationManager
	{

		/**
		 * The SQL Connection to use to connect to the database and check for migration.
		 */
		public var sqlConnection : SQLConnection;

		/**
		 * The migrations to run against the database. These must be in order of execution.
		 */
		public var migrations : Vector.&lt;Migration&gt; = new Vector.&lt;Migration&gt;();

		/**
		 * The name of the table within the database to store the migrations in.
		 */
		public var tableName : String = 'migration';

		/**
		 * Constructor
		 */
		public function MigrationManager ( sqlConnection : SQLConnection = null )
		{
			this.sqlConnection = sqlConnection;
		}

		/**
		 * This method runs the database migrations.
		 */
		public function migrate () : void
		{
			// Can we migrate?
			if ( !sqlConnection )
			{
				throw new IllegalOperationError( 'No SQLConnection provided' );
				return;
			}

			try
			{
				// Make sure the migration table exists.
				createMigrationTable();

				// Get the last version key applied to the database.
				var lastVersionKey : String = getLastVersionKey();

				// Iterate through our collection and execute every script AFTER the version key we found.
				var len : int = migrations.length;

				// Switch to let us know whether the last version key was found.
				// If the last version key is empty, apply all of them.
				var lastKeyFound : Boolean = lastVersionKey == '' ? true : false;

				for ( var i : int = 0; i &lt; len; i++ )
				{
					var currentMigration : Migration = migrations[ i ];

					if ( lastKeyFound )
					{
						apply( currentMigration );
					}
					else if ( currentMigration.versionKey == lastVersionKey )
					{
						lastKeyFound = true;
					}
				}
			}
			catch ( e : SQLError )
			{
				throw( e );
			}
		}

		/**
		 * This method creates the migration table if it doesn't exist yet.
		 */
		private function createMigrationTable () : void
		{
			var sql : String = 'CREATE TABLE IF NOT EXISTS ' + tableName + ' (version varchar(32) NOT NULL PRIMARY KEY, applied_on timestamp NOT NULL);';

			var statement : SQLStatement = new SQLStatement();
			statement.sqlConnection = sqlConnection;
			statement.text = sql;
			statement.execute();
		}

		/**
		 * This method gets the last version key recorded in the database.
		 */
		private function getLastVersionKey () : String
		{
			var statement : SQLStatement = new SQLStatement();
			statement.text = 'SELECT version FROM ' + tableName + ' ORDER BY applied_on DESC LIMIT 0,1';
			statement.sqlConnection = sqlConnection;
			statement.execute();

			var sqlResult : SQLResult = statement.getResult();

			if ( sqlResult == null || !sqlResult.data || sqlResult.data.length == 0 )
			{
				// No migrations found.
				return '';
			}
			else
			{
				// We found one, return it.
				return sqlResult.data[ 0 ].version;
			}
		}

		/**
		 * This method applies the database migration to the database passed to this function.
		 * Please note that this version of the class only works with Synchronous SQLConnections.
		 */
		private function apply ( migration : Migration ) : void
		{
			// Apply the migration
			var updateStatement : SQLStatement = new SQLStatement();
			updateStatement.text = migration.sqlStatement;
			updateStatement.sqlConnection = sqlConnection;
			updateStatement.execute();

			// Update the version key
			var versionStatement : SQLStatement = new SQLStatement();
			versionStatement.text = 'INSERT INTO ' + tableName + ' (version, applied_on) VALUES ( :version , :timestamp )';
			versionStatement.parameters[ ':version' ] = migration.versionKey;
			versionStatement.parameters[ ':timestamp' ] = ( new Date() ).getTime();
			versionStatement.sqlConnection = sqlConnection;
			versionStatement.execute();
		}
	}
}</pre>
</div>
<h3>Step 3: Usage</h3>
<p>Finally it&#8217;s time to use our class. As you can see the MXML markup is pretty straightforwar, and usage in ActionScript is similarly easy. Note that I&#8217;m using both @Embed directives and raw text, and pay particular attention to the embed mime-type. Without it, this doesn&#8217;t really work.</p>
<div class="code">
<pre>&lt;s:Application
	xmlns:fx="http://ns.adobe.com/mxml/2009"
	xmlns:parsley="http://www.spicefactory.org/parsley"
	xmlns:s="library://ns.adobe.com/flex/spark"
	xmlns:db="com.fancybrandname.core.db.*"
	&gt;
	&lt;fx:Script&gt;
		&lt;![CDATA[
			override protected function initializationComplete():void
			{
				super.initializationComplete();

				var dbFile :File = File.applicationStorageDirectory.resolvePath('myDb.db');
				var connection :SQLConnection = new SQLConnection();
				connection.open( dbFile );

				migrationManager.sqlConnection = connection;
				migrationManager.migrate();
			}
		]]&gt;
	&lt;/fx:Script&gt;

	&lt;fx:Declarations&gt;
		&lt;db:MigrationManager id="migrationManager" tableName="migrations"&gt;
			&lt;db:Migration source="@Embed(source='/sql/CreateSomeTable.sql',mimeType='application/octet-stream')"/&gt;
			&lt;db:Migration source="DROP TABLE IF EXISTS someTable;"/&gt;
			&lt;db:Migration source="@Embed(source='/sql/CreateSomeOtherTable.sql',mimeType='application/octet-stream')"/&gt;
		&lt;/db:MigrationManager&gt;
	&lt;/fx:Declarations&gt;
&lt;/s:Application&gt;</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2011/01/13/database-upgrades-and-migrations-with-adobe-air.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zend_Auth_Adapter_Facebook</title>
		<link>http://www.krotscheck.net/2010/08/21/zend_auth_adapter_facebook.html</link>
		<comments>http://www.krotscheck.net/2010/08/21/zend_auth_adapter_facebook.html#comments</comments>
		<pubDate>Sat, 21 Aug 2010 22:00:13 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Auth]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2010/08/21/zend_auth_adapter_facebook.html</guid>
		<description><![CDATA[This post is rather more nerdy than my other ones, and goes to describe how to create a Facebook authentication adapter for the Zend Framework, using the new Facebook Graph API. I do not intend to support this code explicitly, but I do work with it and will update it to suit my own needs. [...]]]></description>
			<content:encoded><![CDATA[<p>This post is rather more nerdy than my other ones, and goes to describe how to create a Facebook authentication adapter for the Zend Framework, using the new Facebook Graph API. I do not intend to support this code explicitly, but I do work with it and will update it to suit my own needs. If you&#8217;re impatient, the full code for the adapter and a sample controller are the last two code samples at the bottom of this post.</p>
<h3>A discussion about OAuth and OpenID</h3>
<p>Strictly speaking, Facebook supports <a href="http://oauth.net/" target="_blank">OAuth</a>, not <a href="http://openid.net/foundation/" target="_blank" title="The OpenID Foundation">OpenID</a>. OAuth is a way for your application to act on behalf of someone else on another side, while OpenId exists solely for you to use the other website as an authorization authority. The difference is subtle, however telling that Facebook has explicitly stated that it does not want to be an authorization authority. In practice, however, the two standards are interchangeable, and OAuth works pretty well as a way to authenticate a user.</p>
<h3>How Facebook Auth Actually Works</h3>
<p>Here&#8217;s the flow in four easy steps:</p>
<ol>
<li>The user clicks on a &#8220;Login to Facebook&#8221; link on your server, which redirects them to another page on your server that handles the authentication.</li>
<li>Your Facebook Auth page puts all the parameters for your authentication, such as your app ID and scope, into a URL and sends the user to Facebook via that URL.</li>
<li>Once Facebook returns the user (presumably authenticated) to your server, you can use the parameters sent via the URL to request an authentication token from Facebook. This is done via curl or some other server-to-server communication by calling the graph API.</li>
<li>You use this authentication token to access the user&#8217;s information on Facebook.</li>
</ol>
<h4>Step 1: Get all the data you need</h4>
<p>To properly authenticate with Facebook, you need four pieces of data. The first two are your application id and your application secret, both of which are available on your developer application page.</p>
<div class="image">
  <img src="http://www.krotscheck.net/wp-content/uploads/2010/08/Screen-shot-2010-08-21-at-1.50.04-PM.png" width="479" height="480" alt="Screen shot 2010-08-21 at 1.50.04 PM.png" /></p>
<p>A sample Facebook application page</p>
</div>
<p>The second two pieces of data are specific to your implementation. These are the redirect URI, which is used to tell Facebook where to send the user once they are done authorizing your application, and the permission scope, which you use to tell Facebook what permissions you want to request from the user. This latter one actually warrants some more documentation, which Facebook has graciously provided <a href="http://developers.facebook.com/docs/authentication/permissions" target="_blank">here</a>. Be careful: Users can get really suspicious if you ask for too much data.</p>
<h4>Step 2: Redirect your user to Facebook.</h4>
<p>With this data, you can redirect your user to Facebook. Facebook will then work some magic and ask the user whether they want to grant your application access to their profile. Don&#8217;t forget to urlencode that Redirect URI.</p>
<div class="code">
<pre>
$loginUri = "https://graph.facebook.com/oauth/authorize?client_id={$appId}&amp;redirect_uri={$redirectUri}&amp;scope={$scope}";
header('Location: ' . $loginUri);
</pre>
</div>
<h4>Step 3: Request an Auth Token</h4>
<p>Assuming that the user authorizes your application, Facebook will return them to your redirect URI with the &#8220;code&#8221; parameter in the URL. You can use this parameter to request an authorization token from Facebook. In this case I&#8217;m using the Zend Request handler to simplify things a little.</p>
<div class="code">
<pre>
$client = new Zend_Http_Client( "https://graph.facebook.com/oauth/access_token" );
$client-&gt;setParameterGet('client_id', $appId);
$client-&gt;setParameterGet('client_secret', $secret);
$client-&gt;setParameterGet('code', $code);
$client-&gt;setParameterGet('redirect_uri', $redirectUri);

$result = $client-&gt;request('GET');
$params = array();
parse_str($result-&gt;getBody(), $params);
$token = $params['access_token'];</pre>
</div>
<h4>Step 4: Read the user&#8217;s profile</h4>
<p>At this point, you have an auth token that grants you access to read the user&#8217;s profile information in accordance to the permissions they have granted you. These permissions are completely blind- you don&#8217;t have to additionally specify what you want to access &#8211; the requests will simply return the information to which you have access.</p>
<div class="code">
<pre>
$client = new Zend_Http_Client( "https://graph.facebook.com/me" );
$client-&gt;setParameterGet('client_id', $appId);
$client-&gt;setParameterGet('access_token', $token);
$result = $client-&gt;request('GET');
$user = json_decode($result-&gt;getBody());</pre>
</div>
<h4>Zend_Auth_Adapter_Facebook</h4>
<p>For those of you who would rather not take the above code and wrap it into your own Auth Adapter, I&#8217;ve gone ahead and done all that work for you. Below you will find a sample Zend Controller, as well as a pre-baked Auth Adapter. If you come across any major security problems in it, I&#8217;d love to know, since I use this adapter myself <img src='http://www.krotscheck.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<div class="code">
<p>file: Zend/Auth/Adapter/Facebook.php</p>
<pre>
class Zend_Auth_Adapter_Facebook implements Zend_Auth_Adapter_Interface
{
    /**
     * The Authentication URI, used to bounce the user to the facebook redirect uri.
     *
     * @var string
     */
    const AUTH_URI = 'https://graph.facebook.com/oauth/authorize?client_id=%s&amp;redirect_uri=%s';

    /**
     * The token URI, used to retrieve the OAuth Token.
     *
     * @var string
     */
    const TOKEN_URI = 'https://graph.facebook.com/oauth/access_token';

    /**
     * The user URI, used to retrieve information about the user.
     *
     * @var string
     */
    const USER_URI = 'https://graph.facebook.com/me';

    /**
     * The application ID
     *
     * @var string
     */
    private $_appId = null;

    /**
     * The application secret
     *
     * @var string
     */
    private $_secret = null;

    /**
     * The authentication scope (advanced options) requested
     *
     * @var string
     */
    private $_scope = null;

    /**
     * The redirect uri
     *
     * @var string
     */
    private $_redirectUri = null;

    /**
     * Constructor
     *
     * @param string $appId the application ID
     * @param string $secret the application secret
     * @param string $scope the application scope
     * @param string $redirectUri the URI to redirect the user to after successful authentication
     */
    public function __construct($appId, $secret, $redirectUri, $scope)
    {
        $this-&gt;_appId = $appId;
        $this-&gt;_secret = $secret;
        $this-&gt;_scope = $scope;
        $this-&gt;_redirectUri   = $redirectUri;
    }

    /**
     * Sets the value to be used as the application ID
     *
     * @param  string $appId The application ID
     * @return Zend_Auth_Adapter_Facebook Provides a fluent interface
     */
    public function setAppId($appId)
    {
        $this-&gt;_appId = $id;
        return $this;
    }

    /**
     * Sets the value to be used as the application secret
     *
     * @param  string $secret The application secret
     * @return Zend_Auth_Adapter_Facebook Provides a fluent interface
     */
    public function setSecret($secret)
    {
        $this-&gt;_secret = $secret;
        return $this;
    }

    /**
     * Sets the value to be used as the application scope (array())
     *
     * @param  string $scope The application scope
     * @return Zend_Auth_Adapter_Facebook Provides a fluent interface
     */
    public function setApplicationScope($scope)
    {
        $this-&gt;_scope = $scope;
        return $this;
    }

    /**
     * Sets the redirect uri after successful authentication
     *
     * @param  string $redirectUri The redirect URI
     * @return Zend_Auth_Adapter_Facebook Provides a fluent interface
     */
    public function setRedirectUri($redirectUri)
    {
        $this-&gt;_redirectUri = $redirectUri;
        return $this;
    }

    /**
     * Authenticates the user against facebook
     * Defined by Zend_Auth_Adapter_Interface.
     *
     * @throws Zend_Auth_Adapter_Exception If answering the authentication query is impossible
     * @return Zend_Auth_Result
     */
    public function authenticate()
    {
    	// Get the request object.
    	$frontController = Zend_Controller_Front::getInstance();
    	$request = $frontController-&gt;getRequest();

    	// First check to see wether we're processing a redirect response.
    	$code = $request-&gt;getParam('code');

    	if ( empty ($code ) )
    	{
	    	// Create the initial redirect
	    	$loginUri = sprintf(Zend_Auth_Adapter_Facebook::AUTH_URI , $this-&gt;_appId, $this-&gt;_redirectUri);

	    	if ( !empty($this-&gt;_scope) )
	    	{
	    		$loginUri .= "&amp;scope=" . $this-&gt;_scope;
	    	}

	    	header('Location: ' . $loginUri );
    	}
    	else
    	{
    		// Looks like we have a code. Let's get ourselves an access token
	    	$client = new Zend_Http_Client( Zend_Auth_Adapter_Facebook::TOKEN_URI );
	    	$client-&gt;setParameterGet('client_id', $this-&gt;_appId);
	    	$client-&gt;setParameterGet('client_secret', $this-&gt;_secret);
	    	$client-&gt;setParameterGet('code', $code);
	    	$client-&gt;setParameterGet('redirect_uri', $this-&gt;_redirectUri);

	    	$result = $client-&gt;request('GET');
	    	$params = array();
	    	parse_str($result-&gt;getBody(), $params);

	    	// REtrieve the user info
	    	$client = new Zend_Http_Client(Zend_Auth_Adapter_Facebook::USER_URI );
	    	$client-&gt;setParameterGet('client_id', $this-&gt;_appId);
	    	$client-&gt;setParameterGet('access_token', $params['access_token']);
	    	$result = $client-&gt;request('GET');
	    	$user = json_decode($result-&gt;getBody());

            return new Zend_Auth_Result( Zend_Auth_Result::SUCCESS, $user-&gt;id, array('user'=&gt;$user, 'token'=&gt;$params['access_token']) );
    	}

        return new Zend_Auth_Result( Zend_Auth_Result::FAILURE, null, 'Error while attempting to redirect.' );
    }
}
</pre>
</div>
<div class="code">
<p>file: modules/default/controllers/FacebookauthController.php</p>
<pre>
/**
 * Sample Facebook Auth Controller.
 *
 * @author Michael Krotscheck
 */
class FacebookauthController extends Zend_Controller_Action
{
	/**
	 * Application default action
	 */
	public function indexAction ()
	{
		$appId = 'YOUR_APP_ID';
		$secret = 'YOUR_APP_SECRET';
		$redirectUri = 'http://path-to-this-controller-and-action';
		$scope = 'YOUR_COMMA_SEPARATED_APPLICATION_SCOPE';

		// Create the authentication adapter.
		$adapter = new Zend_Auth_Adapter_Facebook( $appId, $secret, $redirectUri, $scope );

		// Get an authenticator instance
		$auth = Zend_Auth::getInstance();

		// This call will automatically redirect to facebook with the passed parameters.
		$result = $auth-&gt;authenticate($adapter);

		if ( $result-&gt;isValid() )
		{
			// Get the messages
			$messages = $result-&gt;getMessages();

			// Get the user object from the returned messages.
			$fbUser = $messages['user'];

			var_dump($fbUser);
		}
	}
}
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2010/08/21/zend_auth_adapter_facebook.html/feed</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>What makes a &#8216;Rockstar&#8217; Developer?</title>
		<link>http://www.krotscheck.net/2010/01/10/what-makes-a-rockstar-developer.html</link>
		<comments>http://www.krotscheck.net/2010/01/10/what-makes-a-rockstar-developer.html#comments</comments>
		<pubDate>Sun, 10 Jan 2010 15:11:30 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[entrepreneurship]]></category>
		<category><![CDATA[rockstar]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2010/01/10/what-makes-a-rockstar-developer.html</guid>
		<description><![CDATA[I&#8217;ve recently been involved in a discussion about what makes a rockstar developer for a startup. This has always surprised me- the reality of the matter is that there are no rockstars, only people who think of themselves as rockstars, and those are the last people you want in charge of your product. So I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been involved in a discussion about what makes a rockstar developer for a startup. This has always surprised me- the reality of the matter is that there are no rockstars, only people who think of themselves as rockstars, and those are the last people you want in charge of your product. So I figure, as someone who&#8217;s been around the block a few times, it would be good to come up with a list of what actually makes for a &#8220;rockstar&#8221; developer. If I miss anything, feel free to contribute in the comments.</p>
<h4>1- They don&#8217;t think of themselves as rock stars.</h4>
<p>Arrogance is perhaps a key requirement in being an entrepreneur, but overconfidence will drain your cash pool faster than hookers and blow.</p>
<h4>2- They have a proven track record of multiple shipped products.</h4>
<p>You don&#8217;t want a hotshot kid out of school, you want a seasoned professional, preferably one who knows how to write applications for the industry you&#8217;re trying to reach.</p>
<h4>3- They care more about frameworks than plumbing.</h4>
<p>Unless you&#8217;re trying to design a complex new mathematical algorithm (in which case you should probably be partnering with a university research lab), you want someone who can grasp a system rather than a method. If this guy ends up in deep technical discussions about the optimal way of implementing a sort, you&#8217;ve got the wrong guy.</p>
<h4>4- They&#8217;re not willing to work for free</h4>
<p>Risk management and strategic thinking is key to long-term project viability. If you have someone willing to work for equity, they&#8217;re willing to take risks with your payment processing gateway just as easily as they&#8217;re taking a risk on you.</p>
<h4>5- They believe in development process and best practices to speed up their work.</h4>
<p>The last thing you want is someone who&#8217;s trying to reinvent the wheel. Mind you, this also likely means that the first two weeks or so of development you&#8217;ll see a lot of development support tools get set up and used before code actually starts, but that&#8217;ll give you time to get your documentation in order.</p>
<h4>6- They have a positive attitude.</h4>
<p>If someone bitches, they&#8217;re looking to blame themselves. Instead, you want them to identify their concern as a problem they can solve.</p>
<h4>7- They get uncomfortable when you ask about their social life.</h4>
<p>&#8217;cause, well, currently it&#8217;s still socially odd to prefer coding on a saturday night.</p>
<h4>8- You don&#8217;t want Alphabet/Acronym soup in their technical skills.</h4>
<p>Lots of languages means little depth in each, and depth = speed. Pick a serverside language (PHP, .Net, Ruby, etc), pick a database (MySQL, SQLServer, Postgres, etc), and pick a frontend (Flex, Mootools, JQuery, etc). Focus on that. If a dev has only a few languages this does not mean they&#8217;re stupid- it means they know how to focus.</p>
<h4>9- They&#8217;re involved in the community.</h4>
<p>Speaking, attending, whatever, you need to make sure their technical skills don&#8217;t stagnate, and that they&#8217;re willing to accept ideas from outside.</p>
<h4>10- You respect them</h4>
<p>Respect means you are willing to listen when they tell you you&#8217;re full of it, and that&#8217;s key in a partnership. You&#8217;re not looking for a monkey you can put in a corner who can bang out some code- you&#8217;re looking for a partner who&#8217;ll act as a technical sounding board.</p>
<div class="hr"></div>
<p>So now I have this question: What makes for a rockstar business partner?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2010/01/10/what-makes-a-rockstar-developer.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>How to Publish a Flash Application to the Facebook Stream</title>
		<link>http://www.krotscheck.net/2009/12/21/how-to-publish-a-flash-application-to-the-facebook-stream.html</link>
		<comments>http://www.krotscheck.net/2009/12/21/how-to-publish-a-flash-application-to-the-facebook-stream.html#comments</comments>
		<pubDate>Mon, 21 Dec 2009 20:19:23 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[share]]></category>
		<category><![CDATA[social]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2009/12/21/how-to-publish-a-flash-application-to-the-facebook-stream.html</guid>
		<description><![CDATA[If you&#8217;re in an agency and/or have been paying attention to Business Week and the Wall Street Journal recently, you&#8217;ll know that my former employer Resource Interactive recently released a service offering called &#8220;Off The Wall&#8220;, which in short is a way to extend your e-commerce workflow into the Facebook stream. &#8220;Share on Facebook&#8221; can [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re in an agency and/or have been paying attention to <a href="http://investing.businessweek.com/research/markets/news/article.asp?docKey=600-200910301156BIZWIRE_USPR_____BW5656-2QHHJKCOH16I2N0SL20B0UG0AN&amp;params=timestamp||10/30/2009%2011:56%20AM%20ET||headline||Resource%20Interactive%20Unveils%20Facebook%20Ecommerce%20Experience||docSource||Business%20Wire||provider||ACQUIREMEDIA" target="_blank">Business Week</a> and the <a href="http://blogs.wsj.com/digits/2009/12/21/shopping-comes-to-your-facebook-stream/" target="_blank">Wall Street Journal</a> recently, you&#8217;ll know that my former employer <a href="http://www.resource.com" target="_blank">Resource Interactive</a> recently released a service offering called &#8220;<a href="http://offthewall.resource.com/" target="_blank">Off The Wall</a>&#8220;, which in short is a way to extend your e-commerce workflow into the Facebook stream. &#8220;Share on Facebook&#8221; can now push a product to a user&#8217;s news feed, and if someone wants more information they never actually have to leave the Facebook environment to perform a &#8220;me too&#8221; purchase.</p>
<p>Cool, huhn? Security concerns aside (Believe me, I am never giving <i>anything</i> on facebook my credit card information), this isn&#8217;t exactly new- pushing product information into the Facebook stream was what the original <a href="http://en.wikipedia.org/wiki/Facebook_Beacon">Facebook Beacon</a> was all about, and that was shut down via a class action lawsuit because it published user sales data without user approval. Additionally, pushing rich media applications into the Facebook stream is not new- anyone who&#8217;s viewed a youtube video in their Facebook stream knows how seamless that can be. What&#8217;s interesting though is that Resource has overcome the legal concerns with two changes: First, by giving users control of what to share when, and secondly by actually launching a full commerce application into something that people check every day.</p>
<p>If your initial reaction is disgust (&#8220;What? Another way for people to sell us their stuff? Blegh&#8221;) then you and I are pretty much on the same page, however don&#8217;t be blinded by other creative uses of this. For instance, if you want to buy someone a Christmas present, wouldn&#8217;t it be nice if you saw their wishlist items in the stream? What about gaming- if a friend of yours is playing some kind of a live flash mini game&#8230; wouldn&#8217;t you want to join them immediately? There are legitimate uses for this that don&#8217;t turn your stomach, so I figured I&#8217;d write a quick overview on how to put it together.</p>
<h2>So how did they do that?</h2>
<p>If you already have an application you want to run inside the Facebook news stream, then the process of getting it shareable is extremely simple, and is easily accessible to anyone who knows a little bit about flash, HTML metadata and the facebook platform. You have to perform the following tasks, most of which are trivial unless you are trying to do anything covered by a regulatory body (like accepting credit card information). For that you have to have a secure and federally accredited server, and that&#8217;s way outside of the scope of this article.</p>
<h3>Step 1: Add the &#8220;Share on Facebook&#8221; link on the page in question.</h3>
<p>The first thing you need to do is give your users the ability to actually share your page. This can be as easy as <a href="http://www.facebook.com/facebook-widgets/share.php" target="_blank">including a particularly formatted link</a> in your product page or as complicated as including <a href="http://wiki.developers.facebook.com/index.php/Fb:share-button" target="_blank">FBML</a> in your site&#8217;s header and namespace. Note that the share URL can include URL parameters that will customize the content of the page, and should be pointed at the hosted URL of your flash application- this is crucial for step 2.</p>
<div class="code">
<pre>
&lt;a name="fb_share" type="button_count" href="http://www.facebook.com/sharer.php?u=[url to share]&amp;t=[title of content]"&gt;Share&lt;/a&gt;&lt;script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"&gt;&lt;/script&gt;
</pre>
</div>
<h3>Step 2: Add the correct meta tags to the page you want to share.</h3>
<p>When a user clicks on the above link, it actually triggers the Facebook Sharer script to scrape the provided URL for metadata that tells it how to share this page. All of this data is contained in the metadata tags of a page, and you can read the extensive documentation <a href="http://wiki.developers.facebook.com/index.php/Facebook_Share/Specifying_Meta_Tags" target="_blank">here</a>, however the important piece you&#8217;re looking for is how to share multimedia content. If you&#8217;ll read the documentation carefully, you&#8217;ll notice that while all references talk about video, in reality this share functionality allows you to display <i>any</i> flash content in the Facebook stream simply by replacing video_url with the URL to your flash SWF. This is still restricted to user action of course- nobody will see a flash app launched immediately, they&#8217;ll still see the icon and title as with any Youtube Video, and the application won&#8217;t launch until the user actually clicks on the icon.</p>
<div class="code">
<pre>
&lt;meta name="title" content="video_title" /&gt;
&lt;meta name="description" content="video_description" /&gt;
&lt;link rel="image_src" href="video_screenshot_image_src url" /&gt;
&lt;link rel="video_src" href="video_src url"/&gt;
&lt;meta name="video_height" content="video_height" /&gt;
&lt;meta name="video_width" content="video_width" /&gt;
&lt;meta name="video_type" content="application/x-shockwave-flash" /&gt;
</pre>
</div>
<p class="small"><span style="color: #BBBBBB; font-size: .8em">EDITORIALIZING: What worries me on this is that Facebook&#8217;s documentation is very clearly targeted at video sharing, and that this may be a violation of their intent of the sharer script. In short, what Resource is publishing as an innovation to social commerce is little more than a hack bolted into a loophole. Even so, I don&#8217;t believe Facebook will try to blacklist retailer sites to put this genie back in its bottle, because it both encourages use of their platform while also opening the gates to more legitimate uses. The ability to see that someone is, say, playing a game right now and your ability to join them is only a single click away puts an entire new spin on live online gaming, especially with the recent release of Adobe Collaboration Services, but I digress&#8230;</span></p>
<h3>Step 3: Get your domain whitelisted by Facebook</h3>
<p>If you paid especially close attention to the documentation linked above, you&#8217;ll also note that multimedia sharing won&#8217;t work if your domain is not whitelisted by Facebook. This is to protect Facebook from people who might want to distribute illegal content that would get them in trouble (licensed movies for instance), but also gives Facebook ultimate white and blacklist control over any activity they don&#8217;t want subverting their functionality. The process is actually extremely simple: <a href="http://www.facebook.com/developers/developer_help.php" target="_blank">Click this link</a>, fill out the form, and wait for them to get back to you. Last time I did it it took less than 24 hours, but that was for a major retail site; your experience might vary.</p>
<p>That&#8217;s it. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2009/12/21/how-to-publish-a-flash-application-to-the-facebook-stream.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Looking at Student Debt as an Opportunity</title>
		<link>http://www.krotscheck.net/2009/12/10/looking-at-student-debt-as-an-opportunity.html</link>
		<comments>http://www.krotscheck.net/2009/12/10/looking-at-student-debt-as-an-opportunity.html#comments</comments>
		<pubDate>Thu, 10 Dec 2009 16:02:19 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[loans]]></category>
		<category><![CDATA[market analysis]]></category>
		<category><![CDATA[opportunity]]></category>
		<category><![CDATA[scholarship]]></category>
		<category><![CDATA[student debt]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2009/12/10/looking-at-student-debt-as-an-opportunity.html</guid>
		<description><![CDATA[<p>There is a $128 billion dollar untapped demand for student debt assistance, if you can find a way to meet it. The conditions of the environment in which this demand exists may even contribute to an increase in the demand as you provide a debt-assistance service.<br /></p>]]></description>
			<content:encoded><![CDATA[<p><b>Summary:</b> There is a $128 billion dollar untapped demand for student debt assistance, if you can find a way to meet it. The conditions of the environment in which this demand exists may even contribute to an increase in the demand as you provide a debt-assistance service.</p>
<div class="hr"></div>
<p>We all know that students have no money- many of us have been there and scraped by on ramen and coffee often for weeks on end, and now we are all, to a greater or lesser extent, burdened by the cost of our education as we have leveraged part of our future to gain the success we have now. It&#8217;s part of our environment. It&#8217;s who we are, it&#8217;s what we expect, it&#8217;s part of our lives, and it will be part of our childs&#8217; lives as they grow up. We don&#8217;t think much about it- it&#8217;s simply there.</p>
<p>If you&#8217;ve watched this video from TED on how <a target="_blank" href="http://www.ted.com/talks/ken_robinson_says_schools_kill_creativity.html">schools kill creativity</a>, you know that there are some salient points to be made about how our primary and secondary educational system encourages a certain type of talent &#8211; science and maths &#8211; while actively discouraging the humanities and arts. While I would love to see more study on the topic, I want to extrapolate on Sir Ken Robinson&#8217;s argument and apply it to the space of postsecondary education.</p>
<p>Consider: If you were a student entering college today, and you were told that you&#8217;re going to walk out with an average of $23,000 in debt ($33,000 for private schools, according to <a target="_blank" href="http://projectonstudentdebt.org/files/File/Debt_Facts_and_Sources.pdf">this study</a> [PDF] ), would you choose a career in engineering or in the fine arts? To <a target="_blank" href="http://www.democratandchronicle.com/article/20090329/NEWS01/903290339/Many-college-students-face-mountain-of-debt-once-they-graduate">quote one</a> student, borrowing so much only makes sense &#8220;as long as you&#8217;re going to the school for a career that will pay enough&#8221;, so it certainly seems like we are actively discouraging pursuit of &#8220;cultural&#8221; careers in the arts and humanities.</p>
<p>Is this a problem? Good question, but it certainly shapes our national identity. If we want to be known as a country of technical innovators, then this system is perfectly fine as it fills our homes with highly technical thinkers. If in contrast we want to be known as a cultural mecca, it&#8217;s the worst thing ever as we are actively discouraging our students from pursuing fields that contribute to that.</p>
<p>But that&#8217;s not the point I&#8217;m trying to make here, it is simply the path to how I got to this blog post. See, I see this as a problem, and problems need solutions, so I want to take a business-side approach to this issue and ponder on any market opportunities that might exist. After all, if federal programs are unable to meet this country&#8217;s educational needs, then private business will have to pick up the slack, and they&#8217;re only going to do it if there&#8217;s money to be made.</p>
<h3>Some Numbers</h3>
<p>To take some numbers from <a target="_blank" href="http://www.trends-collegeboard.com/student_aid/pdf/2009_Trends_Student_Aid.pdf">this study</a> [PDF], I&#8217;ve extracted the following table:</p>
<h5>Table 1: Total Student Aid and Nonfederal Loans Used to Finance Postsecondary Education Expenses in Constant (2008) Dollars (in Millions), 1998-99 to 2008-09</h5>
<table border="0" cellpadding="0" cellspacing="0" class="callout">
<tbody>
<tr>
<th>Year</th>
<th>2004</th>
<th>2005</th>
<th>2006</th>
<th>2007</th>
<th>2008</th>
</tr>
<tr>
<th>Federal Grants</th>
<td>$21,441</td>
<td>$20,503</td>
<td>$20,579</td>
<td>$22,328</td>
<td>$24,784</td>
</tr>
<tr>
<th>Federal Loans</th>
<td>$63,674</td>
<td>$65,272</td>
<td>$66,327</td>
<td>$72,938</td>
<td>$83,981</td>
</tr>
<tr>
<th>Work-Study</th>
<td>$1,257</td>
<td>$1,183</td>
<td>$1,127</td>
<td>$1,123</td>
<td>$1,171</td>
</tr>
<tr>
<th>Tax Credit</th>
<td>$7,030</td>
<td>$6,990</td>
<td>$7,000</td>
<td>$7,000</td>
<td>$6,830</td>
</tr>
<tr>
<th>State Grants</th>
<td>$7,681</td>
<td>$7,696</td>
<td>$8,195</td>
<td>$8,446</td>
<td>$8,492</td>
</tr>
<tr>
<th>Institutional Grants</th>
<td>$25,140</td>
<td>$26,840</td>
<td>$28,330</td>
<td>$29,960</td>
<td>$31,160</td>
</tr>
<tr>
<th>Private Grants</th>
<td>$9,890</td>
<td>$10,620</td>
<td>$11,280</td>
<td>$12,200</td>
<td>$11,960</td>
</tr>
<tr>
<th>Private Loans</th>
<td>$16,030</td>
<td>$19,250</td>
<td>$22,050</td>
<td>$23,760</td>
<td>$11,900</td>
</tr>
</tbody>
</table>
<p>What we can easily extract from this is the individual line items which add load to students. The loans are easy, and I am also including Work Study and Institutional Grants. The former, because it&#8217;s activity that actively detracts from a student&#8217;s attention to their studies (by having a job) and the latter for reasons I discuss below. Given that, I&#8217;ve generated the following table:</p>
<h5>Table 2: Total unmet need covered by students in Constant (2008) Dollars (in Millions), 1998-99 to 2008-09</h5>
<table border="0" cellpadding="0" cellspacing="0" class="callout">
<tbody>
<tr>
<th>Year</th>
<th>2004</th>
<th>2005</th>
<th>2006</th>
<th>2007</th>
<th>2008</th>
</tr>
<tr>
<th>Total Unmet Need Financed by Debt</th>
<td>$106,101</td>
<td>$112,545</td>
<td>$117,834</td>
<td>$127,781</td>
<td>$128,212</td>
</tr>
</tbody>
</table>
<p>Do you see what I see? I see a $128 billion dollar demand for a solution, but demand is only useful if a supply may be found that may be profitably offered to that market. Thankfully, the actual act of marketing any solution you can come up with is easy- between high school career counselors and college students&#8217; naturally viral nature you effectively have a captive audience, assuming your solution is a good one. But unless you&#8217;re the treasury or the federal bank you can&#8217;t exactly pull $128 billion dollars and slap it on the table, and even if you were I doubt the taxpayers would be willing to pay for that (though we do love our <a target="_blank" href="http://en.wikipedia.org/wiki/Military_budget_of_the_United_States">bombers</a>).</p>
<h3>Universities as Contributors to the Problem</h3>
<p>On of the real culprits in this whole situation is Universities themselves. College Tuition has been increasing at an average rate of <a target="_blank" href="http://www.finaid.org/savings/tuition-inflation.phtml">8% a year</a>, while the <a target="_blank" href="http://en.wikipedia.org/wiki/Median_household_income">median household income</a> is hardly keeping up, especially if you take inflation into account. My own Alma Mater for instance (Carnegie Mellon) posted an annual tuition rate of $40,000 dollars this year, which from what I can tell is the highest in the nation and a significant uptick from the $18,000 I was paying in 2000. So how exactly can universities justify this increase?</p>
<p>Fact is, those tuition numbers are simply not real, because universities are skimming the market. Simply put, all the financial data a student is asked to report when they apply for financial aid year after year is used to calculate exactly how much the student and their family can afford. Once they have this number, they will add as many student loans as the student is eligible for (maxxed out of course), and might even add some private loans to it as well. Once they have that number, they will add something called a &#8220;Need based grant&#8221;, &#8220;Merit based grant&#8221; or &#8220;institutional grant&#8221; (or something similar) as a line item to make up the difference because they can&#8217;t charge you any more.</p>
<p>This makes identifying a good solution to student debt a far more difficult problem, because as soon as you find a business solution to meet the above noted demand, universities can simply respond by adding another line item to their financial aid calculations and the problem is right back where it started.</p>
<h3>Or&#8230; is it?</h3>
<p>Here&#8217;s where things get a little devious, and I apologize for suspending my personal ethics to even suggest this. Consider: If you provide a method for students to raise money against their debt, and universities in response raise their tuition to capture that value so that the debt doesn&#8217;t actually go away&#8230; then they are <i>increasing the size of the market.</i> That&#8217;s right, simply by helping students find a way to meet their debt obligations, the behavior of the other actors in the market environment will ensure that your market size grows. And while this certainly doesn&#8217;t provide a real solution to the <i>actual</i> problem, it should have any finance guy&#8217;s salivary glands working in overtime.</p>
<p>If, of course, you can meet the demand. In a new and successful way.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2009/12/10/looking-at-student-debt-as-an-opportunity.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Main Street vs. Wall Street</title>
		<link>http://www.krotscheck.net/2008/12/18/main-street-vs-wall-street.html</link>
		<comments>http://www.krotscheck.net/2008/12/18/main-street-vs-wall-street.html#comments</comments>
		<pubDate>Fri, 19 Dec 2008 03:06:35 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[bottom up]]></category>
		<category><![CDATA[democrat]]></category>
		<category><![CDATA[economics]]></category>
		<category><![CDATA[intelligence]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[republican]]></category>
		<category><![CDATA[taxes]]></category>
		<category><![CDATA[top down]]></category>
		<category><![CDATA[unemployment]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/12/18/main-street-vs-wall-street.html</guid>
		<description><![CDATA[<p>Main Street and Wall Street have become polarizing catchphrases to describe the ongoing argument between top down and bottom up economics. The politicization of these terms has become so rampant that we each take sides, completely disregarding the fact that it is the environment that defines the strategy, not the other way around. In both boom times and lean times it behooves us to carefully consider all the present influencing factors, and choose the appropriate strategy based on that <em>regardless</em> of political leanings. Top down and bottom up approaches have their place, but you have to be smart about choosing which to use.<br /></p>
]]></description>
			<content:encoded><![CDATA[<p>Main Street and Wall Street have become polarizing catchphrases to describe the ongoing argument between top down and bottom up economics. The politicization of these terms has become so rampant that we each take sides, completely disregarding the fact that it is the environment that defines the strategy, not the other way around. In both boom times and lean times it behooves us to carefully consider all the present influencing factors, and choose the appropriate strategy based on that <em>regardless</em> of political leanings. Top down and bottom up approaches have their place, but you have to be smart about choosing which to use.</p>
<p>It&#8217;s fairly common for politicians to convert extremely complex topics into sound bytes. We&#8217;ve seen it happen- so and so will take their opponent&#8217;s economic policy, pull it apart looking for the slightest thing that might motivate the opposition, and then use it like a hammer to completely discredit their opponent. So has it been with the claims of the 45-day old election propaganda (does anyone still remember how much they cared back then?), so it will be with any and all upcoming elections as long as this firebrand strategy pays off.</p>
<p>One personal pet peeve of mine has been the Main Street vs. Wall Street debate, a catchphrase so overused that it&#8217;s rivaling Britney Spears for airtime. These five words attempt to turn two fundamentally different economic management systems into a bullet point, and allow anyone to repeat them in an argument while fully absolving themselves of actually understanding what&#8217;s going on. It&#8217;s easy, we&#8217;ve all been guilty of it: What&#8217;s more important? Main Street or Wall Street? The former of course. Why? Because it&#8217;s more relevant to more people.</p>
<p>Wrong.</p>
<p>The actual discussion is far more subtle and complex than that, and is rooted in the core difference between two economic management systems: Top Down vs. Bottom Up Capitalism. Fundamentally, these theories attempt to place a framework of understanding around economic activity, so as to simplify an incredibly complex system enough that it may be managed, encouraged, and in limited cases predicted. In other words, we understand that a country&#8217;s economy is so complicated that we don&#8217;t have a clue what&#8217;s happening, but we&#8217;ve got a sortof vague idea and theory and based on that are going to see if we can prevent it from getting out of control.</p>
<p>Amusing, isn&#8217;t it, that &#8220;Wall Street&#8221; is a simplification of Top Down Economics (Main Street likewise)&#8230;. which is a simplification of something we don&#8217;t really understand to begin with, but I digress&#8230;</p>
<p>To really set the stage for this discussion however we have to set some common ground.</p>
<h4>The heart of a capitalist society is the Individual</h4>
<p>While some call this person the &#8220;Consumer&#8221; while others call this person the &#8220;Worker&#8221;, fact of the matter is that it&#8217;s the same person. The Individual is an economic entity unto itself, and through his or her labor produces value which nets them currency from the market, which is then subsequently reintroduced into the market to support the activities of said Individual. In short the Individual is a unit designed to generate and spend wealth, which allows us to define &#8220;corporations&#8221; as Individuals within a market. In fact, Corporations and Businesses are usually seen as individuals for legal reasons, so at least there we have some backup.</p>
<h4>The economy is measured by the <em>movement</em> of money, not the <em>amount</em> of money.</h4>
<p>Let&#8217;s get one thing straight: If you have a lot of money in your mattress, it&#8217;s paper. It is not being used, it is not increasing or decreasing in value (Well, barring in/deflation), it is not helping you acquire goods and services, and it&#8217;s not getting registered on any beancounter&#8217;s analysis spreadsheet. The economy is defined by the transfer of money through purchase or other means. If the money doesn&#8217;t move, it&#8217;s worthless.</p>
<h4>A single dollar is valuable</h4>
<p>While to you or I a single dollar bill might be fairly trivial in economic terms a single dollar has an incredible impact because it is multiplied across millions of Individuals. Provide a $0.25 tax break to everyone in an economy and you suddenly have millions in surplus capital. Similarly, if you provide a $50 Million tax break to one individual (easier done with companies) you have a similar effect. The scale of either action does not matter, because from the side of the entity offering the tax break it all looks the same. In other words, economic actions may be performed regardless of scale, because a single dollar has value no matter how you slice it.</p>
<h4>Competition makes the world go round</h4>
<p>The true free market advocate (of which I am one) believes firmly in the rules of fair and equal competition. If the playing field is equal (that&#8217;s a completely different argument), then the best company should succeed. Notice how I didn&#8217;t say &#8220;win&#8221;- as with any real life simulation, the idea of winning and losing becomes largely meaningless, because we are not playing on a terminated field: The dice keep rolling, the clock keeps ticking no matter what you do. It is in this environment that those companies capable of making the best decisions succeed, while those that make the worst fail, and through that competition we see the ebbs and flows of today&#8217;s market.</p>
<h3>Top Down Economics (Wall Street)</h3>
<p>The basic theory behind top down economics is that management begins at the top, because as soon as you give an Individual (corporation) with far reaching arms the means to expand its operations it will do so (and vice versa), and the cascade effect of new infrastructure will give the appropriate economic kick in the pants.</p>
<p>There are two problems with this theory: First of all, you cannot easily distinguish between companies whose operations have a global reach vs. a local reach (i.e. you can&#8217;t say whether your money is leaving the country), and secondly that you cannot account for pork in the pyramid of corporate power (Like, say, CEO salaries).</p>
<h3>Bottom Up Economics (Main Street)</h3>
<p>Bottom Up Economics believes that if you provide the small individual with means, they will use it to support themselves and thus encourage the movement of capital through the economy. Furthermore, in search for each individuals capital, corporations become more competitive and thus, theoretically, provide better products and services.</p>
<p>Speaking personally, my own budget has always expanded to consume my income, so I can certainly speak to its effectiveness, but this theory has significant problems of its own. First of all, competition between corporations is as much quality and process (real quantitative moneymakers) as much as it is marketing and message (very qualitative moneymakers). Fact is, you can make crap, have a great sales guy, and shame people into shelling out money. Furthermore, you&#8217;re hoping that your individual consumer is spend happy and doesn&#8217;t save their surplus.</p>
<h3>So which is better?</h3>
<p>Both, of course, or neither, depending on the environment. Fact is they both have serious logical holes, and situations exist where, if anything, they&#8217;re the worst idea ever. It&#8217;s all well and good for you to give money to either the top or the bottom, <em>if</em> they end up behaving the way you expect them to. This almost never happens, but let me give you a couple of drastic situations:</p>
<h4>Deflation</h4>
<p>If currency is currently in a deflationary cycle, then your average day to day individual will take any money you give them and hold on to it, because they know full well that the special shiny thing they wanted to buy will be cheaper tomorrow&#8230; and tomorrow&#8230; and tomorrow. In other words, a bottom up economic system will completely and utterly fail in a deflationary cycle, <em>assuming</em> that&#8217;s the only factor affecting purchase decisions.</p>
<h4>Low Unemployment</h4>
<p>If your country currently has the (enviable) problem of low unemployment, then any corporation you give money to is in a bit of a bind. They now have the capital to expand operations, but the local labor market is extremely competitive (and therefore expensive). If they want to expand operations they can choose to stay within your country (at a much reduced effective rate of capital) or they can spend that money overseas for much greater effect. In short, a top-down economic approach will fail in a country with low unemployment, because the money is far more likely to flow overseas.</p>
<p>In both of these cases, the economic theory given completely breaks down, largely because you failed to take into account the conditions in which you&#8217;re operating. Other factors could include the level of regulation (more means fairer business practices, less means lower cost of business) as well as corporate/individual taxes (social security/Medicare/regulatory oversight vs. economic capital), and each have some very complex effects on the system.</p>
<p>Expanding this to the real world, let&#8217;s take a look at the mid 2000&#8242;s: We&#8217;re in an economic boom time, and the consumer is flush with credit (if not cash). Business is going great! So why question something that works- We&#8217;re going to continue giving tax breaks at the top, keep reducing regulations and continue to deregulate our industries. Business, after all, has proven that they can look after themselves.</p>
<p>And look where that got us. Would a more stringent regulatory strategy have gotten us somewhere better? Perhaps. Would increasing taxes at the top and reducing them at the bottom have kept the field more competitive rather than strangely lopsided? Perhaps. What we do know is that the correct approach to handling the US&#8217;s financial and economic matters was <em>not</em> what ended up happening.</p>
<h3>Full Circle</h3>
<p>And yet we always <em>must</em> have someone who&#8217;s right, and someone who&#8217;s wrong. Face it, we&#8217;re a binary species, and love to be on the winning side. I have many republican friends right now who feel like they&#8217;re on the losing side right now, simply because the present administration&#8217;s economic policy seems to be to blame for the meltdown that the opposing theory is trying to get us out of. One way or another, we each try to pick one side and go with it, and based on that we win or lose (or rather, we lose the election but we&#8217;re still <em>right</em>).</p>
<p>This isn&#8217;t a question of us vs. them. This is a question of us actually thinking about the issue, and coming up with the right solution. Intelligence and an open minded approach is the right strategy, and by actually turning off the television and sitting down with a problem by ourselves or as a community, we can easily overcome this problem and solve the issue not just right now, but for future crises as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/12/18/main-street-vs-wall-street.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why we&#8217;re stuck with IE6 for the forseeable future</title>
		<link>http://www.krotscheck.net/2008/11/23/why-were-stuck-with-ie6-for-the-forseeable-future.html</link>
		<comments>http://www.krotscheck.net/2008/11/23/why-were-stuck-with-ie6-for-the-forseeable-future.html#comments</comments>
		<pubDate>Mon, 24 Nov 2008 04:07:18 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[erp]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/11/23/why-were-stuck-with-ie6-for-the-forseeable-future.html</guid>
		<description><![CDATA[If you&#8217;ve ever done any form of web development, you&#8217;ve probably learned to hate Internet Explorer 6. It&#8217;s not that it&#8217;s not used- IE6 once enjoyed the status of being the foremost browser on the web, and as a result used to set many of the standards by which the web was developed. Unfortunately, it [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve ever done any form of web development, you&#8217;ve probably learned to hate Internet Explorer 6. It&#8217;s not that it&#8217;s not used- IE6 once enjoyed the status of being the foremost browser on the web, and as a result used to set many of the standards by which the web was developed. Unfortunately, it never managed to consistently implement those standards, and as a result is the origin of many lost hours of sleep and endless frustration.</p>
<p>Internet Explorer 6 is old, very old. It was released on August 21, 2001, which in technology terms is archaic. To put things in perspective, the original, first generation iPod was released two months after IE6, shortly followed by the original XBox, subsequently followed by the first monochrome BlackBerry in March of the following year. Processors at the time had barely broken the 1GHz mark, and the Dot-Com bust had come and gone, leaving its mark on Redmond and Silicon Valley.</p>
<p>Since then, many newer and better browsers have been released, all of which do a better job of implementing those standards (Though few do so completely). As a result developing for these browsers has become even more painful, because web developers have to support both the newer, more standards compliant browsers as well as trying to accommodate for IE6&#8242;s eccentricities. And yet IE6 continues to appear on spec sheets and software requirements, and is a continued presence in web analytics reports. We&#8217;re still stuck with it, so what gives? If it is really so painful to develop for, and really so limiting to the user experience, why has IE6 not been unceremoniously ejected from the web?</p>
<h3>Who&#8217;s Not At Fault</h3>
<p>Blame is tossed around like candy when it comes to figuring out who&#8217;s at fault. One of the common ones is the outdated hardware, yet even in the notoriously underfunded and out-of-date nonprofit sector (<a href="http://nptechsurvey.wordpress.com/">this study</a> claims 44% of nonprofits operate on 3+ year old hardware), the software is reasonably recent (89% on Windows XP). If anything, the nonprofit sector is ahead of the curve, perhaps because they have to rely on smaller software providers.</p>
<p>The larger part of the guilt is usually laid at the feet of large corporate IT departments. I&#8217;m not talking about mid-sized businesses, I&#8217;m talking about behemoths that, along with their size, have a reputation of moving incredibly slowly and always being several versions behind on everything. Some people erroneously say that corporations like this don&#8217;t want to shake things up by going with something &#8220;untested&#8221; and &#8220;potentially insecure&#8221;, but in reality the largest part of the blame for all the frustration they&#8217;ve caused isn&#8217;t even their fault.</p>
<p>One of the primary systems that large, corporate IT departments maintain are Enterprise Resource Planning (ERP) systems such as SAP, Oracle, Peoplesoft and so forth. These systems are massive- a full implementation will touch every part of an organization from accounting to inventory and requires several years to implement. Their benefits are many- they greatly improve reporting, planning, and in many cases automate core business operations.</p>
<p>Additionally, these systems are ridiculously expensive, not only because of their original licensing fees, but also because these systems have to be highly customized, and at $180/hour plus expenses for a competent ERP consultant that bill starts to add up. With a pricetag of many millions of dollars, installing an ERP may still be easily justified (given the operational benefits it would provide), however providing a positive ROI for the incremental benefits from an upgrade are a lot more difficult generate.</p>
<p>To illustrate, take a look at these two excerpts from a product compatibility matrix for SAP Netweaver &#8217;04 and&#8217;07, valid as of April 2008 (the date on the presentation. You can find the version for &#8217;04 <a href="https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e05e0417-da0e-2b10-91bf-ec680bb64f15">here</a> and for 7.0<a href="https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e05e0417-da0e-2b10-91bf-ec680bb64f15">here</a> , and as you can see they don&#8217;t exactly support anything but Internet Explorer. Add to that the extremely high cost and only incremental benefit of upgrading and it&#8217;s really no surprise that IE6 is still standard at major corporations. The ERP solution is the decision driver, not the browser, and that&#8217;s the real reason IE6 is not about to go away.</p>
<div class="image">
  <a href="http://www.krotscheck.net/wp-content/uploads/2008/11/sap-support.png"><img src="http://www.krotscheck.net/wp-content/uploads/2008/11/sap-support-tm.jpg" width="450" height="299" alt="SAP-Support.png" /></a></p>
<p>Product Compatibility Matrix for SAP Netweaver &#8217;04</p>
</div>
<div class="image">
  <a href="http://www.krotscheck.net/wp-content/uploads/2008/11/sap-support-07.png"><img src="http://www.krotscheck.net/wp-content/uploads/2008/11/sap-support-07-tm.jpg" width="480" height="327" alt="SAP-Support-07.png" /></a></p>
<p>Product Compatibility Matrix for SAP Netweaver 7</p>
</div>
<h3>So what happened?</h3>
<p>Remember all that hooplah several years ago about how Microsoft was being uncompetitive and monopolistic in its actions within the browser wars? This is the aftermath. By continually encouraging corporations and their software developers to make use of the full capabilities of Internet Explorer 6 and the admittedly feature rich ActiveX controls, they have succeeded at carving themselves the largest part of the browser market. Unfortunately, by doing so they have also forced a large portion of the web into obsolescence.</p>
<p>So who&#8217;s really at fault here? Microsoft for pushing its development platform, or the ERP system providers who developed for it. Personally, I think the blame is where you prefer to put it based on your own technological preferences. If you&#8217;re a huge OSS fan, Microsoft&#8217;s a convenient target. If you&#8217;ve ever been frustrated by ERP&#8217;s, then the provider is the target-du-jour. Personally, I&#8217;m more likely to consider the product managers, directors and developers who made the platform decision without considering the long term implications.</p>
<h3>So are we stuck?</h3>
<p>Sortof. With the impending release of IE8 web developers will be able to tell the browser to &#8220;pretend&#8221; to be a previous version, neatly circumventing any future compatibility issues. Unfortunately this only works for Internet Explorer, meaning that ERP developers have no reason to change past behaviors. Until they disengage from using proprietary extensions and ActiveX controls and start relying more on open standards based development, we&#8217;ll never truly escape this cycle, though Microsoft has made backwards-compatibility a lot easier.</p>
<p>And that&#8217;s exactly what Microsoft wants: Allow their development partners to improve functionality and give their clients reasons to upgrade, while not forcing their other partners (IT departments dependent on ERP&#8217;s) into technological obsolescence&#8230; sortof. This process will take a while, because IE6 isn&#8217;t one of the browsers IE8 can be reset to, but eventually we will see IE6 go the way of Netscape, only to be replaced with&#8230; Internet Explorer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/11/23/why-were-stuck-with-ie6-for-the-forseeable-future.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>An Agency Is Not A Sweatshop</title>
		<link>http://www.krotscheck.net/2008/10/25/an-agency-is-not-a-sweatshop.html</link>
		<comments>http://www.krotscheck.net/2008/10/25/an-agency-is-not-a-sweatshop.html#comments</comments>
		<pubDate>Sat, 25 Oct 2008 19:08:30 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[agency]]></category>
		<category><![CDATA[burnout]]></category>
		<category><![CDATA[overworked]]></category>
		<category><![CDATA[reputation]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[underpaid]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/10/25/an-agency-is-not-a-sweatshop.html</guid>
		<description><![CDATA[<p>As economic realities trickle down through the manufacturing and service supply chains, I'm starting to hear distressing news from my colleagues at other agencies. Work is beginning to dry up, either because clients realize that it's more cost effective to bring the larger projects in-house, or because their budgets are getting cut as a result of reduced consumer spending. Everyone seems to be fairly certain that things are going to get worse before they get better, and as a result everyone is battening down their hatches to weather the expected storm.</p>
<p>Bad news like that is almost inevitably followed up by commiseration about how many hours they've had to work recently, how they're constantly under pressure to put in more, or how their coworkers have had enough and have left for greener... or at least less stressful pastures. This in and of itself isn't necessarily bad- we all understand the pressures of marketing and agency work, and a certain amount of dedication to the project deliverables are par for the course. Yet when weekly hours exceed 50 on a regular basis, you're buying short term productivity by draining both current and future creativity of your talent. Speaking from experience, gradual burnout is still burnout, leaving long-term scars, and the tightening of client budgets and inevitable cannibalization of the RFP bid has resulted in even more frightening stories: Talented designers and developers are going on antidepressants because of their work load (True story, source withheld).</p>
]]></description>
			<content:encoded><![CDATA[<p>As economic realities trickle down through the manufacturing and service supply chains, I&#8217;m starting to hear distressing news from my colleagues at other agencies. Work is beginning to dry up, either because clients realize that it&#8217;s more cost effective to <a href="http://h71028.www7.hp.com/ERC/cache/484434-0-0-0-121.html" target="_blank">bring the larger projects in-house</a>, or because their budgets are getting cut as a result of <a href="http://blog.nielsen.com/nielsenwire/consumer/us-consumers-curtail-2008-holiday-spending/" target="_blank">reduced consumer spending</a>. Everyone seems to be fairly certain that things are going to get worse before they get better, and as a result everyone is battening down their hatches to weather the expected storm.</p>
<p>Bad news like that is almost inevitably followed up by commiseration about how many hours they&#8217;ve had to work recently, how they&#8217;re constantly under pressure to put in more, or how their coworkers have had enough and have left for greener&#8230; or at the very least less stressful pastures. This in and of itself isn&#8217;t necessarily bad- we all understand the pressures of marketing and agency work, and a certain amount of dedication to the project deliverables are par for the course. Yet when weekly hours exceed 50 on a regular basis, you&#8217;re buying short term productivity by draining both current and future creativity of your talent. Speaking from experience, gradual burnout is still burnout, leaving long-term scars, and the tightening of client budgets and inevitable cannibalization of the RFP bid has resulted in even more frightening stories: Talented designers and developers are going on antidepressants because of their work load (source withheld).</p>
<p>When I heard that, my first response was outrage. My second was to cast the management of those agencies in the worst light possible, as either willfully ignorant or maliciously exploitative. My third was to do a quick mental inventory of all the openings at Resource just in case there was a way I can get them out of that hellhole. Regardless of those, I&#8217;m confident in stating this: Those agencies are going to fail.</p>
<h3>Ur Doin it Rong</h3>
<p>Your talent is your greatest asset. Designers, developers, strategists, information architects, analytics experts, effectively all the people who actually produce whatever deliverable you&#8217;ve agreed to are the guts of your operation, and without them you&#8217;re simply a self-style executive or sales guy more useful as a hot air balloon.</p>
<p>So lets assume that you&#8217;re said executive with a production team, and hard economic times and active competition from other agencies has forced you to cut timelines and reduce your RFP estimates. A few of your employees are forced to work a few extra hours while you&#8217;re busy trying to find more clients, but the pressure doesn&#8217;t let up, becomes systemic and suddenly you&#8217;ve built a culture that expects 100% lifestyle dedication. If this was intentional, shame on you. If it wasn&#8217;t, you&#8217;re going to need to take drastic measures to fix it.</p>
<h3>Your Reputation Is At Stake</h3>
<p>As talented SME&#8217;s in the digital space we are of course extremely active online, and have a vibrant community of our own. We keep in touch over twitter, email lists, websites, blog, professional networking groups and what have you, and news like &#8220;I had to work a 100 hour week last week&#8221; gets around quickly. So while your marketing personnel and senior leadership are busy worrying about how your company&#8217;s brand is projected to current and potential customers, that same brand is being systematically undermined and destroyed in the professional communities that represent your talent pool. One single negative report is enough to mark you as an agency to stay away from, and in tough economic times it&#8217;s going to be much easier to accidentally cause these. In short, you might look good to potential clients, but when you try to hire the talent for that project which will grow your agency to the next level, the community will laugh in your face.</p>
<p>Let me emphasize this: If you put more pressure on your talent, the stress will reduce their creativity and productivity in the short and long run, you&#8217;ll have to hire more, which will refuse your offers because you&#8217;re known in the community as someone who works your employees to the breaking point. End result: You&#8217;ll be unable to produce high quality work anymore, and instead will leave your client with a bad taste in their mouth as you under-deliver on your promises, ensuring little to no repeat business.</p>
<p>And that&#8217;s the crux, isn&#8217;t it? If the web has taught us anything, it&#8217;s that <a href="http://www.vspink.com/nominate_your_school.jsp" target="_blank">high</a> <a href="http://www.colorofinspiration.com/" target="_blank">quality</a> <a href="http://polarbears.thecoca-colacompany.com/polarbearsupportfund/index.jsp" target="_blank">work</a> (shameless plug) is a better sales person than anyone you can hire, and if your HR policies, culture and project management are systematically draining and destroying the talent which produces such work, your agency is either on life support or is one payroll cycle away from being roadkill. All the sexy, high margin projects will go to those that have the talent to consistently produce it, and you&#8217;re left with those clients unable or unwilling to pay for it.</p>
<p>It&#8217;s simple economics. If your production talent is interested and engaged, you&#8217;ll see the product quality increase while efficiency increases as well. We&#8217;ve seen this with Toyota and American Airlines, and there&#8217;s plenty of evidence that fundamental truths like this easily translate to the agency world.</p>
<p>And while that&#8217;s all going on, community leaders like myself as well as your competition will be waiting in the wings, ready to poach your best and brightest at a moment&#8217;s notice. So wake up, face the music, and realize that your agency&#8217;s bottom line is only as happy as your employees.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/10/25/an-agency-is-not-a-sweatshop.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>So What&#8217;s Up with Chrome?</title>
		<link>http://www.krotscheck.net/2008/10/01/so-whats-up-with-chrome.html</link>
		<comments>http://www.krotscheck.net/2008/10/01/so-whats-up-with-chrome.html#comments</comments>
		<pubDate>Wed, 01 Oct 2008 18:37:24 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[gears]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/?p=2143</guid>
		<description><![CDATA[<div class="image">
  <p>This post <a href="http://ritechnology.typepad.com/technology/2008/09/so-whats-up-wit.html">originally written</a> for Resource Interactive's <a href="http://technology.resource.com/">Technology Blog</a>, time shifted by 1 month to preserve originality.</p>
</div>
<p>With the release of <a target="_blank" href="http://www.google.com/chrome">Google Chrome</a> last week many of our (and&#160; your) clients are starting to wonder exactly what Google's entry into the&#160; browser market means. The release of any new software package, especially by a powerhouse&#160; like Google, can often have broad and far reaching impact, and everyone wants&#160; to be forewarned about what's coming down the pike.</p>]]></description>
			<content:encoded><![CDATA[<p>With the release of <a target="_blank" href="http://www.google.com/chrome">Google Chrome</a> last week many of our (and&nbsp; your) clients are starting to wonder exactly what Google&#8217;s entry into the&nbsp; browser market means. The release of any new software package, especially by a powerhouse&nbsp; like Google, can often have broad and far reaching impact, and everyone wants&nbsp; to be forewarned about what&#8217;s coming down the pike.</p>
<h3>How will this impact Web Development?</h3>
<p>This largely depends on what kind of web development you do. In most<br />
cases you and your enterprise won’t be affected in the slightest.<br />
Chrome has a very fast and robust rendering and JavaScript engine, and<br />
much like any newly released browser (remember Firefox 1.0?) loads up<br />
in no time flat. The rule of thumb is that if you’re already supporting<br />
Safari, you can safely assume you’re supporting Chrome.</p>
<p>Why is this? What you may not know is that the underlying&nbsp; engine that Safari runs on is a package called <a target="_blank" href="http://webkit.org/">WebKit</a>,<br />
which is the same engine which powers Google Chrome. There are some<br />
revision based incompatibilities (Since Safari’s already a few versions<br />
ahead), but practically speaking they’re identical. The downside of<br />
this is that if your agency is one of the rare islands left that only<br />
support the “Two Major Browsers” (Firefox and Internet Explorer), you<br />
no longer have an excuse to not support them. </p>
<p>If you’re doing Rich Internet Application development, you’ve just<br />
been presented with a very interesting way of taking your application<br />
to the desktop. You might not have heard of <a target="_blank" href="http://gears.google.com/">Google Gears</a><br />
before now, or might not have considered it to be a viable option.<br />
Gears is a browser extension framework that allows desktop-application<br />
like interaction between your RIA and the client’s computer. Sounds<br />
neat, right? It is, and it&#8217;s directly integrated into Chrome and is<br />
available as a plugin for both IE and Firefox. Unfortunately, the major<br />
restriction of Gears up to this point was that you were still<br />
restricted to the browser’s UI, but as I point out later in this<br />
article this is no longer entirely the case.</p>
<h3>What about Mobile?</h3>
<p>If you’re doing Mobile Web Development, you may be able to target<br />
WebKit directly from this point forward. See, Safari is the exclusive<br />
browser on the <a target="_blank" href="http://www.apple.com/iphone/">iPhone</a>, and with the upcoming release of the T-Mobile <a target="_blank" href="http://htcdream.com/">HTC Dream</a>,<br />
you can bet that Chrome will be the default browser for Android. What<br />
this means is that WebKit will become the de-facto web development<br />
standard for mobile devices. While mobile UI patterns and application<br />
frameworks will shake themselves out over the next few years, the<br />
writing&#8217;s on the wall: If you want to take RIA&#8217;s to mobile devices<br />
without bothering with a native application, WebKit is the platform to<br />
build for.</p>
<h3>So What&#8217;s The Big Deal™?</h3>
<p>At this point you&#8217;re probably asking yourself: &quot;What&#8217;s the big<br />
deal&quot;? If Chrome behaves much like the other major browsers out there,<br />
why is there so much buzz about it? Is this just Google Hype?</p>
<p>Without going into a lot of gritty detail&nbsp; about it (The <a target="_blank" href="http://www.google.com/googlebooks/chrome/index.html">Comic Book</a><br />
published by Google does that really well), the major big deal is that<br />
Chrome is not just a Browser: Chrome is an Application Platform.</p>
<p>Much like AIR, Chrome attempts to blur the lines between the desktop<br />
and the web by creating a wrapper for previously developed content.<br />
They even do it in very similar ways: AIR allows the execution of<br />
JavaScript RIA&#8217;s in an integrated WebKit Browser running within the<br />
ActionScript Virtual Machine, while Chrome allows the execution of<br />
Flash RIA&#8217;s running in the Flash Player. The difference is simply the<br />
technology stack used- Chrome is based around JavaScript and HTML,<br />
while AIR is based on ActionScript and MXML. </p>
<p>The Google Engineers are quite explicit about this. The Comic Book<br />
talks about it, and one of the primary features is &quot;Create Application<br />
Shortcut&quot;. While functionally this really just creates a direct link to<br />
a specific website, the integration of Google Gears allows some<br />
websites to move almost entirely to your desktop. It even goes so far<br />
as to use the favicon for your application icon, giving you a Desktop<br />
Application experience for any website you choose (try it with Google<br />
Calendar or Gmail).</p>
<p>So what&#8217;s the Big Deal? It&#8217;s a concept change, a different way of<br />
looking at the Web. It&#8217;s not particularly new- Microsoft tried to do<br />
this with the close Windows/Internet Explorer integration in the late<br />
90&#8242;s and .chm/.hta applications, but it is the first time that the<br />
browser&#8217;s been turned into a (soon to be) platform agnostic application<br />
wrapper.</p>
<h3>A Future Vision</h3>
<p>Not to be a crazy futurist or anything, but consider the following<br />
possibility: Both Google and Adobe have now firmly cast their lot in<br />
with an ECMAScript/DOM-like technology stack, and we already know that<br />
there is a close relationship between the two companies both from<br />
YouTube and from the indexable headless player. Personally, I think<br />
it&#8217;d be pretty interesting if the future held a technological<br />
convergence of all ECMAScript languages. Compiling HTML to a desktop<br />
application? Converging JavaScript and ActionScript into a single<br />
ECMAScript language? It&#8217;s all possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/10/01/so-whats-up-with-chrome.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Passion and Expression: How to be Awesome</title>
		<link>http://www.krotscheck.net/2008/09/07/passion-and-expression-how-to-be-awesome.html</link>
		<comments>http://www.krotscheck.net/2008/09/07/passion-and-expression-how-to-be-awesome.html#comments</comments>
		<pubDate>Sun, 07 Sep 2008 18:32:44 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[avid]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[expression]]></category>
		<category><![CDATA[insight]]></category>
		<category><![CDATA[passion]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/09/07/passion-and-expression-how-to-be-awesome.html</guid>
		<description><![CDATA[<p>"Avid" has to be one of my most favorite adjectives ever, because no other word really wraps together the feeling of hunger, enthusiasm and pure enjoyment that comes with really pursuing something to your fullest potential. Listen to it a few times: when someone is described as an 'avid' cyclist, an 'avid' gamer, do you automatically think they're a professional competitor? That they're OCD about something? No, it's both less and more than that- almost like the person really comes alive in that domain.<br /></p>
]]></description>
			<content:encoded><![CDATA[<p>&#8220;Avid&#8221; has to be one of my most favorite adjectives ever, because no other word really wraps together the feeling of hunger, enthusiasm and pure enjoyment that comes with really pursuing something to your fullest potential. Listen to it a few times: when someone is described as an &#8216;avid&#8217; cyclist, an &#8216;avid&#8217; gamer, do you automatically think they&#8217;re a professional competitor? That they&#8217;re OCD about something? No, it&#8217;s both less and more than that- almost like the person really comes alive in that domain.</p>
<p>You know what I&#8217;m talking about- it&#8217;s that sudden snap in someone&#8217;s actions, that excitement and readiness to go, that real drive to go and pursue something- it&#8217;s the drive that makes someone awesome at what they do. Yet even so it&#8217;s something that can easily sound hollow when that spark isn&#8217;t there, which usually happens in the context of a tool rather than a concept. Can you see someone really get excited about blogging? No. But can you see someone being an avid educator? Absolutely: Their excitement comes from the contribution they provide and the respect they earn rather than the tools they use.</p>
<p>The best way to describe it, perhaps, is to separate passion and the expression thereof. As an example, I&#8217;m going to use my own dad, because frankly he&#8217;s the best example I can think of. His primary passion is problem solving. Taking the crowbar of his brain and jamming it into a particularly interesting problem to see if he can crack it is what he lives for. Now imagine how this might express itself, in how many different situations this might apply.</p>
<p>Need extra paper? I did- overcoming a particular challenge or problem is applicable almost anywhere. In his case the long-term chosen primary expression is quantum physics, but there&#8217;s no reason it couldn&#8217;t have been radio repair, satellite telemetry or dog training since each of them provides a series of always new and increasingly complicated problems to solve.</p>
<p>So lets get around to what your passion might be. Is it exploration? Healing? Craftsmanship, education or guardianship? I&#8217;d give you a long list of how to figure this out, but chances are it&#8217;s already blatantly obvious (you may not have bothered to look). Remember it&#8217;s not what you do, it&#8217;s why you do it. Take a long hard look at your day to day, figure out what you really look forward to, why, and find the common ground amongst them all.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/09/07/passion-and-expression-how-to-be-awesome.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Clinical Immortality</title>
		<link>http://www.krotscheck.net/2008/08/23/clinical-immortality.html</link>
		<comments>http://www.krotscheck.net/2008/08/23/clinical-immortality.html#comments</comments>
		<pubDate>Sat, 23 Aug 2008 15:55:26 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[immortality]]></category>
		<category><![CDATA[overpopulation]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/08/23/clinical-immortality.html</guid>
		<description><![CDATA[<p>Let's speculate about immortality for a bit. It's something that's been on my mind a bit recently because... well, what with stem cell research and leaps in medical science, the problem of human mortality could reasonably be solved in our lifetime. I'm no doctor, and I haven't done research on the <em>actual</em> progress being made, but frankly I'm far more fascinated by the potential long term ethical and social impact that this might cause. So let's just lie back with something vision-inducing (I recommend running 20 miles) and try to glimpse the future.</p>
]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s speculate about immortality for a bit. It&#8217;s something that&#8217;s been on my mind a bit recently because&#8230; well, what with stem cell research and leaps in medical science, the problem of human mortality could reasonably be solved in our lifetime. I&#8217;m no doctor, and I haven&#8217;t done research on the <em>actual</em> progress being made, but frankly I&#8217;m far more fascinated by the potential long term ethical and social impact that this might cause. So let&#8217;s just lie back with something vision-inducing (I recommend running 20 miles) and try to glimpse the future.</p>
<p>Undoubtedly, the first procedures that can extend the human lifespan will be clinical in nature and sinfully expensive. I envision large, electronic devices that do all sorts of interesting things, making the prospective immortal little more than a bedridden cyborg brain. Why would anyone be interested in this? Well, people have done stranger things, like flash-freezing themselves until medical science can revive them. If the prospect of living on machines for just long enough for just long enough to be released from the machines is even remotely possible, someone will shell out the millions it takes to actually do so.</p>
<p>This will create a huge uproar, because&#8230; well, who doesn&#8217;t want to live forever? Limiting this benefit to those that can afford it is going to create a whole new concept of class separation, which most democratic societies will censure almost immediately. As we can see with Stem Cell research, countries that hamstring medical advances of a particular type find themselves well behind the times, and the nascent immortal population will find that they&#8217;re strapped to machines far longer than their budgets had originally projected. Expenses will rise, and only the extremely-super-rich will be able to sustain themselves&#8230; unless everyone emigrates to more lenient environments.</p>
<p>Yet even here there&#8217;s an interesting benefit. While the parent&#8217;s amassed fortunes would previously have gone to their heirs, they&#8217;ll now be spent on keeping them alive for long enough for medical science to advance to the point of no consequence. A trust fund only goes so far- chances are the first two or three generations of immortal offspring will be forced to fend for themselves or join the dirt with the rest of us.</p>
<p>Sooner or alter we&#8217;ll then reach the point of no consequence. This is the point where life-sustaining procedures no longer requires hospital time, and immortals can continue their normal lives with only token effort on their part. While this may sound great, it really is just the first step in the commoditization of these procedures. Privatization of the industry will occur, prices will come down, and soon enough immortality will be accessible to everyone.</p>
<p>This will really set off the simmering ethical battle, where the religious and the evolutionists will find themselves to be strange bedfellows: On one side, those that choose immortality will be cheating God&#8217;s plan, while on the other they&#8217;ll be halting evolution. Once again there will be cries for both social and legal limits on immortality, yet now the deck will be stacked against them vis.a.vis numbers. The funny thing is that it won&#8217;t really matter, because those that choose immortality at this point will eventually realize they&#8217;ve paid the price of genetic obsolescence.</p>
<p>Consider: 100, 200, even 1000 years from now, human intellect and physiology will have evolved significantly, and immortals will A) have all the money, but B) be unable to compete with the newer generations. This will either create a rich aristocracy begging for a revolution, or a zoo-like environment where the &#8216;spoiled little rich kids&#8217; are allowed to exist in their little obsolete world, while the rest of the species goes on without them. That is assuming, of course, that they aren&#8217;t euthanized due to massive overpopulation.</p>
<p>Either that, or we&#8217;ll start seeing human upgrades, at which point the entire evolutionary theory goes out the window because we assume we know better. Given how far we&#8217;ll have come to even reach this point, there&#8217;s no reason to believe these upgrades won&#8217;t be ubiquitous. Who even knows what humans will look like by then: Will you have a small Apple logo under your ear, indicating an iPhone implant? Will your hair naturally grow in rainbow shades? Will your clothes reshape themselves to be in-line with the latest styles?</p>
<p>And in that kind of environment a few rich little immortals will fit right in.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/08/23/clinical-immortality.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Guide to Retaining Internet Celebrities</title>
		<link>http://www.krotscheck.net/2008/08/10/a-guide-to-retaining-internet-celebrities.html</link>
		<comments>http://www.krotscheck.net/2008/08/10/a-guide-to-retaining-internet-celebrities.html#comments</comments>
		<pubDate>Sun, 10 Aug 2008 18:18:52 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[celebrity]]></category>
		<category><![CDATA[ego]]></category>
		<category><![CDATA[HR]]></category>
		<category><![CDATA[human resources]]></category>
		<category><![CDATA[public relations]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/08/10/a-guide-to-retaining-internet-celebrities.html</guid>
		<description><![CDATA[<p>Everyone seems to have a Blog these days (if not several), resulting in significantly more noise than signal in pretty much everything out there. Everyone and their brother seems to be jockying for position to be the next big name in... in what? Internet Celebritydom is a fickle and hard-to-reach goal, and more often than not is reached by pure luck than anything else. So in order to pare down this article I'm going to restrict myself to skill-based celebrities. Individuals who through their contribution to a particular field have achieved recognition and celebritydom on a level beyond the average Blogger. Chances are that you know some of these individuals in your own industry or field of expertise, and your own company would do well to be affiliated with them. They might be constantly out of the office speaking at various locations, however the fact that your company name is attached to their expertise marks you as <em>the</em> leader in the field. This article presents some guidelines on how to choose, contact, engage and retain such celebrities.<br /></p>
]]></description>
			<content:encoded><![CDATA[<p>Everyone seems to have a Blog these days (if not several), resulting in significantly more noise than signal in pretty much everything out there. Everyone and their brother seems to be jockying for position to be the next big name in&#8230; in what? Internet Celebritydom is a fickle and hard-to-reach goal, and more often than not is reached by pure luck than anything else. So in order to pare down this article I&#8217;m going to restrict myself to skill-based celebrities. Individuals who through their contribution to a particular field have achieved recognition and celebritydom on a level beyond the average Blogger. Chances are that you know some of these individuals in your own industry or field of expertise, and your own company would do well to be affiliated with them. They might be constantly out of the office speaking at various locations, however the fact that your company name is attached to their expertise marks you as <em>the</em> leader in the field. This article presents some guidelines on how to choose, contact, engage and retain such celebrities.</p>
<p>Before we get into the meat of this article, however, you have a decision to make: Will your organization truly benefit from such a celebrity? The benefits are significant- both your company and brand are affiliated with one of <strong><em>the</em></strong> names in the industry, and that comes with no small amount of prestige. Business will come to you simply to be associated with your celebrity(ies), and their name can be a valuable asset when converting new customers. The downside, however, is that celebrities are a pain in the ass to manage. They demand that their input is heard on everything that falls in or even remotely touches their domain of expertise, and will seed dissatisfaction if their input isn&#8217;t heard or integrated quickly. If your organization isn&#8217;t ready to support them, be very cautious- the last thing you want is for your celebrity to leave dissatisfied and publicly discredit your organization.</p>
<h3>Identification</h3>
<p>So let&#8217;s assume you&#8217;ve decided that a celebrity can add significantly to your business. You have two choices here- you can either attract existing talent, or you can nurture one from your existing employees. In both cases, it behooves you to be selective about their domain of expertise- attracting an expert in finance isn&#8217;t going to do your manufacturing business one whit of good, so make sure their knowledge matches your own business objectives.</p>
<p>Identifying talent should be pretty easy. Chances are they are already well established within your company or the community, and you won&#8217;t hurt for individuals willing to recommend them. The real trick here is substance- there are <em>tons</em> of individuals who have blogs that are little more than regurgitated trends, so what you&#8217;re looking for is someone who is adding to the conversation by providing their own ideas and insight. Just because someone has a twitter account doesn&#8217;t mean they&#8217;re adding to the conversation, it could just be that they&#8217;re a habitual retweeter or shameless self-promoter. A good rule of thumb to use for this is the &#8220;Holy Shit&#8221; effect- if, while reading a blog entry or paper of theirs, you have a moment of true &#8220;Holy Shit&#8221; insight, then you know that this person is capable of inspiring ideas and is an expert at quality content generation (Note- you&#8217;ll need to adjust for your own self-confidence, experience, and&#8230; a-hem&#8230; arrogance).</p>
<p>The other option you have is to nurture someone within your own organization, which provides the added loyalty benefit of gratitude. Again, identifying them should be easy- everyone knows them, they are frequently sought out for advice, and at meetings they are the ones willing to bite the bullet and ask sometimes stupid, sometimes compelling questions, and not just to hear themselves talk. Chances are that their hobbies are social in nature, and when given the opportunity they thrive in the limelight.</p>
<h3>Engagement &amp; Support</h3>
<p>Having identified your desired celebrity, the next step is to establish a working relationship with them. It&#8217;s your choice on whether to engage them as a direct employee or as an affiliated consultant is up to you, though each comes with significantly different expectations. The former is an employer/employee relationship, where you can directly leverage their expertise to support your business (as well as promoting it). The latter is more of a client relationship, and convincing them to consult on internal projects will normally cost you a commission. Support is also fairly straightforward, and should already be in the skill set of anyone who&#8217;s worked in PR for a decent amount of time. Speaking pitches, convention appearances and invites, book authoring and more are things your celebrity might be interested in, and usually it&#8217;s only a matter of presenting an opportunity to get them to bite.</p>
<p>Fact is, being a celebrity is hard work. Authoring presentations, writing whitepapers and blogging each take quite a bit of time, and one has to remain image conscious at all times. Add to that the constant industry monitoring that these individuals engage in, and without support it&#8217;s practically impossible for one person to do it as anything other than a full-time job. This is where you, as an employer, can speak from a position of strength. As long as you provide them an environment in which their skills are applicable <em>and</em> their public identity is supported (with a little judicious image coaching in extreme cases), you present them with a rare and invaluable environment.</p>
<h3>The Point of Arrogance</h3>
<p>There is a point in time when you will realize exactly how arrogant your celebrity is. This is a crucial point, where they feel they could cut loose and do their own thing- in short, you need the celebrity more than the celebrity needs you. This point can happen anywhere: Raise negotiations, Watercooler conversation, a happy hour comment like &#8220;What are they going to do, Fire me?&#8221;, and it&#8217;s up to you to recognize that point and understand that all the investment and time you put into this celebrity is about to walk out the door. (Caveat: This doesn&#8217;t always happen- if the individual is already substantially invested in other ways in your company, chances are they need the company as well and recognize this fact).</p>
<p>Let me let you in on a little secret: The vast majority of professional &#8220;celebrities&#8221; out there have gotten to where they are with a significant amount of corporate support&#8230; and whatever you do, DON&#8217;T TELL THEM THAT! Instead, spin their own arrogance against them: If they think of themselves as an entity easily separable from the company, then frame the conversation as a mutually beneficial partnership: You get to promote through them, while mitigating the workload of their own self-promotion.</p>
<p>This can be as easy as changing the nature of your conversation with them. Instead of directing them to promote a particular product or attend a particular convention, you simply ask whether they&#8217;d like to do so (Frankly, you should have been doing this all along). Most humans have a really hard time saying no when a friendly favor is asked, and while it will appear as if you&#8217;re granting them the right to manage their own appearances, in reality you&#8217;re simply taking advantage of human nature.</p>
<h3>Leader of the Pack</h3>
<p>So what now? Well, at this point you&#8217;ve shown your organization that you&#8217;re capable of engaging and retaining a celebrity, and are reaping the benefits of their affiliation and advocacy while providing them with the recognition they desire. Unfortunately, this is also going to bring all the hopefuls out of the woodwork- sleepers that desire the limelight and see it as a source of long-term professional advancement, but have not until this point had the energy to pursue things themselves.</p>
<p>This halo effect is perhaps the most dangerous effect of having a celebrity in your organization, because no matter how experienced they may be, your hopefuls either consider themselves equal or firmly believe that with the same level of company support they would be. The question &#8220;Why them, and not me&#8221; is inevitably asked, and will generate substantial professional dissatisfaction through your entire organization.</p>
<p>You have two choices on how to deal with this: The first is to really understand everyone&#8217;s personal value structure and assist them in realizing that. This should work for most, though it might mean a few unscheduled promotions or raises. For the others, chances are most hopefuls are not willing to trade fame for their free time, but nothing short of personal experience will convince them of that. To assist with this you might do well to create a group much like Adobe&#8217;s Tech Evangelism program. A basic coaching program should suffice to give them the exposure to the hard life of self-promotion, and should weed out anyone but the most determined individuals.</p>
<p>The important thing to note here is that you have to support your hopefuls, if only long enough to convince them that they&#8217;re not cut out for the celebrity life. Giving someone the Standard Lecture About Community And Corporate Values (TM) is just going to sound like a lot of sensationalist crap.</p>
<h3>Parting Ways</h3>
<p>Fact is, the United States is culturally very focused on the individual, which means that sooner or later someone will make your celebrity an offer you can&#8217;t match. The more famous someone is, the more likely this is to happen, so get used to the idea; hopefully you&#8217;ll already have someone ready to take their place.</p>
<p>Having said that, all of your investment in this individual is hardly in vain, because they won&#8217;t forget all the support you&#8217;ve offered them. You can go the extra mile and commit to any future speaking engagements you&#8217;ve scheduled on their behalf, but that would just be icing on the cake. Make them feel welcome, support them in their new career path, and with this continued positive support you will ensure that you will get free advocacy from them in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/08/10/a-guide-to-retaining-internet-celebrities.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>It&#8217;s the Experience, Stupid [Advice to Mobile Providers]</title>
		<link>http://www.krotscheck.net/2008/08/04/its-the-experience-stupid-advice-to-mobile-providers.html</link>
		<comments>http://www.krotscheck.net/2008/08/04/its-the-experience-stupid-advice-to-mobile-providers.html#comments</comments>
		<pubDate>Tue, 05 Aug 2008 00:17:48 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[strategy]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/08/04/its-the-experience-stupid-advice-to-mobile-providers.html</guid>
		<description><![CDATA[<p>Two years ago, my colleague Isaac went to SXSW, and came back with a presentation on Mobile Development. In it he said that one of the greatest challenges is getting a mobile application "on deck". "On Deck" is the term used for an application that's available on a provider's mobile platform, that place you goto online when you browse applications, ringtones and such, and to get something on there used to take an Act of God. Why? Because all billing had to be handled through the provider, all sales had to be done though your phone bill, and payments to third party companies had to be set up through their system (and usually required a hefty premium). In short- more trouble than it's worth. Fact is, this is largely still the case. Yes, with greater adoption of mobile web browsers these things are becoming a lot easier, yet getting an application onto a phone remains problematic, especially if the consumer isn't aware that you have it. The best option these days seems to be building a Mobile website, which is a far cry from a good user experience.<br /></p>
]]></description>
			<content:encoded><![CDATA[<p>Two years ago, my colleague Isaac went to SXSW, and came back with a presentation on Mobile Development. In it he said that one of the greatest challenges is getting a mobile application &#8220;on deck&#8221;. &#8220;On Deck&#8221; is the term used for an application that&#8217;s available on a provider&#8217;s mobile platform, that place you goto online when you browse applications, ringtones and such, and to get something on there used to take an Act of God. Why? Because all billing had to be handled through the provider, all sales had to be done though your phone bill, and payments to third party companies had to be set up through their system (and usually required a hefty premium). In short- more trouble than it&#8217;s worth. Fact is, this is largely still the case. Yes, with greater adoption of mobile web browsers these things are becoming a lot easier, yet getting an application onto a phone remains problematic, especially if the consumer isn&#8217;t aware that you have it. The best option these days seems to be building a Mobile website, which is a far cry from a good user experience.</p>
<p>So lets talk about the consumer for a bit, in particular the consumer described in <a href="http://www.amazon.com/Long-Tail-Future-Business-Selling/dp/1401302378" target="blank">The Long Tail</a>. Here is an individual who knows his/her own lifestyle and needs, who like particular applications over others, whose preferred experience with one service might be different from his/her neighbor&#8217;s experience for the same. This is an individual who, when presented with a Smart Phone, wants to have features and applications behaving a particular way, and will only put up with the provided options of the telco because there&#8217;s no other choice. In short, they have a craving for personalization, and will gladly move to any platform that has applications that meet their needs.</p>
<p>Deploying a mobile application to meet these needs is, in its simplest form, the following: First, you must have a developer able to access your SDK, platform and testbed with minimal fuss. Then, that developer must be able to deploy his application to a location where a potential user may download it onto their device. Lastly, the device must be able to run said application. These three tenets of Develop, Deploy, Consume can be easily seen on the regular web. Developers have their SDK&#8217;s, Deployment happens on a web server, and browsers allow consumption of the offered services.</p>
<div class="image">
  <img src="http://www.krotscheck.net/wp-content/uploads/2008/08/mobile-1.jpg" width="470" height="150" alt="Mobile-1.png" />
</div>
<p>In the mobile world this isn&#8217;t quite as simple. Yes, there are many websites now that have mobile components, yet lets face it: The form factor and memory constraints of mobile computing devices make it so that few applications can offer full functionality and experience while constrained by regular browser controls. Additionally, we are back to (for the time being) the computing world of the early 90&#8242;s, where applications are restricted by processing and memory constraints. Back then, however, we could load applications from Floppy disks, something that&#8217;s not so easy on a mobile device. The development platforms exist, but deployment (as noted above) is extremely difficult, and the broad diversity of devices makes your target installable base problematic at best.</p>
<p>So let us take a look at the various players in the mobile market right now. First of all, let us look at the telecommunication companies, those that have the aforementioned problem with getting something On Deck. From their perspective, they have control over their delivery platform, and getting something from their platform to a mobile device is simple enough, however their process is such that they have completely lost their developer base. There are too many devices, too many different platforms and form factors, and deploying an application is simply too difficult for any developer to bother building something. Imagine the computing world in the mid-80&#8242;s, and you&#8217;ll understand what I mean.</p>
<div class="image">
  <img src="http://www.krotscheck.net/wp-content/uploads/2008/08/mobile-5.jpg" width="470" height="150" alt="Mobile-5.png" />
</div>
<p>Next let&#8217;s take a look at <a href="http://www.microsoft.com/windowsmobile/en-us/business/developers.mspx" target="blank">Microsoft</a>, which in our case will also double as any company that has a mobile application which they want to deploy. Microsoft has historically been brilliant in its developer support tools, so much so that it&#8217;s stupidly easy to develop an application for their operating system. Similarly, the fact that they are in the software and not the hardware business lets them sell a platform rather than a device, which allows mobile manufacturers to create devices that can run any application built for it. The place where they have failed, however, is in securing and simplifying the delivery platform, which remains under the control of the telco&#8217;s.</p>
<div class="image">
  <img src="http://www.krotscheck.net/wp-content/uploads/2008/08/mobile-4.jpg" width="470" height="150" alt="Mobile-4.png" />
</div>
<p>Third, let us look at Google and <a href="http://code.google.com/android/" target="blank">Android</a>. Here, the development platform is easy to access and has some brilliant development tools. And&#8230; then what? Well, frankly, we don&#8217;t know a whole lot about how Android will be delivered, because while many manufacturers and providers have jumped on the bandwagon, we as of yet have no idea whether Android will use an open application deployment platform, or even whether phones built by their manufacturing partners will come with Android pre-installed. The suggested promise of Android is Build Once, Deploy To Any Phone, but if it means that a developer still has to get something On Deck with a Telco, you will once again be in the same boat as Microsoft- a common platform, but no control over application distribution.</p>
<p>I should note here that I doubt Google will <em>not</em> have some central application service, it simply hasn&#8217;t been announced yet.</p>
<div class="image">
  <img src="http://www.krotscheck.net/wp-content/uploads/2008/08/mobile-3.jpg" width="470" height="150" alt="Mobile-3.png" />
</div>
<p>Lastly, let us come to <a href="http://www.apple.com/">Apple</a>. In this case I have to make a special note, in that while I recognize the <a href="http://developer.apple.com/iphone/">SDK</a> is publicly available, it is unfortunately not available for Windows (No, <a href="http://www.aptana.com/">Aptana</a> junkies, that&#8217;s just a web browser). Thus while they have alienated a good percentage of computer users overall, the additional cost of an OSX development platform is comparatively minor, and won&#8217;t detract a company interested in building an iPhone application. Taking that into consideration, they have everything buttoned up. Developers can access the SDK, they have an established and largely ubiquitous deployment platform not tied to the telco, and they have a device that will run any software built. This end-to-end solution is exactly the same thing that made the iPod so successful, because it got a user from Purchase to Play in one smooth experience.</p>
<div class="image">
  <img src="http://www.krotscheck.net/wp-content/uploads/2008/08/mobile-2.jpg" width="470" height="150" alt="Mobile-2.png" />
</div>
<p>And no, I don&#8217;t own an iPhone.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/08/04/its-the-experience-stupid-advice-to-mobile-providers.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Twitter and the Power of Open, Integrated API&#8217;s</title>
		<link>http://www.krotscheck.net/2008/08/02/twitter-and-the-power-of-open-integrated-apis.html</link>
		<comments>http://www.krotscheck.net/2008/08/02/twitter-and-the-power-of-open-integrated-apis.html#comments</comments>
		<pubDate>Sat, 02 Aug 2008 16:03:55 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/08/02/twitter-and-the-power-of-open-integrated-apis.html</guid>
		<description><![CDATA[<p>The executive summary of this post goes something like this: If you are trying to launch a service, product or other technologically "innovative" web presence, your idea either has to be absolutely stellar (which I will guarantee to you it isn't), or you have to rip the covers off your technology and let your users decide how to use it themselves.</p>
]]></description>
			<content:encoded><![CDATA[<p>The executive summary of this post goes something like this: If you are trying to launch a service, product or other technologically &#8220;innovative&#8221; web presence, your idea either has to be absolutely stellar (which I will guarantee to you it isn&#8217;t), or you have to rip the covers off your technology and let your users decide how to use it themselves.</p>
<p>Lets take Twitter as an example. Their service statement is, in a nutshell, &#8220;We let you microblog&#8221;. They don&#8217;t do it particularly well, their online interface sucks, their features are extremely limited, and the service goes down so often that the &#8220;Fail Whale&#8221; has entered the colloquial as a term unto itself. And yet their users remain loyal, the service continues to be used, and it&#8217;s probably the most popular microblogging service out there.</p>
<p>Why? Realize that 80%+ of twitter activity goes through their API, not the website. In other words, the guys at twitter have opened up the doors to the kingdom and allowed the community to decide how they wish to consume the service. That same community has risen to the challenge, providing a plethora of applications, widgets and plugins that allow people to consume and update twitter where and when they want to.</p>
<div class="image">
  <img src="http://www.krotscheck.net/wp-content/uploads/2008/08/service-layer.png" width="443" height="286" alt="Service-Layer.png" />
</div>
<p>Lets take a closer look at what actually happened here: Twitter provided an API&#8230; and let the community (whether individuals or businesses) suck up the cost of developing use cases and interfaces, do usability testing, write requirements and eventually write the software. In short they just made someone else pay for the entire involved and expensive front-end development process.</p>
<p>Not only that, but they also neatly sidestepped the need to perform strategic market analysis to manage their own growth. Rather than focusing on meeting the needs of a single segment (and expanding from there), they boiled the service down to its absolute essentials and let each segment figure out how they want to use it.</p>
<p>This approach isn&#8217;t particularly new. <a href="http://dev.aol.com/aim">AOL IM</a> and <a href="http://www.jabber.org/">Jabber</a> have been around for a while now, <a href="http://code.google.com/apis/maps/">Google</a> and <a href="http://developer.yahoo.com/">Yahoo</a> have been making their services available for years now, and most of all the world wide web itself is&#8230; well, a communication platform built on the premise of a server/client relationship.</p>
<p>The key is integration. There are so many services, websites and widgets out there today that only the truly exceptional will be able to stand independently on their own. All the others are fighting for search engine placement, social tags, advertising and community buzz to promote themselves, but are never likely to hit the big-time unless they can integrate themselves into their user&#8217;s <em>pre-existing</em> day-to-day activities.</p>
<p>Wouldn&#8217;t you call that the value statement of any new company? &#8220;Provide a service that improves a users day-to-day activity so dramatically that they can&#8217;t live without it&#8221;. Whether this is done via process improvement (Make a task more efficient / less frustrating) or activity enhancement (Now you can tag your pages while you surf them) doesn&#8217;t really matter, because the core task remains the same.</p>
<p>My favorite example of this phenomenon is <a href="http://www.mozilla.com/en-US/firefox/">Firefox</a>, because it provides a platform where users can customize their browsing experience with all the ancillary services they want. Plugins exist for del.icio.us, livejournal, myspace, gmail, etc etc etc- all tasks and activities that may not be directly related to the core browsing activity, yet provide a sufficiently compelling experience enhancement that they&#8217;ve become part of day-to-day web surfing.</p>
<p>So in summary: If you&#8217;re providing a new service, put some serious thought into building an open API. If your services and your data (&#8217;cause that&#8217;s what it boils down to) are compelling enough, you stand a good chance of having the community take care of segmentation, marketing, and implementation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/08/02/twitter-and-the-power-of-open-integrated-apis.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Startup Weekend, Take 2</title>
		<link>http://www.krotscheck.net/2008/07/19/startup-weekend-take-2.html</link>
		<comments>http://www.krotscheck.net/2008/07/19/startup-weekend-take-2.html#comments</comments>
		<pubDate>Sun, 20 Jul 2008 01:47:02 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[business]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/07/19/startup-weekend-take-2.html</guid>
		<description><![CDATA[<p>So, the idea of <a href="http://www.krotscheck.net/2008/07/18/idea-foundry-want-to-start-a-company.html">Micropayment Startup Funding</a> turned out not to be viable.... correction- we have no idea whether it was viable, because we simply didn't have the expertise necessary to refine the business plan. Why? Well, read on.<br /></p>
]]></description>
			<content:encoded><![CDATA[<p>So, the idea of <a href="http://www.krotscheck.net/2008/07/18/idea-foundry-want-to-start-a-company.html">Micropayment Startup Funding</a> turned out not to be viable&#8230;. correction- we have no idea whether it was viable, because we simply didn&#8217;t have the expertise necessary to refine the business plan. Why? Well, read on.</p>
<p>Most startups start off as LLC&#8217;s, largely because it protects the partners from liability while still being a valid corporate entity. The catch is that these organizations can&#8217;t have more than 99 shareholders, which puts a serious limitation on the micropayment idea. If you&#8217;re looking for $1,000,000, your investors have to be able to pony up at least $10,000 each, and there&#8217;s nothing micro in those payments.</p>
<p>Therefore, for the concept to be viable, the company has to take the role of the investor on behalf of the fund contributors (either directly or via a subsidiary), which means it must become a financial entity structured like a credit union or a mutual fund. This then means SEC regulation, transparency, due diligence and most of all a cubic boatload of fiscal liability.</p>
<p>These are not insurmountable- in fact we&#8217;re fairly confident the model remains viable and profitable, however none of us felt confident enough to continue development on a prototype without getting some better expertise. It is, in short, an idea for mature and experienced entrepreneurs- One Security Lawyer, One Finance Guy, and One Technical Genius.</p>
<p>So where does that leave us? Well, we realized we had to get out of the Equity field and into offering Grants, because that removes the liability. Yet nobody&#8217;s going to offer a grant to a startup without equity, unless they are personally invested- and there exist plenty of companies that address the philanthropic market.</p>
<p>So where does that leave us? Scholarships. Create your own Scholarship. Students can display a YouTube video explaining why they should get a scholarship, and visitors can pay into a scholarship fund. All I have to do now is deliver in 24 hours.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/07/19/startup-weekend-take-2.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Idea Foundry: Want to start a company?</title>
		<link>http://www.krotscheck.net/2008/07/18/idea-foundry-want-to-start-a-company.html</link>
		<comments>http://www.krotscheck.net/2008/07/18/idea-foundry-want-to-start-a-company.html#comments</comments>
		<pubDate>Sat, 19 Jul 2008 04:53:13 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[business]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/07/18/idea-foundry-want-to-start-a-company.html</guid>
		<description><![CDATA[<p>This weekend is Startup Weekend Columbus, a three day skunkworks convention where 150 people walk into a building for a weekend and do their best to get a few companies started. I registered for it a few months ago with the thought that it'd be cool to really dig into something new and shiny for a short amount of time, and have some good fun networking with others. Unfortunately, three things happened that I wasn't expecting at that time.</p>
]]></description>
			<content:encoded><![CDATA[<div class="image">
<p>This is an Idea Foundry post. For more information on what this is all about, take a look <a href="http://www.krotscheck.net/2008/07/10/idea-foundry.html">over here</a>.</p>
</div>
<div class="hr"></div>
<p>This weekend is <a href="http://columbus.startupweekend.com/">Startup Weekend Columbus</a>, a three day skunkworks convention where 150 people walk into a building for a weekend and do their best to get a few companies started. I registered for it a few months ago with the thought that it&#8217;d be cool to really dig into something new and shiny for a short amount of time, and have some good fun networking with others. Unfortunately, three things happened that I wasn&#8217;t expecting at that time.</p>
<p>First, I didn&#8217;t realize is that I would decide a week beforehand that the idea I&#8217;ve been kicking around my mind might actually be worth pitching.</p>
<p>Secondly, I wasn&#8217;t expecting this idea to be extremely popular- it swept the vote during the first elimination round, and now there&#8217;s a bunch of people here who&#8217;re interested in making this happen.</p>
<p>The third thing I wasn&#8217;t expecting is exactly how far out of my league I feel right now. I&#8217;m a developer- a damn good Developer, Sysadmin and Architect. I&#8217;m also really good at identifying trends and turning commonly held assumptions upside down. Strategic thinking comes fairly naturally, but writing a Business Plan? Identifying revenue streams? Not exactly my forte.</p>
<p>So, first things first, I&#8217;m going to stop referring to this as My Idea (TM) and start referring to it as Our Idea- I&#8217;m part of a damn good team from what I can tell, which is the entire reason Startup Weekend exists in the first place. Everyone&#8217;s bringing their expertise to the table, and creating a company.</p>
<p>So what will this company do? Well, we want to Crowdsource Startup Capital.</p>
<p>Startup (or Angel) investment has so far been the realm of individuals with enough net worth that this risky pursuit is offset by existing capital investments. Normal people don&#8217;t have five, six, or seven digits to drop into a new company, yet many people would be interested in doing so if they could. So&#8230; why not take a page out of the book of Barak Obama and Howard Dean, and source startup capital from smaller donors? Open up the field of Angel investing to people able to contribute $100, $200, maybe $500 each, and facilitate crowdsourced investment. Individuals seeking to fund their pitches would list their credentials (via LinkedIn or reference) and their business idea, including any supporting documents and research they may have.</p>
<p>That&#8217;s pretty much it. Conceptually extremely simple, with a target market of &#8220;everybody who wants to get in on that startup thing&#8221;. Once you get under the hood a little you realize there&#8217;s a lot of things one has to worry about- SEC regulations, how to handle the money, do you structure yourself as an investment firm/bank/communications business, how do you handle Fraud and so forth. And most of all, what&#8217;s the first step in the business plan? This is an industry so heavily regulated that releasing functionality and additional features are dependent on lawyers and accountants rather than developers and project managers, so the first thing we have to do is identify a revenue stream that will get us to the point where we can afford people like that.</p>
<p>In other words, the trick is finding step one, and executing on it by Sunday. What happens after that &#8230; well, one thing at a time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/07/18/idea-foundry-want-to-start-a-company.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Social Media Snippets</title>
		<link>http://www.krotscheck.net/2008/07/04/social-media-snippets.html</link>
		<comments>http://www.krotscheck.net/2008/07/04/social-media-snippets.html#comments</comments>
		<pubDate>Fri, 04 Jul 2008 21:46:00 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[corporate ownership]]></category>
		<category><![CDATA[references]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[titles]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/07/04/social-media-snippets.html</guid>
		<description><![CDATA[<p>Now and then I come across thoughts and snippets that don't really warrant their own post, but are interesting nonetheless. Here's a collection of a few regarding social media.<br /></p>
]]></description>
			<content:encoded><![CDATA[<p>Now and then I come across thoughts and snippets that don&#8217;t really warrant their own post, but are interesting nonetheless. Here&#8217;s a collection of a few regarding social media.</p>
<h3>You cannot own social media</h3>
<p>There were a few really good articles on corporate response to social media <a href="http://www.web-strategist.com/blog/2008/06/19/social-media-faq-6-who-owns-the-social-media-program/">here</a>, <a href="http://www.web-strategist.com/blog/2008/03/18/trends-corporate-adoption-of-social-media-tire-tower-and-the-wheel/">here</a>, and <a href="http://www.web-strategist.com/blog/2008/02/28/forrester-report-how-to-hire-for-social-computing-the-social-computing-strategist-community-manager/">especially here</a>, and the originating post that got me to really think about it <a href="http://www.rluxemburg.com/2008/06/21/who-owns-social-media-another-view/">here</a>. In a nutshell, the desire to organize around social media campaigns is&#8230; well, Jeremiah says it best:</p>
<p><em>&#8220;It’s important to note, that in the end, these skills (the ability to communicate online) will disperse and grow to many employees. Generation Y comes to us with these abilities built it as a “digital natives”– yet the need to organize will still occur, it’s a knee jerk reaction to every corporation.&#8221;</em></p>
<p>The bottom levels, or &#8216;fringes&#8217; of our workforce are starting to fill with people accustomed to communicating online with such speed and frequency that most senior levels of management have a hard time even comprehending. Normal corporate reactions such as blanket internal social media policies inevitably feel heavy handed, and the inevitable reaction is an unfortunate social backlash.</p>
<p>In the long run tweeting, blogging, Facebook, etc etc etc will be seen as ubiquitous as chatting or texting, and we all know how useful restrictions on those have been over the last decade (that is to say, not at all). The long-term shakeout will likely be similar: Keep it to yourself, don&#8217;t do anything discriminatory or illegal, and in return we&#8217;ll respect your right to free speech.</p>
<h3>There&#8217;s nothing new about Social Media</h3>
<p>Methinks I&#8217;m going to piss a few people off by saying this, but there&#8217;s really nothing new about Social Media. We toss around these terms and definitions to try to give shape the world around us, and when we come across a neat new interesting way in which people are communicating we like to slap a new label on it. Social Media is no different &#8211; we all love it, it sounds cool, it&#8217;s the hip word of the day, but in reality all it comes down to is that the social networks that used to exist in communities, neighborhoods and college campuses have increased in speed and scope. All the same social rules still apply: insulting people is a bad idea, buying people off is cheating, and actually smiling and listening to someone will earn their trust faster than treating them like a random statistic (regardless of whether you act on it). Even the ability to create communities isn&#8217;t new, it&#8217;s simply grown beyond the local.</p>
<h3>Titles are meaningless, references are everything.</h3>
<p>I had an interesting exchange with Steve Weiss at O&#8217;Reilly, in which we talked about the term &#8220;creative&#8221; and how it&#8217;s used. It&#8217;s no secret that I feel standard classifications are nonsense ( Designer vs. Developer? Strategy vs. Marketing? Leadership vs. Management?) but even moreso I take the statements of pretty much every self-proclaimed expert with a grain of salt. Anyone can call themselves a Guru, so without the reference of someone who&#8217;s opinion I respect I treat them with a rather large grain of salt.</p>
<p>Furthermore, the prevalence of reference sites, spam referrals and self-flagellating social cliques makes such trusted references suspect in and of themselves. See, I can find 100 people who will say something nice about me (say, on linkedin) simply if I ask them. Why? Because it&#8217;s rude to say no, and spin is easy. It is in-person face-to-face referrals that are far more substantive, especially if they&#8217;re unsolicited. Does someone casually mention another name during a conversation? Do their eyes light up about someone else&#8217;s ideas? It&#8217;s this complete lack of formatting that makes a reference more genuine, believable, and far more valid.</p>
<h3>You can talk a lot. You can blog a lot. But can you act on it?</h3>
<p>Self-declared expertise is all well and good (or not, as you see above), but unless you can take your ideas and implement them you&#8217;re just another windbag. That&#8217;s why I have such a strong love of Google&#8217;s internal policy to let the engineers drive the company &#8211; say what you will about the lack of advancement opportunity there, they certainly know how to execute. Similarly I have a strong distaste for any company that only shows their marketers, sales people, or public relations guys to the customer. Give me a project manager, give me an product designer, give me a financier (in the case of investment firms), but please, don&#8217;t give me someone whose key career skill is based on saying what I want to hear.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/07/04/social-media-snippets.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Book Review: Subject to Change</title>
		<link>http://www.krotscheck.net/2008/06/29/book-review-subject-to-change.html</link>
		<comments>http://www.krotscheck.net/2008/06/29/book-review-subject-to-change.html#comments</comments>
		<pubDate>Sun, 29 Jun 2008 20:38:10 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[adaptive path]]></category>
		<category><![CDATA[experience]]></category>
		<category><![CDATA[product management]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/06/29/book-review-subject-to-change.html</guid>
		<description><![CDATA[<p>Sooner or later, every developer out there gets sick of the long hours, the process, the verification and the deadlines. Even if we've naturally gravitated towards leadership, the clarion call of management is strong- it's perceived as advancement (potentially into a C* role), comes with the benefit of fewer long hours, you have people you can boss around... all in all good things when looked at in the right light. Yet most developers end up in Development Management, which ends up being more about estimates and balancing resources (aka beancounting), rather than Product Management, which continues apace with the thing I love most about being a Developer: Building Stuff.</p>
<p>Unfortunately, the field is incredibly hard to break in to (Especially in software), and books on methods and methodologies are few and far between. So when my User Groups' book shipment from O'Reilly came in with a complementary copy of Adaptive Path's "Subject to Change" I was intrigued. From the title, the book is about "Creating great products and services for an uncertain world". Think I was interested? You bet! Here was a book that seemed to be all about how to create and manage a product in the everchanging world of the internet! Unfortunately this particular edition was earmarked for a colleague of mine, however it took me precisely 30 minutes to track down a copy in a nearby Borders and start reading it that night.</p>
<p>You should note that I rarely, if ever, read professional books, that's what blogs are there for. But I digress...</p>
<p>It turns out that my initial enthusiasm was a little naive, since the argument presented in the book was substantially different than what I was expecting. In fact, one of its chapters is titled 'Stop Designing "Products"', which made me more than a little concerned. Yet having said that, and taking into account the often blatant plugs for Adaptive Path, it turns out the book was exactly what I needed, even though it wasn't exactly what I was looking for.</p>
]]></description>
			<content:encoded><![CDATA[<p>Sooner or later, every developer out there gets sick of the long hours, the process, the verification and the deadlines. Even if we&#8217;ve naturally gravitated towards leadership, the clarion call of management is strong- it&#8217;s perceived as advancement (potentially into a C* role), comes with the benefit of fewer long hours, you have people you can boss around&#8230; all in all good things when looked at in the right light. Yet most developers end up in Development Management, which ends up being more about estimates and balancing resources (aka beancounting), rather than Product Management, which continues apace with the thing I love most about being a Developer: Building Stuff.</p>
<p>Unfortunately, the field is incredibly hard to break in to (Especially in software), and books on methods and methodologies are few and far between. So when my User Groups&#8217; book shipment from O&#8217;Reilly came in with a complementary copy of Adaptive Path&#8217;s &#8220;<a href="http://www.amazon.com/Subject-Change-Creating-Products-Uncertain/dp/0596516835">Subject to Change</a>&#8221; I was intrigued. From the title, the book is about &#8220;Creating great products and services for an uncertain world&#8221;. Think I was interested? You bet! Here was a book that seemed to be all about how to create and manage a product in the everchanging world of the internet! Unfortunately this particular edition was earmarked for a colleague of mine, however it took me precisely 30 minutes to track down a copy in a nearby Borders and start reading it that night.</p>
<p>You should note that I rarely, if ever, read professional books, that&#8217;s what blogs are there for. But I digress&#8230;</p>
<p>It turns out that my initial enthusiasm was a little naive, since the argument presented in the book was substantially different than what I was expecting. In fact, one of its chapters is titled &#8216;Stop Designing &#8220;Products&#8221;&#8216;, which made me more than a little concerned. Yet having said that, and taking into account the often blatant plugs for Adaptive Path, it turns out the book was exactly what I needed, even though it wasn&#8217;t exactly what I was looking for.</p>
<div class="image">
  <a href="http://www.amazon.com/Subject-Change-Creating-Products-Uncertain/dp/0596516835"><img src="http://www.krotscheck.net/wp-content/uploads/2008/06/subject-to-change1.jpg" width="150" height="204" alt="Subject to Change" /></a></p>
<p>Merholz, Wilkens, Schauer and Verba, <em>Subject To Change: Creating Great Products &#038; Services for an Uncertain World (Adaptive Path)</em>, O&#8217;Reilly, 2008</p>
</div>
<p>Chapter 1 lays out the foundation of the argument, which is that customers aren&#8217;t attracted to features, they&#8217;re attracted to an experience. Note that this does not mean bells and whistles &#8211; I can have an experience at a circus, but that&#8217;s not what I&#8217;m looking for in a laptop. Instead, it is critical to look at what your customer is actually trying to accomplish, and to make the experience of accomplishing that task as positive as possible. Layering on feature after feature is good only if the original intended task experience is not compromised, otherwise it simply adds noise to what should be an all-signal experience. In other words, good products are well designed, by which they don&#8217;t mean pretty, nor that they have an elegant software implementation. Design is instead used in the inclusive sense- all aspects of the product, experience and execution are carefully considered and integrated into one seamless whole.</p>
<p>This foundation is then built on in Chapter 2 by presenting the idea that the aforementioned experience is a strategic decision, and then clearly defining what that does and does not mean. Those of you who are trying to achieve some flavor of competitive advantage (aka differentiation aka edge etc etc) should definitely read this chapter, because it provides a long list of clarifications given the context. Quite frankly, the whole thing reads like a snopes article that slowly dismantles many lessons learned in academic marketing classes. My favorite one is the ideal of Parity &#8211; the misconception that a product can be competitive simply by matching features with the competition. See, a feature is simply that: An implemented piece of functionality on a product spec sheet. If accessing and using said feature requires an advanced degree in astrophysics doesn&#8217;t matter; the mere fact that the feature exists makes the product competitive.</p>
<p>With the supporting framework of their argument is clearly established, and Chapter 3 puts in context of previously established marketing approaches. When your focus is on the experience and the user&#8217;s motivations, habits such as market segmentation rapidly get turned upside down. You can no longer assume that the consumer is some faceless drone who exists to give you money, but instead have to give that person a face, a background a motivation, and an objective. A segment rapidly evolves into a persona, and eventually loses its distinction altogether- you&#8217;re no longer sculpting your message for a particular group or persona, but are instead approaching individuals to discover how you can best meet their needs and improve their experience.</p>
<p>Yet none of this can be accomplished without information, which is usually garnered by research (Chapter 4). Interestingly enough, the book does not necessarily go into individual research methods, but focuses more on the importance of qualitative over quantitative research and the need to involve every team member. Research, as is stated, too often happens in a strategy or research group independent of the team that will actually implement their findings, and thus the opportunity for consumer or persona empathy is lost within minutes of the powerpoint presentation. It is only by keeping everyone involved up front (though perhaps not directly contributive) that information gained is relevant, actionable, and provides durable insight.</p>
<p>Chapter 5 then takes us full circle back to the beginning, and really drives the idea that success is not driven by features, capabilities or marketing, but by the experience of the customer. It&#8217;s not just the experience of completing a specific task that is meant here, but the entire support system ancillary to that task. You might have an iPod, but without an iTunes all you have is a pretty piece of plastic. Find out what the customer wants to accomplish, figure out what it&#8217;ll take to perform all steps of that, and build a system to do so simply and elegantly.</p>
<p>At this point, the book could have ended and been a pretty effective piece on product design theory based on experience. It has taken us from the initial presentation of the idea all the way through the strategic advantage and full circle back to the beginning. Instead, it continues on and picks apart the actual implementation strategies, beginning with Design in Chapter 6. This is a beast of a chapter and not for the faint of heart, but is nevertheless utterly critical for understanding the depth of the argument. Design is picked apart by discipline, target, competency, strategic importance and implementation, and the chapter itself does a remarkable job breaking down common misconceptions. Design is necessary, strategic, and is presented as a mindset rather than a discipline, one that everyone must implement to properly contribute to the delivery.</p>
<p>Chapter 7 then goes into the nitty gritty of implementation by speaking about agile development methods. This is where the developer in me went squee, because for the first time I saw Agile presented within a strategic context rather than a reactive context. Too often when management hears &#8220;Agile Development&#8221; the first thing that comes to mind is &#8220;Development will be faster&#8221;, or more responsive, and in many cases this is true. Even so, the book presents it as an integral part of experience based design, and discusses how its rapid iterative nature can be used to convert a design or motion prototype iteratively into a fully functioning application, while allowing user research and experience evaluation (and revision) at every step of the way. If you&#8217;ve ever had to say &#8220;That&#8217;s what&#8217;s written in the requirements, we can&#8217;t change it now&#8221; this chapter is for you. Lets face it- issues and problems will arise during development no matter what happens, but if you keep everyone on deck (and not siloed into different expertise groups) you&#8217;ll be able to confront it much faster.</p>
<p>And with that, Chapter 8 closes the book. I&#8217;d copy the two pages that compose it here verbatim if I didn&#8217;t think there&#8217;d be conflict of interest issues, but safe it to say that it is the conclusion and summary of the entire book. The only thing certain is change, and here&#8217;s how you deal with it.</p>
<h3>Personal Observations</h3>
<p>Overall, a very good book, but I do have a few pointed comments. First of all, the cases presented within the book too often follow the pattern of &#8220;Here&#8217;s company X, known as a genius at Y, and here&#8217;s their process/methodology/etc.&#8221; The academic in me chokes at statements like that, because they imply causality &#8211; that their process is the reason why they are so well known and respected, when in reality it could be something completely different. The book itself warns of making surface level assumptions like that, so I&#8217;m fairly irritated that they do so themselves.</p>
<p>The other one is the mixture of authoring tones. At times casual, at times formal, it&#8217;s clear that more than one person wrote this book. When I&#8217;m reading a structured section about research and am suddenly approached in a conversational tone, my brain kicks me out of the narrative (and thus my experience with the book is diminished). Even so, I&#8217;d recommend this book to any marketer, strategist, developer&#8230; or, well, anyone who plays a role in a product production process. At 165 pages it&#8217;s a light read, the ideas are straightforward and well explained, and though they aren&#8217;t often supported as rigorously as I would prefer, the book itself make an excuse for that: If you spend too much time backing up your argument, you lose the time you&#8217;d spend on determining where your argument should take you.</p>
<p>I&#8217;d like to close with a quote from Jim Hackett, President and CEO of Steelcase: <em>&#8220;Simply put, we make the same mistake that most organizations make when they undertake an ambitious project- having come up with a fine notion, we put all our energy into execution before we had thought the idea through.&#8221;</em></p>
<p>Words to live by.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/06/29/book-review-subject-to-change.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wind</title>
		<link>http://www.krotscheck.net/2008/05/26/wind.html</link>
		<comments>http://www.krotscheck.net/2008/05/26/wind.html#comments</comments>
		<pubDate>Tue, 27 May 2008 00:11:31 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/05/26/wind.html</guid>
		<description><![CDATA[<p>My parents were huge believers in the roadtrip. Whether this is a cultural phenomenon or not isn't important: What's important is that pretty much every summer ever since I was a toddler we'd drive somewhere for a substantial amount of time. Greece, Denmark, Yugoslavia, Italy, Spain, Switzerland, you name it. This tradition continued on well after we'd moved to the United States, including pretty much anything within easy driving distance of Texas.</p>
<p>Now, when you're a parent, you try to encourage your childrens' curiosity to see which way their enthusiasm will take them- it's not a matter of molding them into a particular set of standards (aka Teaching Them Good And Wholesome Values (TM)), it's more about letting them find their own path, and most of the time... well, it's a bit of a crapshoot, and you never know whether this new pursuit of theirs is going to be a flighty fancy or a serious pursuit. In addition to that my own ADD tendencies could not have made that much easier. Fixating on a particular task was easy for me, but finding something I'd be willing to fixate on for more than a week or so wasn't about to happen. Name it, I've probably explored it, and my mom and dad's support in every flighty fancy is... well, I can't really thank them enough for it.</p>
<p>The additional difficulties with this kind of kid (that being myself) is that sometimes the really significant hobbies and pursuits are difficult to pick out from the noise. There are simply too many hobbies, unfinished projects and pursuits to figure out which one really took hold, and it's not until I myself have gained the ability to retrospect properly that I myself can pick them out.</p>
<p>The actual point of all that commentary? I like kites.</p>
]]></description>
			<content:encoded><![CDATA[<p>Let me tell you a story.</p>
<p>My parents were huge believers in the roadtrip. Whether this is a cultural phenomenon or not isn&#8217;t important: What&#8217;s important is that pretty much every summer ever since I was a toddler we&#8217;d drive somewhere for a substantial amount of time. Greece, Denmark, Yugoslavia, Italy, Spain, Switzerland, you name it. This tradition continued on well after we&#8217;d moved to the United States, including pretty much anything within easy driving distance of Texas.</p>
<p>Now, when you&#8217;re a parent, you try to encourage your childrens&#8217; curiosity to see which way their enthusiasm will take them- it&#8217;s not a matter of molding them into a particular set of standards (aka Teaching Them Good And Wholesome Values (TM)), it&#8217;s more about letting them find their own path, and most of the time&#8230; well, it&#8217;s a bit of a crapshoot, and you never know whether this new pursuit of theirs is going to be a flighty fancy or a serious pursuit. In addition to that my own ADD tendencies could not have made that much easier. Fixating on a particular task was easy for me, but finding something I&#8217;d be willing to fixate on for more than a week or so wasn&#8217;t about to happen. Name it, I&#8217;ve probably explored it, and my mom and dad&#8217;s support in every flighty fancy is&#8230; well, I can&#8217;t really thank them enough for it.</p>
<p>The additional difficulties with this kind of kid (that being myself) is that sometimes the really significant hobbies and pursuits are difficult to pick out from the noise. There are simply too many hobbies, unfinished projects and pursuits to figure out which one really took hold, and it&#8217;s not until I myself have gained the ability to retrospect properly that I myself can pick them out.</p>
<p>The actual point of all that commentary? I like kites.</p>
<p>One of the first trips we took after moving to Texas was to Corpus Christi, where my parents bought me a cheap little stunt kite. It was&#8230; an experience hard to describe. See, we kept it in storage (or rather, pinned to the ceiling in my room) for most of the year, and only when the opportunity arose did it get pulled out of retirement. In particular, there was one beach trip to Port Arthur where I spent so much time flying the kite that my back ended up with second degree burns.</p>
<p>I flew this kite ragged. The trailing edge started to fray, I had to duct-tape the cross brace, and the line had to be mended multiple times, but even so it was probably the best $40 they ever spent for me. I took it to college with me, but there wasn&#8217;t much opportunity in Pittsburgh to fly it. Soon enough it got lost in a move somewhere, and I haven&#8217;t really thought of it much since, until I went on vacation last year.</p>
<p>The event I&#8217;m currently at happens every year, essentially in the same place, and one of the featured stores in the area is <a href="http://www.kittyhawk.com/">Kitty Hawk Kites</a>, a store that&#8230; well, sells kites. Last year I walked out of that place with a .7 m^2 stackable stunt delta that was my best friend for the next week (I did wear sunscreen this time though). Nimble, maneuverable, quick on the turn and beautifully responsive: hmmmmhhhh yeah.</p>
<p>So what did I forget to pack this year? Exactly. After a few short minutes of bellyaching over this gross insult to her I acquired a new one, a 2.5m^2 foil (Mom, Dad? Guess where the birthday check went. Thanks! <img src='http://www.krotscheck.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ). In comparison to my delta it&#8217;s like switching from a scooter to a harley: It ceases to be an exercise of pure finesse and becomes a study of power, cantilevering and balance control. This kite requires quite a bit of physical cantilevering to prevent it from pulling me off my feet, and during my first practice flight I faceplanted in the sand a few times because I underestimated its power.</p>
<p>What&#8217;s even worse? This new kite has stacking mounts.</p>
<div class="image">
<img src="http://www.krotscheck.net/wp-content/uploads/2008/05/stylusp3.jpg" width="400" height="292" alt="stylusp3.jpg" /></p>
<p>My new kite.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/05/26/wind.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Draining Day</title>
		<link>http://www.krotscheck.net/2008/05/22/draining-day.html</link>
		<comments>http://www.krotscheck.net/2008/05/22/draining-day.html#comments</comments>
		<pubDate>Thu, 22 May 2008 22:38:57 +0000</pubDate>
		<dc:creator>Michael Krotscheck</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.krotscheck.net/2008/05/22/draining-day.html</guid>
		<description><![CDATA[<p>I have just had one of the most emotionally draining days in a very long time. Which is surprising, given that it's over something as trivial as a blog post.</p>
<p>What happened? Well, I put out a post that was poorly worded. Someone (at work) took exception. I was told about this, took a long hard look at what I said, realized it could very easily be taken in the wrong way (and was), and so posted a retraction, explaining why. And now I've been told several times that the retraction looks like I've sold out, and that I'm subversively blaming my company for censoring me. That it looks like someone came down on me with a hammer, and/or that the entire exchange sounded insincere.</p>
<p>None of these are true. No hammers, no coercions, no subversion, no lack of sincerity on my part either. Simply one person's (well, ok-several persons') hurt feelings and my attempt to make amends. And apparently, I failed so completely that I looked like a vindictive little prat.</p>
<p>So now I don't just have the original offense to apologize for, I also have to backpedal on the retraction. And short of pulling the original two posts (which I did) I can't figure out how.</p>
]]></description>
			<content:encoded><![CDATA[<p>I have just had one of the most emotionally draining days in a very long time. Which is surprising, given that it&#8217;s over something as trivial as a blog post.</p>
<p>What happened? Well, I put out a post that was poorly worded. Someone (at work) took exception. I was told about this, took a long hard look at what I said, realized it could very easily be taken in the wrong way (and was), and so posted a retraction, explaining why. And now I&#8217;ve been told several times that the retraction looks like I&#8217;ve sold out, and that I&#8217;m subversively blaming my company for censoring me. That it looks like someone came down on me with a hammer, and/or that the entire exchange sounded insincere.</p>
<p>None of these are true. No hammers, no coercions, no subversion, no lack of sincerity on my part either. Simply one person&#8217;s (well, ok-several persons&#8217;) hurt feelings and my attempt to make amends. And apparently, I failed so completely that I looked like a vindictive little prat.</p>
<p>So now I don&#8217;t just have the original offense to apologize for, I also have to backpedal on the retraction. And short of pulling the original two posts (which I did) I can&#8217;t figure out how.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.krotscheck.net/2008/05/22/draining-day.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

