Here Comes the Noise

April 30, 2009

The Facebook Open Stream API was announced on Monday.  I admire that they are making the stream accessible to mashups and the like, following in Twitter’s footsteps.

But with the ability for applications to publish to user’s streams I’m worried that there will be an explosion of Facebook stream updates from applications, adding even more information overload to the Facebook experience.  One of the things I like about Facebook is that it isn’t as noisy as Twitter (yet), but Facebook is trying really hard to become more and more Twitter-like (and less Facebook-like).  I expect this will excite a lot of developers and VCs but ultimately turn off a lot of users.

Personally, my favorite part of this new API is the ‘remove’ method.

Blocking Applications

February 26, 2008

Facebook has finally admitted that railroading users into inviting friends is bad.  

And even better, users can now “Block Application” when they receive a request.  I predict that this small change will change the entire Facebook application landscape – you can’t get away with incessantly annoying users anymore.  

Another win for authentic marketing, another loss for persuasion marketing!

Pet Peeve: Forced Invitation Pages

November 28, 2007

I’ve tried out a couple dozen Facebook apps and I’ve started dividing them into two groups:

  • Decent Apps
  • Manipulative Bastards

Manipulative Bastards are really easy to spot because they all share one tactic in common.  When you first install the app, you are taken directly to the invitation page.  You haven’t even used the app yet, and it is telling you to recommend it to your friends.  This falls cleanly into the “selfish jerks” type of broken.  (See Seth Godin’s Seven Types of Broken (Gel 2006).)

Most apps that use these types of tactics are copying other apps written by Manipulative Bastards.  They don’t know better or don’t care; they just want something that makes money.

The original Manipulative Bastards know exactly what they’re doing, because they all read Robert Cialdini’s Influence — a landmark text on how people can be persuaded (for better or worse) and how to avoid being manipulated.  Unfortunately for consumers, almost every marketing professional has read it but very few consumers have.  The problem here is that these app marketers haven’t read Seth Godin’s Permission Marketing and probably never even heard of Seth Godin.  Manipulation, even though few people understand the degree to which they’re being manipulated, is still felt at a subconscious level.  Something doesn’t feel right.  And in a world where your competitors are a click away, forcing your agenda on someone else is a gamble (it’s either win-lose or lose-lose).  However, if you’re able to help someone fulfill their agenda in a way that also helps you, then you’re destined for greatness.

Are you guilty of forced invitation pages?  Here’s a hint: if you use anything other than bypass=”cancel” in your fb:multi-friend-selector tag, you are being manipulative.  “skip” and “step” (‘Skip This Step’) imply an unnecessary solicit-invitations step while the user is trying to do something else.  Stop it.

My Questions

November 26, 2007

Most Facebook apps are viral for the sake of being viral.  Sad but inevitable in this kind of environment.

I think that the My Questions app is a good counter-example, being viral in a much more meaningful way than other apps because it is used to start conversations.  But it’s also less viral than other apps because it forces people to think and be creative.  Sad but true.

Cannot Remove the Profile Box

November 21, 2007

Unfortunately, it looks like it isn’t possible (for now) to remove the profile box once it has been added (i.e. set for the first time.) Setting the profile FBML to ” “, or an HTML comment, results in a “No content to display.” message.

This is mentioned as a feature request on the Profile.setFBML wiki page.

P.S. I am starting to dislike WordPress’s rich text editor. I’ve had to wrestle with font sizes, manually insert paragraph tags and go through an indirect clipboard feature just to paste without formatting. I don’t want to mess with formatting; I just want all my text to be the same size!

Infinite Session Keys

November 21, 2007

Note to self: Infinite session keys are specific to individual Facebook applications, so when developing multiple Facebook apps you need one infinite session key per app.

Also, the infinite session key you are using goes away if that user uninstalls the app. The user is usually you, and you’re likely to run into this problem when you are adding and removing the app to test that behavior, then all of a sudden your app is broken for everyone.

I solve this situation by dynamically reassigning the infinite session key to the current user’s session key (if fb_sig_expires==0) when the default infinite session key is invalid. Eventually I will see the log entry and use the new session key. No failures occur on the user side.

So why use infinite session keys at all? Not all Facebook REST calls are in direct response to a webapp request. E.g. periodically and asynchronous updates. To make these calls, a valid session key must be provided but there is no webapp request with an associated Facebook session to refer back to.

Testing Facebook Apps

November 20, 2007

I am a zealot when it comes to testing, so naturally the idea of updating an app and crossing my fingers hoping it will work is unacceptable.  I was tempted, for a moment, to write a Facebook simulator/container webapp for testing my Facebook apps under development.  Then I got wise and decided to simply set up a new, legitimate, Facebook app for the sole purpose of testing an app under development.


I’m rather proud of this little hack, since I even figured out how to get Facebook to talk to my app under development on my development machine at home.  (I used a combination of ssh remote port forwarding and Apache proxying.)  With a few tweaks I can point to any of the apps under development.

Callback URLs

November 20, 2007

Note to self: callback URLs should end with “/”, not “/index.html”

Blogger to WordPress

October 29, 2007

I just moved this blog from Blogger to WordPress. Fortunately, WordPress has an uber-convenient Blogger import feature so this was much easier than I thought! WordPress++

The Profile Box is Sandboxed

September 21, 2007

Even though the profile box is the representation of a Facebook app that you will see the most, it is actually a pretty isolated chunk of FBML. This is very intentional, for all sorts of security and performance reasons.

  • You can’t put an iframe in a profile box.
  • Any images are cached through Facebook.
  • The profile box content is set from your server, so when it is viewed that content is spit out. Your server isn’t queried when someone views their profile containing your app’s profile box.
  • When someone views a profile page, no external queries can be made.
  • Nothing can ‘happen’ when someone merely views a profile page. They need to view a canvas page, push or button or something for the application to have a stimulus for a response.

This limits what information Facebook applications can gather about usage, but it’s actually a really good thing.