May
11
2011
Twitter allows developers to create applications that integrate with the Twitter platform and use its services. It provides an API that has 3 parts:
- REST API
- Search API
- Streaming API, which is the latest one and allows long connections
Twitter REST API
The REST API is used by Twitter to expose their data as services. Developers can perform HTTP GET requests to obtain data like statuses and user information and HTTP POST requests to add data to Twitter, in case that they develop third-party clients.
Twitter Search API
The Twitter Search API is sued by develop to connect with the Twitter Search facility [1] and query the system for recent Tweets.
Streaming API
The Streaming API allows developers to perform real-time searches for Tweets. They construct queries and filters to make the search more specific.
Twitter into our System
In the scope of the Real-Time Aggregator system, Twitter REST API is more than enough. REST Architecture allows client to perform HTTP requests (POST, PUT, and GET). According to the REST Architecture [2], HTTP GET requests can retrieve resources from the Twitter system. Every strong-typed object oriented language, including Java, provides HTTP libraries that can be used to make such calls. The table below describes some of the most important GET requests that the Real-Time Aggregator will perform.
More information about resources and calls, together with information on how to consume the services can be found on the official Twitter API documentation [3].
Issues to bear in mind
Twitter Rest API has a usage limit and it sometimes constrains users to perform a temperate number of service requests. The limit for not authenticated users is 150 HTTP GET requests per hour, while the calls of authenticated users can be up to 350 HTTP GET requests per hour. The scope of our system contains only unauthenticated HTTP GET requests, performed to retrieve Twitter content. Although 150 requests per hour seem many, the limit constraints our real-time aggregator. In order to avoid any problems, there should be an inactivity period between the asynchronous requests made by our system. In cases that users reach the usage limit, the requests return an HTTP 400 error code (Bad request). The system shall be able to “catch” the error code and inform users.
Twitter Search API has some further limitations, which are mainly due to the date of the tweets that they return and to the complexity of the searching queries. The search queries return tweets, which are not older than a week. It also important that searching calls are not limited to a number of allowed requests. However, if a query is too complex, then an HTTP 420 error is returned informing the programmers about the wrong execution of the query. The system shall be able to “catch” the error code and inform users.
References
[1] http://search.twitter.com/
[2] http://www.ibm.com/developerworks/webservices/library/ws-restful/
[3] https://dev.twitter.com/doc
no comments | tags: development, integration, rest, twitter api | posted in APIs, Social Networks
Mar
25
2011
After giving a first description of our system summarising its requirements, we aim now to provide a more formal narrative description of them. The formal description separates the requirements in functional and non-functional according to their nature.
Functional Requirements
The table below lists the functional requirements of our system, indicating the core, extended and advanced features of our system. Every requirement is assigned a unique id that can be used to identify it. The functionality level indicates the stage of the development that the requirements shall be addressed.
| Req. ID |
Requirement Description |
Functionality Level |
| #RFUN1 |
The system shall allow users to search for a set of keywords and return aggregated results from various social networks. |
Core |
| #RFUN2 |
The system shall be integrated with Facebook and use Facebook data. |
Core |
| #RFUN3 |
The system shall be integrated with Twitter and use Twitter data. |
Core |
| #RFUN4 |
The system shall be integrated with Linkedin and use Linkedin data. |
Core |
| #RFUN5 |
The system shall return user comments about specific keywords. (The keyword can be either a business or a product) |
Core |
| #RFUN6 |
The system shall return the number of followers/friends of specific keywords. (The keyword can be either a business page or a product page) |
Core |
| #RFUN7 |
The system shall be able to analyse the search results and produce graphs and diagrams showing the influence of keywords (business, products) along different social networks. |
Advanced |
| #RFUN8 |
The system shall be able to analyse the search results and produce graphs and diagrams showing the influence of keywords (business, products) across a timespan. |
Extended |
| #RFUN9 |
The system shall be able to analyse the search results and produce graphs and diagrams showing the influence of keywords (business, products) in different locations in the world. |
Extended |
| #RFUN10 |
The system shall allow users to perform a log in. |
Core |
| #RFUN11 |
The system shall use an interactive tag cloud that will include the most common search keywords. |
Core |
| #RFUN12 |
The system shall support an “Advanced Search” feature to allow the users filter their results for a specific date/time interval, as well as results from a specific social network or results of a specific type (e.g. only user comments, only number of followers/people liking the item etc.). |
Extended |
| #RFUN13 |
The system shall be able to analyses the search results for a specific keyword (e.g. business, products) in relation to the experience of the users on specific issues (e.g. “expert” users, “amateur” users) |
Advanced |
| #RFUN14 |
The system shall be able to identify whether returned comments are positive or negative. |
Advanced |
| #RFUN15 |
The system shall use a black list, containing Twitter, Facebook and Linkedin user ids, who are assumed ‘”malicious”, because they tend to support specific vendors. The system shall consult this list before returning any results to users. |
Advanced |
Non-Functional Requirements
The table below defines the non-functional requirements of the system, paying special attention to usability and performance issues. Every requirement is assigned a unique id that can be used to identify it. The functionality level indicates the stage of the development that the requirements shall be addressed.
| Req. ID |
Requirement Description |
Functionality Level |
| #RNFUN1 |
Usability – The system shall have a simple and an easy to use web interface that resembles those of popular search engines. |
Core |
| #RNFUN2 |
Usability – The system shall help the users perform searches by using the tag cloud. |
Core |
| #RNFUN3 |
Usability – The system shall keep a search history for every user to help them recall old searches. |
Advanced |
| #RNFUN4 |
Adaptability – The web page shall have a simple and easy to learn UI. |
Core |
| #RNFUN5 |
Performance – The system shall be responsive and update the content of the page asynchronously and in real-time. |
Core |
| #RNFUN6 |
Scalability – The system shall be scalable enough to serve more than 1000 users. |
Advanced |
| #RNFUN7 |
Reusability – The system shall be easily extendable to integrate more social networks. |
Core |
| #RNFUN8 |
Confidentiality – The system shall encrypt user data before storing them into the database. |
Core |
no comments | tags: analysis, development, requirements | posted in Social Networks
Mar
4
2011
Lots of ideas came up to surface, making the whole project analysis very interesting. Finally we managed to agree upon a more concrete idea that is actually what we have already mentioned in one of our previous posts – but now we have more details at hand.
Idea
The main idea is to develop a real-time social aggregator in which the user will be given the opportunity to search for a set of keywords across the social networks that are supported in our application. We separated the application’s features into three categories: core, extended, advanced features.
Features list
Core
- Social Networks
Our application will initially support Twitter, Facebook and LinkedIn.
- Login System
In order to use the services that our application provides, the user has to log in on our website. We will be supporting OpenID, as well as creating an entirely new account on our website. In both cases, the user will be given the option to link his/her account with the social networks that we support (the user has to have active accounts on the supported social networks).
- Search System
The application will feature a Google-like appearance regarding its user interface (extremely simple to use and practical), which will be available in two modes: simple or advanced. Although the design of the search input will be simple, the mechanism itself will be very sophisticated, thus resulting in high quality information analysis.
- Tag Cloud
There will be an interactive tag cloud of the most popular search keywords so that a user can click on a keyword and automatically search.
Extended
- Results Analysis
The results will be analysed in many possible and interesting ways so that the user can interact with our application and change the way the results are ranked and appeared. We will support results analysis based on: quantity (number of posts/mentions/likes/comments/etc.), date (old/new), social network (apply filters), and area of poster (location-awareness if applicable).
- Advanced Search
Through the advanced search, the user will be able to select a specific date/time interval, geographic location, social network connection type (friend/friend of a friend/anybody), as well as filter results from a specific social network.
Advanced features
- Graphs
For each searched keyword, a graph will be featuring (see the Mockups) the number of posts (tweets, wall posts, etc.) in which the keyword was found along different social networks and across a timespan.
- Search History
The application will keep a search history for statistical purposes – generating tag clouds, graphs, charts, etc.
- Determine Results Quality
We were thinking that it would be really interesting if the application could determine whether the meaning of a result is positive or negative. Our application will support a way of categorising an information as positive or negative, whether it will be a semantic text analysis or a simple keyword search.
- Suggest “expert” or “amateur” users
Another interesting feature would be to further analyse the search results and measure the level of relevance a user has to do with the topic (expert, amateur, etc.). Then we can assume that an expert’s opinion on a subject weights more than an amateur’s opinion.
Mockups

