Archive for the ‘Software Development’ Category

The opportunistic developer is allergic to soap

Monday, June 9th, 2008

For some time now I’ve been thinking about what I think of as the ascendency of the opportunistic developer in web application development. The phrase has unfortunate connotations for those who remember the ‘personas’ meme from some years ago when it was revealed that Microsoft had characterised three type of developer for three of its software development products. [1] and [2]. This post is not directly related to these archetypes (the opportunistic developer was called ‘Mort’ in the meme, a name which has become derogatory). Rather, I’m talking abut the developer who, regardless of their ability or their occupation wants to make quick use of something when they discover it, typically on the web.

The opportunistic developer prefers to use someone else’s service/component in the majority of cases. They will create their own software when necessary, and will choose to do so under certain circumstances, but they will accommodate a certain amount of compromise if it means they can get away with using something off-the-shelf. The opportunistic developer is still a developer, as opposed to a power user: they will still write code, just as little as they can get away with.

The proliferation of freely available web-services with simple APIs has created a happy-hunting-ground for the opportunistic developer - a few years ago they were inhibited by a lack of choice of available services to use. In addition to the usual concerns - stability, provenance, price… ease of use is becoming a more important differentiator.

In the JISC Information Environment, the norm has been to develop SOAP interfaces to services, almost by default. There are, no doubt, reasons why this has made sense in the past. However, if there is one thing which became abundantly clear at last week’s IE Demonstrator/CRIG event, it is that institutional repository developers do not want to have to use SOAP interfaces. Aside from the hard-core which is interested in pushing REST as the approach to use in repository-service interactions, the consensus was that the use of SOAP for public service interfaces, rather than being an enabling mechanism, is actually a barrier to adoption.

Whether RESTful or not, services are going to have to start having very good reasons for not offering very simple APIs over HTTP, if they are to attract the opportunistic developer.

Tags: , , , ,

Inadvertent spamming and calendar woes

Thursday, May 15th, 2008

At the University of Bath, where UKOLN is based, we use an enterprise calendar solution from Oracle. It’s OK, no worse than some others I’ve used, but not great. It does have a client for Mac OSX in its favour…. but I don’t really want to use a dedicated client when I have systems and workflows with dependencies on the Mac’s built in calendar application, iCal. iCal is not particularly great either, but it is integrated into Mac OSX and there are advantages to be had from this. I have a few colleagues who would like to be able to use MS Outlook for similar reasons.

Primarily, I want to be able to keep the calendars on my iPhone and my MacBook in sync. Ideally, I want all of this to be synchronised with the ‘work’ calendar on the Oracle system. Prior to owning the iPhone, I was a long-time Palm user and had configured my Palm to synchronise with the Oracle system via SyncML using the excellent tools from Synthesis. The Palm became the conduit between my MacBook and the Oracle system which while not ideal, was a manageable solution. But I bought the iPhone partly to replace the Palm as a PDA, and having to carry the Palm around to act as a conduit between various calendar systems is not ideal.

The most likely medium-term solution to this will be a promised iPhone SyncML client from Synthesis, which might be available sometime this year once Apple sort out their ‘official’ application supply chain arrangements.

In the meantime, today I decided to see how far I could get using the iCalendar file format for calendar data exchange. The Oracle server does not expose iCalendar files except through SyncML, but it does allow them to be exported and imported via the client. I wondered if the ‘clunky’ process of exporting the work calendar every morning and importing this file into iCal might still be less painful than using a Palm as a syncing device. So I imported the iCalendar file into a new calendar in the iCal application, and experimented with a few things.

When I had finished, I decided to delete local copy of the entire calendar, and it was here that I encountered the dialogue box telling me that doing so would send a notification that this ‘event’ had been deleted. There were two buttons, ‘Cancel’ and ‘Delete and Notify’. I wanted to ‘delete’ but I didn’t want to notify anyone…. I ‘cancelled’. Trying to delete a single ‘event’ in the calendar gave the same message: I clicked ‘Delete and Notify’ to see what would happen. A ‘new email’ window popped up, with my email address pre-filled, and the body of the message explaining that this event had been cancelled.

