Monthly Archives: December 2008

The other day I wrote about Facebook Connect and Google Friend Connect - two recently launched, very similar services going head-to-head in the ambitious self-proclaimed aim of ‘opening up’ the social web.

But if these platforms are successful, what will that actually be like? The demo sites Google provides are good for functional demonstrations but little else. There’s a complete list of sites that use Facebook Connect up on their dev wiki – there’s Joost, Netvibes and TechCrunch, but no-one with such a diverse and active user base like Twitter.

Then on Monday came on the news that Twitter chose to Connect with Google’s service. It’s strange that there wasn’t more made of the announcement, considering what could come of it.

Twitter hardly said much about it at all on their blog, Google covered it in more depth but also provided the first real recognisable use case for an integrated site. Now whenever you join a ‘Friend Connected’ site, you can use your Twitter profile to join their service. From there, you can see of a combination of your followers and those who you follow that are already on the site and connect with them there too. You can tweet about your find from the connected website’s portal.

Getting a big site like Twitter on board will really kick Friend Connect up a gear, undoubtedly it’ll receive a massive increase in attention. But it’s not like Facebook Connect is by any means down or out – it’s so early. If anything, the introduction of these services to such widely used web apps as an almost unblinkingly ‘standard’ feature (this will eventually boil down to a simple ‘Connect’ button) could positively change users’ perceptions of them to being just commonplace. I’m sure that’s the ultimate intention, but right now it’ll work in favour for any such service, be it Facebook Connect or any other.

It’ll be a while before we see any real difference in the reception or growth of implementation for either service, whether by then we have a preferred leader or not.

I’m interested to see how Facebook will respond in aiming to get as big a site as Twitter integrated with Connect. Prior to the Twitter inclusion, I felt that Google’s Friend Connect came across almost like a developer’s toolkit – like a set of ready-made widgets to enhance onto your site, boosted by the capability to network centrally. But now I’ve seen it in action, Facebook have a undeniable rival product.

It should be said of course that Twitter hasn’t really chosen Google over Facebook. Biz Stone wrote that there was hardly any effort required on Twitter’s part - Google maybe just got in there first.

It’s in the same post he goes on to say that Facebook Connect integration is already in development. Twitter officially announced integration with MySpace and the Data Availability initiative seven months ago – they’re embracing everything they can, good on ‘em.

For some time I’ve been meaning to write about Facebook Connect and Google Friend Connect, two potentially huge social web developments that have been gathering speed and popularity over the past few weeks.

Both services are very similar. Essentially, each functions to simplify the connection between social and non-social websites by offering connectivity (and some functionality) of each’s proprietary central platform on 3rd party websites.

The idea is that a user can ‘Connect’ with whichever service the site has employed and find users with whom they’ve already connected with on the other services – rather than creating a new account, profile, repeat the steps of entering information to then find the friends you’ve already added over and over again with every other social-enabled web app you’ve used previously.

I first saw Facebook Connect in August with their demonstration service  The Run Around. There, you could ‘Connect with Facebook’ to initially join the site and immediately see who else (of your Facebook friends) has joined too. This is all outside of the Facebook chrome, not on the Facebook domain. What’s more, as well as interacting with the linked data pulled from Facebook, the website could push data back in. The actual site intended to track your running routes and times, so when you submitted a new ‘run’, it would publish to your live newsfeed on your Facebook profile.

The idea is simple, the effect could be game-changing. It’s been met with both cautious optimism and healthy skepticism.

If this becomes as massive as it could be, we could see a single sign-in that abolishes the need to register and re-register for every newly launched social app. We’re already experiencing social fatigue within that process as consumers and as developers, we’re having to build whole registration and authentication systems from scratch every time. Plugging into a platform like this – that we assume to be secure and trusted – could offer a means to develop and deploy services much easier and faster.

But can we trust – or do we want to trust – a propriety platform to do this for us? The idea of a single social graph isn’t new, but I don’t know if I want Facebook to offer it. I’d much prefer FOAF :) – but how many people outside of the development world have heard of it?

