s-FACEBOOK-POKE-JAIL-large1

Facebook Patents RSS-like Technology – Is That a Joke?

First thing first, Facebook did not patent RSS but their news feed on their site!!! I have to admit, this is a quite neat feature and what would be the point of  a social (networking) site if you did not know what your entourage were upto. So Facebook included a friends activity log (news stream) to make it easy for people to find out. Thats a good feature but it’s by no means an innovative technology. DZone, a developer social “networking” site provides a log about news that users have posted, commented on and rated. This is to show that there’s nothing innovative about that feature but a convenience.

I have been very busy lately and did not have time to check my Google Reader but I did today. And voila! I see the news flash from Mashable – Facebook Secures Patent for News Feed. My first reaction, based on the title before I even read the article, was WOW!!! Facebook managed to patent RSS or ATOM or anything else on that scale. Then came the joke when I started to read the article specially the abstract of the patent:

“A method for displaying a news feed in a social network environment is described. The method includes generating news items regarding activities associated with a user of a social network environment and attaching an informational link associated with at least one of the activities, to at least one of the news items, as well as limiting access to the news items to a predetermined set of viewers and assigning an order to the news items. The method further may further include displaying the news items in the assigned order to at least one viewing user of the predetermined set of viewers and dynamically limiting the number of news items displayed.”

I don’t know about you genius guys but I could not make much sense of the abstract but I did pickup a few keywords such as:

  • News Feed
  • Social Networking

That’s it! Everything else is just pure jibberish. I can summarized their abstract as follow:

We know about RSS/ ATOM which are real news feed. RSS provides real-time (depending on how often you poll) updates; can that be classified as a site master activity update. It also includes links and media about the site or users generating the feeds. That’s a cool feature and we copied the idea and implemented in our site, now we are the biggest community site in the western hemisphere so we are telling not to use any RSS or derivated technology when building a community site (social networking).

Let’s face it, I feel sorry for the smaller community sites but I do not think that patent will affect Twitter or Google but watch out MySpace. I did not even know you could patent someone else already patented technology. This is not a new way of doing something but more like patenting the environment where the technology is applied. To be very geeky about this, Facebook News Feed are just a bunch of SQL queries displaying latest records on a User Interface. I did not know you could even dare trying to patent that. To be frank, I am not sure that they could have patented that in Europe. I am looking forward to seeing how to will now exercise their new POWER. What would happen to Ning, BuddyPress and Elg, those are software and platform used to create social site but what about Youtube and UStream. Anyway site operating within the US and implementing the patent features of Facebook will have to pay them. But outside the US territoty, those company would be free to operate. How to you control access to the Internet without censoring like China and Iran?

Anyway, this is just my opinion but you are welcomed to share yours with the rest of us. For now, why not read about RSS here and see exatly what I am talking about.

openid-1

Dummies Guide to GWT and OpenID – with example code

Once (?) in awhile, we developers browse the web for some quick and dirty solutions to some of our coding problems (sometimes not even problems, right?). This is another of those days, everything was going fine on this project I am currently working on. This is not a social networking sites but a site for sharing and comunicating (how I missed the days of the chatrooms) similar in many aspect to Digg and DZone but which also allows users to communicate in realtime and leave comments. So the back-end was sort of completed but so now time to focus on the user registration.

The sites needed to be open and avoid repeatitive tasks such registering users. The way forward was to implement some authentication to allow users to register with some sort of universally accessible ID (or sort of). Facebook Connect, OpenSocial and Google Accounts have their advantages but to me personally; the disadvantages outweight the pros. These are some of the disadvantages of those platform:

  1. Facebook is a popular site hence is its platform, Facebook Connect, in mostly Europe and America but not everybody in Europe and America have a Facebook account.
  2. OpenSocial, when it comes to single logon, has more advantages than Facebook. I supposed that if we do take into consideration all the OpenSocial sites, we might have apossible larger user based than supporting Facebook alone. Even that was too limited.
  3. Google Accounts, one thing Google does not advertise its user base. I could be wrong but do anybody actually knows how many people uses the various Google services (excluding search). Google has the same disadvantages as Facebook.

