An Experiment Building Communities in Facebook

Way to the future right now
Creative Commons License photo: ionushi

In the old days, I used to be a big fan of forums. By forums I mean the ones which are attached to a website and run on vBulletin, phpBB or something. They were great places to meet people and to keep in touch with your friends. Forums, for me, served two purposes: the social aspect and the information aspect – gossip and opinions.

Almost every webmaster in the world wanted a forum on their website and I remember all kinds of free BBS hosting websites around such as MyIkonBoard, ProBoards. Of course, those same webmasters would then create about 20 or 30 forums and never receive a single post.

A couple of years ago, blogs took off on the internet. For me, blogs replaced forums as a source of information. I used to subscribe to over 100 RSS feeds on a whole range of topics which supplanted forums as the primary source of gossip. I find blogs tend to be better researched and better sources of information.

One downside of blogs was that they never had the communities which would build up around forums (there are exceptions; sites such as Digg and Slashdot seem to have pretty active communities). So whilst blogs supplanted the whole “information gathering” aspect of forums, they never replaced the community aspect.

A previous experiment of mine was Geneone, a PHP “community management system” which tried to blend blogs, forums and webpages into one community. The reason why I built it was because at the time, the major blog, forum and content management systems wouldn’t work together. For me, integration shouldn’t be an afterthought: it should be built into the very pillars of the software.

| apple-command |
Creative Commons License photo: arquera

We released several betas of Geneone and ran the software at neonDragon.net for quite a while (and it’s still used on some parts of the site). Unfortunately, time constraints prevented me from ever producing a release-ready version of the software and anyways, Drupal did a fairly good job.

In the mean time, over the last few years social networking websites have really taken off. I’m a huge fan of Facebook. I’ve worked with the Facebook Platform a little over the past few months and I still think it’s a vast goldmine of untapped opportunity. Recently open sourced, I believe the Facebook Platform is going to be the catalyst and the glue between “social web” or “Web 2.0” applications. There is so much potential in the social web which we haven’t seen. The 90s belonged to Microsoft, the 00s (naughties?) belonged to Google. I believe the next decade will belong to Facebook.

The infrastructure which would allow anybody to integrate Facebook into their web applications today already exists and I guess I’m kind of surprised that nobody has done it yet.

I’ve recently begun an experiment to build a “mini social network” inside of Facebook. Essentially, we want to build a social network around our school alumni to share messages and photos. In the old days, we would have used a message forum to do this. What I’m trying to do is to replace the humble message forum with a Facebook Application.

The advantages of this are numerous:

  • Almost every young person in Britain already has a Facebook account so there are no worries about getting people to sign up. As soon as somebody adds your application on Facebook, you have access to their (real) name, photo and various other personal information from their profile.
  • Young people regularly use Facebook. This makes Facebook a “passive” communication tool rather than an “active” one. With standalone websites and forum sites, people have to make a proactive effort to regularly check them. A more extreme example would be the telephone: you must make a phone call to hear the latest gossip. With Facebook, it’s delivered to you and it requires no effort on your own part – this makes it “passive”.
  • The Facebook Platform saves a lot of time. In the course of developing a standard PHP application, you must write routines to manage accounts, login states, PM systems, templating, email validation and more. Facebook does pretty much all of that for you.
  • The application can integrate with various channels which promote it virally. For example, when a user adds your application, friends may find out about it on their news feeds.

Look Up
Creative Commons License photo: mrhayata

Facebook already provides a “Groups” feature which could serve as a very simple social network. But to be frank, the Groups feature sucks. It’s “active” because you need to make a proactive effort to check the group regularly; there is no way to organise photos; the message board lacks in functionality and there is no way to have any privacy.

Anyway, that’s what I’m experimenting with at the moment. It remains to see how successful it’ll be.

In the grand scheme of things, I don’t think it’ll be long until somebody manages to get phpBB working inside of Facebook. It shouldn’t take more than a little code to integrate with Facebook’s user system. And I think we’ll be seeing use of the Facebook Platform within the next generation of social web applications and websites.

Watch this space!

Weaving the Web (Tim Berners-Lee)

