Working on this one:

American Heart Association Start! Walking Application

American Heart Association Start! Walking Application

NOT this one:

Vote for your favorite Detroit Red Wing in the NHL All Star Fan Ballot

Vote for your favorite Detroit Red Wing in the NHL All Star Fan Ballot

I know, I know.  But business is business.

Facebook App Here and Voting Here.

The short answer is – of course not.  But Facebook isn’t doing developers any favors, either.

Has the new Facebook design had a deliterious effect on applications in general?  My personal direct experience says “yes” and buzz around the ‘Net says most people are seeing a 20%-25% drop in app traffic.

The Facebook platform has been good to me professionally, no doubt about it.

That said, however, I am continually amazed that with each iteration of the platform, the channels by which applications may be exposed to a larger audience and through which the application may be made visible get more and more application averse, if not anti-use entirely.

I wrote a post earlier in the year about writing my last social networking application.  It was written out of frustration, and in retrospect was both premature and prescient with regard to what is happening today.

I still believe that there is room for great exploitation of the Facebook platform by business for hosting business applications beyond the advertising driven model that permeates most paying (if not profitable) apps.

I’m afraid it may have to wait for the next great creative cycle – Web 3.0, the great re-re-awakening, or whatever we wind up calling it – before this really happens, for a number of factors (not the least of which is there is a tremendous gap remaining between businesses that embrace the social web and those hostile or worse ignorant of it).

So, for now, I’m watching with a great deal of interest as to whether conditions improve for developers on Facebook.

But I’m not optimistic.

July Wrap Up

July 26, 2008

Catching Up

July 12, 2008

I have been buried under a TON of stuff this week.

The week began with me leaving my house at 4:00 AM to catch a flight to Orlando for the sole purpose of leaving town with a contract on a house – mission accomplished.  I arrived back in Nashville around 11:00 PM.

Tuesday saw us signing a backup contract on our home; Wednesday was the home inspection on our current home; and Thursday was the home inspection on our new (to us!) home.

By day, I have been working on a .NET contract with a large online health care company and by night, working on a set of new Facebook applications to launch this week and next.

Needless to say, I have been a very busy (and pooped!) boy.

I am finally beginning to see the light at the end of the tunnel, and I’m reasonably sure that it is not a train.

I hope to be back on a more even keel by the end of next week and actually taking a little bit of time off.

But for now, I’m still digging into the pile of stuff in front of me – looking for a pony.

LinkedIn Contacts

June 19, 2008

My “twitterpal” Ruth Marie Sylte showed some love for my LinkedIn Contacts Facebook Application in her blog today.

Thanks, Ruth, for a very nice endorsement.

Cheap Gas Redux

May 7, 2008

Rodney Rumford was kind enough to review my Cheap Gas!Facebook application here at FaceReviews.

As always, Rodney, many thanks.

Shameless self promo.

I released a new Facebook application into the wild this morning: Cheap Gas!

Based upon your current location’s Zip Code, the application will show gasoline prices near you, and indicate by grade which price is cheapest. Click on the name of the station to get a Google map to the location.

Will probably be a few days before it is in the FB App Directory (and even longer until searchable).

Even so, worth a peek. Would love any feedback.

Social Media Sheep

April 29, 2008

For me, one of the great jokes of Social Media is how much more connected we are supposed to be because of it. “Markets are conversations.” “We GET it.” “The new paradigm.” “Vendor Relationship Management.”

Give me a freakin’ break.

Here’s an experiment. Call your television carrier, now. Doesn’t matter – Comcast, DirecTV, whatever. See how long it takes to speak to a person.

Now, call someone at Twitter. Facebook. LinkedIN. MySpace.

Oh, wait… you can’t.

So… even with services we deride as being shitty (television / utilities / cell phone) we can at least speak to a person.

Social Media? Not a chance in hell. And yet, we think that Web 2.0 is changing the world.

Well, in a sense it is. We are now able to be ignored at the click of a mouse – and no one cares.

