Share your knowledge and create a knowledgebase.

Archive for the ‘Industry News’ Category



There are a bazillion social network aggregators out there (Mike attempted to round up some of the most notable ones here). FriendFeed is the most visible of them all for two main reasons: it was founded a group of ex-Googlers and, as a consequence, benefits from a clean and easy-to-use design.

But FriendFeed’s going to have some serious competition from a TechStars startup called Socialthing!, which makes it even easier to get an overview of what your friends are doing on the web.

Socialthing! officially goes into private beta today and will let in the first 1,000 TechCrunch readers who use the invitation code “TechCrunch” to sign up (you’ll have to wait a few days to get your account, however). The service primarily differs from FriendFeed in the way it determines which of your friends to track. While FriendFeed actually requires users to create their own list of friends on FriendFeed, Socialthing! realizes you probably don’t want to create yet another list of your friends. So instead of asking you to do more work, it automatically detects who your friends are on the social services to which you belong.

The distinction may sound inconsequential but Socialthing!’s method actually makes things a lot easier, both for initial set up and for longer term maintenance. When you sign up for Socialthing!, you only have to provide it with your credentials to sites like Facebook and Pownce. And as time goes by, you don’t have to worry about setting up new friends on the service because it will automatically know that you’ve become friends with people elsewhere. In contrast, FriendFeed requires you to both explicitly designate friends during the initial configuration (either one-by-one or through Facebook/Gmail importing) and manually add new friends over time.

Another benefit Socialthing! has over FriendFeed is its focus on allowing users to send data back to social services (if you want to respond to someone’s tweet, for example, you can do so directly from Socialthing!). On the other hand, FriendFeed is all about reading data from services but not about writing it back.

While FriendFeed generally takes more effort, its approach does have unique advantages. You can follow friends of friends on FriendFeed and see updates from services that you don’t personally use, all because FriendFeed users have more independently-defined presences. FriendFeed also supports a wider range of services than Socialthing! (28 vs. 11, although Facebook updates are noticeably lacking from FriendFeed). Time, however, should narrow the gap.

In the end, whether FriendFeed succeeds more than Socialthing! will depend on whether people are looking for another community or just a way to easily track their existing ones. I suspect the latter will be the case.


Apr 2, 2008 Author: Ashish | Filed under: Industry News

FriendFeed is the new hotness and many people have asked for an API to take the service to the next level. There aren’t any example apps built yet, nor has there been much developer feedback yet. A whole lot of things just became possible, though.

As for technical details: FriendFeed is first releasing Python and PHP libraries, there’s an undisclosed access limit and oAuth authentication is "coming soon" (we hope so).

If you’re less than on fire about APIs and their potential - check out our post called APIs and Developer Platforms, A Discussion of the Pros and Cons - and know that 16 of the 18 authorities quoted in that post were interviewed entirely through a 3rd party Twitter client using that API.

If you’re a Twitter user you know how essential to Twitter that company’s API has become, an estimated 80% or more of Twitter use comes in through the API and the constellation of 3rd party services that leverage it. The FriendFeed API may be the most eagerly awaited since Twitter’s

This Aint Just RSS Readin’

Casual users should take note that FriendFeed is far more than just an RSS aggregator. Check out the podcast and transcript of our interview with the company’s founders in early February for details. See also my recent interview with RSS keystone Dave Winer, where we discussed FriendFeed more than anything else. You’d have seen it already if you were my friend on FriendFeed.

Commenting, feed and item display, liked-by-a-friend item exposure and a smooth friend recommendation path are some of the key differentiators of FriendFeed. In February at least, only 70% of the feeds coming into FF were RSS feeds, too. The rest are from other kinds of 3rd party APIs that the FriendFeed team has tied into by hand. There are many different Lifestreaming apps, but FriendFeed has a lot of momentum, a good user experience, renders well on mobile and has caught peoples’ imaginations. It’s also got some heavyweight backers.
The Possibilities

Some of the examples from the FriendFeed announcement are these:
"[The API is] designed to make it possible for anyone to improve FriendFeed or integrate FriendFeed into other applications. You can develop a FriendFeed interface for a mobile phone, build a FriendFeed widget for your blog, or develop an application that makes it easy to post photos to your feed from your iPhone."

I’m cheering for an Adobe AIR desktop interface, APML import/export and some sophisticated item-level recommendations. How about a FriendFeed/Imeem mashup? I’d love to listen to a streaming radio station of all the music that my FriendFeed friends favorite on their respective music networks. Oh the possibilities are many. This is a very exciting announcement.

Requests and Data Formats