Now I have real trust in Mac OSX. It’s not always perfect, but it’s rarely bizarre and annoying like some other popular operating system user interfaces I could mention. So I went ahead and deleted the entire local copy of the calendar, pressing the ‘Delete and Notify’ button….. By the time I had reacted sufficiently to get the network cable unplugged (I wasted precious seconds trying to cancel the process and then disabling the WIFI device before remembering I was connected with an ethernet cable) about 70 email messages had been sent to various colleagues. By the time I regained control of my laptop, around 400 messages had been queued up to be sent….

After a little investigation, it transpires that the previous version (Tiger) of Mac OSX’s iCal had three buttons for this dialogue, the other button allowing you to delete without notifying. So this is just a strange oversight perhaps. But it is easy to find forum threads where people have complained about this. It’s enough of a problem that John Maisey has released iCal Reply Checker - a utility which simply addresses this problem. It works fine - although it is a little disconcerting that the buttons haven’t changed their labels, only their effect.

Come on Apple - sort it out!

Tags: , , , , , , ,

Digital library pipeline for a million books.

Sunday, March 16th, 2008

I was pleased to be invited by Brian Fuchs to a ‘Million Books Workshop’ at Imperial College, London last Friday. A fascinating day, in the company of what was, for me, an unusual group of 20-30 linguists, classical scholars and computer scientists. The morning session consisted of three presentations (following an introduction from Gregory Crane which I missed thanks to the increasingly awful transport system between London and the South West) which brought us up to speed with some advances in OCR, computer aided text analysis and translation, and classification. The presentations were intended to form an ordered progression:

  1. From Image to Text: OCR and Mass Digitisation (Dr. Thomas Breuel, DFKI and Technical University Kaiserslautern)
  2. From Text to Information: Machine Translation and Syntax Recognition (David Smith, Johns Hopkins University, & David Bamman, Perseus Project)
  3. From Information to Learning: Machine Learning and Classification Techniques (David Mimno, U Mass, Amherst)

Listening to these presentations, I quickly found myself well outside of my comfort zone, in terms of both the science and the domain (classical literature), so it was a challenging and exhilarating morning! It was difficult to take comprehensive notes as I had to really concentrate on the presentations at times in order to follow them - the pace was pretty smart, with jargon and ‘in jokes’ galore.

David Smith, Johns Hopkins University gave a fascinating and entertaining presentation which outlined some of the challenges, and advances, in language parsing and translation. He pointed out that although the structured view of the semantic web is a seductive one, even the newer online, digital genres such as email, blogs mostly use unstructured or semi-structured text. However, parsing free text is very difficult, especially with the growing scale and diversity of texts available on the web. To illustrate this he employed a series of (sometimes amusing) translations from the Google translation service. The best available technology today uses supervised machine learning techniques to build a treebank. An alternative approach employs semi-supervised, modelling techniques. Parallel texts in different languages are useful but, for some languages, only the Universal Declaration of Human Rights exists as a parallel text! As an aside, David pointed to the potential advantage in search engines searching several languages: if you enter your query in English for example, by searching resources in other languages, the search engine automatically expands the search, utilises synonyms etc. ‘for free’. This can then be more effective than monolingual searching. David offered a future based in pragmatism: translation support rather than fluent translation.

David Mimno presented on classification, sequences & topic modelling. In an interesting talk, it was the visualisation (as a topical transfer graph) of topic relations extrapolated from citations in a set of scholarly communications which really got the audience engaged - a series of questions ensued before David could move on. He illustrated his work with accessible examples: for example, it turned out from one experiment that the single term most likely to identify email spam was, believe it or not, the word “red” showing in the markup, owing to the fact that “only spammers use red text”! Apparently, he had a system which could classify any of Shakespeare’s plays as tragedy, comedy or history…. with the exception of Romeo and Juliet, which comes out as a comedy for some reason….

The takeaway for me was that some of the technology in these spaces is maturing. Thomas Breuel, for instance, made a compelling case for really effective OCR (Optical Character Recognition) in his description of the open-source OCRopus project, which he leads and which is sponsored by Google. Building on previous systems like the character recognition system Tesseract, OCRopus employs a modular design with components which offer the following workflow, focussing on the processing of scanned books:

layout analysis -> isolated character recognition -> statistical language modelling - > text