I remember a few years ago receiving a copy of Weaving the Web by Tim Berners-Lee as a gift. Tim Berners-Lee is of course the inventor of the World Wide Web and is a real hero of mine. This is a fascinating book about the events which lead up to the invention of the web.

Tim Berners-Lee graduated in physics and created a programme called Enquire at CERN. The programme stored relationships between scientists at CERN, their projects and their contact details. In fact, it sounds very much like what wikis do today.

He discusses the launch of the first page on the web, the different protocols and the concept of URLs, the spread in popularity across the globe, early web browsers and the launch of the W3C web standards consortium.

In the last half of the book, he discusses what he saw as the future of the web: the social and eventually the semantic web. Although the book was written in 2000 at the height of the dotcom boom, it is interesting that this vision is only becoming realised today with the rapid explosion in social networking websites over the last year or so. The semantic web still looks like it’ll be a few years away but DBPedia might be one site to watch.

I was amused when I visited Switzerland a few years ago to see CERN advertising itself as the place where the World Wide Web was invented. No, never mind the physics. After reading the book, I found out that the people at CERN weren’t particularly enthusiastic about the web to begin with and I feel CERN may be slightly exaggerating their role in the development of the web.

Even though this book is reaching a decade old, it’s still a fantastic account of how the web came about. If you’re interested in the web as a whole and where it might go in the future, this is still one to read. I’m sure history students will be studying this text in 100 years time.

You can buy the book from Amazon.com (US) or Amazon.co.uk (UK).

Facebook to Open Source Platform

Keep back from the Platform Edge
Creative Commons License photo: Annie Mole

Inside Facebook reports that Facebook is to open source their developer platform. A spokesman from Facebook said:

We’re working on an open-source initiative that is meant to help application developers better understand Facebook Platform and more easily build applications, whether it’s by running their own test servers, building tools, or optimizing their applications. As Facebook Platform continues to mature, open-sourcing the infrastructure behind it is a natural step so developers can build richer social applications and share what they’ve learned with the ecosystem. Additional details will be released soon.

I absolutely love the Facebook platform. I recently developed a small application for Facebook. It really isn’t hard at all to develop an application if you know PHP and once you’ve got the PHP environment set up. You need to keep in mind that you can only use a subset of HTML. You can also use FBML which is dead easy. Facebook also has a SQL-like language called FQL which is dead easy if you know SQL and is a really nice way to get data from Facebook.

You can also hook into Facebook Mobile to send and receive SMS text messages for free but for some reason it doesn’t seem to have taken off amongst the larger applications yet.

I’ll write a little more about my experiences with the Facebook platform soon but it’s great news that it’s being open sourced. It certainly gives me a bit more confidence to use the Facebook platform without worrying about having to rewrite everything at a later date if it appears that OpenSocial sites will dominate.

Javascript Image Effects

The Javascript Image Effects script is stunning. It works by using VML filters in Internet Explorer and the <canvas> tag in Firefox and Opera – the same methods used by Reflection.js.

This library tries to enable different client side image effects. IE has long had its filters, which have provided a few basic effects for IE. With canvas, some of these effects can also be achieved in Firefox and Opera.

Safari lacks the getImageData/putImageData methods on the canvas 2d-context, so only the very basic flipping effects will work on this browser. The functions are present in the latest WebKit nightlies, however. Likewise, Opera only supports the get/putImageData methods in the beta version (9.50b), so you need the beta to see most of the effects. Check the compatibility column in the table above.

Among the effects available are blur, sharpen, flip, invert colours, find edges, emboss and brightness/contrast adjustment.

I think it’s fantastic that all of these effects can be achieved using <canvas>. However, it appears that the effects are achieved through the manipulation of individual pixels and unless there are dramatic improvements in performance I don’t think this would be practical as an unobtrusive Javascript. However, it could make a fantastic web-based AJAX image editor which would allow you to tweak an image before submitting it using toDataUrl().

If you use the javascript image effect, be aware of the terms of use which prohibit commercial use without permission.

Facebook applications can steal personal data

The BBC discovered that personal details of Facebook users can be easily stolen by applications.

But a malicious program, masquerading as a harmless application, could potentially harvest personal data.
Facebook says users should exercise caution when adding applications. Any programs which violate their terms will be removed, the network said.

