Research

My main area of research lies in Human-Computer Interaction (HCI), specifically End-User Programming (EUP). In recent years, numerous companies, including Google, Yahoo, Microsoft, and Amazon just to name a few, have opened up their extensive computer systems so that programmers can leverage their application programming interfaces (APIs) to “easily” create integrated applications, sometimes known as mashups. Furthermore, with the standardization of information in the form of RSS and ATOM feeds, the internet has been “flattened“, so to speak.

So now, for example, being a programmer I can integrate news data into a map so that whenever a news event occurs it can be mapped and the application calls my attention to it. The problem with this is that for someone to be able to do this, they need to know how to manipulate the data using a programming language, for instance PHP, Ruby, Python, etc., and then create a user interface. Even those who have the ability to create basic web sites may lack the expertise to do this. So what does this mean? Well, at this point it means that there is a huge user population that does not have access to these massively powerful systems. With the world wide web being an amazing tool for the dissemination of information, mashups are a way to bring this information together in a way that makes sense.

Currently, there are a few tools that are available to create mashups. Tools like Dapper and Yahoo Pipes allow people to mix data feeds, while something like Google Mashup Editor and Microsoft Popfly make it easier for people to create custom user interfaces. However, few tools have successfully integrated the two (Popfly is one of the few exceptions). Google has even suggested in their FAQ that users should use Pipes to work with data. The problem here is that, even with data standards, by going to different places a user easily runs into inconsistencies in the data, and debugging a data feed is not an easy task. Our goal then, is to look at what is being done now, and find ways of improving the process of mashup creation.

In order to support this goal, I’ve begun to look at the processes that more experienced programmers use to create mashups. How did these people learn to make mashups? What do they use them for? From here, we move to the more novice web developers. What are the barriers for them? What would they create? By studying these areas we can better understand how better support the end-user and create a system that would not only help them now, but later as they learn new skills.