<?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>rob's blog &#187; www</title>
	<atom:link href="http://banagale.com/category/www/feed" rel="self" type="application/rss+xml" />
	<link>http://banagale.com</link>
	<description>because, it is better.</description>
	<lastBuildDate>Sat, 24 Jul 2010 18:40:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>View Source from Safari on iPad</title>
		<link>http://banagale.com/view-source-from-safari-on-ipad.htm</link>
		<comments>http://banagale.com/view-source-from-safari-on-ipad.htm#comments</comments>
		<pubDate>Fri, 09 Apr 2010 08:19:27 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[gadget]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[bookmarklet]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[view source]]></category>

		<guid isPermaLink="false">http://banagale.com/?p=476</guid>
		<description><![CDATA[I&#8217;ve been enjoying the iPad quite a bit.  This device is going to change everything.  I have lots of thoughts, one of which is that the iPad will be a high productivity device.  Feeding into that, here&#8217;s a quick way to view the html, css and javascript source code of a web page from Safari [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been enjoying the iPad quite a bit.  This device is going to change everything.  I have lots of thoughts, one of which is that the iPad will be a high productivity device.  Feeding into that, here&#8217;s a quick way to view the <em>html, css and javascript source </em>code of a web page from<em> Safari</em> on the iPad.</p>
<p>This guide is adapted from <a href="http://dustincaruso.com/javascript/view-source-on-iphone/">Dustin Caruso&#8217;s note</a> on viewing source in Safari for the iPhone.</p>
<p>1. Visit this page using Safari on your iPad.<span id="more-476"></span></p>
<p>2. Use your touch selection skills to copy the following line of javascript:<br />
<textarea cols="50" rows="8" name="description">javascript:var%20sourceWindow%20%3D%20window.open%28%27about%3Ablank%27%29%3B%20%0Avar%20newDoc%20%3D%20sourceWindow.document%3B%20%0AnewDoc.open%28%29%3B%20%0AnewDoc.write%28%27%3Chtml%3E%3Chead%3E%3Ctitle%3ESource%20of%20%27%20%2B%20document.location.href%20%2B%20%27%3C/title%3E%3C/head%3E%3Cbody%3E%3C/body%3E%3C/html%3E%27%29%3B%20%0AnewDoc.close%28%29%3B%20%0Avar%20pre%20%3D%20newDoc.body.appendChild%28newDoc.createElement%28%22pre%22%29%29%3B%20%0Apre.appendChild%28newDoc.createTextNode%28document.documentElement.innerHTML%29%29%3B</textarea><br />
3. Tap  + then Add Bookmark</p>
<p>4. The first text field is the Title field. Use the title, View Source.   Leave the second field (the Address Field) alone and hit save.</p>
<p>5. Tap the Bookmarks icon and then edit.  Find View Source in the list and tap the right arrow for the bookmark&#8217;s details.  Now tap the Address Field and hit the X icon to clear it. Tap and paste the javascript from the clipboard.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-478" title="Edit Bookmarklet safari ipad view source" src="http://banagale.com/blog/wp-content/uploads/2010/04/bookmark_edit.png" alt="" width="375" height="370" /></p>
<p>5. Tap the Bookmarks navigation item to save the changes.</p>
<p>Voila.  Go to any web page using Safari, tap the Bookmarks icon and hit View Source.  Safari will open a page of source code in plain text in a new window.</p>
<p><img class="aligncenter size-full wp-image-477" title="View Source in Safari on the iPad" src="http://banagale.com/blog/wp-content/uploads/2010/04/view_source.png" alt="" width="420" height="190" /></p>
<p><a href="http://www.twitter.com/jetsetter"><img class="alignnone" title="twitter banagale" src="http://www.banagale.com/blog/wp-content/uploads/2009/12/rob-twitter.png" alt="" width="214" height="80" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://banagale.com/view-source-from-safari-on-ipad.htm/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Display a Simple Loading Message and Animated Loading Gif Using JavaScript</title>
		<link>http://banagale.com/display-a-simple-loading-message-and-animated-loading-gif-using-javascript.htm</link>
		<comments>http://banagale.com/display-a-simple-loading-message-and-animated-loading-gif-using-javascript.htm#comments</comments>
		<pubDate>Wed, 20 May 2009 19:57:28 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[action cueing]]></category>
		<category><![CDATA[dynamic webpages]]></category>
		<category><![CDATA[visual feedback]]></category>

		<guid isPermaLink="false">http://banagale.com/?p=310</guid>
		<description><![CDATA[Some pages require an inordinate amount of time to load.  For most sites, this is a big problem.  Webmasters and SEO specialists know the value of a quick landing page load, because they know that netizens have short attention spans. Dynamically built webpages, (especially applications), require time to load and visual feedback that something is happening. [...]]]></description>
			<content:encoded><![CDATA[<p>Some pages require an inordinate amount of time to load.  For most sites, this is a big problem.  Webmasters and SEO specialists know the value of a quick landing page load, because they know that netizens have short attention spans.</p>
<p>Dynamically built webpages, (especially applications), require time to load and visual feedback that <em>something</em> is happening.  The most famous example is the gmail loading page:</p>
<p><img class="aligncenter size-full wp-image-312" title="Loading Message and Animated Gif Example Javascript" src="http://banagale.com/blog/wp-content/uploads/2009/05/loading_animated_gif_javascript1.jpg" alt="Loading Message and Animated Gif Example Javascript" width="480" height="243" /></p>
<p>Gmail uses a more sophisticated progress bar to represent the loading of the webpage.  I found <a href="http://yensdesign.com/2008/11/how-to-create-a-stylish-loading-bar-as-gmail-in-javascript/">an article on yensDesign</a> that gives some great advice on how to do this, if you want to get really fancy.</p>
<p>If you have a dynamically built page that you&#8217;d like to give a loading message to that doesn&#8217;t require a full progress bar, I recommend simply displaying a message and an animated gif.</p>
<p><strong>The Method</strong></p>
<p>The trick to accomplishing this is a small mix of JavaScript and CSS.  You don&#8217;t have to be using &lt;div&gt;&#8217;s to display your content, but you should.  My example uses &lt;div&gt;&#8217;s.<span id="more-310"></span></p>
<p>Let&#8217;s begin by assuming you have the majority of your page&#8217;s content within a series of nested DIV&#8217;s, where the outermost DIV is called &#8220;container.&#8221;</p>
<pre>
 &lt;div id="container"&gt;
    &lt;div id="heading"&gt;
       ...heading content...
     &lt;/div&gt;
     &lt;div id="body"&gt;
       ...body content...
     &lt;/div&gt;
  &lt;/div&gt;</pre>
<p>Normally, the dynamic content in your container would be rendered by the browser after it has downloaded and performed the main JavaScript routines.  What we want to do is hide the container when the page is first loaded and instead display a DIV that contains a waiting message and a little animated gif icon.</p>
<p>Begin by using the CSS <em>display </em>property to hide the container DIV like so:</p>
<pre>  &lt;div id="container" style="display:none"&gt;</pre>
<p>Next, you need to add a new DIV that contains your &#8220;Please Wait, loading&#8230;&#8221; message.  I chose to include an animated gif icon of a twirling circle, which I easily created using the <a href="http://www.ajaxload.info/">AjaxLoad.info</a>, a site created by <a href="http://www.kath.fr/">Catherine Roman</a>.   If you want to download my animated loading gif, you can <a href="http://banagale.com/portfolio/images/ajax-loader.gif">get it here</a>.</p>
<p>Here is an additional set of nested DIV&#8217;s that contain the loading content.  This should be placed outside the container DIV:</p>
<pre>      &lt;div id='siteLoader'&gt; 
        &lt;div id='siteDetailLoader'&gt; 
        &lt;img src='/path/to/your/animated/gif/loading.gif' border='0'&gt; 
        Please wait while the page loads...&lt;br /&gt; &lt;br /&gt; 
        &lt;/div&gt; 
      &lt;/div&gt; </pre>
<p>You&#8217;ll note that the display property is not set on siteLoader because it is visible by default.  This is what we want.  The trick now is to make the siteLoader DIV dissappear once the dynamic page content is done loading while simultaneously displaying the container DIV with the real page content.</p>
<p>This is handled using the global event handler <a href="http://javascript.about.com/library/blonload.htm">onLoad</a>.  There a few ways to make use of the onLoad event, I recommend including an external JavaScript file.  Do this by saving a new text file called actions.js in the same directory as the page you&#8217;re changing.  Just after your &lt;title&gt; tag on your document include this external JavaScript  file using:</p>
<p><span style="font-family: 'Courier New'; line-height: 18px; white-space: pre;">&lt;script src=&#8221;actions.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</span></p>
<p>Inside actions.js, you need to include a function based on window.onload as follows:</p>
<pre>window.onload = function() {
   document.getElementById("siteLoader").style.display = "none";
   document.getElementById("container").style.display = "block";
}</pre>
<p>What this is doing is saying to the browser, &#8220;as soon as you&#8217;re done loading the webpage, you should hide the &#8216;please wait&#8217; stuff and show the meat and potatos of my webpage.&#8221;</p>
<p>To view all of this in action, have a look at my recently <a href="http://www.banagale.com/portfolio">updated online portfolio</a> which of course, talks up what a great person I am. <img src='http://banagale.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   I hope this has been helpful, as always&#8211;please post your comments!</p>
<p>For further reading on busy indicators and the important visual feedback and attention cueing needed to be successful with the display of heavy dynamic webpages, have a look at the article series on SAP Design Guild by Gerd Waloszek called &#8220;<a href="http://www.sapdesignguild.org/community/design/busy_feedback_3.asp">Waiting at the Computer: Busy Indicators and System Feedback</a>.&#8221;   There is a wonderful table giving guidelines on the type of feedback that should be displayed based on user wait time.</p>
]]></content:encoded>
			<wfw:commentRss>http://banagale.com/display-a-simple-loading-message-and-animated-loading-gif-using-javascript.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Custom Styling the ShareThis Button Using CSS Without API Calls</title>
		<link>http://banagale.com/custom-styling-the-sharethis-button-using-css-without-api-calls.htm</link>
		<comments>http://banagale.com/custom-styling-the-sharethis-button-using-css-without-api-calls.htm#comments</comments>
		<pubDate>Wed, 06 May 2009 17:34:41 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[sharethis]]></category>

		<guid isPermaLink="false">http://banagale.com/?p=302</guid>
		<description><![CDATA[I was just doing a ShareThis icon for a client I&#8217;m working with and found that how to properly style the button is poorly documented.  In order to replace the whole icon and text, you are supposed to use the developer API. I only wanted to style the text, so I was hunting for some [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-303" style="float:right" title="ShareThis CSS Style Classes Button" src="http://banagale.com/blog/wp-content/uploads/2009/05/sharethis-logo.jpg" alt="ShareThis CSS Style Classes Button" width="150" height="150" /></p>
<p>I was just doing a ShareThis icon for a client I&#8217;m working with and found that how to properly style the button is poorly documented.  In order to replace the whole icon and text, you are <a href="http://support.sharethis.com/developers/developers-faq/stapi/62">supposed to use</a> the developer API.</p>
<p>I only wanted to style the text, so I was hunting for some CSS to style the text and could not find the right classes to call.  Some hunting turned up the following:<span id="more-302"></span></p>
<p><strong>.stbuttontext</strong> &#8211; This class will allow you to change the look of the text, ShareThis.  You can style it with any normal styling like color or font-family but text-decoration does not seem to work. :p</p>
<p><strong>.stico_default</strong> &#8211; This class allows you to style the icon itself.  An example on how to replace the ShareThis icon with your own site&#8217;s favicon <a href="http://www.webmonkey.com/tutorial/Share_Your_Site_With_ShareThis">webmonkey</a> is: </p>
<pre>{
	background: transparent url(http://www.banagale.com/favicon.ico) no-repeat scroll 0px 0px !important;
}</pre>
<p>I&#8217;m interested in any other css that can be used to style the ShareThis button without requiring API calls (if there are any).   if you know of additional classes, or this helped you please post a reply.</p>
<p><a href="http://www.twitter.com/jetsetter">Follow me on Twitter</a></p>
]]></content:encoded>
			<wfw:commentRss>http://banagale.com/custom-styling-the-sharethis-button-using-css-without-api-calls.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Contact Us Javascript Form Validation and Custom Fields in SalesForce</title>
		<link>http://banagale.com/contact-us-javascript-form-validation-and-custom-fields-in-salesforce.htm</link>
		<comments>http://banagale.com/contact-us-javascript-form-validation-and-custom-fields-in-salesforce.htm#comments</comments>
		<pubDate>Thu, 09 Apr 2009 03:56:13 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[salesforce]]></category>
		<category><![CDATA[sdk]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[crm]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[lead development]]></category>

		<guid isPermaLink="false">http://banagale.com/?p=268</guid>
		<description><![CDATA[The web Contact Us form serves as an important starting point for people interested in a product or service.  For a big company, handling inbound leads over the course of a long sales process requires a strong CRM.  SalesForce is a fully featured CRM plaform, however in my experience it has somehow ignored an important [...]]]></description>
			<content:encoded><![CDATA[<p>The web Contact Us form serves as an important starting point for people interested in a product or service.  For a big company, handling inbound leads over the course of a long sales process requires a strong CRM.  SalesForce is a fully featured CRM plaform, however in my experience it has somehow ignored an important source for sales leads: contact us forms on the company website.</p>
<p>Salesforce does not explain how its clients should go about crafting a quality Contact Us web page.</p>
<p><strong>What is a quality Contact Us web page?  </strong></p>
<p>Generally you’ll find the same type of fields on Contact Us pages across the web.  You are asked for your first and last name, job title, complete address and something specific about your query, like Where did you hear about us? Or What model Range Rover are you interested in?</p>
<p> What’s the use of having their name if you don’t have their phone number?  Usually, a company will want to set specific form fields to required. Checking whether a potential customer has filled out a required answer is called form validation.<span id="more-268"></span></p>
<p><strong>An Overview of Form Validation</strong></p>
<p>There are two ways to validate form data, client side and server side.  While doing both client and server side validation may be a <a href="http://wiki.answers.com/Q/Client_side_form_validation_vs_server_side_form_validation">best practice</a>, my experience is that only one method is chosen.</p>
<p>In general, Javascript is used to validate forms on the client side (in browser).  When a potential customer forgets to enter their phone number, javacript pops a small dialog box reminding them they screwed up.  The user fixes their error and tries submitting again.</p>
<p>Server side validation occurs when the potential customer submits a form and a new page loads, typically with a warning in red saying what information they forgot to enter.  The user then clicks back to return and complete the form.</p>
<p><strong>Limitations of Data Validation on Salesforce Powered Contact Us Forms</strong></p>
<p>Salesforce does not allow server-side data verification.  My understanding is that all users of Salesforce submit form data to the same encrypted URL: https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8</p>
<p>A unique customer ID accompanies all data posted to Salesforce which routes it into your personal silo of the great CRM cloud in the sky.  Since you don’t control this servlet page on salesforce.com, you can’t do anything once the form is submitted.</p>
<p>This means that a client side check, using javascript, is your only real alternative for validating forms used to feed data into Salesforce.</p>
<p><strong>Implementation</strong></p>
<p>There are many examples on the web of how perform simple form validation with Javascript.  If you want to get really fancy, here’s<a href="http://banagale.com/blog/wp-content/uploads/2009/04/salesforce_javascript.txt"> the javascript SalesForce uses</a> for validating its own forms.  It includes checking for the email address to be formed properly and if the phone number is valid.  A screenshot of the page the above jscript was taken from is below.</p>
<p><img class="alignright size-full wp-image-282" title="salesforce_web_to_lead" src="http://banagale.com/blog/wp-content/uploads/2009/04/salesforce_web_to_lead.jpg" alt="salesforce_web_to_lead" width="480" height="359" /></p>
<p>Keeping it simple, you can simply ensure something was typed into individual fields like so:</p>
<blockquote><p>&lt;script type=&#8221;text/javascript&#8221;&gt;</p>
<p>function validate_required(field,alerttxt) {</p>
<p>with (field)</p>
<p>{</p>
<p>if (value==null||value==&#8221;")</p>
<p>{alert(alerttxt);return false;}</p>
<p>else {return true}</p>
<p>}</p>
<p>}</p>
<p>function validate_form(thisform)</p>
<p>{</p>
<p>with (thisform)</p>
<p>{</p>
<p>if (validate_required(first_name,&#8221;Please fill out your first name.&#8221;)==false)</p>
<p>  {first_name.focus();return false;}</p>
<p>}</p>
<p>}</p>
<p>&lt;/script&gt;</p></blockquote>
<p>The matching form element would be:</p>
<blockquote><p>&lt;label for=&#8221;first_name&#8221;&gt;First Name: *&lt;/label&gt;</p>
<p>&lt;input  id=&#8221;first_name&#8221; maxlength=&#8221;40&#8243; name=&#8221;first_name&#8221; size=&#8221;25&#8243; type=&#8221;text&#8221; /&gt; </p></blockquote>
<p>And finally the &lt;form&gt; tag needs to run the javascript:</p>
<blockquote><p>&lt;form action=&#8221;https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8&#8243; onsubmit=&#8221;return validate_form(this)&#8221; method=&#8221;post&#8221;&gt;</p></blockquote>
<p>Voila.  You have performed client-side data validation.  </p>
<p><strong>Caveats and Other Madness</strong></p>
<p>This example uses the standard Salesforce field “first name” and its associated id, first_name.  If you use custom fields in Salesforce, you’re going to have to deal with weird id’s, like 000004fsx02.  In these cases you will need to construct form elements with different ID and Name values, since the javascript that I used did not accept DOM names that began with numbers.  </p>
<p><a href="http://www.startupcto.com/front-end-tech/xhtml/id-vs.-name-in-form-fields">My research</a> suggests that this is against convention, but you do what you’ve got to do.  Maybe you can write better javascript that will take these funky salesforce custom field id’s.  If you can, please post your solution here.</p>
<p>I should also mention that occasionally you want to hard code data for passing into custom fields in Salesforce.  In these cases you must still use the form data spit out by web-to-form, only set the only response to what you want and set the item to hidden.</p>
<p><strong>Suggestions for Salesforce</strong></p>
<p>Salesforce disowns anything you do with the HTML that the web to form functionality kicks out for you.  They do not support creation of contact us forms, and provide no advice on technologies or methods to validate data inbound to their CRM.  Asking their customer support staff  if their CRM has the ability to perform server side validation will be met with confusion.</p>
<p>Salesforce needs to provide better support for this important aspect of lead origin into its client’s sales processes.  Undoubtedly, SF likely has elegant methods for working with data using its SDK.  If it is going to actually reach startups and smaller businesses with a $9 per user subscription plans, it needs to better support the most basic functionality of passing data into the system.</p>
<p>If Salesforce does not better address the down market, it will lose against startups like Zoho that offers a similarly priced CRM and a comprehensive set of other web applications and that has a <a href="http://blogs.zoho.com/general/add-a-contact-us-form-using-zoho-creator">user community willing to create</a> how-to videos for things like Contact Us form creation.</p>
<p>At a minimum an explanatory page should be available in Salesforce’s online help to explain the basic methods for building and validating web form data.</p>
<p>I hope this has been helpful, please post your experience!</p>
<p>Follow me on <a href="http://www.twitter.com/jetsetter">twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://banagale.com/contact-us-javascript-form-validation-and-custom-fields-in-salesforce.htm/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Facebook User Interface Revision and Revolt</title>
		<link>http://banagale.com/facebook-user-interface-revision-and-revolt.htm</link>
		<comments>http://banagale.com/facebook-user-interface-revision-and-revolt.htm#comments</comments>
		<pubDate>Fri, 27 Mar 2009 18:40:18 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://banagale.com/?p=262</guid>
		<description><![CDATA[One of my guides for creating a slick FB profile recently made PC World&#8217;s list of 10 tips for Facebook Power Users (Tip #5).  That coverage sort of endorsed me as a thought leader in tweaking Facebook.  The user interface and design of Facebook is only of interest to me because I enjoy the service [...]]]></description>
			<content:encoded><![CDATA[<p>One of my guides for creating a slick FB profile recently made <a href="http://www.pcworld.com/printable/article/id,161688/printable.html">PC World&#8217;s list of 10 tips for Facebook Power Users</a> (Tip #5).   That coverage sort of endorsed me as a thought leader in tweaking Facebook.  The user interface and design of Facebook is only of interest to me because I enjoy the service so much and like sharing my experience with it.</p>
<p>As you might guess I&#8217;ve been following the redesign of Facebook pretty closely. My pal Bryan just posted a link to another great PC World article on Facebook &#8220;caving&#8221; to user concerns in the redesign.  The article contains a good summary but also some important links worth checking out:</p>
<ul>
<li>Facebook&#8217;s Director of Product, Chris Cox <a href="http://blog.facebook.com/blog.php?post=62368742130">official reaction</a> (blog entry)</li>
<li>Techcrunch <a href="http://www.techcrunch.com/2009/03/24/no-never-surrender-to-your-users-facebook/">shames Facebook</a> for caving to users.</li>
<li>The idea that while 2 million users complained about the redesign, yet that is only 1% of the userbase is <a href="http://www.pcworld.com/article/161842/why_complaining_facebook_users_are_an_advantage.html?tk=rel_news">highlighted here</a>.</li>
</ul>
<p>The main changes they will be making in the near term to satisfy complaints are:<span id="more-262"></span></p>
<blockquote>
<ul>
<li>Live updating: One of the most common requests is the ability to see your stream update automatically. We will be adding the ability to turn on auto updating in the near future so you no longer need to refresh the page.</li>
<li>Photo tags: In order to surface more photos you might like to see, we&#8217;ll be adding photos tagged of your friends to the stream. This will happen in the coming weeks.</li>
<li> More choices for applications: We&#8217;ve heard feedback that there is a lot of application content appearing in the stream. We will be giving you tools to control and reduce application content that your friends share into your stream.</li>
</ul>
</blockquote>
<p>I have a theory that the live updates thing was supposed to be introduced at the same time as the major feed update.  I had actually personally contacted FB with my dissatisfaction resulting from having people&#8217;s favorite color thrust upon me.</p>
<p>I think that what the new design will receive a more favorable response once the manual page refresh is gone&#8211;especially with the this new icon based format.</p>
<p>I suspect that the design team / Zuckerberg felt it would be too much change at once and instead left off the auto-refresh stuff. This half-leap caused a lot of concern because it didn&#8217;t incorporate the full concept behind the redesign.</p>
<p>I have another theory regarding the sudden forced inclusion of friends&#8217; application updates:</p>
<p>Application developers suffered greatly when the apps were moved from a person&#8217;s profile to the Boxes tab. I know because my own DMB FB app with 9000+ users took a major dive in traffic after the change.  I think that the forced inclusion of app updates in the retooling was meant to try and return the favor to app developers. Unfortunately, announcements from apps seem to be dominated by rather niche trivial quiz that no one cares about.</p>
]]></content:encoded>
			<wfw:commentRss>http://banagale.com/facebook-user-interface-revision-and-revolt.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Guide to Hacking Your Facebook Profile Photo</title>
		<link>http://banagale.com/a-guide-to-hacking-your-facebook-profile-photo.htm</link>
		<comments>http://banagale.com/a-guide-to-hacking-your-facebook-profile-photo.htm#comments</comments>
		<pubDate>Sat, 24 Jan 2009 18:36:04 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[facebook]]></category>
		<category><![CDATA[photoshop]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://banagale.com/?p=186</guid>
		<description><![CDATA[One of the most important parts of a person’s Facebook presence is their profile photo. This is displayed in the top left corner of a page. The photo can be a newly uploaded image or it may be drawn from any of your online albums. Typically, a profile photo shows someone’s face, and appears in [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_189" class="wp-caption alignright" style="width: 207px"><img class="size-full wp-image-189" title="Hacking Your Facebook Profile Photo" src="http://banagale.com/blog/wp-content/uploads/2009/01/fb_no_photo.jpg" alt="Hacking Your Facebook Profile Photo" width="197" height="126" /><p class="wp-caption-text">Coolwhip hair dude.</p></div>
<p>One of the most important parts of a person’s Facebook presence is their profile photo. This is displayed in the top left corner of a page. The photo can be a newly uploaded image or it may be drawn from any of your online albums.</p>
<p>Typically, a profile photo shows someone’s face, and appears in front of the light blue-grey line that connects from the left side of the profile to the left-most tab. <a href="http://banagale.com/blog/wp-content/uploads/2009/01/alex_profile_normal.jpg" target="_blank">View an example</a> of a typical profile page with a normal photo.</p>
<p>Unlike Myspace, Facebook’s uses a common color and layout for every profile. This makes the site look better overall, but also limits your ability to affect the look of your profile. You can display Facebook applications on the left sidebar, and have them in tabs, but any changes to how the page’s style or how it is displayed overall are limited.</p>
<p><span style="font-weight: bold"><span style="font-weight: normal;"><span style="font-weight: bold"><strong>Hacking the Facebook </strong></span><strong>Profile Photo</strong></span></span></p>
<p><span style="font-weight: bold"><span style="font-weight: normal;">There isn’t a legal way to ‘hack’ Facebook, but there is a method to changing your profile photo to make your profile look subtly different and cooler. It isn’t obvious, but the placement of a profile photo allows you to lightly innovate on Facebook’s sacred profile layout. <span id="more-186"></span><br />
</span></span></p>
<p><strong>How does it work?</strong></p>
<p><span style="font-weight: bold"><span style="font-weight: normal;">When you create a profile photo from an existing album image, Facebook lets you crop the photo down to whatever dimensions you choose. When you visit your profile the selected photo is displayed scaled down to a maximum height and width allowed by Facebook.</span></span></p>
<p><span style="font-weight: bold"><span style="font-weight: normal;">The first thing you need to understand is how much space you have to play with. Facebook displays profile photos at a maximum of 200 pixels in width. If you go beyond this, Facebook resizes your profile photo down to 200 while maintaining the aspect ratio vertically. Facebook will display a photo in your profile that is up to 600 pixels in height. This means that Facebook will happily display any image as large as 200 x 600 without otherwise changing or resizing it.</span></span></p>
<div id="attachment_194" class="wp-caption alignright" style="width: 211px"><img class="size-full wp-image-194" title="A Blank Facebook Profile Photo Background" src="http://banagale.com/blog/wp-content/uploads/2009/01/blank_facebook_profile_hack2.jpg" alt="A Blank Facebook Profile Photo Background" width="201" height="188" /><p class="wp-caption-text">A Blank Facebook Profile Photo Background</p></div>
<p>Now that you know the maximum dimensions of your profile photo, the base trick is simple. Facebook is set up to display the top of an image 52 pixels north of the thin grey line. Normally, all profile photos are placed at this height above the line.</p>
<p>In order to achieve an unbroken line across your profile you need only create an image with a grey (#D8DFEA) 52 pixels below the top. In addition, you’ll need to paintbucket the area above the line to match the light blue (#EFF0F5) used in the profile header.</p>
<p><span style="font-weight: bold"><span style="font-weight: normal;">For more information about the colors used in Facebook’s style sheet, see <a href="http://socialsnippets.com/snippets/how-to-style-an-application-like-facebook.aspx">this guide</a> for Facebook application developers by Bill Konrad.  I wrote a Facebook application about a year ago, read about the DMB Facebook application <a href="http://banagale.com/my-first-database-refactoring.htm">here</a>.</span></span></p>
<p><span style="font-weight: bold"><span style="font-weight: normal;">Subbing this blank template allows you to achieve something Facebook normally does not allow: the option to not display a profile photo at all. A new Facebook account with no profile photo displays a box with a drawing of a mystery person with soft-serve icecream hair on it. Using a blank lined template allows you to add a little ‘negative’ space to your profile that is normally not possible. </span></span></p>
<p><span style="font-weight: bold"><span style="font-weight: normal;">The fun begins when you overlay a photo or image on top of the blank template. The hardest part about doing this is isolating an image so that it can cleanly offset the background template. My suggestion for this is to use Adobe Photoshop to draw a selection area around your photo or image and then remove the edges.</span></span></p>
<div id="attachment_195" class="wp-caption alignright" style="width: 211px"><img class="size-full wp-image-195" title="Give Yourself a Living Room on Your Profile" src="http://banagale.com/blog/wp-content/uploads/2009/01/compilation_rob_in_my_house_profile_photo.jpg" alt="Give Yourself a Living Room on Your Facebook Profile" width="201" height="188" /><p class="wp-caption-text">Give Yourself a Living Room on Your Facebook Profile</p></div>
<p>There are a lot of fun things you can do pairing foreground cutout images with the background Facebook template. The first one I did was to create a sort of mini-living room for me to hang out in. Here’s <a href="http://banagale.com/blog/wp-content/uploads/2009/01/compilation_rob_in_my_house_profile.jpg" target="_blank">a screenshot of my profile</a> using this particular photo.</p>
<p>I wanted to do a play on the little grey line and decided to try to create the illusion that I was hanging from it.  I started by taking a photograph of me hanging from a doorway and then isolating the image. I then overlayed the photo on a longer version of the blank Facebook profile photo template.</p>
<p>Here’s a look at that process and the final result:</p>
<div id="attachment_197" class="wp-caption aligncenter" style="width: 502px"><a href="http://banagale.com/blog/wp-content/uploads/2009/01/haning_rob_progression.jpg"><img class="size-full wp-image-197" title="Creating a Hanging From My Wall Effect" src="http://banagale.com/blog/wp-content/uploads/2009/01/haning_rob_progression.jpg" alt="Creating a Hanging From My Wall Effect" width="492" height="353" /></a><p class="wp-caption-text">Creating a Hanging From My Wall Effect</p></div>
<p>And here’s<a href="http://banagale.com/blog/wp-content/uploads/2009/01/hanging_from_wall.jpg" target="_blank"> a screenshot of my profile</a> using this effect.</p>
<p><span style="font-weight: bold"><span style="font-weight: normal;">Another fun foreground image I used was a colored in Giraffe. This gave my profile a fun look and because it pushed down the information in my left sidebar, a lot of negative space around my wall updates.</span></span></p>
<div id="attachment_199" class="wp-caption aligncenter" style="width: 460px"><a href="http://banagale.com/blog/wp-content/uploads/2009/01/profile_giraffe_cutout.jpg"><img class="size-full wp-image-199" title="A 200x600 Pixel Profile Photo Overlayed on a Blank Template" src="http://banagale.com/blog/wp-content/uploads/2009/01/profile_giraffe_cutout.jpg" alt="A 200x600 Pixel Profile Photo Overlayed on a Blank Template" width="450" height="495" /></a><p class="wp-caption-text">A 200x600 Pixel Profile Photo Overlayed on a Blank Template</p></div>
<p><a href="http://banagale.com/blog/wp-content/uploads/2009/01/profile_giraffe.jpg" target="_blank">View a screenshot</a> of the complete profile using the &#8216;giraffe hack.&#8217;</p>
<div id="attachment_202" class="wp-caption alignright" style="width: 211px"><a href="http://banagale.com/blog/wp-content/uploads/2009/01/green_unicorn_shapes.jpg"><img class="size-full wp-image-202" title="Playing with the Thin Grey Line " src="http://banagale.com/blog/wp-content/uploads/2009/01/green_unicorn_shapes.jpg" alt="Playing with the Thin Grey Line" width="201" height="218" /></a><p class="wp-caption-text">Playing with the Thin Grey Line</p></div>
<p>A lot more can be done with the look of the thin grey line, such as creating a jagged or curved edge that interacts with an overlayed image.  I got a little weird and created some stalactites over a green unicorn with the Earth floating above and below the header line.  <a href="http://banagale.com/blog/wp-content/uploads/2009/01/green_unicorn_shapes_profile_screenshot.jpg" target="_blank">View a screenshot</a> of the complete profile using the &#8216;green unicorn hack.&#8217;</p>
<p>Image isolation in Photoshop is like using scissors to cut very closely around a photo torn from a magazine.  Photoshop has a magnetic lasso, a magic wand and a quick selection tool to help you. There are a lot of guides on how to perform selections, here are a few that will help you:</p>
<ul>
<li><a href="http://www.karldesigns.com/docs/Tru_Howto_PS_clip_paths.pdf">A PDF</a> on object selection and isolation</li>
<li><a href="http://www.metacafe.com/watch/1042620/photoshop_tutorial_object_extraction/">A video</a> on object selection and isolation</li>
<li><a href="http://www.photoshopcafe.com/cs3/qs.htm">A web tutorial</a> with images on the Quick Selection tool.</li>
</ul>
<p><span style="font-weight: bold"><span style="font-weight: normal;">I’m including the some example images to help you get started in a zip file at the end of this entry.</span></span></p>
<p><span style="font-weight: bold"><span style="font-weight: normal;"><strong>Hack Caveats</strong></span></span></p>
<p><span style="font-weight: bold"><span style="font-weight: normal;">The hack falls apart a few different ways. The easiest is to post a status update that is long enough to wrap around to two lines of text. You can avoid this by posting your long status update, and then clearing it afterwards. <a href="http://banagale.com/blog/wp-content/uploads/2009/01/hanging_double_line_update.jpg" target="_blank">View a screenshot</a> of this problem.  This leaves your current status as blank, but the update will still appear on your news reel and the illusion of the hack will be maintained.</span></span></p>
<p><span style="font-weight: bold"><span style="font-weight: normal;">Another point of note in using this hack is the display of your profile photo in wall listings. The profile photo is shrunk down quite a bit. A plus of this is that if you choose a long, 200&#215;600 photo, it can look rather cool and set you apart from other Facebook people when you’re shown in a list.</span></span></p>
<p><span style="font-weight: bold"><span style="font-weight: normal;"><strong>Conclusion and Downloads</strong></span></span></p>
<p><span style="font-weight: bold"><span style="font-weight: normal;">For many, your Facebook presence is an important part of your online presentation of self.  You can differentiate yourself on Facebook by tweaking the look of your profile by using a specialized profile photo. </span></span></p>
<p><span style="font-weight: bold"><span style="font-weight: normal;">I&#8217;m making available a zip file that includes a number of original, layered .psd files that will help you get a quick start on hacking your Facebook profile photo.  I&#8217;d love to see some examples of other ideas people come up with.  Feel free to post or send me a screenshot of what you came up with and I&#8217;ll add it to this blog post.</span></span></p>
<ul>
<li><span style="font-weight: bold"><span style="font-weight: normal;"><a href="http://digg.com/design/A_Guide_to_Hacking_Your_Facebook_Profile_Photo">Digg this article</a> i</span></span><span style="font-weight: bold"><span style="font-weight: normal;">f this was helpful / interesting to you or post it on your Facebook.<br />
</span></span></li>
<li><span style="font-weight: bold"><span style="font-weight: normal;">Download the <a href="http://banagale.com/blog/wp-content/uploads/2009/01/hack_facebook_profile_photo_kit.zip">&#8216;Hack&#8217; your Facebook Profile Photo Kit</a> (includes the blank background template and some example overlayed images.)</span></span></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://banagale.com/a-guide-to-hacking-your-facebook-profile-photo.htm/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Quake Live Beta</title>
		<link>http://banagale.com/quake-live-beta.htm</link>
		<comments>http://banagale.com/quake-live-beta.htm#comments</comments>
		<pubDate>Sun, 30 Nov 2008 00:10:25 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[entertainment]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://banagale.com/quake-live-beta.htm</guid>
		<description><![CDATA[I received an unsolicited email a few days ago from id Software requesting that I join their beta program for Quake Live.  I haven&#8217;t played Quake since since 1999, but remember playing quite a bit of Quake 3 Arena&#8211;especially capture the flag. In order to beta test, you first create an id Software user account, [...]]]></description>
			<content:encoded><![CDATA[<p>I received an unsolicited email a few days ago from id Software requesting that I join their beta program for Quake Live.  I haven&#8217;t played Quake since since 1999, but remember playing quite a bit of Quake 3 Arena&#8211;especially capture the flag.</p>
<p>In order to beta test, you first create an id Software user account, and then you have to create a second beta tester account just for Quake Live.   Both accounts require you to go through a registration/authentication email loop.</p>
<p>The gameplay is quite good, it feels just like Quake 3 Arena with a number of the original maps available for play.  The most impressive thing is that the game runs smoothly within a browser tab.  You can easily change game settings, including resolution changes on the fly, with a brief loading routine by the app.</p>
<p><span id="more-181"></span>Another interesting feature is that the statistics from your matches are immediately available in other pages of the Quake Live site.  So, you can play a game, then click out and navigate directly to a list of people you played against recently and add them to a friends list.</p>
<p>There aren&#8217;t very many people playing yet.  Apparently, the beta has been going on for several months.  The public can apply for a beta key right now, but I don&#8217;t know how many requests are getting granted.  I think that this is the closest thing I&#8217;ve seen to putting a franchise gaming release up in the cloud.  When you can have a high calibre game, a tool like the Zoho CRM, gmail, and a Google Docs spreadsheet open in the same browser it sort of makes the OS look a little thin.</p>
<p>The game will pay for itself using live in-game advertising provided by <a href="http://www.igaworldwide.com/">IGA Worldwide</a>.<br />
Here&#8217;s the Quake Live Beta email in full:</p>
<p>QUAKE LIVE Tester!</p>
<p>Your name has been submitted to id Software to help us test a new multiplayer project underway here at the studio. We are working on QUAKE LIVE and would appreciate your help as we progressively test technology systems, user interface options, and gameplay changes.</p>
<p>What is QUAKE LIVE?</p>
<p>Originally dubbed &#8220;QUAKE Zero&#8221; when we announced the project at QuakeCon 2007, QUAKE LIVE will be a freely available, updated version of QUAKE III Arena that you access and play through your web browser.</p>
<p>As a beta tester, we are asking you to help us test the game delivery mechanism and core game technology, and to provide feedback on gameplay and game levels. The servers are always available, but you are encouraged to join us for our regular focus tests and special events (you will receive email notifications).</p>
<p>Please note that QUAKE LIVE is a work in progress and your experience as a beta tester does not reflect the final set of functionality that will be available. We encourage you to post comments, issues, suggestions and other feedback to the QUAKE LIVE forums. As a beta tester you are asked to keep your personal key, login information, account information, and all other information related to your participation in this program private and confidential.</p>
<p>What&#8217;s Next?</p>
<p>Simply use the personalized key below to setup an id Beta Tester account and gain access to the QUAKE LIVE website where you can begin playing.</p>
<p>You will be asked to agree to a non-disclosure agreement and we ask that you keep your personal key, login information, account information, and all other information related to your participation in this program private and confidential.</p>
<p>Visit <a href="http://quakelive.idsoftware.com/" target="_blank">http://quakelive.idsoftware.<wbr></wbr>com/</a> to start playing.<br />
Key:<br />
&lt;cut&gt;<br />
Thank you for your time,</p>
<p>The QUAKE LIVE Team at id Software</p>
]]></content:encoded>
			<wfw:commentRss>http://banagale.com/quake-live-beta.htm/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Nationalization or Expropriation?  Independent Facebook Application Developers Continue to Face Uncertainty</title>
		<link>http://banagale.com/nationalization-or-expropriation-facebook-application-developers-continue-to-face-uncertainty.htm</link>
		<comments>http://banagale.com/nationalization-or-expropriation-facebook-application-developers-continue-to-face-uncertainty.htm#comments</comments>
		<pubDate>Sat, 29 Mar 2008 23:39:17 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[api]]></category>
		<category><![CDATA[ethics]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://banagale.com/nationalization-or-expropriation-facebook-application-developers-continue-to-face-uncertainty.htm</guid>
		<description><![CDATA[There is some interesting discussion going on in the Facebook Developer&#8217;s forum. The gist is that Facebook has made changes that are causing some developers to feel disenfranchised. A few developers are upset enough that they are speaking of creating a union of independent Facebook application developers. What might the goals of a union of [...]]]></description>
			<content:encoded><![CDATA[<p>There is some interesting discussion going on in the Facebook Developer&#8217;s forum.  The gist is that Facebook has made changes that are causing some developers to feel disenfranchised.  A few developers are upset enough that they are speaking of creating a union of independent Facebook application developers.</p>
<p>What might the goals of a union of Facebook application developers be?  It would help to look at what has stirred the pot recently.  About two weeks ago <a href="http://forum.developers.facebook.com/viewtopic.php?id=12101&amp;p=1">someone posted a complaint</a> that Facebook had unfairly bent the rules to give CBS&#8217;s Sports NCAA bracket application advantages for faster viral spread across the Facebook user base. Adding insult to injury, the thread also pointed out that the CBS Sports NCAA bracket application had a poor user rating.</p>
<p>Two days ago another developer posted a thread titled, &#8220;<a href="http://forum.developers.facebook.com/viewtopic.php?id=12563">Facebook has stolen my idea!</a>&#8221; which describes the recently added &#8220;<a href="https://register.facebook.com/findfriends.php?expand=pymk&amp;ref=hpb">Do you know these people?</a>&#8221; page on Facebook.  The developer suggests he feels &#8220;cheated&#8221; because the new Facebook page duplicates his own application&#8217;s functionality.  The developer&#8217;s application was forced to comply with platform development rules that required an obstructive approval process in order work correctly.</p>
<p>Facebook&#8217;s &#8220;Do you know these people?&#8221; page circumvents this approval process because it is not subject to the rules independent application developers must follow.   Facebook made a better version of the application a part of the Facebook experience by bending the rules that crippled the original developer&#8217;s work.<span id="more-150"></span></p>
<p>These examples illustrate that Facebook considers it a duty to nationalize or expropriate functionality if it is considered good for Facebook.  Rather than something that needs to be declared, Facebook makes this right clear in the <a href="http://developers.facebook.com/terms.php">Facebook Developers Terms of Service</a>:</p>
<p>&#8220;&#8230;You hereby grant us a worldwide, perpetual, irrevocable, non-exclusive right and license, with the right to sublicense, to: (a) access, <em>reproduce, display, distribute, perform, and store on our servers your Facebook Platform Application</em> a<em>nd any Facebook Platform Application Content, and to create derivative works of Facebook Platform Application Content, as may be necessary or desirable</em> to make such Facebook Platform Application and Facebook Platform Application Content available to Facebook Users in accordance with the terms of this Agreement and the <a href="http://developers.facebook.com/documentation.php">Facebook Platform Documentation</a> and the <a href="http://developers.facebook.com/guidelines.php">Facebook Platform Application Guidelines</a>; and (b) otherwise access, use and <em>analyze any Facebook Platform Application Content for our internal business purposes</em> (e.g., for the purposes of targeting delivery of advertisements or other content to persons who have viewed particular types of Facebook Platform Application Content).&#8221;</p>
<p>This paragraph basically says that Facebook can duplicate and meet parity or run with your application&#8217;s functionality and then integrate it into the basic Facebook experience.  The second part basically says that Facebook reserves the right to monitor how much your application would be worth if Facebook were to take your idea.</p>
<p>I think a lot of independent developers get to sleep at night with the belief that Facebook wouldn&#8217;t expropriate their applications.  These developers comfort themselves with the idea that &#8220;it happens occasionally&#8211;but only to applications with functionality that obviously belongs in the platform.&#8221;</p>
<p>The board of directors for the copper companies were probably counting the same sheep prior to the sweeping expropriation of copper mines by the Chilean government in the early 1970s.   The <a href="http://books.google.com/books?id=ObzimhWiz30C&amp;pg=PA93&amp;lpg=PA93&amp;dq=chilean+copper+mines+nationalization+united+states+sanctions&amp;source=web&amp;ots=mChwZoCOyV&amp;sig=iAqRJGuCvjGVK21OR4Gee2uRC5k&amp;hl=en#PPA101,M1">result of that disagreement</a> was that the United States pushed for and succeeded achieving economic sanctions against Chile.  But the Facebook development community doesn&#8217;t exactly have sanctions on its list of tools of influence.  What does it have?</p>
<p>For one, it would have to be part of a greater independent community of developers for all open social platforms.  Only by having a union of developers that canvas&#8217;s all major platforms could it hold sway against any particular one.  Such an organized group might hold sway by steering technical offerings, such as beginner guides, away from platforms that have a history of expropriating applications functionality unfairly.  A strong independent application developer union might also be able dissuade or at least condemn social platforms that repeatedly expropriate functionality.</p>
<p>Representation at the table would help, when the biggest social networking application companies, <a href="http://en.wikipedia.org/wiki/RockYou%21">RockYou!</a>, are getting all of the attention.  RockYou! has funding from Sequoia Capital, a company that wouldn&#8217;t take wholesale expropriation of their software lightly.</p>
]]></content:encoded>
			<wfw:commentRss>http://banagale.com/nationalization-or-expropriation-facebook-application-developers-continue-to-face-uncertainty.htm/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>My First Database Refactoring</title>
		<link>http://banagale.com/my-first-database-refactoring.htm</link>
		<comments>http://banagale.com/my-first-database-refactoring.htm#comments</comments>
		<pubDate>Sun, 03 Feb 2008 04:42:13 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[entertainment]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[fbml]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[weekly davespeak]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://banagale.com/my-first-database-refactoring.htm</guid>
		<description><![CDATA[I spent a good portion of the day today refactoring the database used to power the Dave Matthews Band application I&#8217;ve been writing for Facebook. I&#8217;ve been interested in writing for Facebook for some time because I believe that companies need to be expanding their online presence into applications built for major social networking platforms. [...]]]></description>
			<content:encoded><![CDATA[<p>I spent a good portion of the day today <a href="http://www.agiledata.org/essays/databaseRefactoring.html#WhyDatabaseRefactoring">refactoring the database</a> used to power the <a href="http://apps.facebook.com/weeklydavespeak/">Dave Matthews Band application</a> I&#8217;ve been writing for Facebook.</p>
<p>I&#8217;ve been interested in writing for Facebook for some time because I believe that companies need to be expanding their online presence into applications built for major social networking platforms.  It is easy to say that people should pay attention to things like OpenSocial or Facebook&#8217;s API, there have been plenty of articles about it.  But nothing can convince you like building and running one yourself.</p>
<p style="text-align: center"><img src="http://banagale.com/blog/wp-content/uploads/2008/02/graphs1.jpg" alt="facebook application traffic statistics" /></p>
<p> My application began with only allowing users to choose a photo for their profile.  Then I added the ability to select prior Dave Matthews Band shows.  The problem came when people said they wanted to show their tour history further back than 2007.</p>
<p>I&#8217;ve been sourcing my data from the DMB Almanac, a site that I promote fairly heavily through the Weekly Davespeak&#8217;s front page and in the forums.  I have a feeling I send them a good portion of traffic.<span id="more-143"></span></p>
<p>In order to get the application out as soon as possible, I decided to create my own numbering system for the shows&#8211;2007&#8242;s data was IDs 1-86.</p>
<p>The reason I didn&#8217;t use the almanac&#8217;s Show ID numbering was because the show id&#8217;s do not iterate consecutively. The band&#8217;s management adds shows out of chronological order.  For instance they&#8217;ll announce the complete summer tour and DMB Almanac adds that&#8211;then additional dates like benefits get added.</p>
<p>Using my own consecutive numbering meant that I could For loop through the list on a number of functions and random-access show information directly from the user&#8217;s show list.  The refactoring meant building a translation table and script to update the old Show ID data, then change a number of functions from For to while loops that would handle non-sequential iteration the tour data.</p>
<p>Writing the translation script was a hurdle, I did a lot of debug output on the data I was generating to make sure it was working correctly.  You can see a bit of the <a href="http://banagale.com/blog/wp-content/uploads/2008/02/verbose_translation.jpg">verbose output here</a>.</p>
<p>The application has just under 800 members now.  I hope to have several thousand before DMB&#8217;s 2008 dates are announced.  As the image above shows, the page has resulted in 163 new visitors, 21% of whom were new to the site.  This is a low number compared to other site sources, but that may be because the app has not been in the wild for long and the skew is towards those who found out about the app from the Weekly Davespeak forums.</p>
]]></content:encoded>
			<wfw:commentRss>http://banagale.com/my-first-database-refactoring.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Weekly Davespeak Traffic Reach</title>
		<link>http://banagale.com/weekly-davespeak-traffic-reach.htm</link>
		<comments>http://banagale.com/weekly-davespeak-traffic-reach.htm#comments</comments>
		<pubDate>Thu, 08 Nov 2007 05:33:49 +0000</pubDate>
		<dc:creator>rob</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[alexa]]></category>
		<category><![CDATA[dave matthews band]]></category>
		<category><![CDATA[statistics]]></category>
		<category><![CDATA[weekly davespeak]]></category>

		<guid isPermaLink="false">http://banagale.com/weekly-davespeak-traffic-reach.htm</guid>
		<description><![CDATA[One of my colleagues at Babson asked me how my Dave Matthews Band website ranks against others on the internet. I had a bit of a cloudy answer so I decided to have a look this evening. I was surprised to find that it appears Weekly Davespeak overtook Nancies.org in reach and page views sometime [...]]]></description>
			<content:encoded><![CDATA[<p>One of my colleagues at Babson asked me how my Dave Matthews Band website ranks against others on the internet. I had a bit of a cloudy answer so I decided to have a look this evening.  I was surprised to find that it appears Weekly Davespeak overtook Nancies.org in reach and page views sometime earlier this year.  Reach measures the number of users who frequent a website, measured as a percentage of all website visitation.</p>
<p><img src="http://banagale.com/blog/wp-content/uploads/2007/11/wds_statistics_2.jpg" alt="Weekly Davespeak dave matthews band website statistics" /></p>
<p>Weekly Davespeak still lags Antsmarching.org by a wide margin, but I&#8217;m preparing some changes and a new service for WDS that has the potential to act as a game changer.  It will take time, community effort, but I think that WDS could become achieve the lion&#8217;s share of Dave Matthews Band traffic within two years.</p>
]]></content:encoded>
			<wfw:commentRss>http://banagale.com/weekly-davespeak-traffic-reach.htm/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