The project is heading towards a beta release this year, and the team plan to create a deployment ‘bundle’ in the form of an Amazon EC2 AMI. I didn’t quite catch the details but I think they have found a way to monetise this through the Amazon referral program, which sounds interesting. In any case, the idea is that one could take the AMI, deploy it, run it for a few hours to process a particular scan, and then shut it down again - potentially a very cost-effective way of proceeding. Thomas made the point that, as OCR technology continues to improve, we are likely to want to process scans of books several times. He explained how the project was aiming towards a “full digital library pipeline”, a system which could be deployed from a connected laptop: with the new affordability of powerful digital cameras, a researcher might photograph a book’s pages themselves before feeding the resulting image into the OCRopus workflow OCRopus can handle the distortion effect of non-flat pages very effectively). Another interesting aspect of this work is the distributed parallel training which underpins the statistical language modelling: a large model is achieved by combining many little models created by many people, through the web. If you are interested in this area, then you should also check out the hOCR format specification and tools.

I had been invited to this workshop because of my role and interest in the deployment of services at a community and network level. I joined a panel at the the very end of the day where we were invited to consider what services and infrastructure might be required, in the UK, to support the digitisation and useful processing of a ‘million books’. We didn’t get very far with this because we had run out of time and, I suspect, energy by this point, but the question remains…. I’ll be picking this up with some colleagues in due course.

Fascinating day, and topped of with a quick pint standing outside a packed London pub in a light drizzle, which was actually a refreshing and pleasant way to conclude!

Tags: , , , , , ,

SOA and reusable knowledge

Tuesday, February 26th, 2008

After a few years of reading about (and, once upon a time, practising) Service Oriented Architecture (SOA) development, I was interested to read Galen Gruman’s article in Infoworld on its take-up in the mainstream, commercial world.

I got interested in SOA very early on. Not surprising really: as an enterprise developer (in Higher Education) with a background in web technologies, involved in mainly Java-based projects, I already had the mindset with which SOA would fit naturally. Specifically, it was the promise of distributed, re-usable components which appealed (and which was touted as the main benefit by commercial vendors). But after a couple of years of experience with this approach, and with the very slowly maturing stack of standards known as ‘WS-*’, I began to doubt. I noticed how much effort went into ‘building for the future’, without this ‘benefit’ being clearly realised very often.

Yet SOA seemed to bring benefits nonetheless. We found that our various development partnerships with commercial vendors became easier to manage, for instance, with a shared SOA approach. But the real pay-off was in the discipline it demanded. We especially had to take pains to better understand the processes and workflows. And it was this latter aspect, I think, that offered the most benefit to the developers, and to the organisation. When developers start to think this way, they are forced to consider the ‘business’ they are developing for, and they will tend to build more sensibly. Towards the end of my tenure as an HE enterprise developer, I was spending more and more time modelling the business.

I would claim that, by the time I left, the technical team within which I worked had a better overview of the business processes of the university than any other part of the organisation. We were able to successfully re-apply that knowledge to subsequent development, to great effect.

Quoting Ian Findley, an analyst for AMR Research:

Another danger seen from the SOA survey is that the main benefit that the vendors sell around SOA — code reuse — is not the real benefit that early SOA adopters have gotten. Often the code from project A is irrelevant to project B, he noted.[...]Findley noted that the projects don’t happen faster because of code reuse. Instead, it is the changed mindset that SOA brings to development and management of technology as a whole that provides the real benefit, Findley said.

I find this reassuring - especially in the light of the growing community effort focussed on the The e-Framework for Education and Research. I think (I hope, anyway) that the e-Framework is side-stepping the commercial focus on re-usability, instead emphasising the knowledge to be gained from adopting an SOA approach, with the intention that this can help organisations plan and prioritise their development efforts. While ‘re-use’ is a stated potential benefit of the e-Framework, it refers more to the re-use of understanding, documentation & design.

The real benefit is to be found in re-usable knowledge, not re-usable code. Of course, as is often the case with a real benefit, it is harder to measure….

Tags: , , ,

A minor response to Repositories thru the looking glass

Thursday, February 14th, 2008

In Repositories thru the looking glass over on the eFoundations blog, Andy Powell gives a summary of a keynote he gave to the Vala Conference last week. It’s interesting stuff, and I will take the time to look at the presentation slides as well. I mostly agree (vehemently in some instances) with Andy’s points, though I do find myself questioning some parts of this, so I’ll quote some snippets and make a few comments here.

Firstly, that our current preoccupation with the building and filling of ‘repositories’ (particularly ‘institutional repositories’) rather than the act of surfacing scholarly material on the Web means that we are focusing on the means rather than the end (open access)