The reason why this is worrying is because there are so many pointless applications on Facebook such as IQ tests and random “Which character from Lazy Town/Star Trek are you?” quizzes. And there is no way to tell what they do with your data. Spammers can easily create applications to steal your personal data and all you need to do is to accept an invite. (In fact some applications trick you by setting the text of one of the buttons to “No, thanks” or something so that declining to install the application still leads to it being installed.

Now, Facebook does have a confirmation screen where you can choose which pieces of personal info you’re willing to share with the application. The problem is that you need to make the decision without knowing what the application will do with it and whether the application needs that information in order to function correctly.

I have worried in the past about installing Firefox extensions for the same reason. A Firefox extension has access to your entire computer and private information about the sites you visit, etc. However, I think the Firefox team do a great job of ensuring that bad extensions get weeded out. Mozilla Add-On reviewers presumably check the source code of all submitted extensions (and most extensions are open source unless binary). With Facebook applications, Facebook can’t even access the source code of applications as they are hosted on third party servers.

In fact, the only way we can see of completely protecting yourself from applications skimming information about you and your friends is to erase all the applications on your profile and opt to not use any applications in the future.

Perhaps something for all us Facebook users to think about.

Facebook Relationship Statuses

I found this picture from CollegeHumor really funny. But beyond that, it’s a great commentary on how Facebook and the Social Web is changing people’s relationships and how they communicate with each another.


It’s time for Facebook to introduce a new relationship status: It’s an effing disaster.
(from CollegeHumor)

In fact, a disturbing trend is how some youngsters have switched from splitting up with partners via text to splitting up by changing their Facebook relationship status.

Pure Javascript/Ajax Video Player

The javascript video player is pretty cool and fun, even if it is as the author describes it, “semi-useless”! See demo.

So how does it work? A script exports every single frame from an MPEG movie into individual JPEG files. These are then collected together, base64 encoded and exported into a JSON file. The script then creates image objects for each frame and shows them all in succession. There is no support for sound.

First strategy was to create an Image object for each frame and render it on a canvas element using drawImage(). That worked fine and performance was nice (although Opera used a lot of CPU), but I figured I’d try just using a regular image tag and just change the src property to another data:uri each frame. The change was barely noticeably in Firefox and Safari and it ran a bit better in Opera, so I lost the canvas and stuck with plain old images.

Now, it seems that Firefox will eat up all the memory in the world if you keep throwing new data:uris at the same image tag, which led to another change, so for each frame a new Image object was created and saved for later and as the video played, the previous frame Image was replaced by the new Image object. That seemed to work, but introduced an annoying delay as all these Image objects were created before playing, so I ended up moving the Image creation to actual render cycle where it simply checks if the frame Image has already been created, and if not, creates it.

So this is totally impractical but who cares: it’s cool and a fun experiment. I wish I still had time for experiments like these!

Vivaty: 3D Virtual World for Facebook

Vivaty looks like a really interesting application – it’s a 3D social networking application a little like Second Life but plugs in to Facebook:

Grab your photos and videos – any image from the web – and you’re in. Hang out, chat with friends, watch videos, listen to music, and more. Jump from scene to scene with anyone you invite, your Facebook friends are just clicks away. It’s all in the browser, no waiting for big downloads to install. You’ll be saying “your place or mine?” in no time.

The idea is you create an avatar and a your own “scene” where you can hang out. But Vivaty claims to provide a lot more than just providing live chat. For example, you can add a television to your scene to watch YouTube and then invite your friends over to your scene to watch it together.

The problem with many “social web 2.0” websites is that they don’t have access to your social graph and friends list. This is why I think Facebook is an amazing platform for social web apps and why I would instantly switch over to IM which utilises Facebook’s friends list. I have accounts on sites like del.icio.us, Flickr and Youtube but it’s just not the same: most people don’t have accounts on these sites so it’s much harder to share your photos and videos.

I think Vivaty could take off, certainly amongst the Second Life crowd. I’m not sure whether the typical Facebook user would be interested in Vivaty however: Facebook users tend to be college students at the very youngest and tend to be fairly busy people.

Maybe somebody would be interested in beta testing Vivaty but otherwise: one to watch!

Instant Messenger Wishlist

I love instant messaging for it’s speed, low costs and ease of keeping in touch with others. But here’s my wishlist:

  • Facebook Friend List: The main reason I use MSN Messenger because all of my friends live on it. Not because MSN is a superior network; in fact it can often be frustrating when the MSN network goes down across the world. It really doesn’t matter how technically superior your protocol or client may be – it’s whether you can actually get the job done: to chat with the people you want to. Saying that, my friends list does not live on MSN – in fact my MSN contact list is a small subset. Instead, it lives on Facebook. For me, the perfect IM client would allow me to everybody on my friends list – not just those on the MSN list. So support for the Facebook Friends list.
  • Distributed Network: Nothing is more frustrating than MSN Messenger downtime. It’s true that in many ways it’s positive: I wouldn’t be surprised if GDP and grades would double overnight if MSN Messenger went down. But there are the times you really need it and it’s just not working. Jabber/XMPP has a distributed network but it falls short on the lack of a decent client and users.
  • Integration with Social Web: I often get invites to events via Facebook these days and many of my friends also maintain blogs or “Twitters”. It would be great for these to be integrated into IM: after all IM is a social utility.
  • Selectively Online: Until recently, it has been impossible to talk to people on MSN Messenger without first coming online. That means when you just want a bit of help with your maths homework on matrix transformation, you open yourself up to conversations with the people you met at summer camp five years ago or a distant cousin, who as much as you’d love to chat to, the assignment is due in in a couple of hours. It’s why college students both love and hate IM as it is built for procrastination. These days, you can “appear offline” in order to achieve the same effect, but wouldn’t it be great if there was some way of appearing online to just your maths class?
  • Smarter Statuses: You might be reading about the Gay and Lesbian Kingdom of the Coral Sea Islands or the history of the Circle Line on the London Underground. Or perhaps you’re filling in a tax return online and setting up direct debits on your bank website. In the first case, you probably don’t mind being distracted, but in the second case it could be a costly distraction. It would be fantastic if a smarter IM programme could try and work out whether you want to be distracted. If I’m working on a 10,000-word essay due in tomorrow morning, the IM programme could be more subtle: silencing alerts and displaying messages as a system tray icon rather than a flashing taskbar item perhaps.

Online Social Networks and Email

The Economist runs a fantastic article this week about online social networks. The article compares online social networks today to web-based email services last decade.

I think it’s interesting how Facebook isn’t actually worth much; the biggest asset of Facebook perhaps is the social graph. This is the “web” of connection between different people. I’ve discussed this in the past, my online social graph lives on Facebook. This is why I would instantly switch to an IM client which utilised Facebook’s social graph with a seamless interface to other IM networks.

But it is true that the quality of social graphs tend to decrease over time. It takes time and effort to update your social graph which nobody does. I’ve actually seen it in my usage of Facebook applications. Some applications will ask you questions about your friends and probably more often than not, I barely even know the person it’s asking me about.

But it looks like the guys at Mozilla Thunderbird have a fantastic new vision for e-mail as an online social network:

“E-mail in the wider sense is the most important social network,” says David Ascher, who manages Thunderbird, a cutting-edge open-source e-mail application, for the Mozilla Foundation, which also oversees the popular Firefox web browser.

That is because the extended in-box contains invaluable and dynamically updated information about human connections. On Facebook, a social graph notoriously deteriorates after the initial thrill of finding old friends from school wears off. By contrast, an e-mail account has access to the entire address book and can infer information from the frequency and intensity of contact as it occurs. Joe gets e-mails from Jack and Jane, but opens only Jane’s; Joe has Jane in his calendar tomorrow, and is instant-messaging with her right now; Joe tagged Jack “work only” in his address book. Perhaps Joe’s party photos should be visible to Jane, but not Jack.

He goes on to talk about privacy:

This kind of social intelligence can be applied across many services on the open web. Better yet, if there is no pressure to make a business out of it, it can remain intimate and discreet. Facebook has an economic incentive to publish ever more data about its users, says Mr Ascher, whereas Thunderbird, which is an open-source project, can let users minimise what they share. Social networking may end up being everywhere, and yet nowhere.