Enter OpenID. OpenID has been around longer than most Internet-based decentralised authentication platform. The beauty of this platform is that it also supported by most (if not all) large site on the Internet. From AOL, BBC, CNN to YAHOO and ZIMBRA, as I said most sites (based on the alphabet) support OpenID, check the OpenID Directory. It was recently announced that OpenID has reached 1Billion enabled accounts (read here). Based on those figures, I decided that OpenID for now was the authentication choice for this application. I will not be discussing any security issues in this entry, there are plenty of resources available on the Internet for that.

OK, so I am a Java developer and I am developing the front-end using GWT and Java on the server-side. I searched on the Internet for solutions on how to implement the authentication as GWT RPC are different to normal servlet call. I spent more time reading about the OpenID specification and implementations examples on the Internet. I have to admit that some of tutorials that I found on the Internet were somehow confusing and not helpful at all. Therefore I decided to write my own Dummies Guide to GWT and OpenID.

Dummies Guide to GWT and OpenID

First of all, it is important to know how OpenID works (please check the OpenID site for more info).

In a nutshell, OpenID allows you to authenticate with website (supporting the standard) with just an URL and voila. Your URL has to be hosted by an OpenID provider in order for it to work. For example, my blog is hosted by Google on blogspot.com. Google supports OpenID authentication therefore if a reader wanted to leave a comment on my blog, he does not have to have a Google Account as he can log-in with his Yahoo or AOL or Facebook or WordPress or any other OpenID provider sites, and then leave a comment, that simple.

GWT to OpenID and back

There are two ways to authenticate a user with an OpenID provider and GWT supports both. When authenticating a user, the relaying site (the site the user is trying to access) redirects to user to the OpenID provider (i.e. Google) login page.

The problem will be with the GWT RPC mechanism. GWT RPC calls are asynchronous and you cannot make any redirections. Therefore we need a way to execute the redirection from the client side, here is the code (I use OpenID for Java to handle the openID discovery from the RPC servlet), I then used USER object (just a simple POJO which only stores the redirection URL and the parameters) to be sent back and forth between the front-end and back-end.

#######################################################
public User authenticateOpenId(String provider_url) {
    try {
        ConsumerManager manager = new ConsumerManager();
        // This is the URL where the OpenID provider will redirect the user
        // once logged in.
        String returnToUrl = “http://localhost:8084/GwtOpenId“;
       
        // the provider URL will be used to identify the user OpenID provider
        List discoveries = manager.discover(provider_url);
        DiscoveryInformation discovered = manager.associate(discoveries);
        // OpenID 4 Java needs to  have an HttpServletRequest object, GWT sevlet 
have
        // convenient methods to retrieve the HttpServletRequest object 
and manipulate its
        // parameters
        this.getThreadLocalRequest().setAttribute(“openid-disc”, discovered);
        this.getThreadLocalRequest().setAttribute(“openid.mode”, “popup”);
       
        AuthRequest authReq = manager.authenticate(discovered, returnToUrl);
        FetchRequest fetch = FetchRequest.createFetchRequest();
        // I want to exchange the following attributes from the OpenID provider
        // remember that teh attribute will be returned only if it exits
        fetch.addAttribute(“email”,”http://schema.openid.net/contact/email“,true);
        authReq.addExtension(fetch);
        // Simple POJO to persist the data
        User user = new User();
        // In a normal servlet development, the following statement would make
        // a redirect call but this would not work when using GWT RPC
        if(!discovered.isVersion2()){
            user.setRedirect(authReq.getDestinationUrl(true));
            // fakes the redirect by sending the POJO with the required parameters
            // to make a client-side redirect
            return user;
            } else{
            user.setParams(authReq.getParameterMap());
            user.setRedirect(authReq.getDestinationUrl(false));
            // fakes the redirect by sending the POJO with the required parameters
            // to make a client-side redirect
            return user;
        }
        } catch (MessageException ex) {
        Logger.getLogger(GWTServiceImpl.class.getName()).log(Level.SEVERE, null, ex);
        return null;
        } catch (DiscoveryException ex) {
        Logger.getLogger(GWTServiceImpl.class.getName()).log(Level.SEVERE, null, ex);
        return null;
        } catch (ConsumerException ex) {
        Logger.getLogger(GWTServiceImpl.class.getName()).log(Level.SEVERE, null, ex);
        return null;
    }
}
#############################################################

The above codes will format the request in order for the front-end to execute a redirect and allow the user to authenticate with his OpenID provider. Now here is the front-end code which executes the authentication and reads the data back.

#################################################################
// This is an extract from the openidEntryPoint.java

// This is where the magic happens – This code is only usefull when the OpenID 
provider
// redirects the user back to your site – please visit openid.net for valid 
parameters.
// The “if” statement checks to make sure that it is a valid response from 
the OpenID
// provider – You can do anything you want with the results here such 
as verifying the
// response with the server-side code
if(Window.Location.getParameter(“openid.rpnonce”) != null){
    String s = Window.Location.getParameter(“openid.mode”);
    // executes this if the user cancels the authentication process and the OpenID
    // providers returns to the your site
    if(s.equals(“cancel”)){
        sign.setText(“Server returned openid.mode=cancel”);
        openIdUrl.setText(“You need to Accept not Cancel”);
    }
    // Here, I am assuming that everything is fine and that the user has 
been sucessfully logged in
    else{
        sign.setText(“You have successfully signed in”);
        vp.setVisible(false);
    }
   
}
RootPanel.get().add(contentPanel);

}