I feel I need to write another post entirely about OpenID, OpenSocial and OAuth entirely – services that can’t go unmentioned here – but Marshall Kirkpatrick at ReadWriteWeb wrote a direct comparison of Facebook Connect and OpenID that asks some interesting questions as well as offering a good introduction to the open source services anyway. Although he started by discussing as to which of the two should website owners use to authenticate and learn about their users, the community expanded his initial mindmap to cover pretty much every angle in the comparison – and it’s very detailed, see it here.

He also asks, even if it doesn’t become the dominant identifier online, will Facebook’s challenge breathe new life into the movement for open source, standards based, federated user identity?

Then there’s Google Friend Connect – launched in public beta the same day as Facebook Connect went public for 3rd party sites. This does use a blend of the open source services, but although integrating the open standards might suggest a weightier development process, the first thing to notice is a far less developer-oriented implementation than Facebook Connect.

Using Facebook Connect is down to the site creator to construct and integrate an interface to facilitate the connection – Google Friend Connect is widgety, with pretty much zero coding other than cutting and pasting directed portions. Similarly with the functionality, Google offer widgets for simple commenting on pages, media sharing, or rating content. With Facebook Connect you have to write that yourself – although admittedly, you then have full reign on design and interaction.

There’s a demonstration video on the Google blog’s announcement of the beta launch.

It’s not like this is just a two-horse race though, or that someone won’t work out a way two use both anyway. Google and Facebook are in direct competition, but attempting to open the Web in this way extends far beyond them.

What I find interesting is the interoperability. These technologies aren’t semantic, but do push the exposure and interoperation on a user’s social graph with ideas akin to the Semantic Web – utilising data to extend single-site online identities and networking social connections.

They’re not Semantic Web efforts but they have similar aims. Friend Connect’s goal is an open social web, the Semantic Web is – quite simply ;) – a fully understood, completely open web, not only it’s social domain.

Last month’s Flash platform group meeting was presented by Michael Plank and Frank Piotraschke from Powerflasher, authors of FDT the Actionscript IDE plugin for Eclipse. One of many features of FDT Frank demonstrated was SWC and SWF(-ish) browsing support.

He opened debate as to whether adopting a SWC or SWF nominated workflow for handling compiled components and libraries is more desirable, presenting methodology for both. Although then a decent excuse for him to show off FDT, each approach has its benefits and it’s good to know how to code both – previously I’d never used SWFs in this way, always choosing SWC files.

To use a SWC as a linked library and access a clip as a dynamic class, establish a linkage in the library to a class definition that does not exist – for example:

com.hibbins.Clip

When you click the ‘Validate class definition’ tick, you’ll get an alert that the definition cannot be found and it will be automatically generated upon export. Export the SWC and add it to your project classpath and it’s ready to use. Just instantiate it as you would any other class, note the import if your packaging requires it:

package
{
import flash.display.Sprite;
import com.hibbins.Clip;

public class SwcTest extends Sprite
{
public function SwcTest()
{
var clip:Clip = new Clip();
addChild(clip);
}
}
}

To do the same with a library from a compiled SWF, you need to load the SWF file containing your assets into the same Application Domain as your loading SWF file. The following diagram represents the classes available to each SWF file considering their respective domains:

Application Domains

The SwfTest class exists within the loading SWF file, the Clip class in the library file (published as assets.swf). Loading the file in to the current Application Domain shared the loaded SWF domain classes within the main class pool:

Application Domains

The following code demonstrates how to do that, then instantiate the class with the getDefinitionByName method:

package com.hibbins
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
import flash.system.ApplicationDomain;
import flash.system.LoaderContext;
import flash.utils.getDefinitionByName;

