<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Submit My Info</title>
	
	<link>http://blog.submitmy.info</link>
	<description>Web reference for small business, entrepreneurs and geeks</description>
	<lastBuildDate>Fri, 30 Jul 2010 15:11:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/submitmy/nQxn" /><feedburner:info uri="submitmy/nqxn" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item>
		<title>Message-based Chrome Extension incorporating JQuery</title>
		<link>http://feedproxy.google.com/~r/submitmy/nQxn/~3/nRI899Zb_VY/</link>
		<comments>http://blog.submitmy.info/2010/05/message-based-chrome-extension-incorporating-jquery/#comments</comments>
		<pubDate>Sun, 09 May 2010 22:31:57 +0000</pubDate>
		<dc:creator>Paul Heath</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[chrome extension]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.submitmy.info/?p=369</guid>
		<description><![CDATA[I have a Twilio Tweet to thank for getting me involved in the whole idea of exploring chrome extensions. Intrigued, I looked at a few videos on “how easy” it was to build a Chrome Extension, so I set forth. In the end, it’s really not tough, although there was some fiddling to do and [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I have a Twilio Tweet to thank for getting me involved in the whole idea of exploring chrome extensions.</p>
<div id="attachment_373" class="wp-caption alignright" style="width: 186px">
	<a href="http://blog.submitmy.info/wp-content/uploads/2010/05/ChromeExtPopup.jpg"><img class="size-medium wp-image-373" title="Chrome Extension Popup" src="http://blog.submitmy.info/wp-content/uploads/2010/05/ChromeExtPopup-186x300.jpg" alt="Chrome Extension Popup" width="186" height="300" /></a>
	<p class="wp-caption-text">Chrome Extension Popup</p>
</div>
<p>Intrigued, I looked at a few videos on “how easy” it was to build a Chrome Extension, so I set forth.</p>
<p>In the end, it’s really not tough, although there was some fiddling to do and debugging was a bit of a challenge &#8211; this article nets out the key components.</p>
<p>In the past, I’ve developed some image-intensive vacation sites – it is well known that populating ALT and TITLE tags are good for SEO and user experience. With that in mind, I thought it would be (somewhat) useful, as an exercise, to be able to get a snapshot of all the images on a given page and examine the IMG tag attributes. Let&#8217;s call it the <strong>Image Grabber</strong>.</p>
<p>I also wanted to incorporate some JQuery code into the mix, since it offered another useful dimension when ultimately building a real extension.</p>
<h1>Image Grabber – Pieces and Parts</h1>
<p>The basic components for this exercise are:<br />
<div id="attachment_395" class="wp-caption alignright" style="width: 216px">
	<strong><strong><a href="http://blog.submitmy.info/wp-content/uploads/2010/05/codelist.jpg"><img class="size-full wp-image-395" title="Image Grabber Code Listing" src="http://blog.submitmy.info/wp-content/uploads/2010/05/codelist.jpg" alt="Image Grabber Code Listing" width="216" height="120" /></a></strong></strong>
	<p class="wp-caption-text">Image Grabber Code Listing</p>
</div></p>
<ul>
<li>A <em>manifest.json</em> file which serves as the “config file” to wire everything together.</li>
<li>Initial HTML file (<em>popup.html</em>) which is the display portion of the extension. This also some contains some Javascript – more on that later</li>
<li>A javascript file (<em>contentscript.js</em>) which contains the code to inspect the target web page you are on. This is known as a “Content Script” and is “injected” (see NOTE below) into the target page automatically</li>
<li>The JQuery core library which will also be injected into the target page.</li>
<li>An icon file (<em>icon.png</em>) to represent the existence of the extension (there is one in the included zip archive of the code)</li>
</ul>
<p><strong>NOTE</strong>: The content scripts are injected into any web page when it loads (according to certain rules in manifest.json). HOWEVER, they are not really injected into the page, they are injected into what Google calls an “isolated world” meaning the scripts have access to the target page’s DOM, but exist separately so that no damage can be done to the page – think of it as a parallel universe.</p>
<h1>Image Grabber Basic Flow</h1>
<p>Put a button on <em>popup.html</em> to initiate the business end of the extension and ultimately display the result</p>
<p>Create a “long-lived” (as opposed to one time) connection  between the <em>popup.html</em> page and the content script (<em>contentscript.js</em>) so that they can message back and forth with each other.</p>
<p>The <em>contenscript.js</em> has the job of (1) receiving instructions from <em>popup.html</em> (2) grabbing the dom elements and populating an array and (3) returning the array.</p>
<h1>Image Grabber Code</h1>
<p><strong>manifest.json</strong></p>
<pre>{
"name": "Image Grabber",
"version": "1.0",
"description": "Pulls out the images and associated attributes from the page",
"browser_action": {
"default_icon": "icon.png",
"popup": "popup.html"
},
   "permissions": ["tabs"],       // This is needed to programmatically determine the current browser tab
   "content_scripts": [
      {
         "matches": ["http://*/*"],
         "js": ["jquery-1.4.2.min.js", "contentscript.js"]
      }
   ]
}
</pre>
<p><strong>Popup.html</strong></p>
<p><strong>HTML Fragments</strong></p>
<pre>&lt;input type="button" id="but1" name="but1" value="Get Page Images" /&gt;
&lt;p&gt;hello, this is the popup&lt;/p&gt;
</pre>
<p><strong>Javascript Fragments</strong></p>
<pre>function getDomElements(elemType) {
   chrome.tabs.getSelected(null,function(tab) {
      var port = chrome.tabs.connect( tab["id"] );
      port.postMessage({mycmd: elemType});
      port.onMessage.addListener(function(msg) {
         if (msg) {
            $('#output').html( formatOutput(msg.result) );
         }
         else {
            $('#output').html("Got Nothing");
         }
      });
   });
}

function formatOutput (a) {
   var j=0;
   var out="";

   out = "" + a.length + " IMAGES FOUND" + "&lt;br&gt;&lt;br&gt;";
   while (j&lt;a.length) {
      out +=  "ID= " + a[j].id + ", Name= " + a[j].name + ", Title= " + a[j].title + ", ALT= " + a[j].alt + "&lt;br&gt;" + "&lt;img src=" + a[j].src + "&gt;" ;
      j++;
   }
   return out;
}

$(document).ready(function() {
   $('#but1').live("click", function() {
      getDomElements("img");
   });
})
</pre>
<p><strong>contentscript.js</strong></p>
<pre>// ”bean” to house the img attributes
function domobj(src,name, id, title, alt) {
   this.src = src;
   this.name = name;
   this.id = id;
   this.title = title;
   this.alt = alt;
}

// Scan the DOM for IMG tags and assemble the attributes into an array

function getImages () {
   var imgArray = new Array();
   var i=0;
   $.each($('img'),function() {
      imgArray[i++] = new domobj(this.src, this.name, this.id, this.title, this.alt);
   })
   return imgArray;
}

// Setup a “long-lived” connection with the extension (in our case, popup.html contains the other side)

var port = chrome.extension.connect();

chrome.extension.onConnect.addListener(function(port) {
   port.onMessage.addListener(function(msg) {
      if (msg["mycmd"] == "img") {
         var imgArray = getImages();
         port.postMessage({result: imgArray });
      }
      else {
         port.postMessage({result: []});
      }
   });
});
</pre>
<p>Now that you have an overview of the various pieces, you can <a title="Download Image Grabber Chrome Extension Code" href="http://blog.submitmy.info/imggrab-chromext.zip">download the Image Grabber Extension code</a> and drop it into a directory. From there, launch the Chrome browser, click the <em>Tools </em>menu, and then <em>Extensions</em>. Click the leftmost button &#8220;Load Unpacked Extensions&#8221; and when asked, point to the directory containing your files. Once the extension is loaded, go to the tab containing a site with images and then click the icon in the top right of the browser. NOTE: You may need to reload the page, then click the extension icon.</p>
<p>The above is not a production extension &#8211; just an example of the components needed to construct one. I hope it accelerates your progress when cobbling yours together.</p>
<img src="http://feeds.feedburner.com/~r/submitmy/nQxn/~4/nRI899Zb_VY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.submitmy.info/2010/05/message-based-chrome-extension-incorporating-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.submitmy.info/2010/05/message-based-chrome-extension-incorporating-jquery/</feedburner:origLink></item>
		<item>
		<title>HTML5 Client Side Storage</title>
		<link>http://feedproxy.google.com/~r/submitmy/nQxn/~3/9Q5-F7TB5w0/</link>
		<comments>http://blog.submitmy.info/2010/04/html5-client-side-storage/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 23:44:25 +0000</pubDate>
		<dc:creator>Paul Heath</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.submitmy.info/?p=299</guid>
		<description><![CDATA[As of this writing there is a lot of noise around HTML5. Given the varying levels of browser support for the new HTML5 features, it’s definitely a question of “who’s on first”. I’ll attempt to make sense out of one aspect of HTML5, albeit a pretty significant one, that of Client Side Storage. In the [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>As of this writing there is a lot of noise around HTML5. Given the varying levels of browser support for the new HTML5 features, it’s definitely a question of “who’s on first”.</p>
<p>I’ll attempt to make sense out of one aspect of HTML5, albeit a pretty significant one, that of <strong>Client Side Storage</strong>. In the Resources Section at the end if this post, there is a link to a working version of the code examples contained herein.</p>
<p>So what does Client Side Storage mean? I thought cookies took care of that.</p>
<p>Cookies are of limited scope and should be used for their intended, specific purpose – they also get sent to the server with each request which is potentially “heavy” if the cookie mechanism is used for non-cookie purposes.</p>
<p>For confirmation, “Client Side Storage” means persisting data inside the browser. The following image provides a snapshot of the SQL database storage &#8211; in Chrome, select developer tools to access.</p>
<div id="attachment_316" class="wp-caption aligncenter" style="width: 644px">
	<a href="http://blog.submitmy.info/wp-content/uploads/2010/04/ChromeDevTools.jpg"><img class="size-full wp-image-316" title="HTML5 Client Side SQL Database" src="http://blog.submitmy.info/wp-content/uploads/2010/04/ChromeDevTools.jpg" alt="HTML5 Client Side SQL Database" width="644" height="321" /></a>
	<p class="wp-caption-text">HTML5 Client Side SQL Database</p>
</div>
<p>HTML5 has three options for persisting data in the browsers. A related item worth mentioning is the Application Cache. Therefore, items on the agenda for this blog are:</p>
<ol>
<li>Local Storage</li>
<li>Session Storage</li>
<li>Database Storage (SQL)</li>
<li>Application Cache</li>
</ol>
<h1>Local Storage</h1>
<p>This is a key value store designed to persist data, specific to a domain/port, until you delete it. Therefore, it survives browser shutdown. Given that the storage is domain-specific, if you persist some data with a key of “bogus”, it will save different entries for different domains.</p>
<p>NOTE: For both localStorage and sessionStorage, the key and value being must be a string.</p>
<p>Let&#8217;s look at some code:</p>
<pre>localStorage.setItem("bogus", "100");  // or localStorage.bogus=”100”;
var h = localStorage.getItem("bogus”);
delete localStorage.bogus;
</pre>
<h1>Session Storage</h1>
<p>Same as local storage, except it is attached to the browser session and goes away when the session ends. It is worth noting that a distinct session storage is available if you are in a new tab on the same page. The session storage will go away if you (1) Close the tab or (2) Close the browser.</p>
<pre>sessionStorage.setItem("bogus ", "100");
var h = sessionStorage.getItem("bogus”);
</pre>
<h1>Database Storage</h1>
<p>This is a SQLLite relational database implementation right in the browser. Again, it is attached to the domain. You may also hear this referred to as the Javascript database or web database – the key point is that it is a SQL database variant living inside the browser – really!</p>
<p>To <strong>better explain the structure of the code</strong>, the following introduces the relevant fragments from the W3C spec (<a href="http://dev.w3.org/html5/webdatabase/" target="_blank">http://dev.w3.org/html5/webdatabase/</a>). Actual code follows thereafter.</p>
<h2>Open/Create Database</h2>
<pre>interface WindowDatabase {
<span class="lindent1">Database openDatabase(</span>
<span class="lindent2">in DOMString name,</span>
<span class="lindent2">in DOMString version,</span>
<span class="lindent2">in DOMString displayName,</span>
<span class="lindent2">in unsigned long estimatedSize,</span>
<span class="lindent2">in optional DatabaseCallback creationCallback</span>
<span class="lindent1">);</span>
};

interface DatabaseCallback {
<span class="lindent1">void handleEvent(in Database database);</span>
};
</pre>
<p><strong>Sample Code:</strong></p>
<pre><span class="lindent1">var DB_NAME = "webdb_test";</span>
<span class="lindent1">var DB_VERSION = "1.0";</span>
<span class="lindent1">var DB_TITLE   = "Web DB Test";</span>
<span class="lindent1">var DB_BYTES   = 500000;</span>
<span class="lindent1">var db = window.openDatabase(DB_NAME, DB_VERSION, DB_TITLE, DB_BYTES);</span>
</pre>
<p><strong>Further investigation is warranted</strong>, particularly on the &#8220;db.changeVersion()&#8221; method since it provides a mechanism for DDL and data updates to the client side database &#8230; critical if you plan to provide ongoing updates, particularly structural changes.</p>
<h2>Statements and Queries</h2>
<p>To perform any statements or queries against the database, you need:</p>
<ul>
<li> Handle to the open database</li>
<li> Transaction Object</li>
<li> SQL Statement</li>
</ul>
<h3>Transaction Object</h3>
<p>The following fragments from the spec show the structure of the Transaction component.</p>
<pre>interface Database {
<span class="lindent1">void transaction(</span>
<span class="lindent2">in SQLTransactionCallback callback,</span>
<span class="lindent2">in optional SQLTransactionErrorCallback errorCallback,</span>
<span class="lindent2">in optional SQLVoidCallback successCallback);</span>

<span class="lindent1">void readTransaction(</span>
<span class="lindent2">in SQLTransactionCallback callback,</span>
<span class="lindent2">in optional SQLTransactionErrorCallback errorCallback,</span>
<span class="lindent2">in optional SQLVoidCallback successCallback);</span>
}

<span class="lindent1">interface SQLVoidCallback {</span>
<span class="lindent2">void handleEvent();</span>
<span class="lindent1">};</span>

<span class="lindent1">interface SQLTransactionErrorCallback {</span>
<span class="lindent2">void handleEvent(in SQLError error);</span>
<span class="lindent1">}</span>
</pre>
<p><strong>Sample Code for Transaction and SQL Statements</strong></p>
<pre>function createTables(db) {

<span class="lindent1">db.transaction( function(tx) {</span>
<span class="lindent2">var queryParams = [];</span>
<span class="lindent2">tx.executeSql(</span>
<span class="lindent3">"CREATE TABLE IF NOT EXISTS webdocs
<span class="lindent4">(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, docname VARCHAR(20));",</span>
<span class="lindent3">queryParams,</span>
<span class="lindent3">[],</span>
<span class="lindent3">sqlError</span>
<span class="lindent2">);</span>
<span class="lindent1">}, txError);</span>

}

function createRow(db, docname) {

<span class="lindent1">db.transaction( function(tx) { </span>

<span class="lindent2">tx.executeSql("INSERT INTO webdocs (docname) VALUES (?);", [  docname ],</span>
<span class="lindent3">function(tx, results) {</span>
<span class="lindent4">var docid     = results.insertId;</span>
<span class="lindent4">var docsAdded = results.rowsAffected;</span>
<span class="lindent4">alert ("docid added: " + docid);</span>
<span class="lindent3">},</span>
<span class="lindent3">sqlError</span>
<span class="lindent2">);</span>
<span class="lindent1">}, txError);</span>
}
</pre>
<p>The above provides an example of the database transaction and SQL statement. Following is elaboration on the SQL Statement W3C spec.</p>
<h3>SQL Statement</h3>
<pre>interface SQLTransaction {

<span class="lindent1">void executeSql(</span>
<span class="lindent2">in DOMString sqlStatement, </span>
<span class="lindent2">in optional ObjectArray arguments, </span>
<span class="lindent2">in optional SQLStatementCallback callback, </span>
<span class="lindent2">in optional SQLStatementErrorCallback errorCallback);</span>
};

interface SQLStatementCallback {
<span class="lindent1">void handleEvent(in SQLTransaction transaction, </span>
<span class="lindent2">in SQLResultSet resultSet);</span>
};

interface SQLStatementErrorCallback {
<span class="lindent1">boolean handleEvent(in SQLTransaction transaction, </span>
<span class="lindent2">in SQLError error);</span>
};
</pre>
<p><strong>Processing Result Sets</strong></p>
<pre>interface SQLResultSet {
<span class="lindent1">readonly attribute long insertId;</span>
<span class="lindent1">readonly attribute long rowsAffected;</span>
<span class="lindent1">readonly attribute SQLResultSetRowList rows;</span>
};

interface SQLResultSetRowList {
<span class="lindent1">readonly attribute unsigned long length;</span>
<span class="lindent1">getter any item(in unsigned long index);</span>
};
</pre>
<h2>Application Cache</h2>
<p>This is not the same as “browser cache”. The App Cache facilitates the download and persistence of those “web files” (JS, CSS, HTML, JPG etc.) required to run an app in the browser. Why is this significant?</p>
<ul>
<li>So you can control which files (CSS, JS, HTML, JPG etc.) really stay in the browser and not be subject to “clear cache” by the user.</li>
<li>Faster startup each time you use the app, since the core aforementioned files can remain there for as long as you specify.</li>
<li>This feature is particularly significant for phone apps – it enables the installation of a browser-based, non-compiled web application on a mobile phone. In this scenario, you have a webapp without needing to write Java, Objective-C and the like for the client-side.</li>
<li>Provides the ability to run and browse “disconnected” from the network since enough of the files are local, allowing you to potentially continue offline.</li>
</ul>
<p>The code artifact of interest here is:</p>
<pre>&lt;html manifest="myAppCache.manifest"&gt;
</pre>
<p>The myAppCache.manifest file contains a list of files to be placed in the App Cache.</p>
<h1>Resources</h1>
<p>Putting it all together &#8211; <a href="http://blog.submitmy.info/localdb.zip" target="_blank">access fully functional code sample here</a></p>
<p><a href="http://dev.w3.org/html5/webdatabase/" target="_blank">http://dev.w3.org/html5/webdatabase/</a></p>
<p><a href="http://dev.w3.org/html5/webdatabase/" target="_blank">http://dev.w3.org/html5/webstorage/</a></p>
<p><a href="http://developer.apple.com/safari/library/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/UsingtheJavascriptDatabase/UsingtheJavascriptDatabase.html#//apple_ref/doc/uid/TP40007256-CH3-XSW1" target="_blank">http://developer.apple.com/safari/library/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/UsingtheJavascriptDatabase/UsingtheJavascriptDatabase.html#//apple_ref/doc/uid/TP40007256-CH3-XSW1</a></p>
<img src="http://feeds.feedburner.com/~r/submitmy/nQxn/~4/9Q5-F7TB5w0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.submitmy.info/2010/04/html5-client-side-storage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.submitmy.info/2010/04/html5-client-side-storage/</feedburner:origLink></item>
		<item>
		<title>Cocktails</title>
		<link>http://feedproxy.google.com/~r/submitmy/nQxn/~3/4tY9G1GcQsk/</link>
		<comments>http://blog.submitmy.info/2010/04/cocktails/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 03:05:47 +0000</pubDate>
		<dc:creator>Paul Heath</dc:creator>
				<category><![CDATA[Food & Cocktails]]></category>
		<category><![CDATA[cadillac margarita]]></category>
		<category><![CDATA[mango martini]]></category>
		<category><![CDATA[margarita]]></category>
		<category><![CDATA[summer cocktail]]></category>
		<category><![CDATA[top shelf margarita]]></category>

		<guid isPermaLink="false">http://blog.submitmy.info/?p=324</guid>
		<description><![CDATA[I have to thank my good friend Erik Christenson of WIN Home Inspection Bellevue fame for his encyclopedic knowledge of mixology &#8211; I have picked up more than a few tips from him along the way &#8230; following are some favorites: Chef Pablo&#8217;s Classic Margarita Per Serving: 2oz Silver Tequila 1oz Triple Sec 1oz Freshly [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I have to thank my good friend Erik Christenson of <a title="Erik Christenson Home Inspections" href="http://www.wini.com/bellevue" target="_blank">WIN Home Inspection Bellevue</a> fame for his encyclopedic knowledge of mixology &#8211; I have picked up more than a few tips from him along the way &#8230; following are some favorites:</p>
<h1>Chef Pablo&#8217;s Classic Margarita</h1>
<p>Per Serving:</p>
<pre>2oz Silver Tequila
1oz Triple Sec
1oz Freshly Squeezed Lime Juice
1/2oz Freshly Squeezed Orange Juice (or just regular OJ)
</pre>
<p>Rim the glasses with Salt (HINT: Use Kosher salt from grocery store, not margarita salt)</p>
<p><a href="http://blog.submitmy.info/wp-content/uploads/2010/04/lime_3.jpg"><img class="size-full wp-image-348  alignright" title="Margarita Limes" src="http://blog.submitmy.info/wp-content/uploads/2010/04/lime_3.jpg" alt="Margarita Limes" width="180" height="142" /></a></p>
<p>Mix liquids with ice in a shaker &#8230; shake like there&#8217;s no tomorrow<br />
Pour margarita and ice into glass<br />
<strong>Drizzle with Grand Marnier</strong></p>
<p><em>For more kick, <a title="Jalapeno-Infused Tequila" href="http://blog.submitmy.info/2010/03/jalapeno-infused-tequila/" target="_self">infuse the Tequila with Jalapenos</a>.<br />
</em></p>
<h1>Mango Martini</h1>
<p>Per Serving:</p>
<pre>2oz Vodka (Absolut)
2oz Mango Juice (40% mango juice drink if you're not juicing)
1oz Freshly Squeezed Lime Juice
</pre>
<p>Mix with ice in a shaker &#8230; shake like there&#8217;s no tomorrow<a href="http://blog.submitmy.info/wp-content/uploads/2010/04/Mango.jpg"><img class="alignright size-medium wp-image-351" title="Mango Martini" src="http://blog.submitmy.info/wp-content/uploads/2010/04/Mango-224x300.jpg" alt="Mango Martini" width="134" height="180" /></a><br />
Strain into Martini Glass<br />
Garnish with Mint (Optional)</p>
<p>Really good summer cocktail</p>
<img src="http://feeds.feedburner.com/~r/submitmy/nQxn/~4/4tY9G1GcQsk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.submitmy.info/2010/04/cocktails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.submitmy.info/2010/04/cocktails/</feedburner:origLink></item>
		<item>
		<title>The executive’s guide to software product innovation</title>
		<link>http://feedproxy.google.com/~r/submitmy/nQxn/~3/VKZQvO1LxUE/</link>
		<comments>http://blog.submitmy.info/2010/04/executive-guide-to-software-product-innovation/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 07:00:04 +0000</pubDate>
		<dc:creator>Paul Heath</dc:creator>
				<category><![CDATA[Small Biz/Entrepreneur]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.submitmy.info/?p=225</guid>
		<description><![CDATA[There are plenty of good ideas in the world, there is an abundance of IQ, and good talent is now available on a global scale. So why is successful innovation so elusive for so many? Let’s start with one of my favorite quotes: “Talent is cheap, execution is the expensive part”. We’re often hear that [...]]]></description>
			<content:encoded><![CDATA[<p></p><div class="crestock-img" style="margin: 1em; display: block;">
<div>
<dl class="wp-caption alignright" style="width: 141px;">
<dt class="wp-caption-dt"><img class=" " title="execution is expensive" src="/wp-content/uploads/crestockimages/446971-ms.jpg" alt="execution is expensive" width="131" height="240" /></dt>
</dl>
</div>
</div>
<p>There are plenty of good ideas in the world, there is an abundance of IQ, and good talent is now available on a global scale.</p>
<p>So why is successful innovation so elusive for so many?</p>
<p>Let’s start with one of my favorite quotes: “<strong>Talent is cheap, execution is the expensive part</strong>”.</p>
<p>We’re often hear that “hiring talent” is what to focus on. That certainly has merit, but I think a better mindset is “let’s go get some execution”. There’s no point having the smartest people in the world, with the biggest/baddest degrees, working on things that aren’t going anywhere. What is “execution”? Spending time working on the right things at the right time and delivering something of great value to your customers and your business, in an optimal time-frame.</p>
<p>A key point here is “adding great value to your customers” – without that, not much else matters.</p>
<h1>Up through the floor boards</h1>
<p>Software product innovation is truly becoming a ground-up proposition – it does, and must come through the floorboards of a company, not just from the executive conference room. The tools and platforms to build, run and iterate the creations, are now readily accessible and either free or really inexpensive. Developers don’t have any real barriers to innovation – they can just go do. Long gone are the days of “I need a server” or “I need a software license” which of course 99% of developers could not sell to upper management. Today, without permission, developers can go do … a lot. Since bureaucracy will always exist, and boy do they hate it, a developer can now quietly take the position “get the hell out of my way, I’ll just go build it”. Problem is, they might keep it and say bye-bye.</p>
<div class="crestock-img crestock-action-dragged" style="margin: 1em; display: block;">
<div>
<dl class="wp-caption alignright" style="width: 167px;">
<dt class="wp-caption-dt"><img class=" " title="Up through the floorboards" src="/wp-content/uploads/crestockimages/549490-ms.jpg" alt="Up through the floorboards" width="157" height="240" /></dt>
<dd class="wp-caption-dd crestock-img-attribution" style="font-size: 0.8em;"><a href="http://www.crestock.com">Crestock Stock Photography</a></dd>
</dl>
</div>
</div>
<p>The other reality is that the user is in control and good developers, SEO’s, product and customer-facing people have the real pulse of the user and the ecosystem in which they operate. They (should) understand their challenges and issues intimately. Wow – what a great set of resources to tap into.</p>
<p>As a busy executive running your group, blocking and tackling, how do you leverage all of this “execution” either already happening or pent-up in your organization?</p>
<h1>New mind-set</h1>
<p>Some &#8220;re-programming&#8221; is needed. Most executives don’t get to that level by accident – let’s just say you do you have some real skills, they are valuable, you get paid well. Naturally, one could assume, given the elevated status, that you’re smarter and more valuable than most in your org. That could even be true.</p>
<p>But we’re talking about innovation here – something new – the next thing – seeing around corners &#8211; not the status quo. Someone recently asked me to justify, with a case study, an opinion I had on a particular subject. This is precisely the problem – there are no case studies or directions on how to create great new stuff. Thought and execution leadership requires insight and courage.</p>
<p>Let’s start with insight – you could be an industry leader, know your business inside and out, highly respected in your field and have no clue how to create the next shiny new, game–changing object. It is more probable something will evolve out of left field, and side-swipe your business. Damn, now you’re in catch-up mode, and not looking so smart anymore.</p>
<p>How do you avoid this? You need a broader perspective of what’s happening in the world, and an ability to “connect the dots” – as an exec, you really should be able to connect the dots, with enough intel. In today’s world it is virtually impossible to keep up with all potential threats and opportunities, without having an army on your side, scouring and interpreting the landscape.</p>
<h1>Meet your new army</h1>
<p>Better yet let’s call them your new “business partners” – your developers, analysts, product managers, SEO’s, creatives, customer service people, social media people, truck drivers &#8211; don&#8217;t discount any group or level. Remember you are connecting dots, not necessarily getting a packaged solution from any one individual.</p>
<p>You don’t even have to give them any assignments to “go dig” and find me some good ideas. They already have them, are thinking about them, and may even be working on them.</p>
<p>They each have their own unique perspectives on the business, the industry, the customers, the future, the world, and how new products affect their personal and business lives. This is your goldmine. This is your mesh network. Hopefully, you have created a positive, respectful work environment so they will at least open up to you.</p>
<h1>“But, I don’t have …”</h1>
<p>… the time, the budget, buy-in, the bandwidth, yada yada. But I imagine you do like and want to keep your job.</p>
<p>So, let’s address the WIFM (What’s In It For Me). By “Me”, I’m talking about your new army. Why should they spill the beans and make you look good? Because it’s their job. Actually, no. Unless they are in charge of innovation, they are doing the job you hired them to do. OK, if they won’t help me innovate, I’m going to fire their ass. Well, that’s a really dumb idea.</p>
<h1>Incentives and Aligning Interests</h1>
<p>OK, I’ll give it a shot – now what? The incentive system and aligning interests. Find out what they want, and find a way to give it to them, in return for their ideas AND execution. Unless you’re dealing with a hard-core mercenary, it may just be that cool conference in NYC they want to go to. Might be as simple as recognition – name and glowing article in the company newsletter. If you need to pay-up, it might even be worth it for the right execution. Setup an &#8220;Innovation Program&#8221; as in &#8220;Who wants to be the company&#8217;s next star?&#8221;</p>
<p>HOWEVER &#8230; screw anyone and the game is up. No more ideas, employees leave, you’re back to square one. Have the courage to follow-through and make it happen. That is YOUR job.</p>
<p>If you really want to innovate, tap into your existing gold mine and make it worth their while, become their business partner. Think of it as an investment – you are the VC or Angel inside your company. Moving towards this mindset will unlock the floodgates of ideas, and “pocket projects” already underway, from the people already working “for you”.</p>
<img src="http://feeds.feedburner.com/~r/submitmy/nQxn/~4/VKZQvO1LxUE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.submitmy.info/2010/04/executive-guide-to-software-product-innovation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.submitmy.info/2010/04/executive-guide-to-software-product-innovation/</feedburner:origLink></item>
		<item>
		<title>Why do people fumble at Subway?</title>
		<link>http://feedproxy.google.com/~r/submitmy/nQxn/~3/bTZua7l99Ho/</link>
		<comments>http://blog.submitmy.info/2010/03/why-do-people-fumble-at-subway/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 19:59:14 +0000</pubDate>
		<dc:creator>Paul Heath</dc:creator>
				<category><![CDATA[Food & Cocktails]]></category>
		<category><![CDATA[Funnies]]></category>
		<category><![CDATA[Subway Sandwich]]></category>

		<guid isPermaLink="false">http://blog.submitmy.info/?p=415</guid>
		<description><![CDATA[EVERY SINGLE TIME I visit Subway, I see someone turn into a big pile of uncertain mess when ”the pressure is finally on” to order their sandwich … despite my impatience, I find the spectacle somewhat amusing. Doesn’t really matter what they look like (Suit, Overalls, Male, Female, Just got back from the gym …) [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><strong>EVERY SINGLE TIME I visit Subway</strong>, I see someone turn into a big pile of uncertain mess when ”<em>the pressure is finally on</em>” to order their sandwich … despite my impatience, I find the spectacle somewhat amusing.</p>
<p>Doesn’t really matter what they look like (Suit, Overalls, Male, Female, Just got back from the gym …) or how old they are, I‘ve seen almost every type do it.</p>
<p>Having stood in line for 3-5 minutes, waiting your turn, with nothing else to do, you’d think it would be a no-brainer to “know what you want” when the time came – oh nooooo.</p>
<p>Not only do we have the whole “<em>can’t make up my mind</em>”, “<em>uuuuhh like yeaaaah uuuuuh</em> &#8230; <em>oh wait &#8230; uuuuuh</em>” we get all the gestures that go with it … head scratching, ear pulling, face rubbing, hair tossing, leaning forward, peering at the menu … and then the ultimate … changing of minds after finally placing the order. Unbelievable.</p>
<p><strong>I’D LIKE TO MAKE A SUGGESTION</strong></p>
<p>Figure out what you want while in line, and then step up and “<em>make a play</em>” by confidently and succinctly placing your order … let me demonstrate:</p>
<p><em><strong>“SIX INCH TURKEY ON WHEAT WITH CHEDDAR CHEESE”.</strong></em></p>
<p>It has become my mission at Subway, to provide the crisp one-liner of an order so that the sandwich-maker can get on with their job and not have to suffer through the ramblings of someone probably high on Starbucks.</p>
<p>But that’s just me …</p>
<img src="http://feeds.feedburner.com/~r/submitmy/nQxn/~4/bTZua7l99Ho" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.submitmy.info/2010/03/why-do-people-fumble-at-subway/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.submitmy.info/2010/03/why-do-people-fumble-at-subway/</feedburner:origLink></item>
		<item>
		<title>The Perfect Butt? Just Say NO to Low and Slow</title>
		<link>http://feedproxy.google.com/~r/submitmy/nQxn/~3/esSf17ZFxP4/</link>
		<comments>http://blog.submitmy.info/2010/03/the-perfect-butt/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 07:02:40 +0000</pubDate>
		<dc:creator>Paul Heath</dc:creator>
				<category><![CDATA[Food & Cocktails]]></category>

		<guid isPermaLink="false">http://blog.submitmy.info/?p=221</guid>
		<description><![CDATA[Of course I&#8217;m talking about Boston Butt, you know, the pork shoulder &#8211; boneless. We had some foodie friends over last weekend &#8211; all four of them are seriously good cooks, so I had to bring my &#8220;A&#8221; game. My smoked butts (2 of them) turned out well enough I&#8217;m going to share the techniques. [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Of course I&#8217;m talking about Boston Butt, you know, the pork shoulder &#8211; boneless.</p>
<p>We had some foodie friends over last weekend &#8211; all four of them are seriously good cooks, so I had to bring my &#8220;A&#8221; game. My smoked butts (2 of them) turned out well enough I&#8217;m going to share the techniques. Yes, 2 butts, 2 techniques &#8211; I always experiment!</p>
<p>You&#8217;ll often hear &#8220;low and slow&#8221; is the way to cook BBQ &#8211; there are many pros who say this just isn&#8217;t necessary. My (limited) experience confirms this. If you&#8217;re impatient like me, you don&#8217;t have all day to wait for meat cooking at 225F. In addition, the longer it&#8217;s in, the more chance it will dry up.</p>
<h1>Butt Purchase</h1>
<p>Go down to &#8220;Cash and Carry&#8221; if you have one nearby and buy a package of boneless Boston Butt. It might come in a 15-20lb bag, but don&#8217;t worry, it&#8217;s super cheap. If you can&#8217;t find that, just buy a 5-7 pounder at your local grocery store. Failing that, go to an Asian Market (e.g. Umajimaya). If they don&#8217;t have any out, ask the butcher, make it happen!</p>
<div>
<dl id="attachment_232" class="wp-caption alignright" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://blog.submitmy.info/wp-content/uploads/2010/03/buttandrub.jpg"><img class="size-full wp-image-232" title="Boston Butt and Butt Rub" src="http://blog.submitmy.info/wp-content/uploads/2010/03/buttandrub.jpg" alt="Boston Butt and Butt Rub" width="300" height="147" /></a></dt>
<dd class="wp-caption-dd">Boston Butt and Butt Rub</dd>
</dl>
</div>
<p>As for portions, you&#8217;ll want at least 8oz/person, but consider the butt will shrink by approx 20% during cooking. Always make way too much &#8211; LEFT OVERS!</p>
<h1>Butt Preparation</h1>
<p>If you have a really big piece, e.g. 8-10 pounds, you probably want to butterfly it or just cut in in half. Why? more surface area to rub and smoke, easier to fit in the smoker, faster to cook. Also, 2 pieces = 2 potential preparations.</p>
<p>Wash the butt(s) down with cold water and dry with paper towels</p>
<p>Find a big sheet pan and ready it to the side.</p>
<p>Liberally sprinkle Butt Rub all over the meat &#8211; all sides and press it in into the meat. This whole thing should take 60 seconds or so. No massages needed!</p>
<p>Place the rubbed butt(s) on the sheet pan , cover with plastic wrap and put in the fridge for 2 hours (garage fridge is best). I live with a vegetarian &#8211; strong preference for meat aromas elsewhere!</p>
<h1>Prep the Smoker</h1>
<p>Following assumes a gas or electric powered smoker (I have gas-powered)</p>
<p>Remove meat from fridge</p>
<p>Grab a few handfuls of Hickory Chunks and place in a water bath for 20mins or so.</p>
<p>Get your smoker ready, water bath filled etc.</p>
<p>Wrap the hickory chunks in double layer of aluminum foil &#8211; no need to poke holes in the foil, the smoke will find its way out. Place chunks in smoke basket in smoker</p>
<p>Crank the smoker up to 400F or so to get some smoke going. This could take 15-20mins</p>
<h1>Butt Load</h1>
<p>When you&#8217;re getting a hint of smoke, put your butt(s) in the smoker and adjust the temperature to hold steady at around 300F. You want to keep it at this temperature the whole time. Don&#8217;t worry in the beginning if the temp. bounces around a little &#8211; just get it to 300F soon enough and all will be OK. No Stressing Allowed &#8211; now is a good time to pop a Brewsky.</p>
<p>In the meantime, prep 2-3 more foil wrapped chunks of hickory for later use. Each chunk will smoke for about 20mins (in mine anyway). As such, I typically do about 3-4 wood chunk replacements during cooking.</p>
<p>NOTE: The meat only needs smoke for around 2 hours &#8211; after that, there&#8217;s limited, if any value-add with more smoke.</p>
<p>TIP: if you&#8217;re using a smoker with a water bath, ensure you keep an eye on the water level. If your smoker temperature starts to rise, it probably means you need more water to moderate the temp. Also, make sure your wood is not on fire &#8211; it it is, change it out.</p>
<p>So &#8230; 2-2.5 hours have passed, you&#8217;ve maintained approx 300F, and you&#8217;ve replaced the wood chunks a few times to maintain a decent amount of smoke over that time. Now what ?</p>
<h1>A Tale of 2 Butts</h1>
<p>So what I did was &#8230; leave 1 butt in the smoker and placed a thermometer in the thickest part of meat. It read around 160F &#8211; it is staying in until the temp reaches 195F.</p>
<p>As for butt #2, I had already heated my grill to 300F and placed a large pan and turkey rack inside it. Inside the pan, I put some water, again to moderate the temp.</p>
<p>I then double wrapped butt #2 in aluminum foil, but poured around 1/4 cup of sprite inside and placed a  thermometer into the meat prior to closing up the foil. Wrap the foil tightly around the thermometer probe, to maintain a good seal around the meat.</p>
<div>
<dl id="attachment_236" class="wp-caption alignright" style="width: 266px;">
<dt class="wp-caption-dt"><a href="http://blog.submitmy.info/wp-content/uploads/2010/03/HummerPosing.jpg"><img class="size-full wp-image-236" title="Hummingbird watching me smoke some butt" src="http://blog.submitmy.info/wp-content/uploads/2010/03/HummerPosing.jpg" alt="Hummingbird watching me smoke some butt" width="256" height="192" /></a></dt>
<dd class="wp-caption-dd">Hummingbird watching me smoke some butt</dd>
</dl>
</div>
<p>The foiled up butt was then placed on the turkey rack inside the grill and lid closed. Good time to crack open another beer. Watch the hummingbirds and boats come and go, and keep an eye on your meat temps.</p>
<p>Both of the butts will take another 1-2 hours in their current state to reach the desired internal temps.</p>
<p>At this point, just maintain a good 300F in your smoker and grill. When the meat thermometers reach the appointed temps, take them out.</p>
<h1>Butt Removal</h1>
<p>So why is one at 200F and foil wrapped and the other at 195F and not wrapped? Good question</p>
<p>The 200F in foil will be shredded and served as pork carnitas. The added moisture (sprite) and added temp (200F) leave the meat in a state where you can easily pull it apart and shred it.</p>
<p>The 195F in the smoker will be sliced and served as-is. Different texture, more smoke.</p>
<h1>Butt Sitting</h1>
<p>Your butts have worked hard &#8211; time to let them rest.</p>
<p>Butt #1 from the smoker needs to be double wrapped in foil &#8211; add some sprite before closing it up. Now you have 2 foil wrapped butts. Put each of them into their own brown paper grocery bag &#8211; fold up the top and clip with clothes pegs. What the hell? Yes, you are now creating a steam room for your butts to rest, stay warm and moist. You can leave them like this for up to 2 hours (min 30 mins), and then serve.</p>
<div>
<dl id="attachment_233" class="wp-caption alignright" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://blog.submitmy.info/wp-content/uploads/2010/03/butt195.jpg"><img class="size-medium wp-image-233" title="Smoked to 195F" src="http://blog.submitmy.info/wp-content/uploads/2010/03/butt195-300x180.jpg" alt="Smoked to 195F" width="300" height="180" /></a></dt>
<dd class="wp-caption-dd">Smoked to 195F</dd>
</dl>
</div>
<div>
<dl id="attachment_234" class="wp-caption alignright" style="width: 310px;">
<dt class="wp-caption-dt"><a href="http://blog.submitmy.info/wp-content/uploads/2010/03/butt200.jpg"><img class="size-medium wp-image-234" title="Smoked, Foiled, 300F Until 200F" src="http://blog.submitmy.info/wp-content/uploads/2010/03/butt200-300x168.jpg" alt="Smoked, Foiled, 300F Until 200F" width="300" height="168" /></a></dt>
<dd class="wp-caption-dd">Smoked, Foiled, 300F Until 200F</dd>
</dl>
</div>
<img src="http://feeds.feedburner.com/~r/submitmy/nQxn/~4/esSf17ZFxP4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.submitmy.info/2010/03/the-perfect-butt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.submitmy.info/2010/03/the-perfect-butt/</feedburner:origLink></item>
		<item>
		<title>Add Click-to-call to your blog for 3c/minute</title>
		<link>http://feedproxy.google.com/~r/submitmy/nQxn/~3/RTUHbRv-XeM/</link>
		<comments>http://blog.submitmy.info/2010/03/click-to-call-twilio/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 07:15:41 +0000</pubDate>
		<dc:creator>Paul Heath</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.submitmy.info/?p=210</guid>
		<description><![CDATA[This is a great service from Twilio.com &#8211; they do an excellent job of making this a relatively easy integration task for the functionality you&#8217;re getting. If you want more sophistication, you can write some code to develop custom call center apps. Sample Scenario A prospect or customer comes to your blog/site and wants someone [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>This is a great service from Twilio.com &#8211; they do an excellent job of making this a relatively easy integration task for the functionality you&#8217;re getting. If you want more sophistication, you can write some code to develop custom call center apps.</p>
<p><strong>Sample Scenario</strong></p>
<p>A prospect or customer comes to your blog/site and wants someone to call them ASAP (known as &#8220;click to call&#8221;). The Twilio plugin can be placed on your site, which lets the user enter their phone number.</p>
<div class="crestock-img crestock-action-dragged" style="margin: 1em; display: block;">
<div>
<dl class="wp-caption alignright" style="width: 250px;">
<dt class="wp-caption-dt"><img class=" " title="The Phone - Its For You!" src="/wp-content/uploads/crestockimages/1608268-ms.jpg" alt="The Phone - Its For You!" width="240" height="170" /></dt>
<dd class="wp-caption-dd crestock-img-attribution" style="font-size: 0.8em;"></dd>
</dl>
</div>
</div>
<p>Twilio will then attempt to locate you (the service provider) &#8211; when that connection has been made and you are on the line,  Twilio then calls the customer and connects you, guaranteeing  the customer a live person. All calls and click-to-call requests are logged and the calls can be recorded (for an additional fee).</p>
<p>Additional benefits are:</p>
<ul>
<li>You are not required you to put your phone number on the web.</li>
<li>You will know that someone is calling via your blog or site, which means you could create a separate ring tone for &#8220;blog or website calls&#8221;, since those are coming via Twilio.</li>
<li>Cost is 3c/minute, no setup and no commitments.</li>
</ul>
<p>To get started, download the <a title="Twilio.com WordPress Plugin" href="http://wordpress.org/extend/plugins/wp-click2call/" target="_blank">Twilio WordPress plugin</a>.</p>
<img src="http://feeds.feedburner.com/~r/submitmy/nQxn/~4/RTUHbRv-XeM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.submitmy.info/2010/03/click-to-call-twilio/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.submitmy.info/2010/03/click-to-call-twilio/</feedburner:origLink></item>
		<item>
		<title>Thesis WordPress Theme and custom_functions.php</title>
		<link>http://feedproxy.google.com/~r/submitmy/nQxn/~3/ROcTFQl_iX4/</link>
		<comments>http://blog.submitmy.info/2010/03/thesis-wordpress-custom_functions-php/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 07:26:35 +0000</pubDate>
		<dc:creator>Paul Heath</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.submitmy.info/?p=216</guid>
		<description><![CDATA[If you ever try to edit this and make a mistake, your site is down! Yes &#8211; pretty drastic and even if you correct the mistake in the editor, it retains the invalid code (out of view) &#8211; nice! So, no matter what you do in the editor, from this point forward, it always says [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>If you ever try to edit this and make a mistake, <strong>your site is down</strong>!</p>
<p>Yes &#8211; pretty drastic and even if you correct the mistake in the editor, it retains the invalid code (out of view) &#8211; nice! So, no matter what you do in the editor, from this point forward, it always says invalid syntax &#8211; which of course will drive you nuts until you read the next sentence.</p>
<p>So, how to fix it? You have to upload a <strong>new custom_functions.php </strong>into the:</p>
<p><strong>/wp-content/themes/thesis_16/custom/</strong> directory, using FileZilla or your domain control panel.</p>
<p>If you don&#8217;t have a backup, you could either just upload an empty file, or keep making edits and uploading until it works again.</p>
<img src="http://feeds.feedburner.com/~r/submitmy/nQxn/~4/ROcTFQl_iX4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.submitmy.info/2010/03/thesis-wordpress-custom_functions-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.submitmy.info/2010/03/thesis-wordpress-custom_functions-php/</feedburner:origLink></item>
		<item>
		<title>Social Computing Guidelines</title>
		<link>http://feedproxy.google.com/~r/submitmy/nQxn/~3/RvKBCGQZeo4/</link>
		<comments>http://blog.submitmy.info/2010/03/social-computing-guidelines/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 16:22:22 +0000</pubDate>
		<dc:creator>Paul Heath</dc:creator>
				<category><![CDATA[Inbound Marketing]]></category>
		<category><![CDATA[Small Biz/Entrepreneur]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blog.submitmy.info/?p=201</guid>
		<description><![CDATA[Following is a link to IBM&#8217;s social computing guidelines along with an easier to follow video. Much of it is common sense, but as a policy, and a business owner, it is wise to spell it all out and have each employee read and signoff on their understanding of the same. Of particular note is [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Following is a link to <a title="IBM Social Computing Guidelines" href="http://www.ibm.com/blogs/zz/en/guidelines.html" target="_blank">IBM&#8217;s social computing guidelines</a> along with an easier to follow video.</p>
<p>Much of it is common sense, but as a policy, and a business owner, it is wise to spell it all out and have each employee read and signoff on their understanding of the same.</p>
<div class="crestock-img crestock-action-dragged" style="margin: 1em; display: block;">
<div>
<dl class="wp-caption alignright" style="width: 214px;">
<dt class="wp-caption-dt"><img class=" " title="Person a puppet holding in a hand a small cott..." src="/wp-content/uploads/crestockimages/819911-ms.jpg" alt="Person a puppet holding in a hand a small cott..." width="204" height="240" /></dt>
<dd class="wp-caption-dd crestock-img-attribution" style="font-size: 0.8em;"></dd>
</dl>
</div>
</div>
<p>Of particular note is for employees who have personal and business blog/twitter accounts, and are known for both, to put a disclaimer on the personal accounts that their views are theirs alone, and not necessarily representative of company X.</p>
<p>Social computing is too valuable not to use and represents an excellent opportunity to <a title="Social Media Engagement and Discoverability" href="http://blog.submitmy.info/2010/02/get-discovered/" target="_blank">engage with prospects, customers and fans</a> of your business. Go forth and blog, tweet, facebook and the like &#8211; just don&#8217;t forget some basic offline rules and operate with a big dose of common sense.</p>
<img src="http://feeds.feedburner.com/~r/submitmy/nQxn/~4/RvKBCGQZeo4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.submitmy.info/2010/03/social-computing-guidelines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.submitmy.info/2010/03/social-computing-guidelines/</feedburner:origLink></item>
		<item>
		<title>Affordable JVM Cloud Hosting</title>
		<link>http://feedproxy.google.com/~r/submitmy/nQxn/~3/bRMWvFqLNk0/</link>
		<comments>http://blog.submitmy.info/2010/03/affordable-jvm-cloud-hosting/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 06:57:26 +0000</pubDate>
		<dc:creator>Paul Heath</dc:creator>
				<category><![CDATA[Small Biz/Entrepreneur]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[cloud hosting]]></category>
		<category><![CDATA[cloud servers]]></category>
		<category><![CDATA[Rackspace]]></category>

		<guid isPermaLink="false">http://blog.submitmy.info/?p=187</guid>
		<description><![CDATA[The fact that Ruby on Rails (RoR) and PHP can run on shared hosting (e.g. BlueHost.com) for $7/mo with 12-month minimum,or for free at Joyent.com thanks to a Yahoo promo, it&#8217;s no wonder the adoption is so widespread in the dev community. However, thanks to Rackspace and their Linux-based cloud offering, a 512MB Cloud Server [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>The fact that Ruby on Rails (RoR) and PHP can run on shared hosting (e.g. BlueHost.com) for $7/mo with 12-month minimum,or for free at Joyent.com thanks to a Yahoo promo, it&#8217;s no wonder the adoption is so widespread in the dev community.</p>
<p>However, thanks to <a title="Rackspace Cloud Servers" href="http://www.rackspacecloud.com/cloud_hosting_products?id=497" target="_blank">Rackspace and their Linux-based cloud offering</a>, a 512MB Cloud Server is now available for $22/month, with no setup or minimums. Need it for 2 weeks? No problem &#8211; just pay for 2 weeks ($11).</p>
<p>This kind of setup is perfect for an early stage test environment or quick proof of concept. I have been a long time Rackspace customer in previous years &#8211; excellent service &#8211; glad to see they are being so competitive in the cloud space and helping the Java/JVM guys out!</p>
<img src="http://feeds.feedburner.com/~r/submitmy/nQxn/~4/bRMWvFqLNk0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.submitmy.info/2010/03/affordable-jvm-cloud-hosting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.submitmy.info/2010/03/affordable-jvm-cloud-hosting/</feedburner:origLink></item>
	</channel>
</rss>