The actual engagement between the Management of Social Media services and the denizens of their social networks approaches nil. @selves pointed out to me on Twitter that there is a @comcastcares account. I have also seen @JetBlue and others out there – but strangely, no accounts from Facebook, LinkedIn, or any of the other purported new media game changers.

If we want to affect change for whatever follows this iteration of the web, the clear winner will be the company or persons who realize that being human matters.

All this lip service about how great social media is belies what social media should aspire to be – a two way marketplace of ideas rather than a closed off petrie dish of exploitable user supplied content.

There are several examples around on doing custom Facebook dialogs, some which are satisfactory and some which are not. Here is some code that I use to create custom FB dialogs that I can position, color, style at will.

First, let’s look at the FBJS function to invoke a custom dialog. In this case, I have created a dialog that accepts Yes / No answers. By convention, I assume that I will define a dialog somewhere on my page named “question_dialog1″.

// Custom yes / no dialog that we can position
function showYesNoDialog(id, title, content, confirm, cancel) {
document.getElementById(id).setStyle("display", "inline");
if (confirm) {
document.getElementById('yes_button1').removeEventListener('click', confirm, false);
document.getElementById('yes_button1').addEventListener('click', confirm, false);
}
if (cancel) {
document.getElementById('no_button1').removeEventListener('click', cancel, false);
document.getElementById('no_button1').addEventListener('click', cancel, false);
}
document.getElementById("question_title1").setTextValue(title);
document.getElementById("question_content1").setTextValue(content);
}

The first thing I do is display my question dialog, which is initially styled {display: none;}.

Next, I attach a couple of click events – if present – to two buttons, yes and no, for confirmation and cancel (by convention, I use yes_button1 and no_button1, but you can certainly parameterize this or better yet encapsulate in a class).

Finally, I set Title Text and Content Text using the setTextValue method.

A typical call to this dialog might look like the following (I use the built-in FBJS Ajax object):

var yes = function() {
var ajax = new Ajax();
ajax.responseType = Ajax.FBML;
ajax.ondone = function(data) {
document.getElementById("delete_dialog1").setStyle("display", "none");
document.setLocation("http://apps.facebook.com/SomeApp/ThisPage.php");
}
ajax.onerror = function() {document.getElementById("delete_dialog1").setStyle("display", "none");}
newShowDialog("delete_dialog1");
ajax.post('http://apps.facebook.com/SomeApp/performDelete.php?fbid=' + <? echo $user; ?>;
}

showYesNoDialog("question_dialog1", "Delete Record?", "Delete \"" + argRecordDescription + "\"?", yes);

The actual FBML for the question_dialog1 looks something like the code below. You can style this anyway you want; I usually try to get my dialogs to look like the styling of the application to which the dialog belongs, but do whatever floats your boat here.

<div id="question_dialog1" style='display: none; position: absolute; top: 300px; left: 150px;'>
<table>
<tr>

<!-- Transparent border around dialog, like FB built in dialogs-->

<td style="background-image:url('http://app.facebook.com/SomeApp/Images/pop_dialog_border.png');">

<div style='border: 2px solid #8ec73c; background: white; font-size: 18pt; margin: 10px;'>
<div id='question_title1' style='background: white; padding: 2px; color: white; background: #8ec73c; font-weight: bold; font-size: small;'>Title Here...</div>
<div id='question_content1' style='font-weight: bold; font-size: 12pt; padding: 10px 30px 10px 30px; border-bottom: 1px solid #8ec73c;'>Dialog content will go here...</div>

<div style='background: white; text-align: right; padding: 10px; font-size: small; height: 20px;'>

<input id='yes_button1' type='button' value='Yes' onclick='document.getElementById("question_dialog1").setStyle("display", "none");' style='background: #8ec73c; color: white; width: 40px;' />

<input id='no_button1' type='button' value='No' onclick='document.getElementById("question_dialog1").setStyle("display", "none");' style='background: #8ec73c; color: white; width: 30px;' /></diV>
</div>

</td></tr>
</table>
</div>

Finally, a note to code nit-pickers: This example is meant to be illustrative and not a comprehensive way on how best to do Facebook dialogs or write FBJS.