All requests to the FriendFeed API are simple HTTP GET and POST requests. For example, you can fetch the JSON version of the most recent 30 public entries published to FriendFeed by fetching http://friendfeed.com/api/feed/public.

All of the API requests that output feeds are available in four formats: JSON, a simple form of XML, RSS 2.0, and Atom 1.0. JSON is the default output format. To request a different output format, simply add an format= argument to the URL:

    * http://friendfeed.com/api/feed/public?format=json
    * http://friendfeed.com/api/feed/public?format=xml
    * http://friendfeed.com/api/feed/public?format=rss
    * http://friendfeed.com/api/feed/public?format=atom

The other API requests, like posting a new comment on an entry, only support the JSON and XML output formats since they do not output feed-oriented data.

Authentication

If you are publishing data to FriendFeed or if you are requesting the feed that includes data from a user with a private feed, your HTTP requests must be authenticated.

All FriendFeed users have a Remote Key to provide third party applications access to their FriendFeed. A FriendFeed Remote Key is just like a password, except that it is only used for third party applications, so it only provides access to the functionality defined by the API. Users can easily reset it if a third party application abuses the API.

All requests that require authentication use HTTP Basic Authentication. The username should be the user’s nickname, and the password should be the user’s Remote Key. You can direct user’s to http://friendfeed.com/remotekey to get their remote key if they have not memorized it. See the FriendFeed API Application Guidelines for a complete set of recommendations of how to present authentication in your application.

The Python and PHP libraries available at http://code.google.com/p/friendfeed-api/ implement authentication for all methods that require it.

Remote Key

A remote key is a kind of password that you can give to third-party applications and websites to let them interact with FriendFeed on your behalf. There are limits to what can be done using a remote key, which means it’s a lot safer than giving a site your FriendFeed password.

JSON Callbacks

The JSON output format supports an additional argument callback= that wraps the JSON output in a function call to a function of your choice. This functionality is available to enable you to use the API with JavaScript within a web browser. For example, http://friendfeed.com/api/feed/public?callback=foo outputs:

foo({"entries":[...]})

Using JSON and callbacks, you can place the FriendFeed API request inside a <script> tag, and operate on the results with a function elsewhere in the JavaScript code on the page.

All authentication is ignored if the callback= argument is given, so JSON callbacks only work with public feeds.

Reading FriendFeed Feeds
Overview
Feed Formats

The JSON form of the feeds has the following structure:

    * entries[]
          o id - the FriendFeed entry UUID, used to add comments/likes to the entry
          o title
          o link
          o published
          o updated
          o user{} - the user who shared this entry
                + id - the user’s FriendFeed UUID
                + nickname - the user’s FriendFeed nickname, used in FriendFeed URLs
                + profileUrl - the user’s profile URL on FriendFeed
          o service{} - the service from which the entry came
                + id - the service’s FriendFeed ID, e.g., "picasa"
                + name - the service’s official name, e.g., "Picasa Web Albums"
                + profileUrl - the user’s profile URL on this service
          o comments[]
                + date
                + user{} - same structure as the user{} structure above
                + body - the textual body of the comment
          o likes[]
                + date
                + user{} - same structure as the user{} structure above
          o media[] - the videos/images associated with the entry
                + title? - the title of the media file
                + player? - the player for this media file (e.g., the YouTube.com URL with the embedded video)
                + thumbnails[] - the thumbnails for this media file
                      # url
                      # width
                      # height
                + content[] - the different versions of the media file
                      # url
                      # type - the MIME type of the media file
                      # width
                      # height

The simple XML format (output=xml) has the same structure as the JSON. The RSS and Atom formats use the standard RSS and Atom attributes for title, link, published, and updated, and include extension elements for all of the other meta-data.

Dates in JSON and dates in the FriendFeed extension elements in the Atom and RSS feeds are in RFC 3339 format in UTC. You can parse them with the strptime string "%Y-%m-%dT%H:%M:%SZ".

Filtering & Paging

All of the feed methods below support the following additional arguments:

    * service - only return entries from the service with the given ID, e.g., service=twitter
    * start - return entries starting with the given index, e.g., start=30
    * num - return num entries starting from start, e.g., num=10

Methods

/api/feed/public - Fetch all Public Entries

Returns the most recent public entries on FriendFeed:

http://friendfeed.com/api/feed/public

Using the FriendFeed Python library:

service = friendfeed.FriendFeed()
feed = service.fetch_public_feed()
for entry in feed["entries"]:
    print entry["title"]

/api/feed/user/NICKNAME - Fetch Entries from a User