private class UserAsyncCallback implements AsyncCallback<User> {
   
    public void onFailure(Throwable caught) {
        Window.alert(caught.getLocalizedMessage());
    }
   
    public void onSuccess(User result) {
        if (result != null) {
            //                    Window.open(result.getRedirect(), “_blank”,
 “height=200,width=400,left=100,” +
            //                            “top=100,resizable=no,scrollbars=no,
toolbar=no,status=yes”);
            // this the most important line in order to make the authentication.
 Here, I am redirecting the user
            // from the client side to the OpenID provider URL with the discovery
 data generated from the
            // RPC call to the servlet.
            Window.Location.assign(result.getRedirect());
            } else {
            Window.alert(“Ooops!!! Couldn’t find your provider”);
        }
    }
}
#######################################################################################################

I have attached the full NetBeans project with dependencies. The code is provided as-is and use at your own risk ;). Here is a screenshot of the working application:

Step1: Authenticate on the site (enter the URL)
moz-screenshot-6

Step2: Redirect to OpenID provider (Google is my provider 🙂 ), authenticate with your provider
moz-screenshot-7

Step3: Allow the application to access your OpenID details and redirect back to the original site
moz-screenshot-8

Step4: final step, check the parameters from the provider and proceeds accordingly
moz-screenshot-9

Take a look at the URL in each of the above step to see the OpenID data. OK, so my code actually works (yuppie), now you know that it is possible form GWT to OpenID and it’s not as complicated as many other sites are trying to show. The code is just for authentication but once authenticated, you can retrieve any parameters that you need. In this example, the query is sent through the browser URL (GET) but you can change it to be encoded in a form submit action. Iwrote some of the code to allow the user to authenticate via a popup window, the code is not complete and maybe someone else might want to have a go. My only problem is getting the redirect back to the original window but apart from that it works.

Download the source code

I hope you guys enjoyed it and Happy Coding.

Web-WWW-©-Scanrail-Fotolia.com_

URL Shortner Service – how to monetize?

In the world of microblogging where users are trying say more with less, it is important that the resource url do not take more than the actual message. Enter the “URL Shortner Services” such as Bit.ly, is.gd, TinyURL among others, to the rescue to shortened those long URLs. From a user point of view, this is not much life to shortener services once the url has been turned to a small set of characters. I personally do not believe that anybody uses url shorteners outside the microblogging realms. We all know that there is no such thing as a free service, especially if you are looking for the service to stick around for a while. Therefore one question comes to mind, how can we make monetize the service.

I was at bar in Canary wharf with one of my investment friend when we were discussing several monetization ideas in regard to social networking based businesses. Obviously, Twitter was discussed but then the conversation shifted toward the third party apps built for Twitter and microblogging sites.

