What is an API some of you may be asking. API stands for application programming interface and is a set of functions or commands used to control a computer programme. Control can be within the existing programme where the API has been created, but importantly an API can be used by external programmes to allow them to communicate with each other (Wikipedia has a more technical explanation of an API).
Having a public and freely available API is becoming a must have for new and existing web services. Technology Magazine has a list of almost 700 Web2.0 APIs, which includes offering from Facebook, Google and even the BBC. This list is long but is not complete and there are new APIs coming out on a weekly basis.
Until recently my knowledge of APIs was concept only with no practical experience. This all changed over the festive break when I decided to roll up my shirt sleeves and push some code. I was spurred on by the discovery of a great web service developed by Hewlett-Packard called Tabbloid.
Tabbloid allows you to submit your favourite RSS feeds it then pulls all the stories together and formats them in a ‘tabloid’ format. The resulting PDF is then conveniently emailed to your inbox either daily or weekly. I was interested in this service because we were looking for a way of automatically creating an attractive PDF version of our fortnightly RSC NewsFeed. [I can also see educational uses or this service. For example, if you have a group of students generating assessed blog posts having a PDF version allows you to automatically create an irrefutable snapshot of the posts.]
While exploring this service I noticed they had a developers page, which within a couple of clicks gave me access to the Tabbloid API. The API allows you to control the RSS feeds you want to include and to make a Tabbloid PDF on demand.
My first experiments with the API were with a standalone application to make a NewsFeed tabloid. It worked well and I could have continued down this line but thought it would be more ‘fun’ to integrate it into the WordPress blog we use for NewsFeed. This required more shirt rolling as it would require coding a new plugin for WordPress using their API. Not satisfied with just trying to get my programme to talk to two APIs I added one more into the mix with integration to Viewer (http://view.samurajdata.se), a web application which generates images from PDF documents.
A couple of late nights later ‘Make Tabbloid’ was born. As a courtesy I emailed the developers of Tabbloid and Viewer, just to make sure I wasn’t doing anything naughty. To my surprise to project manager for Tabbloid got back to me asking to chat. They were very appreciative of my endeavours and were interested in any feedback I had for their API. In the course of the discussion I mentioned I had a problem removing feeds. This turned out to be a bug in their code, which they were quickly able to fix.
So what can we learn from this and what are the implications for higher education? The Internet continues to become increasingly mashable. Openness is allowing huge creativity allowing developers to pull and push together lots of different web services into custom applications. This flexibility is making it possible for educators to develop learning environments which are no longer inward looking but instead integrate themselves with the wider web (e.g. SocialLearn).
This model isn’t without its risks. Only today Google announced that it is axing several of its applications including Notebook and Video (full story on Google’s axed services here). With no service level agreement there is also no guarantee that a 3rd party service will be available when you need it. While it’s hard to mitigate against such circumstances I think the risk of not engaging in this area has greater implications.
I’ve now turned my theoretical understanding of APIs into practical application, and I have to say its quite addictive. Since publishing my plug-in I’ve monitored downloads (182 since 06-Jan-2009) and I’m embarrassed to say I’ve even email fellow WordPress bloggers who have previously highlighted the Tabbloid service.
But what makes a good API? This is my blatant opportunity to plug the JISC funded Good APIs project. This project “aims to provide JISC and the sector with information and advice on the factors that encourage use of machine interfaces, based on existing practice”. As part of this they are looking for respondents to a research survey. More information is here on their blog.
It's tough to make predictions, especially about the future, but I reckon 2009 is set to be a big year for educational uses of APIs ;-)