Returns the most recent entries from the user with the given nickname:

http://friendfeed.com/api/feed/user/bret

If the user has a private feed, authentication is required.

Using the FriendFeed Python library:

service = friendfeed.FriendFeed()
feed = service.fetch_user_feed("bret")
for entry in feed["entries"]:
    print entry["title"]

/api/feed/user/NICKNAME/comments - Fetch Entries a User Has Commented On

Returns the most recent entries the user has commented on, ordered by the date of that user’s comments:

http://friendfeed.com/api/feed/user/bret/comments

If the user has a private feed, authentication is required.
/api/feed/user/NICKNAME/likes - Fetch Entries a User Has "Liked"

Returns the most recent entries the user has "liked," ordered by the date of that user’s "likes":

http://friendfeed.com/api/feed/user/bret/likes

If the user has a private feed, authentication is required.
/api/feed/user/NICKNAME/discussion - Fetch Entries a User Has Commented On or "Liked"

Returns the most recent entries the user has commented on or "liked":

http://friendfeed.com/api/feed/user/bret/discussion

If the user has a private feed, authentication is required.
/api/feed/user - Fetch Entries from Multiple Users

Returns the most recent entries from a list of users, specified by nickname:

http://friendfeed.com/api/feed/user?nickname=bret,paul,jim

If more than one nickname is specified, the feed most recent entries from all of the given users. If any one of the users has a private feed, authentication is required.

Using the FriendFeed Python library:

service = friendfeed.FriendFeed()
feed = service.fetch_multi_user_feed(["bret", "jim", "paul"])
for entry in feed["entries"]:
    print entry["title"]

/api/feed/home - Fetch the Friends Feed

Returns the entries the authenticated user would see on their FriendFeed homepage - all of their subscriptions and friend-of-a-friend entries:

http://friendfeed.com/api/feed/home

Authentication is always required.

Using the FriendFeed Python library:

service = friendfeed.FriendFeed(nickname, remote_key)
feed = service.fetch_home_feed()
for entry in feed["entries"]:
    print entry["title"]

/api/feed/search - Search

Executes a search over the entries in FriendFeed. If the request is authenticated, the default scope is over all of the entries in the authenticated user’s Friends Feed. If the request is not authenticated, the default scope is over all public entries.

http://friendfeed.com/api/feed/search?q=friendfeed

The query syntax is the same syntax as http://friendfeed.com/search/advanced. The query operators are:

    * who: -restricts the search to a specific user, e.g., who:bret
    * service: restricts the search to a specific service ID, e.g., service:twitter

Using the FriendFeed Python library:

service = friendfeed.FriendFeed()
feed = service.search("who:bret friendfeed")
for entry in feed["entries"]:
    print entry["title"]

Publishing To FriendFeed

All of the calls to publish information to FriendFeed are HTTP requests. You can perform test calls from a web browser using the HTTP Basic Authentication built into your browser at http://friendfeed.com/static/html/apitest.html.

Requests to FriendFeed are rate limited, which, e.g., limits the number and size of thumbnails you can upload in a day. Normal uses should fall well within our rate limits. If you encounter HTTP 403 errors because of rate limits, and you think the limit is erroneous, please let us know in the developer forum.

Create New Entries
/api/share - Publish Links or Messages

A POST request to /api/share will publish a new entry on the authenticated user’s feed. The arguments are:

    * title - required - The text of the new entry.
    * link - The URL of the new entry. If it is not specified, the new entry will look like a quoted message. If specified, it will look like a link.
    * comment - If specified, the given text is posted as a comment under the new entry.
    * imageN_url, imageN_link - The thumbnail images for the entry, specified from a 0-based index. image0_url specifies the URL of the image, which will be resized to the maximum size of a thumbnail and stored on FriendFeed’s servers. If image0_link is not given, the thumbnail will link to the main link URL. If it is specified, the thumbnail will link to the specified image0_link.

Example usage with the FriendFeed Python library:

service = friendfeed.FriendFeed(nickname, remote_key)

# Publish a text message
service.publish_message("Testing the FriendFeed API")

# Publish a link
service.publish_link("Testing the FriendFeed API", "http://friendfeed.com/api/")

# Publish a link with thumbnail images
service.publish_link(
    title="Testing the FriendFeed API",
    link="http://friendfeed.com/api/",
    image_urls=[
        "http://friendfeed.com/static/images/jim-superman.jpg",
        "http://friendfeed.com/static/images/logo.png",
    ],
)

Example usage with curl:

curl -u "nickname:remotekey" -d "title=Testing+the+FriendFeed+API&link=http://friendfeed.com/" http://friendfeed.com/api/share

Upload Images with Entries

The /api/share method can also accept uploaded images encoded as multipart/form-data. This encoding is the standard used for file uploads within web browsers.

If any images are uploaded with the /api/share request, the original and the thumbnail are stored on FriendFeed’s servers, and the thumbnail is displayed with the entry.

By default, the thumbnails will link to the destination link for the entry. If you want each uploaded image to link somewhere else, you can specify the link in the IMAGENAME_link argument. For example, if your uploaded image is POST argument file0, you can specify the link for that thumbnail as file0_link.

Comment and Like Entries
/api/comment - Add or Edit Comments

A POST request to /feed/comment will add a comment or edit an existing comment on a FriendFeed entry. The arguments are:

    * entry - required - The FriendFeed UUID of the entry to which this comment is attached.
    * body - required - The textual body of the comment.
    * comment - If given, the FriendFeed UUID of the comment to edit. If not given, the request will create a new comment.

Example usage from the Python library:

service = friendfeed.FriendFeed(nickname, remote_key)
service.add_comment(
    entry="550e8400-e29b-41d4-a716-446655440000",
    body="Testing the FriendFeed API",
)

Example usage with curl:

curl -u "nickname:remotekey" -d "entry=550e8400-e29b-41d4-a716-446655440000&body=Testing+the+FriendFeed+API" http://friendfeed.com/api/comment

/api/comment/delete - Delete a Comment

A POST request to /feed/comment/delete will delete an existing comment. The arguments are:

    * entry - required - The FriendFeed UUID of the entry to which this comment is attached.
    * comment - required - The FriendFeed UUID of the comment to delete.

/api/like - "Like" an Entry

A POST request to /feed/like will add a "Like" to a FriendFeed entry for the authenticated user.

    * entry - required - The FriendFeed UUID of the entry to which this comment is attached

Example usage from the Python library:

service = friendfeed.FriendFeed(nickname, remote_key)
service.add_like("550e8400-e29b-41d4-a716-446655440000")

Example usage with curl:

curl -u "nickname:remotekey" -d "entry=550e8400-e29b-41d4-a716-446655440000" http://friendfeed.com/api/like

/api/like/delete - Delete a "Like"

A POST request to /feed/like/delete will delete an existing "Like." The arguments are:

    * entry - required - The FriendFeed UUID of the entry to which this comment is attached.

Authentication

If your application requires authentication, you use the following terminology FriendFeed nickname or email and Remote key in your login form. Your login form should contain a link to http://friendfeed.com/remotekey for users who have not memorized their key. It should open in a new window using target="_blank" so that the remote key page does not interrupt your application’s flow.


Mar 26, 2008 Author: Ashish | Filed under: Industry News

Mozilla is on a spree to revolutionize the way we use web applications today, just like Mozilla WebRunner. Naming it as a killer app just wasn’t doing justice to it. So I felt an urge to bring to the notice that it isn’t just any other app.It will be, probably the next biggest thing that the web will be seeing after Ajax.

Ajax had redefined the web application just a couple of years ago. It definitely changed in the way web apps were being developed. This promoted rise of different interesting possibilities that more than widened the eyeball of a regular surfer. Web Operating Systems were at that time being touted as being able to replace the desktop operating system altogether in the future. But all these breath taking ideas have fallen flat to a place where the idea is still traditional. The usage of web browser.

Web applications have and still are web applications and I have not come upon any idea so simple yet so revolutionizing as the WebRunner. To update you upon the news surrounding WebRunner, Mozilla has converted the WebRunner project to a Mozilla Labs Project with a new fascinating name, Prism. When I saw Web Runner I was not amazed at this app itself. My mind was already seeing the future of web applications. It’s behavior was similar to the nature of a desktop application. Yet it ran on the web! It was the perfect example of how we can expect to put our web applications for our future projects.

Mozilla Prism

I think I may be a little too far a bit sooner, but I can see how Prism an impact our surfing lives. Imagine a day, you start your computer in just a moment, without any startup utilities coming in the picture. You have several Prism apps lying on your desktop. You double click an application and it is launched in another moment. This is something I am dreaming of, something which will definitely be backed by todays high speed connectivity and robust network infrastructure.

Well,a question in your mind would be how would Mozilla’s Prism contribute here. The direction I am seeing for Prism is not something out of context from my dream. A lite browser without the unnecessary facilities of the browser like the back button, the menu bar, the history, the bookmarks which only matter while surfing web sites. Prism is just enough to provide the basic foundation for connecting to the web, minus the normal browser behavior, yet retaining the background services like session management and security. Web applications don’t need them and all the more should not be taken care when they are being designed.