I am sure that anybody using Twitter has come across those funny urls in twits. When you clicked a link, there is a redirection from the url hosting server to the original source. So how can we monetize this service? That same question again. Here are some ideas and you are welcome to agree or disagree.

  1. charge microblogging site and third party developer to use the service and implement a free quota. I do not personally see how this is going to work as the microblogging site are currently in the driving seats. This option might not be viable for the url shortener service providers.
  2. when a shortened url has been clicked, the hosting server should redirect them to their site and present the user with an advertisement which will be displayed for a few second or until the user clicks it off. The ads have to be targeted the user this might involve parsing the title of the original source for keywords. This solution might be a good approach but how will user react to this. It can put them off therefore the services might have to offer some incentives to the url referrer.
  3. This probably the simplest way and less intrusive from a user’s perspective. When a user clicks on a link, the original site should be opened into a frame which is integrated into url shortener service provider’s site. The top frame of the window could display some ads.

The above are just some suggestions and they might not even be feasible or might be receive with hostility from the community but it is worth trying. Here is my final option:

  • Twitter should implement is own url shortener service where the destination page will be displayed within a frame simialr to option 3 above. Or twitter should open all links within a frame and advertise similar to option 3 but this time without cutting out the the third party url shortener service providers.

That’s all folks!

The Anatomy of Twitter Automated Mass Direct Message

So Twitter is the new web phenomenon and it is still shy of its third birthday. Since it has come to the scene, we had heard much about it in the media; about its popularity and security breach. So what is twitter? This is how I define it:

  1. It is a social (networking) site J where users can send short messages to each other in the same manner as SMS (short message service) and mainly targeted to the mobile market; but a lot of people still use the web to twit messages including myself.
  2. It is a “PUSH” application where when a user publishes a message all the registered interested parties will automatically receive a copy’ this is almost similar to RSS feeds. When using the Application Programming Interface to develop third-party client, it then becomes a “PULL” based broadcasting system.
  3. It is also a marketer best friend ( but I do not see how Twitter as a company can monetize on it), people on Twitter are more likely to click on a URL link, due to the fact that only 160 characters are allowed, either by curiosity or in hope to find out more about the subject of the twit.

The popularity of Twitter is a funny one. When the web first surfaced, technologists were discussing its lack of multimedia and its static type, then came Youtube and Facebook among others. Twitter on the other hand is based on text and that’s all! Takes much of its features from SMS but it does not even allow for smillies L
J but I am sure that they are probably working on that and hopefully it will not cause any problems to Twitter current internal commands.
Anyway getting back to the subject at hand (see blog title), let me explain how to implement automated direct messages on the Twitter platform.
Twitter has some cool functionalities but it has a lot of restrictions. First, there are two types of messages available on the platform:

  1. Public Messages – this type of messages can be viewed by anyone with an account on twitter.
  2. Direct Messages – these messages are private messages that you send to people and hidden from the public stream. They are a good of making sure that the recipients notices (not sure they will read it but that’s a start).

The platform allows you to monitor (tracking) words in the public stream which is very useful if you are running an automated Mass Direct Message campaign. So how does the mass message works?

  1. You can only send DM to people who are friends define by Twitter as:
    1. Friends are those who follow you and reciprocal meaning you need to be following them as well.
  2. Mentions and Replies messages are very useful for automated messages and will be of greater value if you do not have many friends.

To have an automated mass Direct Message, you need to do the following:

  1. Setup a (ro)bot which tracks certain words on twitter.
  2. Every time a track word is flagged, the bot should send a public reply to the originator.
    1. A public reply will make your message available in the public stream.
    2. A mention of the message originator will bring your message to his attention thus a very good marketing tool.
  3. Use a bot to send a DM messages to all your followers to make sure that they have a look at what you have to say.

Nothing is guarantee but when I run a test for a friend online shop, he was getting at least 100 visitors a day when he usually only gets about that a month or so. They are tools that can do the job but there is a chance of you getting banned by Twitter.
I have written a working prototype in JAVA, so it should be able to run on any platform, get in touch with me for a copy. It is free but I do not want to post it online in case it against the Twitter terms and conditions. You can also DM me on @armelnene.

36_1_37

London Start-ups TechWorld Event April 09