public class SwfTest  extends Sprite
{
public function SwfTest()
{
var loader:Loader = new Loader();
var context:LoaderContext = new LoaderContext(false,
ApplicationDomain.currentDomain);

loader.contentLoaderInfo.addEventListener(Event.COMPLETE,
onLoadComplete);

loader.load(new URLRequest(“assets.swf”), context);
}

private function onLoadComplete(event:Event):void
{
var ClipClass:Class = getDefinitionByName(“com.hibbins.Clip”)
as Class;

var clip:MovieClip = new ClipClass();
addChild(clip);
}
}
}

Both are pretty quick ways to handle custom MovieClips from your library dynamically. If you want to add any functionality to the clips you can write their classes using matching definition paths. Be aware though, any timeline actions will be dropped if you do this.

If you really want to keep frame actions, I’ve found two ways – firstly by using frame labels which are maintained elsewhere and coding around those, the other only works with SWC files, creating a class which extends from the dynamic clip class. With the SWC in your class path you won’t have any compilation errors.

As Frank pointed out, SWC files can be a lot heavier when loaded on application startup which can make your main SWF quite large. Using SWF files over SWCs, you can create an sequential load manager or only load them asynchronously when necessary. Also, with SWCs being relatively new in comparison to SWF use, you might have no choice. On the other hand, the SWC workflow is simpler and many IDEs have some form of SWC explorer – FDT and Flex Builder, for example.

There’s also an a shortcut to display the contents of a SWF in the same way in FDT, though it’s undocumented. Hit Alt+Shift+W and you can get an outline view (I don’t think this works on all versions of FDT though). It would be good if when this is better integrated into FDT, the classes are recognised in a similar way to the SWC support for auto-completion – as Tink says in the video, to avoid the ‘flakey’ long line of code that’s easily prone to mistyping.

Presentation slides, source code and videos are now online [via].

Anybody out doing their washing on Sunday may have been as lucky I to catch the Coin Laundry Orchestra in Hoxton this weekend.

It was a installation project of a friend of mine, Gareth Foote, as part of his MA Interactive Media at Goldsmiths.

Hijacking a coin laundry, his team created a live data jam recording and mashing together environmental sounds of the laundrette and vox-pop interviews with various noises, synths and electronic tracks, controlled and remixed by an array of footpads, infrared sensors and home-made electronics.

Speaking to Gareth before and reading his comments after, I really should have made more of a point of telling how impressed I was.

Looking at the span of posts on his blog, the project came around really quickly. Having taken the same BA course at Bournemouth University, we’d never touched any non-digital interactive projects, so it was great to read and see the switches and controls come together in theory and eventually play with them on the day.

Then the actual music was great. I was slightly sceptical at first as to whether the mixing would work, I imagined abrupt stop-starting of incoherent sound bytes – especially if, obviously being outside of their control, the reluctant end users would be only stumbled-upon average laundrette customers and/or people with either no outright musical understanding or intention of creating a cohesive soundtrack. But the overall effect was far from it – very well composed and really effectively arranged for the purpose.

Anyway, here’s nicely put together video of the days efforts:

Definitely have a read of Gareth’s blog, there’s a good bit of detail on the whole set-up here.

Photography by Tim Crook.

I may have missed out on Adam Neate’s artwork giveaway last month, but I managed to grab one of the 5,000 downloadable original prints from Turner prize winner Keith Tyson offered on his website at noon today:

History Painting (December, Kettering, Northamptonshire) by Keith Tyson

Each work consisted of a unique randomly generated sequence of vertical stripes in red, black and green, each with its own title based on the geographical location submitted by the user.

“The server will generate a sequence of the numbers one to 32 which relates to the roulette wheel,” he said. “Each number has an assigned colour. If you hit the jackpot, you’ll come away with an entirely green work. But the chances of that happening are 1 in 37 x 37 x 37, 49 times.”

The limited-edition prints relate to a body of work called the History Paintings, a group of paintings also in stripes of red, black and green, with the arrangement of the colours dictated by spins of the roulette wheel. Tyson’s artistic preoccupations include mathematical models, gambling, the operations of chance, and the systems, random or otherwise, governing human history.

Full Guardian write-up here.

Dance just like a Casanova.