1 comment | tags: aggregator, analysis, development, features, metrics, social, specifications | posted in Social Networks
Feb
13
2011
Social networks have filled up the net in one form or another. Almost everybody around you might want to add you on Facebook, follow you on Twitter, share a picture with you on Flickr or Picasa, have you as a connection on LinkedIn and the examples could carry on endlessly.
If the social networks were initially only for individuals, we clearly now see that companies start to migrate their communication efforts this way as well. The advantages are numerous:
- there are no costs involved for joining a social network (at least not for the core features they provide)
- the company gets instant feedback from its customers (or potential customers)
- it helps the company to become more “customer oriented” and (in some cases) allows the customers to be involved in the making of a new product
- it might offer a company insights regarding the geographical areas where it has a bigger customer base
- it might help observe the competitors’ impact on certain markets and in different areas
However, if the metrics for the WEB 1.0 era when a company’s digital efforts were based only on its website were given by the number of visitors per day (and other factors as number of visited pages, average time for a visit, number of pages viewed per visit, etc.), there aren’t any WEB 2.0 metrics which could show to a marketing director what’s the impact of the company he/she works for. This is partly because companies’ use of social networks is a relatively new marketing technique and also because, given the fact that there is a multitude of social networks, there is no way to easily unify the social graphs they provide for a certain user and the impact a user has made globally.
This is where our project aims to make a change. By using the APIs provided by some of the most known social networks, we would like to develop a tool (we still don’t know its final form – web or desktop application) that would allow a user (be it an individual or a company) to analyse the connections and interactions between these social networks and also provide him/her with relevant data regarding:
- geographic location of “customers”/”fans”
- impact of a launched product or service (by analysing how many people have talked about it on different networks)
- products/services launched by competitors
- users’/customers’ profile
Throughout the posts that will follow you will be able to read about how our project evolves over time and how we will reach to a product (the application) from a sum of a ideas.
Keep calm and carry on!
1 comment | tags: analysis, APIs, development, metrics, social | posted in Social Networks