ETAPIX Global Ltd is sponsoring the London Start-ups TechWorld Event on 9 April 2009.

London Start-ups 2.0 TechWorld Event aims to build a platform where technology and Internet start-ups can gather together to exchange knowledge, network and reward innovations through funding partners.

If you are a Start-up company based anywhere on this globe and looking for partners, funding or just the right guys to transform your ideas into the real thing, then this event is for you. This is a chance to showcase your ideas, projects and or company in front of well selected panellists. There is only one catch; your business or idea has to be Tech or Internet related.

Our panellists have several years of investment and knowledge of Tech start-ups and can provide support through financing and workshops for your next BIG thing.

The videos will be broadcast live on USTREAM.com and all exhibitors will have their details forwarded to our network of partners for further promotion.

London Startup 2.0 TechWorld Event

Thursday 9th April 2009 at 18:00-22.30

EXPRESS BY HOLIDAY INN
LONDON – LIMEHOUSE see map

469-475 The Highway
London
E1W 3HN

We booked a conference room in Docklands London. We only have limited places available so hurry and get your ticket now @ http://www.urgoing.to/londonstartups
You can also join our hundreds of members on Facebook LinkedIn Smarta
or follow me on twitter @armelnene for an update.

Ticket : £15.90 (Exhibitors)
Ticket: £10.73 (Networkers and Guests)

TICKETS HAVE TO BE PURCHASED PRIOR TO THE EVENT.

NO TICKETS WILL BE SOLD ON THE DOOR.

Click here to see a list of the panellists including a short biography.

See you there and have your business cards ready.

I am not a geek… you are nerd

Social

10 reasons why Facebook, Bebo, Orkut etc… are not profitable

Everytime I visit a startups’ meetup, I meet some aspiring entrepreneurs who tell me that they have the next killer app that will take over…

So what is that application you are talking about?…Another social networking site?

I, personally, do not believe that social networking sites make real sustainable revenue. Let me outline some points so that we can discuss and share:

  1. Users registration is free and nobody pays for premium services so don’t offer them.
  2. Advertisement is profitable as long as operating expenses stays low.
  3. A sucessfull social networking site (in terms of population) means higher operating expenses.
  4. Users do not click on advertisement and found them quite annoying… This leads to unsuccessfull ads campaign and clients extraction.
  5. Not everyone has an IPhone or PDA. Not even 1% of users access their data on the go and what is the business model here? NOTHING!!! I thought so.
  6. Also, Fan pages and groups are killing advertisements revenue specially on facebook as they are available free of charge.
  7. Because of various laws and regulations, users data cannot be sold to third parties for their own use, another closed revenue stream.
  8. No control over copyrighted material that users upload. This will eventually lead to law-suit which can clause your business.

I suggest that if you planning to start your own social networking site, try to have a real business model and most importantly a business plan. If it makes sense on a business plan, I think traditional lenders will be interested.

If your main goal is to try to sell your business to larger organisation just like Bebo and the rest, then you might have to be more creative. Think what is the difference between MySpace and Facebook? If you site is Facebook compliant then I guess your chances are limited as you become dependent on a bigger player.

I gave 8 reasons as I will let you guys come up with the other 2 reasons. I am sure that this post will make you realise something or two, next time you or a friend are thinking of making a social networking site just concentrate a the business model = revenue stream, before you venture into the wild.

The above are just my opinion and are not based on extensive research but discussion with some VCs, news and blogs.

Twitter is a way of bombarding the world with an endless stream of self-serving mini-messages. According to the click mavens at Hitwise, it’s now the 84th most visited site on the web, and co-founder Biz Stone says the company sees twice as much traffic through its APIs.

But its 140-character “Tweets” aren’t conducive to advertising. And since it’s always been a free service, the pundits can’t imagine Twitter ever making money on subscriptions.

Bebo sale
twitter revenue
Social Networks and Profitability

UPDATE – Making money on a social network – BBC News

UPDATE: Are Facebook Ads Going to Zero? Lookery Lowers Its Guarantee to 7.5-Cent CPMs.
Facebook Connect + Facebook Ads = A Social Ad Network

Technorati Tags: , , , , , ,