Web Apps with Mozilla Prism

Prism comes to mind when we require a web application to work in their own self with the support of the design which the web application has itself provided and not that of the browser. This is a thing of the past where web applications are designed with a thought process of developing a web site. Kind of traditional way which considered styling, the cross browser compatibility and many other aspects which form a part of the web site and not of the web application.

With Prism I am sure that one day the project would take us to a time where web applications would not require any HTML, CSS or JavaScript. It would be just like designing a desktop application just as we do it currently in .NET and Eclipse IDE’s. Drag and drop your required widget, give a theme for the app, and execute the app in Prism and later distribute it as a web application. The users of the Prism would just have the need to Prism app installed on their system. This is just like Java where only the JVM needs to be installed and the Java Programs come to life. Similarly install Prism and the required web application will come to its life.


Mar 24, 2008 Author: Ashish | Filed under: Industry News

Just one day after the completion of the $3.1 billion DoubleClick Inc. acquisition, Google has announced a new, and free, ad serving platform. Called Ad Manager, Google’s newest offering is still in limited beta testing. Once officially launched it will aid small to medium sized businesses with the selling, scheduling, delivery and measurement of their entire directly-sold and network-based inventory.

The Ad Manager service will be offered free of charge, unlike many similar ad serving businesses including DoubleClick’s very own DART.

Ad Manager users won’t be limited to carrying ads from Google AdSense. Ads from other online ad networks can be used and can be in various formats including video, text and display.

Erin Teare Martin, Advertising Manager for Infoplease.com, has been involved in the limited beta. "Using Google Ad Manager, the delivery rate of our ads has improved by 10-15%. Before Google Ad Manager, we were maintaining two servers to keep ads running and they required ongoing maintenance. Since Google Ad Manager is a hosted solution, we have freed up those resources."

Google Ad Manager


Mar 13, 2008 Author: admin | Filed under: Industry News

New Platform Will Enable Developers to Easily Build Rich Applications for Mobile Devices

AOL announced the AOL Open Mobile Platform, which it plans to make available to developers this summer. The new open platform will help stimulate innovation by providing developers with ready access to the tools and source code they need to build and distribute applications across all major mobile device platforms and operating systems including BREW, Java, Linux, RIM, Symbian, and Windows Mobile. As a result, developers will be able to create applications for a wide variety of mobile devices.

The AOL Open Mobile Platform is based on proven technology acquired by AOL that has been deployed across more than 150 different handsets on carrier networks in the U.S. The platform will consist of three components: an XML-based, next-generation markup language; an ultra-lightweight mobile device client; and an application server. A dynamic presentation layer will allow for rapid deployment of new features and easy optimization for a wide variety of mobile devices, allowing developers to build and update applications once, and then distribute them across all supported devices and platforms.

In addition, it will be possible to integrate applications built using the AOL Open Mobile Platform with third-party APIs, as well as with AOL’s open APIs for AIM, AOL Mail, AOL Video, MapQuest, Userplane, Truveo, Winamp, and others. The AOL Open Mobile Platform will also give developers the ability to monetize their mobile applications by utilizing advertising resources, such as clickable banner ads, provided by AOL’s Platform-A.

“The use of mobile services continues to increase at a steady rate and for any developer looking to build applications for this growing space, the AOL Open Mobile Platform couldn’t make it any easier,” said Steve Murphy, Senior Vice President of AOL. “Our new open platform will provide developers with a new breed of tools, including source code, for creating robust mobile services and will encourage product innovation.”

“AOL is committed to providing developers around the world with access to our core technologies which give them the ability to build and deliver innovative new products,” said Kevin Conroy, Executive Vice President of AOL. “Mobile is an important example of how we’re opening AOL’s products to the developer community and providing access to new open tools and source code. As more developers leverage our open technologies, we look forward to seeing exciting new products that serve a global audience.”

The AOL Open Mobile Platform is expected to be available this summer. More information on the AOL Open Mobile Platform can be found at http://dev.aol.com/openmobile.
pular Web destinations, offers a comprehensive suite of free software and services runs one of the largest Internet access businesses in the U.S., and provides a full set of advertising solutions. A majority-owned subsidiary of Time Warner Inc., AOL LLC and its subsidiaries have operations in the U.S., Europe, Canada and Asia. Learn more at AOL.com.


Mar 13, 2008 Author: Ashish | Filed under: Industry News

Advertisement

Adsense