It’s hard to deny that there is a current preoccupation with establishing repository systems of one kind or another and populating them with content, and also that there is a focus on institutional deployments. However, I’m not convinced that open access is (or at least is going to remain) the sole driver behind the development of institutional repositories. From an institutional perspective, it absolutely makes sense to want to manage the outputs of research conducted within the auspices of that institution.

A common use for an institutional repository is to house eprints. Were it not for the open-access imperative, we might have expected software designed to manage eprints to fall somewhere between a document-management and a content-management system - both familiar to a large number of institutions. I think it is interesting that it might be considered to be open-access which has skewed the development of repository software in some respects - the community has largely started from scratch, building repository software, where it might have made more sense to simply adapt what was there.

So I half agree with Andy - we do seem to be focussed on the means, but I think I am sympathetic to those (institutions at least) who find themselves pre-occupied with this.

Secondly, that our focus on the ‘institution’ as the home of repository services is not aligned with the social networks used by scholars, meaning that we will find it very difficult to build tools that are compelling to those people we want to use them. As a result, we resort to mandates and other forms of coercion in recognition that we have not, so far, built services that people actually want to use. We have promoted the needs of institutions over the needs of individuals.
Instead, we need to focus on building and/or using global scholarly social networks based on global repository services.

There are four sentences here, and I completely agree with the first three and a half! I find myself wondering who ‘we’ are in this. Now that institutional repositories are becoming a reality, the ‘we’ is going to expand to include people who simply have institutional interests - who have no real interest in open-access for example beyond it being a requirement for them to support. The MIS Manager of your average institution, for example, will start to get involved once institutional repositories get embedded into the business which is a university. The half sentence I don’t quite buy is the “global repository services”. Why can’t we “focus on building and/or using global scholarly social networks” (which I support) based on institutional repository services? We don’t have a problem with institutional web sites do we? Or institutional library OPACs? We have certainly managed to network the latter on a global scale, and built interesting services around this….

Finally, that the ’service oriented’ approaches that we have tended to adopt in standards like the OAI-PMH, SRW/SRU and OpenURL sit uncomfortably with the ‘resource oriented’ approach of the Web architecture and the Semantic Web. We need to recognise the importance of REST as an architectural style and adopt a ‘resource oriented’ approach at the technical level when building services.

Absolutely - couldn’t agree more. Yesterday, at a JISC committee meeting, I argued that a resource-oriented-architecture and the service-oriented-approaches being encouraged by the e-Framework could complement each other if intelligently and judiciously applied. Incidentally, last Friday, I attended an excellent CRIG workshop devoted to exploring the relevance of ReST to repositories. Matt Zumwalt of MediaShelf showed a working ReST interface on Fedora, and Oxford University’s Ben O’Steen used this to develop a client app, in real time, in Python.

I think we agree that the individual’s interests may often be orthogonal to those of the institution. This may have always been the case but it is, perhaps, increasingly an issue as recent developments and trends on the Web empower the individual at an accelerating rate. I wonder if the user-centric/institutional/global debate around repositories is just symptomatic of a tension about to become apparent all over the (institutional) Web?

Having said all this, when visiting the outer limits of repository software development, I am occasionally reminded of the Knight:

‘I see you’re admiring my little box.’ the Knight said in a friendly tone. `It’s my own invention — to keep clothes and sandwiches in. You see I carry it upside-down, so that the rain can’t get in.’
‘But the things can get OUT,’ Alice gently remarked. Do you know the lid’s open?

(from Alice Through the Looking Glass, via Project Gutenberg)

Tags: , , , ,

DataPortability - Facebook to play along

Wednesday, January 9th, 2008

Facebook, Google And Plaxo Join The DataPortability Workgroup. So, parts of the blogosphere are quite excited by the news that Facebook, previously criticised for being a closed system, has agreed to join the DataPortability Workgroup. According to Duncan Riley, the author of this TechCrunch post:

The DataPortability Workgroup is actively working to create the ‘DataPortability Reference Design’ to document the best practices for integrating existing open standards and protocols for maximum interoperability (and here’s the key area) to allow users to access their friends and media across all the applications, social networking sites and widgets that implement the design into their systems.

Of course we can only speculate on the real significance of this. While Facebook would not be impossible to copy and compete with a technical level, especially for someone with the resources of Google or Yahoo or the like, it is the established user-base, and consequently the brand, which would be very difficult to match.

It seems clear to me that Facebook has been looking for ways to open up access to its data - it has to in order to be able to exploit it beyond the simple ‘page view’ advertising model. But Facebook has already found this difficult - witness the strange mistakes they made with RSS and the Beacon debacle.

What the participation in the DataPortability initiative gains Facebook is three-fold:

  1. Facebook becomes immune to the ‘walled-garden’ accusation for the short/medium term
  2. Facebook is not alone in navigating the uncharted territory of social network portability
  3. If DataPortability actually delivers, it puts competitors on the same playing field as Facebook - rather than Facebook being scrutinised and expected to lead the way

However this pans out, it is certainly a boost for the credibility of the DataPortability initiative - I’ll be keeping an eye on this now.

Tags: ,

Philosophy of scaffolding

Tuesday, January 8th, 2008

I’ve been having a look at Ruby on Rails again, now that version 2 has been released. Generally, I like what I find in this new release. Rails is opinionated software - it isn’t afraid to commit to an approach, rather than trying to be ‘all things to all men’. In a way, this is a continuation of the convention over configuration philosophy which underpins much of Rails’ design. For example SOAP services support has been moved out of the main release and made available as a plugin, while Rails has been refactored to support ReST functionality by default via ActiveResource.

One major change in Rails 2 does strike me a somewhat odd though: the decision to remove the ‘dynamic scaffolding’ from Rails 2 removes one of the very things which make Rails attractive to me. Dynamic scaffolding is the functionality which, in a Model View Controller (MVC) framework (like Rails), allows the developer to prototype the models and have controllers and views which support basic create, update and delete (CRUD) operations generated at run time. I have used Rails successfully as a very rapid prototyping framework, knocking up a basic web-application in real time, with the ‘customer’ sat beside me while I did so. Rails was the first tool I found which allowed me to do this - and it worked brilliantly, in part due to dynamic scaffolding. The thinking behind the removal of this, to my mind, extraordinarily useful functionality is unclear to me. It is explored by Steven Harms in his post, Is the rails 2.0 scaffold system philosophically ( not technically? ) broken?.

This post generated quite a long comment stream - much of which seems to miss the point and go off on tangents about what should or should not be ‘allowed’ to change in a major upgrade. Other comments point out that the developer can’t learn Rails properly if they are using dynamic scaffolding because the code is invisible to them. Somehow it doesn’t seem to matter that part of the appeal of Rails is how much you don’t have to learn. Martin-234 asks, reasonably:

Many older tutorials (and books) suggested a method of working models and relations like: generate model, scaffold, migrate, check, migrate, check… (e.g. the original blog-video and the depot tutorial) [...]What is the new preferred way of working?

I’m with Martin. While I understand that experienced rails developers might eschew dynamic scaffolding altogether, it has been a major factor in attracting new developers to Rails to date - I’m puzzled that it would be left out altogether now.

This story has a happy ending however. Having a look around, I found reference to the Scaffolding Extensions Plugin for Rails. Originally designed to augment and extend the existing dynamic scaffolding in Rails 1.x, it occurred to me to try it as a replacement for this lost functionality. Having installed it I immediately hit the following error:

ActionController::InvalidAuthenticityToken in CrudController

I mailed the developer, Jeremy Evans, with this issue and as much detail about my environment as I thought could be useful, and I’m pleased to say that I got an exemplary response with an explanation within 6 hours, followed by another response a couple of hours later with a patch attached to the message. (I won’t post the patch here as Jeremy is working on a fix for the codebase right now). Havin followed Jeremy’s instructions and applied the patch he supplied, this plugin is now working for me - which means I have dynamic scaffolding back, and better than before!

First-class support for open-source software - I urge any readers missing a dynamic-scaffolding capability for Rails 2 to look no further than Scaffolding Extensions Plugin for Rails.

Update: the the Scaffold Extensions plugin has now been updated (rev 89) to fix the issue I reported above.

Tags: , ,

FeedForward

Tuesday, December 18th, 2007

No sooner have I blogged about finely tuned antennae than I see that the FeedForward team have released a version for people to have a look at. FeedForward is described as:

FeedForward is a personal aggregator (or possibly a personal information environment…) that integrates inputs and services from both the academic sector and wider world to support common information workflows involving phases of scanning, selecting and organising, tagging and republishing.

This is very much the sort of development I was talking about in my previous post. FeedForward looks very interesting and I shall be taking it for a spin very shortly.

Tags: ,

Amazon Simple DB

Friday, December 14th, 2007

Correction: In a comment, Justin Crites points out, correctly, that Simple DB does not offer ‘relational’ database functionality, in the sense that it is not an RDBMS. While this is true, I think Simple DB clearly offers functionality which many people get, perhaps inappropriately, from a relational database system.

Amazon continue to expand their excellent infrastructure web services. Simple DB - relational databases in the cloud. I’m definitely going to have a look at this - clustering/replicating databases for resilience and performance was extraordinarily difficult when I was developing and supporting enterprise systems a couple of years ago. In fact, more often than not, we’d cluster and load-balance all the layers in the enterprise stack except for the database, and then just rely on a singe very expensive box running Oracle Enterprise 9i or whatever the equivalent is nowadays.

Like the other Amazon infrastructure services (S3, EC2 you pay for what you use. Linear costs. Simple. Brilliant.

Tags: , , ,

Not a unicorn, nor Switzerland neither

Friday, November 9th, 2007

I’ve just listened to a podcast of David Heinemeier Hansson’s keynote at RailsConf 2007 (which actually took place back in May of this year). David describes the changes and new features being introduced into Rails 2.0. Firstly, he is at pains to point out that Rails 2.0 will not represent a radical change, or a complete re-write. Also, 95% of what will constitute Rails 2.0’s new features are already available in the bleeding edge EdgeRails and are being actively used. To use his phrase, Rails 2.0 is no ‘unicorn’ - it is not a mythical beast.
Having said this, there do appear to be some fairly important changes in Rails 2.0. Rails has for a while had an effective plugin system. Plugins are relatively easy to write for Rails and so good, new ideas can be disseminated and incorporated into working code very quickly. The popular, successful plugins can then be rolled into Rails ‘core’. What I like about Rails is that this can work the other way too: after time, things which no longer seem to belong in Rails core can be removed and made available as plugins. It is very, very easy to make a plugin available to your Rails installation so this type of deprecation strategy is kind to the developer, especially if they are using legacy approaches or code. And if nothing else, Rails is all about being kind to the developer. Significantly, the ActiveResource plugin which drops a full ReST framework into Rails is in, while the ActiveWebService functionality to support SOAP is out although, of course, still easily available as a plugin. This is really about making a statement, something neither Rails, nor it creators and developers are generally shy about doing. As David puts it in his keynote (my transcript from the audio):

Unlike a lot of frameworks which pride themselves on being all about flexibility, which pride themselves on being all about being neutral, neutral to choices, being Switzerland in other words….Rails is not. Rails is not Switzerland. Rails has an opinion.

It was through engaging with Ruby on Rails that I first encountered the design paradigm of Convention over Configuration. As a veteran Java programmer I immediately saw the appeal of this. Of course Java programmers have historically favored the “abstract enabling-framework” over the “direct problem-solving” approach, so it can be difficult to adjust from one to the other. Michael Coté describes something similar when he talks about Java’s Fear of Commitment.
This is what makes Rails interesting for me. It has an opinion. It is not ashamed to show a strong preference for a way of doing things. As a developer, you can still choose to do things differently (and sometimes this is just unavoidable) but you get so much for free by just following the conventions.

David also characterised Rails as having ‘friends’ and ‘allies’. Components or aspects which Rails strongly supports, such as ReST and AJAX are friends. Those which it is starting to support, but which still need to prove themselves are allies - among these David listed Atom and OpenID.

Interestingly, Rails will now have simple support for HTTP Basic Authentication. Previously, Rails developers have eschewed this non-user friendly approach to securing their applications, as it fails to offer the user features which they have come to expect, such as “remember me” and “mail me my password because I’ve forgotten it” options. However, it is now recognised that HTTP Basic Authentication is useful for non-user mediated authentication, such as client access to secure APIs. David cites, as an example, the RSS reader which typically can store and use a user’s credentials on their behalf t access a secured RSS feed. Eventually, perhaps, this will be made redundant by newer approaches such as OAuth, but I can immediately see how this could be useful in developing mashups in the meantime.

Technorati Tags: , , , , , , ,

  • Recent Comments

  • Recent Posts

  • Syndication

  • License